1.簡介
IS-IS屬於IGP(Interior Gateway Protocol,內部網關協議),用於自治系統內部。IS-IS是一種鏈路狀態協議,使用SPF(Shortest Path First,最短路徑優先)算法進行路由計算。
2.IS-IS基本術語
· IS(Intermediate System):中間系統。相當於TCP/IP中的路由器,是IS-IS協議中生成路由和傳播路由信息的基本單元。在下文中IS和路由器具有相同的含義。
· ES(End System):終端系統。相當於TCP/IP中的主機系統。ES不參與IS-IS路由協議的處理,ISO使用專門的ES-IS協議定義終端系統與中間系統間的通信。
· RD(Routing Domain):路由域。在一個路由域中多個IS通過相同的路由協議來交換路由信息。
· Area:區域,路由域的細分單元,IS-IS允許將整個路由域分為多個區域。
· LSDB(Link State DataBase):鏈路狀態數據庫。網絡內所有鏈路的狀態組成了鏈路狀態數據庫,在每一個IS中都至少有一個LSDB。IS使用SPF算法,利用LSDB來生成自己的路由。
· LSPDU(Link State Protocol Data Unit):鏈路狀態協議數據單元,簡稱LSP。在IS-IS中,每一個IS都會生成LSP,此LSP包含了本IS的所有鏈路狀態信息。
· NPDU(Network Protocol Data Unit):網絡協議數據單元,是OSI中的網絡層協議報文,相當於TCP/IP中的IP報文。
· DIS(Designated IS):廣播網絡上選舉的指定中間系統,也可以稱為指定IS。
· NSAP(Network Service Access Point):網絡服務接入點,即OSI中網絡層的地址,用來標識一個抽象的網絡服務訪問點,描述OSI模型的網絡地址結構。
3.IS-IS地址
NSAP由IDP(Initial Domain Part)和DSP(Domain Specific Part)組成。IDP相當於IP地址中的主網絡號,DSP相當於IP地址中的子網號和主機地址。
IDP部分是ISO規定的,它由AFI(Authority and Format Identifier)和IDI(Initial Domain Identifier)兩部分組成:
- AFI表示地址分配機構和地址格式。
- IDI用來標識域。
DSP由HO-DSP(High Order Part of DSP)、SystemID和SEL三個部分組成:
- HO-DSP用來分割區域。
- SystemID用來區分主機。
- SEL有時也寫成N-SEL(NSAP Selector),它的作用類似IP中的“協議標識符”,用於指示服務類型,不同的傳輸協議對應不同的SEL。
IDP和DSP的長度都是可變的,NSAP總長最多是20個字節,最少8個字節。
IS-IS地址結構由以下三部分組成:
- 區域地址
IDP和DSP中的HO-DSP一起,既能夠標識路由域,也能夠標識路由域中的區域,被稱為區域地址。兩個不同的路由域中不允許有相同的區域地址。
一般情況下,一台路由器只需要配置一個區域地址,且同一區域中所有節點的區域地址都要相同。為了支持區域的平滑合並、分割及轉換,一台路由器最多可配置3個區域地址。
- System ID
System ID用來在區域內唯一標識主機或路由器。它的長度固定為48比特。
在實際應用中,一般使用Router ID與System ID進行對應。假設一台路由器使用接口Loopback0的IP地址168.10.1.1作為Router ID,則它在IS-IS使用的System ID可通過如下方法轉換得到:
- 將IP地址168.10.1.1的每一部分都擴展為3位,不足3位的在前面補0;
- 將擴展后的地址168.010.001.001重新划分為3部分,每部分由4位數字組成,得到的1680.1000.1001就是System ID。
實際System ID的指定可以有不同的方法,但要保證能夠唯一標識主機或路由器。
- SEL
SEL用於指示服務類型,不同的傳輸協議對應不同的SEL。它的長度固定為8比特。在IP中,SEL均為00。
4.NET
NET(Network Entity Title,網絡實體名稱)指示的是IS本身的網絡層信息,不包括傳輸層信息,可以看作是一類特殊的NSAP,即SEL為0的NSAP地址。因此,NET的長度與NSAP的相同,為8~20個字節。
NET由三部分組成:
- 區域ID:它的長度可變的,為1~13個字節。
- System ID:用來在區域內唯一標識主機或路由器,它的長度固定為6個字節。
- SEL:為0,它的長度固定為1個字節。
例如NET為:ab.cdef.1234.5678.9abc.00,則其中區域ID為ab.cdef,System ID為1234.5678.9abc,SEL為00。
通常情況下,一台路由器配置一個NET即可,當區域需要重新划分時,例如將多個區域合並,或者將一個區域划分為多個區域,這種情況下配置多個NET可以在重新配置時仍然能夠保證路由的正確性。
由於一台路由器最多可配置3個區域地址,所以最多也只能配置3個NET。在配置多個NET時,必須保證它們的System ID都相同。
5.IS-IS區域
為了支持大規模的路由網絡,IS-IS在路由域內采用兩級的分層結構。一個大的路由域通常被分成多個區域(Areas)。一般來說,我們將Level-1路由器部署在區域內,Level-2路由器部署在區域間,
Level-1-2路由器部署在Level-1路由器和Level-2路由器的中間。
1)Level-1路由器
Level-1路由器負責區域內的路由,它只與屬於同一區域的Level-1和Level-1-2路由器形成鄰居關系,維護一個Level-1的LSDB,該LSDB包含本區域的路由信息,到區域外的報文轉發給最近的Level-1-2路由器。
屬於不同區域的Level-1路由器不能形成鄰居關系。
2)Level-2路由器
Level-2路由器負責區域間的路由,可以與同一區域或者其它區域的Level-2和Level-1-2路由器形成鄰居關系,維護一個Level-2的LSDB,該LSDB包含區域間的路由信息。
所有Level-2路由器和Level-1-2路由器組成路由域的骨干網,負責在不同區域間通信,骨干網必須是物理連續的。
Level-2路由器是否形成鄰居關系與區域無關。
3)Level-1-2路由器
同時屬於Level-1和Level-2的路由器稱為Level-1-2路由器,可以與同一區域的Level-1和Level-1-2路由器形成Level-1鄰居關系,也可以與同一區域或者其他區域的Level-2和Level-1-2路由器形成Level-2的鄰居關系。
Level-1路由器必須通過Level-1-2路由器才能連接至其他區域。Level-1-2路由器維護兩個LSDB,Level-1的LSDB用於區域內路由,Level-2的LSDB用於區域間路由。
6.IS-IS拓撲結構
下圖為一個運行IS-IS協議的網絡,其中Area 1是骨干區域,該區域中的所有路由器均是Level-2路由器。另外4個區域為非骨干區域,它們都通過Level-1-2路由器與骨干路由器相連。
下圖是IS-IS的另外一種拓撲結構圖。在這個拓撲中,並沒有規定哪個區域是骨干區域。所有Level-2路由器和Level-1-2路由器構成了IS-IS的骨干網,它們可以屬於不同的區域,但必須是物理連續的。
IS-IS的骨干網(Backbone)指的不是一個特定的區域。
IS-IS不論是Level-1還是Level-2路由,都采用SPF算法,分別生成最短路徑樹(Shortest Path Tree,SPT)。
7.路由滲透
通常情況下,區域內的路由通過Level-1的路由器進行管理。所有的Level-2路由器和Level-1-2路由器構成一個Level-2區域。因此,一個IS-IS的路由域可以包含多個Level-1區域,但只有一個Level-2區域。
Level-1區域必須且只能與Level-1-2區域相連,不同的Level-1區域之間並不相連。
Level-1區域內的路由信息通過Level-1-2路由器發布到Level-2區域,因此,Level-2路由器知道整個IS-IS路由域的路由信息。但是,在缺省情況下,Level-2路由器並不將自己知道的其它Level-1區域以及 Level-2區域的
路由信息發布到Level-1區域。這樣,Level-1路由器將不了解本區域以外的路由信息,Level-1路由器只將去往其它區域的報文發送到最近的Level-1-2路由器,所以可能導致對本區域之外的目的地址無法選擇最佳的路由。
為解決上述問題,IS-IS提供了路由滲透功能,使Level-1-2路由器可以將己知的其它Level-1區域以及Level-2區域的路由信息發布到指定的Level-1區域。