BGP的消息類型以及格式

一、BGP的消息類型:

1:open(打開消息)

2:keepalive(存活消息)

3:update(更新消息)

4:notification(報錯消息)


1.1 open

當BGPspoken peer之間建立了tcp三次握手之後,便開始發送open消息,那麼這個open消息用來幹嘛,那麼先來看看open消息格式,便能理解它的作用


162511907.png


1、Marker、length、type 是bgp報文的固定格式

2、version:表明BGP的版本

3、My AS:表明發送方的AS系統號

4、hold time:表明發送方keepalive報文過期時間

5、BGP identifier: 在一個AS內保證BGP進程不同,類似OSPF的router-id

6、optional parmeters:可選的參數,比如要做認證,則必須要事先協商

總體這個報文應該沒有什麼問題,學過OSPF的對hello報文作用很清楚吧,這個open跟hello基本差不多,但是hello報文的第二個特性就完全不一樣了,hello報文第二個特性是保活,而BGP使用接下來介紹的keepalive報文進行BGP peer之間的保活作用,當然這也突出了BGP的增量更新作用。


2、keepalive報文


163524207.png



這個報文沒什麼講的,60s週期發送,上圖大家可以看看它的格式,當然你們也可以自己抓包看看。


3、update


當BGP的peer互相發送了open報文,而且協商過了,便建立連接,這個跟IGP的特性很像,那麼現在我們想知道,update到底發送什麼內容,164104547.png先看看報文格式吧!


1、Unfeasible routes length 這個是可選的,意思是,當一臺BGPspoken路由器發現某網段不可達,因此它會主動(這個主動發現當然是鏈路層發現機制)爲這條網段發送一份更新報文,目地是撤銷這個路由條目在鄰接BGP表,爲什麼要主動發送撤銷呢?當然還是BGP的特性,增量更新。

2、path attributes BGP路由協議跟IGP最大的區別:它是根據各種屬性從而決定如何選擇最佳路由 每條路由條目有很多屬性,這些屬性有公認的,可選的,強制的,自由決定的等,每個屬性都是由三部分組成,第一部分是屬性類型,主要是說明這個屬性是公認的,可選的,還是其它,第二部分是屬性長度,表明這個屬性佔多少字節有一字節的和2個字節的,第三部分是屬性值,這個就是具體的屬性了,有AS路徑屬性、下一跳屬性、源頭等,詳細的大家可以查看相應的文檔說明。

3、NLRI 網絡層可達信息,這個是路由條目前綴。


(需要注意的地方是,一條更新報文只能攜帶一個NLRI,當然如果幾個NLRI的路徑屬性完全一樣,可以用一條更新報文去通告給peer)。


4、 notification報文

這個報文主要用來報錯的,比如兩個BGP spoken建立連接需要互相指neighbor和對應的AS號,如果指錯了,BGP鄰接關係是建立不起來的,會使用notification報文去報錯,給出相應的代碼類型,這個就有點類型icmp報文的機制。


下面上圖notification的報文格式



170115776.png








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章