HCIP-15.1.5 BGP邻居状态
1.BGP邻居状态机制
Active状态:TCP连接失败,启动BGP重传定时器,BGP路由器再次尝试与对方建立TCP连接(例如,对端路由器配置了BGP但是没有指定邻居)
Connect状态:对端没有配置BGP进程
Active被动等待TCP连接,Connect开始主动建立TCP连接
2.BGP邻居类型 – EBGP
-
运行在不同AS之间的BGP路由器建立的邻居关系为EBGP(External BGP)邻居关系。
-
EBGP只用于不同AS之间传递路由,如图,AS100内的RTB与RTC分别从AS200与AS300学习到不同的路由,怎样实现AS200与AS300内的交换?
-
在AS100内实现将学到的AS200和AS300的路由进行交换,可以在拓扑中的RTB与RTC路由器上,将BGP路由引入IGP协议(图中为OSPF),再将IGP协议的路由在RTB与RTC路由器上引入到BGP协议,实现AS200与AS300路由的交换
-
此方法缺点:
- 公网上承载的路由数目非常庞大,引入IGP协议后,IGP协议无法承载大量的BGP路由
- BGP路由引入IGP协议时,需要做严格的控制,配置复杂,不易维护。
- BGP携带的属性在引入IGP时,由于IGP协议不能识别,可能会丢失。
-
因此,需要设计BGP在AS内部完成路由传递。
3.BGP邻居类型 – IBGP
- 运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Internal BGP)邻居关系。
- 如上图,因为BGP使用TCP作为其承载协议,所以可以跨设备建立邻居关系,RTB与RTC之间建立IBGP邻居关系,并各自将从其他AS学到的路由传递给对端,实现BGP路由在AS内传递。
4.BGP邻居关系配置的优化
- 建立EBGP邻居关系时,一般使用直连接口的IP地址;建立IBGP邻居关系时,一般使用LoopBack接口的IP地址。
5.BGP邻居发现
- 先启动BGP的一端先发起TCP连接,如图,RTB先启动BGP协议,RTB使用随机端口号,向RTA的179号端口发起TCP连接。
- rip封装在UDP后边;OSPF封装在IP后边;ISIS封装在链路层后边
- BGP协议被设计运行在AS之间传递路由,AS之间是广域网链路,数据包在广域网上传递时可能出现不可预测的链路拥塞或丢失等情况,因此BGP使用TCP作为其承载协议来保证可靠性。
- BGO使用TCP封装建立邻居关系,端口号为179,TCP采用单播建立连接,因此BGP协议并不像Rip和OSPF一样使用组播发现邻居,单播建立连接也使BGP只能手动指定邻居。
6.BGP邻居关系建立
-
BGP通过报文的交互完成邻居建立,路由更新等操作。共有Open、Keepalive、Update、Route-refresh、Notification五种报文类型
-
Open报文
是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送keepalive
报文确认并保持连接的有效性。确认后,BGP邻居间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
-
Keepalive报文
BGP路由器会周期性的向邻居发出Keepalive报文,用来保持连接的有效性。
-
Update报文
用于在BGP邻居之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
- 一条Update报文可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update报文里的路由属性适用于该Update报文中的NLRI(Network Layer Reachability Informatica·)字段里的所有目的地(用IP前缀表示)。
- 一条Update报文可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚地定义了BGP路由器之间先前通告过的路由。
- 一条Update报文可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。
-
Route-refresh报文
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。
-
Notification报文
当BGP检测到错误状态时,就向邻居发出Notification报文,之后BGP连接会立即中断。
发表评论