网络实验(MPLS基础与考试)

 网络  MPLS 󰈭 7688字

将所有的图片放在一个Markdown中太傻逼了, 超过了200张图片, 因而本篇博客再单独记录MPLS与网管的相关内容, 同时努力不再采用图片格式, 而是用Plain Text展示相关实验内容.

不过比较怠惰, MPLS VPN只是结合着教材上做了一下实验, 没有进行记录; 网管则是觉得过于傻逼, 加上ensp也没有网管软件, 很多报文都没法复现, 直接跳过不管.

MPLS基础

MPLS体系结构

MPLS网路的基本组成单元为LSR(Label Switching Router), 由LSR组成的网络叫做MPLS域. 位于区域边缘与其他用户网络连接的LSR叫做边缘LSR, 在区域内部的则称为核心LSR. 分组打上标签上沿着一系列LSR的路径成为LSP(Labe Switched Path), 其中入口LSR为Ingress, 出口LSR交Egress.

在Ingress节点, 根据进入网络的分组的**特征(一般为IP前缀或者主机名称等)**划分为FEC(Forwarding Equivalence Class, 转发等价类), 相同的FEC分组在MPLS域内的LSP相同. LSR为FEC分组分配短而定长的标签, 然后从相应的接口进行转发.

LSP沿途的所有LSR上都建立了输入输出标签的映射表, 表项元素为下一跳标签转发表项(Next Hop Label Forwading Entry, NHLFE). 对于接收到的标签分组, LSR查询该表找到对应的NHLFE, 替换标签后转发. 这个过程称为ILM(Incoming Label Map, 输入标签映射).

MPLS在Ingress处指定特定分组的FEC, 后续LSR只需要查表即可转发, 比网络层的转发要简单得多, 提高了转发速度.

MPLS标签

标签用于标识一个FEC.

标签在分组中处于二层与三层之间的位置, 其报文结构有4个域:

  • Label: 标签值(20bits)

  • Exp: 保留(3bit)

  • S: 标记是否为最底层的标签(1bit)

  • TTL: 与IP分组的TTL意义相同(8bit)

MPLS标签可以无限嵌套, 靠近二层首部的标签叫外层标签或栈顶标签, 靠近IP首部的标签称为栈底MPLS标签或内层MPLS标签。

MPLS标签分发方式

有两种方式: 下游自主标签分发与下游按需标签分发.

  • 下游自主方式DU. 对于一个特定的FEC, LSR无需从上游获得标签请求消息即进行标签分配与分发.

  • 下游按需方式DoD. 对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发。

MPLS标签分配方式

MPLS中标签分配由下游LSR做出, 下游LSR随后将通告给上游LSR. 标签分配也有两种方式:

  • 独立标签分配控制方式: 本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签。

  • 有序标签分配控制方式:对于LSR上某个FEC的标签映射,只有当该LSR已经具有此FEC下一跳的标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。

MPLS标签保持方式

分为两种:

  • 自由标签保持方式: 对于从邻居LSR收到的标签映射, 无论邻居LSR是不是自己的下一跳都保留. 当网络拓扑变化后, LSP可以快速重建.

  • 保守标签保持方式: 对于从邻居LSR收到的标签映射, 只有当邻居LSR是自己的下一跳时才保留. 这种方式节省了内存和标签空间, 通常和DoD方式一起, 用于标签空间有限的LSR.

LDP标签分发协议

LSP的建立本质上是对FEC和标签进行绑定, 并将这种绑定关系通告给LSP上所有的LSR的过程. 该过程由LDP(Label Distribution Protocol, 标签分发协议) 实现.

LDP用于在一对标记的转发上下游LSR之间分发FEC-Label映射信息的协议, 上下游LSR被称为标记分发对等体. 为了保证分发的可靠性, LDP采用TCP传输服务.

下面展示了LDP消息一览:

LDP PDU

LDP消息不直接承载在UDP中, 而是封装在LDP PDU(协议数据单元)头部后, 一个LDP PDU可以包含多个不同的LDP信息.

