SR-MPLS(BE)-原理介绍+报文解析+配置示例

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

因此本文将以SR-MPLS BE场景下报文交互过程进行介绍,以详细介绍SR-MPLS。
关于SRv6-BE场景的介绍可见该文章
关于SR-MPLS的RFC,可参考
2018-RFC8402-Segment Routing Architecture
2019-RFC8660-Segment Routing with the MPLS Data Plane
Note:第一章主要简介了SR-MPLS内容。有相关基础可以直接阅读第二章节。

目录

1.SR-MPLS

1.1.SR-MPLS是什么

SR-MPLS(Segment Routing MPLS,基于MPLS转发平面的段路由)是基于源路由理念而设计的在网络上转发数据包的一种协议。其核心思想是将报文转发路径切割成不同的段,再为其分配SID(Segment Identifier,段标识符)进行标识从而以段指导报文转发。

1.2.SR-MPLS与传统方案区别

MPLSRSVP-TE
依赖IGP可路径规划,但配置、维护复杂
缺乏路径规划能力不支持负载分担

简单来说就是传统MPLS必须依赖路由表(协议表都不行),必须在路由协议收敛之后才可进行同步。无法收敛就会造成流量黑洞。在网络质量要求越来越高的今天是不可接受的。

而资源预留协议-流量工程RSVP-TE不支持负载,这样也会造成链路带宽的浪费。且配置TE隧道极其复杂。

SDN思想(SDN不是一种协议而是一种网络架构)的兴起,对网络提出了智能化需求。SDN可以依据需求智能检测链路带宽时延情况,并据此进行网络调优。

2.SR-MPLS概念

简单来说SR-MPLS是针对传统L3VPN场景的一种替代方案。在传统L3VPN中,公网隧道由LDP协议分配标签进行流量转发。

而在SR-MPLS场景下,底层逻辑并未改变。 公网仍然使用标签进行转发,只是分配标签的协议由LDP转为了IGPSDN控制器。IGP收敛完成则公网标签收敛完成,而不在需要LDP协议根据路由表建立同步。
同时引入了TI-LFA(Topology-Independent Loop-Free Alternate)拓扑独立无环备份,加速IGP的收敛过程。

2.1.Segment分类

Segment用于指导报文转发,总的来说可分为3类。分别是Prefix Segment、Node Segment、Adjacency Segment。而针对Segment的标识SID也有如下三种。

分类生成方式作用
Prefix SID手工标识目的地址前缀。
简单理解可以用于标识目标网络
Node SID手工标识节点设备。
简单理解可以用于标识设备,例如OSPF的router-id
Adjacency SID手工或协议动态分配标识网络邻接。

Prefix SID/Node SID和Adjacency SID可以分别类比于传统IP转发中的目的地址出接口

2.2.SRGB

Segment Routing domain (SR domain):一组参与源路由模型计算的节点。这些节点可以连接到相同的物理基础设施(例如,服务提供商的网络)。如果部署了多个协议实例,则SR域通常包括网络中的所有协议实例。
SR Global Block (SRGB):SR域中的全局Segment的集合。如果一个节点参与多个SR域,则节点为每个SR域分配一个SRGB。
在SR-MPLS中,SRGB具有节点的本地属性,并且标识为全局Segment保留的一组本地标签。在里面SR-MPLS,强烈推荐在SR域内的所有节点上使用相同的SRGB。这样做可以简化操作和故障排除。
在SRv6中,SRGB是SR域中全局SRv6 SID的集合。

在传统MPLS中对标签字段(20bit)进行了定义。例如,
0== ipv4显式空标签。常用于QOS场景。
1== Route Alert Label非栈底场景有效。常用于故障场景。
2== ipv6显式空标签。作用同0。
3== ipv4/ipv6隐式空标签。用于MPLS的次末跳弹出,减轻PE设备负担。
4-13== 保留。
14== OAM Route Alert Label非栈底场景有效,常用于故障场景。
15== 保留。
16-1023== 一般用于静态LSP和静态CR(Constraint-based)-LSP。
1024-== LDP、RSVP-TE、MP-BGP等LDP动态分配。
Note:不同厂家关于标签的划分,可能不同。例如CISIO动态协议不从1024开始。

而SRGB则是相当于人为定义了一个标签分配范围。表示用户指定的为SR-MPLS预留的全局标签集合,需要手工配置,并且该集合内的标签值只能分配给Prefix SID和Node SID,而Adjacency SID是SRGB范围外的本地SID。

点击此处回到目录

3.SR-MPLS的BE(Best Effort)非跨域场景

SR-MPLS的BE场景基于Prefix SIDNode SID建立转发路径,这一LSP的建立过程与传统MPLS非常类似。通过将SID(SRGB和Prefix解析而来)在全网泛洪,建立起一条LSP。每个节点设备与传统P设备作用类似,生成标签进行普通的标签压入和弹出。
SR-MPLS的TE场景(Traffic Effort)基于Adjacency SID建立转发路径。该Adjacency SID可手工配置,也可协议分配。通过在头节点进行标签栈(多个Adjacency SID)压入,从而指定了在整个转发过程所经历的路径(严格路径)。
而且通过与Prefix SID和Node SID结合,又可分为松散路径(通过IGP自动发现最优路径而不强制指定途径节点)。

