ISIS協議基礎


 

ISIS簡介

中間系統到中間系統IS-IS(Intermediate System to Intermediate System)屬於內部網關協議IGP(Interior Gateway Protocol),用於自治系統內部。IS-IS也是一種鏈路狀態協議,使用最短路徑優先SPF(Shortest Path First)算法進行路由計算。

目的:

IS-IS是國際標准化組織ISO(the International Organization for Standardization)為它的無連接網絡協議CLNP(ConnectionLess Network Protocol)設計的一種動態路由協議。

隨着TCP/IP協議的流行,為了提供對IP路由的支持,IETF(Internet Engineering Task Force )在RFC1195中對IS-IS進行了擴充和修改,使它能夠同時應用在TCP/IP和OSI(Open System Interconnection)環境中,稱為集成IS-IS(Integrated IS-IS或Dual IS-IS)。

IS-IS原理描述

ISIS基本概念:

IS-IS的拓撲結構:

為了支持大規模的路由網絡,IS-IS在自治系統內采用骨干區域與非骨干區域兩級的分層結構。一般來說,將Level-1路由器部署在非骨干區域,Level-2路由器和Level-1-2路由器部署在骨干區域。每一個非骨干區域都通過Level-1-2路由器與骨干區域相連。

OSPF與ISIS的拓撲不同點:

  • 在IS-IS中,每個路由器都只屬於一個區域;而在OSPF中,一個路由器的不同接口可以屬於不同的區域。
  • 在IS-IS中,單個區域沒有骨干與非骨干區域的概念;而在OSPF中,Area0被定義為骨干區域。
  • 在IS-IS中,Level-1和Level-2級別的路由都采用SPF算法,分別生成最短路徑樹SPT(Shortest Path Tree);而在OSPF中,只有在同一個區域內才使用SPF算法,區域之間的路由需要通過骨干區域來轉發。

IS-IS路由器的分類:

  • Level-1路由器

    Level-1路由器負責區域內的路由,它只與屬於同一區域的Level-1和Level-1-2路由器形成鄰居關系,屬於不同區域的Level-1路由器不能形成鄰居關系。Level-1路由器只負責維護Level-1的鏈路狀態數據庫LSDB(Link State Database),該LSDB包含本區域的路由信息,到本區域外的報文轉發給最近的Level-1-2路由器。

  • Level-2路由器

    Level-2路由器負責區域間的路由,它可以與同一或者不同區域的Level-2路由器或者其它區域的Level-1-2路由器形成鄰居關系。Level-2路由器維護一個Level-2的LSDB,該LSDB包含區域間的路由信息。

    所有Level-2級別(即形成Level-2鄰居關系)的路由器組成路由域的骨干網,負責在不同區域間通信。路由域中Level-2級別的路由器必須是物理連續的,以保證骨干網的連續性。只有Level-2級別的路由器才能直接與區域外的路由器交換數據報文或路由信息。

  • 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用於區域間路由。

IS-IS的網絡類型:

IS-IS只支持兩種類型的網絡,根據物理鏈路不同可分為:

  • 廣播鏈路:如Ethernet、Token-Ring等。
  • 點到點鏈路:如PPP、HDLC等。

對於NBMA(Non-Broadcast Multi-Access)網絡,如ATM,需對其配置子接口,並注意子接口類型應配置為P2P。

IS-IS不能在點到多點鏈路P2MP(Point to MultiPoint)上運行。

DIS和偽節點:

在廣播網絡中,IS-IS需要在所有的路由器中選舉一個路由器作為DIS(Designated Intermediate System)。DIS用來創建和更新偽節點(Pseudonodes),並負責生成偽節點的鏈路狀態協議數據單元LSP(Link state Protocol Data Unit),用來描述這個網絡上有哪些網絡設備。

偽節點是用來模擬廣播網絡的一個虛擬節點,並非真實的路由器。在IS-IS中,偽節點用DIS的System ID和一個字節的Circuit ID(非0值)標識。

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

IS-IS協議中DIS與OSPF協議中DR(Designated Router)的區別:

  • 在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來保證。

IS-IS的地址結構:

網絡服務訪問點NSAP(Network Service Access Point)是OSI協議中用於定位資源的地址。NSAP的地址結構如下圖所示,它由IDP(Initial Domain Part)和DSP(Domain Specific Part)組成。IDP和DSP的長度都是可變的,NSAP總廠最多是20個字節,最少8個字節。

NSAP地址結構

 

圖:ISIS協議的地址結構示意圖

 

  • IDP相當於IP地址中的主網絡號。它是由ISO規定,並由AFI(Authority and Format Identifier)與IDI(Initial Domain Identifier)兩部分組成。AFI表示地址分配機構和地址格式,IDI用來標識域。
  • DSP相當於IP地址中的子網號和主機地址。它由High Order DSP、System ID和SEL三個部分組成。High Order DSP用來分割區域,System ID用來區分主機,SEL(NSAP Selector)用來指示服務類型。
  • Area Address

    IDP和DSP中的High Order DSP一起,既能夠標識路由域,也能夠標識路由域中的區域,因此,它們一起被稱為區域地址(Area Address),相當於OSPF中的區域編號。同一Level-1區域內的所有路由器必須具有相同的區域地址,Level-2區域內的路由器可以具有不同的區域地址。

    一般情況下,一個路由器只需要配置一個區域地址,且同一區域中所有節點的區域地址都要相同。為了支持區域的平滑合並、分割及轉換,在設備的實現中,一個IS-IS進程下最多可配置3個區域地址。

  • System ID

    System ID用來在區域內唯一標識主機或路由器。在設備的實現中,它的長度固定為48bit(6字節)。

    • 將IP地址168.10.1.1的每個十進制數都擴展為3位,不足3位的在前面補0,得到168.010.001.001。
    • 將擴展后的地址分為3部分,每部分由4位數字組成,得到1680.1000.1001。重新組合的1680.1000.1001就是System ID。

    實際System ID的指定可以有不同的方法,但要保證能夠唯一標識主機或路由器。

  • SEL

    SEL的作用類似IP中的“協議標識符”,不同的傳輸協議對應不同的SEL。在IP上SEL均為00。

網絡實體名稱NET(Network Entity Title)指的是設備本身的網絡層信息,可以看作是一類特殊的NSAP(SEL=00)。NET的長度與NSAP的相同,最多為20個字節,最少為8個字節。在路由器上配置IS-IS時,只需要考慮NET即可,NSAP可不必去關注。

