当前位置:文档之家› 第四章 BGP协议

第四章 BGP协议

第四章 BGP协议4.1 BGP 简介BGP(Border Gateway Protocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。

AS 是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。

早期发布的三个版本分别是BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),当前使用的版本是BGP-4(RFC 1771)。

BGP-4 做为事实上的Internet 外部路由协议标准,被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。

BGP 特性描述如下:BGP 是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP 等内部网关协议(Interior GatewayProtocol,IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。

BGP 使用TCP 作为其传输层协议(端口号179),提高了协议的可靠性。

BGP 支持CIDR(Classless Inter-Domain Routing,无类别域间路由)。

路由更新时,BGP 只发送更新的路由,大大减少了BGP 传播路由所占用的带宽,适用于在Internet 上传播大量的路由信息。

BGP 路由通过携带AS 路径信息彻底解决路由环路问题。

BGP 提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。

BGP 易于扩展,能够适应网络新的发展。

在Internet 上,BGP 需要通告的路由数目极大,由于TCP 提供了可靠的传送机制,同时TCP 使用滑动窗口机制,使得BGP 可以不断地发送分组,而无需像OSPF 或EIGRP 那样停止发送并等待确认。

发送BGP 消息的路由器称为BGP 发言者(BGP Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP 发言者。

当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP 发言者。

相互交换消息的BGP 发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。

BGP 在路由器上以下列两种方式运行:IBGP(Internal BGP):当BGP 运行于同一自治系统内部时,被称为IBGP;EBGP(External BGP):当BGP 运行于不同自治系统之间时,称为EBGP。

4.2 BGP 的消息类型4.2.1 消息头格式BGP有5 种消息类型:Open、Update、Notification、Keepalive和Route-refresh。

这些消息有相同的报文头,其格式如图所示。

BGP 消息的报文头格式主要字段的解释如下:Marker:16 字节,用于BGP 验证的计算,不使用验证时所有比特均为“1”。

Length:2 字节,BGP 消息总长度(包括报文头在内),以字节为单位。

Type:1 字节,BGP 消息的类型。

其取值从1 到5,分别表示Open、Update、Notification、Keepalive 和Route-refresh 消息。

其中,前四种消息是在RFC1771 中定义,而Type 为5 的消息则是在RFC 2918 中定义的。

4.2.2 Open消息Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。

两个邻居都要发送一个Open 消息,每个邻居都用该消息来标示自己,并规定自己的BGP 运行参数。

BGP Open 消息包含的内容包括:1)BGP version它明确了发起者正在运行的BGP 版本号(2,3,4),可以通过neighbor version 修改,缺省版本号为4。

如果版本号不相同,路由器将自动降低版本号重发Open 消息,直到版本一致。

2)AS number发起会话路由器的AS 号,用于确认EBGP 或者IBGP 会话。

3)Hold time路由器必须收到一个keepalive 或者更新消息之前允许经过的最大秒数。

Holdtime 必须是0(在这种情况下,必须是没有发送Keepalive)或者至少3s。

Cisco 默认的holdtime 为180s,如果两个邻居间holdtime 不一致,选较短的那个做为两者可接受的时间。

4)BGP router-ID选取方式和OSPF 相同,使用数值最大的loopback 口地址,没有loopback 则使用物理接口上数值最大的地址。

5)Optional parameters用于一些可选功能的支持,例如鉴别,多协议支持及路由刷新等。

4.2.3 Update消息Update消息用于在对等体之间交换路由信息。

它既可以发布可达路由信息,也可以撤销不可达路由信息,其消息格式如图所示。

BGP Update 消息格式一条Update 报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP 根据这些属性进行路由的选择;同时Update 报文还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes 字段中。

