目录
1.BGP概述
- BGP是一种用于自治系统(Autonomous System )之间的动态路由协议。主要用于交换AS之间的可达路由信息,构建AS域间的传播路径,防止路由环路的产生,并在AS级别应用一些路由策略。当前使用的版本是BGP-4(RFC4271)。BGP作为的Internet外部路由协议标准,被广泛应用于ISP之间。
- BGP是一种外部网关路由协议(EGP),与OSPF、RIP等内部网关路由协议不同,其着眼点不在于自动发现网络拓扑,而在于在AS之间选择最佳路由和控制路由的传播。
- BGP使用TCP作为传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来保证连接的可控性,BGP进行域间的路由选择,对协议的稳定性要求非常高,使用TCP协议的高可靠性来保证BGP协议的稳定性。
- TCP的三次握手条件使得TCP只能基于单播工作,同时BGP需要非直连建邻;BGP基于IGP之上,先运行IGP使BGP设备间IP可达,然后BGP才能基于TCP建立非直连邻居关系。
- 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet传播大量的路由信息。
- BGP从设计上避免了环路:AS之间,BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃;AS之内,BGP在AS之内学到的路由不再通告给AS之内的其他邻居,避免了AS内的环路。
- BGP具有丰富的属性用来替代IGP协议中的度量进行选路;并且默认不被用于负载均衡,通过各种选路规则选出一条最佳路径。
2.BGP的数据包
基于TCP的179端口工作;故BGP协议中所有的数据包均在TCP会话建立后基于TCP会话来传递及保障可靠性。BGP协议首先是通过TCP的三次握手来寻找邻居。
BGP的运行是通过消息驱动的,共有Open、Update、Notification、Keepalive和Route-Refresh等5种消息类型。
- Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP邻居间的连接关系。正常仅收发一次,携带Route-id,hold time(默认3min)。
- Update消息:用于在对等体之间交换路由器信息,携带路由条目(目标网络号+各种属性)。一条Update消息可以发布多条属性相同的可达路由信息,也可撤销多条不可达路由信息。
- Keepalive消息:周期1min查询邻居关系是否存在;实际保活TCP会话。
- Notification消息:当BGP检测到错误状态时,就向邻居发出Notification消息之后,之后BGP连接会立即终端。
- Route-Refresh消息∶通过OPEN消息告知BGP Peer本地支持路由刷新能力。在