例如有NET為:ab.cdef.1234.5678.9abc.00,則其中Area Address為ab.cdef,System ID為1234.5678.9abc,SEL為00。

IS-IS基本原理:

IS-IS是一種鏈路狀態路由協議,每一台路由器都會生成一個LSP,它包含了該路由器所有使能IS-IS協議接口的鏈路狀態信息。通過跟相鄰設備建立IS-IS鄰接關系,互相更新本地設備的LSDB,可以使得LSDB與整個IS-IS網絡的其他設備的LSDB實現同步。然后根據LSDB運用SPF算法計算出IS-IS路由。如果此IS-IS路由是到目的地址的最優路由,則此路由會下發到IP路由表中,並指導報文的轉發。

IS-IS鄰居關系的建立:

兩台運行IS-IS的路由器在交互協議報文實現路由功能之前必須首先建立鄰居關系。在不同類型的網絡上,IS-IS的鄰居建立方式並不相同。

廣播鏈路鄰居關系的建立:

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

廣播網下ISIS建立鄰居過程

 

圖:廣播鏈路鄰居關系的建立過程

 

  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。

P2P鏈路鄰居關系的建立:

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

  • 兩次握手機制

    只要路由器收到對端發來的Hello報文,就單方面宣布鄰居為Up狀態,建立鄰居關系。

  • 三次握手機制

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

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

IS-IS按如下原則建立鄰居關系:

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

  • 對於Level-1路由器來說,區域號必須一致。

  • 鏈路兩端IS-IS接口的網絡類型必須一致。

  • 鏈路兩端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地址檢查。

IS-IS的LSP交互過程:

LSP產生的原因:

IS-IS路由域內的所有路由器都會產生LSP,以下事件會觸發一個新的LSP:

  • 鄰居Up或Down
  • IS-IS相關接口Up或Down
  • 引入的IP路由發生變化
  • 區域間的IP路由發生變化
  • 接口被賦了新的metric值
  • 周期性更新

收到鄰居新的LSP的處理過程:

  1. 將接收的新的LSP合入到自己的LSDB數據庫中,並標記為flooding。
  2. 發送新的LSP到除了收到該LSP的接口之外的接口。
  3. 鄰居再擴散到其他鄰居。

LSP的”泛洪”:

LSP報文的“泛洪”(flooding)是指當一個路由器向相鄰路由器通告自己的LSP后,相鄰路由器再將同樣的LSP報文傳送到除發送該LSP的路由器外的其它鄰居,並這樣逐級將LSP傳送到整個層次內所有路由器的一種方式。通過這種“泛洪”,整個層次內的每一個路由器就都可以擁有相同的LSP信息,並保持LSDB的同步。

每一個LSP都擁有一個標識自己的4字節的序列號。在路由器啟動時所發送的第一個LSP報文中的序列號為1,以后當需要生成新的LSP時,新LSP的序列號在前一個LSP序列號的基礎上加1。更高的序列號意味着更新的LSP。

廣播鏈路中新加入路由器與DIS同步LSDB數據庫的過程:

廣播鏈路中新加入路由器與DIS同步LSDB數據庫的過程

 

圖:廣播鏈路數據庫更新過程

 

  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. 若兩個序列號和Remaining Lifetime都相等,則比較Checksum。若收到的LSP的Checksum大於本地LSP的Checksum,就替換為新報文,並廣播新數據庫內容;若收到的LSP的Checksum小於本地LSP的Checksum,就向入端接口發送本地LSP報文。
  5. 若兩個序列號、Remaining Lifetime和Checksum都相等,則不轉發該報文。

P2P鏈路上LSDB數據庫同步過程:

P2P鏈路上LSDB同步過程

 

圖:P2P鏈路數據庫更新過程

 

  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都相同,則不轉發該報文。

#ISIS高級特性

IS-IS認證:

IS-IS認證是基於網絡安全性的要求而實現的一種認證手段,通過在IS-IS報文中增加認證字段對報文進行認證。當本地路由器接收到遠端路由器發送過來的IS-IS報文,如果發現認證密碼不匹配,則將收到的報文進行丟棄,達到自我保護的目的。

認證的分類:

根據報文的種類,認證可以分為以下三類:

  • 接口認證:是指使能IS-IS協議的接口以指定方式和密碼對Level-1和Level-2的Hello報文進行認證。
  • 區域認證:是指運行IS-IS的區域以指定方式和密碼對Level-1的SNP和LSP報文進行認證。
  • 路由域認證:是指運行IS-IS的路由域以指定方式和密碼對Level-2的SNP和LSP報文進行認證。

對於接口認證,有以下兩種設置:

  • 發送帶認證TLV的認證報文,本地對收到的報文也進行認證檢查。
  • 發送帶認證TLV的認證報文,但是本地對收到的報文不進行認證檢查。

對於區域和路由域認證,可以設置為SNP和LSP分開認證。

  • 本地發送的LSP報文和SNP報文都攜帶認證TLV,對收到的LSP報文和SNP報文都進行認證檢查。
  • 本地發送的LSP報文攜帶認證TLV,對收到的LSP報文進行認證檢查;發送的SNP報文攜帶認證TLV,但不對收到的SNP報文進行檢查。
  • 本地發送的LSP報文攜帶認證TLV,對收到的LSP報文進行認證檢查;發送的SNP報文不攜帶認證TLV,也不對收到的SNP報文進行認證檢查。
  • 本地發送的LSP報文和SNP報文都攜帶認證TLV,對收到的LSP報文和SNP報文都不進行認證檢查。

根據報文的認證方式,可以分為以下三類:

  • 明文認證:一種簡單的認證方式,將配置的密碼直接加入報文中,這種認證方式安全性不夠。
  • MD5認證:通過將配置的密碼進行MD5算法之后再加入報文中,這樣提高了密碼的安全性。
  • Keychian認證:通過配置隨時間變化的密碼鏈表來進一步提升網絡的安全性。

認證信息的攜帶形式:

IS-IS通過TLV的形式攜帶認證信息,認證TLV的類型為10,具體格式如下:

  • Type:ISO定義認證報文的類型值為10,長度為1字節。

  • Length:指定認證TLV值的長度,長度1字節。

  • Value:指定認證的具體內容,其中包括了認證的類型和認證的密碼,長度為1~254字節。

    其中認證的類型為1字節,具體定義如下:

    • 0:保留的類型
    • 1:明文認證
    • 54:MD5認證
    • 255:路由域私有認證方式

