「HUAWEI-ENSP」- 实验学习:SR-MPLS with IGP

实验拓扑

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 冲突处理,并按如下规则进行优选;

  1. 前缀掩码更大者优选;
  2. 前缀更小者优选;
  3. SID 更小者优选;

演示示例

假如现在有如下四条路由(前缀 / 掩码 SID):

  1. 1.1.1.1/32 1
  2. 1.1.1.1/32 2
  3. 2.2.2.2/32 3
  4. 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 视图下配置对应接口的静态邻接标签。