BGP协议基础总结

BGP简介

1、简介:
BGP-Border Gateway Protocol边界网关协议,是一种在自治系统AS(Autononmous System)之间传递并选择最佳路由的高级矢量路由协议。
路由协议通常分为内部网关协议(IGP)和外部网关协议(EGP)两大类。
BGP虽然是一种动态路由协议,但它实际上本身并不产生路由、不发现路由、不计算路由,其主要功能是完成最佳路由的选择并在BGP邻居之间进行最佳路由的传递。BGP选择了TCP作为其传输协议,端口号是179。
BGP的邻居关系分为IBGP和EBGP两种:两台BGP路由器位于同一AS时,它们的邻居关系为IBGP邻居关系;两台BGP路由器位于不同的AS时,它们的邻居关系为EBGP邻居关系。BGP没有自动建立邻居关系的能力,邻居关系必须通过手动配置来建立。
3、特性:
(1)BGP拥有丰富的选路参考属性,灵活组合可以实现路由的优选和避免路由环路,能够高效率的传递路由和维护大量的路由信息;
(2)BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由;
(3)BGP提供了路由聚合和路由衰减功能,用于防止路由振荡,有效提高网络的稳定性;
(4)BGP是一种距离矢量协议,将AS作为一个节点来计算;IGP协议以一个路由器为节点;
(5)BGP使用TCP(端口号179)作为底层传输协议,与每个BGP对等体形成独特的基于单播的连接 并支持BGP于BFD联动,提高了网络的可靠性。
4、AS
(1)BGP的AS是指在一个组织机构管辖下拥有相同选路策略的IP网络,BGP网络中的每个AS都被分配了一个唯一的AS号,用于区域不同的AS。
(2)BGP的AS号分为2字节和4字节的AS号,
2字节AS号范围1----65535的整数,
4字节AS号范围2----4 294 967 295的整数(可以有不同的表示格式)
RFC 5389规定在2字节的AS号中;1–64511是公网AS,64512—65534为私网AS,65535保留用于特殊用途。

BGP与IGP比较

IGP协议特点:
(1)在AS之内使用的协议,主要用于发现和计算路由;
(2)IGP的路由收敛都相对迅速。工作在直连邻居间;
(3)单一的度量值,列如OSPF和IS-IS当然链路开销cost,RIP的跳数;
(4)适用于中小型网络。
BGP协议特点:
(1)BGP作为外部网关协议,着眼于控制路由的传播和选择最佳路由;
(2)BGP可以工作在非直连邻居之间,使用TCP作为其传输层协议(端口号179);
(3)BGP支持五类别域间路由,路由更新时只发送更新的路由,大大减少了BGP传播路由所占用的带宽, 适用在Internet上传播大量的路由信息;
(4)BGP提供了丰富的路由策略,能够实现路由的过滤和选择;
(5)BGP易于扩展,能够适应网络新技术的发展。适用于大型,超大型运营商网络。

BGP数据包

