熊建輝
(福建師范大學(xué) 協(xié)和學(xué)院,福州 350117)
互聯(lián)網(wǎng)經(jīng)濟(jì)蓬勃發(fā)展及萬物互聯(lián),數(shù)據(jù)流量越來越大,運(yùn)營商網(wǎng)絡(luò)不斷升級擴(kuò)大、骨干網(wǎng)絡(luò)路由器承載的路由條目越來越多、路由壓力不斷增大,路由的快速收斂和穩(wěn)定性非常重要.中間系統(tǒng)到中間系統(tǒng) (Intermediate System-to- Intermediate System,ISIS)作為ISO定義的路由協(xié)議標(biāo)準(zhǔn)(ISO/IEC 10589)并一開始就應(yīng)用在運(yùn)營商網(wǎng)絡(luò)中.并且IS-IS穩(wěn)定性和可擴(kuò)展性好,在巨量路由條目的情況下,IS-IS比OSPF更有效率,更適合網(wǎng)絡(luò)運(yùn)營商部署[1],其巨大的吸引力也促使其成為了骨干網(wǎng)絡(luò)中路由協(xié)議的研究和應(yīng)用熱點(diǎn).
本文重點(diǎn)是研究IS-IS路由協(xié)議的技術(shù)框架、原理,并基于 Dynamips 和思科 unzip-c7200-js-mz.124 -12.bin的IOS仿真設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)多區(qū)域多網(wǎng)絡(luò)類型的集成IS-IS仿真實(shí)例網(wǎng)絡(luò),驗(yàn)證了IS-IS協(xié)議工作機(jī)制,仿真設(shè)計(jì)方案還可直接移植到實(shí)際的網(wǎng)絡(luò)中.
因互聯(lián)網(wǎng)的開放性而包含了豐富的協(xié)議棧,最著名的當(dāng)屬 ISO/OSI RM 和 TCP/IP.并且 OSI RM 作為ISO標(biāo)準(zhǔn),但隨著技術(shù)的發(fā)展,TCP/IP成了事實(shí)上的標(biāo)準(zhǔn).IS-IS 與 CLNP、ES-IS 作為 OSI RM 中網(wǎng)絡(luò)層的三大協(xié)議,并且相互獨(dú)立,均直接封裝在鏈路層幀內(nèi)、效率高.IS-IS協(xié)議開發(fā)之初就是應(yīng)用在運(yùn)營商(ISP)網(wǎng)絡(luò),為基于Dijkstra的SPF算法的一種鏈路狀態(tài)路由協(xié)議.根據(jù) ISO/IEC 10589 標(biāo)準(zhǔn),最初 IS-IS 僅支持OSI中的CLNP路由[2],但由于IP的發(fā)展壯大及IS-IS優(yōu)良特性,后來IETF對IS-IS進(jìn)行了兼容性改造,形成了 RFC1195,才同時(shí)支持 OSI和 TCP/IP協(xié)議棧,也即“集成”或“雙?!盜S-IS[3].考慮到 TCP/IP 占主導(dǎo)地位,本文中所討論的為集成IS-IS,為了討論的方便以下描述中直接用IS-IS代替集成IS-IS.
IS(Intermediate System)即中間系統(tǒng),即路由器,與之相對應(yīng)的有ES(End System)端系統(tǒng),如計(jì)算機(jī).NSAP(Network Service Access Point)即網(wǎng)絡(luò)服務(wù)訪問點(diǎn),作為OSI中網(wǎng)絡(luò)層的地址,代表整個(gè)節(jié)點(diǎn)(而非節(jié)點(diǎn)的某個(gè)接口)即一個(gè)IS,其結(jié)構(gòu)如圖1所示,長度介于8字節(jié)到20字節(jié)字節(jié),分為IDP(域的初始部分)和DSP(域的特定部分);IDP用來標(biāo)識域,相當(dāng)于IP地址中的主網(wǎng)絡(luò)號,又分為AFI(授權(quán)和格式標(biāo)識符)和IDI(初始域標(biāo)識符),AFI表示地址分配機(jī)構(gòu)和地址格式(如AFI為49是RFC1618中預(yù)留的私有地址),IDI用來標(biāo)識域;DSP相當(dāng)于IP地址中的子網(wǎng)號和主機(jī)地址,其中 High Order Dsp 和 IDP 的 AFI、IDI一起構(gòu)成 Area 字段,作為域的區(qū)域地址;System ID 即系統(tǒng)地址固定長度為6字節(jié),標(biāo)識區(qū)域中的路由器(IS),在每個(gè)區(qū)域中要保持唯一性;NSEL即選擇位,標(biāo)識IS上的進(jìn)程(端口),把NSEL為0x00的NSAP地址稱為NET地址.即使IS-IS工作在純IP網(wǎng)絡(luò)中時(shí),也需要NSAP地址,并且思科公司把NSAP地址從右向左分別區(qū)分為1個(gè)字節(jié)NSEL、6個(gè)字節(jié)的系統(tǒng)ID和其余至少3個(gè)字節(jié)的區(qū)域地址等三個(gè)部分.
圖1 NSAP 地址格式
SNAP(Subnet point of Attachment)子網(wǎng)接入點(diǎn),為鏈路層地址,類似與以太網(wǎng)中的MAC地址.電路地址是路由器(IS)上標(biāo)識不同接口的,在點(diǎn)到點(diǎn)網(wǎng)絡(luò)中用SNAP表示.在以太網(wǎng)中用6字節(jié)的系統(tǒng)ID加1字節(jié)的接口編號表示電路地址,并且在思科公司設(shè)備中用hostname代替系統(tǒng)ID.一個(gè)路由器(IS)由于有多條鏈路因此需要有多個(gè)SNAP地址,但只有一個(gè)NSAP地址.
IS-IS PDU:IS-IS 為了形成鄰接表、得到 LSDB、生成拓?fù)浔淼?引入了 IS-IS PDU(協(xié)議數(shù)據(jù)單元),ISIS PDU是直接封裝在數(shù)據(jù)鏈路層中而非IP或CLNP的首部之后.IS-IS PDU 主要為 Hello、LSP、PSNP 及CSNP 等四類報(bào)文,報(bào)文格式如表1所示,其中:附加頭部字段與TLV字段均為8位的整數(shù)倍,具體長度與PDU報(bào)文類型有關(guān).特別值得說的是TLV字段,其包括Type(8位)、Length(8位,表示Value值的長度)和Value(值),IETF可根據(jù)需要新定義Type值向后兼容,從而可以拓展IS-IS協(xié)議的應(yīng)用領(lǐng)域.
表1 IS-IS PDU 報(bào)文格式
IS-IS網(wǎng)絡(luò)類型:IS-IS支持多路訪問廣播網(wǎng)絡(luò)(BMA)和點(diǎn)到點(diǎn)網(wǎng)絡(luò)(P2P)兩種網(wǎng)絡(luò)類型.
IS-IS區(qū)域類型:為了支持大規(guī)模的路由網(wǎng)絡(luò),ISIS域(Domain)劃分成兩層結(jié)構(gòu),即骨干區(qū)域、非骨干區(qū)域.非骨干區(qū)域有區(qū)域地址,骨干區(qū)域?yàn)檫壿媴^(qū)域沒有區(qū)域地址.區(qū)域中的路由器角色分Level-1、Level-2、Level-1-2三種.骨干區(qū)域由連續(xù)Level-2路由器和Level-1-2路由器組成,負(fù)責(zé)傳遞交換不同區(qū)域間LSP,骨干區(qū)域如圖2所示.骨干區(qū)域中的Level-2路由器必須是物理連續(xù)的,以保證骨干區(qū)域的連續(xù)性.每臺路由器只能屬于一個(gè)區(qū)域,區(qū)域邊界在鏈路上.
IS-IS作為一種鏈路狀態(tài)的路由協(xié)議,每個(gè)路由器均形成一個(gè)鄰接表,建立鄰居關(guān)系后維護(hù)一個(gè)信息一致的鏈路狀態(tài)數(shù)據(jù)庫(LSDB),進(jìn)而形成整個(gè)網(wǎng)絡(luò)的拓?fù)鋱D(拓?fù)浔?,在利用Dijkstra的SPF算法計(jì)算出IS-IS路由條目,最終路由器根據(jù)管理距離值(AD)選擇是否放入路由表.
圖2 IS-IS 骨干區(qū)域
(1)建立鄰接關(guān)系
通過發(fā)送Hello報(bào)文用來建立和維護(hù)鄰接關(guān)系形成鄰接表,Hello報(bào)文有ESH、ISH及IIH等三種,其中ESH與ISH是發(fā)生在ES與IS之間的;IIH即IS-IS Hello,由IS定期發(fā)給鄰居IS以建立并維持鄰接關(guān)系.Level-1路由器只與同區(qū)域Level-1和Level-1-2路由器形成鄰居關(guān)系,Level-2路由器可與同區(qū)域或者其它區(qū)域Level-2和Level-1-2路由器形成鄰居關(guān)系.同時(shí)屬于Level-1和Level-2的路由器稱為Level-1-2路由器,可與同區(qū)域的Level-1和Level-1-2路由器形成Level-1鄰居關(guān)系,也可與同區(qū)域或者其他區(qū)域的Level-2和Level-1-2路由器形成Level-2的鄰居關(guān)系.
(2)維護(hù)LSDB形成拓?fù)浔?/p>
形成鄰接關(guān)系的IS之間會發(fā)送LSP(鏈路狀態(tài)PDU),用來交換鏈路狀態(tài)信息實(shí)現(xiàn)LSDB同步.在BMA網(wǎng)絡(luò)中IS-IS選舉一個(gè)路由器作為DIS(Designated Intermediate System).DIS 負(fù)責(zé)創(chuàng)建和更新偽節(jié)點(diǎn)(Pseudonodes),并生成偽節(jié)點(diǎn)的鏈路狀態(tài)協(xié)議數(shù)據(jù)單元LSP.偽節(jié)點(diǎn)是用來模擬廣播網(wǎng)絡(luò)的一個(gè)虛擬節(jié)點(diǎn),偽節(jié)點(diǎn)通過DIS的System ID和一個(gè)字節(jié)的Circuit ID(非0值)來標(biāo)識.使用偽節(jié)點(diǎn)可簡化網(wǎng)絡(luò)拓?fù)?使路由器產(chǎn)生的LSP長度較小,當(dāng)網(wǎng)絡(luò)發(fā)生變化時(shí),需要產(chǎn)生的LSP數(shù)量也會較少,減少SPF的資源消耗使SPF 計(jì)算更快.Level-1 和 Level-2 的 DIS 分別選舉,用戶可以為不同級別的DIS選舉設(shè)置不同的優(yōu)先級.DIS優(yōu)先級數(shù)值最大的被選為DIS.如果優(yōu)先級相同,則其中MAC地址最大的路由器會被選中.MBA網(wǎng)絡(luò)中IS-IS PDU報(bào)文通過組播方式傳遞,Level-1的組播地位為01:80:c2:00:00:14,Level-2的組播地址為01:80:c2:00:00:15.P2P 網(wǎng)絡(luò)中不選舉 DIS,IS-IS PDU通過單播方式傳遞.
CSNP(完全系列號PDU),用來發(fā)布IS上完整的鏈路狀態(tài)數(shù)據(jù)庫,PSNP(部分序列號PDU)用來確認(rèn)和請求鏈路狀態(tài)信息.PSNP在P2P網(wǎng)絡(luò)中,用于對接收到的LSP進(jìn)行確認(rèn);在BMA網(wǎng)絡(luò)中用于請求所缺少的LSP.CSNP在BMA網(wǎng)絡(luò)中由DIS周期性發(fā)送,以保證LSDB的準(zhǔn)確性;在P2P網(wǎng)絡(luò)中僅在建立鄰接時(shí)使用.
(3)計(jì)算路由條目
IS-IS網(wǎng)絡(luò)中路由器均擁有一致的鏈路狀態(tài)數(shù)據(jù)庫并得到拓?fù)鋱D后,將根據(jù)Dijkstra的SPF算法計(jì)算并創(chuàng)建路由條目[4].IS-IS根據(jù)路徑Metric值來選擇到目的網(wǎng)絡(luò)的最佳路徑,接口缺省的Metric值為10,鏈路Metric值等于路徑所經(jīng)過出接口Metric之和.
維護(hù)Level-1級的LSDB僅包含本區(qū)域的路由信息,維護(hù)Level-2級的LSDB包含區(qū)域間的路由信息.同時(shí)維護(hù)Level-1級和Level-2級的兩個(gè)LSDB時(shí),Level-1級的LSDB用于區(qū)域內(nèi)路由,Level-2級的LSDB用于區(qū)域間路由.
路由器默認(rèn)為Level-1-2,需要同時(shí)維護(hù)2個(gè)LSDB及發(fā)送2種類型的LSP.為提高路由效率建議做如下優(yōu)化:區(qū)域內(nèi)路由器設(shè)置為Level-1,區(qū)域間路由器設(shè)置為Level-2,區(qū)域邊界路由器默認(rèn)為Level-1-2不變.優(yōu)化后Level-1路由器會添加一條指向Level-1-2并且ATT位置1的路由器的默認(rèn)路由.同時(shí)默認(rèn)情況下,Level-1級的路由不含Level-2級的路由,為了提高可靠性或路由策略,可以根據(jù)需要把(部分)Level-2級的路由發(fā)布到Level-1級[5],這優(yōu)化稱為路由泄漏.
本實(shí)驗(yàn)基于Dynamips和思科unzip-c7200-js-mz.1 24-12.bin型號的IOS仿真了一個(gè)包含5臺路由器[6]的多區(qū)域含兩種網(wǎng)絡(luò)類型的IS-IS網(wǎng)絡(luò),R1、R2、R3通過BMA網(wǎng)絡(luò)(Ethernet)相連同處于區(qū)域49.0001,R4、R5分別處于區(qū)域49.0004、49.0005,該網(wǎng)絡(luò)設(shè)備間連接及接口信息等情況如圖3所示.實(shí)驗(yàn)過程中根據(jù)需要設(shè)置抓包并分析所抓數(shù)據(jù)包、鄰居表、LSDB、路由表等.
按表2,分別配置路由器R1~R5各端口的 IP地址和子網(wǎng)掩碼等信息,其中Lo0為環(huán)回網(wǎng)卡,測試用.
圖3 IS-IS 網(wǎng)絡(luò)拓?fù)?/p>
表2 基本配置表
按照表3,分別配置路由器R1~R5的NET地址,其中Level類型為默認(rèn)值,所有路由器及接口均啟用IS-IS.
表3 IS-IS 配置表
在R1上查看鄰居表、拓?fù)鋱D及LSDB表如圖4所示,可以看出與R2、R3通過f0/0口建立了Level-1-2類型的鄰居關(guān)系,路由器默認(rèn)為Level-1-2,因此含有Level-1 和 Level-2 的 LSDB.同樣在 R2、R3、R4、R5上也可以看到類似的表項(xiàng).
在R1上測試到R5上lo0端口的可達(dá)性,如圖5所示,測試成功.
根據(jù)上文IS-IS優(yōu)化原理及本網(wǎng)絡(luò)拓?fù)?分別對路由器R1、R4、R5的Level類型優(yōu)化設(shè)置為Level-1、Level-2、Level-2.優(yōu)化后 R1 的 ISIS 鄰居表不變,但I(xiàn)SIS拓?fù)浔砗蚅SDB如圖6所示,表項(xiàng)優(yōu)化率高達(dá)70%.同樣,在 R4、R5 上上也會優(yōu)化率達(dá) 30%.優(yōu)化后R1上會自動(dòng)添加了一條默認(rèn)路由(*標(biāo)記),如圖7所示.
圖4 R1 的鄰居表、拓?fù)浔砑?LSDB
圖5 R1 到 R5 的可達(dá)性測試
圖6 優(yōu)化后 R1 的拓?fù)浔砗?LSDB
圖7 優(yōu)化后增加的默認(rèn)路由
進(jìn)一步,當(dāng)需要提高49.0001區(qū)域內(nèi)部到達(dá)45.1.1.0/24的可靠性或需要讓該區(qū)域內(nèi)擁有該路由條目,可在R3上泄漏45.1.1.0/24路由到Level-1,泄漏后R1上的路由表如圖8所示.
為更近一步驗(yàn)證,分別在 R1的f0/0、R2的s1/0、R3 的 f1/0 及 R5 的 s1/1 口抓包.R1 f0/0 端口抓獲到周期性的 Level-1、Level-2 Hello 包 (IIH,BMA 網(wǎng)絡(luò))分別如圖9、圖10所示.
圖8 R1 上路由泄漏后的路由
圖10 R1 的 f0/0 抓獲的 Level-2 Hello 包 (IIH)
優(yōu)化IS-IS后R1后在f0/0端口抓獲到周期性的Level-1Hello 包 (IIH,BMA 網(wǎng)絡(luò))、同樣 R2 s1/0 端口抓獲到周期性的 Level-2 Hello 包 (IIH,P2P 網(wǎng)絡(luò)),分別如圖11、圖12所示.
圖11 R1 的 f0/0 抓獲的 Level-1 Hello 包 (IIH)
圖12 R2 的 s1/0 抓獲的 Level-2 Hello 包 (IIH)
在R3的f1/0端口抓獲的L2 CSNP包(周期性發(fā)自 R4,BMA 網(wǎng)絡(luò)中),如圖13所示.P2P 網(wǎng)絡(luò)中的CSNP包就不再一一列舉了.
圖13 R3 的 f1/0 抓獲的 L2 CSNP 包
在R5的s1/1口抓獲的L2 PSNP包(R5回應(yīng),P2P 網(wǎng)絡(luò))如圖14所示,上框是 PDU 首部 (部分),中間框是附字段表示的是LSP入口,Type值為0x09,Value加首部字段(PSNP首部),下框是TLV字段(該TLV 值長度為 16 字節(jié),Value 值為 0x04 ab 33 33 33 33 33 33 01 00 00 00 00 0a 0a 98),功能是對 R3 發(fā)來的LSP的回復(fù).R3發(fā)來的LSP報(bào)文與本報(bào)文摘要及順序如圖15所示.BMA網(wǎng)絡(luò)中的PSNP包就不再一一列舉.
以上驗(yàn)證:在IS-IS路由協(xié)議中不論是BMA還是P2P網(wǎng)絡(luò)中均通過周期性IIH(Hello)包建立保持鄰接關(guān)系;PSNP在P2P網(wǎng)絡(luò)中用于對接收到的LSP進(jìn)行確認(rèn),在BMA網(wǎng)絡(luò)中用于請求所缺少的LSP;CSNP在BMA網(wǎng)絡(luò)中由DIS周期性發(fā)送以保證LSDB的準(zhǔn)確性,在P2P網(wǎng)絡(luò)中僅在建立鄰接時(shí)發(fā)送一次.
圖14 R5的s1/1抓獲的L2PSNP包
圖15 R5 的 s1/1 觀察到 LSP 及 PSNP 包
通過以上仿真實(shí)驗(yàn),結(jié)合NSAP地址、鄰居表、拓?fù)浔?、路由表及LSDB表及抓獲的Hello、LSP、PSNP、CSNP等信息分析了IS-IS協(xié)議的工作原理并解析了各種表及IIH、LSP信息的轉(zhuǎn)發(fā)的過程,驗(yàn)證了IS-IS路由協(xié)議整個(gè)技術(shù)框架和原理.
IS-IS協(xié)議既支持CLNP路由也支持IP路由,還可通過TLV拓展IS-IS PDU實(shí)現(xiàn)向后兼容IPv6、MPLSTE[7]等,工作原理復(fù)雜.通過 Dynamips 平臺及 unzipc7200-js-mz.124-12.bin IOS仿真設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)ISIS實(shí)例網(wǎng)絡(luò),并基于對鄰接表、LSDB、拓?fù)浔淼认嚓P(guān)信息和抓獲的報(bào)文的分析,清晰驗(yàn)證了IS-IS路由協(xié)議技術(shù)原理和特性.并且該仿真設(shè)計(jì)方案可直接移植到實(shí)際網(wǎng)絡(luò)中,對指導(dǎo)實(shí)際網(wǎng)絡(luò)的應(yīng)用有一定應(yīng)用價(jià)值.