ISIS路由滲透:

通常情況下,Level-1區域內的路由通過Level-1路由器進行管理。所有的Level-2和Level-1-2路由器構成一個連續的骨干區域。Level-1區域必須且只能與骨干區域相連,不同的Level-1區域之間並不相連。

Level-1-2路由器將學習到的Level-1路由信息裝進Level-2 LSP,再泛洪LSP給其他Level-2和Level-1-2路由器。因此,Level-1-2和Level-2路由器知道整個IS-IS路由域的路由信息。但是,為了有效減小路由表的規模,在缺省情況下,Level-1-2路由器並不將自己知道的其他Level-1區域以及骨干區域的路由信息通報給它所在的Level-1區域。這樣,Level-1路由器將不了解本區域以外的路由信息,可能導致與本區域之外的目的地址通信時無法選擇最佳的路由。

為解決上述問題,IS-IS提供了路由滲透功能。通過在Level-1-2路由器上定義ACL(Access Control List)、路由策略、Tag標記等方式,將符合條件的路由篩選出來,實現將其他Level-1區域和骨干區域的部分路由信息通報給自己所在的Level-1區域。

ISIS Overload:

IS-IS OverLoad使用IS-IS過載標記位來標識過載狀態。IS-IS過載標志位是指IS-IS LSP報文中的OL字段。對設備設置過載標志位后,其它設備在進行SPF計算時不會使用這台設備做轉發,只計算該設備上的直連路由。

當系統因為各種原因無法保存新的LSP,以致無法維持正常的LSDB同步時,該系統計算出的路由信息將出現錯誤。在這種情況下,系統就可以自動進入過載狀態,即通過該設備到達的路由不計算,但該設備的直連路由不會被忽略。

除了設備異常可導致自動進入過載狀態,也可以通過手動配置使系統進入過載狀態。當網絡中的某些IS-IS設備需要升級或維護時,需要暫時將該設備從網絡中隔離。此時可以給該設備設置過載標志位,這樣就可以避免其他設備通過該節點來轉發流量。

ISIS網絡收斂:

為了提高IS-IS網絡的收斂,有快速收斂和按優先級收斂兩種方式。快速收斂側重於從路由的計算角度加快收斂速度;按優先級收斂側重於從路由優先級角度提高網絡性能。

快速收斂:

IS-IS快速收斂是為了提高路由的收斂速度而做的擴展特性。它包括以下幾個功能:

  • 增量最短路徑優先算法I-SPF(Incremental SPF):是指當網絡拓撲改變的時候,只對受影響的節點進行路由計算,而不是對全部節點重新進行路由計算,從而加快了路由的計算。

    在ISO10589中定義使用SPF算法進行路由計算。當網絡拓撲中有一個節點發生變化時,這種算法需要重新計算網絡中的所有節點,計算時間長,占用過多的CPU資源,影響整個網絡的收斂速度。

    I-SPF改進了這個算法,除了第一次計算時需要計算全部節點外,每次只計算受到影響的節點,而最后生成的最短路徑樹SPT與原來的算法所計算的結果相同,大大降低了CPU的占用率,提高了網絡收斂速度。

  • 部分路由計算PRC(Partial Route Calculation):是指當網絡上路由發生變化的時候,只對發生變化的路由進行重新計算。

    PRC的原理與I-SPF相同,都是只對發生變化的路由進行重新計算。不同的是,PRC不需要計算節點路徑,而是根據I-SPF算出來的SPT來更新路由。

    在路由計算中,葉子代表路由,節點則代表路由器。如果I-SPF計算后的SPT改變,PRC會只處理那個變化的節點上的所有葉子;如果經過I-SPF計算后的SPT並沒有變化,則PRC只處理變化的葉子信息。比如一個節點使能一個IS-IS接口,則整個網絡拓撲的SPT是不變的,這時PRC只更新這個節點的接口路由,從而節省CPU占用率。

    PRC和I-SPF配合使用可以將網絡的收斂性能進一步提高,它是原始SPF算法的改進,已經代替了原有的算法。

  • 智能定時器:在進行SPF計算和產生LSP的時候用到的一種智能定時器。該定時器首次超時時間是一個固定的時間。如果在定時器超時前,又有觸發定時器的事件發生,則該定時器下一次的超時時間會增加。

    改進了路由算法后,如果觸發路由計算的時間間隔較長,同樣會影響網絡的收斂速度。使用毫秒級定時器可以縮短這個間隔時間,但如果網絡變化比較頻繁,又會造成過度占用CPU資源。SPF智能定時器既可以對少量的外界突發事件進行快速響應,又可以避免過度的占用CPU。通常情況下,一個正常運行的IS-IS網絡是穩定的,發生大量的網絡變動的幾率很小,IS-IS不會頻繁的進行路由計算,所以第一次觸發的時間可以設置的非常短(毫秒級)。如果拓撲變化比較頻繁,智能定時器會隨着計算次數的增加,間隔時間也會逐漸延長,從而避免占用大量的CPU資源。

    與SPF智能定時器類似的還有LSP生成智能定時器。在IS-IS協議中,當LSP生成定時器到期時,系統會根據當前拓撲重新生成一個自己的LSP。原有的實現機制是采用間隔時間固定的定時器,這樣就不能同時滿足快速收斂和低CPU占用率的需要。為此將LSP生成定時器也設計成智能定時器,使其可以對於突發事件(如接口Up/Down)快速響應,加快網絡的收斂速度。同時,當網絡變化頻繁時,智能定時器的間隔時間會自動延長,避免過度占用CPU資源。

  • LSP快速擴散:此特性可以加快LSP的擴散速度。

    正常情況下,當IS-IS收到其它路由器發來的LSP時,如果此LSP比本地LSDB中相應的LSP要新,則更新LSDB中的LSP,並用一個定時器定期將LSDB內已更新的LSP擴散出去。

    LSP快速擴散特性改進了這種方式,使能了此特性的設備收到一個或多個較新的LSP時,在路由計算之前,先將小於指定數目的LSP擴散出去,加快LSDB的同步過程。這種方式在很大程度上可以提高整個網絡的收斂速度。

按優先級收斂:

IS-IS按優先級收斂是指在大量路由情況下,能夠讓某些特定的路由(例如匹配指定IP前綴的路由)優先收斂的一種技術。因此用戶可以把和關鍵業務相關的路由配置成相對較高的優先級,使這些路由更快的收斂,從而使關鍵的業務收到的影響減小。通過對不同的路由配置不同的收斂優先級,達到重要的路由先收斂的目的,提高網絡的可靠性。

ISIS管理標記:

管理標記特性允許在IS-IS域中通過管理標記對IP地址前綴進行控制,可以達到簡化管理。其用途包括控制不同級別和不同區域間的路由引入,以及在同一路由器上運行的IS-IS多實例。

管理標記值與某些屬性相關聯。當cost-sytle為wide、wide-compatible或compatible時,如果發布可達的IP地址前綴具有該屬性,IS-IS會將管理標記加入到該前綴的IP可達信息TLV中。這樣,管理標記就會隨着前綴發布到整個路由域。

ISIS Wide Metric:

在早期的ISO10589中,使能IS-IS協議的接口下最大只能配置值為63的開銷值,此時認為IS-IS開銷類型為narrow。但是在大型網絡設計中,較小的度量范圍不能滿足實際需求。所以在RFC3784中規定,使能IS-IS協議的接口開銷值可以擴展到16777215,IS-IS路由開銷值可以達到4261412864,此時IS-IS的開銷類型為wide。

  • narrow類型下使用的TLV:
    • 128號TLV(IP Internal Reachability TLV):用來攜帶路由域內的IS-IS路由信息。
    • 130號TLV(IP External Reachability TLV):用來攜帶路由域外的IS-IS路由信息。
    • 2號TLV(IS Neighbors TLV):用來攜帶鄰居信息。
  • wide類型下使用的TLV:
    • 135號TLV(Extended IP Reachability TLV):用來替換原有的IP reachability TLV,攜帶IS-IS路由信息,它擴展了路由開銷值的范圍,並可以攜帶sub TLV。
    • 22號TLV(IS Extended Neighbors TLV):用來攜帶鄰居信息。

不同開銷類型接收和發送ISIS信息的類型詳細列表:

開銷類型 接收 發送
narrow narrow narrow
narrow-compatible narrow&wide narrow
compatible narrow&wide narrow&wide
wide-compatible narrow&wide wide
wide wide wide
  • 當配置開銷類型為compatible的時候,會按照narrow類型和wide類型分別發送一份信息。
  • wide類型下的IS-IS和narrow類型下的IS-IS不可實現互通。如果需要互通,就必須設置成一致的開銷類型,讓網絡上所有路由器都可以接收其他路由器發的所有報文。

ISIS LSP分片擴展:

當IS-IS要發布的鏈路狀態協議數據報文PDU(Protocol Data Unit)中的信息量太大時,IS-IS路由器將會生成多個LSP分片,用來攜帶更多的IS-IS信息。

IS-IS LSP分片由LSP ID中的LSP Number字段進行標識,這個字段的長度是1字節。因此,一個IS-IS進程最多可產生256個LSP分片,攜帶的信息量有限。在RFC3786中規定,IS-IS可以配置虛擬的SystemID ,並生成虛擬IS-IS的LSP報文來攜帶路由等信息。

基本概念:

  • 初始系統(Originating System):初始系統是實際運行IS-IS協議的路由器。允許一個單獨的IS-IS進程像多個虛擬路由器一樣發布LSP,而“Originating System”指的是那個“真正”的IS-IS進程。
  • 系統ID(Normal System-ID):初始系統的系統ID。
  • 虛擬系統(Virtual System):由附加系統ID標識的系統,用來生成擴展LSP分片。這些分片在其LSP ID中攜帶附加系統ID。
  • 附加系統ID(Additional System-ID):虛擬系統的系統ID,由網絡管理器統一分配。每個附加系統ID都允許生成256個擴展的LSP分片。
  • 24號TLV(IS Alias ID TLV):用來表示初始系統與虛擬系統的關系。

工作原理:

在IS-IS中,每個系統ID都標識一個系統,每個系統都最多可生成256個LSP分片。通過增加附加系統ID,可以最多配置50個虛擬系統,從而使得IS-IS進程最多可生成13056個LSP分片。

使能分片擴展功能之后,如果存在由於報文裝滿而丟失的信息,系統會提醒重啟IS-IS。重啟之后,初始系統會盡最大能力裝載路由信息,裝不下的信息將放入虛擬系統的LSP中發送出去,並通過24號TLV來告知其他路由器此虛擬系統和自己的關系。

工作模式:

IS-IS路由器可以在兩種模式下運行LSP分片擴展特性:

模式一:

  • 應用場景:

    用於網絡中的部分路由器不支持LSP分片擴展特性的情況。

  • 工作原理:

    虛擬系統參與路由SPF計算,初始系統發布的LSP中攜帶了到每個虛擬系統的鏈路信息。類似地,虛擬系統發布的LSP也包含到初始系統的鏈路信息。這樣,在網絡中虛擬系統看起來與初始系統相連的真實路由器是一樣的。
    這種方式是為了兼容不支持分片擴展的老版本所做的一個過渡模式。在老版本中,IS-IS無法識別IS Alias ID
    TLV,所以虛擬系統的LSP必須表現的像一個普通IS-IS發出的報文。

  • 注意事項:

    虛擬系統的LSP中包含和原LSP中相同的區域地址和過載標志位。如果還有其它特性的TLV,也必須保持一致。
    虛擬系統所攜帶的鄰居信息指向初始系統,metric為最大值減1;初始系統所攜帶的鄰居信息指向虛擬系統,metric必須為0。這樣就保證了其它路由器在進行路由計算的時候,虛擬系統一定會成為初始系統的下游節點。

模式二:

  • 應用場景:

    用於網絡中所有路由器都支持LSP分片擴展特性的情況。

  • 工作原理:

    虛擬系統不參與路由SPF計算,網絡中所有路由器都知道虛擬系統生成的LSP實際屬於初始系統。
    在該模式下工作的IS-IS,可以識別IS Alias ID TLV的內容,並作為計算樹和路由的依據。

注:無論在哪種方式下,初始系統和虛擬系統的LSP零分片中,都必須包含IS Alias ID TLV來表示初始系統是誰。

ISIS主機名映射:

IS-IS主機名映射機制為運行IS-IS協議的設備提供了一種從主機名到System ID映射的服務,它包括動態主機名映射和靜態主機名映射。動態主機名映射的優先級高於靜態主機名映射。當兩者同時存在時,由動態主機名代替靜態主機名。

