BGP实验 (IBGP,EBGP) neighbor

Lab 1 BGP(IBGP,EBGP)邻居建立的过程
实验目的:通过以下几个步骤来了解BGP是如何建立邻居的。

Step 1、配置各台路由器的IP地址,并且使用Ping命令确认各路由器的直连口的互通性。
R1(config)#interface F0/0
R1(config-if)#ip address 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown

R2(config)#interface F0/0
R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2(config-if)#no shutdown

Step 2、R1,R2之间运行EBGP,使其建立EBGP邻居。
R1(config)#router bgp 1
R1(config-router)#neighbor 12.1.1.2 remote-as 2

R2(config)#router bgp 2
R2(config-router)#neighbor 12.1.1.1 remote-as 1

Step 3、在R1上debug ip tcp packet,BGP的可靠性体现在它使用了TCP的机制,通过输出信息可了解,在建立BGP邻居时需先通过TCP的三次握手。
TCP三次握手过程

通过Wireshark嗅探的TCP三次握手

R1#debug ip tcp packet
*Mar  1 00:18:27.347: tcp0: I LISTEN 12.1.1.2:11001 12.1.1.1:179 seq 4241660768
        OPTS 4 SYN  WIN 16384
首先,R2向R1发送TCP请求,端口:179,SYN=1 

*Mar  1 00:18:27.355: tcp0: O SYNRCVD 12.1.1.2:179 12.1.1.1:11001 seq 2594991182 OPTS 4 ACK 4241660769 SYN  WIN 16384
其次,R2接收了R1的ACK,并向R2提出TCP请求,端口:179。
*Mar  1 00:18:27.395: tcp0: I SYNRCVD 12.1.1.2:11001 12.1.1.1:179 seq 4241660769 ACK 2594991183  WIN 16384
*Mar  1 00:18:27.439: tcp0: I ESTAB 12.1.1.2:11001 12.1.1.1:179 seq 4241660769
        DATA 45 ACK 2594991183 PSH  WIN 16384
*Mar  1 00:18:27.447: tcp0: O ESTAB 12.1.1.2:179 12.1.1.1:11001 seq 2594991183
        DATA 64 ACK 4241660814 PSH  WIN 16339
*Mar  1 00:18:27.515: tcp0: I ESTAB 12.1.1.2:11001 12.1.1.1:179 seq 4241660814
        DATA 38 ACK 2594991247 PSH  WIN 16320
最后,R2向R1也发送了ACK和协商建立连接。

注意:BGP并不是在每次需要发送更新时,都建立TCP连接,只是第一次才需要三次握手,BGP是通过keepalive消息来维持邻居间的TCP连接,默认每60s发送一次。

Step 4、通过debug ip bgp的输出信息来了解BGP的建立过程。
首先,BGP的建立过程中,需经历6个阶段是:
(1)Idle(空闲状态)
(2)Connection(连接状态)
(3)Active(激活状态)
(4)Open sent(发送Open消息的状态)
(5)Open confirm(open消息确认状态)
(6)Establish(建立状态)
R1#debug ip bgp 
*Mar  1 00:08:01.455: BGP: 12.1.1.2 went from Idle to Active
(R1开始进行连接并将Idle状态转换成Active状态)
*Mar  1 00:08:01.455: BGP: 12.1.1.2 open active, delay 19298ms
(R1发起open活跃状态在此时它将激活一个连接延时,在此时内BGP要建立双向通信,否则会进入以下状态并出现以下提示:open failed:connection refused by remote host,open active delayed ***ms)
*Mar  1 00:08:20.755: BGP: 12.1.1.2 open active, local address 12.1.1.1
(当R2双向通信建立起来后,会出现以下的提示)
*Mar  1 00:08:20.819: BGP: 12.1.1.2 went from Active to OpenSent
(双向邻居建立起来后路由器会由Active状态进入opensent状态)
*Mar  1 00:08:20.819: BGP: 12.1.1.2 sending OPEN, version 4, my as: 1
(R1发送open消息开始协商BGP的状态,第一步发送版本号和AS号)
*Mar  1 00:08:20.823: BGP: 12.1.1.2 send message type 1, length (incl. header) 45
*Mar  1 00:08:20.855: BGP: 12.1.1.2 rcv message type 1, length (excl. header) 26
(R1开始和R2进行BGP open消息格式的协商)
*Mar  1 00:08:20.859: BGP: 12.1.1.2 rcv OPEN, version 4
*Mar  1 00:08:20.859: BGP: 12.1.1.2 rcv OPEN w/ OPTION parameter len: 16
*Mar  1 00:08:20.859: BGP: 12.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 6
*Mar  1 00:08:20.863: BGP: 12.1.1.2 OPEN has CAPABILITY code: 1, length 4
*Mar  1 00:08:20.863: BGP: 12.1.1.2 OPEN has MP_EXT CAP for afi/safi: 1/1
*Mar  1 00:08:20.867: BGP: 12.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Mar  1 00:08:20.867: BGP: 12.1.1.2 OPEN has CAPABILITY code: 128, length 0
*Mar  1 00:08:20.871: BGP: 12.1.1.2 OPEN has ROUTE-REFRESH capability(old)
R1# for all address-families
*Mar  1 00:08:20.871: BGP: 12.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Mar  1 00:08:20.871: BGP: 12.1.1.2 OPEN has CAPABILITY code: 2, length 0
*Mar  1 00:08:20.875: BGP: 12.1.1.2 OPEN has ROUTE-REFRESH capability(new) for all address-families
(BGP邻居之间开始协商选项和能力字段)
*Mar  1 00:08:20.875: BGP: 12.1.1.2 went from OpenSent to OpenConfirm
(BGP邻居关系进入open confirm)
*Mar  1 00:08:20.879: BGP: 12.1.1.2 went from OpenConfirm to Established
(BGP邻居关系建立完成并且进入Establish状态)
*Mar  1 00:08:20.879: %BGP-5-ADJCHANGE: neighbor 12.1.1.2 Up 
(BGP邻接关系正式建立成功)

结论:
1、BGP是可靠性协议,所以在建立邻居之前需要建立TCP连接。
2、在输出的信息中会少了connect状态,这是因为,BGP在此状态中会等待TCP进行连接(BGP使用TCP179端口)如果建立连接过程十分顺利的完成,那么BGP会将connectRetry计时器清零,并且完成初始化过程开始向邻居发送open消息同时进入opensent状态,由于此过程十分快速的建立完成所以并没显示出来。
3、在建立邻居前,需确认AS号,版本号,hold time,等信息的正确性。否则邻居会建立失败。

posted @ 2020-04-09 12:50  cyrusxx  阅读(573)  评论(0编辑  收藏  举报