OSPF vs IS-IS(Enhanced)

相同點:

IS-IS和OSPF是鏈路狀態路由協議的典型代表,都維護一個LSBD,以Dijkstra算法爲核心計算出SPF樹來進行路由。                                     

由於具有快速收斂、無環路,支持VLSM,觸發更新等特點,IS-IS和OSPF都能很好地支持大型網絡,但從全球部署來看,還是採用OSPF的多些,IS-IS主要應用在ISP網絡中。

IS-IS和OSPF一樣採用Hello協議來維護鄰居關係,不過IS-IS的Hello協議和OSPF比起來要簡單的多。

IS-IS和OSPF都採用兩級層次化的拓撲結構,設有骨幹區域,並且在區域之間提供地址彙總的能力,爲網絡規劃提供了靈活且實際的設計方案。

爲了控制鏈路狀態數據庫的規模和複雜度,IS-IS和OSPF在廣播型鏈路上都選舉DR(DIS)來擔任數據同步的指揮者,但在細節處理上還有較大差別。

對協議報文的驗證能力是所有高級路由協議所必須具備的功能,IS-IS對於協議報文的驗證處理有些特別,它按照Level和PDU類型來處理。

IS-IS和OSPF對路由開銷的度量(Metric)都採用接口可配置的Cost,能夠比較正確地反映網絡的實際情況。

對於每個LSP(LSA)都有一個記時器相關聯,正常情況下會通過泛洪(週期較長)刷新計時器,如果在老化時間內沒有收到新的更新,將從數據庫中清除該LSP(LSA),不再用做路由計算。

處於邊緣區域中的路由器,一是通過區域劃分,二是通過設置區域類型來減少對路由器資源的需求。IS-IS可以將區域中的路由器設置爲 Level-1類型,OSPF可以將整個區域設置爲stub、total-stub或NSSA來減少數據庫的大小,同時保證路由的可達性。

不同點:

IS-IS最初是爲ISO的標準協議,基於CLNS網絡設計的,後來發展爲集成IS-IS增加了對IP的支持;而OSPF一開始就是IETF爲純IP網絡設計的。

IS-IS協議直接在鏈路層上運行,報文直接封裝在鏈路層報文中,支持CLNS和IP協議;OSPF報文封裝在IP報文中,協議運作以IP地址爲基礎。
 
LSA和LSP同爲鏈路狀態PDU,但有所不同的是,LSA是封裝OSPF頭部之後,再被封裝進一個IP數據包中,而一個LSP本身就是一個數據包。

OSPF通過特殊的區域ID Area0區來定義骨幹區,而IS-IS是通過連續的L2路由器來組成骨幹區。IS-IS協議中一臺路由器只能屬於一個區域,區域邊界在鏈路上,路由器的LSDB按Level-1和Level-2分別維護;而OSPF按接口來分區域,這樣一個路由器可以屬於多個區域,爲每個區域維護一個LSDB數據庫,區域邊界稱爲ABR。

IS-IS的採用的Hello協議比較簡單,OSPF相對複雜;在IS-IS中鄰居之間的Hello和Dead間隔不必一樣,像Hold Time(也就是Dead-interval)是以對方通告的爲準,不像OSPF要求必須一致才能形成鄰居關係。而且通過Hello的交流,IS-IS已經能形成完全的鄰接關係而OSPF只能形成Two-Way。

在OSPF中LSA的老化從0開始正計時到1h(該時間不可配置),刷新時間爲30mins;而IS-IS的老化時間是從20mins倒計時(該時間可以配置),刷新時間爲15mins,實際爲15mins減去 <=25% 的隨機時間。
 
OSPF中LSA只有始發路由器才能進行清除(提前將該LSA的老化時間設爲最大並泛洪出去),而IS-IS中LSP的清除是接收到LSP發現校驗和錯誤,就會將該條LSP的剩餘生存時間設置爲0並重新擴散出去來加以清除,始發路由器接收到以後會重新發出該條LSP的實例,這樣一來會顯著的增加LSP的流量,所以12.0以後的版本都默認啓用ignore-lsp-errors來忽略這個行爲。

IS-IS協議的DIS選舉比較簡單,且搶佔結果可預見,接口優先級最高的即爲DIS,優先級別爲0也可能成爲DIS;而爲了保證較小的變動,OSPF協議DR選舉機制複雜且不可預見,優先級最高的不一定是DR(因爲不可搶佔,新添加進網絡的接口即使優先級高也只能等待機會),優先級爲0的不可能成爲DR,設有BDR,DR失效後BDR立即變爲DR,而IS- IS沒有備份DIS,DIS失敗,重新選舉DIS。

IS-IS不支持Point-to-MultiPoint類型的網絡,並且NBMA網絡都只能設置爲子接口模擬成來模擬Point-to-Point的運行模式;而OSPF可以很好地支持多種網絡類型,像是Broadcast,NBMA,P-2-P,P-2-MP。

標準的IS-IS 接口Cost取值爲0 ~ 63,對鏈路層區分度不夠,而且一個網絡的metric達到1024就認爲不可達;而OSPF接口Cost取值範圍爲0 ~ 1024,一個網絡的metric達到65535才認爲不可達。IEFT在 draf-ietf-isis-traffic-02中擴大了IS-IS的Cost的取值範圍(2^24)和最大有效路徑Metric(2^32)。

IS-IS的Level-1區域只能對應OSPF中Total Stub區域,依賴最近的Level-1-2路由器作爲該區域的出口,有可能造成次優路由;而OSPF非常靈活,普通區域既可保持原狀,選擇最優路由,也可以設置爲Stub,Total Stub,NSSA和Total NSSA;不過IETF對IS-IS已經提供了一個改進方案,就是將Level-2的路由注入到Level-1區域中去。
 