BGP Update 消息包含的内容包括:1)Network Layer Reachability Information (NLRI)用来公布IP 地址前缀和前缀长度的字节组,例如<19,198.24.160.0>2)Path Attributes该属性为BGP 提供了选择最短路径,检查到路由环路以及决定路由策略的信息3)Withdrawn Routes用来描述已经变成不可达并正从业务中撤销的目的地址字节组(长度和前缀)注:虽然NLRI 字段可以包含多个前缀,但每一个更新消息只描述一条BGP 路由(因为路径属性只描述一条路径,但该路径可能会到达多个目的地)4.2.4 Notification消息当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

其消息格式如图所示。

BGP Notification 消息格式主要字段的解释如下:Error Code:差错码,指定错误类型。

Error Subcode:差错子码,错误类型的详细信息。

Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。

4.2.5 Keepalive消息BGP 会周期性地向对等体发出Keepalive 消息,用来保持连接的有效性。

其消息格式中只包含报文头,没有附加其他任何字段。

如果路由器接受了他在邻居的Open 消息中的参数,它就会发送一个应答的Keepalive 消息。

默认情况Keepalive 间隔60s,或者是达成一致的保持时间的1/3。

4.2.6 Route-refresh消息这是一个可选的消息,Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。

其消息格式如图所示。

BGP Route-refresh 消息格式主要的字段解释如下:AFI:Address Family Identifier,地址族标识。

Res.:保留,必须置0。

SAFI:Subsequent Address Family Identifier,子地址族标识。

4.3 BGP邻居协商在BGP说话者可以交换网络层可达性信息(正被通告的网络)前,一个BGP会话必须被建立。

下图表明了在连接完全建立起前B G P邻居协商的过程。

4.4 BGP协议的状态机1) Idle(空闲):初始地,BGP处于Idle状态直到一个操作方引发了一个启动(Start)事件,启动事件通常是由建立或重启BGP会话引起的。

2) Connect(连接):在这个状态下,BGP正等待着传输协议连接的完成。

如果传输协议连接成功了,一open报文被发送给对等的路由器,BGP状态变成了开放发送(opensent)状态。

若连接失败,本地系统变为激活状态,继续监视连接。

3) Active State(行动):在这个状态下,BGP试图通过启动一传输协议连接来获得一个对等体。

若连接成功,一个Open报文被发送给对等路由器。

若连接重试计时器超时,BGP状态变为连接(Connect)状态,并继续监视可能会由远程BGP对等体启动的连接。

4) Open Sent State (开送状态):本状态中,BGP正等待着来自它的对等体的OPEN报文。

当一个OPEN报文被接收后,检查所有域的正确性。

如果检测到错误,本地系统发送出一个NOTIFICATION报文并变回到空闲状态(Idle)。

如果无错, BGP开始向它的对等体发送KeepAlive报文。

5) Open Confirm(开确认):本状态下,BGP 等候KeepAlive 或Notification报文。

若本地系统接收到KeepAlive报文,系统状态变为已建立( establisted )状态。

如果保持计时器(Holol timer)在KeepAlive报文到达前超时,本地系统发送出一Notification报文,状态变回到Idle。

6)Establisted(已建立):这是邻居协商的最后阶段。

在establisted 状态下,BGP对等体可以交换Update , Notification 以及KeepAlive报文。

4.5 BGP 的路由属性4.5.1 路由属性的分类BGP 路由属性是UPDATE报文的路由属性(Path Attributes):此可变长字段包含了与网络层可达性信息字段中前缀相关联的BGP属性的列表,它对特定的路由进行了进一步的描述,路径属性给出了正被通告的前缀的信息,如优先级或者前缀源等,使得BGP 能够对路由进行过滤和选择。

BGP 路由属性都可以分为以下四类:公认必须遵循(Well-known mandatory):所有BGP 路由器都必须能够识别这种属性,且必须存在于Update 消息中。

如果缺少这种属性,路由信息就会出错。

公认可选(Well-known discretionary):所有BGP 路由器都可以识别,但不要求必须存在于Update 消息中,可以根据具体情况来选择。

可选过渡(Optional transitive):在AS 之间具有可传递性的属性。

BGP 路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。

可选非过渡(Optional non-trasitive):如果BGP 路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。

相关主题