在MPLS-TE隧道動態創建過程當中,能夠用於控制隧道路徑選擇的因素比較多,其中隧道的「親和屬性」和鏈路的「鏈路管理組」是兩個很是重要的因素。但許多朋友認爲這兩方面技術的工做原理比較複雜、難懂,故在此以專文進行介紹。網絡
1. 親和屬性和鏈路管理組ide
親和屬性(Affinity attribute)是描述新建的MPLS TE隧道所需鏈路屬性的32位向量,以及一個32位的掩碼,與IPv4地址和子網掩碼的組合相似。每一位也表明一種屬性,在隧道的Ingress節點的Tunnel接口下配置,並會隨着RSVP-TE信令中攜帶,能夠影響在當前設備爲該隧道已創建的LSP,使得系統能夠從新爲該隧道計算、選擇新的路徑。性能
鏈路管理組也稱鏈路顏色,或鏈路屬性,是一個表示鏈路屬性的32位向量,是在各鏈路的物理接口下配置。鏈路屬性中每一位表明一種屬性,均可以設置或不設置,也能夠將其關聯爲任何須要的意義。比如用來表示鏈路帶寬、性能或者管理策略。鏈路屬性僅對經過本接口新建立的LSP生效,不影響已創建的LSP。學習
MPLS TE隧道的創建必須先經過RSVP-TE信令肯定好隧道路徑,並讓路徑中各節點設備爲該隧道預留必定的帶寬資源。在隧道路徑選擇方面,是隧道入節點發布的RSVP-TE信令隨着OSPF TE或者ISIS TE路由信息的泛洪擴散,每通過一個節點都要根據本隧道配置的親和屬性選擇一條繼續向目的方向傳輸的適合路徑。選擇的方法是把信令中攜帶的隧道親和屬性值與當前節點設備上各條使能了MPLS TE能力的鏈路上配置的鏈路屬性與進行比較,經過匹配選擇的即做爲該隧道在本節點所選擇的路徑。spa
親和屬性中的掩碼用於肯定在鏈路屬性與親和屬性比較時須要比較的位:掩碼爲0時表示不須要比較二者對應的位(鏈路屬性對應位的值能夠任意),爲1時須要比較二者對應的位(鏈路屬性對應位的值必須與親和屬性對應位的值一致)。相似比較兩個IP地址是否要同一IP網段時,僅須要比較子網掩碼爲1的「網絡ID」部分是否相同便可,而對於子網掩碼爲0的「主機ID」不須要比較同樣。
orm
2. 鏈路屬性與親和屬性的比較規則blog
咱們知道,要比較兩個IP地址是否在同一IP網段是經過把兩個IP地址與該網段的子網掩碼進行邏輯「與」運算,若是結果同樣,則在同一IP網段,不然不在同一IP網段。鏈路屬性與親和屬性比較方法也是同樣的,也是把它們分別與掩碼進行邏輯「與」運算,若是獲得的結果相同,則認爲這兩種屬性是匹配的,在該隧道選路時就選擇對應路徑,不然放棄選擇該路徑。具體的比較規則以下:接口
(1)在全部掩碼中爲1的位(表示對應鏈路的鏈路屬性必須與隧道親和屬性必須進行匹配比較的位)中,鏈路屬性中至少有1位與親和屬性中的對應位都爲1(只有值爲1的位才表示對應的位啓用了某種鏈路屬性),即二者至少有一種屬性相同,不能徹底不一樣。資源
(2)親和屬性爲0的位(至關於沒有啓用對應鏈路屬性)對應的鏈路屬性位不能爲1(即也只能爲0,也不能啓用對應鏈路屬性),不然對應鏈路的鏈路屬性不符合隧道的鏈路屬性要求。路由
如親和屬性爲0x0000FFFF,掩碼爲0xFFFFFFFF,則可用鏈路屬性取值以下:
高16位只能取0,由於本示例中親和屬性的高16位全爲0,而根據規定,親和屬性爲0的位對應的鏈路屬性位不能爲1,也只能爲0。
低16位至少有1位爲1,由於本示例中親和屬性和掩碼的低16位都全爲1,而根據規定,在全部掩碼爲1的位中,鏈路屬性中至少有1位與親和屬性中的相應位都爲1。
由此可得出本示例中可以使用的鏈路屬性取值範圍是0x00000001~0x0000FFFF。
(3)對於掩碼爲0的位,則不對鏈路屬性的相應位進行檢查,即對應的鏈路屬性位的值能夠任意。
如親和屬性爲0xFFFFFFFF,掩碼爲0xFFFF0000,則可用鏈路屬性取值以下:
高16位至少有1位爲1,由於掩碼的高16位也全爲1,而根據規定,全部掩碼爲1的位中,鏈路屬性中至少有1位與親和屬性中的相應位都爲1。
低16位則能夠任意取0或1,由於掩碼的低16位全爲0,而根據規定,對於掩碼爲0的位,不對鏈路屬性的相應位進行檢查,便可以任意是0或1。
由此可得出本示例中可用鏈路的管理組屬性取值範圍是0x00010000~0xFFFFFFFF。
以上內容摘本身華爲官方惟一HCIE培訓教材《華爲MPLS技術學習指南》,配套教材還有《華爲MPLS ×××學習指南》和《華爲×××學習指南》。
最後給你們出一道同步練習題,現假設某MPLS-TE隧道上配置的親和屬性爲0xFFFFFFF0,掩碼爲0x0000FFFF,請計算在到達目的端的路徑上各節點配置的鏈路屬性取值範圍。請把本身的答案寫在評論中,下週公佈答案。