BGP数据包都由2部分组成,BGP报文头部+类型报文本体
1、BGP报文头部:
Marker 16字节:用于检测BGP对等体之间同步丢失情况;在支持消息验证功能的情况下进行消息验证;
五验证时字段全为1(16 进制显示全FFFF)
Length 2字节:长度,表示此BGP报文的总长度(包含头部,总长度在19–4096字节之间)
Type 1字节:类型值,标识本BGP报文的类型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
2、Open报文(类型1)
(1)作用:
TCP 会话建立起来自以后,两个邻居都要发送一个 Open 报文,每个邻居都使用该报文标识自己, 并且规定自己的 BGP 运行参数。如果 open 消息被接受,则回送一条 keepalive 消息进行确认, 确认后就能发送 update 。
(2)内容:
Version 8bit :BGP版本号,BGP对等体的使用的版本,默认为BGP-4,如果邻居运行版本低于本设备,会拒绝V-4信息, 本设备将发送低版本信息直至协商成功。
My AS 号 16bit :本地 AS 号(决定双方建立什么样的BGP邻居;通AS建立IBGP;不同AS建立EBGP)
Hold Time 16bit: 对等体相互协商及保存邻居最大时间,默认为Keepalive时间的3倍-180S(如果两端hold time时间不一致,将会采用较短时间作为保存时间;最小可以为0,这种情况BGP连接被认为永远是UP的,不再发送Keepalive报文来检测邻居是否失效)
BGP Identifer 32bit:用来标识发送此Open报文设备的Router-ID(ROUTER-ID 和 OSPF 选取 routerID 的方式一致)
Optional Parameters Length 8bit:标识下面的可选参数的总长度(如果为0,那么本报文中没有包含可选参数字段)
Optional Parameters 可变长大小:用于BGP邻居会话协商过程中所使用的可选列表;每一个参数为一个(参数类型参数长度,参数值)三元组,用于公布一些可选功能的支持,如多协议扩展,路由刷新能力, 四字节AS号等能力。
3、KEEPALIVE 消息(类型4)
(1)作用:
如果路由器接受了邻居在 OPEN 消息中的参数,就会应答一个 keeplive 消息,并且在此后 1/3 的 holdtime(但不小于 1S)为周期发送该消息,华为设备默认 60S一发,保持时间默认180S。如果协商后保持时间为 0,标识此邻居永远UP,则不发送 keepalive 保活消息。
(2)内容:
只包含BGP的消息头部?
Marker 16字节:用于检测BGP对等体之间同步丢失情况;在支持消息验证功能的情况下进行消息验证;
五验证时字段全为1(16 进制显示全FFFF)
Length 2字节:长度,表示此BGP报文的总长度(包含头部,总长度在19–4096字节之间)
Type 1字节:类型值,标识本BGP报文的类型(open 1;update 2;Notification 3;keepalive 4;route-refresh 5)。
(3)其他:
KEEPALIVE 消息实际上弥补了 TCP 无法确认对端存活情况的缺陷;
KEEPALIVE 消息仅包含 19bytes 的 BGP 头部,除此之外不包含任何其他数据。
4、Update报文(类型2)
(1)作用:
当BGP对等体之间成功建立会话后利用Update报文进行路由信息的交换;Update报文既用来通告可用路由信息,也可以通告不可达需要撤销的路由信息。每条update 消息只描述一类具有相同路径属性的可达路由;可达路由信息放在NLRI字段中同时Update报文可以携带多条不可达路由信息;不可达路由信息放在Withdrawn Router字段中。
(2)内容:
Withdrawn Routes Length 2字节:撤销路由长度,标识不可达路由的的长度,为0表示此字段 没有任何数据,本报文不存在需要撤销的路由;
Withdrawn Routes :撤销路由,与NLRI格式相同,同样是前缀长度+前缀组合;
Total Path Attribute Length 2字节:路径属性字段长度。如果为0表示没有下面的Path attributes,本报文没有通告可用路由信息;
Path attributes 可变长:路径属性,每个路径属性都由可变长的三元组(属性类型;属性长度;属性值),为BGP提供最短路径,检查路由环路以及决定路由策略的信息;
Network Layer Reachability Information (NLRI) 可变长度:标识网络层可达信息,包含要向对等体通告的每条可达路由的前缀(IPv4的地址前缀),和前缀长度(IPv4的掩码)。
5、Notification 报文(类型3)
(1)作用:
当BGP检测到错误状态时,就会向对等体发出Notification通知报文,之后BGP连接会立即中断;例如对等体之间的AS号非法,认证失败,邻居地址不可达等。
(2)内容:
Error code 1字节:错误码;描述错误类型,每个错误都使用唯一的错误码来表示;
Errsubcode 1字节:错误子码;描述错误类型的详细信息;
Data 可变长字段:包含了与错误有关的数据,用来诊断错误原因,比如非法的AS号,认证失败等。
6、Route-refresh报文(类型5)
(1)作用:
路由刷新报文用来要求对等体重新发送指定地址族的路由信息;
(2)内容:
AFI Address Family Identifier 2字节:地址族标识,用来标识所采用的地址族类型;
Res 1字节:保留
SAFI:Subsequent Address Family Identifier 1字节:子地址族标识,用于标识地址族的类型。

BGP邻居状态机、计时器、更新源

BGP邻居状态机

1、Idle状态
(1)BGP空闲状态,在Idle状态下BGP拒绝邻居发送的连接请求,此时等待由BGP系统发出的Start事件;
(2)Start(管理员配置邻居)事件发生后,BGP会对自己的资源进行初始化,重置连接计时器(Connect Retry 默认32S)发起TCP 连接请求,并开始侦听远端对等体发起的连接端口,并转至Connect状态。
1.1. 停留在此状态的原因:
(1)本BGP设备没有去往对等体的路由;
(2)收到来自邻居的Notification报文触发Notification报文条件(再一个重置计时器后重新建立BGP的TCP连接,即重新发送用于BGP的TCP连接报文)
a. AS号错误;
b0 R-ID重复;
c. 认证失败;
d. hold time连接超时(中间设备或者目标设备策略限制)
e. 其他错误原因。
2、Connect状态
在Connect状态下,BGP启动连接重传定时器,等待TCP完成连接!
(1)如果TCP连接成功,那么BGP会向对等体发送Open报文,并转至OpenSent状态;
(2)如果TCP连接失败,那么BGP转至Active状态;
(3)如果连接重传定时器超时,BGP任没有收到BGP对等体的响应,那么BGP继续尝试TCP连接,停留在Connect状态。
2.1. 停留在Connect状态的原因:

