CCIE思科教育培训 CCIE培训

BGP(二) BGP的行为

BGP(一) 协议简介

为了让下一篇博文显得比较连贯一些,第二篇关于BGP行为的介绍会相对单薄。本篇旨在说明BGP总体的工作情况,比如撤销路由,更新路由等等,以及对RIB,路由概念的进一步说明。

承上启下:
上一篇我们讲到BGP是作用在AS之间,交换网络可达信息的工具。从全局来讲,携带在BGP数据包中的路由信息,足够描绘一幅没有回路的AS连通图。另外我们也解释了为什么BGP只能适用于基于目的地址路由的网络结构和本系列博文用到的术语。接下来我们会对一些概念性的术语最更规范的定义,以及简单描述BGP各类数据包的工作

AS的“新定义”
AS(Autonomous System)的传统定义是说一组路由器受单一的技术管理,即使用IGP(Interior Gateway Protocol)和统一的度量标准进行AS内部路由,使用AS间的路由协议进行AS间的数据转发。但是随着技术发展,越来越多的AS在其内部使用多种IGP协议,甚至有些时候度量标准都不一样,因此我们也需要对AS的定义加以修改。

现在我们对AS做如下规定:无论AS内部如何使用多种IGP,只要对外部的AS而言,它拥有统一的一致的路由规则,那么就称之为单个AS。

BGP的底层协议支持
BGP不关心分片,重传等传输细节,因为它以TCP协议为其底层实现。以后会讲BGP Speaker分为主动和被动两种,其中Passive BGP Speaker会监听TCP 179端口(这也从另外一个方面验证了TCP在BGP中的作用)。

另外BGP假定TCP支持“优雅的关闭”,即连接关闭时没有要发送的数据在链路上。BGP支持的一些更高级的连接参数,会在TCP连接建立后协商敲定。

BGP的四种消息
正如上篇博文所述,被本地BGP Speaker发出去的路由信息我们称之为Adj-RIB-Out。当BGP连接建立,对端收到初始路由信息并根据本地策略建立Loc-RIB。BGP不要求某个BGP Speaker定时的公布自己的路由表信息(不像RIP),但是当本地路由表发生改变时,需要把更新情况告知它的对等体(即其他的BGP Speaker),而这种类型的消息我们定义为UPDATE消息。

因为BGP不要求定时地公布路由信息,所以需要额外的方式来确保通信双方依然保持连接,这也是KEEPALIVE消息的来由。另外当错误发生时,如数据包格式错误,超时等情况发生时,也需要NOTIFICATION消息来传递错误类型。

因此BGP只有四种消息类型:建立连接的OPEN, 更新连接的UPDATE, 保持连接的KEEPALIVE, 错误信息的NOTIFICATION.

路由与UPDATE消息
路由信息只存在于UDPATE消息中。何谓路由,即给定某个地址和到这个地址的路径信息的键值对。在BGP的UPDATE消息中,目的地址被保存在NLRI域中(下篇讲解包格式的时候会详细描述),如果多条路由拥有相同的路径参数,那么只需在同一个UDPATE的NLRI域中包含多个目的地址前缀,即可完成多条路由的传输。

路由更新分为三种:撤销,修改以及添加。

其中添加比较简单,直接添加并告知BGP Speaker对等体即可。修改只需要撤销老路由,添加新路由即可。因此撤销路由有三种原因:
1.在UDAPTE消息中的WITHDRAWN ROUTES域不为空,则域内的路由需要撤销。www.it165.net
2.拥有相同的目的地址的路由到达,即修改路由时。
3.BGP Speaker连接关闭,则两者之间的所有路由均需要撤销(因为很可能那个路由器坏了,自然无法完成路由功能)。

RIB
再赘述一次Adj-RIBs-IN, Loc-RIB, Adj-RIBs-Out三者的关系。

Adj-RIBs-In包含了被告知的,未经处理的路由信息。经过本地路由策略之后,从这部分路由信息中挑选一部分可用的作为Loc-RIB。之后再组织这部分路由并告知给对等体。虽然在我们看来这三者有较大的区别,需要分别维护。但是在有些BGP实现里只保留一份内存,通过指针来相互区分。

最后
要吃饭去了…下篇将会详细讲解四种BGP消息的格式,和各个域所代表的含义。



Tags:

发布: admin 分类: CCIE思科 评论: 0 浏览: 229
留言列表
发表留言
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。