◆郭慧慧 宋媛媛 胡曦明,2 劉勝強
(1.陜西師范大學計算機科學學院 陜西 710119;2.現代教學技術教育部重點實驗室 陜西 710119;3.廣東省電信規劃設計院有限公司 廣東 510630)
IS-IS協議可靠性原理與技術研究
◆郭慧慧1宋媛媛1胡曦明1,2劉勝強3
(1.陜西師范大學計算機科學學院 陜西 710119;2.現代教學技術教育部重點實驗室 陜西 710119;3.廣東省電信規劃設計院有限公司 廣東 510630)
本文針對IS-IS協議在區域設計時的可靠性問題,利用華三模擬器搭建局域網環境,進行了區域組網設計。通過實驗分析了在動態路由過程中,IS-IS鏈路狀態PDU對于默認路由所采取的ATT字段置位,以及為避免路由滲透形成環路所采取的路由滲透標識的機制。研究結果顯示,IS-IS協議在運行過程中的可靠性,可以為電力、交通等行業構建運營支撐網絡的設計與規劃提供可靠性實驗數據支持。
IS-IS;動態路由協議;鏈路狀態;內部網關協議
IS-IS是 CLNS網絡環境中的一部分,用于提供在該環境中自動及動態地對數據包進行路由選擇的功能。它是一種鏈路狀態路由選擇協議,因此會通過鄰接關系獲得路由選擇信息并將這些信息放入鏈路狀態數據庫,采用SPF算法確定到達網絡中各個目的最優路徑[i]。在運行鏈路狀態路由協議的網絡內,合理的區域劃分既可以控制鏈路狀態數據庫的規模,也可以降低因計算、維護和更新路由信息而消耗鏈路帶寬和路由器軟、硬件資源[ii]。因此,區域設計的可靠性就顯得尤為重要。文獻[3]提出了基于數字證書的安全擴展方法提高了 IS-IS的安全性[iii]。本文主要針對IS-IS的可靠性,分析了 IS-IS的默認路由產生的問題和解決方法,以及引入路由滲透的原因和避免產生環路的機制。
1.1 路由等級
在OSI中把路由劃分了4個級別,分別是Level 0路由、Level 1路由、Level 2路由、Level 3路由。Level 0路由相當于TCP/IP中的ARP表項,Level 1路由相當于OSPF中的區域內路由,Level 2路由相當于區域外路由,Level 3路由實際上相當于自治系統外路由[iv]。
集成IS-IS協議是運行在IP網絡中的,所以在集成IS-IS中就只有Level 1路由和Level 2路由,而Level 0路由相當于被IP網絡中的ARP、ICMP和DHCP取代了,Level 3路由被IP網絡中的BGP取代了。IS-IS協議支持2層分層體系,以管理和規劃大型網絡中的路由選擇,這種層次化的路由選擇結構使域中的路由選擇效率更高[v]。
1.2 路由器角色
在IS-IS中可以把區域分為兩個層次,分別是Level 1區域和Level 2區域,相應的IS-IS中的路由器可劃分為三個角色,分別是Level 1路由器(Level 1-only)、Level 2路由器(Level 2-only)、Level 1和Level 2路由器(Level 1-2)。
1.3 區域劃分
在OSPF中會把區域分為兩個層次:骨干區域和非骨干區域。并且規定區域0(Area 0)為骨干區域,其他非骨干區域可以通過區域邊界路由器ABR來連接到骨干區域,則ABR既屬于骨干區域,也屬于非骨干區域[vi]。因此,OSPF的區域劃分是基于ABR的接口的。而在IS-IS中一個路由器只能屬于一個特定的區域,它也會有類似OSPF的骨干區域和非骨干區域之說,不過在IS-IS中并沒有嚴格指明哪一個區域為骨干區域,在IS-IS中所有建立L2的鄰接關系構成了Level 2子域,相當于一個骨干網。因此IS-IS中的區域劃分是基于路由器之間的鏈路的[vii]。
IS-IS協議的主要目標包括路由選擇信息的收集與擴散以及在網絡的節點之間選擇最佳路徑,因此IS-IS鏈路狀態數據庫是實現IS-IS協議目標的基礎。存儲在鏈路狀態數據庫中的信息元稱為鏈路狀態數據包(LSP),LSP中包含著IS-IS路由器生成的描述其當時所處環境的路由選擇信息。LSP的類型有4種,分別是IS-IS Hello(IIH)、鏈路狀態PDU(LSP)、完全序列號PDU(CSNP)、部分序列號PDU(PSNP)。對IS-IS來講,Hello數據包起三個作用[viii]:發現鄰居路由器、協商并建立鄰接關系、鄰接關系“保活”,其余數據包在鏈路狀態數據庫同步過程中主要的作用是進行數據庫的同步與泛洪。
3.1 實驗拓撲圖及其配置

圖1 實驗拓撲圖

圖2 RTB的配置過程
如圖1所示,把IS-IS區域劃分為Area 10和Area 20,Area 10中的RTA為L1路由器,RTB和RTC都是L1/2路由器,可以連到區域外,在Area 20中的RTD和RTE路由器都是L2路由器。這里只給出 RTB路由器的配置過程,其余路由器的配置過程與其相似。
3.2 實驗結果分析

圖3 RTA ping 10.2.2.1

圖4 RTA 的is-is route

圖5 RTB的LSDB
我們用RTA去ping 10.2.2.1,如圖3所示,發現可以ping 通,但查看RTA的IS-IS轉發表中并沒有10.2.2.0/24網段的路由,根據我們在IP路由中所學的知識可知,RTA一定是通過了一條默認路由到達了區域外。在RTA的LSDB中會有3條LSP條目,一條是RTA自己的LSP,另外兩條是他的鄰居RTB和RTC生成的LSP。在RTB和RTC生成的LSP中ATT字段置為1,而RTA的LSP中ATT并不置1,在RTB生成的L2的LSP中該位也不置1。
在IS-IS中ATT字段的作用就是L1區域內的路由器會通過LSP中該字段的置位情況,來識別已建妥L2鄰接關系的L1/2路由器。需要注意的是,如圖5所示,L1/2路由器只會在L1 LSP中把ATT置1,不會在L2 LSP中把ATT置1,因為它的鄰居路由器如果收到了它發送的L1 LSP中ATT置1了,它的鄰居就知道自己也可以通過 L1/2路由器到達區域外。而且他的鄰居如果有L1的鄰接關系,它的鄰居也會把自己的ATT置1向其他路由器表明自己可以到達區域外。
觀察如圖1所示的實驗拓撲可知,在IS-IS L1區域內,L1路由器在轉發目的網絡為本區域之外的數據包時,只能遵循默認路由,因此會喪失路由選擇的精確性。若IS-IS L1區域內只部署了一臺通往外部區域的 L1/2路由器,其實也并不影響路由選擇的精確性。可要是部署了多臺L1/2路由器,L1路由器在轉發目的網絡為本區域之外的數據包時,則只能把數據包交給在同一區域離本機最“近”的L1/2路由器。然而,這臺L1/2路由器實際到目的網絡可能最近,也可能不是最近。因為L1路由器無法得知區域外的鏈路狀態,所以在轉發目的網絡為本區域之外的數據包時只能依靠默認路由。
默認路由會產生次優路由,在IS-IS中默認情況下L1/2路由器是不會把本機所連L2區域的路由,或學自L2鄰居的路由,通告進L1區域。因此,次優路由的解決辦法就是在L1/2路由器上配置路由滲透的命令,將L2區域內的路由通過L1/2路由器通告進L1區域。
4.1 實驗配置及其結果分析

圖6 路由滲透后的結果
在RTB上輸入了路由滲透的命令(只有在L1/2路由器上配置路由滲透才有意義)后,查看RTA的isis route,這時路由表中出現了10.2.2.0/24網段,如圖6所示,說明配置成功了。如果在RTB和 RTC上都配置了路由滲透命令后,則 RTA在去往10.2.2.0/24目的網絡時自然而然的選擇開銷最短的鏈路去往區域外。
4.2 路由滲透可能產生的問題
在設計IS-IS區域時,要想追求更高的靈活性和可靠性,就得把更為精確的路由信息從L2區域泄露進L1區域,讓L1路由器更好地了解外部區域。那么,當IP前綴A(隸屬于L1區域之外的L2區域)由某臺L2路由器通告給了RTA,RTA再把這條IP前綴置入自生成的L1 LSP的IP內部可達信息TLV,然后通告進L1區域。RTB收到了這條L1 LSP后,會認為該IP前綴隸屬于本L1區域,然后再將其置入自生成的L2 LSP的IP內部可達信息TLV,并通告回L2區域,路由環路就此形成[ix]。
在IS-IS協議中解決路由環路的機制是,在路由滲透之后,路由表中出現的 10.2.2.0/24網段的標志位出現了一個新的標志U,U是路由滲透狀態表識符,如果設置為“UP”則可避免由L2區域發送到 L1區域的 LSP又返回給 L2區域。雖然 RTA的IP-Internal字段中有10.2.2.0/24(因為路由滲透后RTB和RTC發送的L1 LSP的IP-Internal中有10.2.2.0/24),但RTB和RTC不會把那條IP前綴放進自己的L2 LSP的IP-Internal中然后通告給L2路由器,因為它看到了Up/Down置1 的路由。當L1/2路由器將一條IP前綴從L2區域通告進L1區域時,會將該IP前綴相關聯的 Up/Down置 1.若 L1/2路由器從 L1路由域收到了一條Up/Down置1的IP前綴,則不會將其通告給L2的鄰居路由器。因此,標志U可以避免在路由滲透后產生環路。
4.3 LSP幾個中重要的協議字段

圖7 LSDB中顯示的LSP的字段

圖8 查看is-is協議的基本信息
如圖7所示,LSDB表中包含LSP數據包的摘要信息,如LSP ID、序列號、校驗和、剩余生存時間、長度等字段。如圖8所示,LSP的最大生存時間(LSP-max-age)是1200 秒,LSP的刷新間隔(LSP-refresh)是900秒。
剩余生存時間字段(HoldTime),表示LSP在“壽命到期”之前尚能存活的時間。在HoldTime值為0之前,該LSP會被其源路由器刷新。如果該路由器從網絡中移除,則不能刷新此LSP,該LSP的HoldTime值會一直遞減至0(網絡中的所有IS-IS路由器上其值必須一致)。在 HoldTime值遞減的過程中,HoldTime值從1200秒遞減到0秒后,該LSP還會在LSDB中存活60秒。因為在IS-IS協議中,定義了一個零壽命生存時間(Zero Age Life time),當LSP剩余生存時間為0時,則所有擁有此LSP拷貝的路由器在經過60秒的寬限時間后最終會將此LSP從其LSDB中清除。
在這個字段的設計上IS-IS要比 OSPF更加靈活。OSPF的LSA中也有一個類似的字段叫做“壽命字段”,說到“壽命”,顯而易見,它是從0開始到某個規定值,然后壽命結束了。因此,在OSPF中規定了不同的最大生存時間,那么LSA的壽命字段結束值也就不同。而在 IS-IS中定義的最大生存時間是 HoldTime字段的初始值,不管定義的多少,都會從這個初始值開始遞減至0,可以認為LSP壽命結束值是一個常量。所以區域中的路由器看到該字段的值為0,就知道該LSP已失效,然后在規定的時間內把它清除掉。
IS-IS本身是一個網絡層協議,運行在數據鏈路層之上,可以免受 IP數據包欺騙和類似的拒絕服務攻擊。用于 IP路由的IS-IS協議的成功使用和廣泛接受歸功于IS-IS協議的靈活性、可靠性和可擴展性。另外,IS-IS協議不依賴IP層,在IPv4、IPv6路由的混合承載時,給運營商網絡平滑遷移提供了便捷。在IS-IS協議中,ATT置1產生默認路由,默認路由產生次優路由,次優路由的解決辦法是路由滲透,路由滲透后Up/Down置位出現標志U,Up/Down置位可以避免路由環路,這樣就保證了協議的可靠性。與OSPF相比較,IS-IS可以容納更多的路由條目,當通告相同的路由條目時,ISIS的LSDB的規模明顯比OSPF更小。因此,IS-IS更受大型網絡運營商的青睞。
[1]李彥剛,鄧文平,王宏,劉亞萍.域內路由協議 OSPF與IS-IS差異性的研究與分析[J].計算機科學,2015.
[2]康京山,韓春剛.集成IS-IS路由選擇協議的研究[J]. 無線電通信技術,2007.
[3]劉玉貞,李珩,李炳彰.一種基于數字證書的安全IS-IS路由協議[J].無線電工程,2016.
[4]張鑫,朗瑩.網絡規劃中路由協議選擇[J].網絡安全技術與應用,2015.
[5]李天佑,許敏.基于集成 IS-IS路由協議網絡拓撲發現初探[J].計算機應用,2007.
[6]楊敏.基于Packet Tracer的OSPF仿真實驗[J].網絡安全技術與應用,2016.
[7]翁國梁.IS-IS路由協議分析與大型網絡路由設計[J].網絡安全技術與應用,2015.
[8]劉海濤.淺析內部網關協議 IS-IS[J].邢臺職業技術學院學報,2016.
[9]孫余強譯.Jeff Doyle.OSPF和IS-IS詳解[M].北京:人民郵電出版社,2014.
[10]殷文珊.城域網下發缺省路由導致路由環路的故障分析[J].中國新通信,2014.
中央高校基本科研業務費專項資金資助項目(GK201503065),現代教學技術教育部重點實驗室開放課題資助項目(SYSK201501),陜西師范大學非師范拔尖創新人才培養計劃2017年度項目。