ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MPLS基本配置全解:从LDP标签分发到LFIB表项验证

MPLS基本配置全解:从LDP标签分发到LFIB表项验证 简介南京邮电大学《交换技术与通信网》课程配套的MPLS基本配置实验报告最新版适合通信工程、网络工程专业学生完成GNS3模拟实验时参考。报告完整覆盖MPLS实验目标、拓扑搭建、LER/LSR路由器接口IP配置、OSPF路由协议宣告、MPLS LSP创建与标签分发等核心环节并附R1至R5各设备的详细命令记录、连通性测试与配置检查截图可帮助读者快速复现实验并理解IP编址与MPLS转发原理。包体为单个doc文档大小749KB内容按实验目的、设备清单、配置步骤、测试结果等章节组织结构清晰便于对照操作。目前已有961人学习下载适合作为实验预习、报告规范书写及考前复习的实用资料。1. 南邮“交换技术与通信网”的MPLS基本配置到底在考什么深夜的实验室eNSP 里拉了三台路由器照着网上的模板敲完 MPLS 基本配置截图贴了一整页结果老师问了一句“标签转发表在哪”人愣在当场。这是南邮“交换技术与通信网”课程里 MPLS 基本配置实验最典型的尴尬命令谁都能敲但能把“标签从哪里来、到哪里去、中间怎么换”讲清楚的人不多。这篇文章就解决这件事。它适合正在写这份实验报告的学生也适合刚接触运营商骨干网的网络工程师。读完你能复现配置、截到关键表项还能回答从“为什么配 LDP”到“倒数第二跳为什么要弹出标签”的各种追问。2. 配命令前先把标签转发讲透FEC、LDP 会话和 LFIB 三者怎么配合MPLS 基本配置之所以人人都能做、但不是人人都能拿高分是因为入门资料把配置写得跟填空题一样先配地址、再开 OSPF、然后敲mpls lsr-id……照做就能通。可一旦老师问你“这个标签是哪台设备分发的、为什么它要把出标签换成另外的值”只背过命令的人就答不上来。所以在动手指敲键盘之前我建议先用十分钟把三件事的内核理顺FEC 怎么分类、LDP 会话怎么建、LFIB 里到底存了什么。2.1 FEC 到标签的映射不是黑匣子传统 IP 转发是逐跳查询路由表每一台中间设备都拿目的 IP 做最长前缀匹配再决定下一跳。这种方式有一个很直接的代价——每一跳都要解封装、查表、再封装而且全网设备的转发行为都依赖“路由前缀已经收敛”这个前提。MPLS 做的事是把“按目的 IP 分类转发”换成“按标签转发”入口设备把具有相同转发属性的一组报文归成一个 FEC为它绑定一个标签路径上的每一台设备只需要根据标签在 LFIBLabel Forwarding Information Base标签转发信息库里查到出标签、出接口和下一跳就能把报文送走。这里最容易被误解的地方是“标签是不是就是短 IP 地址”。不是。标签只是局部有意义的短标识它只在某一条链路上、在某两台相邻设备之间有意义。同一个标签在 A 设备的入方向和 B 设备的出方向完全可以对应不同的 FEC。所以看转发信息的时候一定要把“入接口 入标签”组合起来去 LFIB 里查记录不要只看标签值本身。再往深一层FEC 的划分粒度由你启用的服务决定。只做基本的 IP 转发FEC 就是一个路由前缀比如 10.0.0.0/24做 MPLS TE 流量工程时FEC 可以细到某条标签交换路径做多层专网时FEC 又会带上 VRF 的标识。实验报告里只需要说清楚一件事入口路由器用来做 FEC 分类的依据是它路由表里的目的前缀。这也解释了为什么底层 IGP 必须先通MPLS 才有东西可映射。2.2 LDP 会话到底在协商什么LDPLabel Distribution Protocol标签分发协议是 MPLS 基本配置里最常用的动态标签分发协议。它的工作分两个阶段先发现邻居再在邻居间建立可靠会话并传递标签映射。发现阶段靠 Hello 报文发往组播地址 224.0.0.2走 UDP端口 646。每台设备的每个使能了 LDP 的接口都会周期发 HelloHello 里带着 LSR ID 和标签空间标识。两台设备在直连接口上互相收到 Hello 后会选出一个传输地址建立 TCP 连接进入初始化协商然后是 Keepalive、Address、Label Mapping 等一系列消息的交换。实验里不需要手工写这些报文但报告里把这几个角色写出来档次就上去了。真正要理解的是 Label Mapping 的传递方向。以 R1 往 R3 转发数据为例标签由下游 R3 为某个 FEC 分配逆着数据流的方向通告给中间节点 R2R2 再通告给上游 R1。所以“标签由下游分配、往上游通告”这个方向感必须建立。很多同学看完 display 输出以为标签是 R1 自己造的其实 R1 只是收到来自下游的通告把它放进 LFIB。这个方向搞反后面看 LSP 表哪都不对劲。还要区分 peer 和 session 两个概念。LDP peer 表示“发现了邻居”session 表示“TCP 会话已经建立”。华为设备上常见状态是 Operational如果卡在 Non-Operational多半是传输地址不可达。实验报告里能把这两层分开写再配合display mpls ldp session的截图说服力会强很多。2.3 为什么 LDP 是实验首选静态 LSP 用来兜底“MPLS 基本配置”在不少先修课里会同时包含静态 LSP 和 LDP。静态 LSP 适合在只有两台设备的最小环境里验证标签转发概念但生产环境基本跑动态协议。我一般建议报告把 LDP 作为主配置如果老师要求手工指定标签再把静态 LSP 作为补充小节两者并不冲突。静态 LSP 的配置思路是手工指定入口、中间、出口三台设备的入标签、出标签和下一跳设备不会自行协商。LDP 正好相反接口上一旦使能mpls ldp enable设备会自动发现邻居、协商会话、为路由前缀分配标签并通告。前者适合教学验证后者才是运营商设备上的常态。对实验报告来说用 LDP 还有一个额外好处验证部分能截到完整的 peer、session、lsp 三张表静态 LSP 通常只有 lsp 表可看说服力弱不少。如果你两种都做建议先配 LDP 跑通再在 R1 到 R3 之间手工建一条静态 LSP用不同的标签值把它和 LDP 的标签分开。做成表格对照比大段文字更直观。对比项静态 LSPLDP 动态分发标签来源手工指定入标签和出标签下游设备自动分配邻居发现无逐段手工指定Hello 报文自动发现会话可靠性无会话概念TCP 会话可靠传递拓扑变化响应手工逐段调整随 IGP 收敛自动重建适用场景教学验证、极小规模生产环境基本配置这也顺带回答了报告里常被追问的一个问题为什么实验环境里看到display mpls lsp有很多条标签记录但配置里明明没有为每条路由手工建 LSP因为 LDP 在为所有使能接口上学习到的路由前缀自动分发标签这不是故障是协议在按默认策略工作。3. 用 eNSP 把 MPLS 基本配置跑通三节点拓扑、底层路由、LDP 使能三步走光讲原理不动手报告写出来也是空的。这一章用华为 eNSP 的 AR 路由器从零搭一个三节点环境把 MPLS 基本配置完整跑一遍。整个流程可以拆成三步规划拓扑、打通 IGP、使能 MPLS/LDP。每一步都有对应的验证命令贴在报告里就能当证据。3.1 三节点拓扑与接口地址规划报告里要画清这张表拓扑用 R1、R2、R3 串联R1 和 R3 是边缘路由器R2 是中间转发设备。每台路由器配一个环回口环回地址同时兼任 LSR ID。互联地址用 /30保证每段链路只有两个可用地址避免广播和路由表冗余。接口规划如下设备接口IP 地址对端R1GE0/0/010.0.12.1/30R2 GE0/0/0R1LoopBack01.1.1.1/32-R2GE0/0/010.0.12.2/30R1 GE0/0/0R2GE0/0/110.0.23.2/30R3 GE0/0/0R2LoopBack02.2.2.2/32-R3GE0/0/010.0.23.3/30R2 GE0/0/1R3LoopBack03.3.3.3/32-环回口选 32 位掩码目的是让 LSR ID 以主机路由的形式出现在 OSPF 里。用环回口而不是物理接口做 LSR ID是因为环回口是逻辑接口不随物理链路震荡LDP 会话的传输地址不会因为某条链路 down 掉而失效。实验报告里画这张表的时候顺带把“LSR ID 环回地址”这层关系标出来老师一眼就能看出你不是随手抄的。3.2 第一步把底层 IP 路由打通再谈标签在配置 MPLS 之前先保证全网 IP 路由可达。这一步用 OSPF 把互联地址和环回地址都宣告进 area 0。下面是 R1 的完整配置R2、R3 对应修改接口和地址即可。# R1 的系统视图配置 system-view interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.252 quit interface LoopBack0 ip address 1.1.1.1 255.255.255.255 quit ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.0.12.0 0.0.0.3 network 1.1.1.1 0.0.0.0 quit quitR2 的 OSPF 配置需要多宣告一段互联地址# R2 的系统视图配置 system-view interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.252 quit interface GigabitEthernet0/0/1 ip address 10.0.23.2 255.255.255.252 quit interface LoopBack0 ip address 2.2.2.2 255.255.255.255 quit ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.0.12.0 0.0.0.3 network 10.0.23.0 0.0.0.3 network 2.2.2.2 0.0.0.0 quit quitR3 与 R1 对称网段换成 10.0.23.0/30router-id 换成 3.3.3.3这里不重复贴。关键点是 OSPF 的 network 宣告必须同时覆盖互联网段和环回网段缺一个某台设备的 LSR ID 就在路由表里消失后续 LDP 会话一定起不来。配完在每台设备上ping对端 LSR ID能通再继续。3.3 第二步全局和接口使能 MPLS 与 LDPIGP 通了之后开始进入 MPLS 基本配置的正题。以 R1 为例# R1 的 MPLS 配置 mpls lsr-id 1.1.1.1 mpls quit interface GigabitEthernet0/0/0 mpls mpls ldp enable quit第一行mpls lsr-id 1.1.1.1是这台设备在 MPLS 域内的标识必须与 OSPF 里可达的环回地址一致。接着mpls进入全局 MPLS 视图让设备具备 MPLS 转发能力接口下的mpls使能接口的 MPLS 能力mpls ldp enable才真正让 LDP 在这个接口上发 Hello、建立会话、分发标签。三个动作缺一不可。R2 作为中间设备两个互联接口都要做同样的动作# R2 的 MPLS 配置 mpls lsr-id 2.2.2.2 mpls quit interface GigabitEthernet0/0/0 mpls mpls ldp enable quit interface GigabitEthernet0/0/1 mpls mpls ldp enable quitR3 只面向 R2 一个方向配置与 R1 对称。这里有一个容易被忽略的点R2 如果只在 GE0/0/0 使能了 LDPGE0/0/1 没使能那么 R1 虽然能和 R2 建立会话但 R2 到 R3 之间没有标签分发整条 LSP 仍然是断的。实验里出现“LDP 邻居有LSP 不完整”八成是中间设备的某个接口漏了mpls ldp enable。3.4 第三步用命令验证标签转发而不是只看配置配置完成后在 R1 上依次执行四条命令display mpls ldp peer display mpls ldp session display mpls lsp tracert -v -a 1.1.1.1 3.3.3.3display mpls ldp peer能看到 R1 发现的下游邻居display mpls ldp session显示会话状态是否为 Operationaldisplay mpls lsp是核心证据能看到 R1 到 3.3.3.3/32 的入标签、出标签、出接口和 LSR 类型。最后一条tracert -v -a用于验证数据面-v表示显示 MPLS 标签信息-a指定源地址为环回口。如果前三张表和最后一条命令的输出里的关键字段对上报告的核心部分就成立了。很多同学只截display current-configuration交差这恰恰是最不讨好的做法。配置只是“你写了什么”表项才是“设备实际在做什么”。报告里把这三张表按顺序贴出来每张表配一句解释比贴一整页命令行有效得多。4. 三个直接影响实验结果的参数LSR ID、标签通告方式、PHP 倒数第二跳MPLS 基本配置里能改的参数不少但实验报告真正需要讲清楚的只有三个LSR ID 选什么、标签通告方式要不要动、PHP 现象怎么解释。这三个点直接决定你的 LDP 会话能不能建、LSP 表长什么样、tracert 输出里能不能看到标签。4.1 LSR ID决定 LDP 会话能否建立的先决条件华为 eNSP 里如果没有手写mpls lsr-id设备会从环回接口或物理接口里自动选一个最大地址做 LSR ID。这个“自动选”很容易埋雷换了接口、换了地址LSR ID 就变LDP 会话要重建如果自动选出来的是某个物理接口 IP而这个物理接口恰好 down 掉传输地址就不可达会话直接失败。我的习惯是永远手写mpls lsr-id并且只用环回地址。原因有两点第一环回地址是逻辑接口地址物理链路抖动不会让它消失第二环回路由以 /32 出现在 OSPF 里LDP 建立 TCP 连接时目标地址明确不依赖某条物理链路。实验报告里可以把“LSR ID 与传输地址”这两个概念分开写LSR ID 是设备在 MPLS 域内的名字传输地址是实际建 TCP 连接时用的源地址通常两者相同。能说出这层区别基本就能应对追问。验证方法也简单在每台设备上display mpls lsr-id确认输出和环回地址一致再ping对端 LSR ID能通则说明会话建立的前提成立。这一步在排错时永远第一个做。4.2 标签通告与保留方式实验保持默认就是最好的选择LDP 的标签分发有两种底层模式下游主动通告Unsolicited DownstreamUD和下游按需通告Downstream on DemandDoD。华为设备默认 UD也就是下游设备只要为某个 FEC 生成了标签就会主动往上游通告不需要上游先发请求。DoD 要等上游明确请求才通告通常在 MPLS TE 等场景才用基本配置实验保持默认即可。标签保留方式同样分两种Liberal 保留和 Conservative 保留。Liberal 会把从所有邻居学到的标签都留着即使当前下一跳没用上好处是 IGP 切换时标签已经就位收敛快代价是多占内存。Conservative 只保留下一跳对应邻居发来的标签省资源但切换时要等新标签通告。实验环境规模小内存不是瓶颈华为默认 Liberal 正好能让你在display mpls lsp里看到“同一 FEC 从多个邻居学到多条标签”的现象这是正常的不要当成故障去删。参数实验推荐说明标签分发模式默认 UD下游主动通告适合基本配置标签保留方式默认 Liberal多邻居标签保留收敛快LSR ID手写环回地址避免自动选中物理接口接口 LDP所有参与接口使能漏一个接口 LSP 就断所以在基本配置里我不建议去动这些默认参数。改 UD 为 DoD 或把 Liberal 改成 Conservative不仅不会让实验“看起来更高级”反而可能让标签表变少给验证环节添麻烦。报告里写一句“采用厂商默认配置协议自动完成标签分发”比堆参数更能体现你对机制的把握。4.3 PHP 倒数第二跳弹出验证时看到“标签消失”的底层机制MPLS 基本配置做通后你会频繁看到一种现象最后一跳设备的出标签是“-”或显示为 Pop。这不是配置错误而是倒数第二跳弹出机制PHPPenultimate Hop Popping在起作用。解释这个机制之前先想一个问题如果标签一直保留到最后一跳那么最后一跳设备要先解掉 MPLS 标签、再查 IP 路由表转发相当于做了两次查表。为了省这一步倒数第二跳设备会直接把标签剥掉把纯 IP 报文交给最后一跳。具体实现是倒数第二跳发现出标签是隐式空标签implicit-null值为 3就不再做标签交换而是弹出标签后按 IP 转发。于是边界设备不需要为这个 FEC 维护标签动作只需做普通 IP 转发。验证时怎么把它写到报告里在 R1 上执行tracert -v -a 1.1.1.1 3.3.3.3如果 R2 返回的 TTL 超时报文里带有 MPLS 标签字段而 R3 返回的是普通 IP 报文说明 PHP 已经在 R2 生效。配合display mpls lsp看 R3 的出标签列如果是“-”结论就闭环了。下面是一张典型的 LSP 表解释节点入标签出标签出接口LSR 类型R1-1024GE0/0/0IngressR210241025GE0/0/1TransitR31025--Egress标签 1024 从 R1 压入R2 把它换成 1025R3 收到后直接弹出不再做什么标签交换。这个表格是报告里解释 PHP 最直接的材料比一大段文字管用。5. 南邮 MPLS 实验高频翻车现场四个现象、原因和解决方案不管实验做多少遍总会遇到一些配置看着没问题、但结果就是不对的情况。下面四条是我见过最高频的翻车现场按“现象、原因、解决”写你可以直接拿来对照排错。5.1 现象一display mpls ldp peer 里一片空白LDP 会话起不来现象配置和别人一模一样接口下也敲了mpls ldp enable但display mpls ldp peer什么都显示不出来。原因最常见的是 LSR ID 不可达或者 OSPF 没有把环回地址宣告进 area 0。LDP 发现邻居靠 Hello 组播但建立会话需要用 TCP 连接对端的 LSR ID。如果这个地址在路由表里不存在TCP 握手就失败peer 表自然是空的。解决先ping对端 LSR ID不通就回到 OSPF 配置检查network宣告是否覆盖了环回地址再用display ospf peer确认邻居状态是 Full。如果 OSPF 正常就看全局是否漏了mpls lsr-id或者 LSR ID 与环回地址不一致。5.2 现象二会话是 Operational但 display mpls lsp 里没有完整 LSP现象display mpls ldp peer显示正常会话状态 Operational但display mpls lsp里找不到从 R1 到 3.3.3.3/32 的完整记录或者只有一段。原因如果中间设备只从一端学到了路由没有从另一端学到它就不会为这个 FEC 分配标签。另一个高频原因是接口上只配了mpls ldp enable漏了mpls。华为接口上mpls负责转发能力mpls ldp enable负责标签分发两个都要有。解决逐台确认参与 MPLS 的接口下同时存在mpls和mpls ldp enable然后确认从每台设备都能ping通其他 LSR ID最后看display mpls ldp peer里的 peer 地址是不是对方的真实 LSR ID。如果 peer 地址是接口地址而不是环回地址说明 LDP 会话建立在错误的传输地址上回到第 4.1 节查 LSR ID。5.3 现象三tracert 出来全是普通 IP 跳没看到任何 MPLS 标签现象LSP 表完整LDP 正常但从 R1 上tracert3.3.3.3显示的还是三跳纯 IP 地址没有任何 MPLS 字样。原因很可能是tracert命令没加识别标签的参数。普通 ICMP traceroute 拿的是普通 IP 报文设备不会为它做标签封装。华为设备需要用tracert -v让探测报文携带 FEC 信息并显示标签字段另外源地址如果选得不对报文在路由表里匹配到的是普通 IP 转发而不是 MPLS 转发。解决改用tracert -v -a 1.1.1.1 3.3.3.3重试。如果仍然没有标签回到 R1 上display mpls lsp查有没有到 3.3.3.3/32 的出标签记录没有的话说明 LSP 本身没建全按 5.2 的方式排查。5.4 现象四配置保存重启后LDP 会话反复震荡现象eNSP 里保存配置后重启设备LDP 会话状态在 Operational 和 Non-Operational 之间来回跳。原因大概率是 LSR ID 用了物理接口地址而该接口在启动顺序里晚于 LDP 进程起来或者 OSPF 还没收敛完LDP 已经开始发标签。华为设备默认的 LDP Hello 和 Keepalive 定时器较短IGP 没稳定时会话先建再断是常事。解决手写mpls lsr-id为环回地址把 OSPF 的network宣告写全让环回和互联地址一起进 area 0如果震荡仍持续在两端分别display mpls ldp session和display ospf peer对比确认两边看到的邻居状态一致。排除到最后如果两端 LSR ID 重复也会导致会话互斥检查每台设备的 LSR ID 是否唯一。6. MPLS 基本配置之后往哪走Hub-Spoke 组网与 VRF 的最小理解路径MPLS 基本配置里你验证的是 R1 到 R3 的一条 LSP。再往前走一步最常遇到的延伸是把单条 LSP 扩展成多条并考虑多点接入。Hub-Spoke 指组网的中心节点Hub与分支节点Spoke构成的星型结构分支之间不直接建 LSP而是统一经过中心节点转发。这样做的好处是中心可以集中做策略控制分支设备不用互相维护全互联的邻居关系。要在 MPLS 域里跑 Hub-Spoke边缘设备上要为每个租户建立独立路由表也就是 VRF。核心思路是每个 VRF 像一台独立路由器RT路由目标控制哪些路由可以进入这张表、哪些可以导出。Hub 节点导出的路由能被所有 Spoke 导入Spoke 导出的路由只被 Hub 导入再重新发布。这样分支之间不直接互通只有经过 Hub 中转才通。角色路由导出路由导入可达性效果Hub导出到所有 Spoke接收所有 Spoke作为中心集中转发Spoke只导出到 Hub只接收 Hub分支之间不直达做 Hub-Spoke 验证时数据面的检查方法仍是 MPLS 基本配置里的那套先在边缘设备上ping对端环回地址再用带标签的tracert -v确认中间节点确实在做标签转发。我自己的习惯是每改一处 VRF 配置先看转发表是否存在、再看 LSP 是否完整三张截图缺一张都不放心。以前交报告只截current-configuration被老师问“标签转发表呢”问得哑口无言从那以后任何 MPLS 实验的记录里都默认带上display mpls lsp和tracert -v的标签截图。这个习惯能帮你避开很多后续排错里的反复希望帮到你。本文还有配套的精品资源点击获取
返回列表