《重识云原生系列》专题索引:
BGP协议被设计运行在AS之间传递路由,AS之间是广域网链路,数据包在广域网上传递是可能出现不可预测的链路拥塞或丢失等情况,因此BGP使用TCP作为其承载协议来保证可靠性。
相当于TCP连接一直存在,BGP通过Keep alive机制(不断、定时发送keepalive报文)时TCP连接不会断掉。
BGP使用TCP封装建立邻居关系,端口号为179,TCP采用单播建立连接,因此BGP协议并不像RIP和OSPF一样使用组播发现邻居。单播建立连接也使BGP只能手动指定邻居。(配置的时候需要自己手动指定邻居)。
先看起BGP的一端发起TCP的连接。
TCP连接(三次握手)简单介绍:
一下图为例:RTB向RTA发起建立TCP连接请求,RTA收到之后,返回一个连接请求和确认消息,RTB收到之后返回一个确认消息。连接建立完成。
BGP邻居类型分为两种:
EBGP只用于不同AS之间传递路由。如图,AS 100内的RTB与BTC分别从AS 200与AS 300学习到不同的路由,怎么实现AS 200与AS 300之间路由在AS 100内的交换?
在AS 100内实现将学到的AS 200和AS 300路由进行交换,可以在拓扑中的RTB与RTC路由器上将BGP的路由引入IGP协议(图中为OSPF协议),再将IGP协议的路由在RTB与RTC路由器上引入回BGP协议,实现AS 200与AS 300路由的交换。
上述方法存在以下几个缺点:
因此我们用IBGP来邻居关系来解决上述问题:如上图,因为BGP使用TCP作为其承载协议,所以可以跨设备建立邻居关系。如图所示,RTB与RTC之间建立IBGP邻居关系,并各自将从其他AS学到的路由传递给对端,实现BGP路由在AS内的传递。
注意:建立IBGP邻居关系建立一般使用Loopback口IP地址,因为Loopback口为逻辑接口,且不会down,非常稳定,这样邻居关系一直处于稳定状态。EBGP邻居关系建立使用直连接口IP地址。
搭建拓扑,规划网段并配置各个接口IP地址。
以RTB举例:
[RTB]int g0/0/0
[RTB-GigabitEthernet0/0/0]ip ad 10.1.24.2 24
[RTB-GigabitEthernet0/0/0]int g0/0/1
[RTB-GigabitEthernet0/0/1]ip ad 10.1.12.2 24
[RTB-GigabitEthernet0/0/1]int lo0
[RTB-LoopBack0]ip ad 22.22.22.22 32
[RTB-LoopBack0]quit
[RTB]
AS 100内部使用IGB:OSPF协议通信。配置OSPF协议。
注意:不要忘记宣告Loopback接口所在网段。
以RTB为例其余路由器相同:
[RTB]ospf
[RTB-ospf-1]a 0
[RTB-ospf-1-area-0.0.0.0]network 22.22.22.22 0.0.0.0
[RTB-ospf-1-area-0.0.0.0]network 10.0.12.0 0.0.0.255
验证RTB环回口是否能与RTC环回口通信,若正确则进行下一步:
ping -a 22.22.22.22 33.33.33.33
PING 33.33.33.33: 56 data bytes, press CTRL_C to break
Reply from 33.33.33.33: bytes=56 Sequence=1 ttl=254 time=40 ms
Reply from 33.33.33.33: bytes=56 Sequence=2 ttl=254 time=30 ms
Reply from 33.33.33.33: bytes=56 Sequence=3 ttl=254 time=30 ms
Reply from 33.33.33.33: bytes=56 Sequence=4 ttl=254 time=30 ms
Reply from 33.33.33.33: bytes=56 Sequence=5 ttl=254 time=30 ms
--- 33.33.33.33 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/32/40 ms
配置BGP邻居关系:
以RTB、RTD之间建立EBGP关系为例:
[RTB]
[RTB]bgp 100
[RTB-bgp]peer 10.1.24.4 as-number 200 //BGP邻居关系的类型主要靠配置的AS号区别,peer关键字后面是对端邻居的接口IP地址,as-number后面是邻居路由器所在的AS号,AS号相同则为IBGP邻居关系;AS号不同,则为EBGP邻居关系。
[RTD]
[RTD]bgp 200
[RTD-bgp]peer 10.1.24.2 as-number 100
配置IBGP邻居关系:本例中RTB和RTC建立IBGP邻居关系(本例使用逻辑接口建立IBGP邻居关系):
[RTB]
[RTB]bgp 100
[RTB-bgp]peer 33.33.33.33 as-number 100 //AS号相同则为IBGP邻居关系
[RTB-bgp]peer 33.33.33.33 connect-interface LoopBack 0
[RTC]
[RTC]bgp 100
[RTC-bgp]peer 22.22.22.22 as-number 100
[RTC-bgp]peer 22.22.22.22 connect-interface LoopBack 0
[RTC-bgp]
额外提供直连接口配置方法:
[RTB-bgp]peer 10.1.12.1 as-number 100
查看邻居关系display bgp peer:
以RTB为例:
[RTB]display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 100
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
10.1.24.4 4 200 41 42 0 00:39:16 Established 0
33.33.33.33 4 100 37 37 0 00:35:27 Established 0
注意:此时BGP邻居关系已经建立,但是由于没有路由引入所以没有路由表,查看BGP路由表命令:display bgp routing-table。路由引入命令下一遍文章介绍
BGP协议原理(一)BGP协议基本概念:BGP作用与特点、BGP邻居关系建立与配置_Skye_Zheng的博客-CSDN博客_bgp协议作用
【网络干货】最全BGP路由协议技术详解 - 知乎
BGP协议总结(比较详细,好理解)_Looo~ye的博客-CSDN博客_bgp协议
边界网关协议_百度百科
BGP协议详解(一)_liboyang990814的博客-CSDN博客_bgp协议
BGP协议介绍 - 知乎
BGP报文及格式(2) - 简书
【干货】万字详解BGP路由技术原理及配置命令! - 知乎
32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP报文类型、BGP状态机等 - 知乎
BGP优雅重启(Graceful Restart) - 知乎