当前位置: 首页 > news >正文

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

94f1d1bfaea2d115d60318ce89817ef9.gif

正文共: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。

7516569d242f83488da3633688568287.png

组网需求

eb07664a7ca6e03525bfd41b7b51c9c4.png

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数量过多,影响设备性能。

952a46cf4d0e6c612693cac02fe1a59c.png

组网图

a29d7176575aac016a4681d993bef965.png

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

474ac44ce15c1e4cb39c60472174535f.png

2547820a42709f981f92ac77ec704408.png

实验环境

3bd547b329ebad10fb42d5bbe671dcad.png

Windows 10专业版(1909-18363.1556,16 GB内存)

HCL 3.0.1

MSR 36-20(Version 7.1.064, Release 0821P11)

2762a4884e34c7988340c77dba16b356.png

配置步骤

11e0bece347ebc5fc82274bea2560638.png

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

86dbc9b1f950efbe8193408f927d23d8.png

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

be6557fdf90d2a58eb152eb1783335e3.png

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

377916d166f7bdfc098e8941c41c92d0.png

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

dd8b2d3f8399f53aaa28720d71ca7162.png

验证配置

f4873248780ce03bb6dcd2b3418d2a86.png

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

7ba425d1f60387f7b582242fd5976506.png

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

60c49baf579c8d219676e998077660b1.png

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

RT2发出的报文如下,标签值同样为24126,TTL为253。

c564a0a821376c626fafd86e5b077df2.png

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

882f50e9aaf29d618fe57c2e2b3128f6.png

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

72b8ef338d17efe4a1f9deabe0a94cae.png

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

c9a39e11d75d3a91aff7e1d270703734.png

从这里我们可以看到RT3到两个业务网段的进出标签是一样的,和抓包看到的一致。

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

a83002e3b034f4ce646587149ba4f0de.png

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

0789864c13198d81c8581c5fe55e530c.png

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

46ece1201b796790e7f5e3bef082ee4c.png

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

269ccba9d08298b7a5bddf608f563412.png

但是回包就有MPLS标签了。

我们再去测试一下用PCA去ping测试RT3的环回口地址。

c08fc7e95e9c6e57bbcd17d9d3cba6a1.png

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

9ae118470aab783a746cb11266b687fd.png

并且回包也是带MPLS标签的。

再看一下从RT2发出的报文。

e32e74f785dd66b09131890d369c2f16.png

标签又没有了。

0fc1e385fa0c05644e2869e7ae01d977.png

回包又有MPLS标签了。

怎么回事?想明白了吗?

4d4514900ef6b80ad59f5935c706ead0.png

看这里,我们从设备查看LDP的LSP时,有使用保留的标签值3,什么意思呢?就是配置启用了倒数第二跳弹出标签的功能。也就是说,RT2这个LSR发现下游LSR通告的标签为隐式空标签3时,它并不用这个值替代栈顶原来的标签,而是直接弹出标签,并将报文转发给RT3(即Egress)。

同样,从RT1上通过ping mpls ipv4命令用来检测IPv4地址前缀类型MPLS LSP的连通性。

4d1ce1523e70b99f71336e3945337d5f.png

再看一眼MPLS ECHO的报文。

9d48365f5676cf94217dd804e1960622.png

可以发现,这是一个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试一下。

f0ac97529410f78fdcdf183c051a82fb.png

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

1cecdad0c3b8296147844da0b4fa565a.gif

长按二维码
关注我们吧

b0b422c57ba0a9ac1b13832a2208ce04.jpeg

5598c5342a7ee38706ccf3ceace0cbaf.png

在设备自动上线时,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 实战之元服务:静态案例效果---查看国际航班服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index代码 import { authen…...

PetaLinux 内核输出信息的获取方式

串口终端: 默认输出方式。 曾尝试过将串口终端的输出重映射到伪终端&#xff0c;失败了。 伪终端: dmesg命令 dmesg是Linux系统重查看内核日志的使用工具&#xff0c;允许查看系统内核的输出消息&#xff0c;包括引导信息&#xff0c;硬件检测&#xff0c;设备驱动和系统错…...

Android使用辅助服务AccessibilityService实现自动化任务

Android 辅助服务&#xff08;AccessibilityService&#xff09;旨在帮助具有视觉、身体或年龄相关限制的用户更轻松地使用 Android 设备和应用。通过辅助服务&#xff0c;可以将一些人工操作自动化&#xff0c;从而解放用户的双手。 因此我们可以使用它来实现一些自动化任务&a…...

工业大数据分析算法实战-day15

文章目录 day15特定数据类型的算法工业分析中的数据预处理工况划分数据缺失时间数据不连续强噪声大惯性系统趋势项消除 day15 今天是第15天&#xff0c;昨日是针对最优化算法、规则推理算法、系统辨识算法进行了阐述&#xff0c;今日主要是针对其他算法中的特定数据类型的算法…...

C语言实现顺序表详解

文章目录 [TOC] 1.前言&#x1f64b;&#x1f3fc;‍♂️2.顺序表&#x1f9e3;2.1 顺序表概念&#x1f9e3;2.2 顺序表特点&#x1f9e3;2.2 顺序表作用&#x1f9e3; 3.顺序表基操&#x1f9e4;3.1 结构体初始化&#x1f389;3.2 顺序表初始化&#x1f389;3.3 顺序表创建&am…...

【ES6复习笔记】对象方法扩展(17)

对象方法扩展 在 JavaScript 中&#xff0c;对象是属性和方法的集合。除了内置的方法&#xff0c;我们还可以通过扩展对象的原型来添加新的方法。本教程将介绍如何使用 Object.is、Object.assign 和 Object.setPrototypeOf 方法来扩展对象。 1. Object.is 判断两个值是否完全…...

【视觉惯性SLAM:相机成像模型】

相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容&#xff0c;它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型&#xff0c;以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…...

学习笔记(C#基础书籍)-- C#基础篇

&#xff08;12.24&#xff09; C#介绍&#xff1a;《第一章》 特点&#xff1a;语法简洁&#xff0c;面向对象&#xff0c;支持绝大部分的web标准&#xff0c;强大的安全机制&#xff08;垃圾回收器&#xff09;&#xff0c;兼容性好&#xff08;遵循.NET的公共语言规范【CL…...

操作系统(26)数据一致性控制

前言 操作系统数据一致性控制是确保在计算机系统中&#xff0c;数据在不同的操作和处理过程中始终保持正确和完整的一种机制。 一、数据一致性的重要性 在当今数字化的时代&#xff0c;操作系统作为计算机系统的核心&#xff0c;负责管理和协调各种资源&#xff0c;以确保计算机…...

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入门

本文适用&#xff1a; 不知道什么是项目构建&#xff0c;可以了解下Ant&#xff0c;Maven&#xff0c;Gradle的区别。知道什么是项目构建&#xff0c;了解Ant&#xff0c;Maven&#xff0c;可以看到Gradle是怎么做的。知道什么是项目构建&#xff0c;了解Ant&#xff0c;Maven&…...

Electron -- Electron应用主要核心(二)

Electron 应用主要由以下几个核心组成部分构成&#xff1a; 主进程&#xff08;Main Process&#xff09;&#xff1a; Electron 应用的入口点是主进程&#xff0c;通常是 main.js 文件。它负责管理应用的生命周期&#xff0c;包括创建窗口、处理系统事件和应用更新等。主进程可…...

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 &#x1f31f;&#x1f31f;本期讲解关于HTMLCSSJavaScript的基础知识&#xff0c;小编带领大家简单过一遍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 …...

git命令恢复/还原某个文件、删除远程仓库中的文件

有时刚创建的远程仓库&#xff0c;可能无意中把一些没用的文件上传到仓库&#xff0c;本文介绍一下怎么删除这些文件。 一、git命令恢复某个文件 第一步&#xff1a;拉取最新代码 git pull 第二步&#xff1a; 查看git 修改的文件状态 git status 第三步&#xff1a;查看…...

二十一、Ingress 进阶实践

架构参考 使用hostnetwork,推荐的方式,使用单独的物理服务器,不部署业务pod的主机。 一、Ingress Nginx Controller 安装 采用helm的安装方式,进行部署。 官网地址: https://kubernetes.github.io/ingress-nginx/deploy/ github地址: https://github.com/kubernetes/in…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...