BGP协议

1.BGP协议介绍

BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定义的;一个路由器只能属于一个AS。AS的范围从1-65535(64512-65535是私有AS号),RFC1930提供了AS号使用指南。
协议端口号为179,基于TCP

BGP的主旨是提供一种域间路由选择系统,确保自主系统只能够无环地交换路由选择信息,BGP路由器交换有关前往目标网络的路径信息。

BGP是一种基于策略的路由选择协议,BGP在确定最佳路径时考虑的不是速度,而是让AS能够根据多种BGP属性来控制数据流的传输。

2.BGP协议特性

BGP是自治系统外部路由协议,用来在AS之间传递路由信息
路径矢量路由协议,从设计上避免了环路的发生
其路由信息中携带了所经过的全部AS路径列表。这样,接收该路由信息的BGP路由器可以明确的知道此路由信息是否源于自己的AS。如果是源于自己的AS,BGP就会丢弃此条路由,这样就根本的解决了AS之间产生环路的可能。
TCP承载,端口号是179
天然的可靠传输机制,重传、排序等机制来保证BGP协议信息交换的可靠性。
支持CIDR和路由聚合
可以将一些连续的子网聚合成较大的子网(突破了自然分类的限制),从而可以在一定程度上控制路由表的快速增长,并降低了路由查找的复杂度。
路由附带丰富的属性
只发送增量路由更新
在邻居关系建立后,BGP路由会将自己的全部路由信息通告给邻居,此后如果路由表发生了变化,则只将增量部分发送给邻居。这样可以大大减少BGP传播路由所占用的带宽,以利于在Internet上传播大量的路由信息,并降低路由器CPU与内存的消耗。
路由过滤和路由策略
与IGP不同的是,BGP最重要的特性是丰富的路由属性以及强大的路由过滤和路由策略通过路由策略等方法,来更改路由属性,或者是根据路由更新信息中的属性来实现路由过滤和路由策略,从而使BGP的使用者可以非常灵活地对路由进行选路和控制。

3.BGP的基本术语:

BGP发言者(BGP Speaker):发送BGP消息的路由器称为BGP发言者,它接收或者产生新的路由信息,并发布给其他BGP发言者。
Router ID(RID):Router ID是一个32位比特无符号的整数,用来在自治系统中唯一标识一台路由器。路由器如果运行BGP协议,则必须存在Router ID。Router ID可以是手工配置或这是路由协议自动选举。
BGP对等体(BGP Peer):相互交换消息的BGP发言者之间互称对等体(Peer)。
IBGP对等体(Internal BGP Peer):如果BGP对等体处于同一自治系统内,被称为IBGP对等体。
EBGP对等体(External BGP Peer):BGP对等体处于不同自治系统时,被称为EBGP对等体。

EBGP对等体
处于不同AS的BGP对等体为EBGP对等体,通常情况下EBGP对等体是物理上直连
BGP Speaker从EBGP对等体获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);同时为了防止环路,他不会将学习到的路由再向原发布者发布。

IBGP对等体
处于同一个AS的BGP对等体为IBGP对等体(或者是IBGP邻居)
IBGP对等体不一定是物理直连,但是一定要TCP可达。
从IBGP对等体获得的路由不向它的IBGP对等体发布
为了防止环路,BGP协议规定BGP发言者从IBGP获得的路由不向它的IBGP对等体发布。
从IBGP对等体获得的路由是否发布给它的EBGP对等体与BGP是否同步相关。
另外为了防止路由黑洞的产生,协议还规定BGP发言者从IBGP获得的路由是否发布给它的EBGP对等体与BGP是否同步相关。
IBGP的全连接
BGP会话是基于TCP的点到点的单播链接
TCP的可靠传输机制和滑动窗口机制可以确保承载与TCP之上的BGP可以可靠传递大量路由。但是TCP链接是点到点的单播方式来进行报文传输的,因此BGP链接只能是基于点到点的链接。同时BGP是一种距离矢量路由协议,为了防止产生路由环路,协议规定BGP发言者从IBGP对等体获得的路由不能向其他的IBGP对等体发布。这样,在运行了BGP协议的AS内,为了确保所有BGP路由器的路由信息向,则需要使所有的IBGP路由器保持全连接。
BGP发言者从IBGP对等体获得的路由不向其他的IBGP对等体发布

4.BGP消息及状态机

