運(yùn)營商或大型網(wǎng)絡(luò)中的BGP協(xié)議,一分鐘了解下BGP基礎(chǔ)知識
一、了解BGP協(xié)議
BGP 是一種路徑矢量路由協(xié)議,用于傳輸自治系統(tǒng)間的路由信息,BGP 在啟動的時候傳播整張路由表,以后只傳播網(wǎng)絡(luò)變化的部分觸發(fā)更新它采用 TCP 連接傳送信息,端口號為 179 在 Internet 上,BGP 需要通告的路由數(shù)目極大,由于 TCP 提供了可靠的傳送機(jī)制,同時 TCP 使用滑動窗口機(jī)制,使得 BGP 可以不斷地發(fā)送分組,而無需像 OSPF 或 EIGRP 那樣停止發(fā)送并等待確認(rèn)。
1. 使用 BGP 一般有如下情況:
- 一個 AS 允許包穿越它,到達(dá)其他的 AS
- 一個 AS 連接多個 AS
- 必須對數(shù)據(jù)流進(jìn)入和離開 AS 進(jìn)行控制
2. 不使用 BGP 一般有如下情況:
- AS 只有一個出口
- AS 的所有出口均為 1 個 ASP
- 路由性能不高,內(nèi)存較小,CPU 較慢,帶寬不大
3. 認(rèn)識BGP AS-Path
BGP 是路徑矢量協(xié)議,它使用一個 AS 號列表,數(shù)據(jù)包必須通過這些 AS 才能到達(dá)目的,同時對產(chǎn)生的 AS-path 做一定的策略。AS-Path 對于路由環(huán)路非常容易檢測到,如果路由器接受到一條含有本地 AS 號的 AS-path,說明出現(xiàn)環(huán)路。BGP 沒有給出每個 AS 域內(nèi)的拓?fù)浣Y(jié)構(gòu),因此 BGP 只能看到 AS 樹,而 IGP 只能看到 AS 域內(nèi)拓?fù)浣Y(jié)構(gòu).
- R2>show ip bgp//查看路由表
當(dāng)某個特殊目的網(wǎng)絡(luò)有并列的,等開銷的路徑時,Cisco 缺省執(zhí)行 EBGP 只選擇一條路徑,但可以使用 maximum-paths改變并行路徑缺省的最大數(shù)目,但僅對 EBGP 有效
二、BGP消息類型
1. Open
TCP 對話建立以后,兩個鄰居都要發(fā)送一個 Open 消息,每個鄰居都用該消息來標(biāo)示自己,并規(guī)定自己的 BGP 運(yùn)行參數(shù)。
- BGP version:它明確了發(fā)起者正在運(yùn)行的 BGP 版本號(2,3,4),可以通過 neighbor version 修改,缺省版本號為 4。如果版本號不相同,路由器將自動降低版本號重發(fā) Open 消息,直到版本一致
- AS number:發(fā)起會話路由器的 AS 號,用于確認(rèn) EBGP 或者 IBGP 會話
- Hold time:路由器必須收到一個 keepalive 或者更新消息之前允許經(jīng)過的最大秒數(shù)。Holdtime 必須是 0(在這種情況下,必須是沒有發(fā)送 Keepalive)或者至少 3s Cisco 默認(rèn)的 holdtime 為 180s,如果兩個鄰居間 holdtime 不一致,選較短的那個做為兩者可接受的時間
- BGP router-ID:選取方式和 OSPF 相同,使用數(shù)值最大的 loopback 口地址,沒有 loopback 則使用物理接口上數(shù)值最大的地址
- Optional parameters:用于一些可選功能的支持.例如鑒別,多協(xié)議支持及路由刷新等
2. Keepalive
如果路由器接受了他在鄰居的 Open 消息中的參數(shù),它就會發(fā)送一個應(yīng)答的 Keepalive 消息。
默認(rèn)情況 Keepalive 間隔 60s,或者是達(dá)成一致的保持時間的 1/3
3. Update
Update message 用來公布可用的路由,撤銷的路由或者兩者兼顧Network Layer Reachability Information (NLRI)用來公布 IP 地址前綴和前綴長度的字節(jié)組,例如<19,198.24.160.0>Path Attributes該屬性為 BGP 提供了選擇最短路徑,檢查到路由環(huán)路以及決定路由策略的信息Withdrawn Routes用來描述已經(jīng)變成不可達(dá)并正從業(yè)務(wù)中撤銷的目的地址字節(jié)組(長度和前綴)雖然 NLRI 字段可以包含多個前綴,但每一個更新消息只描述一條 BGP 路由(因?yàn)槁窂綄傩灾幻枋鲆粭l路徑,但該路徑可能會到達(dá)多個目的地)
4. Notification
當(dāng)檢測到差錯的時候就會發(fā)送 Notification 消息,通常會導(dǎo)致 BGP 連接終止。