在沒有使能主機名交換特性的運行IS-IS協議的設備上,查看IS-IS鄰居和鏈路狀態數據庫等信息時,IS-IS域中的各設備都是用由12位十六進制數組成的System ID來表示的,例如:aaaa.eeee.1234。這種表示方法比較繁瑣,而且易用性不好。主機名交換機制就是為了方便對IS-IS網絡的維護和管理而引入的。

  • 顯示IS-IS鄰居時,將IS-IS鄰居的System ID替換為主機名。如果該鄰居為DIS,則DIS的System ID也替換為該鄰居的主機名。
  • 顯示IS-IS鏈路狀態數據庫中的LSP時,將LSP ID中的System ID替換為發布該LSP的設備的主機名。
  • 顯示IS-IS鏈路狀態數據庫的詳細信息時,對於使能了動態主機名交換的設備發送的LSP報文會增加顯示Host Name字段,而此字段顯示內容中的System ID也將替換為發送此LSP的設備的動態主機名。

動態主機名映射:

在使能了動態主機名映射的設備上,IS-IS動態主機名的信息在LSP中以137號TLV(Dynamic Hostname TLV)的形式發布給其他IS-IS設備。在其他設備上使用IS-IS相關顯示命令查看IS-IS信息時,本地設備的System ID將被設置的主機名所代替,這樣更直觀,也更容易記憶。

動態主機名的TLV是可選的,它可以存在於LSP中的任何位置。其中TLV的value值不能為空。設備在發送LSP的時候可以決定是否攜帶該TLV,接收端的設備也可以決定是否忽略該TLV,或者提取該TLV的內容放在自己的映射表中。

靜態主機映射:

靜態主機名映射是指在本地設備上對其他運行IS-IS協議的設備設置主機名與System ID的映射。靜態主機名映射僅在本地設備生效,並不會通過LSP報文發送出去。

IS-IS擴展知識

ISIS GR:

IS-IS GR(Graceful Restart)是一種支持GR能力的高可靠性技術,可以實現數據的不間斷轉發。

設備發生主備倒換后,由於沒有保存任何重啟前的鄰居信息,因此一開始發送的Hello報文中不包含鄰居列表。此時鄰居設備收到后,執行兩次握手機制鄰居關系檢查,發現在重啟設備的Hello報文的鄰居列表中沒有自己,這樣鄰居關系將會斷掉。同時,鄰居設備通過生成新的LSP報文,將拓撲變化的信息泛洪給區域內的其它設備。區域內的其他設備會基於新的鏈路狀態數據庫進行路由計算,從而造成路由中斷或者路由環路。

IETF針對這種情況為IS-IS制定了GR規范(RFC3847),對保留FIB表和不保留FIB表的協議重啟都進行了處理,避免協議重啟帶來的路由震盪和流量轉發中斷的現象。

基本概念:

IS-IS GR過程由GR-Restarter和GR-Helper配合完成。

  • GR-Restarter:具備GR能力,且要進行GR的設備。
  • GR-Helper:具備GR能力,輔助GR設備完成GR功能的設備。GR-Restarter一定具有GR-Helper的能力。

為了實現GR,IS-IS引入211號TLV(Restart TLV)和T1、T2、T3三個定時器。

Restart TLV:

Restart TLV是包含在IIH(IS-to-IS Hello PDUs)報文中的擴展部分。支持IS-IS GR能力的設備的所有IIH報文都包含Restart TLV。Restart TLV中攜帶了協議重啟的一些參數。其報文格式如下圖所示:

RestartTLV

 

圖:Restart TLV格式

 

報文字段解釋如下:

字段名 長度 含義
Type 1字節 TLV的類型。值為211表示是Restart TLV。
Length 1字節 TLV值的長度。
RR 1比特 重啟請求位(Restart Request)。設備發送的RR置位的Hello報文用於通告鄰居自己發生Restarting/Starting,請求鄰居保留當前的IS-IS鄰接關系並返回CSNP報文。
RA 1比特 重啟應答位(Restart Acknowledgement)。設備發送的RA置位的Hello報文用於通告鄰居確認收到了RR置位的報文。
SA 1比特 抑制發布鄰接關系位(Suppress adjacency advertisement)。用於發生Starting的設備請求鄰居抑制與自己相關的鄰居關系的廣播,以避免路由黑洞。
Remaining Time 2字節 鄰居保持鄰接關系不重置的時間。長度是2字節,單位是秒。當RA置位時,這個值是必需的。

定時器:

IS-IS的GR能力擴展中,引入了三個定時器,分別是T1、T2和T3。

  • T1定時器:如果GR Restarter已發送RR置位的IIH報文,但直到T1定時器超時還沒有收到GR Helper的包含Restart TLV且RA置位的IIH報文的確認消息時,會重置T1定時器並繼續發送包含Restart TLV的IIH報文。當收到確認報文或者T1定時器已超時3次時,取消T1定時器。T1定時器缺省設置為3秒。

    使能了IS-IS GR特性的進程,在每個接口都會維護一個T1定時器。在Level-1-2路由器上,廣播網接口為每個Level維護一個T1定時器。

  • T2定時器:GR Restarter從重啟開始到本Level所有設備LSDB完成同步的時間。T2定時器是系統等待各層LSDB同步的最長時間,一般情況下為60秒。

    Level-1和Level-2的LSDB各維護一個T2定時器。

  • T3定時器:GR Restarter成功完成GR所允許的最大時間。T3定時器的初始值為65535秒,但在收到鄰居回應的RA置位的IIH報文后,取值會變為各個IIH報文的Remaining time字段值中的最小者。T3定時器超時表示GR失敗。

    整個系統維護一個T3定時器。

會話機制:

為了以示區別,主備倒換和重啟IS-IS進程觸發的GR過程稱為Restarting,FIB表保持不變。設備重啟觸發的GR過程稱為Starting,進行FIB表更新。

下面分Restarting和Starting兩種情況說明IS-IS GR的詳細過程。

ISIS Restarting的過程:

Restarting過程

 

圖:IS-IS Restarting過程

 

  1. GR Restarter進行協議重啟后,GR Restarter進行如下操作:
    • 啟動T1、T2和T3定時器。
    • 從所有接口發送包含Restart TLV的IIH報文,其中RR置位,RA和SA位清除。
  1. GR Helper收到IIH報文以后,進行如下操作:

    • GR Helper維持鄰居關系,刷新當前的Holdtime。

    • 回送一個包含Restart TLV的IIH報文(RR清除,RA置位,Remaining time是從現在到Holdtime超時的時間間隔)。

    • 發送CSNP報文和所有LSP報文給GR Restarter。

      在點到點鏈路上,鄰居必須發送CSNP。

      在廣播鏈路上,是DIS的鄰居才發送CSNP報文,如果重啟的是DIS,則在LAN中的其它設備中選舉一個臨時的DIS。

      如果鄰居設備不具備GR Helper能力,就忽略Restart TLV,按正常的IS-IS過程處理,重置和GR Restarter的鄰接關系。

  1. GR Restarter接收到鄰居的IIH回應報文(RR清除、RA置位),做如下處理:
    • 把T3的當前值和報文中Remaining time比較,取其中較小者作為T3的值。
    • 在接口收到確認報文和CSNP報文之后,取消該接口的T1定時器。
    • 如果該接口沒有收到確認報文和CSNP報文,T1會不停地重置,重發含Restart TLV的IIH報文。如果T1超時次數超過閾值,GR Restarter強制取消T1定時器,啟動正常的IS-IS處理流程。
  2. 當GR Restarter所有接口上的T1定時器都取消,CSNP列表清空並且收集全所有的LSP報文后,可以認為和所有的鄰居都完成了同步,取消T2定時器。
  3. T2定時器被取消,表示本Level的LSDB已經同步。
    • 如果是單Level系統,則直接觸發SPF計算。
    • 如果是Level-1-2系統,此時判斷另一個Level的T2定時器是否也取消。如果兩個Level的T2定時器都被取消,那么觸發SPF計算,否則等待另一個Level的T2定時器超時。
  4. 各層的T2定時器都取消后,GR Restarter取消T3定時器,更新FIB表。GR Restarter可以重新生成各層的LSP並泛洪,在同步過程中收到的自己重啟前生成的LSP此時也可以被刪除。
  5. 至此,GR Restarter的IS-IS Restarting過程結束。

ISIS Starting過程:

對於Starting設備,因為沒有保留FIB表項,所以一方面希望在Starting之前和自己的鄰接關系為“Up”的鄰居重置和自己的鄰接關系,同時希望鄰居能在一段時間內抑制和自己的鄰接關系的發布。其處理過程和Restarting不同,具體如下圖所示:

ISISStarting 過程

 

圖:IS-IS Starting過程

 

  1. 為每層LSDB的同步啟動T2定時器。
  • 從各個接口發送攜帶Restart TLV的IIH報文,其中RR位清除,SA位置位。
  • RR位清除表示是Starting完成。
  • SA位置位則表示希望鄰居在收到SA位清除的IIH報文之前,一直抑制和自己的鄰接關系的發布。
  1. 鄰居收到攜帶Restart TLV的IIH報文,根據設備是否支持GR,進行如下處理。
  • 支持GR

    重新初始化鄰接關系。

    在發送的LSP中取消和GR Restarter鄰接關系的描述,進行SPF計算時也不考慮和GR Restarter相連的鏈路,直到收到SA位清除的IIH為止。

  • 不支持GR

    鄰居忽略Restart TLV,重置和GR Restarter之間的鄰接關系。

    回應一個不含Restart TLV的IIH報文,轉入正常的IS-IS處理流程。這時不會抑制和GR Restarter的鄰接關系的發布。在點到點鏈路上,還會發送一個CSNP報文。

  1. 鄰接關系重新初始化之后,在每個接口上GR Restarter都和鄰居重建鄰接關系。當有一個鄰接關系到達Up狀態后,GR Restarter為該接口啟動T1定時器。

  2. 在T1定時器超時之后,GR Restarter發送RR置位、SA置位的IIH報文。

  3. 鄰居收到RR置位和SA置位的IIH報文后,發送一個RR清除、RA置位的IIH報文作為確認報文,並發送CSNP報文。

  4. GR Restarter收到鄰居的IIH確認報文和CSNP報文以后,取消T1定時器。

    如果沒有收到IIH報文或者CSNP報文,就不停重置T1定時器,重發RR置位、SA置位的IIH報文。如果T1超時次數超過閾值,GR Restarter強制取消T1定時器,進入正常的IS-IS處理流程完成LSDB同步。

  5. GR Restarter收到Helper端的CSNP以后,開始同步LSDB。

  6. 本Level的LSDB同步完成后,GR Restarter取消T2定時器。

  7. 所有的T2定時器都取消以后,啟動SPF計算,重新生成LSP,並泛洪。

  8. 至此,GR Restarter的IS-IS Starting過程完成。

IS-IS NSR(不間斷路由):

在網絡高速發展的今天,用戶對數據、視頻、語音等應用的需求日漸增多,運營商對IP網絡的可靠性也提出了更高的需求。當網絡中某個節點發生故障,或者維護過程中人為進行的主備倒換,都可能導致設備無法組建路由信息,導致流量丟失甚至網絡癱瘓。部署NSR(Non-Stop Routing)能夠解決上述問題,給用戶的關鍵業務提供不間斷轉發的高可靠性保障。

IS-IS NSR特性通過IS-IS實時數據的主備間高度同步來保證主備倒換后備板能夠快速接管原主控板的業務,使鄰居不感知本設備故障。在主備倒換后,新主用主控板利用這些實時數據可以迅速地恢復協議,使鄰居設備對主備倒換不感知。IS-IS NSR主要通過備份以下數據來實現:

  • 配置數據:用戶完成的所有配置,包括鄰居信息,定時器參數信息及進程下的配置信息等。
  • 動態數據:包括接口參數及狀態、鄰居、LSDB等信息。

IS-IS與BFD(雙向轉發檢測)聯動:

通常情況下,IS-IS設定發送Hello報文的時間間隔為10秒,一般將宣告鄰居Down掉的時間(即鄰居的保持時間)配置為Hello報文間隔的3倍。若在相鄰路由器失效時間內沒有收到鄰居發來的Hello報文,將會刪除鄰居。由此可見路由器能感知到鄰居故障的時間最小為秒級。這樣可能會出現在高速的網絡環境中大量報文丟失的問題。

雙向轉發檢測BFD(Bidirectional Forwarding Detection)能夠提供輕負荷、快速(毫秒級)的通道故障檢測,解決了IS-IS現有檢測機制的不足的問題。使用BFD並不是代替IS-IS協議本身的Hello機制,而是配合IS-IS協議更快的發現鄰接方面出現的故障,並及時通知IS-IS重新計算相關路由以便正確指導報文的轉發。

