BGP的前身EGP設計非常簡單,隻能在AS之間簡單的傳遞路由資訊,不會對路由進行任何優選,也沒有考慮如何在AS之間避免路由環路等問題,因而EGP最終被BGP取代;相比于EGP,BGP更具有路由協定的特征,比如鄰居的發現和鄰居關系的建立;路由的擷取,優選和通告;提供路由環路避免機制,并能夠高效傳遞路由,維護大量的路由資訊;在不完全信任的AS之間提供豐富的路由控制能力;
前文我們了解了路由注入帶來的問題以及解決方案相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15362604.html;今天我們來學習下新的路由協定BGP;
BGP簡介
BGP的前身EGP設計非常簡單,隻能在AS之間簡單的傳遞路由資訊,不會對路由進行任何優選,也沒有考慮如何在AS之間避免路由環路等問題,因而EGP最終被BGP取代;相比于EGP,BGP更具有路由協定的特征,比如鄰居的發現和鄰居關系的建立;路由的擷取,優選和通告;提供路由環路避免機制,并能夠高效傳遞路由,維護大量的路由資訊;在不完全信任的AS之間提供豐富的路由控制能力;
AS簡介
在EGP(exterior gateway protocol,外部網關協定)協定中,引入了AS(autonomous system,自治系統)的概念;所謂AS就是指有同一個技術管理機構管理,使用統一選路政策的一些路由器的集合;ASN(as number,AS編号),主要用來區分不同AS,除了能辨別不同自治系統外,它在BGP中還有關鍵性作用,比如最佳路由的選舉、環路避免、路由過濾;;AS的内部使用IGP(interior gateway protocol,内部網關協定)來計算和發現路由,比如ospf,RIP,IS-IS等;同一個AS内部的路由器之間是互相信任的,是以IGP的路由計算和資訊泛洪完全處于開放狀态,人工幹預很少;即IGP建立鄰居,發送hello包,計算路由,發現路由都是自動的,隻要配置好對應的動态路由協定以後,建立鄰居,發送hello包,計算路由等一系列操作都是自動的;對于不同AS之間的連接配接需求推動了外部網關協定的發展,BGP作為一種外部網關協定,用于在AS之間進行路由控制和優選;使用BGP作為傳遞路由的協定,則使用者的路由域被作為一個整體和其他路由與進行路由交換,這個路由域就是AS;AS的概念是若幹台路由器以及這些路由器組成的網絡集合,這些路由器均屬于同一管理機構,并執行統一的路由政策;運作BGP協定需要一個統一的自治系統号來辨別路由域,即AS編号;每個自治系統都有一個唯一的編号,這個編号由IANA(The Internet Assigned Numbers Authority,網際網路數字配置設定機構)配置設定;2009年1月之前,隻能使用最多2位元組長度的AS編号,即AS編号範圍為0-65535,0和65535是保留;其中1-64511為公有AS,64512-65534為私有AS;在2009年1月以後,IANA決定使用4直接長度AS,範圍是65536-4294967295;
常見AS号及查詢網站
中國電信163(4134)、中國電信CN2(4809)、中國網通(9929);AS資訊查詢網站:https://whois.cnnic.cn/WhoisServlet;https://ip.sb/iana-asn/;檢視自己屬于哪個AS:https://ip.sb/;
BGP的基礎作用
提示:如上圖所示,BGP主要用于多個AS之間傳遞和控制路由資訊;AS内部使用IGP來計算和發現路由,如ospf,IS-IS,RIP等;
BGP協定特點
提示:如上圖所示,BGP可以可以跨越多跳路由器建立鄰居關系;因為BGP是在AS之間傳遞路由,為保證資料的可靠性,BGP使用TCP作為其承載協定建立連接配接(主要是TCP可靠),是以與IGP逐跳路由器建立鄰居不同,BGP可以跨越多跳路由器建立鄰居關系;AS之間的路由器是不完全互相信任的,為實作路由按需求進行控制和優選,BGP設計了諸多屬性;BGP是路徑矢量協定,工作在TCP的179端口;僅支援增量式、觸發式更新,它沒有周期更新,提供定期存活消息驗證TCP連接配接,即心跳包(keepalived)來檢測鄰居的存活,預設心跳包是每60秒發送一次,如果在3個周期都沒有收到對方的心跳,此時對應BGP路由器就會認為對方挂了,即鄰居斷開;豐富的度量标準,即路徑矢量或屬性;專為大型網際網路而設計,優于距離矢量協定;
為什麼要使用BGP呢?
1、大量路由需要承載,IGP隻能容納千跳,而BGP可以容納上萬條路由;
2、支撐MPLS/VPN的應用,傳遞客戶VPN路由;
3、政策能力強,可以很好的實作路由決策與資料控制;
BGP鄰居概述
BGP Speakers:指運作BGP協定的路由器;
BGP Peers:指BGP鄰居或者BGP對等體;
鄰居關系建立在TCP連接配接的基礎上,是以鄰居不一定需要直連,可以通過IGP或靜态路由來提供TCP連接配接的可達性;BGP建立鄰居和IGP不同,IGP需要鄰居直連(P2P除外,它可以不直連,但一般不推薦),使用多點傳播,單點傳播建立鄰居,而BGP隻能單點傳播建立鄰居;鄰居必須手動指定,而非自動建立;建立鄰居和IGP也不同,IGP協定隻要配置好,對應鄰居會自動發現,自動建立,而BGP必須手動指定,怎麼建立鄰居,和誰建立鄰居;一台BGP路由器隻能運作在一個AS内;這個AS我們可以類比ospf裡的區域,對于BGP路由器來說,它隻能屬于一個AS,不像ospf一台路由器可以同時屬于多個區域;
BGP鄰居類型
提示:如上圖所示,運作在相同AS内的BGP路由器建立的鄰居關系為IBGP(Internal BGP)鄰居;運作在不同AS之間的BGP路由器建立的鄰居關系為EBGP(External BGP)鄰居;
BGP基礎配置
實驗:如下拓撲,配置BGP鄰居
分析:R1和R2在同一個AS内部,是以R1和R2他們建立IBGP鄰居,而R2和R3他們處于不同AS,是以R2和R3隻能建立EBGP鄰居;
配置好各路由器的接口ip位址
R1的配置
R2的配置
R3的配置
在R1上配置BGP,指定R2為R1的鄰居
提示:bgp 12後面的數字是指對應bgp所在as的編号,這個和IGP裡面配置不同,IGP後面的數字是指對應程序号;其次手動指定鄰居需要指定對應鄰居的ip位址,以及鄰居所屬as編号;這樣配置以後,R1就會向R2的12.0.0.2的179端口發起TCP三向交握,握手成功以後,開始建立鄰居;
在R1上抓包
提示:可以看到R1向R2的179端口發送請求連接配接,但對方一直不搭理R1,是以導緻R1的請求連接配接包一直被重置;其原因是R2上沒有運作bgp,當然179端口也沒有處于監聽,是以R1一直不能建立連接配接;
在R2上配置BGP,并指定鄰居為R1
檢視R1上的抓包
提示:可以看到當R2配置好bgp,并指定鄰居以後,對應R1TCP三向交握就成功了,對應成功以後,R1向R2發送open包,R2回複R1确認包;對應R2也會向R1發送tcp三次握手,握手成功以後,R2向R1發送open包,R1向R2發送open包,然後R1向R2發送心跳包,R2向R1發送心跳包,R1回複R2确認包;通過上述抓包過程可以看到,雙方都需要建立TCP三向交握,并且建立成功以後,對應發送open包和心跳包;對應鄰居建立成功;
驗證:在R1檢視bgp鄰居
提示:可以看到在R1上能夠檢視到和R2建立起鄰居關系,對應狀态為established;這個狀态就表示連接配接準備就緒,建立起TCP連接配接;
驗證:在R2上檢視bgp鄰居
配置router id
提示:router id和ospf裡的router id一樣,用于辨別bgp路由器;在配置過程中,如果我們沒有配置,它也會自動選舉,選舉規則同ospf一樣;這裡還需要注意一點,bgp裡更改router id會導緻鄰居宕掉,是以建議在規劃好網絡前配置好router id ;
配置R2和R3建立鄰居
配置R3的鄰居為R2
提示:上述指令表示指定鄰居為23.0.0.3,對應鄰居所在as編号為3;
在R3上配置鄰居為R2
驗證:R2和R3的鄰居
提示:可以看到R2和R3也正常建立好鄰居;後續我們就可以在對應bgp路由器裡宣告網絡;
作者:Linux-1874
出處:https://www.cnblogs.com/qiuhom-1874/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利.