当前位置: 首页 > 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年元宇宙发展研究报告》蹭热度?

http://www.lryc.cn/news/509828.html

相关文章:

  • C++ 面向对象编程
  • 我的Serverless实战——引领云计算的下一个十年,附答案
  • 有哪些其他方法可以实现数据一致性验证?
  • vue 基础学习
  • HarmonyOS NEXT 实战之元服务:静态案例效果---查看国际航班服务
  • PetaLinux 内核输出信息的获取方式
  • Android使用辅助服务AccessibilityService实现自动化任务
  • 工业大数据分析算法实战-day15
  • C语言实现顺序表详解
  • 【ES6复习笔记】对象方法扩展(17)
  • 【视觉惯性SLAM:相机成像模型】
  • 学习笔记(C#基础书籍)-- C#基础篇
  • 操作系统(26)数据一致性控制
  • ubuntu24.04使用opencv4
  • 【项目构建】Gradle入门
  • Electron -- Electron应用主要核心(二)
  • 【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解
  • git命令恢复/还原某个文件、删除远程仓库中的文件
  • 二十一、Ingress 进阶实践
  • ES学习Promise对象(九)
  • 寻找适合小户型的开源知识库open source knowledge base之路
  • Linux高级--2.6 网络面试问题
  • 在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc
  • 音视频入门基础:MPEG2-TS专题(20)——ES流简介
  • 五子棋小游戏设计(Matlab)
  • 基于Pycharm与数据库的新闻管理系统(3)MongoDB
  • WebRtc webrtc-streamer部署
  • CVPR-2024 | 具身导航模型大一统!NaviLLM:学习迈向具身导航的通用模型
  • CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
  • git仓库多人协作新建分支 合并到主分支流程详解