ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

ENSP实战SR-MPLS TE:从原理到配置,掌握流量工程与快速重路由

ENSP实战SR-MPLS TE:从原理到配置,掌握流量工程与快速重路由 1. 项目概述为什么要在ENSP里折腾SR-MPLS TE如果你正在学习运营商网络或者数据中心网络技术最近肯定没少听到“SR-MPLS”和“流量工程TE”这两个词。它们不再是书本上晦涩的概念而是真真切切在改变着网络流量调度方式的核心技术。但理论看了一堆命令也背了几条一到自己动手就懵了——路径怎么算的标签怎么转发的故障了怎么切光靠想是想不明白的。这就是为什么我们需要在ENSPEnterprise Network Simulation Platform里亲手搭一个SR-MPLS TE的实验环境。ENSP作为华为官方的网络模拟器虽然有些小毛病但它提供了近乎真实的设备命令行界面和转发逻辑是验证复杂协议交互的绝佳沙箱。这个实验的目标非常直接不追求大而全的复杂拓扑而是聚焦于一个最小化的核心场景让你能清晰地看到SR-MPLS TE从控制平面计算到数据平面转发的完整链条并亲手触发一次路径切换感受其“弹性”所在。简单来说我们要模拟一个场景有两条不同带宽或延迟的物理路径比如一条高速光纤一条备份微波如何让指定的高优先级流量比如视频会议流始终走最优的那条路并且在主路出现故障时几十毫秒内自动切换到备份路径业务无感知。通过这个实验你会彻底理解SR-MPLS如何用Segment段来简化路径描述TE如何计算满足带宽需求的路径以及两者结合后带来的运维简化。下面我们就从实验的设计思路开始一步步拆解。2. 实验整体设计与核心思路拆解在动手敲命令之前我们必须把设计思路理清楚。一个盲目的实验只是命令的堆砌而一个思路清晰的实验则能让你举一反三。2.1 拓扑设计与业务场景定义我设计了一个经典的四节点环形拓扑这是理解TE最直观的模型。拓扑如下图所示逻辑结构[R2] / \ 10G/5ms 5G/10ms / \ [R1]------[R3] \ / 1G/20ms 1G/20ms \ / [R4]节点角色R1 流量注入点Ingress PE。所有需要TE调度的流量从这里进入SR-MPLS网络。R2、R3、R4 核心转发节点P节点。R3同时作为 流量出口点Egress PE。流量从这里离开SR-MPLS网络去往目的地。让一个节点同时承担P和PE角色可以简化实验聚焦于核心的路径计算与转发。链路规划R1 - R2 - R3 这条路径我们定义为“高性能主路径”。假设R1-R2链路为10G带宽、5ms延迟R2-R3链路为10G带宽、5ms延迟。R1 - R4 - R3 这条路径定义为“普通备份路径”。假设R1-R4和R4-R3链路均为1G带宽、20ms延迟。业务需求 从R1发往R3的、标记为“视频流量”的数据必须优先走高性能主路径R1-R2-R3。只有当主路径任一链路故障时流量才自动切换到备份路径R1-R4-R3。这个设计的好处在于它包含了TE的核心要素路径选择基于约束、显式路径、故障保护同时拓扑简单便于我们观察和分析。2.2 技术方案选型为什么是SR-MPLSISISTE面对这个需求我们有多种协议组合可以实现比如传统的RSVP-TE。但这里我们选择SR-MPLS TE这是有充分理由的1. 控制平面IS-IS为什么是首选在运营商核心网IS-IS是事实上的标准IGP内部网关协议。相比于OSPFIS-IS扩展性更好TLV类型-长度-值结构天生适合携带各种新信息比如SR所需的Segment路由信息Prefix-SID、Adj-SID和TE所需的链路属性带宽、延迟。在ENSP上IS-IS的配置和故障排除也相对直观。我们将启用IS-IS的Level-2模式让所有节点在同一个区域简化路由学习。2. 数据平面SR-MPLS如何简化操作传统MPLS需要运行LDP标签分发协议来分发标签配置和管理是独立的。SR-MPLS革命性地将标签和网络拓扑绑定。我们只需要在IS-IS中为每个环回口Loopback作为节点标识分配一个唯一的Prefix Segment ID前缀段标识简称Prefix-SID。这个SID全局可见、意义明确。要指定一条路径Ingress节点R1只需要将路径上各个节点的Prefix-SID按顺序排列压入标签栈即可。网络设备无需为整条路径维护状态只需根据顶层标签做最基础的PHP次末跳弹出或连续标签交换极大简化了数据平面。3. 流量工程CSPF算法如何工作TE的核心是CSPF约束最短路径优先。它不再是IGP简单的“跳数最少”或“成本最低”而是“在满足约束条件如所需带宽小于链路可用带宽的前提下找一条成本最优的路径”。在我们的实验中R1作为Ingress节点会基于IS-IS泛洪的TE数据库TEDB运行CSPF算法。当它收到去往R3的、需要保证带宽的流量时它会计算出满足带宽约束的主路径R1-R2-R3和备份路径R1-R4-R3并分别生成两条不同的标签栈。4. 故障恢复TI-LFA如何实现快速收敛这是SR-MPLS TE的一大亮点。TI-LFATopology-Independent Loop-Free Alternate是一种基于SR的快速重路由技术。它可以为链路的故障提前计算好备份路径。在我们的主路径上R1可以预先为R1-R2这条链路计算一个备份路径比如R1-R4-R3-R2不这会有环。实际是计算一个无环的迂回路径。当R1检测到去往R2的直连链路故障时能在毫秒级内将流量切换到事先安装好的备份转发表项上速度远超IGP收敛。我们将在实验中模拟链路故障验证这一点。注意 ENSP对SR-TE和TI-LFA的支持程度因版本和设备类型而异。较新的ENSP Pro及AR系列高版本镜像支持较好。本实验基于较通用的SR-MPLS基础功能设计确保在主流环境下可模拟。3. 实验环境准备与基础配置工欲善其事必先利其器。实验的成功一半取决于前期的环境准备。3.1 ENSP环境搭建与设备选型首先确保你的ENSP能够正常运行。建议使用VirtualBox 6.x版本如6.0.24兼容性相对最稳。如果启动设备报“错误代码40”通常是因为虚拟网卡问题可以尝试以管理员身份运行ENSP或重置VirtualBox的虚拟网卡。设备选型 选择支持MPLS和SR的路由器。在ENSP中AR3260或AR6120是比较好的选择它们的功能比较全面。我们需要4台。每台设备至少需要添加2个接口板例如2SA来提供足够的物理接口。软件版本 确保设备镜像的版本支持segment-routing mpls命令。你可以通过display version查看。如果命令不存在可能需要更新设备镜像包。连线与IP规划 按照之前设计的拓扑进行连线。为每个接口配置IP地址并规划好32位的环回口地址Loopback0这个地址将作为设备的Router-ID和SR的节点标识。以下是一个清晰的IP地址规划表示例设备接口对端设备IP地址网络备注R1GE0/0/0R2-GE0/0/010.1.12.0/24主路径第一跳R1GE0/0/1R4-GE0/0/010.1.14.0/24备份路径第一跳R1Loopback0-1.1.1.1/32节点SID基础R2GE0/0/0R1-GE0/0/010.1.12.0/24-R2GE0/0/1R3-GE0/0/010.1.23.0/24主路径第二跳R2Loopback0-2.2.2.2/32-R3GE0/0/0R2-GE0/0/110.1.23.0/24-R3GE0/0/1R4-GE0/0/110.1.34.0/24备份路径第二跳R3Loopback0-3.3.3.3/32流量目的地R4GE0/0/0R1-GE0/0/110.1.14.0/24-R4GE0/0/1R3-GE0/0/110.1.34.0/24-R4Loopback0-4.4.4.4/32-3.2 基础网络连通性配置在配置任何高级特性之前必须确保底层IP连通性是通的。这里以R1为例其他设备参照修改。# 进入系统视图 sysname R1 # 配置接口IP interface GigabitEthernet0/0/0 ip address 10.1.12.1 24 interface GigabitEthernet0/0/1 ip address 10.1.14.1 24 # 配置环回口务必使用32位掩码 interface LoopBack0 ip address 1.1.1.1 32配置完成后先不要开启MPLS。使用ping命令测试直连链路的互通性例如在R1上ping 10.1.12.2和ping 10.1.14.4。这是后续所有协议的基础务必确保无误。4. ISIS与SR-MPLS基础配置详解基础网络通了现在我们来构建智能的大脑和标签分发系统——ISIS和SR-MPLS。4.1 ISIS协议配置与Prefix-SID分配ISIS将负责三件事1. 学习全网路由2. 扩散TE链路属性3. 分发Prefix-SID。配置步骤以R1为例# 启用IS-IS进程进程号1网络实体名称NET格式为区域.系统ID.00 isis 1 is-level level-2 # 所有路由器配置为Level-2处于同一区域 network-entity 49.0001.0000.0000.0001.00 # 系统ID通常取自Loopback IP这里是0000.0000.0001 # 在接口上使能IS-IS interface GigabitEthernet0/0/0 isis enable 1 interface GigabitEthernet0/0/1 isis enable 1 # 在环回口上使能IS-IS用于发布主机路由 interface LoopBack0 isis enable 1 # 关键使能TE和SR扩展能力 traffic-eng level-2 # 泛洪TE信息 segment-routing mpls # 使能SR-MPLS能力Prefix-SID分配 这是SR的“灵魂”。我们需要为每个节点的Loopback0地址分配一个唯一的索引号。# 在IS-IS视图下为Loopback0接口配置Prefix-SID isis 1 interface LoopBack0 isis prefix-sid index 10 # 为1.1.1.1/32分配索引10index 10是一个本地标识。全局的Segment ID标签值计算公式通常是基础值 索引。默认的SRGBSegment Routing Global Block基础值通常是16000。因此R1的Loopback01.1.1.1/32的全局标签值就是16000 10 16010。其他节点去往1.1.1.1的流量都会压上标签16010。同理配置其他设备R2:isis prefix-sid index 20(对应2.2.2.2/32 标签值16020)R3:isis prefix-sid index 30(对应3.3.3.3/32 标签值16030)R4:isis prefix-sid index 40(对应4.4.4.4/32 标签值16040)验证ISIS与SRdisplay isis peer 查看ISIS邻居关系是否正常建立。display isis route 查看ISIS学到的路由应该能看到所有环回口的路由。display segment-routing prefix-sid 查看本机通告和从邻居学到的Prefix-SID映射表。这是关键命令你应该能看到类似下面的输出确认每个环回口地址都正确关联了标签值。Prefix SID Index Range Flags 1.1.1.1/32 16010 10 1 - 2.2.2.2/32 16020 20 1 - 3.3.3.3/32 16030 30 1 - 4.4.4.4/32 16040 40 1 -4.2 MPLS与LDP禁用确认在SR-MPLS中我们不再需要传统的LDP来分发标签。但MPLS转发能力仍需在接口上开启。# 在R1的每个物理接口上开启MPLS能力 interface GigabitEthernet0/0/0 mpls interface GigabitEthernet0/0/1 mpls # 确认没有启用LDP。如果之前有需要undo掉。 # undo mpls ldp重要检查点 使用display mpls lsp查看标签转发表。在纯SR环境下这里应该只有In/Out Label: NULL/160xx之类的静态条目来自SR而不应该有LDP协议生成的动态LSP。这证明标签是由ISIS的SR扩展分发的而不是LDP。5. 流量工程TE隧道配置与路径计算现在来到最核心的部分告诉网络我们的“视频流量”应该走哪条路。5.1 创建TE隧道并指定约束条件我们在流量入口R1上创建一条到R33.3.3.3的TE隧道。这条隧道不是物理接口而是一个逻辑通道它绑定了我们计算好的路径。# 在R1上配置 interface Tunnel1 ip address unnumbered interface LoopBack0 # 借用环回口地址 tunnel-protocol mpls te # 隧道类型为MPLS TE destination 3.3.3.3 # 隧道终点是R3的环回口 mpls te signal-protocol segment-routing # 关键使用SR作为信令协议而非RSVP mpls te tunnel-id 100 # 隧道ID mpls te path explicit segment-list main-path # 绑定名为main-path的显式路径 # 定义隧道的带宽需求这是CSPF计算的约束条件 mpls te bandwidth 1000 # 单位kbps表示此隧道需要保障1Mbps的带宽关键参数解读mpls te signal-protocol segment-routing 这行命令是SR-MPLS TE的精髓。它声明此隧道使用SR来实例化路径而不是传统的RSVP-TE。这意味着路径是通过Segment列表标签栈来描述的。mpls te bandwidth 设置隧道的带宽约束。CSPF算法会排除所有可用带宽小于此值的链路。5.2 定义显式路径与Segment列表我们需要定义两条路径主路径main-path和备份路径backup-path。路径的本质是一个Segment列表。# 在R1上定义显式路径 explicit-path main-path segment-routing label 16020 # 第一跳去往R2 (2.2.2.2)的标签 segment-routing label 16030 # 第二跳去往R3 (3.3.3.3)的标签 next sid label 16030 # 另一种写法含义相同。表示路径经过标签16020和16030。 explicit-path backup-path segment-routing label 16040 # 第一跳去往R4 segment-routing label 16030 # 第二跳去往R3路径计算逻辑 当我们在Tunnel1接口下配置mpls te path explicit segment-list main-path并shutdown/undo shutdown激活隧道后R1会执行以下操作检查TEDB确认路径R1-R2-R3上的每条链路10.1.12.0/24, 10.1.23.0/24的可用带宽是否大于1000kbps。如果满足则接受这条显式路径。隧道状态变为UP。R1生成一个两层标签的标签栈外层标签是去往下一跳R2的链路标签或Adj-SID本实验简化用Prefix-SID内层标签是终点R3的Prefix-SID16030。实际上在SR-MPLS中由于PHP倒数第二跳R2会弹出外层标签R3直接收到带16030标签的报文。5.3 隧道状态验证与路由引入配置完成后检查隧道状态display mpls te tunnel-interface Tunnel1重点关注Admin Status和Oper Status 是否为UP。InLabel/OutLabel 显示入标签和出标签。Explicit Path 显示使用的路径名称。为了让流量能进入这条隧道我们需要将隧道路由发布到路由表中。通常有两种方式静态路由ip route-static 3.3.3.3 32 Tunnel1。简单直接。动态路由引入更贴近实际 在R1上将Tunnel1接口发布到ISIS或OSPF中。interface Tunnel1 isis enable 1这样R1会通过ISIS向其他设备虽然本实验不需要通告一条到达3.3.3.3的路由下一跳是Tunnel1。此时在R1上tracert 3.3.3.3你应该能看到流量经过的路径是R1 - R2 - R3并且显示MPLS标签。6. 故障模拟与TI-LFA快速重路由验证配置成功只是第一步网络的可靠性更为关键。我们来模拟主路径故障看流量如何快速切换。6.1 配置TI-LFA保护在R1上我们需要为去往R2的关键链路GE0/0/0启用TI-LFA保护。这通常在ISIS或接口下配置。# 在R1的ISIS进程下使能TI-LFA计算如果支持 isis 1 fast-reroute ti-lfa更常见的配置是在接口下指定备份路径# 在R1的GE0/0/0接口下配置LFATI-LFA是LFA的增强 interface GigabitEthernet0/0/0 isis fast-reroute lfa # 启用LFA快速重路由 # 高级版本可能支持更明确的TI-LFA配置 # isis fast-reroute ti-lfa配置后ISIS会为这条链路上的所有前缀如2.2.2.2/32, 3.3.3.3/32等计算一个备份下一跳。使用命令查看display isis spf 1.1.1.1 verbose # 或 display isis route fast-reroute你应该能看到对于目的地3.3.3.3主下一跳是10.1.12.2R2备份下一跳是10.1.14.4R4。6.2 模拟故障与切换观察现在让我们制造一次故障。准备工作 在R1上开启一个到R3的持续ping例如ping -t 3.3.3.3观察其连通性和延迟。同时在另一个窗口使用display mpls te tunnel-interface Tunnel1持续查看隧道状态。触发故障 在R1上关闭连接主路径的接口。interface GigabitEthernet0/0/0 shutdown观察现象Ping窗口 你会看到可能丢失1-3个包这是故障检测和切换时间随后ping恢复。切换时间通常在50毫秒以内这就是TI-LFA的效果。如果只配置了普通TE隧道而没有FRR切换将等待ISIS路由收敛可能需要秒级导致大量丢包。隧道状态窗口 隧道状态可能会短暂变为DOWN或CFG配置态然后迅速恢复为UP。查看Explicit Path可能会发现它自动切换到了我们预先配置的backup-path如果隧道配置了热备份。路由表 在R1上display ip routing-table 3.3.3.3会发现下一跳从Tunnel1可能之前是或者从10.1.12.2变成了10.1.14.4。故障恢复 重新打开接口undo shutdown观察流量是否切回主路径。在复杂的策略下可能需要等待一段时间WTR等待恢复时间或手动切换回主路径。实操心得 在ENSP中模拟TI-LFA有时效果不如真机明显或者命令支持不完整。如果切换丢包较多可以检查1) ISIS LFA/TI-LFA配置是否生效2) 备份路径的连通性是否正常3) 是否在隧道层面也配置了mpls te fast-reroute。我们的实验核心是理解“路径计算”和“显式引导”即使FRR切换不完美只要你能通过关闭接口看到隧道路径或静态路由的切换就达到了验证目的。7. 深度排错与常见问题实录实验过程中不可能一帆风顺。下面是我在多次搭建SR-MPLS TE实验时踩过的坑和解决方法希望能帮你快速定位问题。7.1 隧道无法Up状态为Down或CFG这是最常见的问题。请按照以下清单排查基础连通性 确认destination指定的目的IP3.3.3.3的路径在全局路由表中可达。在R1上ping 3.3.3.3如果不通先解决底层ISIS路由问题。显式路径有效性使用display explicit-path查看定义的路径。使用display segment-routing prefix-sid确认路径中指定的标签值如1602016030在本地SID表中存在且有效。常见坑 路径中的下一个节点不可达。例如主路径是R1-R2-R3但如果R1到R2的链路在ISIS里cost值异常高或者有ACL阻断CSPF会认为此路径无效。用tracert lsp te tunnel-interface Tunnel1可以查看LSP的详细路径。带宽约束不满足 如果隧道配置了bandwidth但路径上的某条链路没有配置带宽或者配置的可用带宽小于需求隧道也会Down。检查链路带宽配置interface GigabitEthernet0/0/0 bandwidth 10000 # 单位kbps表示10G并在ISIS下使能带宽通告isis circuit-cost bandwidth。信令协议不匹配 确保隧道配置了mpls te signal-protocol segment-routing。如果缺失设备可能会尝试使用RSVP-TE去建立隧道而在我们没有配置RSVP的情况下必然失败。7.2 流量不走隧道隧道是Up的但tracert 3.3.3.3显示还是走的普通IP路由没有标签。路由优先级问题 检查路由表display ip routing-table 3.3.3.3。隧道路由下一跳是Tunnel接口的协议类型通常是Direct或ISIS其优先级Preference可能比ISIS学到的普通路由也是ISIS低。需要确保隧道路由被优选。解决方法 对于静态路由引入的方式可以调整静态路由的优先级使其优于ISIS。对于ISIS引入的方式可以通过路由策略route-policy为通过Tunnel接口发布的路由设置更优的Cost值。隧道未发布路由 如果采用动态路由引入确认Tunnel接口确实在ISIS中使能了isis enable 1并且display isis interface能看到Tunnel接口。转发等价类FEC不匹配 隧道的目的地是3.3.3.3/32但你ping的可能是一个其他地址。确保测试流量的目的地址与隧道目的地完全匹配。7.3 ISIS邻居关系反复震荡或无法建立接口未使能MPLS ISIS在广播网络上建立邻居需要发送IIH报文如果接口未配置mpls可能会影响某些TLV的传递导致邻居状态异常。确保所有物理接口都配置了mpls。区域或层级不匹配 检查所有设备的is-level是否一致。我们全部用了level-2。网络类型不匹配 华为设备默认接口网络类型可能是p2p或broadcast。对于直连的两台设备建议显式配置为p2p可以避免DR/BDR选举更稳定。interface GigabitEthernet0/0/0 isis circuit-type p2pMTU问题 如果接口MTU太小无法承载携带了SR和TE扩展TLV的ISIS报文会导致邻居卡在Init状态。确保接口MTU足够大如1500。7.4 ENSP设备特有的问题设备启动失败错误40 这是ENSP与VirtualBox、Windows网络驱动兼容性的经典问题。尝试a) 以管理员身份运行ENSP和VirtualBoxb) 在VirtualBox网络设置中重置所有虚拟网卡c) 更换一个更稳定的VirtualBox版本如6.0.24。命令不支持 有些高版本的SR-TE或TI-LFA命令在ENSP的旧镜像中不支持。如果输入命令报错可以先display version查看版本然后尝试在设备的技术支持网站查找对应版本的命令手册。本实验使用的命令都是相对基础的SR-MPLS命令在较新的AR系列镜像中一般支持。性能卡顿 拓扑复杂后ENSP可能非常卡。保存配置后可以适当关闭不正在操作的设备窗口减少资源占用。8. 实验总结与延伸思考通过这个从零搭建的SR-MPLS TE实验我们完整地走通了一个现代流量工程系统的关键流程基于ISIS实现底层可达性和拓扑信息包括带宽的同步利用SR-MPLS将网络编程简化为Segment列表通过CSPF算法和TE隧道实现基于约束的路径计算与流量引导最后借助TI-LFA机制实现链路级的毫秒级故障保护。这个过程里最重要的不是记住每一条命令而是理解其背后的逻辑为什么用ISIS而不用OSPF为什么Prefix-SID可以取代LDPCSPF算路时到底在比较什么TI-LFA的备份路径是怎么算出来且保证无环的想清楚这些问题你才算真正掌握了SR-MPLS TE的精髓。这个最小化的实验可以作为一个起点向多个方向扩展策略引流 如何使用路由策略Route-Policy或隧道策略将特定的业务流量比如源IP是某台服务器的绑定到我们创建的TE隧道上带宽预留与抢占 如何配置多条具有不同优先级的隧道让高优先级隧道在带宽不足时抢占低优先级隧道的资源结合BGP 在跨域Inter-AS或运营商-企业PE-CE场景下如何通过BGP将VPNv4路由的下一跳指向TE隧道可视化 能否通过NetStream或Telemetry将隧道的实时流量、丢包、延迟情况上报给控制器实现更智能的调优网络技术的魅力在于每一个成功的实验都是你对这个复杂系统认知的一次深化。当你下次再听到“SRv6”、“网络自动驾驶”这些词时你会发现它们的基石正是你在ENSP里亲手验证过的这些原理。
返回列表