作者简介:张磊,思科原厂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:
我们一起来结合下图举例说明:
- 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为V** prefix
- BGP下一跳:1.1.1.2(egress PE)
- 两个ECMP路径:99.1.3.3,99.1.5.5;
- 两个ECMP,分别压入两层标签:一个是prefix-SID 16002,一个是BGP V** 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,敬请持续关注!