总之,BGP不是每次都广播所有的路由信息,而是在初始化全部路由信息后只发送路由的变化量(增量) 。这样保证了BGP和对端的最小通信量,但同时增加了BGP的复杂程度 。因为对于IGP,本地路由协议只需发送发送时刻所知的全部路由,而不保存任何已发送信息,路由选择的工作由对端来完成;而BGP必须为每个BGP对端保存已经发送的路由信息,以便发送一条新路由前确认其是否真的应该发送 。
为了减小路由表的体积和发送路由的通信量,BGP还支持CIDR(Classless InterDomain Routing) 。它使用带有较短的掩码(相对于自然掩码)的路由来在一条路由中表达更多的路由信息 。如从202.112.1.0/24-202.112.254.0/24可以使用202.112.0.0/16表示,从而减小了路由表的体积和发送路由信息时的网络流量 。
同时,作为AS自治区域间的路由协议,由于政治的、经济的等原因,BGP需要按照不同的路由的属性控制路由的发送和引入 。因此,BGP有丰富的路由策略控制手断 。
5、BGP协议中消息的应用
BGP使用TCP建立连接,本地监听端口为179 。和TCP建立相同,BGP连接的建立也要经过一系列的对话和握手 。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本,BGP连接保持时间,本地的路由器标识(Router ID),授权信息等 。这些信息都在OPEN消息中体现 。
BGP连接的具体过程参见BGP有限状态机 。
BGP连接建立后,假如有路由需要发送则发送UPDATE消息通告对端路由信息 。UPDATE消息主要用来通告路由信息,包括失效(退出)路由 。UPDATE消息发布路由时,还要指定此路由的路由属性,用以帮助对端BGP协议选择最佳的路由 。需要注重的是,由UPDATE消息的格式可以看出每个UPDATE消息只可以发布一种路由属性,本地BGP假如有路由属性完全相同的路由(只有信宿地址不同),则可以由一条UPDATE消息发布,否则只能使用不同的UPDATE消息发布 。关于路由属性在BGP选择路由时的应用,参见BGP协议路由属性的应用部分 。
在本地BGP路由变化时,也使用UPDATE消息修正对端BGP的路由表 。
经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定了 。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性 。对于本地BGP,假如在超过保持时间的时间内,还未收到任何对端BGP消息,就认为此BGP连接已经无效,将此BGP连接断开 。
当本地BGP在运行中发现错误时,要发送NOTIFY消息通告BGP对端 。如对端BGP版本本地不支持,本地BGP收到了结构非法的UPDATE消息等 。本地BGP退出BGP连接时也要发送NOTIFY消息 。BGP收到NOTIFY消息后,要作相应处理 。
6、BGP伙伴的有限状态机(FSM)
BGP有限状态机有6种状态:
1-Idle
2-Connect
3-Active
4-OpenSent
5-OpenConfirm
6-Established
BGP事件:
1-BGP Start
2-BGP Stop
3-BGP Transport connection open
4-BGP Transport connection closed
5-BGP Transport connection open failed
6-BGP Transport fatal error
7-ConnectRetry timer eXPired
8-Hold Timer expired
9-KeepAlive timer expired
10-Receive OPEN message
11-Receive KEEPALIVE message
12-Receive UPDATE message
13-Receive NOTIFICATION message
一个典型的过程为:Idle(启动消息)->Connect(TCP连接成功,发OPEN)->OpenSent(收到OPEN消息,协商成功)->OpenConfirm(收到KEEPALIVE消息)->Established(TCP连接关闭,有错误,或处理UPDATE消息失败,或收到NOTIFICATION消息)->Idle
推荐阅读
- 三 协议分析工具学习TCP/IP
- 二 协议分析工具学习TCP/IP
- VPN 虚拟专用网的原理和组建(3) -协议篇
- 二 OSPF协议介绍
- 什么是网络协议?
- UDP协议简介
- 三大协议NetBEUI和 IPX/SPX TCP/IP
- VPN使用的协议
- VPN相关协议与草案
- 从鹅的出雏质量分析种蛋及孵化管理
