天天看點

isis 網絡 level 2 iih_科普向-ISIS-續1

1.IS-IS的網絡類型

IS-IS隻支援兩種類型的網絡,根據實體鍊路不同可分為:

廣播鍊路:如Ethernet、Token-Ring等。

點到點鍊路:如PPP、HDLC等。

2.DIS和僞節點

2.1.DIS

在廣播網絡中,IS-IS需要在所有的路由器中選舉一個路由器作為DIS(Designated Intermediate System)。DIS用來建立和更新僞節點(Pseudonodes),并負責生成僞節點的鍊路狀态協定資料單元LSP(Link state Protocol Data Unit),用來描述這個網絡上有哪些網絡裝置。

2.2.僞節點

僞節點是用來模拟廣播網絡的一個虛拟節點,并非真實的路由器。在IS-IS中,僞節點用DIS的System ID和一個位元組的Circuit ID(非0值)辨別。

如下圖所示,使用僞節點可以簡化網絡拓撲,使路由器産生的LSP長度較小。另外,當網絡發生變化時,需要産生的LSP數量也會較少,減少SPF的資源消耗。

isis 網絡 level 2 iih_科普向-ISIS-續1

Level-1和Level-2的DIS是分别選舉的,使用者可以為不同級别的DIS選舉設定不同的優先級。DIS優先級數值最大的被選為DIS。如果優先級數值最大的路由器有多台,則其中MAC位址最大的路由器會被選中。不同級别的DIS可以是同一台路由器,也可以是不同的路由器。

2.3.DIS與DR的差別

在IS-IS廣播網中,優先級為0的路由器也參與DIS的選舉,而在OSPF中優先級為0的路由器則不參與DR的選舉。

在IS-IS廣播網中,當有新的路由器加入,并符合成為DIS的條件時,這個路由器會被選中成為新的DIS,原有的僞節點被删除。此更改會引起一組新的LSP泛洪。而在OSPF中,當一台新路由器加入後,即使它的DR優先級值最大,也不會立即成為該網段中的DR。

在IS-IS廣播網中,同一網段上的同一級别的路由器之間都會形成鄰接關系,包括所有的非DIS路由器之間也會形成鄰接關系。而在OSPF中,路由器隻與DR和BDR建立鄰接關系。

注:IS-IS廣播網上所有的路由器之間都形成鄰接關系,但LSDB的同步仍然依靠DIS來保證。

3.ISIS封包類型

3.1.Hello PDU

isis 網絡 level 2 iih_科普向-ISIS-續1

Hello封包用于建立和維持鄰居關系,也稱為IIH(IS-to-IS Hello PDUs)。其中,廣播網中的Level-1 IS-IS使用Level-1 LAN IIH;廣播網中的Level-2 IS-IS使用Level-2 LAN IIH;非廣播網絡中則使用P2P IIH。它們的封包格式有所不同。P2P IIH中相對于LAN IIH來說,多了一個表示本地鍊路ID的Local Circuit ID字段,缺少了表示廣播網中DIS的優先級的Priority字段以及表示DIS和僞節點System ID的LAN ID字段。

3.2.LSP

鍊路狀态封包LSP(Link State PDUs)用于交換鍊路狀态資訊。LSP分為兩種:Level-1 LSP和Level-2 LSP。Level-1 LSP由Level-1 IS-IS傳送,Level-2 LSP由Level-2 IS-IS傳送,Level-1-2 IS-IS則可傳送以上兩種LSP。

LSP封包中主要字段的解釋如下:

ATT字段:當Level-1-2 IS-IS在Level-1區域内傳送Level-1 LSP時,如果Level-1 LSP中設定了ATT位,則表示該區域中的Level-1 IS-IS可以通過此Level-1-2 IS-IS通往外部區域。

OL(LSDB Overload)字段:過載标志位。

設定了過載标志位的LSP雖然還會在網絡中擴散,但是在計算通過過載路由器的路由時不會被采用。即對路由器設定過載位後,其它路由器在進行SPF計算時不會使用這台路由器做轉發,隻計算該節點上的直連路由。更多内容請參見《原理描述-IS-IS過載位》。

IS Type字段:用來指明生成此LSP的IS-IS類型是Level-1還是Level-2 IS-IS(01表示Level-1,11表示Level-2)。

3.3.SNP

序列号封包SNP(Sequence Number PDUs)通過描述全部或部分資料庫中的LSP來同步各LSDB(Link-State DataBase),進而維護LSDB的完整與同步。

SNP包括全序列号封包CSNP(Complete SNP)和部分序列号封包PSNP(Partial SNP),進一步又可分為Level-1 CSNP、Level-2 CSNP、Level-1 PSNP和Level-2 PSNP。

CSNP包括LSDB中所有LSP的摘要資訊,進而可以在相鄰路由器間保持LSDB的同步。在廣播網絡上,CSNP由DIS定期發送(預設的發送周期為10秒);在點到點鍊路上,CSNP隻在第一次建立鄰接關系時發送。

PSNP隻列舉最近收到的一個或多個LSP的序号,它能夠一次對多個LSP進行确認,當發現LSDB不同步時,也用PSNP來請求鄰居發送新的LSP。

IS-IS封包中的變長字段部分是多個TLV(Type-Length-Value)三元組。其格式如下圖所示。TLV也稱為CLV(Code-Length-Value)。

isis 網絡 level 2 iih_科普向-ISIS-續1

4.鄰居建立

4.1.廣播鍊路鄰居關系的建立

以Level-2路由器為例,描述了廣播鍊路中建立鄰居關系的過程。Level-1路由器之間建立鄰居與此相同。

isis 網絡 level 2 iih_科普向-ISIS-續1

1)RouterA廣播發送Level-2 LAN IIH,此封包中無鄰居辨別。

2)RouterB收到此封包後,将自己和RouterA的鄰居狀态辨別為Initial。然後,RouterB再向RouterA回複Level-2 LAN IIH,此封包中辨別RouterA為RouterB的鄰居。

3)RouterA收到此封包後,将自己與RouterB的鄰居狀态辨別為Up。然後RouterA再向RouterB發送一個辨別RouterB為RouterA鄰居的Level-2 LAN IIH。

4)RouterB收到此封包後,将自己與RouterA的鄰居狀态辨別為Up。這樣,兩個路由器成功建立了鄰居關系。

因為是廣播網絡,需要選舉DIS,是以在鄰居關系建立後,路由器會等待兩個Hello封包間隔,再進行DIS的選舉。Hello封包中包含Priority字段,Priority值最大的将被選舉為該廣播網的DIS。若優先級相同,接口MAC位址較大的被選舉為DIS。

4.2.P2P鍊路鄰居關系的建立

在P2P鍊路上,鄰居關系的建立不同于廣播鍊路。分為兩次握手機制和三次握手機制。

1)兩次握手機制

隻要路由器收到對端發來的Hello封包,就單方面宣布鄰居為Up狀态,建立鄰居關系。

isis 網絡 level 2 iih_科普向-ISIS-續1

2)三次握手機制

此方式通過三次發送P2P的IS-IS Hello PDU最終建立起鄰居關系,類似廣播鄰居關系的建立。

兩次握手機制存在明顯的缺陷。當路由器間存在兩條及以上的鍊路時,如果某條鍊路上到達對端的單向狀态為Down,而另一條鍊路同方向的狀态為Up,路由器之間還是能建立起鄰接關系。SPF在計算時會使用狀态為UP的鍊路上的參數,這就導緻沒有檢測到故障的路由器在轉發封包時仍然試圖通過狀态為Down的鍊路。三次握手機制解決了上述不可靠點到點鍊路中存在的問題。這種方式下,路由器隻有在知道鄰居路由器也接收到它的封包時,才宣布鄰居路由器處于Up狀态,進而建立鄰居關系。

4.3.IS-IS鄰居關系建立原則

隻有同一層次的相鄰路由器才有可能成為鄰居。

對于Level-1路由器來說,區域号必須一緻。

鍊路兩端IS-IS接口的網絡類型必須一緻。

說明

通過将以太網接口模拟成P2P接口,可以建立P2P鍊路鄰居關系。

鍊路兩端IS-IS接口的位址必須處于同一網段。

由于IS-IS是直接運作在資料鍊路層上的協定,并且最早設計是給CLNP使用的,IS-IS鄰居關系的形成與IP位址無關。但在實際的實作中,由于隻在IP上運作IS-IS,是以是要檢查對方的IP位址的。如果接口配置了從IP,那麼隻要雙方有某個IP(主IP或者從IP)在同一網段,就能建立鄰居,不一定要主IP相同。

當鍊路兩端IS-IS接口的位址不在同一網段時,如果配置接口對接收的Hello封包不作IP位址檢查,也可以建立鄰居關系。對于P2P接口,可以配置接口忽略IP位址檢查;對于以太網接口,需要将以太網接口模拟成P2P接口,然後才可以配置接口忽略IP位址檢查。

5.ISIS的LSP互動過程

5.1.LSP産生的原因

鄰居Up或Down

IS-IS相關接口Up或Down

引入的IP路由發生變化

區域間的IP路由發生變化

接口被賦了新的metric值

周期性更新

5.2.收到鄰居新的LSP的處理過程

将接收的新的LSP合入到自己的LSDB資料庫中,并标記為flooding。

發送新的LSP到除了收到該LSP的接口之外的接口。

鄰居再擴散到其他鄰居。

5.3.LSP的“泛洪”

LSP封包的“泛洪”(flooding)是指當一個路由器向相鄰路由器通告自己的LSP後,相鄰路由器再将同樣的LSP封包傳送到除發送該LSP的路由器外的其它鄰居,并這樣逐級将LSP傳送到整個層次内所有路由器的一種方式。通過這種“泛洪”,整個層次内的每一個路由器就都可以擁有相同的LSP資訊,并保持LSDB的同步。

每一個LSP都擁有一個辨別自己的4位元組的序列号。在路由器啟動時所發送的第一個LSP封包中的序列号為1,以後當需要生成新的LSP時,新LSP的序列号在前一個LSP序列号的基礎上加1。更高的序列号意味着更新的LSP。

5.4.廣播鍊路中新加入路由器與DIS同步LSDB資料庫的過程

isis 網絡 level 2 iih_科普向-ISIS-續1

1)如上圖所示,新加入的路由器RouterC首先發送Hello封包,與該廣播域中的路由器建立鄰居關系。

2)建立鄰居關系之後,RouterC等待LSP重新整理定時器逾時,然後将自己的LSP發往多點傳播位址(Level-1:01-80-C2-00-00-14;Level-2:01-80-C2-00-00-15)。這樣網絡上所有的鄰居都将收到該LSP。

3)該網段中的DIS會把收到RouterC的LSP加入到LSDB中,并等待CSNP封包定時器逾時并發送CSNP封包,進行該網絡内的LSDB同步。

4)RouterC收到DIS發來的CSNP封包,對比自己的LSDB資料庫,然後向DIS發送PSNP封包請求自己沒有的LSP。

5)DIS收到該PSNP封包請求後向RouterC發送對應的LSP進行LSDB的同步。

在上述過程中DIS的LSDB更新過程如下:

1)DIS接收到LSP,在資料庫中搜尋對應的記錄。若沒有該LSP,則将其加入資料庫,并廣播新資料庫内容。

2)若收到的LSP序列号大于本地LSP的序列号,就替換為新封包,并廣播新資料庫内容;若收到的LSP序列号小本地LSP的序列号,就向入端接口發送本地LSP封包。

3)若收到的LSP和本地LSP的序列号相等,則比較Remaining Lifetime。若收到的LSP封包的Remaining Lifetime為0,則将本地的封包替換為新封包,并廣播新資料庫内容;若收到的LSP封包的Remaining Lifetime不為0而本地LSP封包的Remaining Lifetime為0,就向入端接口發送本地LSP封包。

4)若收到的LSP和本地LSP的序列号相同且Remaining Lifetime都不為0,則比較Checksum。若收到的LSP的Checksum大于本地LSP的Checksum,就替換為新封包,并廣播新資料庫内容;若收到的LSP的Checksum小于本地LSP的Checksum,就向入端接口發送本地LSP封包。

5)若兩個序列号、Remaining Lifetime和Checksum都相等,則不轉發該封包。

5.5.P2P鍊路上LSDB資料庫的同步過程

isis 網絡 level 2 iih_科普向-ISIS-續1

1)如上圖所示,RouterA先與RouterB建立鄰居關系。

2)建立鄰居關系之後,RouterA與RouterB會先發送CSNP給對端裝置。如果對端的LSDB與CSNP沒有同步,則發送PSNP請求索取相應的LSP。

3)假定RouterB向RouterA索取相應的LSP。RouterA發送RouterB請求的LSP的同時啟動LSP重傳定時器,并等待RouterB發送的PSNP作為收到LSP的确認。

4)如果在接口LSP重傳定時器逾時後,RouterA還沒有收到RouterB發送的PSNP封包作為應答,則重新發送該LSP直至收到PSNP封包。

在P2P鍊路上PSNP有兩種作用:

作為Ack應答以确認收到的LSP。

用來請求所需的LSP。

在P2P鍊路中裝置的LSDB更新過程如下:

1)若收到的LSP比本地的序列号更小,則直接給對方發送本地的LSP,然後等待對方給自己一個PSNP封包作為确認;若收到的LSP比本地的序列号更大,則将這個新的LSP存入自己的LSDB,再通過一個PSNP封包來确認收到此LSP,最後再将這個新LSP發送給除了發送該LSP的鄰居以外的鄰居。

2)若收到的LSP序列号和本地相同,則比較Remaining Lifetime,若收到的LSP封包的Remaining Lifetime為0,則将收到的LSP存入LSDB中并發送PSNP封包來确認收到此LSP,然後将該LSP發送給除了發送該LSP的鄰居以外的鄰居;若收到的LSP封包的Remaining Lifetime不為0而本地LSP封包的Remaining Lifetime為0,則直接給對方發送本地的LSP,然後等待對方給自己一個PSNP封包作為确認。

3)若收到的LSP和本地LSP的序列号相同且Remaining Lifetime都不為0,則比較Checksum,若收到LSP的Checksum大于本地LSP的Checksum,則将收到的LSP存入LSDB中并發送PSNP封包來确認收到此LSP,然後将該LSP發送給除了發送該LSP的鄰居以外的鄰居;若收到LSP的Checksum小于本地LSP的Checksum,則直接給對方發送本地的LSP,然後等待對方給自己一個PSNP封包作為确認。

4)若收到的LSP和本地LSP的序列号、Remaining Lifetime和Checksum都相同,則不轉發該封包。