(1)与BGP对等体TCP连接超时!
a. 中间设备没有本设备去往对等体的路由;
b. 中间设备拒绝了本BGP设备发出的BGP相关数据(过滤了本设备IP流量或者TCP流量或者TCP-179端口数据)
c. 对等体设备未开启BGP(TCP-179端口处于关闭状态)
3、Active
在Active状态下,BGP总是试图建立TCP连接!
(1)如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent;
(2)如果TCP连接失败,停留在Active状态;
(3)如果连接重传定时器超时,任没有收到BGP对等体的响应,那么BGP转至Connect状态。
3.1. 停留在Active状态的原因:
(1)与BGP对等体TCP失败;
(2)本BGP设备配置错误的对等体地址。
4、OpenSent
在OpenSent状态,BGP等对等体的Open报文,并对收到的Open报文中的AS号,版本号,认证信息等进行检查!
(1)如果收到的Open报文正确,那么BGP发送Keepalive报文,且重置Keepalive定时器,并转至OpenConfirm状态;
(2)如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体。并转至Idle状态。
4.1. 停留在OpenSent状态的原因:
(1)对等体发送的Open报文中的AS号与本BGP设备配置不一致(本端BGP配置时邻居的AS号配置错误)
5、OpenConfirm
在OpenConfirm状态下,BGP等待Keepalive或Notification报文;
(1)如果收到Keepalive报文,则转至Established状态(BGP邻居的最终状态)
(2)如果收到Notification报文,则转至Idle状态。
5.1. 停留在OpenConfirm状态的原因:
(1)BGP的TCP建立成功,对等体未发送Keepalive报文(邻居设备BGP配置对本BGP的AS号错误配置)
6、Established状态
在Established状态下,BGP对等体之间交互Update,Keepalive,Route-refresh报文和Notification报文!
(1)如果收到正确的Update或Keepalive报文,那么BGP就人为对端处于正常运行状态,保持BGP连接;
(2)如果收到错误的就发送Notification报文告知对端,并转至Idle状态;
(3)Route-reFresh报文不会改变BGP状态;
(4)如果收到Notification报文,那么BGP转至Idle状态;
(5)如果收到TCP拆除链接通知,那么BGP将断开连接,转至Idle状态。

BGP计时器

1、Connect Retry重置连接计时器,默认32S;
2、Keepalive保持时间,默认60S;
3、Hold time 默认为Keeplive时间的三倍(180S),保持时间可以改大,但是不能小于Keepalive的三倍。如果两端 Holdtime 不一致,双方接受较小的的时间;
4、timer keepalive 0 hold 0 ,当检测时间和保持时间都为0时表示本BGP设备认为邻居永远UP;
5、BGP 不会周期性更新路由,仅在需要的时候更新,由于公网的路由可能的动荡的,因此触发更新也会有一定的等待时间,IBGP peer 为 5S;EBGP peer 为 30S,而在这段时间内,BGP 仍可以进行路由信息的搜集,所以 BGP收敛会比慢。

BGP更新源

1、BGP 无法像 IGP 那样自动发现邻居,而需手工指定,邻居的 IP 由本地的 peer 命令指定,而该 BGP 连接的源 IP(更新源)默认情况下为流量的出接口 IP。注意只有当本地配置的邻居 IP 与邻居用于 BGP 连接建立的源 IP 相同时,BGP 连接才能被正常建立;
2、IBGP 邻居之间建立邻居,为了保证邻居关系的稳定,一般使用 loopback 接口建立,这是因为如果使用物理接口,那么物理接口故障,邻居关系就 DOWN 了,并且在 AS 内部,路径可能是冗余的,邻居之间的 LOOPBACK 路由可通过IGP获取并提供一定的路由冗余性(当物理线路也存在冗余的情况下)注意: 在使用loopback接口建立BGP邻居关系时,务必注意还需要指定更新源 IP;
3、如果是建立 EBGP 邻居关系,因为 EBGP 邻居关系的建立会检查直连路由,并且默认 TTL=1, 而这个时候实际上loopback 口到 对方loopback 口至少 2 跳 ,那么这个时候 还需要两者配置 peer x.x.x.x ebgp-max-hop 。

BGP路由生成、通告及选路原则

BGP路由生成

1、通过手动宣告,只能将本BGP设备路由表存在的路由条目通告出去;
2、通过路由引入,将IGP或者静态,直连路由的重分发进来。

BGP路由通告

1、当存在多条路径时,BGP Router 只选取最优的路由(BEST)来使用(没有负载均衡的情况下);
2、BGP 只把自己使用的路由,也就是自己认为 Best 的路由传递给 BGP peer;
3、BGP Speaker 从 EBGP 获得的路由会向它所有 BGP 相邻体通告(包括 EBGP 和 IBGP);
4、BGP Speaker 从 IBGP 获得的路由不向它的 IBGP 相邻体通告。(避免环路,水平分割;存在路由 RR 的情况除外)

BGP选路原则

1.首先丢弃下一跳(NEXT_HOP)不可达的路由;
2.优选Preferred-value值最大的路由;
3.优选本地优先级(LOCAL_PREF)最高的路由;
4.优选聚合路由;
5.优选AS路径(AS_PATH)最短的路由;
6.依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
7.优选MED值最低的路由;
8.依次选择从EBGP、联盟、IBGP学来的路由;
9.优选下一跳度量值最低的路由;
10.优选CLUSTER_LIST长度最短的路由;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值