mpls ldp lsp建立過程——Vecloud

Vecloud發表於2021-03-11

  預設情況下,網路的路由改變時,如果有一個邊緣節點(Egress)發現自己的路由表中出現了新的主機路由,並且這一路由不屬於任何現有的FEC,則該邊緣節點需要為這一路由建立一個新的FEC。

  如果MPLS網路的Egress有可供分配的標籤,則為FEC分配標籤,並主動向上游發出標籤對映訊息,標籤對映訊息中包含分配的標籤和繫結的FEC等資訊。

  Transit收到標籤對映訊息後,判斷標籤對映的傳送者(Egress)是否為該FEC的下一跳。若是,則在其標籤轉發表中增加相應的條目,然後主動向上游LSR傳送對於指定FEC的標籤對映訊息。

  Ingress收到標籤對映訊息後,判斷標籤對映的傳送者(Transit)是否為該FEC的下一跳。若是,則在標籤轉發表中增加相應的條目。這時,就完成了LSP的建立,接下來就可以對該FEC對應的資料包文進行標籤轉發。

  上面介紹的是普通LDP LSP的建立,還有一種代理Egress LSP。代理Egress(Proxy Egress)是能夠針對非本地路由觸發建立LSP的Egress節點,當路由器使能倒數第二跳彈出時,倒數第二跳節點實際上就是一種特殊的代理Egress。一般情況下,代理Egress由配置產生。代理Egress可以應用於網路中有不支援MPLS特性的路由器場景,也可用於解決BGP路由負載分擔問題。

  為了提高LDP報文的安全性,MPLS提供了三種保護機制:LDP MD5認證、LDP Keychain認證和LDP GTSM。

  LDP Keychain認證是比LDP MD5認證更安全的加密認證,對於同一鄰居,只能選擇其中一個加密認證;而LDP GTSM用來防止裝置受到非法LDP報文的攻擊,其可以與前面兩個配合使用。

  MD5(Message-Digest Algorithm 5)是RFC1321定義的國際標準摘要密碼演算法。MD5的典型應用是針對一段資訊計算出對應的資訊摘要,從而防止資訊被篡改。MD5資訊摘要是透過不可逆的字串變換演算法產生的,結果唯一。因此,不管資訊內容在傳輸過程中發生任何形式的改變,只要重新計算就會產生不同的資訊摘要,接收端就可以由此判定收到的是一個不正確的報文。

  LDP MD5應用其對同一資訊段產生唯一摘要資訊的特點來實現LDP報文防篡改校驗,比一般意義上TCP校驗和更為嚴格。其實現過程如下:

  LDP會話訊息在經TCP發出前,會在TCP頭後面填充一個唯一的資訊摘要再發出。而這個資訊摘要就是把TCP頭、LDP會話訊息以及使用者設定的密碼一起作為原始資訊,透過MD5演算法計算出的。

  當接收端收到這個TCP報文時,首先會取得報文的TCP頭、資訊摘要、LDP會話訊息,並結合TCP頭、LDP會話訊息以及本地儲存的密碼,利用MD5計算出資訊摘要,然後與報文攜帶的資訊摘要進行比較,從而檢驗報文是否被篡改過。

  Keychain是一種增強型加密演算法,類似於MD5,Keychain也是針對同一段資訊計算出對應的資訊摘要,實現LDP報文防篡改校驗。

  Keychain允許使用者定義一組密碼,形成一個密碼串,並且分別為每個密碼指定加解密演算法(包括MD5,SHA-1等)及密碼使用的有效時間。在收發報文時,系統會按照使用者的配置選出一個當前有效的密碼,並按照與此密碼相匹配的加密解密演算法以及密碼的有效時間,進行傳送時加密和接收時解密報文。此外,系統可以依據密碼使用的有效時間,自動完成有效密碼的切換,避免了長時間不更改密碼導致的密碼易破解問題。

  Keychain的密碼、所使用的加解密演算法以及密碼使用的有效時間可以單獨配置,形成一個Keychain配置節點,每個Keychain配置節點至少需要配置一個密碼,並指定加解密演算法。

  通用TTL安全保護機制GTSM(Generalized TTL Security Mechanism)是一種透過檢查IP報文頭中的TTL值是否在一個預先定義好的範圍內來實現對IP業務進行保護的機制。使用GTSM的兩個前提:

  裝置之間正常報文的TTL值確定

  報文的TTL值很難被修改

  LDP GTSM是GTSM在LDP方面的具體應用。

  GTSM透過判定報文的TTL值,確定報文是否有效,從而保護裝置免受攻擊。LDP GTSM是對相鄰或相近(基於只要跳數確定的原則)裝置間的LDP訊息報文應用此種機制。使用者預先在各裝置上設定好針對其他裝置報文的有效範圍,使能GTSM,這樣當相應裝置之間應用LDP時,如果LDP訊息報文的TTL不符合之前設定的範圍要求,裝置就認為此報文為非法攻擊報文予以丟棄,進而實現對上層協議的保護。

  LDP跨域擴充套件透過使能LDP按最長匹配原則查詢路由,使LDP能夠依據聚合後的路由建立起跨越多個IGP區域的LDP LSP。

  當網路規模比較大時,通常需要部署多個IGP區域來達到靈活部署和快速收斂的目的。在這種情況下,IGP區域間進行路由通告時,為了避免路由數量多而引起的對資源的過多佔用,區域邊界路由器(ABR)需要將區域內路由聚合,再通告給相鄰的IGP區域。然而,LDP在建立LSP的時候,會在路由表中查詢與收到的標籤對映訊息中攜帶的FEC精確匹配的路由,對於聚合路由,LDP只能建立Liberal LSP,無法建立跨越IGP區域的LDP LSP。因此,引入LDP跨域擴充套件來解決這個問題。

  注:已經被分配標籤,但是沒有建立成功的LSP叫做Liberal LSP。

  存在Area10和Area20兩個IGP區域。在Area10區域邊緣的LSR_2的路由表中,存在到LSR_3和LSR_4的兩條主機路由,為了避免路由數量多而引起的對資源的過多佔用,在LSR_2上透過ISIS路由協議將這兩條路由聚合為1.3.0.0/24傳送到Area20區域。

  LDP在建立LSP的時候,會在路由表中查詢與收到的標籤對映訊息中攜帶的FEC精確匹配的路由,LSR_1的路由表中只有這條聚合後的路由,而沒有32位的主機路由。

  對於聚合路由,LDP只能建立Liberal LSP,無法建立跨越IGP區域的LDP LSP,以至於無法提供必要的骨幹網隧道。

  因此,在LSR_1上需要按照最長匹配的方式查詢路由建立LSP。在LSR_1的路由表中,已經存在聚合路由1.3.0.0/24。當LSR_1收到Area10區域的標籤對映訊息時(例如攜帶的FEC為1.3.0.1/32),按照最長匹配的查詢方式,LSR_1能夠找到聚合路由1.3.0.0/24的資訊,把該路由的出介面和下一跳作為到FEC 1.3.0.1/32的出介面和下一跳。這樣,LDP就可以建立跨越IGP區域的LDP LSP。

  LDP是用來在LSR之間建立LDP Session並交換Label/FEC對映資訊的協議。

  LDP用UDP(協議ID=17)發現鄰居,用TCP(協議ID=6)建立鄰接(LDP協議的目的埠號:646)

  LDP協議將hello報文發往224.0.0.2(所有開啟組播功能的路由器)的組播組,用於發現直連鏈路上的LDP鄰居。

  LDP的hello報文傳送間隔是5s,hold time是3倍的hello時間15s。

  LDP的keepalive報文的傳送間隔是15s,old timer是3倍的keepalive時間45s。

  LDP的環路檢測機制:

  LDP路由向量法和最大跳數法分別透過兩類TLV實現:Path Vector TLV和Hop Count TLV。如果配置使用者兩類方法檢測環路,那麼在標籤請求訊息(Label Requset Message)和標籤對映訊息(Label Mapping MEssage)中都會攜帶者兩種TLv。

  距離向量法:每個LSR在傳送標籤請求訊息(標籤對映訊息)中,包含一個Path Vector TLV,並且入口(出口)LSR產生的路由長度值為1,並且把自己的LSR ID加入到TLV的列表中,標籤請求訊息(標籤對映訊息)每經過一跳長度值加1,接收端LSR如果收到標籤請求訊息(標籤對映訊息),發現長度值達到預先設定的最大值或者發現LSR ID列表中有自己的LSR ID,認為發生環路,發出通告訊息,拒絕LSP的建立。

  LDP:可以為直連、靜態和IGP路由分配標籤。

  RSVR-TE:為TE預留資源和分配標籤。

  MPBGP:可以為私網路由分配標籤。

  BGP:可以為BGP路由分配標籤。

  轉發等價類FEC(Forwarding Equivalence Class)是一組具有某些共性的資料流的集合。這些資料流在轉發過程中被LSR以相同的方式出。

  FEC可以根據地質、業務型別、QoS等要素進行劃分。例如,在傳統的採用最常匹配演算法的IP轉發中,到同一條路由的所有報文就是一個轉發等價類。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984354/viewspace-2762303/,如需轉載,請註明出處,否則將追究法律責任。

相關文章