IS-IS與BFD聯動的實現方式 工作原理 區別
IS-IS與靜態BFD聯動 通過命令行手工配置BFD會話參數,包括了配置本地標識符和遠端標識符等,然后手工下發BFD會話建立請求。 靜態BFD的優點是可以人為控制,部署比較靈活,為了節省內存,同時又保證關鍵鏈路的可靠性,可以在某些指定鏈路部署BFD,而其他鏈路不部署。靜態BFD的缺點在於建立和刪除BFD會話時都需要手工觸發,配置時缺乏靈活性。而且有可能造成人為的配置錯誤。例如,如果配置了錯誤的本地標識符或者遠端標識符時,BFD會話將不能正常工作。
IS-IS與動態BFD聯動 通過IS-IS動態創建BFD的會話,不再依靠手工配置。當BFD檢測到故障的時候,通過路由管理通知IS-IS。IS-IS進行相應鄰居Down處理,快速發布變化的LSP信息和進行增量路由計算,從而實現路由的快速收斂。 動態BFD比靜態BFD更具有靈活性。動態BFD由路由協議動態觸發BFD會話建立,避免了人為控制可能導致的配置錯誤,且配置比較簡單,適用在全網需要配置BFD的情況。

IS-IS Auto FRR(快速重路由):

隨着網絡的不斷發展,VoIP和在線視頻等業務對實時性的要求越來越高,而IS-IS故障恢復需要經歷“故障感知、LSP更新、LSP泛洪、路由計算和下發FIB”這幾個過程才能讓流量切換到新的鏈路上,因此故障恢復的時間遠遠超過了50ms(即用戶感知流量中斷的時間),不能滿足此類網絡業務的實時性要求。

IS-IS Auto FRR(Fast reroute)遵循RFC 5286(Basic Specification for IP Fast Reroute Loop-Free Alternates)協議,可為流量提供鏈路和節點的保護。IS-IS Auto FRR能夠保證轉發系統快速地響應這種故障事件並采取措施,盡快讓業務流恢復正常。

通常情況下,通過將BFD會話與IS-IS Auto FRR進行綁定,可以使故障恢復時間降低到50ms以內。當BFD檢測到接口鏈路故障后,BFD會話狀態會變為Down並觸發接口進行快速重路由,將流量從故障鏈路切換到備份鏈路上,從而達到流量保護的目的。

工作原理:

IS-IS Auto FRR利用LFA(Loop-Free Alternates)算法預先計算好備份鏈路,並與主鏈路一起加入轉發表。當網絡出現故障時,IS-IS Auto FRR可以在控制平面路由收斂前將流量快速切換到備份鏈路上,保證流量不中斷,從而達到保護流量的目的,因此極大的提高了IS-IS網絡的可靠性。

LFA計算備份鏈路的基本思路是:以可提供備份鏈路的鄰居為根節點,利用SPF算法計算出到目的節點的最短距離。然后,按照RFC5286規定計算出無環的備份鏈路。

IS-IS Auto FRR支持對需要加入IP路由表的備份路由進行過濾,通過過濾策略的備份路由才會加入到IP路由表,因此,用戶可以更靈活的控制加入IP路由表的IS-IS備份路由。

IS-IS TE(流量工程):

傳統的路由器選擇最短的路徑作為主路由,不考慮帶寬等因素。這樣,即使某條路徑發生擁塞,也不會將流量切換到其他的路徑上。MPLS TE(Multiprotocol Label Routering Traffic Engineering)解決網絡擁塞問題有自己的優勢。通過MPLS TE,用戶可以精確地控制流量流經的路徑,從而可以避開擁塞的節點。同時,MPLS TE在建立隧道的過程中,可以預留資源,保證服務質量。

為了保證服務的連續性,MPLS TE還引入路由備份和快速重路由的機制,可以在鏈路出現問題時及時進行切換。通過MPLS TE技術,服務提供商能夠充分利用現有的網絡資源,提供多樣化的服務。同時可以優化網絡資源,進行科學的網絡管理。

MPLS TE為了實現上述目的,需要了解整個網絡中所有路由器的TE配置信息,但是MPLS TE缺乏這樣一個機制:每個路由器在整個網絡中泛洪各自的TE信息,並完成整網TE信息的同步。這個機制恰恰是IS-IS路由協議的一個基本特性,MPLS TE需要借助IS-IS完成TE信息的發布和同步。

IS-IS TE是IS-IS為了支持MPLS TE而做的擴展,它遵循RFC5305和RFC4205中關於IS-IS部分擴展的規定,通過在IS-IS LSP報文中定義新的TLV的方式,攜帶該路由器MPLS TE的配置信息,通過LSP的泛洪同步,實現MPLS TE信息的泛洪和同步。IS-IS TE把所有LSP中攜帶的TE信息提取出來,傳遞給MPLS的CSPF(Constraint Shortest Path First)模塊,用來計算隧道路徑。IS-IS TE在MPLS TE的流程中扮演着“搬運工”的角色,IS-IS TE和MPLS TE、CSPF的關系可以用下圖來概括:

MPLSTE關系圖

 

圖:MPLS TE、CSPF和IS-IS TE關系圖

 

IS-IS TE新增TLV:

IS-IS TE為了在LSP中攜帶TE信息,在RFC5305中新定義了如下四種TLV:

  • Extended IS reachability TLV

    此TLV用來替換IS reachability TLV,並采用sub TLV的形式擴展了原來的TLV格式。sub TLV在TLV中的實現方式與TLV在LSP中的實現方式相同。這些sub TLV用來攜帶配置在物理接口下的TE信息。

  • Traffic Engineering router ID TLV

    此TLV type為134,包含了四字節的Router ID,在目前實現中就是MPLS LSR-ID。對於MPLS TE來說,Router ID用來唯一的標識一台路由器,它必須要和路由器一一對應。

  • Extended IP reachability TLV

    此TLV用來替換IP reachability TLV,用來攜帶路由信息。擴展了路由開銷值的范圍(四個字節),並可以攜帶sub TLV。

  • Shared Risk Link Group TLV

    此TLV type為138,用來攜帶共享風險鏈路組信息。每個共享鏈路信息為四字節的正整數值,該TLV可以攜帶多個共享鏈路信息。

Extended IS reachability TLV 已經定義的Sub TLV:

  • | 名稱 | 類型 | 長度(Byte) | 值 |
    | ———————————- | —- | ——– | ———– |
    | Administrative Group | 3 | 4 | 管理組 |
    | IPv4 Interface Address | 6 | 4 | 本端IPv4接口地址 |
    | IPv4 Neighbour Address | 8 | 4 | 鄰居的IPv4接口地址 |
    | Maximum Link Bandwidth | 9 | 4 | 最大鏈路帶寬 |
    | Maximum Reserved Link Bandwidth | 10 | 4 | 最大預留鏈路帶寬 |
    | Unreserved Bandwidth | 11 | 32 | 未預留帶寬 |
    | Traffic Engineering Default Metric | 18 | 3 | 流量工程缺省開銷值 |
    | Bandwidth Constraints sub-TLV | 22 | 36 | 帶寬約束TLV |

IS-IS TE工作流程:

IS-IS TE主要有兩個流程:

  • 響應MPLS TE的配置消息流程

    只有使能了MPLS TE,IS-IS TE特性才能運行。

    根據MPLS TE的配置,更新IS-IS LSP報文中的TE信息。

    將MPLS TE的配置傳遞給CSPF模塊。

  • 處理LSP中TE信息的流程

    提取收到的IS-IS LSP報文中的TE信息,傳遞給CSPF模塊。

IS-IS TE的典型應用是協助MPLS TE建立TE隧道。

IS-IS多實例和多進程:

對於支持VPN(Virtual Private Network)的設備,IS-IS多實例是指在同一台路由器上,可以配置多個VPN實例與多個IS-IS進程相關聯。IS-IS多進程指在同一個VPN下(或者同在公網下)可以創建多個IS-IS進程,每個進程之間互不影響,彼此獨立。不同進程之間的路由交互相當於不同路由協議之間的路由交互。

每個IS-IS進程都可以綁定一個指定的VPN實例,其典型應用就是在VPN場景中PE和CE之間運行IS-IS協議,同時VPN骨干網上的IGP也采用IS-IS。那么,在PE上這兩個IS-IS進程互不影響。

  • IS-IS多進程共用同一個RM路由表。而IS-IS多實例使用VPN中的RM路由表,並且每個VPN都有自己單獨的RM路由表。
  • IS-IS多進程允許為一個指定的IS-IS進程關聯一組接口,從而保證該進程進行的所有協議操作都僅限於這一組接口。這樣,就可以實現一台路由器有多個IS-IS協議進程,每個進程負責唯一的一組接口。
  • IS-IS進程在創建時可以選擇綁定一個VPN實例,於是這個IS-IS進程就與此VPN實例相關聯,並且只接收和處理此VPN實例內的事件。當VPN實例刪除時,IS-IS進程也會跟着被刪除。

IS-IS鄰居震盪抑制:

IS-IS鄰居震盪抑制功能是一種震盪抑制方式,通過延遲鄰居建立或調整鏈路開銷為最大值的方法達到抑制震盪的目的。

產生原因:

如果承載IS-IS業務的接口狀態在Up和Down之間切換,就會引起鄰居狀態的頻繁震盪。此時,IS-IS會快速發送Hello報文重新建立鄰居,同步數據庫LSDB,觸發路由計算,會造成大量報文交互,影響現有鄰居的穩定性,對IS-IS業務造成較大影響,同時也會影響依賴IS-IS的其他業務(如:LDP、BGP)的正常運行。為了解決這個問題,IS-IS實現了鄰居震盪抑制功能,即在鄰居頻繁震盪時,啟動震盪抑制,實現鄰居延遲建立,或實現業務流量延遲經過頻繁震盪的鏈路,達到抑制震盪的目的。

相關概念:

  • flapping_event:震盪事件,接口上最后一次鄰居狀態由Up切換為Init或Down,稱之為flapping_event。flapping_event作為震盪源輸入,用來觸發震盪檢測機制啟動工作。
  • flapping_count:當前震盪次數。
  • detect-interval:震盪檢測間隔,用於判斷是否觸發一次有效震盪事件。
  • threshold:震盪抑制閾值,有效震盪事件觸發累計超過該值時,進入震盪抑制階段。
  • resume-interval:恢復間隔,連續兩次有效震盪事件超過該值時,退出震盪抑制階段。

實現原理:

震盪檢測

IS-IS接口啟動一個flapping_count計數器,相鄰兩次flapping_event產生時間的間隔在detect-interval之內,記為一次有效震盪事件。flapping_count計數加1,當flapping_count計數大於threshold時,系統判定震盪發生,需要進入震盪抑制階段。進入震盪抑制階段后,flapping_count清0。在flapping_count大於threshold之前,如果兩次flapping_event的間隔大於resume-interval,則flapping_count清0。鄰居震盪抑制從最后一次鄰居狀態變為Init或Down開始計時。

用戶可以通過命令行配置detect-interval,threshold,resume-interval三個震盪檢測的關鍵參數。

震盪抑制

震盪抑制分為Hold-down和Hold-max-cost兩種模式:

  • Hold-down模式:針對鄰居建立過程中的頻繁泛洪和拓撲變化的問題,在一段時間內禁止該鄰居重新建立,避免頻繁的數據庫同步和大量的報文交互。
  • Hold-max-cost模式:針對用戶業務流量頻繁切換的問題,在一段時間內將鏈路開銷值設置為最大值Max-cost(IS-IS Wide模式的Max-cost=16777214,IS-IS Narrow模式的Max-cost=63),避免用戶的業務流量經過頻繁震盪的鏈路。

Hold-down模式和Hold-max-cost模式可以疊加使用,同時生效時,先進入Hold-down模式,待Hold-down模式退出后,再進入Hold-max-cost模式。

缺省情況下,IS-IS使能Hold-max-cost模式,用戶可以通過命令行修改震盪抑制方案和震盪抑制周期。

接口進入震盪抑制階段后,接口下的全部鄰居都會進入震盪抑制階段。

退出震盪抑制

退出震盪抑制有以下幾種方式:

    • 抑制定時器超時。
    • 復位IS-IS進程。
    • 用戶通過命令行強制退出震盪抑制狀態。
    • 通過連續發送三個攜帶特殊信息的Hello報文(Padding TLV攜帶一個特殊的Sub TLV=251),通知對端設備強制退出震盪抑制狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM