曾細堯
(海口經濟學院工程技術學院 海南 海口 570203)
Internet是由成千上萬的網絡域或自治系統(Autonomous System,AS)構成的,他們中的每一個都是處于同一管理控制下的網絡集合[1]。AS通過域間路由協議交換網絡可達性信息,構造全球路由表以便數據分組在Internet上全球可達。Internet域間路由協議幾乎承載了Internet所有的活動,不論Internet的其它部分運行得有多好,如果域間路由協議無法正常運行,終端用戶感知的端到端性能都不可能達到最優。
邊界網關協議(Border Gateway Protocol,BGP)[2]是目前唯一廣泛運行于Internet的域間路由協議。基于BGP的域間路由系統中DFZ(Default-free-Zone)路由表的快速增長是Internet目前面臨的關鍵挑戰之一,直接影響了Internet的性能。IAB關于路由和尋址的報告指出全球路由表的增長呈現超線性增長,并將保持超線性增長的趨勢[3]。因此原有的結構已經無法滿足不斷發展的Internet的需求。需要一種適應Internet的快速增長,滿足不同網絡需求的新型路由結構。為此提出了一種建立在分離核心網和邊界網基礎之上的域間路由尋址結構IRAA(An Inter-domain Routing and Addressing Architecture)。IRAA 在數據包中加入特殊數據記錄可路由地址信息,當包離開核心網時,部署的具有交換地址功能的路由器交換地址域中的信息,避免采用封裝和改變現有IPv4路由器。同時,IRAA重用現有IPv4地址空間和擴展現有協議,實現了核心域地址空間和邊界域地址空間之間的前向和反向轉換,避免引入一個全新的映射服務系統。
為了改善Internet擴展性提出的域間路由尋址結構IRAA的核心思想依然是分離供應商網絡和客戶網絡的尋址和路由空間。在增長速度相對緩慢,動態變化也相對穩定的傳送網絡組成的核心網中運行域間路由協議,維持核心之間的可達性。在增長速度快速,動態變化劇烈的客戶網絡構成的邊界網中運行本地路由協議。在核心網和邊界網之間通過DNS實現Address和LRoc地址之間的映射服務,以保證用戶數據包獲得全局可路由地后穿越核心網到達目的地。
IRAA中給構成邊界網的每個客戶網絡的終端分配一個代表接口位置和終端身份名字的IPv4地址,稱為EID(Endpoint Identifier)。EID是全球唯一的標識,代表終端的身份,作為會話標識,客戶網絡基于EID進行本地路由。構成核心網的傳送網絡分配具有拓撲意義,全球唯一的可路由地址Rloc,在IRAA中稱為RID(Routing Identifier)。RID代表網絡的位置標識,核心網依照RID路由。IRAA的結構如圖1所示。

圖1 IRAA架構
獨立的映射服務系統保存所有EID與RID之間的映射信息。與某個EID存在映射關系的RID與該EID所處的stub AS接入的transit AS相關。如果stub AS單宿主,那么位于該stub AS中的所有EID與該stub AS接入的這個transit AS的RID存在映射關系。如果stub AS是多宿主,那么該stub AS中的EID則與接入的多個transit AS的RID存在映射關系。每個多宿主transit AS可以獲取多個RID實現流量工程。可見,EID與RID之間應該是一對多的關系。
映射表中的表項表示為(EID,RID,Weight)。每個表項中的權重值weight表示擁有EID的stub AS對通過某個RID傳輸數據的偏好。這樣,當stub AS和transit AS是單宿主時,權重值weight=1。而當stub AS是多宿主時,根據對通過那個RID傳輸流量的偏好來設置權重的值。給定一個EID,當映射表中存在多個與該地址向匹配的映射表項時,根據weight決定選擇那個映射表項中的RID。
獨立的映射服務器負責映射表的管理,路由器不參與映射表項的管理。路由器在發送第一個數據報文時查詢映射表,獲得目的端點標識EID相應的路由表識RID即可。
映射表隔離邊界域地址空間與核心域地址空間,將邊界域中的路由信息轉移到了映射服務系統中。于是,域間路由表只需要存儲RID之間的可達性信息。可以使用不同的實現建立域間路由表。
實際上,因為Internet中的transit AS數量相對較少,并且增長緩慢,可以為每個transit AS分配幾個RID實現流量工程。在整個核心網中傳播RID的可達性信息,域間路由協議也沒有必要一定使用BGP,RID也不一定使用IP地址。可以使用一種新型的巨量向量協議或是鏈路狀態協議在整個核心網中發布RID的可達性信息。每個transit AS中的域間路由表都保存關于所有RID的路由信息。在轉發包時,依照RID查詢域間路由表獲得相應的路由信息。
使用BGP作為域間路由協議建立域間路由表時RID必須是IP地址,因為BGP協議基于IP地址。為了使得核心網路中的路由器依然保持根據IP地址轉發數據報文,IRAA依然使用現在的BGP協議建立域間路由表。BGP作為IRAA的域間路由協議在IRAA的核心網中傳播RID之間的可達性信息。核心網中的路由器接收到關于RID的路由信息后,將RID看作是IP地址前綴,正常地建立域間路由表。

