天天看點

衆元教育H3CSE20200603班---BGP基本原理之一

引入

學習過路由協定的我們都知道,路由協定按管理能力範圍來分類的話分為内部網關路由協定----IGP以及外部網關路由協定----EGP。IGP裡面的OSPF、RIP、ISIS等協定想必我們都很熟悉或者了解了,今天來分享一下屬于外部網關路由協定的BGP協定(“路徑矢量”路由協定)

一、起源背景

在早期網絡規模優先,路由數量比較少的時候,所有路由器之間運作如RIP、OSPF等路由協定就可以滿足要求。但随着網絡規模的不斷擴大,路由數目的不斷增多,之前運作的路由協定不堪負重,是以産生了自治系統(Autonomous System,AS)的概念,也稱路由域。通過在域内運作内部路由協定學習和維護路由,在域間運作另外一種路由協定進行域間路由交換與管理的需求,推動産生了外部網關路由協定(Exterior Gateway Protocol,EGP)。但EGP設計非常簡單,不能滿足網絡管理的需求,以至于被邊界網關協定(Border Gateway Protocol,BGP)所取代。

二、BGP協定特性

1.BGP是一種外部網關協定,與OSPF、RIP等内部網關協定不同,BGP關心的重點不在于發現和計算路由,而在于AS之間傳遞路由資訊以及控制優化路由資訊。

2.BGP是一種“路徑矢量”路由協定,其路由資訊中攜帶了所經過的全部AS路徑清單。如果收到該路由資訊的BGP路由器發現該路由資訊的起源AS與自身的AS相同,則丢棄此條路由資訊,這樣從根本上避免了AS之間産生環路的可能性。

3.BGP被TCP協定封裝,端口号為179。BGP也通過TCP的可靠傳輸、重傳、排序等機制保證了BGP協定消息互動的可靠性。

4.BGP支援無類别域間路由(Classless Inter-Domain Routing,CIDR)和路由聚合,可以在一定程度上控制路由表的快速增長,并降低了路由查找的複雜度。

5.BGP與RIP協定有相同之處,同樣會将自己的全部路由資訊通告給自己的鄰居,但和RIP不同的地方在于,BGP隻在鄰居關系建立之後發送全部路由資訊,此後就算路由表有變化,也隻是發送增量部分給鄰居,而不是再次發送全部路由表給鄰居。這樣大大減少了帶寬的消耗,也降低了路由器CPU和記憶體資源的消耗。

6.BGP最重要的特性是豐富的路由屬性以及強大的路由過濾和路由政策。通過使用路由政策等方法來改變路由屬性,或根據路由更新資訊中的屬性來實作路由過濾和路由政策,使BGP能夠靈活地對路由進行選路和控制。

三、基本術語

衆元教育H3CSE20200603班---BGP基本原理之一
  • BGP發言者(BGP Speaker):運作BGP協定的路由器就是BGP發言者,它者接收或産生新的路由資訊,并釋出給其他的BGP發言者。如上圖,RTA、RTB、RTD、RTE都運作BGP協定,都釋出BGP消息,是以都是BGP發言者。
  • Router ID(RID):是一個32b的無符号整數,用來唯一辨別一台路由器。路由器如果運作BGP協定就必須存在Router ID,用以建立鄰居。Router ID可以由管理者手動指定或由協定自動選舉,一般都是由管理者手動指定。
  • BGP對等體(BGP Peer):互相之間存在TCP連接配接、互相交換路由資訊的BGP發言者之間互稱為對等體,也叫做BGP鄰居。如上圖,RTA和RTB互為對等體,RTB和RTD互為對等體。
衆元教育H3CSE20200603班---BGP基本原理之一
  • EBGP對等體(External BGP Peer):BGP對等體處于不同自治系統時,稱為EBGP對等體,也稱作EBGP鄰居。如上圖RTA是RTB的對等體,RTE是RTD的對等體。 從EBGP獲得的路由,會向所有的BGP對等體(包括EBGP和IBGP對等體)轉發,但不向原釋出者轉發。

