邊界網(wǎng)關(guān)協(xié)議:BGP鄰居的6種狀態(tài)
BGP(border gateway protocol)邊界網(wǎng)關(guān)協(xié)議,應(yīng)用層協(xié)議,基于tcp,端口號(hào)179,報(bào)文結(jié)構(gòu):bgp header|tcp|ip|二層。
今天就詳細(xì)給大家介紹一下BGP鄰居狀態(tài)機(jī)。
可以利用鄰居狀態(tài)機(jī)描述BGP連接的建立和維護(hù),它將有以下的6種狀態(tài):
1. ldle (空閑)狀態(tài)
BGP總以ldle狀態(tài)為起點(diǎn),該狀態(tài)拒絕所有入站的連接。只有在BGP起動(dòng)之后,BGP進(jìn)程將初始化所有BGP資源,初始化去往鄰居的TCP連接,監(jiān)聽(tīng)來(lái)自鄰居的TCP初始化消息,并更改為連接狀態(tài)。啟動(dòng)事件一般是配置BGP進(jìn)程。
2. Connect(連接)狀態(tài)
進(jìn)入Connect狀態(tài)后,BGP進(jìn)程將一直等待TCP連接的完成(三次握手),當(dāng)TCP連接建立成功,BGP將會(huì)向鄰居發(fā)送Open消息,并進(jìn)入OpenSent(打開(kāi)發(fā)送)狀態(tài)。如果TCP會(huì)話沒(méi)有建立,BGP將繼續(xù)監(jiān)聽(tīng)鄰居初始化的連接,開(kāi)啟連接重試定時(shí)器,遷移到Active(激活)狀態(tài)。
- Connect→→OpenSent(TCP連接建立);
- Connect→→Active(TCP連接暫未建立)。
3. Active(激活)狀態(tài)
該狀態(tài)下,BGP進(jìn)程繼續(xù)嘗試和鄰居建立TCP連接,如果TCP連接建立成功,BGP進(jìn)程清除連接重試定時(shí)器,完成初始化過(guò)程,并向鄰居發(fā)送Open報(bào)文,遷移到OpenSent(打開(kāi)發(fā)送)狀態(tài)。
如果連接重試定時(shí)器到期BGP進(jìn)程依然處在激活狀態(tài),進(jìn)程將返回連接狀態(tài),監(jiān)聽(tīng)鄰居發(fā)起的TCP會(huì)話,這個(gè)過(guò)程將反復(fù)循環(huán),直到監(jiān)聽(tīng)到由鄰居發(fā)起的TCP會(huì)話。
4. OpenSent(打開(kāi)發(fā)送)狀態(tài)
進(jìn)入了該狀態(tài),已經(jīng)發(fā)送了Open消息,BGP將一直等待來(lái)自鄰居的Open消息。一旦接收到Open消息后,將檢查該消息的每一個(gè)字段,如果有差錯(cuò),將會(huì)發(fā)送Notification消息遷入Idle狀態(tài)。
如果接收到的Open消息沒(méi)錯(cuò),就會(huì)發(fā)送Keepalive消息并商討Keepalive定時(shí)器和Keepalive發(fā)送的時(shí)間。并遷移到OpenConfirm(打開(kāi)確認(rèn))狀態(tài)。
5. OpenConfirm(打開(kāi)確認(rèn))狀態(tài)
進(jìn)入了這個(gè)狀態(tài)下,BGP進(jìn)程將等待鄰居確認(rèn)的Keepalive或Notification消息。如果接收到的是Keepalive消息則遷移到Established(建立)狀態(tài),如果是Notification消息那么就將遷移到Idle狀態(tài)。
6. Established(建立)狀態(tài)
進(jìn)入了這個(gè)狀態(tài)就說(shuō)明了BGP的對(duì)等連接正式建立了,對(duì)等體之間交互Update,Keepalive和Notification消息,如果接受到的是Update或Keepalive消息,則重啟保持定時(shí)器,如果接受到一個(gè)Notification消息,則會(huì)遷移到Idle狀態(tài)。
注:
① 問(wèn):長(zhǎng)時(shí)間停留在Active或ldle狀態(tài),可能的原因是什么?
答:
- 本路由器沒(méi)有到達(dá)BGP Open報(bào)文中源IP地址的路由(debug ip bgp輸出:no route)
- neighbor命令中配置了錯(cuò)誤的IP地址(debug ip bgp輸出:no route)
- neighbor命令中沒(méi)有配置更新源地址(debug ip bgp輸出:Connection refused by remote host)
- 在建立eBGP鄰居是的neighbor命令中沒(méi)有考慮到TTL值問(wèn)題
- 沒(méi)有配置neighbor命令
- AS號(hào)配置錯(cuò)誤(debug ip bgp輸出:Connection refused by remote host)
② 我們?cè)趯?shí)際網(wǎng)絡(luò)中操作BGP時(shí),為了避免路由動(dòng)蕩,可以使用命令router(config-router)# neighbor A.B.C.D shutdown來(lái)暫時(shí)的關(guān)閉BGP鄰居,此時(shí)鄰居配置未刪除但是路由丟失。
③ 查看命令show ip bgp summary #觀察最后1列顯示為空白或數(shù)字,表示該鄰居正常建立。
查看命令show ip bgp neighbors #觀察BGP State顯示為Established表示鄰居正常建立。