圖2 數據報文格式
IRAA使用特殊負載在數據報文中攜帶額外的RID地址,數據報文格式如圖2所示。從網絡的角度來看加入特殊數據的報文依然是一個正常的IPv4數據包,因此核心網路由器轉發平臺不需要進行任何變化。IRAA在transit AS中部署地址交換路由器ARR,如圖1所示。網絡中只有ARR具有識別特殊負載的能力,并執行地址交換,使得數據報文IP頭部中的目的地地址轉換為可以在核心網中路由的RID地址。
如果數據報文的傳輸在stub AS內部,不需要穿越核心網,那么數據報文的轉發基于stub AS域內路由協議建立的本地路由表。邊界網路由器如果發現數據報文中的兩個RID信息都是本地的RID,那么就依照本地路由表將數據報文轉發到目的主機。
近些年,國家對于耕地保護引起了高度重視,為更好促進耕地管理,從簡單的數量管理轉變為數量和質量并重管控。在全面進行耕地質量等級測量工作時,詳細了解年度內土地資源現狀改變與耕地質量等級改變狀況,為土地管理提供服務,給建立相應的耕地保護制度帶來依據,提高耕地管理質量。
如果數據報文的傳輸需要穿越核心網,那么數據報文就被stub AS中路由器按照默認路由將數據轉發到相應的transit AS的ARR。基于域間路由表的數據報文傳輸過程如下:
1)發送數據報文的源主機查詢映射表系統,獲取目的主機的RID映射信息,并根據權重值選擇一個RID作為目的主機路由標識RIDdst。同時獲取自己的RID,也根據權重值選擇一個作為源主機路由標識RIDsrc。
2)源主機發送 Source EID 地址是 EIDsrc,Destination RID 是 RIDdst,Source RIDsrc和Destination EID是EIDdts的數據報文;
3)數據報文中的RIDrsc屬于本地,RIDdst不屬于本地stub AS中,根據本地路由表中的默認路由信息將報文路由到源 transit AS的ARRsrc。
4)ARR將數據報文轉發到核心網,核心網根據域間路由表將數據報文轉發到擁有RIDdst的目的transit AS。
5)目的transit AS中的路由器發現RIDdst屬于自己,于是將包轉發到ARRdst。
6)ARRdst發現數據報文屬于本地stub AS,首先將Destination RID與Destination EID中的地址交換,其他保持不變。然后依照Destination EID將包轉發到目的stub AS。
7)目的Stub AS發現RIDrsc不屬于本地,于是依照按照IP數據報文中的目的地址將包轉發到目的終端主機。
因為目的主機在接收到的數據報文中獲得了雙方的EID和RID信息,目的主機在發送應答數據報文時就不需要再次查詢映射系統,所以應答數據報的傳輸過程重復2-8。
IRAA中域間路由器只需要知道RID之間的可達性。Transit AS的數量遠少于stub AS,并且它的增長趨勢更加緩慢。測試顯示transit AS僅占所有AS的20%,transit AS的增長率是所有AS的1/5。雖然沒有transit AS需要根據自己的規模和流量工程的需要通告多個RID,但是RID的多少與它支持的stub AS數量無關,并且與接入它的stub AS多宿主或是流量工程都無關。
如果一個transit AS是單宿主,只需要通告一個RID即可。如果transit AS多宿主,根據自己的需要平均通告了n個RID。根據RouteViews[4]數據分析結果,2008年3月,多宿主transit AS總數量是4277個,多宿主比例是76.268,平均接入的上層transit AS數量是3.297個,于是可知IRAA的路由表表項總數應該是11,771=4277×0.76286×3.297+4277×(1-0.76286)條。 在 2008 年 3 月 Internet域間路由表表項已經達到了253.750條,可見IRAA使得域間路由表表項縮減了一個數量級。
路由表的增長給域間路由系統帶來很大的擴展壓力。但是路由表的增長并不是唯一的擴展問題,還有一個同樣重要的問題就是系統的處理負載壓力。處理負載主要包括處理更新和維護路徑。
分離核心域和邊界域之后,到達邊界域中終端的路徑信息由另外的映射服務系統維護,核心域中的路由器不需要參與邊界域中路徑信息的建立和維護。另一方面,分離后發生在邊界域中的動態變化和stub AS的變化都不會影響到核心域中的路由器。假設transit AS和stub AS產生的更新消息分別是UTransit和UStub,基于BGP的域間路由系統中路由更新數量就是UTransit和UStub之和,而在IRAA中僅僅出現UTransit產生的更新消息。Internet中大部分的更新是由不穩定的邊界域產生的,可見IRAA可以有效地減少需要處理的更新消息數量。
在IRAA中核心網絡之間只交換基于Locator的路由信息,基于Identifier的路由信息在邊界網絡內部維護。采用這種方式可以大大減少DFZ中路由器的路由表大小,也就是緩解了路由可擴展性壓力。另外在一個AS內部的路由變化不會被傳播到整個Internet中,增強了路由穩定性,也減少了DFZ中路由器處理的更新數量。重用現有IPv4地址空間和擴展現有協議讓IRAA具有良好的向后兼容性,也就是可以增量部署。
[1]S.Halabi and D.McPherson,Internet Routing Architecture[M].2ed ed.Cisco Press,2000.
[2]Rekhter Y,Li T.A Border Gateway Protocol 4(BGP-4)[S].RFC 1771,Mar.1995.
[3]Meyer D.,Zhang L.,Fall K.Reprot from the IAB workshop on routing and addressing[EB/OL],RFC 4984,2007.
[4]The RouteViews Project[EB/OL],http://www.routeviews.org/.