39

Segment Routing 之 Data-Plane & Control-Plane

 4 years ago
source link: https://www.sdnlab.com/23590.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。

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:

我们一起来结合下图举例说明:

SR-control-1.png

  • 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没有被使用。

接下来,我们逐跳的看一下:

SR-control-2.png

在Node-1上执行“Push”动作,查看FIB:压入标签16004,出接口为G0/0/0/0

SR-control-3.png

在Node-2上执行“Swap”动作,查看LFIB:local label,outgoing label,prefix,outgoing interface,next hop的对应关系

SR-control-4.png

在Node-3上执行“Pop”动作,查看LFIB:Outgoing label变成了Pop

SR-control-5.png

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

三、MPLS Data Plane Operations – Explicit-Null:

  • Explicit-Null需要针对每一个prefix-SID进行配置
  • 针对本地起源的prefix-SID配置E-flag:

SR-control-6.png

老规矩,结合下图举例说明:

SR-control-7.png

这里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传输服务:

案例走起:

SR-control-8.png

  • 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的输出:

SR-control-9.png
SR-control-10.png

  • 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:

SR-control-11.png

IS-IS配置以及database输出:

SR-control-12.png

2/ SR OSPF Control Plane Overview:

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

OSPF的扩展:

SR-control-13.png

OSPF配置以及database输出:

SR-control-14.png

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的高可用:

SR-control-15.png

  • PE1 and PE2 各自通告自己的prefix-SID:16001,16002
  • PE1 and PE2 都通告了一个 Anycast prefix-SID,16100
  • 正常情况下,流量通过PE1转发(这里假设PE1的IGP最优)

SR-control-16.png

  • 当PE1出现故障时,自动re-route,流量通过PE2转发

例行结束语:Adj-SID & LAN-Adj-SID都不需要配置,当IGP启用了Segment Routing之后,IGP会自动分配。Segment Routing TE,敬请持续关注!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK