48小时系统班试听入口

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

发布作者:新盟教育 发布日期:2023-02-23 浏览人数:2930人

网工实用技术

资源放送 

↓ 扫一扫 

领取SR-MPLS录屏资

网页同步文章.png


一、SR-MPLS

1.1.SR-MPLS是什么

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

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

2.23-1.png


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

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

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

二、SR-MPLS概念

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

而在SR-MPLS场景下,底层逻辑并未改变。公网仍然使用标签进行转发,只是分配标签的协议由LDP转为了IGP或SDN控制器。IGP收敛完成则公网标签收敛完成,而不在需要LDP协议根据路由表建立同步。

同时引入了TI-LFA(Topology-Independent Loop-Free Alternate)拓扑独立无环备份,加速IGP的收敛过程。

2.1.Segment分类

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

2.23-2.png


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

2.2.SRGB

在传统MPLS中对标签字段(20bit)进行了定义。例如:

① 0== ipv4显式空标签。常用于QOS场景。② 1== Route Alert Label非栈底场景有效。常用于故障场景。③ 2== ipv6显式空标签。作用同0。④ 3== ipv4隐式空标签。用于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。


三、SR-MPLS的BE(Best Effort)非跨域场景

SR-MPLS的BE场景基于Prefix SID或Node 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:

2.23-3.png


Router Capability:Type=242,Length=16。并表明自己支持SR功能(IPv4),同时携带了SID=16000。这里的SID应当是SRGB的起始值,Range表示了SRGB的范围。也即16000-23000。

2.23-4.png


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都不变化。

⑦ 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。

2.23-5.png


Extended IP reachability:Type=135,Length=26。该TLV主要用于携带Prefix SID和Node 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。

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流量的互相导入。

2.23-6.png


最终在转发流量时进行标签压入和弹出。公网标签=16030,私网标签=48061。

2.23-7.png


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场景进行如下配置示范:

2.23-8.png


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.状态查看

2.23-10.png


#查看adjacency-SID标签。

2.23-11.png


#查看Prefix-SID标签。

2.23-12.png


#查看私网标签/转发等价类FEC。

2.23-13.png


#查看SR-MPLS的标签转发路径LSP。

2.23-14.png


#查看目标前缀的SR-MPLS状态。

3.5.SR-MPLS跨域场景简介

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


1671585dc74035d34ac554d5f2ae42fc.jpg

推荐阅读

>>>【独家首发】新版HCIE考试解读直播回顾
>>> 重磅!华为HCIE认证改版升级通知!
>>>【命令解析】Linux用户行为的常用命令
>>> 网工必备通信基础知识,还不知道你就out了?
>>>【必备干货】网工入门必会桥接教程,外网+GNS3+Vmware
>>>【技术指南】5分钟搞清楚OSPF链路状态路由协议