当前位置: 首页 > 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…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...