LDP PDU头部的结构如下:

Hello消息

报文结构如下:

其内容为:

  • 第一个Bit通常叫做U比特, 用于指示接收者在不能识别该类型(即随后的15bit域)下的处理方法: 0则向发送者发送错误通告, 1则安静地忽略该消息

  • 随后跟15bit的类型域, 这里0x0100就代表Hello信息.

  • Length指示后续报文的长度.

  • Message ID 用于给Hello编号, 以便于在其他消息(如错误通告)中指示当前消息.

  • Common Hello Parameters TLV包含Hello消息中必须包含的那些TLV信息. 事实上, 整个Hello消息也可以看作是一个TLV, 其Value中又有一些TLV罢了; 而随后的Optional Parameters则是可选的TLV信息.

下面介绍Common Hello Parameters TLV的结构:

  • U比特指示如何处理该条TLV; 第二个Bit称为F比特, 仅在U比特为1时启用; 如果F=0则未知的TLV不会进一步转发, 如果F=1则未知的TLV也会随着包含它的消息一并转发.

  • 随后的14bit指示TLV类型, Length指示后续报文的长度, Hold Time指示接收者应当保持Hello记录的时长.

  • 最后的T比特指示邻居发现机制, T=1表示使用拓展邻居发现机制, T=0表示链路发现机制; R比特标识是否接收者要向发送者回应目标Hello.

Initialization消息

具体考察Initialization Message的报文结构:

可以看到该结构与Hello消息十分相似, 下面再继续探讨Common Session Parames TLV的结构:

前几个字段与Hello Paramters类似, 需要关注的是:

  • A比特指示标记分发方式, A=0代表DU方式, A=1代表DoD方式

  • D比特代表是否使能基于路径向量的环路检测功能, 如果使能检测功能, 则PVLim中进一步指示路径向量的最大长度.

  • Max PDU Length 指示建议的最大PDU长度

  • 随后跟6字节的标识符, 但是教材中仅给出了4字节的Identifier, 在实际的报文中还有2字节的命名空间.

KeepAlive消息

KeepAlive的报文比较简单, 只有一个通用的消息头. 当没有其他消息要传输时, 就发一个KeepAlive来证实自己的存在.

Address消息

Address TLV中包含了发送方的所有端口IP地址.

Label Mapping消息

Label Mapping消息的报文结构如下:

主要介绍其中的FEC TLV以及Label TLV, 它们表示了发送方发布的标记与FEC之间的映射.

FEC TLV结构如下:

FEC Element由三种可能的类型:

Label FEC也有三种可能的类型:

这里使用的是通用标记, 其结构为:

最后介绍几个可选参数:

  • Label Request Message ID TLV. 当这个Map消息是用于响应某个Label Request消息时, 他就应该包含该字段用于说明Request消息的消息ID. 不过在DU分发方式下, Label Mapping无需Request来触发.

  • Hop Count TLV和Path Vector TLV. 用于环路检测, 其结构为:

    在一个网络中, LSR从下游收到Label Mapping后, 有可能会触发其再向该LSR的上游发送Mapping, 为了防止该过程在路由环路等情况下无限重复, 采用了环路检测机制.

    • 一种方式就是通过Hop Count. 每经过一个LSR后HC就加一, 当LSR收到一个HC大于预先定义的最大值后就认为出现了环路从而丢弃该消息

    • 另一种是Path Vector, 通过TLV中加入的路径上的所有LSR ID信息, 检查自己是否存在其中, 来判断是否发生环路.

Label Request

Label Release

LSP的建立过程

下面结合LDP消息说明LSP建立的整个过程.

LDP发现

每个LSR必须有一个标识符用以区分, LDP使用一个4字节的LSR ID用以标识不同的LSR. 同时, 由于同一个LSR可能存在于不同的标记空间(如ATM交换机中每个接口的VCI), 因而LDP再使用2字节的无符号整数标识标记空间. 总共使用这6个字节来形成LDP标识符, 作为一个独立的标记分发对等体.

