IGP(Interior Gateway Protocol,內部網關協議)是在單一機構管理的自治網絡內,網關(主機和路由器)間交換路由信息的協議。目前使用最為廣泛IGP協議是IS-IS(Intermediate System-Intermediate System,中間系統到中間系統)、OSPF(Open Shortest Path First,開放式最短路徑優先)、RIP(Routing Information Protocol,路由信息協議),其中IS-IS和OSPF是兩種較為常用的IGP協議。
1987年,國際標準化組織(International Organization for Standard)發布標準化后的IS-IS協議,基于無連接網絡協議設計(CLNP,ConnectionLess Network Protocol)的動態路由協議,主要為開放式系統互聯(Open System Interconnection)服務,不支持TCP/IP協議。
為了支持TCP/IP協議,互聯網工程任務組(Internet Engineering Task Force,IETF)成立了2個不同思路的獨立工作組。拿來主義的“改造派”于1990年12月(RFC 1195)發布了集成Integrated IS-IS,另起爐灶的“自造派”于1991年7月推出OSPFv2(RFC1247)。由于IETF主導的TCP/IP協議大行其道,目前通常情況下所說的IS-IS都是指擴展后的Integrated IS-IS協議。IS-IS和OSPF協議在當初的研發過程中既有競爭,也有合作,二者都借鑒了阿帕網絡(ARPANET)的路由協議運行經驗和教訓,IS-IS和OSPF協議在拓撲結構、路徑算法與數據表維護等方面有眾多相似之處。
以下通過實際案例,使用華為eNSP(版本1.2.00.510)模擬路由器及路由協議運行,通過Wireshark(版本1.4.3)數據抓包對比分析等手段,分析比較OSPF與IS-IS協議之間的異同。為了便于對比分析,設計如下網絡模擬結構圖,橢圓形區域作設置為OSPF的Area 0或IS-IS中的Level-2區域,方形區域設置為OSPF的常規區域或IS-IS的Level-1區域,路由器接口ip地址采用示例ip設置通用規則,例如R2的三個接口IP地址分別設置為:10.0.12.2、10.0.23.2、10.0.24.2。
在拓撲結構上,兩種協議都采用層次化、多區域的部署方式形成兩層的層次性拓撲,拓撲結構如圖1所示。兩種協議都設置了骨干區域,輔以路由匯總、默認路由等策略,有效減小了路由表規模,降低了局部區域路由變化與震蕩對整體路由收斂影響,將拓撲變化產生的影響限制在一個相對更小的范圍,因此兩者都具有路由收斂速度快、無環路的優點,都能較好支持的大型網絡。

圖1 OSPF和IS-IS拓撲對比分析
在路徑算法上,兩種協議都以最短路徑優先(Shortest Path First)算法為主,放棄了阿帕網絡的Bellman-Ford算法。兩種協議使用SPF算法(即Dijkstra算法)來計算路由。IS-IS在域內運行Level-1 SPF計算路由,在域間運行Level-2 SPF計算路由;OSPF在域內運行SPF計算路由,在域間(inter-area)運行距離向量算法來計算路由。之前的距離矢量路由協議(例如RIP)僅關心到達目的路由器有多遠(跳數),不關心路況(帶寬等鏈路狀況),IS-IS和OSPF協議克服了RIP類協議的不足,在路由路徑選擇上引入“度量值”(cost)概念,綜合考慮路由鏈路的距離和鏈路帶寬。當然,距離向量算法有一定的不足,但此算法簡單、高效,在IS-IS和OSPF跨域間路由計算中仍然得到應用。
在數據表維護上,兩種協議都是基于鏈路狀態的路由協議,在廣播網絡中皆選舉指定路由(指定中間系統,DR/DIS)來擔任鏈路狀態數據庫同步的主路由器,建立和維護“三張表”,即鄰居表、鏈路狀態數據庫(LSDB)和協議路由表。鄰居表采用“鄰居數據結構“,描述每一臺鄰居路由器的所屬區域、工作狀態、鄰居類型、Router-ID、優先級、接口IP、保持時間等。鏈路狀態數據庫都使用Hello報文建立和維護鄰居/鄰接關系。鏈路狀態數據庫存儲路由器學習、搜集的各類LSA(鏈路狀態通告)、拓撲結構和網段信息。協議路由表是指通過鏈路狀態數據庫的數據,采用SFP算法計算,得到的到達網絡中各個網段的最佳路由信息表。協議路由表的信息是路由器全局路由表的重要來源,對于不同路由協議產生的同一網段的路由信息,由路由器比較路由優先級大小后擇優載入全局路由表。
集成IS-IS和OSPF皆由互聯網工程任務組(IETF)牽頭制定的標準,但思路迥異的實施小組決定兩種協議之間必然有眾多不同之處,兩種協議在支持的網絡類型、分層結構、協議報文、防環機制、使能方式、擴展性等方面有著明顯區別,下文以華為AR、CE系列數通產品為例介紹兩種協議的區別。
在支持的網絡類型上,兩種協議支持的網絡類型不盡相同,以華為數通產品為例,IS-IS 定義了兩種常見網絡拓撲類型:廣播網絡和點到點網絡。OPSF與IS-IS比較,還可支持非廣播型多路訪問網絡、點到多點網絡。
在分層結構上,IS-IS的骨干區域不是特定的一個域,而是由網絡端口直接連通的連續Level-2和Level-1-2 路由器組成;OSPF的骨干必須有而且必須為area 0; IS-IS的域邊界是在路由器之間的鏈路(link)上,OSPF的域邊界是在路由器上;IS-IS的兩層分級的網絡拓撲結構不是必須的,網絡可以完全由Level-1路由器或完全由Level-2 路由器構成。IS-IS的Level-1區域類似于OSPF中的Total Stub區域,依賴最近的區域邊界路由器作為缺省路由訪問本區域以外任何目的地。OSPF的非骨干區域類型有常規區域(Normal Area)、末梢區域(Stub Area)、非完全末梢區域(NSSA)、完全次末節區域(Totally NSSA);

