(2) 區(qū)域地址
IDP和DSP中的HODSP(High Order DSP)一起,既能夠標(biāo)識(shí)路由域,也能夠標(biāo)識(shí)路由域中的區(qū)域,因此,它們一起被稱為區(qū)域地址(Area Address)。兩個(gè)不同的路由域中不允許有相同的區(qū)域地址。
一般情況下,一臺(tái)路由器只需要配置一個(gè)區(qū)域地址,且同一區(qū)域中所有節(jié)點(diǎn)的區(qū)域地址都要相同。為了支持區(qū)域的平滑合并、分割及轉(zhuǎn)換,一臺(tái)路由器最多可配置3個(gè)區(qū)域地址。
(3) System ID
System ID用來(lái)在區(qū)域內(nèi)唯一標(biāo)識(shí)主機(jī)或路由器。它的長(zhǎng)度固定為48bit(6字節(jié))。
在實(shí)際應(yīng)用中,一般使用Router ID與System ID進(jìn)行對(duì)應(yīng)。假設(shè)一臺(tái)路由器使用接口Loopback0的IP地址168.10.1.1作為Router ID,則它在IS-IS使用的System ID可通過(guò)如下方法轉(zhuǎn)換得到:
– 將IP地址168.10.1.1的每一部分都擴(kuò)展為3位,不足3位的在前面補(bǔ)0;
– 將擴(kuò)展后的地址168.010.001.001重新劃分為3部分,每部分由4位數(shù)字組成,得到的1680.1000.1001就是System ID。
實(shí)際System ID的指定可以有不同的方法,但要保證能夠唯一標(biāo)識(shí)主機(jī)或路由器。
(4) SEL
SEL(NSAP Selector,有時(shí)也寫成N-SEL)的作用類似IP中的“協(xié)議標(biāo)識(shí)符”,不同的傳輸協(xié)議對(duì)應(yīng)不同的SEL。在IP中,SEL均為00。
(5) 路由方式
由于這種地址結(jié)構(gòu)明確地定義了區(qū)域,Level-1路由器很容易識(shí)別出發(fā)往它所在的區(qū)域之外的報(bào)文,這些報(bào)文需要轉(zhuǎn)交給具有Level-2功能的路由器去處理。
Level-1路由器利用System ID進(jìn)行區(qū)域內(nèi)的路由,如果發(fā)現(xiàn)報(bào)文的目的地址不屬于自己所在的區(qū)域,就將報(bào)文轉(zhuǎn)發(fā)給最近的Level-1-2路由器。
Level-2路由器根據(jù)區(qū)域地址進(jìn)行區(qū)域間的路由。
3. NET
NET(Network Entity Title,網(wǎng)絡(luò)實(shí)體名稱)指示的是IS本身的網(wǎng)絡(luò)層信息,不包括傳輸層信息(SEL=0),可以看作是一類特殊的NSAP,即SEL為0的NSAP地址。因此,NET的長(zhǎng)度與NSAP的相同,最多為20個(gè)字節(jié),最少為8個(gè)字節(jié)。
通常情況下,一臺(tái)路由器配置一個(gè)NET即可,當(dāng)區(qū)域需要重新劃分時(shí),例如將多個(gè)區(qū)域合并,或者將一個(gè)區(qū)域劃分為多個(gè)區(qū)域,這種情況下配置多個(gè)NET可以在重新配置時(shí)仍然能夠保證路由的正確性。由于一臺(tái)路由器最多可配置3個(gè)區(qū)域地址,所以最多也只能配置3個(gè)NET。在配置多個(gè)NET時(shí),必須保證它們的System ID都相同。
例如NET為:ab.cdef.1234.5678.9abc.00,則其中Area為ab.cdef,System ID為1234.5678.9abc,SEL為00。
IS-IS區(qū)域
1. 兩級(jí)結(jié)構(gòu)
為了支持大規(guī)模的路由網(wǎng)絡(luò),IS-IS在路由域內(nèi)采用兩級(jí)的分層結(jié)構(gòu)。一個(gè)大的路由域被分成一個(gè)或多個(gè)區(qū)域(Areas)。區(qū)域內(nèi)的路由通過(guò)Level-1路由器管理,區(qū)域間的路由通過(guò)Level-2路由器管理。
2. Level-1與Level-2
(1) Level-1路由器
Level-1路由器負(fù)責(zé)區(qū)域內(nèi)的路由,它只與屬于同一區(qū)域的Level-1和Level-1-2路由器形成鄰居關(guān)系,維護(hù)一個(gè)Level-1的LSDB,該LSDB包含本區(qū)域的路由信息,到區(qū)域外的報(bào)文轉(zhuǎn)發(fā)給最近的Level-1-2路由器。
(2) Level-2路由器
Level-2路由器負(fù)責(zé)區(qū)域間的路由,可以與同一區(qū)域或者其它區(qū)域的Level-2和Level-1-2路由器形成鄰居關(guān)系,維護(hù)一個(gè)Level-2的LSDB,該LSDB包含區(qū)域間的路由信息。所有Level-2路由器和Level-1-2路由器組成路由域的骨干網(wǎng),負(fù)責(zé)在不同區(qū)域間通信,路由域中的Level-2路由器必須是物理連續(xù)的,以保證骨干網(wǎng)的連續(xù)性。只有Level-2路由器才能直接與路由域外的路由器交換數(shù)據(jù)報(bào)文或路由信息。
(3) Level-1-2路由器
同時(shí)屬于Level-1和Level-2的路由器稱為L(zhǎng)evel-1-2路由器,可以與同一區(qū)域的Level-1和Level-1-2路由器形成Level-1鄰居關(guān)系,也可以與同一區(qū)域或者其他區(qū)域的Level-2和Level-1-2路由器形成Level-2的鄰居關(guān)系。Level-1路由器必須通過(guò)Level-1-2路由器才能連接至其他區(qū)域。Level-1-2路由器維護(hù)兩個(gè)LSDB,Level-1的LSDB用于區(qū)域內(nèi)路由,Level-2的LSDB用于區(qū)域間路由。
& 說(shuō)明:
– 屬于不同區(qū)域的Level-1路由器不能形成鄰居關(guān)系。
– Level-2路由器是否形成鄰居關(guān)系則與區(qū)域無(wú)關(guān)。
圖2為一個(gè)運(yùn)行IS-IS協(xié)議的網(wǎng)絡(luò),其中Area1是骨干區(qū)域,該區(qū)域中的所有路由器均是Level-2路由器。另外4個(gè)區(qū)域?yàn)榉枪歉蓞^(qū)域,它們都通過(guò)Level-1-2路由器與骨干路由器相連。
圖2 IS-IS拓?fù)浣Y(jié)構(gòu)圖之一
圖3是IS-IS的另外一種拓?fù)浣Y(jié)構(gòu)圖。其中Level-1-2路由器不僅僅用來(lái)連接Level-1和Level-2路由器,而且還與其他Level-2路由器一起構(gòu)成了IS-IS的骨干網(wǎng)。在這個(gè)拓?fù)渲?,并沒(méi)有規(guī)定哪個(gè)區(qū)域是骨干區(qū)域。所有Level-2路由器和Level-1-2路由器構(gòu)成了IS-IS的骨干網(wǎng),他們可以屬于不同的區(qū)域,但必須是物理連續(xù)的。
圖3 IS-IS拓?fù)浣Y(jié)構(gòu)圖之二
& 說(shuō)明:
IS-IS的骨干網(wǎng)(Backbone)指的不是一個(gè)特定的區(qū)域。
IS-IS不論是Level-1還是Level-2路由,都采用SPF算法,分別生成最短路徑樹(Shortest Path Tree,SPT)。
3. 接口的路由層次類型
對(duì)于類型是Level-1-2的路由器,可能需要與某個(gè)對(duì)端只建立Level-1的鄰接關(guān)系,與另一個(gè)對(duì)端只建立Level-2的鄰接關(guān)系。可以通過(guò)設(shè)置相應(yīng)接口的路由層次類型來(lái)限制接口上所能建立的鄰接關(guān)系,如Level-1的接口只能建立Level-1的鄰接關(guān)系,Level-2的接口只能建立Level-2的鄰接關(guān)系。
對(duì)于Level-1-2的路由器,通過(guò)將某些接口配置為L(zhǎng)evel-2,還可以防止將Level-1的Hello報(bào)文發(fā)送到Level-2骨干網(wǎng)上,從而節(jié)省帶寬。
4. 路由滲透(Route Leaking)
通常情況下,IS-IS的區(qū)域也稱為L(zhǎng)evel-1區(qū)域,區(qū)域內(nèi)的路由通過(guò)Level-1的路由器進(jìn)行管理。所有的Level-2路由器構(gòu)成一個(gè)Level-2區(qū)域。因此,一個(gè)IS-IS的路由域可以包含多個(gè)Level-1區(qū)域,但只有一個(gè)Level-2區(qū)域。
Level-1區(qū)域必須且只能與Level-2區(qū)域相連,不同的Level-1區(qū)域之間并不相連。
Level-1區(qū)域內(nèi)的路由信息通過(guò)Level-1-2路由器發(fā)布到Level-2區(qū)域,因此,Level-2路由器知道整個(gè)IS-IS路由域的路由信息。但是,在缺省情況下,Level-2路由器并不將自己知道的其他Level-1區(qū)域以及Level-2區(qū)域的路由信息發(fā)布到Level-1區(qū)域。這樣,Level-1路由器將不了解本區(qū)域以外的路由信息,Level-1路由器只將去往其它區(qū)域的報(bào)文發(fā)送到最近的Level-1-2路由器,所以可能導(dǎo)致對(duì)本區(qū)域之外的目的地址無(wú)法選擇最佳的路由。
為解決上述問(wèn)題,IS-IS提供了路由滲透功能,使Level-1-2路由器可以將己知的其他Level-1區(qū)域以及Level-2區(qū)域的路由信息發(fā)布到指定的Level-1區(qū)域。
IS-IS的網(wǎng)絡(luò)類型
1. 網(wǎng)絡(luò)類型
IS-IS只支持兩種類型的網(wǎng)絡(luò),根據(jù)物理鏈路不同可分為:
– 廣播鏈路:如Ethernet、Token-Ring等。
– 點(diǎn)到點(diǎn)鏈路:如PPP、HDLC等。
& 說(shuō)明:
對(duì)于NBMA(Non-Broadcast Multi-Access)網(wǎng)絡(luò),如ATM,需對(duì)其配置子接口,并將子接口類型配置為點(diǎn)到點(diǎn)網(wǎng)絡(luò)或廣播網(wǎng)絡(luò)。IS-IS不能在點(diǎn)到多點(diǎn)(Point to MultiPoint,P2MP)鏈路上運(yùn)行。
2. DIS和偽節(jié)點(diǎn)
在廣播網(wǎng)絡(luò)中,IS-IS需要在所有的路由器中選舉一個(gè)路由器作為DIS(Designated Intermediate System)。
Level-1和Level-2的DIS是分別選舉的,用戶可以為不同級(jí)別的DIS選舉設(shè)置不同的優(yōu)先級(jí)。DIS優(yōu)先級(jí)數(shù)值越高,被選中的可能性就越大。如果優(yōu)先級(jí)最高的路由器有多臺(tái),則其中SNPA(Subnetwork Point of Attachment,子網(wǎng)連接點(diǎn))地址(廣播網(wǎng)絡(luò)中的SNPA地址是MAC地址)最大的路由器會(huì)被選中。不同級(jí)別的DIS可以是同一臺(tái)路由器,也可以是不同的路由器。
在IS-IS廣播網(wǎng)中,同一網(wǎng)段上的同一級(jí)別的路由器之間都會(huì)形成鄰接關(guān)系,包括所有的非DIS路由器之間也會(huì)形成鄰接關(guān)系。如圖4所示。
圖4 IS-IS廣播網(wǎng)的DIS和鄰接關(guān)系
DIS用來(lái)創(chuàng)建和更新偽節(jié)點(diǎn)(Pseudonodes),并負(fù)責(zé)生成偽節(jié)點(diǎn)的LSP,用來(lái)描述這個(gè)網(wǎng)絡(luò)上有哪些路由器。
偽節(jié)點(diǎn)是用來(lái)模擬廣播網(wǎng)絡(luò)的一個(gè)虛擬節(jié)點(diǎn),并非真實(shí)的路由器。在IS-IS中,偽節(jié)點(diǎn)用DIS的System ID和一個(gè)字節(jié)的Circuit ID(非0值)標(biāo)識(shí)。
使用偽節(jié)點(diǎn)可以簡(jiǎn)化網(wǎng)絡(luò)拓?fù)?,使產(chǎn)生的LSP數(shù)量較少,減少SPF的資源消耗。
& 說(shuō)明:
IS-IS廣播網(wǎng)絡(luò)上所有的路由器之間都形成鄰接關(guān)系,但LSDB的同步仍然依靠DIS來(lái)保證。
IS-IS的PDU格式
1. PDU頭格式
IS-IS報(bào)文是直接封裝在數(shù)據(jù)鏈路層的幀結(jié)構(gòu)中的。PDU(Protocol Data Unit,協(xié)議數(shù)據(jù)單元)可以分為兩個(gè)部分,報(bào)文頭和變長(zhǎng)字段部分。其中報(bào)文頭又可分為通用報(bào)頭和專用報(bào)頭。對(duì)于所有PDU來(lái)說(shuō),通用報(bào)頭都是相同的,但專用報(bào)頭根據(jù)PDU類型不同而有所差別,如圖5所示。
圖5 PDU格式
2. 通用報(bào)頭格式
所有的PDU都有相同的通用報(bào)頭格式,如圖6所示。
圖6 PDU頭格式
主要字段的解釋如下:
– Intradomain Routeing Protocol Discriminator(域內(nèi)路由協(xié)議鑒別符):設(shè)置為0x83。
– Length Indicator(長(zhǎng)度標(biāo)識(shí)符):PDU頭部的長(zhǎng)度(包括通用報(bào)頭和專用報(bào)頭),以字節(jié)為單位。
– Version/Protocol ID Extension(版本/協(xié)議標(biāo)識(shí)擴(kuò)展):設(shè)置為1(0x01)。
– ID Length(標(biāo)識(shí)長(zhǎng)度):NSAP地址和NET的ID長(zhǎng)度。
– R(Reserved,保留):設(shè)置為0。
– Version(版本):設(shè)置為1(0x01)。
– Maximum Area Address(最大區(qū)域地址數(shù)):支持的最大區(qū)域個(gè)數(shù)。
3. Hello
Hello報(bào)文用于建立和維持鄰居關(guān)系,也稱為IIH(IS-to-IS Hello PDUs)。其中,廣播網(wǎng)中的Level-1路由器使用Level-1 LAN IIH,廣播網(wǎng)中的Level-2路由器使用Level-2 LAN IIH,點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的路由器則使用P2P IIH。
它們的報(bào)文格式有所不同。廣播網(wǎng)中的Hello報(bào)文格式如圖7所示(灰色部分是通用報(bào)文頭)。
圖7 L1/L2 LAN IIH格式
主要字段的解釋如下:
– Reserved/Circuit Type:高位的6比特保留,值為0。低位的2比特表示路由器的類型(00保留,01表示L1,10表示L2,11表示L1/2)。
– Source ID:發(fā)送Hello報(bào)文的路由器的System ID。
– Holding Time:保持時(shí)間。在此時(shí)間內(nèi)如果沒(méi)有收到鄰居發(fā)來(lái)的Hello報(bào)文,則中止已建立的鄰居關(guān)系。
– PDU Length:PDU的總長(zhǎng)度,以字節(jié)為單位。
– Priority:選舉DIS的優(yōu)先級(jí)。
– LAN ID:包括System ID和一字節(jié)的偽節(jié)點(diǎn)ID。
點(diǎn)到點(diǎn)網(wǎng)絡(luò)中的Hello報(bào)文格式如圖8所示(灰色部分是通用報(bào)文頭)。
圖8 P2P IIH格式
從圖中可以看出,P2P IIH中的多數(shù)字段與LAN IIH相同。不同的是沒(méi)有Priority和LAN ID字段,而多了一個(gè)Local Circuit ID字段,表示本地鏈路ID。
4. LSP報(bào)文格式
LSP(Link State PDUs,鏈路狀態(tài)報(bào)文)用于交換鏈路狀態(tài)信息。LSP分為兩種:Level-1 LSP和Level-2 LSP。Level-1路由器傳送Level-1 LSP,Level-2路由器傳送Level-2 LSP,Level-1-2路由器則可傳送以上兩種LSP。
兩類LSP有相同的報(bào)文格式,如圖9所示(灰色部分是通用報(bào)文頭)。
圖9 L1/L2 LSP格式
主要字段的解釋如下:
– PDU Length:PDU的總長(zhǎng)度,以字節(jié)為單位。
– Remaining Lifetime:LSP的存活時(shí)間,以秒為單位。
– LSP ID:由三部分組成,System ID、偽節(jié)點(diǎn)ID(一字節(jié))和LSP的分片號(hào)(一字節(jié))。
– Sequence Numer:LSP的序列號(hào)。
– Checksum:LSP的校驗(yàn)和。
– P(Partition Repair):僅與L2 LSP有關(guān),表示路由器是否支持自動(dòng)修復(fù)區(qū)域分割。
– ATT(Attachment):由L1/L2路由器產(chǎn)生,但僅與L1 LSP有關(guān),表示產(chǎn)生此LSP的路由器(L1/L2路由器)與多個(gè)區(qū)域相連接。
– OL(LSDB Overload):表示本路由器因內(nèi)存不足而導(dǎo)致LSDB不完整。其他路由器在得知這一信息后,就不會(huì)把需要此路由器轉(zhuǎn)發(fā)的報(bào)文發(fā)給它,但到此路由器直連地址的報(bào)文仍然可以被轉(zhuǎn)發(fā)。如圖10所示,假設(shè)正常情況下RouterA到RouterC的報(bào)文都是經(jīng)過(guò)RouterB轉(zhuǎn)發(fā),但如果RouterB的OL位置1,則RouterA會(huì)認(rèn)為RouterB的路由不完整,從而將報(bào)文通過(guò)RouterD、RouterE轉(zhuǎn)發(fā)給RouterC,但到RouterB直連地址的報(bào)文不受影響。
圖10 LSDB Overload示意圖
– IS Type:生成LSP的路由器的類型。
5. SNP格式
時(shí)序報(bào)文SNP(Sequence Number PDUs)用于確認(rèn)鄰居之間最新接收的LSP,作用類似于確認(rèn)(Acknowledge)報(bào)文,但更有效。
SNP包括CSNP(Complete SNP,全時(shí)序報(bào)文)和PSNP(Partial SNP,部分時(shí)序報(bào)文),進(jìn)一步又可分為L(zhǎng)evel-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。
CSNP包括LSDB中所有LSP的摘要信息,從而可以在相鄰路由器間保持LSDB的同步。在廣播網(wǎng)絡(luò)上,CSNP由DIS定期發(fā)送(缺省的發(fā)送周期為10秒);在點(diǎn)到點(diǎn)鏈路上,CSNP只在第一次建立鄰接關(guān)系時(shí)發(fā)送。
CSNP的報(bào)文格式如圖11所示(灰色部分是通用報(bào)文頭)。
圖11 L1/L2 CSNP格式
PSNP只列舉最近收到的一個(gè)或多個(gè)LSP的序號(hào),它能夠一次對(duì)多個(gè)LSP進(jìn)行確認(rèn)。當(dāng)發(fā)現(xiàn)LSDB不同步時(shí),也用PSNP來(lái)請(qǐng)求鄰居發(fā)送新的LSP。
PSNP的報(bào)文格式如圖12所示:
圖12 L1/L2 PSNP格式
6. TLV
PDU中的變長(zhǎng)字段部分是多個(gè)TLV(Type-Length-Value)三元組。其格式如圖13所示:
圖13 TLV格式
不同PDU類型所包含的TLV是不同的。其中,Code值從1到10的TLV在ISO 10589中定義(有2類未在上表中列出),其他幾種TLV在RFC 1195中定義。