MPLS小实验:利用LDP动态建立LSP

正文共:1234 字 19 图,预估阅读时间:2 分钟
通过上个实验(MPLS小实验:静态建立LSP),我们了解到静态LSP不依靠标签分发协议,而是在报文经过的每一跳设备上(包括Ingress、Transit和Egress)分别手工指定入标签、出标签等信息,建立标签转发表项,采用这种方式建立LSP。
通过手工方式建立静态LSP消耗的资源比较少,但静态建立的LSP不能根据网络拓扑变化动态调整。一般来讲,静态LSP适用于拓扑结构简单并且稳定的小型网络。
与MPLS相关的协议主要是RFC3031(MPLS:多协议标签交换架构)和RFC3032(MPLS 标签栈编码)。从协议中,我们还发现可以利用LDP(Label Distribution Protocol,标签分发协议)用来动态建立LSP。使能LDP后,LSR可以把网络层的IP路由信息映射到MPLS的标签交换路径上,即将路由表项中的路由引入至LDP,并根据其目的网络地址划分FEC,实现LSP根据网络拓扑变化动态调整,从而适应更大型的网络。
通过在LSR上配置LSP触发策略,可以限制哪些引入到LDP的路由表项能够触发LDP为其目的网络地址分配标签并建立LSP,从而控制LSP的数量,避免LSP数量过多导致设备运行不稳定。
对于引入到LDP的路由表项,LSP触发策略包括:
1、所有路由表项都会触发LDP建立LSP。
2、利用IP地址前缀列表对路由表项进行过滤,只有匹配IP地址前缀列表的路由表项才能触发建立LSP。
3、只有32位掩码的IPv4主机路由或128位前缀的IPv6主机路由能够触发LDP建立LSP。

组网需求

RT1-3均支持MPLS,在RT1到RT3之间建立静态LSP,使11.1.1.0/24和33.1.1.0/24这两个网段中互访的报文能够通过MPLS进行传输。
RT1、RT2和RT3上只允许目的地址为1.1.1.1/32、2.2.2.2/32、3.3.3.3/32、11.1.1.0/24和33.1.1.0/24的路由表项触发LDP建立LSP,其他路由表项不能触发LDP建立LSP,以避免建立的LSP数量过多,影响设备性能。

组网图

利用LDP动态建立LSP配置组网图。


实验环境

Windows 10专业版(1909-18363.1556,16 GB内存)
HCL 3.0.1
MSR 36-20(Version 7.1.064, Release 0821P11)

配置步骤

首先按照组网图所示配置各接口的IP地址和掩码,并在RT1、RT2和RT3上配置OSPF,实现各路由器之间路由可达。

RT1
和静态配置LSP相比,到达44.1.1.0/24网段的路由会从OSPF动态学习到,无需额外配置。首先使能设备和互联接口的MPLS和LDP功能。
#
mpls lsr-id 1.1.1.1
#
mpls ldp
#
interface GigabitEthernet0/1ip address 12.1.1.1 255.255.255.0mpls enablempls ldp enable 创建IP地址前缀列表rt1对路由表项进行过滤,创建节点以匹配目的地址为1.1.1.1/32、2.2.2.2/32、3.3.3.3/32、11.1.1.0/24和33.1.1.0/24的路由表项,并配置只有匹配IP地址前缀列表的路由表项才能触发LDP建立LSP。
#
ip prefix-list rt1 index 10 permit 1.1.1.1 32
ip prefix-list rt1 index 20 permit 2.2.2.2 32
ip prefix-list rt1 index 30 permit 3.3.3.3 32
ip prefix-list rt1 index 40 permit 11.1.1.0 24
ip prefix-list rt1 index 50 permit 33.1.1.0 24
#
mpls ldplsp-trigger prefix-list rt1 
RT2
如果是手工配置静态LSP,那么RT2是transit节点,和RT1配置存在明显差异。但在使用LDP时,除了RT1连接业务的接口无需使能MPLS之外,其他配置没有差异。直接上配置。
#
sysname RT2
#
ospf 1 router-id 2.2.2.2area 0.0.0.0network 2.2.2.2 0.0.0.0network 12.1.1.0 0.0.0.255network 23.1.1.0 0.0.0.255
#
mpls lsr-id 2.2.2.2
#
mpls ldp
lsp-trigger prefix-list rt2
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255
#
interface GigabitEthernet0/0ip address 12.1.1.2 255.255.255.0mpls enablempls ldp enable
#
interface GigabitEthernet0/1ip address 23.1.1.2 255.255.255.0mpls enablempls ldp enable
#
ip prefix-list rt2 index 10 permit 1.1.1.1 32
ip prefix-list rt2 index 20 permit 2.2.2.2 32
ip prefix-list rt2 index 30 permit 3.3.3.3 32
ip prefix-list rt2 index 40 permit 11.1.1.0 24
ip prefix-list rt2 index 50 permit 33.1.1.0 24 
RT3
RT3和RT1的角色是一样的,配置也相近,直接上配置。
#
sysname RT3
#
ospf 1 router-id 3.3.3.3area 0.0.0.0network 3.3.3.3 0.0.0.0network 23.1.1.0 0.0.0.255network 33.1.1.0 0.0.0.255
#
mpls lsr-id 3.3.3.3
#
mpls ldplsp-trigger prefix-list rt3
#
interface LoopBack0ip address 3.3.3.3 255.255.255.255
#
interface GigabitEthernet0/0ip address 23.1.1.3 255.255.255.0mpls enablempls ldp enable
#
interface GigabitEthernet0/1ip address 33.1.1.1 255.255.255.0
#
ip prefix-list rt3 index 10 permit 1.1.1.1 32
ip prefix-list rt3 index 20 permit 2.2.2.2 32
ip prefix-list rt3 index 30 permit 3.3.3.3 32
ip prefix-list rt3 index 40 permit 11.1.1.0 24
ip prefix-list rt3 index 50 permit 33.1.1.0 24 
验证配置