圖2 OSPF協議報文類型
在協議報文方面,OSPF協議報文主要有5種:Hello、數據庫描述(Database Description)、鏈路狀態請求(Link State Request)、鏈路狀態更新(Link State Update)、鏈路狀態確認(Link State Acknowledgment),一次較為完整OSPF協議報文類型如圖2所示。IS-IS協議報文直接采用數據鏈路層封裝,封裝在以太網的數據幀中,通過TLV(類型、長度、值)傳遞報文信息,與OSPF相比,IS-IS協議報文更簡單、封裝效率更高、可擴展性高。IS-IS的報文協議數據單元主要有:IIH(IS-IS Hello)、鏈路狀態報文(Link-State Packet)、完全序列號報文(CSNP)、部分序列號報文(PSNP)。OSPF協議直接采用IP封裝,對應的協議號為89,協議報文使用組播地址(224.0.0.5/6)為目的地址。IS-IS協議報文常見類型如圖3所示。

圖3 IS-IS報文主要類型
在防環機制上,首先協議在區域內(area和level)采用的SPF算法計算出來的最短路徑樹避免了出現路由環路的可能。IS-IS的NET(網絡實體名稱)和OSPF中的router-id都能起到全局唯一標識作用,在一定程度上能防止環路。其次,精巧的路由通告設計機制很大程度上避免了環路的產生。IS-IS的Level-1路由必需通過Level-2區域轉發,當Level-2路由向Level-1區域引入滲透時,LSP報文中關聯位(Attached bits)會被置位,避免通過Level-1路由再次通告到Level-2區域形成環路。OSPF的非area 0區域路由信息必須通過Area 0區域轉發,不允許兩個非骨干區域直接交換路由信息,OSPF中的ABR只能將自身到達所連接區域的區域內部路由Type-3 LSA通告給Area 0,不允許將區域間路由或者在非Area 0 區域內學習到的路由信息通告給Area 0。OSPF中的Type-5 LSA必需在明確對應的Type-4 LSA后方可在所有區域內泛洪通告;
在使能方式上,配置OSPF協議,只需要在系統視圖界面下使用“ospf router-id”命令即可完成路由器和接口使能,如要針對特定接口取消OSPF使能,需在OSPF進程下使用“silent-interface”命令取消使能。配置IS-IS協議時,在路由器系統視圖界面輸入“isis process-id”全局使能后,仍需要在接口界面下再次使能每一個需要運行IS-IS協議接口,即在接口界面下輸入”isis enable”命令后方可完成接口IS-IS使能。
與RIP距離矢量路由協議相比,IS-IS和OSPF在路由計算與選擇時候充分考慮了鏈路狀態因素,使得協議路由更加實用、科學,通過周期性地交互路由信息,有效保障了路由信息的準確性和實時性,是對RIP路由協議不足的顯著改進。兩種路由協議應用都比較廣泛,業內也有混合使用IS-IS、OSPF組網,然后通過BGP協議進行域間路由交換。結合上述分析,本文作者認為,對于小型網絡、中小企業網絡、高校網絡中,在網絡設備性能顯著提升且背景下,建議選擇OSPF協議,可以充分利用OSPF的區域類型多、內置功能強大的優勢,可靈活部署各種路由控制策略,機動、快捷操控路由和路徑選擇,滿足大量用戶多層次、精準化訪問控制。對于IS-IS協議,相對簡單的區域類型、更細致的定時器設置,簡化了協議的復雜性,降低了協議對路由器CPU的占用,加快了路由收斂更新速度,基于TLV的報文傳遞設計,極大提升了IS-IS協議的擴展性,IS-IS更適用于大型骨干網、運營商網絡中。