LDP有两种邻居发现机制:

  • 基本发现机制:发现直连链路的LSR. 通过目的地址为224.0.0.2(所有路由器)的组播地址、UDP目的端口为指示包含LDP用的646以及承载在UDP报文中的Hello信息向所有路由器声明自己的存在.

  • 扩展发现机制:用于发现非直连链路的LSR. 同样采用目的端口为646的UDP报文,、不过目的地址为手工配置的特定LSR地址、承载的Hello报文来声明自己的存在.

这两种机制使用Hello信息基本一样.

LDP会话建立与维护

当一个LSR发现新的邻接关系后就会检查是否已经有一个TCP连接在为其服务, 如果没有则建立一个新的会话, 标识TCP连接为Hello邻接体服务.

建立TCP连接的第一步是确定双方的IP. 本端IP决定于是否在Hello选项中向对端通告过地址, 如果通告过则使用该地址, 不然则使用Hello报文的源IP地址; 对端IP的确定也是类似的.

随后, 协议规定地址的大的那一方作为TCP建立的主动方, 另一方为被动方, 二者发起三次握手建立TCP连接.

建立连接后, 双方将开始会话初始化过程. 主动方向被动方发送Initialization Message, 如果接收方认为建议的参数可以接收就也用一个初始化消息回应, 否则就发出错误通知并终止连接. 当主动方接收到接收方的初始化消息, 再次检查对方建议的参数是否可以接收, 可以则回应一个KeepAlive消息, 否则也是错误通知并终止连接. 任何一方收到KeepAlive后则认为LDP对话已经处理Operation状态了.

由以上过程可知, 连接建立过程中总是主动负责, 被动方消极等待. 为了避免双方参数不兼容导致主动方反复尝试建立连接, 其尝试连接的时间间隔是指数规律增长的. 这也导致一个问题, 被动方可能再很长时间内都必须等待主动方进行连接, 因而其在Hello报文中通过声明新的配置序列号来解决这个问题.

MPLS标记分发和管理

对于逐跳路由应用来说, 通常采用独立LSP控制方式+DU分发方式, 下面以此为例进行说明.

在这样的前提下, 一旦LDP发现了一个新的FEC, 就可以为其分配标记, 并使用Label Mapping消息将其分发给LDP对等体(不过当然除了下一跳路由器). 此外由Label Mapping消息的结构可知, 一个Label可以与多个FEC绑定.

当Engress发现一个新的主机路由后,并且该路由不属于任何现有的FEC, 则尝试为其建立一个新的FEC, 并主动向上游发出标签映射消息.

当上游LSR收到Label Mapping消息后:

  • 首先检查环路信息, 若产生环路, 则向消息发送者发送一个Label Release消息声明不使用对端发来的标记映射.

  • 检查消息中的FEC的下一跳是否是消息发送者的某个地址, 如果不是的话, 再根据保守模式还是自由模式决定是否要保存该映射关系. LDP在此之前已经通过Address消息通告自身所拥有所有端口地址, 这样Mapping消息接收方就可以对端口情况进行检查.

  • 如果一切都好, LSR就会根据该消息修改标记转发表, 然后再向上游LSR发送自己对于该FEC的标签映射消息.

  • 一直向上发送直到Ingress. 如果该LSR是Ingress, 会建立FTN表, 不然建立ILM表.

MPLS实验

MPLS实验拓扑

给出如当下的拓扑结构图, 全网配置OSPF互通.

在R1上配置如下:

1[R1]mpls lsr-id 1.1.1.1
2[R1]mpls
3[R1-mpls]lsp-trigger all
4[R1]mpls ldp
5[R1]inter g0/0/1
6# 在相应接口上启用MPLS与LDP
7[R1-GigabitEthernet0/0/1]mpls
8[R1-GigabitEthernet0/0/1]mpls ldp

R2,R3的配置同理; 这里与书本上不同, R2也配置为lsp-trigger all.

配置完成后R1,R2,R3构成MPLS域.

MPLS实验标签转发表

通过dis mpls lsp查看标签转发表:

 1[R1-GigabitEthernet0/0/1]dis mpls lsp
 2-------------------------------------------------------------------------------
 3                 LSP Information: LDP LSP
 4-------------------------------------------------------------------------------
 5FEC                In/Out Label  In/Out IF                      Vrf Name       
 63.3.3.3/32         NULL/1035     -/GE0/0/1                                     
 73.3.3.3/32         1025/1035     -/GE0/0/1                                     
 82.2.2.2/32         NULL/3        -/GE0/0/1                                     
 92.2.2.2/32         1026/3        -/GE0/0/1                                     
10200.0.1.0/24       NULL/3        -/GE0/0/1                                     
11200.0.1.0/24       1027/3        -/GE0/0/1                                     
12200.0.0.0/24       NULL/1036     -/GE0/0/1                                     
13200.0.0.0/24       1028/1036     -/GE0/0/1                                     
1410.0.0.1/32        1029/NULL     -/-                                           
151.1.1.1/32         3/NULL        -/-                                           
16100.0.0.0/24       3/NULL        -/-                                           
17200.0.2.0/24       3/NULL        -/-                                           
1810.0.1.1/32        NULL/1040     -/GE0/0/1                                     
1910.0.1.1/32        1030/1040     -/GE0/0/1   
20
21
22[R2-GigabitEthernet0/0/1]dis mpls lsp
23-------------------------------------------------------------------------------
24                 LSP Information: LDP LSP
25-------------------------------------------------------------------------------
26FEC                In/Out Label  In/Out IF                      Vrf Name       
273.3.3.3/32         1035/3        -/GE0/0/1                                     
282.2.2.2/32         3/NULL        -/-                                           
29200.0.1.0/24       3/NULL        -/-                                           
30200.0.2.0/24       3/NULL        -/-                                           
31200.0.0.0/24       1036/3        -/GE0/0/1                                     
3210.0.0.1/32        NULL/1029     -/GE0/0/0                                     
3310.0.0.1/32        1037/1029     -/GE0/0/0                                     
341.1.1.1/32         NULL/3        -/GE0/0/0                                     
351.1.1.1/32         1038/3        -/GE0/0/0                                     
36100.0.0.0/24       NULL/3        -/GE0/0/0                                     
37100.0.0.0/24       1039/3        -/GE0/0/0                                     
383.3.3.3/32         NULL/3        -/GE0/0/1                                     
39200.0.0.0/24       NULL/3        -/GE0/0/1                                     
4010.0.1.1/32        NULL/1029     -/GE0/0/1                                     
4110.0.1.1/32        1040/1029     -/GE0/0/1 
42
43[R3-GigabitEthernet0/0/1]dis mpls lsp
44-------------------------------------------------------------------------------
45                 LSP Information: LDP LSP
46-------------------------------------------------------------------------------
47FEC                In/Out Label  In/Out IF                      Vrf Name       
481.1.1.1/32         NULL/1038     -/GE0/0/1                                     
491.1.1.1/32         1024/1038     -/GE0/0/1                                     
502.2.2.2/32         NULL/3        -/GE0/0/1                                     
512.2.2.2/32         1025/3        -/GE0/0/1                                     
5210.0.0.1/32        NULL/1037     -/GE0/0/1                                     
5310.0.0.1/32        1026/1037     -/GE0/0/1                                     
54100.0.0.0/24       NULL/1039     -/GE0/0/1                                     
55100.0.0.0/24       1027/1039     -/GE0/0/1                                     
56200.0.2.0/24       NULL/3        -/GE0/0/1                                     
57200.0.2.0/24       1028/3        -/GE0/0/1                                     
583.3.3.3/32         3/NULL        -/-                                           
59200.0.0.0/24       3/NULL        -/-                                           
60200.0.1.0/24       3/NULL        -/-                                           
6110.0.1.1/32        1029/NULL     -/-   

比预料的多了一些, 而且几乎对每个FEC都多了一套标签变换规则… 比如在R1上, FEC3.3.3.3对应的转发, 预想的是只有NULL/1035, 但是却多出来一个1025/1035, 疑惑的是此时R1应该已经是Ingress了? 为何还会出现其余的入标签, 怀疑是标签的分发方式或者是环路或是标签保持方案等原因…

由于华为默认采用Libre标签保持+有序分配+DU分发的方案, 所以猜测表项中存了一些无用的内容.. 为了验证猜想, 尝试去修改label-retention, 但是把?按遍也没有找到相关的指令, 上网查阅后好像也在暗示华为的设备不能修改该属性(可能跟设备版本也有关系, 但是不想深究了); 又有说当分配方式为DU时标签保持模式为Libre, DoD时为Conservative, 因而尝试将3台路由器的相应端口的标签分发模式改为DuD:

 1[R3-GigabitEthernet0/0/1]dis this
 2[V200R003C00]
 3#
 4interface GigabitEthernet0/0/1
 5 ip address 200.0.1.2 255.255.255.0 
 6 mpls
 7 mpls ldp
 8 mpls ldp advertisement dod
 9#
10return

不过此时查看ldp的情况, 仍然显示为libre的保持规则, 看来可能确实无法修改.

 1<R3>dis mpls ldp
 2
 3                           LDP Global Information
 4 ------------------------------------------------------------------------------
 5 Protocol Version        : V1            Neighbor Liveness    : 600 Sec
 6 Graceful Restart        : Off           FT Reconnect Timer   : 0 Sec
 7 MTU Signaling           : On            Recovery Timer       : 300 Sec
 8 Capability-Announcement : Off           Longest-match        : Off
 9 P2MP Capability         : Off                                       
10
11                          LDP Instance Information
12 ------------------------------------------------------------------------------
13 Instance ID             : 0             VPN-Instance         :
14 Instance Status         : Active        LSR ID               : 3.3.3.3
15 Loop Detection          : Off           Path Vector Limit    : 32
16 Label Distribution Mode : Ordered       Label Retention Mode : Liberal
17 Instance Deleting State : No            Instance Reseting State : No
18 Graceful-Delete         : Off           Graceful-Delete Timer : 5 Sec
19 ------------------------------------------------------------------------------

但是好消息是, 经过DoD的分发方式, 所有的lsp表项确实就干净了:

 1<R1>dis mpls lsp
 2-------------------------------------------------------------------------------
 3                 LSP Information: LDP LSP
 4-------------------------------------------------------------------------------
 5FEC                In/Out Label  In/Out IF                      Vrf Name       
 61.1.1.1/32         3/NULL        -/-                                           
 710.0.0.1/32        1042/NULL     -/-                                           
 8100.0.0.0/24       3/NULL        -/-                                           
 93.3.3.3/32         NULL/1040     -/GE0/0/1                                     