配置完成之后,从PCB向PCA发起访问,可以看到能够正常访问。TTL值为252,说明中间经过了3台设备,和实际情况相符合。

抓包查看,从RT3发出的报文如下。

还记得上个实验中H3C设备Egress节点能配置的入标签的取值范围吗?是16-1023,这个标签24126超过了这个范围,那就只能理解为标签值1024-1048575这个范围是留给自动生成的标签值的了。关于LDP生成标签的详细方式,有兴趣的小伙伴可以查阅RTC5036。
RT2发出的报文如下,标签值同样为24126,TTL为253。

查看RT1设备上的路由信息。

查看RT1设备上LDP LSP的建立情况。

查看RT2设备上LDP LSP的建立情况。

从这里我们可以看到RT3到两个业务网段的进出标签是一样的,和抓包看到的一致。
查看RT3设备上LDP LSP的建立情况。

在手工配置静态LSP实验中,因为没有路由,终端PCA是不能ping通Transit节点的地址的,现在有路由了会怎么样呢?

我们发现PCA可以ping通RT2的环回口地址,但这不是重点,我们来看抓包。

可以看到,请求包还是正常的封装。

但是回包就有MPLS标签了。
我们再去测试一下用PCA去ping测试RT3的环回口地址。

可以看到从RT1发出的报文这次有了MPLS标签。

并且回包也是带MPLS标签的。
再看一下从RT2发出的报文。

标签又没有了。

回包又有MPLS标签了。
怎么回事?想明白了吗?

看这里,我们从设备查看LDP的LSP时,有使用保留的标签值3,什么意思呢?就是配置启用了倒数第二跳弹出标签的功能。也就是说,RT2这个LSR发现下游LSR通告的标签为隐式空标签3时,它并不用这个值替代栈顶原来的标签,而是直接弹出标签,并将报文转发给RT3(即Egress)。
同样,从RT1上通过ping mpls ipv4命令用来检测IPv4地址前缀类型MPLS LSP的连通性。

再看一眼MPLS ECHO的报文。

可以发现,这是一个UDP封装的ICMP报文,内层封装的报文的TTL值为1,目的地址是127.0.0.1,最内层封装的目的地址为3.3.3.3/32,也就是说报文到达最终设备之后,设备上在这个网段的接口地址会响应这个ICMP报文。
关于Router Alter,就不展开介绍了,有兴趣的小伙伴可以查看RFC2113(IP 路由器告警选项)。
我们可以把RT3接口G0/1的地址改为33.1.1.3/24试一下。

可以看到,当目的地址是接口地址和网段时,均能正常响应,能发现响应的IP地址是33.1.1.3,知道了这个操作,那我们是不是可以跨三层探测互联地址了呢?

长按二维码
关注我们吧


在设备自动上线时,Python比TCL好用吗?
MPLS小实验:静态建立LSP
EVPN数据中心三层互联如何实现?
想安装Windows11却没有TPM?我定制了一个镜像给你试试?
域名.com是什么意思?95%的人都不知道吧?
怎么用《清华大学2021年元宇宙发展研究报告》蹭热度?
相关文章:
MPLS小实验:利用LDP动态建立LSP
正文共:1234 字 19 图,预估阅读时间:2 分钟 通过上个实验(MPLS小实验:静态建立LSP),我们了解到静态LSP不依靠标签分发协议,而是在报文经过的每一跳设备上(包括Ingress、T…...
C++ 面向对象编程
面向对象编程(Object-Oriented Programming, OOP)是C语言的一个重要特性,它允许开发者以更直观和模块化的方式来设计和构建程序。OOP的四个主要原则是:封装(Encapsulation)、继承(Inheritance&a…...
我的Serverless实战——引领云计算的下一个十年,附答案
(Serverless模式下,按照实际消耗资源及使用存储进行计费) 4.更少的代码,更快的交付速度。 (Serverless提供成熟的代码构建发布、版本切换等特性,交付速度更快) Serverless由开发者实现的服务端逻…...
有哪些其他方法可以实现数据一致性验证?
数据库约束 主键约束: 主键是表中用于唯一标识每条记录的一列或一组列。例如,在一个“用户表”中,用户ID可以作为主键。当插入或更新数据时,数据库会自动检查主键值是否唯一。如果试图插入一个已存在主键值的记录,数据…...
vue 基础学习
一、ref 和reactive 区别 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><div id"app"><h1>{{Web.title}}</h1><h1&…...
HarmonyOS NEXT 实战之元服务:静态案例效果---查看国际航班服务
背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…...
PetaLinux 内核输出信息的获取方式
串口终端: 默认输出方式。 曾尝试过将串口终端的输出重映射到伪终端,失败了。 伪终端: dmesg命令 dmesg是Linux系统重查看内核日志的使用工具,允许查看系统内核的输出消息,包括引导信息,硬件检测,设备驱动和系统错…...
Android使用辅助服务AccessibilityService实现自动化任务
Android 辅助服务(AccessibilityService)旨在帮助具有视觉、身体或年龄相关限制的用户更轻松地使用 Android 设备和应用。通过辅助服务,可以将一些人工操作自动化,从而解放用户的双手。 因此我们可以使用它来实现一些自动化任务&a…...
工业大数据分析算法实战-day15
文章目录 day15特定数据类型的算法工业分析中的数据预处理工况划分数据缺失时间数据不连续强噪声大惯性系统趋势项消除 day15 今天是第15天,昨日是针对最优化算法、规则推理算法、系统辨识算法进行了阐述,今日主要是针对其他算法中的特定数据类型的算法…...
C语言实现顺序表详解
文章目录 [TOC] 1.前言🙋🏼♂️2.顺序表🧣2.1 顺序表概念🧣2.2 顺序表特点🧣2.2 顺序表作用🧣 3.顺序表基操🧤3.1 结构体初始化🎉3.2 顺序表初始化🎉3.3 顺序表创建&am…...
【ES6复习笔记】对象方法扩展(17)
对象方法扩展 在 JavaScript 中,对象是属性和方法的集合。除了内置的方法,我们还可以通过扩展对象的原型来添加新的方法。本教程将介绍如何使用 Object.is、Object.assign 和 Object.setPrototypeOf 方法来扩展对象。 1. Object.is 判断两个值是否完全…...
【视觉惯性SLAM:相机成像模型】
相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容,它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型,以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…...
学习笔记(C#基础书籍)-- C#基础篇
(12.24) C#介绍:《第一章》 特点:语法简洁,面向对象,支持绝大部分的web标准,强大的安全机制(垃圾回收器),兼容性好(遵循.NET的公共语言规范【CL…...
操作系统(26)数据一致性控制
前言 操作系统数据一致性控制是确保在计算机系统中,数据在不同的操作和处理过程中始终保持正确和完整的一种机制。 一、数据一致性的重要性 在当今数字化的时代,操作系统作为计算机系统的核心,负责管理和协调各种资源,以确保计算机…...
ubuntu24.04使用opencv4
ubuntu24.04LTS自带opencv4.5代码实例 //opencv_example.cpp #include <opencv2/opencv.hpp> #include <iostream>int main() {// 读取图像cv::Mat img cv::imread("image.jpg", cv::IMREAD_COLOR);if (img.empty()) {std::cerr << "无法读…...
【项目构建】Gradle入门
本文适用: 不知道什么是项目构建,可以了解下Ant,Maven,Gradle的区别。知道什么是项目构建,了解Ant,Maven,可以看到Gradle是怎么做的。知道什么是项目构建,了解Ant,Maven&…...
Electron -- Electron应用主要核心(二)
Electron 应用主要由以下几个核心组成部分构成: 主进程(Main Process): Electron 应用的入口点是主进程,通常是 main.js 文件。它负责管理应用的生命周期,包括创建窗口、处理系统事件和应用更新等。主进程可…...
【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解
前言 🌟🌟本期讲解关于HTMLCSSJavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …...
git命令恢复/还原某个文件、删除远程仓库中的文件
有时刚创建的远程仓库,可能无意中把一些没用的文件上传到仓库,本文介绍一下怎么删除这些文件。 一、git命令恢复某个文件 第一步:拉取最新代码 git pull 第二步: 查看git 修改的文件状态 git status 第三步:查看…...
二十一、Ingress 进阶实践
架构参考 使用hostnetwork,推荐的方式,使用单独的物理服务器,不部署业务pod的主机。 一、Ingress Nginx Controller 安装 采用helm的安装方式,进行部署。 官网地址: https://kubernetes.github.io/ingress-nginx/deploy/ github地址: https://github.com/kubernetes/in…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