IS-IS中雖然每個IS只屬於一個Area,但是可以通過設置使一個IS同時屬於多個Area(默認最多爲3個),在網絡區域過渡的時候可以避免中斷,這也是ISP最爲鐘意的地方;而OSPF網絡在做割接的時候就必須考慮中斷的時間了。

IS-IS路由器在1個協議報文中插入所有它發佈的IP前綴信息,如果大於發佈鏈路MTU,將進行分片,當前一個IS-IS LSP最多分爲255片,限制到大約只有3000個IP地址前綴; IETF對IS-IS提供一個改進解決方法,詳見draft:draft-isis-lsp-fragmets-04.txt。

IS-IS雖然在《ISO 10589》中雖然提出了virtual-link來修復分開的骨幹區域,但目前廠商基本沒有實現,在RFC 1195中也沒有提出。OSPF可以很好地支持virtual-link來修復分開的骨幹區域或讓隔離開的普通區域連接到骨幹區。

RFC 1195中對於Level-1引入的外部可達信息,沒有以Code 130的TLV作爲IP External Reachability Information加入到LSP中,與區域內的路由信息無法區分開;而OSPF對於引入的外部路由統一以Type 5(NSSA的話是先Type 7再轉換成Type 5,轉換原理就是P-bit位的標記與否)的LSA來區分處理。
 
(該問題已經在RFC 2966: Domain-wide Prefix Distribution with Two-Level IS-IS中解決)

IS-IS歷史上爲CLNS網絡而制定的,發展比較緩慢,對於IP的支持很多地方需要改進,雖然已經提出draft,但大部分還沒有形成RFC,CNLP和IP雙環境使用的優勢也並不明顯,不過就ISP而言還是個簡單好用的協議; OSPF專門爲IP網絡設計,更適合IP路由,發展成熟,標準化程度高,廠商支持,使用廣泛所以發現不少缺點,相應的改進也就比較多。
 
在IS-IS中L2路由可能是Area間路由,也可能是外部路由,在IS-IS數據庫裏可以識別出來。如果達到某一目的地,同時存在L2外部路由和域間路由,那麼IS-IS會根據最短路徑來選擇,而到達外部路由的路徑以到達ASBR爲準,因此可能會出現安裝外部路由而沒有安裝域間路由的情況。這和OSPF明顯區分內部路由和外部路由不同,在OSPF中如果已存在域間路由,外部路由在重發布進的時候會被過濾掉。 在IS-IS這樣的情況使用路由泄漏來解決。
 
在IS-IS中只要存在Level-2 路由器的Area 就是Transmit Area,沒有Area ID 的限制,即兩個Level-2的Router 即使不在同一Area也能形成鄰居,這一點與OSPF嚴格的Transmit Area & Regular Area 劃分不同。
 
 
關於拓撲變動(原創)
 
1臺OSPF路由器每條鏈路都有1條LSA,該鏈路變化了,只需要重新泛洪該條LSA。而1臺ISIS路由器,所有鏈路都在1個LSP裏,1條鏈路變化了,需要泛洪所有鏈路的信息(即使其它鏈路無變化),引起的計算量也是針對該路由器全部的鏈路。
 
就網絡拓撲而言,如果是前綴的改變,對ISIS有利,如果是鏈路的改變,則對OSPF有利,而實際中,鏈路不變,只改地址前綴的情況並不多。像100臺路由器組成的網絡,OSPF、ISIS都可以用,ISIS從理論上只是支持前綴數大,不是支持鏈路數大,而一個網絡的規模其實很大程度是由鏈路數來決定的。
 
PS:前綴改變是三層的概念,比如修改接口上的IP地址或者子網掩碼,因爲IP地址不參與IS-IS的SPF運算所以前綴變化對IS-IS的影響小。鏈路改變是二層的概念,比如接口Down掉。
 
OSPF和IS-IS對於網絡變動之所以表現出不同的優勢,關鍵在於SPF算法。OSPF的SPF算法以IP地址爲基礎,每一條最優路徑關心的都是途徑的IP地址是什麼;而集成IS-IS由於以CLNS爲基礎又支持IP,所以SPF分爲ISO和IP SPF,有Area ID,System ID ,Circuit ID以及鏈路開銷作爲價值觀,IS-IS網絡已經可以構建起來,所以ISO SPF樹在乎的不是到達某一IP目的網段,而是怎樣以最短路徑到達每一個IS,既然IP地址是附屬品,那麼我一個IS發一個LSP就可以通告出很多這樣的東東,你既然能找到我,自然就能到達這些網段了。所以可以認爲IP SPF是在ISO SPF基礎上的特性。

正是由於這一點上的差異,在前綴變化時(就Area內路由而言),OSPF就要根據這個IP地址的變化重新泛洪LSA,並默認進行整個Area的SPF運算(若想改爲部分有針對性的SPF需要用命令),而且結果還是選的相同的鏈路,但是就得這麼折騰折騰;而IS-IS就不是很Care這種事情,有變化在LSP裏說一聲就行了,反正發這個LSP的IS沒有變,然後進行部分的IP SPF計算。

而在鏈路變化時,比如一條鏈路Down掉,雖然是很慘烈的事情,但是OSPF就要好一些。對於OSPF路由器來講就是失去個鄰居,而且以這條鏈路爲傳輸路徑的那些目的網段我都要重新進行SPF計算來確定最優路徑。IS-IS就不一樣了,傷筋又動骨,一箇中途的IS犧牲了,影響了後續N個IS的可達,每個IS又能通告N個IP網段,這樣對於一個IP網絡而言,N^2個IP網段的變動(最壞加誇張的考慮),無疑是比OSPF倒黴多了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章