1010.0.1.1/32        NULL/1041     -/GE0/0/1                                     
112.2.2.2/32         NULL/3        -/GE0/0/1                                     
12200.0.0.0/24       NULL/1042     -/GE0/0/1                                     
13200.0.1.0/24       NULL/3        -/GE0/0/1      
14
15<R2>dis mpls lsp
16-------------------------------------------------------------------------------
17                 LSP Information: LDP LSP
18-------------------------------------------------------------------------------
19FEC                In/Out Label  In/Out IF                      Vrf Name       
201.1.1.1/32         NULL/3        -/GE0/0/0                                     
2110.0.0.1/32        NULL/1042     -/GE0/0/0                                     
22100.0.0.0/24       NULL/3        -/GE0/0/0                                     
231.1.1.1/32         1037/3        -/GE0/0/0                                     
2410.0.0.1/32        1038/1042     -/GE0/0/0                                     
252.2.2.2/32         3/NULL        -/-                                           
26200.0.2.0/24       3/NULL        -/-                                           
27200.0.1.0/24       3/NULL        -/-                                           
28100.0.0.0/24       1039/3        -/GE0/0/0                                     
293.3.3.3/32         NULL/3        -/GE0/0/1                                     
303.3.3.3/32         1040/3        -/GE0/0/1                                     
3110.0.1.1/32        NULL/1037     -/GE0/0/1                                     
3210.0.1.1/32        1041/1037     -/GE0/0/1                                     
33200.0.0.0/24       NULL/3        -/GE0/0/1                                     
34200.0.0.0/24       1042/3        -/GE0/0/1 
35
36<R3>dis mpls lsp
37-------------------------------------------------------------------------------
38                 LSP Information: LDP LSP
39-------------------------------------------------------------------------------
40FEC                In/Out Label  In/Out IF                      Vrf Name       
413.3.3.3/32         3/NULL        -/-                                           
4210.0.1.1/32        1037/NULL     -/-                                           
43200.0.0.0/24       3/NULL        -/-                                           
441.1.1.1/32         NULL/1037     -/GE0/0/1                                     
4510.0.0.1/32        NULL/1038     -/GE0/0/1                                     
462.2.2.2/32         NULL/3        -/GE0/0/1                                     
47200.0.2.0/24       NULL/3        -/GE0/0/1                                     
48100.0.0.0/24       NULL/1039     -/GE0/0/1  

感觉上认为, 应该是华为路由器存储了一些无用的消息; 但具体原理不想深究了.

要注意, 3号标签是特殊的隐型标签, 最后一跳路由器和倒数第二跳路由器会彼此绑定该标签, 但是并不会实际压入/弹出该标签, 倒数第二跳路由器在转发前就会将标签弹出.

MPLS实验LDP与LSP建立

在链路R2-R3之间抓取报文. 进入R3的G0/0/1端口执行shutdown, 等待充分时间后再undo shutdown, 随后观察截取的报文.

undo后可以观察到, 200.0.1.1200.0.1.2还是会周期的发送ldp hello, 但是不会再进一步了, 只有当OSPF协议填充完成后, 才会开始建立TCP连接并开始LDP会话建立过程. 这也是比较奇怪, 按道理哪怕没有OSPF的话R2,R3之间可能也能构成LDP会话.

当OSPF填充完成后, 将建立LDP会话. 这是涉及的LDP消息一览:

首先建立TCP连接, 能看到3次握手.

抓一条hello报文看一下:

可以看到其中还有个一些Optional KLV, 用于指示IPV4地址和声明配置序列号.

随后是双方互相发送Initialization消息, 并发送KeepAlive同意商议的参数.

给出一个实际的初始化消息报文, 可以与上述的理论分析相互映照.

由于一个PDU中可以有多条消息, 因而接收方不仅回复了一条初始化消息, 连带着KeepAlive也一并回复了, 下面是KeepAlive的报文结构:

随后双方均发送Address通告自己所有的端口地址, 该报文也可能和其他LDP消息存在于同一个PDU中:

然后可以看到Label Mapping消息交换映射关系, 这是Label Mapping 报文的大致结构:

事实上最后还是要研究一下DoD的情况, 以及一个个结合报文进一步探讨为什么DoD会比较干净, 但是算了, 留坑有缘相见.

MPLS VPN

传统VPN使用二层或三层的隧道协议, 这里主要关注BGP/MPLS组建的VPN.

VPN由若干Site组成, 一个Site可以同时属于多个VPN. 在MPLS VPN模型中, 有3个组成部分:

  • Custom Edge设备. 用户网络的边缘设备, 有接口与ISP连接, CE感觉不到VPN的存在.

  • Provider Edge设备. 运营商边缘设备, 与用户CE相连. 在MPLS网络中, 对VPN的处理全部发生在PE上.

  • Provider路由器. 运营商骨干路由器, 不与CE相连, PR需要支持MPLS.