3.1.BE场景的LSP建立(ISIS)-报文解析

SR-MPLS BE场景下的LSP(Label Switched Path,标签交换路径)主要是通过IGP来实现的。通过对IGP协议进行扩展,使其可以携带SID在网络中泛洪建立LSP。从而实现IGP作为控制协议的效果。
此处IGP选择ISIS(TLV格式扩展性强)作为SR-MPLS的控制层。
OSPF当然也可以,主要是通过Type-10 Opaque LSA来传递SID

ISIS在互相发送ISIS Hello包建立邻居关系后,将发送LSP报文(Link state Protocol Data Unit)。并在LSP报文中新增如下3种字段TLV:
|-----------------------------------------------------------------------------------------------------|
在这里插入图片描述Router Capability:Type=242,Length=16。并表明自己支持SR功能(IPv4),同时携带了SID=16000。这里的SID应当是SRGB的起始值,Range表示了SRGB的范围。也即16000-23000。

233
|-----------------------------------------------------------------------------------------------------|
在这里插入图片描述Extended IS reachability:Type=22,Length=35。并携带子TLV也即subTLV=LAN-Adj-SID:Type=32,Length=11。这里的SID应当是Adjacency SID=48021。Flags字段的Local Significance bit置为1也即具有本地意义。在BE场景下自动生成不涉及,但全网泛洪。
Flags标志字段:
F== 地址族标志。如果未置位,代表IPv4;如果置位,代表IPv6。
B== 备份标志。如果置位,Adj-SID用于保护其他节点。
V== Value标志。如果置位,Adj-SID携带标签值Value。
S== 序列标志。如果置位,表示Adj-SID是一个Adjacency序列。
L== Local标志。如果置位,表示Adj-SID携带的Value/Index具有本地意义。
P== 永久标志。如果置位,表示Adj-SID是一个永久分配的SID,无论设备重启或接口震荡该SID都不变化。
此处未在Wireshark中展示
Weight:1字节。代表Adj-SID权重,可以用于负载分担。
System-ID:6字节。ISIS节点标识。
SID/Index/Label:可变长度。V-bit和L-bit都不置位=0时,表示 SID/Label范围内的4字节的标签偏移值。V-bit和L-bit都置位=1时,表示一个3字节的本地标签,最右边的20位用于标记标签值。
在广播网中存在DIS的概念,每个网元仅发布一条到DIS的IS-IS Extended IS reachability TLV-22,然后把到其他邻居的Adj-SID封装在一个新的TLV中,这就是LAN-Adj-SID Sub-TLV。该TLV包含了网元为所有LAN网络邻居分配的Adj-SID。
233
|-----------------------------------------------------------------------------------------------------|
在这里插入图片描述
Extended IP reachability:Type=135,Length=26。该TLV主要用于携带Prefix SIDNode SID。指定前缀为1.1.1.1,前缀长度为32。其中携带子TLV== subTLV-Prefix SID

subTLV=Prefix SID:Type=3,Length=6。并在Flags字段的Node-SID bit位置为1标识为Node-SID。实际上Node-SID可以认为是一种特殊的Prefix SID,是针对设备Loopback口IP地址映射的标签。值得注意的是这里的SID=0x0000000a(转化为10进制的10)指的是人为指定的SRGB prefix Index。可参考下一节对loopback地址的配置。
Flags标志字段:
R== 重发布标志。如果置位,表示该前缀从其他路由协议引入或者从ISIS的其他Level区域引入。
N== Node-SID标志。如果置位,则该Prefix-SID代表一个节点。
这里从报文角度解析了Node-SID其实是Prefix-SID的一种
P== no-Penultimate Hop Popping。如果置位,表示不启用倒数第二跳弹出。
E== 显式空标签Explicit-Null标志。如果置位,则启用显式空标签特性。上游发送报文Label为显示空标签。
V== Value标志。如果置位,则Prefix-SID携带的SID为实际值。
例如这里置为0,表示携带的SID是Index
L== Local标志。如果置位,表示Prefix-SID携带的Value/Index具有本地意义。
Algorithm:1字节。0== Shortest Path First,最短路径算法;1== Strict Shortest Path First,严格最短路径算法。
SID/Index/Label:可变长度。V-bit和L-bit都不置位=0时,表示 SID/Label范围内的4字节的标签偏移值。V-bit和L-bit都置位=1时,表示一个3字节的本地标签,最右边的20位用于标记标签值。

ISIS将不同设备的SID进行同步后,在完成路由收敛的同时也完成了标签转发路径LSP的建立
@:随后在PE之间建立BGP VPNv4邻居以便传递VPNv4路由后进行不同VPN流量的互相导入。在这里插入图片描述
最终在转发流量时进行标签压入和弹出。
在这里插入图片描述公网标签=16030,私网标签=48061

3.2.BE场景的LSP建立过程

SR-MPLS的标签转发路径LSP的建立可参考传统L3VPN的LDP理解。
1@:每台设备上配置SRGB,并在Loopback地址节点上指定Index(Prefix-SID)。Note:SRGB和Index具有本地意义,可以不一致。
2@:IGP协议(ISIS)在LSPDU报文中封装SRGP和Prefix-SID在全网泛洪。网络中其他设备接收到LSP报文后,解析D发布的Prefix SID。并为LSP分配标签。
计算公式是:OuterLabel=下一跳设备发布的SRGB的起始值+Prefix SID值。

示例:P1–P2–P3需要建立LSP
1@首先定义
P1== SRGB=16000-17000,IndrxPrefix-SID=10
P2== SRGB=18000-19000,IndrxPrefix-SID=20
P3== SRGB=20000-21000,IndrxPrefix-SID=30

P1为上游P1分配标签16010;上游P2分配标签16020;上游P3分配标签16030。
P2为上游P2分配标签18020;上游P3分配标签18030。
P2为上游P3分配标签20030。
按如上顺序便可建立P1到P3路径上的多条LSP。
此时P1向P3发报文封装16030的标签,P2封装18030。(此时没有考虑PHP下一跳弹出场景)。

P3向P1的LSP建立也如上类似,从而建立双向LSP。

3.3.BE场景(ISIS)配置示例

针对BE场景进行如下配置示范:在这里插入图片描述1@为了减轻设备压力,此时将CE设备替换为终端。其实无影响,只是BGP引入私网路由方式为直连路由。这里也可选用CE设备建立OSPF、BGP邻居等后进行双点双向重分发。
@其实P设备也可指定为两个,可以实现负载效果。这里考虑了设备的最小化需求。实际可酌情添加

2@这里只提供了PE设备配置,有能力者可自行进行P和PE设备的配置。
有需要者可私信联系提供模拟器源文件及配置。

PE

sysname NE1

ip vpn-instance vpn-a
ipv4-family
route-distinguisher 1:1
tnl-policy sr-mpls
vpn-target 100:100 export-extcommunity
vpn-target 100:100 import-extcommunity

//需要在私网中优选SR-MPLS隧道。

mpls lsr-id 1.1.1.1

//sr-mpls使用的还是mpls,只是控制协议由LDP变成了IGP。所以仍然需要开启MPLS。

isis 10
is-level level-2
cost-style wide
network-entity 49.0000.0000.0001.00
segment-routing mpls
segment-routing global-block 16000 23000
frr
loop-free-alternate level-2
ti-lfa level-2

//使用IGP建立标签转发路径LSP。并指定SRGB。这里启用了TI-LFA FRR,可以用于缓解拓扑改变时的流量中断情况。

interface Ethernet1/0/0
undo shutdown
ip binding vpn-instance vpn-a
ip address 10.1.1.100 255.255.255.0

interface Ethernet1/0/1
undo shutdown
ip address 10.1.2.1 255.255.255.0
isis enable 10
mac-address 380f-ae01-1122

interface LoopBack1
ip address 1.1.1.1 255.255.255.255
isis enable 10
isis prefix-sid index 10

//这里手动指定Prefix SID的Index,可参考先前报文的Extended IP reachability字段。

bgp 100
router-id 1.1.1.1
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack1

ipv4-family unicast
undo synchronization
undo peer 3.3.3.3 enable

ipv4-family vpnv4
policy vpn-target
peer 3.3.3.3 enable

ipv4-family vpn-instance vpn-a
import-route direct

//建立MP-BGP传递私网路由,与传统L3VPN相同。

undo dcn

//由于设备资源需要,建议关闭DCN。

tunnel-policy sr-mpls
tunnel select-seq sr-lsp load-balance-number 1

//建立SR-MPLS隧道,并同时选定负载均衡为1。如果有多个P设备,可以选定多个进行负载。

3.4.状态查看

在这里插入图片描述#查看adjacency-SID标签。在这里插入图片描述#查看Prefix-SID标签。
在这里插入图片描述#查看私网标签/转发等价类FEC。

在这里插入图片描述#查看SR-MPLS的标签转发路径LSP。
在这里插入图片描述#查看目标前缀的SR-MPLS状态。

3.5.SR-MPLS跨域场景简介

MPLS/VPN使用LDP作为公网隧道的一个特点就是在不同AS域间无法传递标签,标签转发路径LSP只能在AS内建立。而SR-MPLS也具有这一特定。针对该场景,BGP也进行了协议扩展能够针对BGP的Peer相关信息分配BGP Peer SID。(SRv6对跨域场景有更好的解决方式)
L3VPN over SRv6可见该文章

BGP for SR-MPLS主要包括BGP EPE(Egress Peer Engineering)扩展和BGP-LS扩展。
之后将对BGP的协议扩展进行介绍。

点击此处回到目录

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值