4.1 BGP消息
消息类型消息作用的描述
Open用于建立BGP对等体之间的链接关系
Keepalive周期性的向BGP对等体发出KeepAlive消息,来保持链接的有效性
Update携带的是路由更新(删减、增加)信息
Notification当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即被关闭
Route-refresh要求对等体重新发送指定地址族的路由信息

BGP所有的消息格式都是“消息头+消息体”的形式,消息头的长度为19个字节。
Open消息,打开分组:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的链接关系并进行参数协商。内容包括使用的BGP版本号、自己所属的AS号、路由器ID、Hold Time值、认证信息等信息。
Keepalive消息,保活分组:BGP会周期性的向对等体发出Keepalive消息,主要作用就是让BGP邻居知道自己的存在,保持邻居关系的稳定;另外一个作用就是对收到的Open消息的回应。消息格式中只包含消息头,没有附件任何字段。长度为19字节,消息只有标记、长度、类型,不包括数据域。
UPdate消息,更新分组:主要用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以发布不可达路由消息;一条Update消息可以通过一类具有相同路径属性的可达路由,同时还可以携带多条不可达路由。
Notification消息,通知分组:Notification的作用就是错误通知。BGP发言者如果检测到对方发过来的消息有错误或者主动断开BGP链接,都会发出Notification消息来通知BGP邻居,并关闭链接回到idle状态;如果收到邻居发来的 Notification消息,也会将链接状态变为idle。Notification消息的内容包括错误代码和错误子代码及错误数据等信息。
Route-refresh消息:Route-refresh用来要求对等体重新发送指定地址族的路由信息。

4.2 BGP状态机

BGP协议状态机包含6个状态,他们之间的转换过程实际上描述了BGP对等体关系建立的过程:
Idle状态(空闲状态):是初始状态,不接受任何BGP连接,等待start时间的产生。如果有start事件产生则系统开启ConnectRetry定时器,向邻居发起TCP连接,将状态变为Connect。
Connect状态(连接状态):在Connect状态,系统会等待TCP连接建立完成。
如果TCP状态为Established,则拆除ConnectRetry定时器,并发送OPEN消息,将状态变为Opensent状态:如果TCP连接失败则重置ConnectRetry定时器,并发送OPEN消息,将状态变为Active;
如果ConnectRetry timer expired(重传定时器)超时,则重新连接,扔处于Connect状态
Active状态(活跃状态):如果有启动时间但是TCP连接未完成则处于Active状态,在Active状态系统会响应ConnectRetry timer expired事件,重新进行TCP连接,同时重置ConnectRetry定时器,变为Connect状态;
如果与对方的TCP连接成功建立则会发送OPEN消息,将状态变为OpenSend,并清除ConnectRetry定时器,重置HoldTime定时器。
Openset状态(OPEN消息已发送):此状态表明系统已经发出Open消息,在等待BGP邻居发给自己的OPEN消息。如果收到BGP邻居发来的OPEN消息,并且没有错误的话,则转向Openconfirm状态,同时将HoldTime定时器的值置为协商值,发送Keepalive消息并置Keepalive定时器;
如果有错误则发送Notification消息并断开链接。
OpenConfirm状态(OPEN消息确认):此状态表明系统已经发出Keepalive消息,并等待BGP邻居的Keepalive消息。
如果收到邻居的Keepalive消息则转向Established状态并重置HoldTime定时器;
如果KeepAlive定时器超时则重置并发送KeepAlive消息;
如果收到Notification消息,则断开链接。
Established状态(连接建立):如果处于Established状态,则说明BGP链接建立完成,可以发送Update消息交换路由信息;
如果KeepAlive定时器超时则重置KeepAlive定时器并发送KeepAlive消息;
如果收到KeepAlive消息则重置HoldTime定时器:
如果检测到错误或者收到Notification消息则断开链接。

注意:
除了IDLE状态以外的其他五个状态出现任何错误的时候,BGP状态就会退回到Idle状态

BGP的路由属性分类

  • 公认必遵属性:ORIGIN、AS-PATH、NEXT_HOP
  • 公认可选属性:LOCAL_PREF、ATOMIC_AGGREGATE、
  • 可选传递属性:COMMUNITY、AGGREGATOR
  • 可选费传递属性:MED、CLUSTER_LIST、ORIGINATOR_ID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值