再介绍一些MPLS VPN的相关属性:

  • VPN-Instance. PE负责维护VPN-Instance与VPN的关联关系, 其中包含标签转发表, IP路由表, 绑定的接口以及其他管理信息. 实际网络中每一个Site对应一个单独的VPN-Instance.

  • VPN-IPv4. PE之间使用BGP来发布VPN路由, 使用新的地址簇VPN-IPv4地址: 一共有12个字节, 开始8个字节路由分辨符(Route Distinguisher, RD), 再跟4个字节的IPv4地址. 服务商可以独立分配RD, 但是要把它们的AS也作为RD的一部分以保证其全局唯一.

  • VPN Target. 该属性标识了可以使用该路由的站点集合, 与这些Site相连的PE路由器都会接收到具有这种属性的路由. 事实上PE路由器存在2个VPN Target属性的集合, 一个用于附加到从某个Site接收的路由上, 称为Export Targets; 另一个用于决定哪些路由可以引入到此Site的路由表, 称为Import Targets

BGP/MPLS VPN实验原理

BGP/MPLS VPN的主要原理是利用BGP在骨干网传播VPN的私网路由信息, 再用MPLS转发VPN业务流.

VRF(Virtual routing and forwarding, 虚拟路由转发)

咕了.

考试

上面的组网配置成功后就有60分了…

第一个20分是在r1-r3之间截获报文, 给出一条pim bootstrap的报文, 说明rp信息发布过程.. 送

第二个20分写出禁止rpt向spt切换的命令… 也算送… 但是它要求画出此SPT和RPT… 我不知道咋理解, 直接把禁止切换前的SPT和禁止切换后的RPT全部展示了. SPT很好画, 比较坑的是禁止切换后的SPT+RPT… 如果我没理解错其结构与此前的SPT完全一致.

正常来说, 如果通过spt+rpt的pim-sm路由方式, PCA->PCB的报文应该先从PCA发往R1再到R3, R3再通过PCB汇报上来的RPT进行转发. 不过由于OSPF cost的设置, 可以看到PCB到R3的最短路径是从S1->R2->R1->R3的… 感觉稍微有点坑, 电脑果然比我聪明.. 最开始一直没看出来是这样还以为自己配错了…

但是随之而来有个问题, PCA通过SPT发往R3和R3发往PCB共享了一条链路(R1-R3), 它会怎么处理?? 我不知道, 只能如实写在答卷纸上我的猜测: 由于有一条链路重复, 所以pim会自动让报文从R1不用再经过R3, 直接向PCB发送…

下面展示一下切换前和切换后6台路由器的pim routing-table, 可以看到禁止切换后, 不与SPT相关的四台设备(R2, S1, S2, R4)的SPT标志均已消失, 可能可以认为这是成功配置的一个信号.

未使用spt-switch-threhold inifity之前, 自动切换到SPT, 路由表如下:

使用指令后(在答卷上我写的是只要在接收端DR处设置即可, 但事实上当时以为自己不知道那里配错了因为拓扑结构没有变化, 所以在所有设备上都启用了该指令… emmm不过应该是没有影响的 下面是所有都启用了该指令后的路由表截图)

这一小步坑了1个小时.. 不过考卷总体感觉非常简单… 前面95%的内容1h就能完成, 最后一个地方稍微有一点坑.

嗨! 这里是 rqdmap 的个人博客, 我正关注 GNU/Linux 桌面系统, Linux 内核, 后端开发, Python, Rust 以及一切有趣的计算机技术! 希望我的内容能对你有所帮助~
如果你遇到了任何问题, 包括但不限于: 博客内容说明不清楚或错误; 样式版面混乱等问题, 请通过邮箱 rqdmap@gmail.com 联系我!
修改记录:
  • 2023-05-29 23:05:14大幅重构了python脚本的目录结构,实现了若干操作博客内容、sqlite的助手函数;修改原本的文本数 据库(ok)为sqlite数据库,通过嵌入front-matter的page_id将源文件与网页文件相关联
  • 2023-05-08 21:44:36博客架构修改升级
  • 2023-01-14 01:51:41更新了复杂组网, 修改了前几个网络实验的标题
  • 2022-12-19 13:09:12完结了网络实验的相关内容
网络实验(MPLS基础与考试)