注意:雖然BGP連接配接是基于TCP的,但通常情況下,BGP協定要求建立EBGP連接配接的路由器之間具有直連的實體鍊路(即EBGP預設TTL=1)。當然,若要建立RBGP連接配接的路由器之間不是實體直達的,也可以通過将TTL值改大(即允許它們之間經過實體多跳)來建立EBGP連接配接。

  • IBGP對等體(Internal BGP Peer):BGP對等體處于同一自治系統内,稱為IBGP對等體,也稱為IBGP鄰居。如上圖,RTB是RTD的IBGP對等體。從IBGP獲得的路由,不向它的對等體轉發。

注意:IBGP對等體不要求實體直連,隻要TCP可達,且在同一自治系統内,就可以建立IBGP對等體。

衆元教育H3CSE20200603班---BGP基本原理之一

雖然BGP是基于TCP的,但TCP是以點到點的方式來傳播封包的,是以BGP連接配接也隻能是點到點的方式。而BGP也是距離矢量路由協定,為了防止環路的産生,協定規定BGP發言者從IBGP獲得的路由資訊不能向其他的IBGP轉發。因而,要保證運作了BGP協定的AS内所有的路由器的路由資訊相同,就需要進行IBGP全連接配接。如上圖所示,若隻是進行部分連接配接,RTA從RTB學到的路由資訊不會釋出給RTC,這樣RTB和RTC就不能學到對方的路由,若進行了全連接配接,則可以互相學習路由。

三、BGP的消息及狀态機

1)五種消息

BGP擁有五種消息類型,分别是Open、Keepalive、Update、Notification以及Route-refresh。各個消息的具體作用如下圖所示:

衆元教育H3CSE20200603班---BGP基本原理之一

2)狀态機

衆元教育H3CSE20200603班---BGP基本原理之一
  1. Idle狀态(空閑狀态):此狀态為初始狀态,不接受任何BGP連接配接,等待start事件的産生。如果有start事件産生則系統開啟ConnectRetry定時器,向鄰居發起TCP連接配接,并将狀态變為Connect。
  2. Connect狀态(連接配接狀态):在Connect狀态,系統會等待TCP連接配接建立完成。如果TCP狀态為Established,則拆除ConnectRetry定時器,并發送Open消息,将狀态變為Open-sent;如果TCP連接配接失敗則重置ConnectRetry定時器并轉為Active狀态;如果ConnectRetry timer expired(重傳定時器)逾時,則重新連接配接,系統仍處于Connect狀态。
  3. Active狀态(活躍狀态):如果已經有啟動事件但TCP連接配接未完成則處于Active狀态。在Active狀态時,系統會響應ConnectRetry timer expired事件,重新進行TCP連接配接,同時重置ConnectRetry定時器,變為Connect狀态;如果與對方的TCP連接配接建立成功,則發送Open消息,将狀态變為Open-sent,并清除ConnectRetry定時器,重置HoldTime定時器。
  4. Open-sent狀态(Open消息已發送):此狀态表明系統已發送Open消息,在等待BGP鄰居發給自己的Open消息。如果收到BGP鄰居發來的Open消息且消息沒有錯誤,則轉向Open-Confirm狀态,同時将HoldTime定時器的值置為協商值,發送KeepActive消息并置KeepActive定時器;如果消息有錯誤,則發送Notification消息并斷開連接配接。
  5. Open-Confirm狀态(Open消息确認):此狀态表明系統已發出KeepActive消息,并等待BGP鄰居的KeepActive消息。如果收到KeepActive消息,則轉向Established狀态并重置HoldTime定時器;如果KeepActive定時器逾時,則重置并發送KeepActive消息;如果收到Notification消息,則斷開連接配接。
  6. Established狀态(連接配接建立):如果處于Established狀态,則說明BGP連接配接建立完成,可以發送Update消息交換路由資訊;如果KeepActive定時器逾時,則重置KeepActive定時器并發送KeepActive消息;如果收到KeepActive消息,則重置HoldTime定時器;如果檢測到錯誤或者收到Notification消息,則斷開連接配接。

注意:在除了Idle狀态外的其他五個狀态任何時候出現錯誤時,BGP狀态就都會退回到Idle狀态。

今天的分享先到這裡,内容雖少,但值得深敲,歡迎留言讨論。

繼續閱讀