IS-IS的基本原理-鄰居建立和LSP更新

序號接續前文,並非筆誤

歡迎留言交流

IS-IS的基本原理-鄰居建立和LSP更新

2.2 IS-IS鄰居關係的建立

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

2.2.1廣播鏈路上的鄰居建立

Level-1和Level-2鄰居關係建立的過程完全相同。

IS-IS的基本原理-鄰居建立和LSP更新

RouterA廣播發送Level-2 LAN IIH,此報文中無鄰居標識。

RouterB收到此報文後,將自己和RouterA的鄰居狀態標識為Initial。然後,RouterB再向RouterA回覆Level-2 LAN IIH,此報文中標識RouterA為RouterB的鄰居。

RouterA收到此報文後,將自己與RouterB的鄰居狀態標識為Up。然後RouterA再向RouterB發送一個標識RouterB為RouterA鄰居的Level-2 LAN IIH。

RouterB收到此報文後,將自己與RouterA的鄰居狀態標識為Up。這樣,兩個路由器成功建立了鄰居關係。

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

IS-IS的基本原理-鄰居建立和LSP更新

IS-IS的基本原理-鄰居建立和LSP更新

IS-IS的基本原理-鄰居建立和LSP更新

2.2.2 P2P鏈路鄰居關係的建立

在P2P鏈路上,鄰居關係的建立不同於廣播鏈路。分為兩次握手機制和三次握手機制。過三次發送P2P的IS-IS Hello PDU最終建立起鄰居關係,類似廣播鄰居關係的建立。

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

2.2.3 IS-IS鄰居建立的原則

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

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

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

鏈路兩端IS-IS接口的地址必須處於同一網段。

isis peer-ip-ignore的解釋

當鏈路兩端IS-IS接口的地址不在同一網段時,如果配置接口對接收的Hello報文不作IP地址檢查,也可以建立鄰居關係。P2P鏈路就可以這樣配,廣播鏈路模擬P2P鏈路之後也可以這樣配。

因為IS-IS是直接運行在數據鏈路層上的協議,並且最早設計是給CLNP使用的,IS-IS鄰居關係的形成與IP地址無關。但在實際的實現中,由於只在IP上運行IS-IS,所以是要檢查對方的IP地址的。如果接口配置了從IP,那麼只要雙方有某個IP(主IP或者從IP)在同一網段,就能建立鄰居,不一定要主IP相同。

2.2.4 IS-IS LSP

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

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

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

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

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

IS-IS的基本原理-鄰居建立和LSP更新

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

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

IS-IS的基本原理-鄰居建立和LSP更新

  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鏈路中設備的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報文作為確認。
    (要Remaining Lifetime=0的)
  3. 若收到的LSP和本地LSP的序列號相同且Remaining Lifetime都不為0,則比較Checksum,若收到LSP的Checksum大於本地LSP的Checksum,則將收到的LSP存入LSDB中併發送PSNP報文來確認收到此LSP,然後將該LSP發送給除了發送該LSP的鄰居以外的鄰居;若收到LSP的Checksum小於本地LSP的Checksum,則直接給對方發送本地的LSP,然後等待對方給自己一個PSNP報文作為確認。(要Checksum大的)
  4. 若收到的LSP和本地LSP的序列號、Remaining Lifetime和Checksum都相同,則不轉發該報文。


分享到:


相關文章: