网工实用技术
网工实用技术
资源放送
↓ 扫一扫 ↓
领取SR-MPLS录屏资料
1.1.SR-MPLS是什么
SR-MPLS(Segment Routing MPLS,基于MPLS转发平面的段路由)是基于源路由理念而设计的在网络上转发数据包的一种协议。其核心思想是将报文转发路径切割成不同的段,再为其分配SID(Segment Identifier,段标识符)进行标识从而以段指导报文转发。
1.2.SR-MPLS与传统方案区别
简单来说就是传统MPLS必须依赖路由表(协议表都不行),必须在路由协议收敛之后才可进行同步。无法收敛就会造成流量黑洞。在网络质量要求越来越高的今天是不可接受的。
而资源预留协议-流量工程RSVP-TE不支持负载,这样也会造成链路带宽的浪费。且配置TE隧道极其复杂。
SDN思想(SDN不是一种协议而是一种网络架构)的兴起,对网络提出了智能化需求。SDN可以依据需求智能检测链路带宽时延情况,并据此进行网络调优。
简单来说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也有如下三种。
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场景基于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:
Router Capability:Type=242,Length=16。并表明自己支持SR功能(IPv4),同时携带了SID=16000。这里的SID应当是SRGB的起始值,Range表示了SRGB的范围。也即16000-23000。
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。
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流量的互相导入。
最终在转发流量时进行标签压入和弹出。公网标签=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对跨域场景有更好的解决方式)
推荐阅读
>>>【独家首发】新版HCIE考试解读直播回顾
>>> 重磅!华为HCIE认证改版升级通知!
>>>【命令解析】Linux用户行为的常用命令
>>> 网工必备通信基础知识,还不知道你就out了?
>>>【必备干货】网工入门必会桥接教程,外网+GNS3+Vmware
>>>【技术指南】5分钟搞清楚OSPF链路状态路由协议