BGP基于TCP,端口号179.
1.由于邻居没有启用BGP,邻居被重置2.可以看出,BGP的TCP连接是由先发起TCP连接的路由器去发送,去访问邻居的高端口
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
12.0.0.1 4 1 0 0 0 0 0 never Active
BGP基于TCP,端口号179
TCP三次连接:
BGP报头:
OPEN消息:
如果接收到得OPEN消息是可接受的,就发送一条KEEPLIVE,用来确认OPEN消息。
Keeplive:
Keeplive以保持时间的1/3(不能小于1S)来交换,保持时间为0的话,就不发送Keeplive
Keeplive中只有16byte的标志+2byte的长度+1byte的类型=keeplive19 byte
Update消息:
每一个Update报文只能宣告一条可行路由,撤销多条不可行路由。因为路径属性只可能描述一条路由,如果有多条路由存在,无法判断路径属性描述的是哪条路由。
Update报文可选的还有一个 withdraw routes 该字段列出一个要退出服务的路由器列表,以长度,前缀二元组形式表示。
notification 消息:
检测到差错后发送此消息,发出消息后,立即关闭BGP连接
BGP状态机
第一台启动BGP进程的路由器(主动)
*Oct 2 21:43:44.411: BGP: 12.0.0.1 open active, local address 12.0.0.2
*Oct 2 21:43:44.471: BGP: 12.0.0.1 went from Active to OpenSent
*Oct 2 21:43:44.471: BGP: 12.0.0.1 sending OPEN, version 4, my as: 2, holdtime 180 seconds
*Oct 2 21:43:44.475: BGP: 12.0.0.1 send message type 1, length (incl. header) 45
*Oct 2 21:43:44.571: BGP: 12.0.0.1 rcv message type 1, length (excl. header) 26
*Oct 2 21:43:44.575: BGP: 12.0.0.1 rcv OPEN, version 4, holdtime 180 seconds
*Oct 2 21:43:44.575: BGP: 12.0.0.1 rcv OPEN w/ OPTION parameter len: 16
*Oct 2 21:43:44.575: BGP: 12.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 6
*Oct 2 21:43:44.575: BGP: 12.0.0.1 OPEN has CAPABILITY code: 1, length 4
*Oct 2 21:43:44.579: BGP: 12.0.0.1 OPEN has MP_EXT CAP for afi/safi: 1/1
*Oct 2 21:43:44.579: BGP: 12.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Oct 2 21:43:44.579: BGP: 12.0.0.1 OPEN has CAPABILITY code: 128, length 0
*Oct 2 21:43:44.579: BGP: 12.
R2(config)#0.0.1 OPEN has ROUTE-REFRESH capability(old) for all address-families
*Oct 2 21:43:44.579: BGP: 12.0.0.1 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Oct 2 21:43:44.583: BGP: 12.0.0.1 OPEN has CAPABILITY code: 2, length 0
*Oct 2 21:43:44.583: BGP: 12.0.0.1 OPEN has ROUTE-REFRESH capability(new) for all address-families
BGP: 12.0.0.1 rcvd OPEN w/ remote AS 1
*Oct 2 21:43:44.583: BGP: 12.0.0.1 went from OpenSent to OpenConfirm
*Oct 2 21:43:44.583: BGP: 12.0.0.1 went from OpenConfirm to Established
Active:
BGP尝试与邻居初始化TCP连接,如果TCP连接成功,发送OPEN报文,并迁移到Opensent状态。
OpenSent:
已经发送了Open报文,等待来自邻居的Open消息,然后检查必要参数,如果存在差错则会发送notification消息,并迁移到空闲状态
如果没有错,发送Keeplive消息并协商保持时间和Keeplive定时器。并迁移到openconfirm
Openconfirm:
等待Keeplive或notification消息,如果接收到得是前者,转入established,如果是后者或断开TCP连接的请求,则转入idle状态。
established:
BGP对等连接已经完全建立。
第二台启动的路由器(被动)
*Oct 2 21:43:21.895: BGP: 12.0.0.2 went from Idle to Active
*Oct 2 21:43:21.907: BGP: 12.0.0.2 open active delayed 31051ms (35000ms max, 28% jitter)
R1(config-router)#
*Oct 2 21:43:44.539: BGP: 12.0.0.2 passive open to 12.0.0.1
*Oct 2 21:43:44.543: BGP: 12.0.0.2 went from Active to Idle
*Oct 2 21:43:44.543: BGP: 12.0.0.2 went from Idle to Connect
*Oct 2 21:43:44.555: BGP: 12.0.0.2 rcv message type 1, length (excl. header) 26
*Oct 2 21:43:44.555: BGP: 12.0.0.2 rcv OPEN, version 4, holdtime 180 seconds
*Oct 2 21:43:44.555: BGP: 12.0.0.2 went from Connect to OpenSent
*Oct 2 21:43:44.559: BGP: 12.0.0.2 sending OPEN, version 4, my as: 1, holdtime 180 seconds
*Oct 2 21:43:44.559: BGP: 12.0.0.2 rcv OPEN w/ OPTION parameter len: 16
*Oct 2 21:43:44.559: BGP: 12.0.0.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 6
*Oct 2 21:43:44.559: BGP: 12.0.0.2 OPEN has CAPABILITY code: 1, length 4
*Oct 2 21:43:44.559: BGP: 12.0.0.2 OPEN has MP_EXT CAP for afi/safi: 1/1
*Oct 2 21:43:44.563: BGP: 12.0.0.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Oct 2 21:43:44.563: BGP: 12.0.0.2 OPEN has CAPABILITY code: 128, length 0
R1(config-router)#
*Oct 2 21:43:44.563: BGP: 12.0.0.2 OPEN has ROUTE-REFRESH capability(old) for all address-families
*Oct 2 21:43:44.563: BGP: 12.0.0.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2
*Oct 2 21:43:44.563: BGP: 12.0.0.2 OPEN has CAPABILITY code: 2, length 0
*Oct 2 21:43:44.567: BGP: 12.0.0.2 OPEN has ROUTE-REFRESH capability(new) for all address-families
BGP: 12.0.0.2 rcvd OPEN w/ remote AS 2
*Oct 2 21:43:44.567: BGP: 12.0.0.2 went from OpenSent to OpenConfirm
*Oct 2 21:43:44.567: BGP: 12.0.0.2 send message type 1, length (incl. header) 45
*Oct 2 21:43:44.611: BGP: 12.0.0.2 went from OpenConfirm to Established
idle:
该状态拒绝所有连接,初始化去往邻居的TCP连接。侦听来自邻居的TCP初始化并将状态更改为连接状态。(neighbor以后,会从idle迁移到active,去尝试TCP连接,但这时候已经接受到邻居发来的TCP连接——passive open to 12.0.0.1)
由active状态下,接收到邻居发来的OPEN报文,将状态从active转入到idle,并从idle转入connect,来等待TCP连接完成。
connect:
该状态下,一直等待TCP连接完成,如果TCP连接成功,BGP将发送OPEN报文并进入OPENSENT状态。