实验拓扑
WIP
- 底层 IP Networking 已配置
- 针对 CX 设备,该环境已执行 undo dcn 命令;
实验需求
- 通过 OSPF 协议,实现 SR 网络;
- 通过 ISIS 协议,实现 SR 网络;
- 在 OSPF、ISIS 中,协议引入彼此路由并观察;
- 配置 SR MPLS TE 显式路径,实现两端设备互通;
实验过程
SR MPLS with OSPF
配置过程:
# --------------------------------------------------------- # CX1 [CX1]mpls lsr-id 1.1.1.1 [CX1]mpls [CX1]segment-routing [CX1]ospf 1 [CX1-ospf-1]opaque-capability enable [CX1-ospf-1]segment-routing mpls [CX1-ospf-1]segment-routing global-block 16000 17000 [CX1]interface LoopBack 0 [CX1-LoopBack0]ospf prefix-sid index 1 # --------------------------------------------------------- # CX2 [CX2]mpls lsr-id 2.2.2.2 [CX2]mpls [CX2]segment-routing [CX2]ospf 1 [CX2-ospf-1]opaque-capability enable [CX2-ospf-1]segment-routing mpls [CX2-ospf-1]segment-routing global-block 26000 27000 [CX2]interface LoopBack 0 [CX2-LoopBack0]ospf prefix-sid index 2 # --------------------------------------------------------- # CX3 - CX5 ...
测试方法:
- CX1 ping CX5 能够成功,抓包能够看到单层 MPLS 标签报文;
问题排查:
- display tunnel-info all
- display segemtn-routing prefix mpls forwarding
- dis ospf lsdb opaque-area originate-router 5.5.5.5 //
- opaque type 4 ⇒ SRGB and SRGB Range
- opaque type 7 ⇒ Prefix SID Index, Node Prefix(Flags: N, Prefix)
- opaque type 8 ⇒ Ajd SID
补充说明:
- [interface] ospf prefix-sid absolute xxxx // 明确指定 SRGB 范围内的标签值,但是该仅为设备特性,实际的路由报文中依旧为偏移值;
- [ospf] segment-routing global-block … // 需要定义,针对华为设备,其无默认值
SR MPLS with ISIS
配置过程:
# -------------------------------------------------------- # CX1 [CX1]mpls lsr-id 1.1.1.1 [CX1]mpls [CX1]segment-routing [CX1]isis 1 [CX1-isis-1]cost-style wide [CX1-isis-1]segment-routing mpls [CX1-isis-1]segment-routing global-block 16000 17000 [CX1]interface LoopBack 0 [CX1-LoopBack0]isis prefix-sid index 1 # -------------------------------------------------------- # CX2 [CX2]mpls lsr-id 2.2.2.2 [CX2]mpls [CX2]segment-routing [CX2]isis 1 [CX2-isis-1]cost-style wide [CX2-isis-1]segment-routing mpls [CX2-isis-1]segment-routing global-block 26000 27000 [CX2]interface LoopBack 0 [CX2-LoopBack0]isis prefix-sid index 2 # -------------------------------------------------------- # CX3-CX5 ....
测试方法:
- CX1 ping -a 1.1.1.1 CX5 能够成功,并且抓包能够看到报文中的 MPLS 标签(报文只有一层标签)
OSPF ⇔ ISIS
WIP 跳过。在实际实践中,通常不会涉及两种协议,所以暂时跳过。若日后涉及,再深入研究。
补充说明:
- Flag.P==1 不进行次末跳弹出。针对外部引入的路由,如果非直连,则 P 置位。避免邻接设备进行次末跳弹出。
- Flag.R==1 外部引入。
已知问题:
- Node Segment ID、Prefix Segment ID 能够引入,但是 Adj Segement ID 无法引入。
SR MPLS TE / 显式路径
注意:该实验开始前,需要在环境中完成 SR MPLS BE 隧道的建立,且通过 SR MPLS BE 能够实现两端互通。
# ----------------------------------------------------------------------------- # 开启 TE [CX5]mpls [CX5-mpls]mpls te [CX5]ospf 1 [CX5-ospf-1]area 0 [CX5-ospf-1-area-0.0.0.0]mpls-te enable [CX5]interface Ethernet 1/0/0 [CX5-Ethernet1/0/0]mpls [CX5-Ethernet1/0/0]mpls te # ----------------------------------------------------------------------------- # 建立路径 [CX5]explicit-path Path0 [CX5-explicit-path-Path0]next sid label 16004 type prefix [CX5-explicit-path-Path0]next sid label 16003 type prefix [CX5-explicit-path-Path0]next sid label 16002 type prefix [CX5-explicit-path-Path0]next sid label 16001 type prefix [CX5]interface Tunnel 0 [CX5-Tunnel0]tunnel-protocol mpls te [CX5-Tunnel0]ip address unnumbered interface LoopBack 0 [CX5-Tunnel0]destination 1.1.1.1 [CX5-Tunnel0]mpls te signal-protocol segment-routing [CX5-Tunnel0]mpls te tunnel-id 1 [CX5-Tunnel0]mpls te path explicit-path Path0 # ----------------------------------------------------------------------------- # 导入流量 [CX5]ip route-static 1.1.1.1 32 Tunnel 0 preference 9
测试方法:
- [CX5] ping CX1 1.1.1.1 能够成功,
- 且抓包能够看到多层 MPLS 标签;
排查方法:
- display mpls te tunnel path
- tracert lsp seg-rt te tunnel
- dispaly seg-rt
- display tunnel-info all
补充说明:
- 单向 TE 隧道?也有可能是我们在出口位置抓包,所有回报没有标签
- 针对显式路径,不需要在接口开启 MPLS TE 特性;
SR MPLS TE / CSPF / 头端算路
注意:该实验开始前,需要在环境中完成 SR MPLS BE 隧道的建立(dispaly tunnel-info all),且通过 SR MPLS BE 能够实现两端互通(ping -a)。
配置过程:
# ----------------------------------------------------------------------------- # Enable MPLS TE # ------------------------------------------------------ # CX1 [CX1]mpls lsr-id 1.1.1.1 [CX1]mpls [CX1-mpls]mpls te [CX1]ospf 1 [CX1-ospf-1]area 0 [CX1-ospf-1-area-0.0.0.0]mpls-te enable [CX1]interface Ethernet 1/0/0 [CX1-Ethernet1/0/0]mpls [CX1-Ethernet1/0/0]mpls te # ------------------------------------------------------ # CX2 CX3 CX4 CX5 CX7 ... # ----------------------------------------------------------------------------- # Tunnel Interface [CX1]interface Tunnel 0 [CX1-Tunnel0]tunnel-protocol mpls te [CX1-Tunnel0]ip address unnumbered interface LoopBack 0 [CX1-Tunnel0]destination 5.5.5.5 [CX1-Tunnel0]mpls te tunnel-id 1 [CX1-Tunnel0]mpls te signal-protocol segment-routing [CX5]interface Tunnel 0 [CX5-Tunnel0]tunnel-protocol mpls te [CX5-Tunnel0]ip address unnumbered interface LoopBack 0 [CX5-Tunnel0]destination 1.1.1.1 [CX5-Tunnel0]mpls te tunnel-id 1 [CX5-Tunnel0]mpls te signal-protocol segment-routing # ----------------------------------------------------------------------------- # Enabel CSPF [CX1]mpls [CX1-mpls]mpls te cspf [CX5]mpls [CX5-mpls]mpls te cspf
测试方法:
- display tunnel-info all 能够看到处于 UP 状态的 srte-lsp 隧道
- display ip interface brief Tunnel 0 处于 Up 状态;
- CX1 ping -a 1.1.1.1 5.5.5.5 能够成功,
- 抓包 PING 报文其使用 CX5 Node Prefix SID 作为标签;
调试方法
- display mpls te cspf tedb all // 检查 Link Count 字段,以确保数量正确;
- 若未配置 mpls lsr-id x.x.x.x 则设备不会发送 MPLS TE 报文;
补充说明:
- 针对头端节点算路,需要在接口上开启 MPLS TE 功能。开启 MPLS TE 特性,抓包能够看到 OSPF 发送 MPLS TE 相关 LSU 报文。
- 该实验未配置流量导入。
SR-MPLS 标签冲突处理原则
SR-MPLS 标签冲突处理原则_hellohiman 的博客-CSDN 博客
标签冲突
在 SR-MPLS 中,由于 Prefix Segment 通过手工配置生成,不同设备上的配置可能发生标签冲突;
标签冲突分为:
- 前缀冲突,指相同的前缀关联了两个不同的 SID,
- SID 冲突,是指相同的 SID 关联到不同的前缀;
冲突处理
标签冲突处理原则:当冲突产生后,优先处理前缀冲突,之后根据处理结果再进行 SID 冲突处理,并按如下规则进行优选;
- 前缀掩码更大者优选;
- 前缀更小者优选;
- SID 更小者优选;
演示示例
假如现在有如下四条路由(前缀 / 掩码 SID):
- 1.1.1.1/32 1
- 1.1.1.1/32 2
- 2.2.2.2/32 3
- 3.3.3.3/32 1
先进行前缀冲突处理,a 和 b 为前缀冲突,根据标签冲突处理原则,SID(a) < SID(b),排除 b
然后,在上步处理结果的基础上,进行 SID 冲突处理,a 和 d 为 SID 冲突,根据标签冲突处理原则,Prefix(a) < Prefix(d),排除 d
所以,最终的结果为 a c
补充说明
接口使能 MPLS 特性
SR MPLS 直接使用 MPLS 转发平面,因而需要使能 MPLS 特性。
但是,当满足如下几个条件之一时,接口下 MPLS 能力自动使能(而无需人工配置):
- 接口上配置使能 MPLS。
- IGP 使能 Segment Routing,接口下使能 IGP。
- Segment Routing 视图下配置对应接口的静态邻接标签。