资讯动态

MPLS静态LSP配置与抓包验证:手写标签链路的完全指南

发布时间:2026/10/9 10:38:51 来源:尧图企业网站定制
简介面向网络工程师和MPLS初学者的实验资料通过静态LSP单向/双向隧道拓扑配置与抓包分析帮助理解标签添加、交换、移除的完整过程适用于网络实验、课程设计或认证备考场景。压缩包共11个文件以工程文件efz、拓扑文件topo/xml和抓包文件pcapng为主另含拓扑截图整体仅139KB便于快速下载和导入模拟器复现实验。已有680人学习下载资源覆盖静态LSP的入口、中间、出口节点配置要点以及抓包中查看标签栈、检查错误异常的排查思路还从里氏替换原则类比静态与动态LSP的替换关系。通过对照抓包文件与拓扑读者可直观看到单向和双向隧道下标签值的变化验证ping/traceroute连通性从而快速掌握静态LSP配置与故障分析的基本方法。1. 静态LSPMPLS网络里最朴素也最可靠的转发通道在动态LDP满天飞的网络里还在手工敲静态LSP确实有点复古但等你遇到跨域对接、传输网承载MPLS、或者只是想在自己的实验环境里把标签转发的每个细节看明白时静态LSP反而是最顺手的工具。这篇要聊的是MPLS静态LSP隧道的拓扑配置和抓包验证从三个节点的角色划分、标签怎么一层层接好到华为设备上一条条命令落地再到用Wireshark把0x8847的报文拆开看标签栈。全程不需要动态协议参与数据面怎么走完全由你手写的那张表决定——这也是静态LSP最吸引人的地方可控、可预期、出错也好查。适合刚接触MPLS的网工也适合给已有动态LSP网络做路径强控的人参考。2. 把拓扑先规划好三个节点角色和标签分配的计算方法2.1 三种节点角色入节点、中间节点、出节点怎么定静态LSP隧道本质上是一条手工指定的转发路径路径上的每一台设备扮演三种角色之一。入节点Ingress负责为进入隧道的流量压上第一层标签中间节点Transit只做标签交换收到一个入标签查表后换成出标签继续转发出节点Egress收到最后一个标签后把它弹出还原成普通IP报文再交给本地路由表转发。角色划分看起来简单但规划时有一件事必须先定这条LSP到底服务哪个目的地址也就是FEC转发等价类。FEC通常写成“目的IP 掩码”比如4.4.4.4/32。入节点把所有去往这个网段的流量都引入隧道中间节点只认标签不认IP出节点弹出标签后按普通IP路由走。理解这层关系后你就能解释一个常见现象为什么中间节点路由表里没有4.4.4.4也能转发——因为标签转发根本不查IP路由表。先明确角色还有一个实际好处它能帮你决定每台设备要配的命令类型。入节点用static-lsp ingress中间节点用static-lsp transit出节点用static-lsp egress。命令形态完全不同配错角色剩下的活儿全白干。我一般建议先在纸上把角色画出来每台设备旁边写上“入/转/出”三个字再动手。这个习惯在只有三台设备的拓扑里看起来多余一旦扩到五台、六台角色没定清楚就开始敲命令后面排错时一定翻车。另一个需要提前定的事情是LSP名字名字不参与转发但display mpls lsp输出里全看它建议按“用途目标网段”命名比如 lsp4to4。2.2 标签怎么编号in-label、out-label和全局标签空间的约束静态LSP的核心是手工分配标签分配规则一句话就能说清每一台节点都要为这条FEC分配一个入标签in-label然后把出标签out-label写成下游节点给这个FEC分配的那个入标签。以R1-R2-R3-R4四台设备为例R2给FEC分配的in-label是1024那么R1的out-label就必须是1024R3给FEC分配的in-label是1025那么R2的out-label就必须是1025。这样一层一层接起来形成一个完整的标签链。入节点ingress不需要in-label因为它只是压标签方没人从上游给这个FEC转发报文出节点egress则必须给FEC分配一个in-label用来识别“这个标签到我这里就该终结了”。出标签那一栏出节点可以不写表示弹出。编号本身有几个约束要注意。第一标签值范围是16到10485750到15是保留值其中3是IPv4显式空标签 Explicit NULL不能当普通标签占用。第二如果设备上同时跑着LDP或RSVP-TE动态MPLS默认会从1024往上分配标签静态LSP再用1024这段很容易冲突。我习惯把静态标签固定在3000到4000这段留出明显余量。第三同一台设备上不同FEC的in-label不能重复但所有节点的in-label不需要全局唯一——R2的1024和R4的1026各自独立只要本机内不冲突就行。很多人第一次配置时纠结“这个1024别的设备也用了会不会冲突”不会标签是逐跳替换的局部有意义全局无意义。2.3 一份可以直接照抄的拓扑参数表下面这套拓扑我用来做过很多次静态LSP演示也推荐你直接照抄。R1、R2、R3、R4四台路由器直连链路地址规划如下每台设备一个LoopBack接口作为LSR ID设备角色和IP规划设备角色LoopBack0互联接口与地址R1Ingress1.1.1.1/32GE0/0/0: 10.1.12.1/24R2Transit2.2.2.2/32GE0/0/0: 10.1.12.2/24GE0/0/1: 10.1.23.2/24R3Transit3.3.3.3/32GE0/0/0: 10.1.23.3/24GE0/0/1: 10.1.34.3/24R4Egress4.4.4.4/32GE0/0/0: 10.1.34.4/24FEC选R4的LoopBack地址4.4.4.4/32意思是R1发往4.4.4.4的流量全部走这条静态LSP。标签链按上一节的规则手写如下配置时严格对着这张表填节点角色in-labelout-label下一跳与出接口R1Ingress无102410.1.12.2GE0/0/0R2Transit1024102510.1.23.3GE0/0/1R3Transit1025102610.1.34.4GE0/0/1R4Egress1026弹出本地转发这张表就是整个配置的灵魂。后面第四章的命令本质上是把这张表翻译成命令行。排错时拿display mpls lsp的输出跟这张表比对哪一跳对不上问题就出在哪台设备上。下一节开始讲基础配置先让设备之间能通信、MPLS能跑起来。3. 基础配置接口IP、LSR ID与MPLS使能3.1 接口IP与LoopBackLSR ID决定MPLS标识静态LSP看起来可以不依赖路由协议但前提是设备之间的链路层和IP层必须通。第一步先把所有互联接口配上IP地址LoopBack0也一并配好。LoopBack接口除了作为Telnet/SSH管理地址还有更关键的用途成为LSR ID。华为设备上LSR ID的推荐做法是取LoopBack0的地址因为LoopBack接口物理上永不down用它做设备标识最稳定。配置命令很简单以R2为例system-view sysname R2 interface LoopBack0 ip address 2.2.2.2 255.255.255.255 interface GigabitEthernet0/0/0 ip address 10.1.12.2 255.255.255.255 interface GigabitEthernet0/0/1 ip address 10.1.23.2 255.255.255.255每台设备都按这个思路配注意掩码用32位保证LoopBack在路由协议里以主机路由形式出现互联接口用24位。这一步不涉及MPLS但它的作用很实在后面display mpls lsp输出里的Ingress/Transit/Egress列显示的是LSR ID如果LoopBack没配或地址对不上排查时很难分清“这条LSP到底配在哪台设备上”。配好接口后先在每台设备上ping一下直连对端地址确认物理链路和IP没毛病再往下走。这一步跳过直接配MPLS后面出了问题你会分不清是链路问题还是标签问题等于给自己埋雷。3.2 MPLS全局使能lsr-id和接口使能一条都不能少MPLS在华为设备上需要两层使能。第一层是全局使能进入MPLS视图配置lsr-id第二层是在参与标签转发的接口上使能MPLS。第二层最容易漏尤其是transit节点的两个接口收到的报文带标签要解封装转发的报文要再压标签所以入接口和出接口都必须使能。R2的完整MPLS配置如下mpls lsr-id 2.2.2.2 # interface GigabitEthernet0/0/0 mpls # interface GigabitEthernet0/0/1 mpls对应地R1的GE0/0/0、R3的GE0/0/0和GE0/0/1、R4的GE0/0/0都要执行mpls命令。全局视图里lsr-id一定要配不配的话MPLS进程起不来静态LSP命令会直接被拒绝。很多新手在这个环节翻车全局使能了接口也敲了mpls但漏了lsr-id结果display mpls lsp一片空白。如果你用的是较新版本设备有些版本在使能MPLS时会检查lsr-id合法性LoopBack还没配好就写lsr-id会报错。所以上一节先配LoopBack再回来配MPLS这个顺序本身就是一种规避踩坑的手段。接口使能MPLS这一步对静态LSP的意义和动态LDP不完全一样。动态LDP需要在这条链路上建立邻居静态LSP不建邻居但接口使能后设备才具备处理MPLS报文的转发表项能力。另外提醒一句transit节点如果只在一个接口使能了MPLS另一个没使能标签报文到达时会因为查不到MPLS处理能力而被丢弃表现为LSP状态Up但数据不通。这是静态LSP排错里最常被忽视的原因之一。3.3 路由怎么打通静态路由还是OSPF以及一个边界很多人第一次搭静态LSP时很自然地以为“静态隧道不需要路由协议”这句话只对了一半。中间节点的标签转发确实不查IP路由但有两个位置仍然依赖传统路由表。第一个位置是入节点R1它要把IP报文压上标签华为设备处理时仍然要查路由表判断“这个目的地址属于哪条LSP”所以R1必须知道怎么到达4.4.4.4。第二个位置是出节点R4标签弹出后变成普通IP报文R4要查自己的路由表把报文送到本地或下一跳。中间节点R2和R3如果没有4.4.4.4的路由其实不影响标签转发但为了排错方便我一般建议整网把路由打通。路由怎么做两种常见选择全网跑OSPF或者只在边界写静态路由。实验室拓扑小跑OSPF最省事配置也简单ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.1.12.0 0.0.0.255 network 10.1.23.0 0.0.0.255 network 2.2.2.2 0.0.0.0四台设备都进OSPF area 0把LoopBack和互联网段都宣告进去路由表立刻全通。只配静态路由也可以R1写一条ip route-static 4.4.4.4 255.255.255.255 10.1.12.2R4写一条回程路由中间节点不写也能转发。我自己的取舍是如果练手拓扑就三台设备静态路由够用如果打算之后在这个拓扑上叠加伪线业务或者模拟更复杂的汇聚场景OSPF更接近现网。这里有一个边界值得记住静态LSP只保证“转发面”是手工可控的控制面路由表仍然是传统路由协议的地盘两者不能混为一谈。4. 静态LSP的三段配置ingress、transit、egress命令与检查4.1 出节点先配static-lsp egress和标签终结配置静态LSP有个天然的顺序依赖下游节点先给FEC分配in-label上游节点的out-label才能指向它。所以实操时我永远从出节点R4开始配一路倒推到入节点。R4的配置如下system-view static-lsp egress lsp4to4 destination 4.4.4.4 32这行命令的意思是为FEC 4.4.4.4/32创建一条名为lsp4to4的出节点LSP。注意出节点不需要写in-label因为in-label已经隐含在命令里了实际上华为AR设备上static-lsp egress命令会自动为这条LSP分配一个动态标签不用手工指定。但这个行为在不同版本上有差异有些版本允许你指定in-label有些版本让你不写。更稳妥的做法是配完后执行display mpls lsp查看R4实际分配出来的in-label再把这个值填到上游R3的out-label里。这句话很关键你不是凭想象定标签而是以下游设备实际显示的标签为准。这里有一个关于显式空标签的细节。如果你希望数据面做得更干净可以让出节点为这条FEC使用PHP倒数第二跳弹出特性也就是R3直接弹出标签再交给R4。华为设备的静态LSP实现里transit节点可以配置out-label 0表示弹出这样R4只收IP报文不带任何标签。采用PHP方案的话R4的egress配置仍然保留但R3的out-label直接写0。两种方案都合法区别在于抓包时R4入接口能不能看到MPLS标签。我建议实验阶段不要用PHP让标签完整走到R4再弹出这样你在抓包里能把整条标签链看得明明白白。4.2 中间节点配置static-lsp transit的in/out对应关系R3和R2都是transit节点配置格式完全一样只是参数不同。先看R3system-view static-lsp transit lsp4to4 destination 4.4.4.4 32 incoming-interface GigabitEthernet0/0/0 in-label 1025 nexthop 10.1.34.4 outgoing-interface GigabitEthernet0/0/1 out-label 1026逐段解释这条命令。incoming-interface GigabitEthernet0/0/0指定带标签的报文从哪个接口进来in-label 1025是R3本机为这条FEC分配的入标签也就是R2必须发送给R3的标签值。nexthop 10.1.34.4 outgoing-interface GigabitEthernet0/0/1指明转发方向out-label 1026是R3要压到报文上的新标签。这里1026不是R3自己随便编的它是上一小节里R4那个static-lsp egress实际分配给这条LSP的in-label。先查R4再填R3这个顺序能让手写标签表和实际转发表完全对齐。R2的transit配置同理只换接口、nexthop和标签system-view static-lsp transit lsp4to4 destination 4.4.4.4 32 incoming-interface GigabitEthernet0/0/0 in-label 1024 nexthop 10.1.23.3 outgoing-interface GigabitEthernet0/0/1 out-label 1025R2的in-label 1024必须等于R1将来压的标签R2的out-label 1025必须等于R3的in-label 1025。三个节点凑齐后这条标签链就是1024 → 1025 → 1026 → 弹出。每一步的对应关系正是第二章那张手写表的转译。配transit时最容易犯的错是in-label和out-label写反或者nexthop写错。建议每配完一台设备立即display mpls lsp检查本机的in/out标签不等全部配完再回头差。4.3 入节点配置static-lsp ingress与压入首层标签最后配R1的ingresssystem-view static-lsp ingress lsp4to4 destination 4.4.4.4 32 nexthop 10.1.12.2 outgoing-interface GigabitEthernet0/0/0 out-label 1024关键点是out-label 1024这个值必须等于R2的in-label 1024。ingress不需要写in-label因为没有上游设备会向R1转发这条FEC的标签报文它只需要知道“往4.4.4.4的流量压上标签1024从GE0/0/0发给10.1.12.2”。nexthop和outgoing-interface建议都写清楚尤其当R1上有多条等价路由时不写nexthop的话设备可能选到错误的出口。写完nexthop和outgoing-interface后R1查4.4.4.4路由表时会把匹配流量导进这条LSP。到这里三个角色全部配置完成。整理一下配置逻辑R4定义终点并分配in-labelR3和R2定义中间交换并分配各自的in-labelR1定义入口并压入标签。这些命令里出现的每一个标签值都应该能在下游设备的display mpls lsp输出里找到对应关系。如果配置时完全不看下游实际值而自己拍脑袋编号大概率要重敲一遍。我习惯把第二章的手写标签表打印出来放在旁边配完一个节点就打个勾标签链对不齐时一眼就能定位到断点。4.4 配置后的检查display命令和ping验证全部配置完成后依次执行三条检查命令。首先是全局视图下的LSP状态查看display mpls lsp输出会列出所有LSP的Name、FEC、In/Out Label、Interface和State。正常状态下这条4.4.4.4/32的LSP应该是四行分别对应R1到R4且相邻设备的out-label和in-label严格衔接。如果某一行State显示Down优先检查那台设备的接口是否使能了MPLS、in-label是否跟上游out-label对上。想看更细的信息用扩展参数display mpls lsp verbose这条命令会显示每台设备的LSR ID、以及更多转发细节排错时比普通视图更有用。接着在R1上验证数据面是否真正打通ping mpls ipv4 4.4.4.4 32这条命令会构造一个带标签的MPLS Echo Request报文沿着静态LSP到达R4再返回返回的内容能直接告诉你每一跳的转发是否成功。如果display mpls lsp显示Up但ping mpls不通说明控制面表项存在但数据面有问题重点查出接口封装、标签值、nexthop是否正确。也可以用tracert mpls ipv4 4.4.4.4 32逐跳定位断点它会显示每一跳的LSR ID和耗时断在哪一跳一目了然。5. 避坑排查静态LSP配置与抓包验证中的5类翻车现场5.1 LSP状态Up但数据不通问题多半在标签链的衔接处现象display mpls lsp所有节点State都是UpR1上ping mpls ipv4 4.4.4.4 32却超时普通IP ping直接通。原因数据面转发表正常安装但相邻节点之间的out-label和in-label对不上。常见有两种情况一是R2配的out-label写成了1024而不是1025报文发给R3后R3查不到in-label 1024对应的表项直接丢弃二是nexthop写错比如R3的nexthop写成了10.1.23.3而不是10.1.34.4报文被送回R2形成环路。解决按第二章的手写标签表逐跳比display mpls lsp的输出重点核对R1-out vs R2-in、R2-out vs R3-in、R3-out vs R4-in这三对对应关系。哪一对不一致改哪里。nexthop也一并核对确保每跳的下一跳地址就是物理直连对端。5.2 配置命令被系统拒绝lsr-id没配或标签范围踩了保留区现象敲static-lsp transit或static-lsp ingress时系统提示错误命令敲不进去或者提示label值不合法。原因一是MPLS全局视图下的lsr-id没配置MPLS进程未真正启动静态LSP命令没有承载主体二是手工分配的in-label落到了保留范围或已被动态协议占用。华为设备标签0到15是保留值且如果同时启用了LDPLDP默认从1024开始动态分配你手写的in-label如果和LDP已分配的标签撞车同样会报错。解决先在MPLS视图配好lsr-id再执行display mpls label查看当前设备上标签占用情况避开已占用段。我建议静态LSP专用3000到4000段既躲开LDP的动态范围也方便抓包时一眼识别出这是手工隧道。5.3 抓包看不到MPLS标签抓包位置和接口使能两个关键点现象在R1或R2的接口上抓包捕获的全是普通IP报文看不到0x8847开头的MPLS报文。原因最常见的是抓包位置选错了——抓到了LSP范围之外比如在R4的出口抓标签已经被弹出只剩IP第二种可能是入接口没使能MPLSR1实际没走LSP而是直接IP转发第三种是抓包工具或系统没开启MPLS解码报文确实带标签但Wireshark显示成了未知协议。解决先把抓包点放到R1的出接口或R2的入接口这两个位置一定能看到MPLS报文。检查对应接口下有没有mpls命令。Wireshark侧在Preferences → Protocols里启用MPLS解析或者在报文上右键Decode As选择MPLS。确认以太网类型是0x8847这是MPLS单播报文的标准标识。5.4 静态LSP与动态LDP抢标签FEC重叠引发路由黑洞现象同一台设备上跑着LDP静态LSP配完后某些目的地址的流量有时走LSP有时走普通IP甚至直接不通。原因LDP为同一个FEC也建立了动态LSP设备上同时存在两条目的相同、来源不同的LSP。华为设备对静态和动态LSP的优先级处理有既定规则通常静态LSP优先但如果静态LSP的vpn-instance、隧道策略等参数配置不当动态LSP可能覆盖掉静态条目导致数据面选路异常。解决两条路可选。一是彻底停掉这条链路相关接口上的LDP只保留静态LSP最简单最干净二是如果必须共存检查display mpls lsp里同一条FEC是否有两条记录确认静态LSP的优先级更高。实验环境我推荐直接不跑LDP避免任何干扰。5.5 Wireshark提示“Unknown”或MPLS解析异常版本和偏好设置问题现象抓到0x8847报文但Wireshark的协议列显示为Unknown展开看不到MPLS标签栈。原因Wireshark默认对MPLS的支持是开启的但部分精简版或旧版本可能没启用另外如果报文封装了多层标签比如后面叠加伪线场景Wireshark的默认解码深度可能不足。解决打开Preferences → Protocols → MPLS确认Enable MPLS dissection勾选叠加多层标签时勾选“Force skipping the label stack”然后设置一个足够大的标签栈深度。抓包完后建议先确认一下报文的长度信息如果MPLS报文被抓成了截断包标签栈后半段解析不出来也属于正常现象重新抓包时把抓包长度调到全包捕获。6. 抓包验证用Wireshark确认标签栈和跳间行为6.1 在R2两个接口同时抓包对比标签值变化静态LSP配置完成且ping mpls通过后建议做一次完整的抓包验证。最推荐的做法是在R2的GE0/0/0和GE0/0/1两个接口上同时抓包用Wireshark分别标记为“入方向”和“出方向”。在R1上发起去往4.4.4.4的ping两个抓包文件会各抓到一组MPLS报文。对比两张图的标签栈抓包位置期望看到的标签栈说明R2 GE0/0/0入方向Label: 1024, S1R1压入的标签栈底位置S位为1R2 GE0/0/1出方向Label: 1025, S1R2完成标签交换值从1024换成1025R3 GE0/0/1出方向Label: 1026, S1R3继续替换最终到R4这个对比能直观验证静态LSP的逐跳替换行为入方向和出方向的IP头完全一样只有标签值变了。检查TTL时还能看到每跳递减1。借助Wireshark的MPLS解析展开标签能看到Label Value、Traffic Class、Bottom of Stack和TTL四个字段。S位为1说明是栈底单层静态LSP一定看到S1如果将来在静态LSP之上封装伪线业务或三层专线场景会出现多层标签这时S1的一定是最内层。我自己的习惯是抓完包后顺手存一份pcap留档因为静态LSP排错时经常要跟前一天、前一周的抓包做对比。有一次我在R3的出接口抓包发现没有标签只剩IP当时差点怀疑配置被哪台设备改了后来才意识到R3已经在做PHP弹出出接口本来就不该有标签。从那以后我抓包前先看一眼拓扑图上每台节点的角色定位再决定抓包点放在哪里。这个动作能省一半排错时间希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