IGP / EGP基礎
- 1. 内部網關協定(IGP)
-
- 1.1 RIP
-
- 1.1.1 路徑成本
- 1.1.2 路由資料庫
- 1.1.3 運作過程
- 1.1.4 防環機制
- 1.2 OSPF
-
- 1.2.1 特點
- 1.2.2 封包類型
- 1.2.3 LSA類型
- 1.2.4 區域
- 1.2.5 路由器類型
- 1.2.6 路由器ID
- 1.2.7 計算過程
- 1.2.8 網絡類型
- 1.2.9 DR/BDR
- 1.3 OSPFv3
-
- 1.3.1 與OSPFv2的相同點
- 1.3.2 與OSPFv2的不同點
- 1.4 IS-IS
-
- 1.4.1 術語概念
- 1.4.2 IS-IS位址
- 1.4.3 NET
- 1.4.4 IS-IS區域
-
- 1.4.4.1 Level-1 路由器
- 1.4.4.2 level-2 路由器
- 1.4.4.3 Level-1-2 路由器
- 1.4.5 IS-IS拓撲結構
- 1.4.6 路由滲透
- 1.4.7 IS-IS網絡類型
- 1.4.8 DIS和僞節點
- 1.4.9 IS-IS封包
- 1.4.10 IPv6 IS-IS
- 2. 外部網關協定(EGP)
-
- 2.1 邊界網關協定(BGP)
-
- 2.1.1 特點
- 2.1.2 BGP發言者和BGP對等體
- 2.1.3 BGP的消息類型
- 2.1.4 BGP的路由屬性
- 2.1.5 BGP的選路規則
- 2.1.6 BGP釋出路由的政策
- 2.1.7 BGP負載分擔
- 2.1.8 大規模BGP網絡所遇問題的解決方法
- 2.1.9 MP-BGP
- 3. 總結
1. 内部網關協定(IGP)
IGP(内部網關協定)是在一個自治網絡内網關(主機和路由器)間交換路由資訊的協定。路由資訊能用于網間協定(IP)或者其它網絡協定來說明路由傳送是如何進行的。IGP協定包括RIP、OSPF、IS-IS、IGRP、EIGRP。
内部網絡協定一般分為:距離矢量路由協定 和 鍊路狀态路由協定
1.1 RIP
RIP(Routing Information Protocol,路由資訊協定),是一種基于距離矢量算法的内部網關協定,通過UDP封包進行路由資訊交換,端口520,适用于小型網絡。
1.1.1 路徑成本
RIP的路徑成本是跳數,衡量到達目的位址的距離。在RIP中,路由器到與他直接相連網絡的跳數為0,通過一個路由器可達的網絡跳數為1,以此類推。為了限制收斂時間,路徑成本規定取0-15之間的整數,大于或等于16的跳數被定義為無窮大,即目的網絡或主機不可達。也是由于路徑成本的限制,是以RIP不适用于大型網絡。
1.1.2 路由資料庫
每個允許的RIP路由器管理一個路由資料庫,包含:
- 目的位址:主機或網絡的位址
- 下一跳位址:為了到達目的地,需要經過的相鄰路由器的接口IP位址
- 出接口:本路由器轉發封包的出接口
- 路徑成本:本路由器到達目的地的開銷
- 路由時間:從路郵箱最後一次被更新到現在所經過的時間,路由項每次被跟新時,路由時間會被重置為0。
- 路由标記:用于辨別外部路由,在路由政策中可根據路由标記對路由資訊進行控制。
1.1.3 運作過程
- 路由器啟動RIP後,立即向相鄰的路由器發送請求封包,相鄰的RIP路由器收到請求封包後,響應請求,回送包含本地路由表資訊的響應封包。
- 路由器收到響應封包後,更新本地路由表,同時向相鄰路由器發送觸發更新封包,通告路由更新資訊。相鄰路由器收到觸發更新封包後,又向各自的相鄰路由器發送觸發更新封包,在一連串的觸發更新廣播後,網絡中各個路由器都能得到并保持最新的路由資訊。
- 路由器周期性的向相鄰路由器發送本地路由表,運作RIP協定的相鄰路由器在收到封包後,對本地路由進行維護,選擇一條最佳路由,再向各自相鄰網絡發送更新資訊,使更新的路由最終能達到全局有效。同時RIP采用老化機制對超市路由表進行老化處理,保證路由實時性和有效性。
1.1.4 防環機制
- 計數到無窮:将路徑成本大于或者等于16的路由定義為不可達。環路發生時路徑成本會增加到16,進而被認為不可達。這種方法其實不是根本上阻止了環路的發生,而是在環路發生的情況下,達到峰值則停止環路。
- 觸發更新:RIP通過觸發更新來避免多個路由之間形成路由環路而且可以加速網絡收斂速度。一旦某條路由的路徑成本發生了變化,就立即向鄰居路由釋出更新封包,而不是等待更新周期。
- 水準分割:RIP從某個接口學到的路由,不會從該接口發回給鄰居路由。可以減少帶寬消耗和阻止環路。舉例來說,路由器A從GE0/0/1接收到來自路由器B 的觸發更新封包,那麼路由器A就不會将資訊通過GE0/0/1發回給路由器B。
- 毒性逆轉:RIP從某個接口學到路由後,将該路由的路徑成本設定為16,并從接口發回鄰居路由。這樣可以清除對方路由表中的無用資訊。
1.2 OSPF
OSPF(Open Shortest Path First,開放最短路勁優先),是一種基于鍊路狀态的内部網關協定。
1.2.1 特點
- 适應範圍廣:支援各式規模的網絡,最多可以支援數百台路由器
- 快速收斂:在網絡拓撲結構發生變化後立即更新封包,使這一變化在自治系統中同步
- 無自環:由于OSPF根據收集到的鍊路狀态用最短路徑樹算法計算路由,保證沒有自環
- 區域劃分:允許自治系統的網絡被劃分成區域進行管理。路由器鍊路狀态資料庫的減小降低了記憶體消耗和CPU負擔;區域間傳送路由資訊的減少降低了網絡帶寬的占用。
- 等價路由:支援到同一目的位址的多條等價路由
- 路由分級:使用4類不同的路由,按照優先順序分别是——區域内路由、區域間路由、第一類外部路由、第二類外部路由
- 支援驗證:支援基于區域和接口的封包驗證,以保證封包互動和路由計算的安全性
- 多點傳播發送:在某些類型的鍊路上以多點傳播位址發送協定封包,減少對其他裝置的幹擾
1.2.2 封包類型
OSPF封包直接封裝成IP封包,協定号89
- Hello封包:周期發送,用來發現和維持OSPF鄰居關系,以進行DR/BDR選舉
- DD(Database Description,資料庫描述),描述本地LSDB(Link Stat DataBase,鍊路狀态資料庫)中的每條LSA(Link State Advertisement,鍊路狀态通告)的摘要
- LSR(Link State Request, 鍊路狀态請求)封包:向對方請求所需要的LSA。兩台路由器互相交換DD封包之後,得知對端的路由器有哪些LSA是本地的LSDB所缺少的,這時需要發送LSR封包向對方請求所需要的LSA。
- LSU(Link State Update,鍊路狀态更新)封包:向對方發送所需要的LSA
- LSAck(Link State Acknowledgement,鍊路狀态确認)封包:用來對收到的LSA進行确認。
1.2.3 LSA類型
OSPF中對鍊路狀态資訊的描述都是封裝在LSA中釋出出去,常用的LSA有以下幾種類型:
- Router LSA(Type-1):由每個路由器産生,描述路由器的鍊路狀态和開銷,在其始發的區域内傳播。
- Network LSA(Type-2):由DR産生,描述本網段所有路由器的鍊路狀态,在其始發的區域内傳播。
- Network Summary LSA(Type-3):由ABR(Area Border Router,區域邊界路由器)産生,描述區域内某個網段的路由,并通告給其他區域。
- ASBR Summary LSA(Type-4):由ABR産生,描述到ASBR(Autonomous System Boundary Router,自治系統邊界路由器)的路由,通告給相關區域。
- AS External LSA(Type-5):由ASBR産生,描述到AS(Autonomous System,自治系統)外部的路由,通告到所有的區域(除了Stub區域和NSSA區域)。
- NSSA External LSA(Type-7):由NSSA(Not-So-Stubby Area)區域内的ASBR産生,描述到AS外部的路由,僅在NSSA區域内傳播。
- Opaque LSA:用于OSPF的擴充通用機制,目前有Type-9、Type-10和Type-11三種。其中,Type-9 LSA僅在本地鍊路範圍進行泛洪,用于支援GR(Graceful Restart,平滑重新開機)的Grace LSA就是Type-9的一種類型;Type-10 LSA僅在區域範圍進行泛洪,用于支援MPLS TE的LSA就是Type-10的一種類型;Type-11 LSA可以在一個自治系統範圍進行泛洪。
1.2.4 區域
-
區域劃分
當一個大型網絡中所有路由器都運作OSPF時,LSDB會占用大量儲存空間,增加算法複雜度,CPU負擔加重。
而且大規模的網絡中,拓撲結構發生變化也是很常見的,網絡會處于頻繁的“震蕩”,造成大量OSPF協定在網絡中傳遞,降低了帶寬使用率。
是以OSPF将自治系統中分成不同區域進行管理。從邏輯上将路由器劃分為不同組,每個組用區域号辨別。區域邊界是路由器,而不是鍊路。每個運作的OSPF接口都必須指明屬于哪個區域。劃分區域後,可以在區域邊界路由器上進行路由聚合,以減少通告到其他區域的LSA數量,也可以将拓撲變化帶來的影響減少到最小。
-
骨幹區域(Backbone Area)
當OSPF區域劃分後,并非所有區域都是平等的,其中有一個區域号為0的區域,通常被稱為骨幹區域,負責區域之間的路由,所有非骨幹區域之間的路由資訊必須通過骨幹區域轉發。對此,OSPF有兩個規定:
a. 所有非骨幹區域必須與骨幹區域保持連通
b. 骨幹區域自身也必須保持連通
如果由于限制無法滿足,可以使用OSPF需連接配接解決
-
虛連接配接(Virtual Link)
虛連接配接是指兩台ABR之間通過一個非骨幹區域建立一條邏輯上的連接配接通道,它的兩端必須是ABR,必須在兩端同時設定才能生效,為虛連接配接兩端提供一條非骨幹區域内部路由的區域稱為傳輸區(Transit Area)。
虛連接配接相當于在兩個ABR之間形成了一個點到點的連接配接,除了建立邏輯上的連接配接通道之外,還能提供備援的備份鍊路,當骨幹區域鍊路故障而不能連通時,通過虛連接配接仍然可以保證邏輯上的連通性。
- Stub區域和Totally Stub區域
- NSSA區域和Totally NSSA區域
1.2.5 路由器類型
-
區域内路由器(Internal Router)
路由器所有接口都屬于同一個OSPF
-
區域邊界路由器ABR
路由器可以屬于兩個或以上的區域,但是其中一個必須是骨幹區域,ABR用來連接配接骨幹區域和非骨幹區域,可以是實體連接配接也可以說邏輯連接配接
-
骨幹路由器
至少有一個接口屬于骨幹區域。是以所有的ABR和區域0路由器都屬于骨幹路由器
-
自治系統邊界路由器ASBR
與其他AS交換路由資訊的路由器稱為ASBR,ASBR的位置不固定 ,隻要這台路由器引入了外部路由資訊,就是ASBR。
1.2.6 路由器ID
路由器允許OSPF協定之前,必須存在Router ID。擷取方式有三種:
-
手動指定
使用者建立OSPF的時候指定Router ID,配置時必須保證任意兩台路由器的ID不同,通常将Router ID設定為Loopback接口的IP位址
-
自動擷取
規則如下:
a. OSPF程序啟動,将選取第一個運作該程序的接口的主IPv4位址作為Router ID
b. 裝置重新開機時,OSPF将會選取第一個運作本接口的主IPv4位址作為RouterID
c. OSPF程序重新開機時,将從運作了本程序的所有接口的主IPv4位址中重新擷取Router ID。規則:
- 如果存在配置IP的Loopback接口,則選擇LoopBack接口位址中最大的作為router ID - 否則,從其他接口的IP位址中選擇最大的作為Router ID(忽略UP/DOWN狀态)
-
全局Router ID
如果在建立OSPF程序的時候沒有指定Router ID,則預設使用全局Router ID,
1.2.7 計算過程
同一個區域内,OSPF路由的計算過程如下:
- 每台OSPF路由器根據自己周圍的網絡拓撲結構生成LSA,并通過更新封包将LSA發送給網路中的其他OSPF路由器。
- 每台OSPF路由器都會收集其他路由器通告的LSA,所有的LSA放在一起就組成了LSBD,LSA是對路由器周圍網絡拓撲結構的描述,LSDB是對整個自治系統的網絡拓撲進行描述。
- OSPF路由器将LSDB轉換成一張帶權有向圖,這張圖是對網絡拓撲結構的真實反映。所有路由器的有向圖是完全相同的。
- 每台路由器根據有向圖,使用SPF算法計算出一顆以自己為root節點的最短路徑樹,這棵樹給出了到自治系統中各個節點的路由。
也就是說OSPF的組建限制就是區域,在同一個區域内的所有路由器所儲存的有向圖都是一緻的,協定條件就是運作時儲存的有向圖,相當于在路由器内儲存了路徑圖,然後通過SPF(Shortest Path First,最短路徑優先)計算轉發路徑。
1.2.8 網絡類型
-
廣播(Broadcast)
當鍊路層協定是Ethernet、FDDI是,預設情況下,OSDF網絡預設是廣播類型,在這類中,通常以多點傳播形式發送Hello封包、LSU和LSAck,以單點傳播形式發送DD和LSR
-
NBMA
NBMA(Non-Broadcast Muti-Access,非廣播多路通路)類型:當鍊路層協定是幀中繼、ATM或者X.25時,預設情況下,OSPF網絡預設是NBMA,以單點傳播形式發送協定封包。
-
P2P
P2P(Point to Point,點到點)類型:當鍊路層協定是PPP、HDLC時,預設情況下,OSPF認為網絡類型是P2P。以多點傳播形式(224.0.0.5)發送協定封包
-
P2MP
P2MP(Point to MultiPoint,點到多點)類型:這種類型必須強制更改,通常将NBMA網絡改為P2MP網絡。預設情況下,以多點傳播形式(224.0.0.5)發送協定封包,也可以根據使用者需求,以單點傳播形式發送協定封包。
注意:
- OSPF路由器的預留IP多點傳播位址是224.0.0.5,OSPF DR/BDR的預留IP多點傳播位址是224.0.0.6
- NBMA網絡是全連通的,P2MP網絡并不需要一定是全連通的。
- NBMA網絡中需要選舉DR與BDR;P2MP網絡中沒有DR和BDR
- NBMA網絡采用單點傳播發送封包,需要手工配置鄰居;P2MP網絡采用多點傳播港式發送封包,通過配置也可以采用單點傳播發送。
1.2.9 DR/BDR
在OSPF廣播網絡中,任意兩條路由器之間都需要交換路由資訊,如果網絡中有n台路由器,就需要建立n*(n-1)/2個鄰接關系。這使得任何一台路由器的路由變化都會導緻多次傳遞,很複雜。是以提出了DR的概念,簡單來說,DR是路由器的管理者,所有路由器的變化都将發送給DR,然後由DR将整個網絡的鍊路狀态轉發給所有路由器。
BDR是DR的一個備份,在選舉DR的同僚也會選舉BDR。BDR也和本網段内的所有路由器建立鄰接關系并交換路由資訊。一旦DR失效,BDR立即成為新的DR代替工作。
選舉:
DR/BDR是由同一網段中所有的路由器根據路由器優先級和Router ID通過Hello封包選舉的,隻有優先級大于0的才有選舉資格。
進行選舉時,每台路由器将自己選出的DR寫入Hello封包中,發給網段上每台運作OSPF協定的路由器。當處于同一網段的兩台路由器同時宣布自己是DR時,路由級别高者勝出,如果優先級相等,則Router ID大的勝出。
注意!
1. 隻有廣播或者NBMA網絡中才會選舉DR;在P2P、P2MP網絡中不需要選舉DR。
2. DR是某網段中的概念,是針對路由器的接口而言,某台路由器在一個接口上可能是DR,另一個接口上可能是BDR或者是DR other。
3. DR/BDR選舉後,不會因為新加入裝置而重新選舉,哪怕新加入的裝置有更高優先級,是以DR并不一定是路由器優先級最高的,同理,BDR也不一定就是路由器優先級次高的路由器接口
1.3 OSPFv3
通常說的OSPF協定指得是OSPFv2,主要提供對IPv4的支。OSPFv3,是OSPF版本3的簡稱,主要提供的對IPv6的支援。
1.3.1 與OSPFv2的相同點
- Router ID, Area ID仍然是32位
- 相同類型的五種封包
- 相同的鄰居發現機制和鄰接形成機制
- 相同的LSA擴散機制和老化機制
1.3.2 與OSPFv2的不同點
- OSPFv3基于鍊路運作;OSPFv2基于網段運作。在配置OSPFv3時,不需要考慮是否配置在同一網段,隻要在同一鍊路中,就可以直接建立連接配接關系。
- OSPFv3在同一條鍊路上可以運作多個執行個體,即一個接口可以使用多個OSPFv3程序(不同執行個體)
- OSPFv3通過RouterID辨別鄰居,OSPFv2通過IPv4辨別鄰居。
1.4 IS-IS
IS-IS(Intermediate System-to-Intermediate System,中間系統到中間系統),是一種鍊路狀态協定,使用SPF(最短路徑優先)算法進行路由計算
1.4.1 術語概念
- IS(Intermediate System):中間系統。相當于TCP/IP中的路由器,是IS-IS協定中生成路由和傳播路由資訊的基本單元。通常所說的IS和路由器具有相同的含義。
- ES(End System):終端系統。相當于TCP/IP中的主機系統,ES不參與IS-IS路由協定的處理,ISO使用專門的ES-IS協定定義終端與中間系統的通信。
- RD(Routing Domain):路由域。在一個路由域中多個IS通過相同的路由協定交換資訊。
- Area:區域。路由域的細分單元,IS-IS允許将整個路由域分為多個區域。
- LSDB(Link State Database):鍊路狀态資料庫。網絡内所有鍊路的狀态組成了鍊路狀态資料庫。在每個IS中都至少有一個LSDB。IS使用SPF算法,利用LSDB來生成自己的路由。
- LSPDU(Link State Protocol Data Unit):鍊路狀态協定資料單元,簡稱LSP。在IS-IS中,每個IS都會生成LSP,此LSP包含了本IS的所有鍊路狀态資訊。
- NPDU(Network Protocol Data Unit):網絡協定資料單元,是OSI中的網絡層協定封包,相當于TCP/IP中的IP封包。
- DIS(Designated IS):廣播網絡上選舉的指定中間系統,也可以稱為指定IS。
- NSAP(Network Service Access Point):網絡服務接入點,即ISO中網絡層的位址,用來辨別一個抽象的網絡服務通路點,描述OSI模型的網絡位址結構。
1.4.2 IS-IS位址
NSAP由IDP(Initial Domain Part)和DSP(Domain Specific Part)組成:
IDP1 | IDP2 | DSP1 | DSP2 | DSP3 |
---|---|---|---|---|
AFI | IDI | HO-DSP | System ID (6 octet) | SEL (1 octet) |
IDP部分是ISO規定的,它由AFI(Authority and Format Identifier)和IDI(Initial Domain Identifier)兩部分組成:
- AFI辨別位址配置設定機構和位址格式
-
IDI用來辨別域
DSP由HO-DSP(High Order Part of DSP)、System ID和SEL三個部分組成:
- HO-DSP用來分割區域
- System ID用來區分主機
-
SEL有時也能攜程N-SEL(NSAP Selector),它的作用類似IP中的“協定辨別符”,用于訓示服務類型,不同的傳輸協定對應不同的SEL。
IDP和DSP的長度都是可變的,NSAP總長最多20位元組,最少8位元組。
IS-IS位址結構由以下三部分組成:
-
區域位址
IDP、DSP和HO-DSP一起,既能辨別路由域,也能辨別路由域中的區域,被稱為區域位址。兩個不同的路由域中不允許有相同的區域位址。
一般情況下,一台路由器隻需要配置一個區域位址,且同一區域中所有節點的區域位址都要相同。為了支援區域的平滑合并、分割及轉換,一台路由最多可以配置3個區域位址。
-
System ID
System ID用來在區域内唯一表示主機或者路由器,固定長度48比特。
一般使用Router ID和System ID對應。假設一台路由器使用接口Loopback0的IP位址168.10.1.1作為Router ID,則它在IS-IS使用的System ID可通過如下方式轉換:
- 将IP位址168.10.1.1的每一部分擴充為3位,不足三位的用0補足
168.010.001.001
- 将羅戰後的位址重新劃分為3部分,每部分4個數字組成,得到System ID
1680.1000.1001
- 将IP位址168.10.1.1的每一部分擴充為3位,不足三位的用0補足
-
SEL
SEL用于訓示服務類型,不同的傳輸協定對應不同的SEL,固定為8比特,在IP中,SEL均為00
1.4.3 NET
NET(Network Entity Title,網絡實體名稱)訓示的是IS本身的網絡層資訊,不包括傳輸層資訊,可以看作是一類特殊的NSAP,即SEL為0的NSAP位址。是以,NET的長度與NSAP的相同,為8~20個位元組。
NET由三部分組成:
- 區域ID:它的長度是可變的,為1~13個位元組。
- System ID:用來在區域内唯一辨別主機或路由器,它的長度固定為6個位元組。
-
SEL:為0,它的長度固定為1個位元組。
例如NET為:ab.cdef.1234.5678.9abc.00,則其中區域ID為ab.cdef,System ID為1234.5678.9abc,SEL為00。
通常情況下,一台路由器配置一個NET即可,當區域需要重新劃分時,例如将多個區域合并,或者将一個區域劃分為多個區域,這種情況下配置多個NET可以在重新配置時仍然能夠保證路由的正确性。由于一台路由器最多可配置3個區域位址,是以最多也隻能配置3個NET。在配置多個NET時,必須保證它們的System ID都相同。
1.4.4 IS-IS區域
為了支援大規模的路由網絡,IS-IS在路由域内采用兩級的分層結構。一個大的路由域通常被分成多個區域(Areas)。一般來說,我們将Level-1路由器部署在區域内,Level-2路由器部署在區域間,Level-1-2路由器部署在Level-1路由器和Level-2路由器的中間。
1.4.4.1 Level-1 路由器
Level-1路由器負責區域内的路由,它隻與屬于同一區域的Level-1和Level-1-2路由器形成鄰居關系,維護一個Level-1的LSDB,該LSDB包含本區域的路由資訊,到區域外的封包轉發給最近的Level-1-2路由器。
屬于不同區域的Level-1路由器不能形成鄰居關系。
1.4.4.2 level-2 路由器
Level-2路由器負責區域間的路由,可以與同一區域或者其他區域的Level-2和Level-1-2路由器形成鄰居關系,維護一個Level-2的LSDB,該LSDB包含區域間的路由資訊。所有Level-2路由器和Level-1-2路由器組成路由域的骨幹網,負責在不同區域間通信,骨幹網必須是實體連續的。
Level-2路由器是否形成鄰居關系與區域無關。
1.4.4.3 Level-1-2 路由器
同時屬于Level-1和Level-2的路由器稱為Level-1-2路由器,可以與同一區域的Level-1和Level-1-2路由器形成Level-1鄰居關系,也可以與同一區域或者其他區域的Level-2和Level-1-2路由器形成Level-2的鄰居關系。Level-1路由器必須通過Level-1-2路由器才能連接配接至其他區域。Level-1-2路由器維護兩個LSDB,Level-1的LSDB用于區域内路由,Level-2的LSDB用于區域間路由。
1.4.5 IS-IS拓撲結構
在IS-IS網絡中,骨幹區域中的所有路由器均是L2路由器,其他區域直接連接配接在骨幹區域的路由器是L1/L2路由器,其他都是L1路由器
另外,IS-IS網絡中也可以有不明确的骨幹區域,在這種情況下所有L2和L1/L2路由器構成了IS-IS的骨幹網絡。
1.4.6 路由滲透
通常情況下,區域内的路由通過Level-1的路由器進行管理。所有的Level-2路由器和Level-1-2路由器構成一個Level-2區域。是以,一個IS-IS的路由域可以包含多個Level-1區域,但隻有一個Level-2區域。
Level-1區域必須且隻能與Level-1-2區域相連,不同的Level-1區域之間并不相連。
Level-1區域内的路由資訊通過Level-1-2路由器釋出到Level-2區域,是以,Level-2路由器知道整個IS-IS路由域的路由資訊。但是,在預設情況下,Level-2路由器并不将自己知道的其他Level-1區域以及Level-2區域的路由資訊釋出到Level-1區域。這樣,Level-1路由器将不了解本區域以外的路由資訊,Level-1路由器隻将去往其他區域的封包發送到最近的Level-1-2路由器,是以可能導緻對本區域之外的目的位址無法選擇最佳的路由。
為解決上述問題,IS-IS提供了路由滲透功能,使Level-1-2路由器可以将已知的其他Level-1區域以及Level-2區域的路由資訊釋出到指定的Level-1區域。
也就是說,L2區域作為管理區,是能夠知道包括所有L1區域的路由資訊,但是對L1來說并不知道其他L1層的路由資訊。是以路由滲透功能是讓L1/L2路由器将已知的L1區域資訊和L2區域資訊釋出到L1區域中。
1.4.7 IS-IS網絡類型
IS-IS隻支援兩種類型網絡,根據實體鍊路不同可以分為:
- 廣播鍊路:如Rthernet、Token-Ring等
- 點到點鍊路:如PPP、HDLC等
1.4.8 DIS和僞節點
在廣播網絡中,IS-IS需要在所有的路由器中選舉一個路由器作為DIS。
Level-1和Level-2的DIS是分别選舉的,使用者可以為不同級别的DIS選舉設定不同的優先級。DIS優先級數值越高,被選中的可能性就越大。如果優先級最高的路由器有多台,則其中SNPA(Subnetwork Point of Attachment,子網連接配接點)位址(廣播網絡中的SNPA位址是MAC位址)最大的路由器會被選中。不同級别的DIS可以是同一台路由器,也可以是不同的路由器。
與OSPF的不同點:
- 優先級為0的路由器也參與DIS的選舉;
- 當有新的路由器加入,并符合成為DIS的條件時,這個路由器會被選中成為新的DIS,此更改會引起一組新的LSP泛洪。
在IS-IS廣播網中,同一網段上的同一級别的路由器之間都會形成鄰接關系,包括所有的非DIS路由器之間也會形成鄰接關系。
DIS用來建立和更新僞節點(Pseudonodes),并負責生成僞節點的LSP,用來描述這個網絡上有哪些路由器。
僞節點用來模拟廣播網絡的一個虛拟節點,并非真實的路由器。在IS-IS中,僞節點用DIS的System ID和一個位元組的Circuit ID(非0值)辨別。
使用僞節點可以簡化網絡拓撲,減少SPF的資源消耗。
1.4.9 IS-IS封包
-
PDU
IS-IS封包是直接封裝在資料鍊路層的幀結構中的。PDU(Protocol Data Unit,協定資料單元)可以分為兩個部分,封包頭和變長字段部分。其中封包頭又可分為通用報頭和專用報頭。對于所有PDU來說,通用報頭都是相同的,但專用報頭根據PDU類型不同而有所差别
-
Hello
用于建立和維持鄰居關系,也稱為IIH(IS-to-IS Hello PDUs)。其中,廣播網中的Level-1路由器使用Level-1 LAN IIH,廣播網中的Level-2路由器使用Level-2 LAN IIH,點到點網絡中的路由器則使用P2P IIH。
-
LSP
LSP封包:用于交換鍊路狀态資訊。LSP分為兩種:Level-1 LSP和Level-2 LSP。Level-1路由器傳送Level-1 LSP,Level-2路由器傳送Level-2 LSP,Level-1-2路由器則可傳送以上兩種LSP。
-
SNP
SNP(Sequence Number PDU,時序封包)通過描述全部或部分資料庫中的LSP來同步LSDB,進而維護LSDB的完整和同步。
SNP包括CSNP(Complete Sequence Number PDU,全時序封包)和PSNP(Partial Sequence Number PDU,部分時序封包),進一步又可分為Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
CSNP包括LSDB中所有LSP的概要資訊,進而可以在相鄰路由器間保持LSDB的同步。在廣播網絡上,CSNP由DIS定期發送(預設的發送周期為10秒);在點到點鍊路上,CSNP隻在第一次建立鄰接關系時發送。
PSNP隻列舉最近收到的一個或多個LSP的序列号,它能夠一次對多個LSP進行确認。當發現LSDB不同步時,也用PSNP來請求鄰居發送新的LSP。
-
CLV
PDU中的變長字段部分是多個CLV(Code-Length-Value)三元組
1.4.10 IPv6 IS-IS
IS-IS(Intermediate System-to-Intermediate System,中間系統到中間系統)支援多種網絡層協定,其中包括IPv6協定,支援IPv6協定的IS-IS路由協定又稱為IPv6 IS-IS動态路由協定。
IETF中規定了IS-IS為支援IPv6所新增的内容,主要是新添加的支援IPv6協定的兩個TLV(Type-Length-Values)和一個新的NLPID(Network Layer Protocol Identifier,網絡層協定辨別符)。
TLV是LSP(Link State PDU,鍊路狀态協定資料單元)中的一個可變長字段值。新增的兩個TLV分别是:
- IPv6 Reachability:類型值為236(0xEC),通過定義路由資訊字首、路徑成本等資訊來說明網絡的可達性。
- IPv6 Interface Address:類型值為232(0xE8),它對應于IPv4中的“IP Interface Address”TLV,隻不過把原來的32比特的IPv4位址改為128比特的IPv6位址。
NLPID是辨別網絡層協定封包的一個8比特字段,IPv6的NLPID值固定為142(0x8E)。
2. 外部網關協定(EGP)
EGP(Exterior Gateway Protocol,外部網關協定)是AS之間使用的路由協定,是一個在自治系統網絡中兩個鄰近的網關主機(每個都有它們自己的路由)間交換路由資訊的協定。EGP常常被用來在英特網的兩個主機間交換路由表資訊。路由表包括已知的路由器清單、它們能到達的位址以及與每個路由的路徑相關的成本度量,以便選出最好的可用路徑。每個路由器按照一定的時間間隔,通常在120秒到480秒之間,就給它的鄰近路由發送資訊,然後鄰近路由就會将自己的完整路由表發回給它。
2.1 邊界網關協定(BGP)
BGP(Border Gateway Protocol,邊界網關協定)是一種既可以用于不同AS(Autonomous System,自治系統)之間,又可以用于同一AS内部的動态路由協定。當BGP運作于同一AS内部時,被稱為IBGP(Internal BGP);當BGP運作于不同AS之間時,稱為EBGP(External BGP)。
2.1.1 特點
- BGP是一種EGP(Exterior Gateway Protocol,外部網關協定),與OSPF、RIP等IGP(Interior Gateway Protocol,内部網關協定)不同,其着眼點不在于發現和計算路由,而在于控制路由的傳播和選擇最佳路由。
- BGP使用TCP作為其傳輸層協定(端口号179),提高了協定的可靠性。
- BGP是一種路徑矢量(Path-Vector)路由協定,它采用到達目的位址所經過的AS清單來衡量到達目的位址的距離。
- BGP支援CIDR(Classless Inter-Domain Routing,無類域間路由)。
- 路由更新時,BGP隻發送更新的路由,大大減少了BGP傳播路由所占用的帶寬,适用于在Internet上傳播大量的路由資訊。
- BGP路由通過攜帶AS路徑資訊徹底解決路由環路問題。
- BGP提供了豐富的路由政策,能夠對路由實作靈活的過濾和選擇。
- BGP易于擴充,能夠适應網絡新的發展。
2.1.2 BGP發言者和BGP對等體
運作BGP協定的路由器稱為BGP發言者。BGP發言者接收或産生路由資訊,并将路由資訊釋出給其它BGP發言者。
互相之間存在TCP連接配接、互相交換路由資訊的BGP發言者互為BGP對等體。
根據對等體所在的AS,可以将對等體分為以下兩種:
- IBGP對等體:對等體與本地路由器位于同一AS。
- EBGP對等體:對等體與本地路由器位于不同AS。
根據對等體的IP位址類型,可以将對等體分為以下兩種:
- IPv4對等體:通過IPv4位址建立的對等體。
- IPv6對等體:通過IPv6位址建立的對等體。
2.1.3 BGP的消息類型
BGP定義了以下幾種消息類型:
- Open:TCP連接配接建立後發送的第一個消息,用于在BGP對等體之間建立會話。
- Update:用于在對等體之間交換路由資訊。一條Update消息可以釋出具有相同路徑屬性的多條可達路由,也可以同時撤銷多條不可達路由。
- Keepalive:BGP周期性地向對等體發送Keepalive消息,以保持會話的有效性。
- Route-refresh:用來要求對等體重新發送指定位址族的路由資訊。
- Notification:當BGP檢測到錯誤狀态時,就向對等體發出Notification消息,之後BGP會話會立即中斷。
2.1.4 BGP的路由屬性
- 源(ORIGIN)屬性
- AS路徑(AS_PATH)屬性
- 下一跳(NEXT_HOP)屬性
- MED(Multi-Exit Discriminator,多出口區分)屬性
- 本地優先(LOCAL_PREF)屬性
- 團體(COMMUNITY)屬性
- 擴充團體屬性
2.1.5 BGP的選路規則
(1) 丢棄下一跳(NEXT_HOP)不可達的路由;
(2) 優選首選值(Preferred-value)最大的路由;
(3) 優選本地優先級(LOCAL_PREF)最高的路由;
(4) 依次選擇network指令生成的路由、import-route指令引入的路由、聚合路由;
(5) 優選攜帶AIGP屬性的路由,AIGP屬性值越小優先級越高;
(6) 優選AS路徑(AS_PATH)最短的路由;
(7) 依次選擇ORIGIN類型為IGP、EGP、Incomplete的路由;
(8) 優選MED值最低的路由;
(9) 依次選擇從EBGP、聯盟EBGP、聯盟IBGP、IBGP學來的路由;
(10) 優選IGP Metric值最小的路由;
(11) 優選疊代深度值小的路由;
(12) 如果目前的最優路由為EBGP路由,則BGP路由器收到來自不同的EBGP鄰居的路由後,不會改變最優路由;
(13) 優選Router ID最小的路由器釋出的路由。如果路由包含RR屬性,那麼在路由選擇過程中,就用ORIGINATOR_ID來替代Router ID;
(14) 優選CLUSTER_LIST長度最短的路由;
(15) 優選IP位址最小的對等體釋出的路由。
2.1.6 BGP釋出路由的政策
BGP釋出路由時采用如下政策:
- 存在多條有效路由時,BGP發言者隻将最優路由釋出給對等體。如果配置了advertise-rib-active指令,則BGP釋出IP路由表中的最優路由;否則,釋出BGP路由表中的最優路由。
- BGP發言者隻把自己使用的路由釋出給對等體。
- BGP發言者會将從EBGP獲得的路由釋出給它的所有BGP對等體(包括EBGP對等體和IBGP對等體)。
- BGP發言者會将從IBGP獲得的路由釋出給它的EBGP對等體,但不會釋出給它的IBGP對等體。
- 會話一旦建立,BGP發言者将把滿足上述條件的所有BGP路由釋出給新對等體。之後,BGP發言者隻在路由變化時,向對等體釋出更新的路由。
2.1.7 BGP負載分擔
- 基于疊代路由實作BGP負載分擔
- 通過改變BGP選路規則實作負載分擔
2.1.8 大規模BGP網絡所遇問題的解決方法
2.1.9 MP-BGP
BGP-4隻能傳遞IPv4單點傳播的路由資訊,不能傳遞其它網絡層協定(如IPv6等)的路由資訊。為了提供對多種網絡層協定的支援,IETF對BGP-4進行了擴充,形成MP-BGP(Multiprotocol Border Gateway Protocol,多協定邊界網關協定)。MP-BGP可以為多種網絡層協定傳遞路由資訊。
MP-BGP支援的協定
-
IPv6單點傳播
通過MP-BGP釋出和維護IPv6單點傳播路由字首資訊。
-
IPv4多點傳播/IPv6多點傳播
多點傳播路由協定PIM(Protocol Independent Multicast,協定無關多點傳播)根據單點傳播靜态路由或者任意單點傳播路由協定(包括RIP、OSPF、IS-IS、BGP等)所生成的單點傳播路由表進行RPF(Reverse Path Forwarding,逆向路徑轉發)檢查,以建立多點傳播路由表項,進而進行多點傳播封包的轉發。多點傳播轉發路徑與單點傳播轉發路徑是一緻的。但是,在某些情況下,多點傳播網絡拓撲和單點傳播網絡拓撲有可能不同;有些使用者希望多點傳播轉發路徑不同于單點傳播轉發路徑,以便分别對多點傳播流量和單點傳播流量進行管理和控制。
MP-BGP對IPv4多點傳播/IPv6多點傳播的擴充,稱為MBGP(Multicast BGP,多點傳播BGP),它通過MP-BGP傳遞用于RPF檢查的路由資訊,并将該資訊儲存在獨立的多點傳播BGP路由表中,以實作單點傳播轉發群組播轉發的隔離,使得多點傳播轉發路徑可以不同于單點傳播轉發路徑。
- VPNv4/VPNv6
- 帶标簽的IPv4單點傳播/IPv6單點傳播
- L2VPN
- IPv4 MDT
- MVPN
- EVPN
MP-BGP的擴充屬性
路由資訊中與網絡層協定相關的關鍵資訊包括路由字首和下一跳位址。BGP-4通過Update消息中的NLRI(Network Layer Reachability Information,網絡層可達性資訊)字段攜帶可達路由的字首資訊,Withdrawn Routes字段攜帶不可達路由的字首資訊,NEXT_HOP屬性攜帶下一跳位址資訊。NLRI字段、Withdrawn Routes字段和NEXT_HOP屬性不易于擴充,無法攜帶多種網絡層協定的資訊。
為實作對多種網絡層協定的支援,MP-BGP定義了兩個新的路徑屬性:
- MP_REACH_NLRI(Multiprotocol Reachable NLRI,多協定可達NLRI):用于攜帶多種網絡層協定的可達路由字首及下一跳位址資訊,以便向鄰居釋出該路由。
- MP_UNREACH_NLRI(Multiprotocol Unreachable NLRI,多協定不可達NLRI):用于攜帶多種網絡層協定的不可達路由字首資訊,以便撤銷該路由。
MP-BGP通過上述兩個路徑屬性傳遞不同網絡層協定的可達路由和不可達路由資訊。不支援MP-BGP的BGP發言者接收到帶有這兩個屬性的Update消息後,忽略這兩個屬性,不把它們傳遞給其它鄰居。
位址族
MP-BGP采用位址族(Address Family)和子位址族(Subsequent Address Family)來區分MP_REACH_NLRI屬性、MP_UNREACH_NLRI屬性中攜帶路由資訊所屬的網絡層協定。例如,如果MP_REACH_NLRI屬性中AFI(Address Family Identifier,位址族辨別符)為2、SAFI(Subsequent Address Family Identifier,子位址族辨別符)為1,則表示該屬性中攜帶的是IPv6單點傳播路由資訊。關于位址族的一些取值可以參考RFC 1700。
MP-BGP支援BGP IPvX會話承載IPv4和IPv6路由
MP-BGP支援IPvX(X可以為4或6)對等體之間互動IPv4和IPv6路由,即IPv4對等體之間除了互動IPv4路由以外還可以互動IPv6路由,IPv6對等體之間除了互動IPv6路由以外還可以互動IPv4路由:
- IPv6路由的下一跳為IPv4位址時,MP-BGP将此IPv4位址映射為IPv6位址封裝在Update封包的Next-Hop屬性中。此時,需要配置路由政策,将IPv6路由的下一跳位址修改為對端裝置的IPv6位址,否則無法正常進行路由疊代。
- IPv4路由的下一跳為IPv6位址時,需要BGP會話協商支援擴充IPv6下一跳能力,将IPv4 NLRI封裝在MP_REACH_NLRI屬性中。此時,需要配置路由政策,将IPv4路由的下一跳位址修改為對端裝置的IPv4位址,否則無法正常進行路由疊代。
3. 總結
内部網關協定(IGP)主要使用RIP和OSPF兩種協定,其中OSPF為了适配IPv6,産生OSPFv3。
RIP協定用跳數作為路徑成本,資料庫表中包含目的位址、下一跳位址、出接口、路由時間和路由标記。通過 請求-響應-觸發更新 的方式運作和更新路由表。利用 計數到無窮、觸發更新、水準分割和毒性逆轉 技術防環
OSPF協定通過區域劃分降低記憶體消耗和CPU占用,利用Hello封包、DD封包、LSR封包、LSU封包、LSAck封包五種封包在AS之間同步路由資訊。