Segment Routing 之 Data-Plane & Control-Plane

SR是一種靈活的、可擴展的源路由方法。源選擇一條路徑,並在包頭中將其編碼爲Segment的有序列表。每個Segment由Segment ID (SID)標識。通過SR,網絡不在需要來維護每個應用和每個流的狀態。取而代之的是,它完全遵從包頭中的轉發指令。本篇將針對Segment Routing的Data-Plane & Control-Plane進一步展開介紹。

一、MPLS Data-Plane Operations

1/ MPLS使用現有的MPLS作爲Data-Plane:

  • Segment (SR)-> label (MPLS)
  • Segment list (SR)-> label stack (MPLS)

2/ 仍然使用“次末跳彈出(PHP)”以及“顯式空(Explicit-Null)”

  • 默認: PHP 開啓
  • Explicit-Null label 爲非默認,如有需要可以手動enable

二、MPLS Data Plane Operations – PHP:

我們一起來結合下圖舉例說明:

  • Node-4 通告了它的loopback接口的IPv4前綴:1.1.1.4/32,prefix-SID:16004. (或者Node-4通告ipv6前綴2001::0101:0104/128,prefix-SID:16004)
  • Node-4要求使用默認PHP(noPHP-flag=0, ExpNull-flag=0)。PS:在這裏Explicit-Null沒有被使用。

接下來,我們逐跳的看一下:

在Node-1上執行“Push”動作,查看FIB:壓入標籤16004,出接口爲G0/0/0/0

在Node-2上執行“Swap”動作,查看LFIB:local label,outgoing label,prefix,outgoing interface,next hop的對應關係

在Node-3上執行“Pop”動作,查看LFIB:Outgoing label變成了Pop

在Node-4上,它收到的包就不再帶有SID Lable

三、MPLS Data Plane Operations – Explicit-Null:

  • Explicit-Null需要針對每一個prefix-SID進行配置
  • 針對本地起源的prefix-SID配置E-flag:

老規矩,結合下圖舉例說明:

這裏Node-4通過的loopback接口前綴“NP-flag=1,E-flag=1”,即:禁用PHP,啓用Explicit-Null。這裏Node-3將與上一個例子中的動作不同:從Node-3的LFIB輸出可見:Outgoing Label變成了“Exp-Null-v4”。如果是IPv6,這裏就會顯示成“Exp-Null-v6”

四、簡單高效的MPLS傳輸服務:

案例走起:

  • MPLS服務依賴於prefix segment
  • 上圖兩個PE(Node-1 & Node-2)建立MP-BGP
  • Node-2通告前綴1.1.1.2/32,prefix-SID:16002
  • Red VRF中的CE(Node-8)通告前綴10.0.0.0/30

我們看一眼Node-1的輸出:


  • Node-1上有兩個VRF:一個是global vrf(或者叫default vrf),一個是RED vrf
  • Node-1上查看global vrf中的1.1.1.2/32 FIB:
    • 1.1.1.2/32爲global prefix
    • 兩個ECMP(等價負載路徑)
    • 分別push label 16002,兩個出接口
  • Node-1上查看RED vrf中的10.0.0.0/30 FIB:
    • 10.0.0.0/32爲VPN prefix
    • BGP下一跳:1.1.1.2(egress PE)
    • 兩個ECMP路徑:99.1.3.3,99.1.5.5;
    • 兩個ECMP,分別壓入兩層標籤:一個是prefix-SID 16002,一個是BGP VPN label 90001

五、IGP Control plane:

  • 使用IS-IS或者OSPF
  • 在IGP下配置Segment Routing
  • Segment Routing同樣也支持multi-area,multi-level網絡

1/ SR IS-IS Control Plane:

  • 支持IPv4和IPv6
  • 支持Level 1,level 2 和multi-level路由
  • 支持Prefix-SID
  • 支持Adj-SID
  • 支持MPLS的PHP和Explicit-Null

IS-IS的擴展TLV:

IS-IS配置以及database輸出:

2/ SR OSPF Control Plane Overview:

  • 支持Multi-area
  • 支持Prefix-SID
  • 支持Adj-SID
  • 支持MPLS的PHP和Explicit-Null

OSPF的擴展:

OSPF配置以及database輸出:

3/ Anycast Prefix Segments:

  • Anycast prefixes: 相同的prefix由多個節點通告
  • Anycast prefix-SID:相同的prefix使用相同的prefix-SID
  • 流量轉發依據IGP最佳路徑
  • 如果primary node故障,流量自動re-route到其他節點
  • 注意:通告相同的anycast prefix-SID必須有相同的SRGB!

4/ Anycast Prefix-SID的高可用:

  • PE1 and PE2 各自通告自己的prefix-SID:16001,16002
  • PE1 and PE2 都通告了一個 Anycast prefix-SID,16100
  • 正常情況下,流量通過PE1轉發(這裏假設PE1的IGP最優)

  • 當PE1出現故障時,自動re-route,流量通過PE2轉發

例行結束語:Adj-SID & LAN-Adj-SID都不需要配置,當IGP啓用了Segment Routing之後,IGP會自動分配。Segment Routing TE,敬請持續關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章