«

HCIP MPLS L3VPN

myluzh 发布于 阅读:8 Huawei


0x00 拓扑

先记住一句话:

VPN实例 = 一张独立的路由表
RD = 让这张路由表里的路由在运营商骨干网里不重名
RT = 控制哪些VPN实例之间互相收发路由

用 5 台路由器:

CE1 ---- PE1 ---- P ---- PE2 ---- CE2

含义:

CE1:客户侧设备,模拟 172.24.80.0/20 在它后面
PE1:运营商 SR/PE,配置 VPN 实例、RD、RT
P:运营商骨干设备,只跑 MPLS,不管 VPN
PE2:另一个运营商 PE
CE2:另一个客户站点

0x01 地址规划

核心网:

PE1 LoopBack0:1.1.1.1/32
P   LoopBack0:2.2.2.2/32
PE2 LoopBack0:3.3.3.3/32

PE1 - P:10.1.12.0/24
PE1:10.1.12.1
P:  10.1.12.2

P - PE2:10.1.23.0/24
P:  10.1.23.2
PE2:10.1.23.3

VPN 业务侧:

CE1 - PE1:
CE1:43.251.249.1/30
PE1:43.251.249.2/30

CE1 后面的业务网段:
172.24.80.0/20

CE2 - PE2:
CE2:10.10.20.1/30
PE2:10.10.20.2/30

CE2 后面的业务网段:
10.180.0.0/18(客户摄像头网段)

你的割接单里这一段就对应 PE1 到 CE1:

PE/SR地址:43.251.249.2/30
客户侧下一跳:43.251.249.1
静态路由目的:172.24.80.0/20

0x02 第一步:所有设备配接口和 OSPF

先把三台核心设备(PE1、P、PE2)的基础接口和 OSPF 搞通,确保 LoopBack 互相能 ping 通。

PE1

system-view
sysname PE1

interface LoopBack0
 ip address 1.1.1.1 255.255.255.255

interface GigabitEthernet0/0/1
 ip address 10.1.12.1 255.255.255.0

ospf 1
 area 0
  network 1.1.1.1 0.0.0.0
  network 10.1.12.0 0.0.0.255

P

system-view
sysname P

interface LoopBack0
 ip address 2.2.2.2 255.255.255.255

interface GigabitEthernet0/0/0
 ip address 10.1.12.2 255.255.255.0

interface GigabitEthernet0/0/1
 ip address 10.1.23.2 255.255.255.0

ospf 1
 area 0
  network 2.2.2.2 0.0.0.0
  network 10.1.12.0 0.0.0.255
  network 10.1.23.0 0.0.0.255

PE2

system-view
sysname PE2

interface LoopBack0
 ip address 3.3.3.3 255.255.255.255

interface GigabitEthernet0/0/0
 ip address 10.1.23.3 255.255.255.0

ospf 1
 area 0
  network 3.3.3.3 0.0.0.0
  network 10.1.23.0 0.0.0.255

验证 OSPF

在任意一台设备上:

display ospf peer

应该能看到邻居关系建立。然后在 P 上 ping 测试:

ping 1.1.1.1
ping 3.3.3.3

两边的 LoopBack 都能 ping 通,说明 OSPF 没问题,再进行下一步。

0x03 第二步:所有设备配 MPLS/LDP

OSPF 通了之后,在核心网所有设备上启用 MPLS 和 LDP。

PE1

mpls lsr-id 1.1.1.1
mpls
mpls ldp

interface GigabitEthernet0/0/1
 mpls
 mpls ldp

P

mpls lsr-id 2.2.2.2
mpls
mpls ldp

interface GigabitEthernet0/0/0
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 mpls
 mpls ldp

PE2

mpls lsr-id 3.3.3.3
mpls
mpls ldp

interface GigabitEthernet0/0/0
 mpls
 mpls ldp

验证 MPLS/LDP

display mpls ldp session

应该能看到 LDP 会话状态为 Operational。以 P 为例,应该看到两条会话:

 PeerID             Status      LAM  SsnRole  SsnAge      KASent/Rcv
 ------------------------------------------------------------------------------
 1.1.1.1:0          Operational DU   Active   0000:00:09  40/40
 3.3.3.3:0          Operational DU   Passive  0000:00:06  28/28
 ------------------------------------------------------------------------------
 TOTAL: 2 session(s) Found.

这一步验证了什么:

1. LDP 邻居建立成功(PE1-P、P-PE2 各一对)
2. 每对邻居之间在周期性发送 KeepAlive(KASent/Rcv 持续增长)
3. 标签分发正常(DU 模式 = Downstream Unsolicited,华为默认)
4. MPLS 标签交换通道(LSP)已就绪,后续 VPN 报文可以通过标签转发穿越骨干网

简单说:OSPF 保证路由可达,LDP 保证有标签可以转发。这两步都通了,核心网的 MPLS 底层就绑好了,后面配 VPN 才能正常工作。

0x04 第三步:PE 上配 VPN 实例、绑定接口、静态路由

MPLS 标签交换通道就绪后,在两台 PE 上创建 VPN 实例并绑定客户侧接口。

PE1

创建 VPN 实例:

ip vpn-instance SX-FIRE-VPN
 ipv4-family
  route-distinguisher 32:57513
  vpn-target 64862:57513 export-extcommunity
  vpn-target 64862:57513 import-extcommunity

绑定接口并配 IP(注意:ip binding vpn-instance 会清掉接口原有 IP,所以先绑定再配 IP):

interface GigabitEthernet0/0/0
 ip binding vpn-instance SX-FIRE-VPN
 ip address 43.251.249.2 255.255.255.252

配置 VPN 内静态路由:

ip route-static vpn-instance SX-FIRE-VPN 172.24.80.0 255.255.240.0 43.251.249.1

PE2

VPN 实例,RT 要和 PE1 一样:

ip vpn-instance SX-FIRE-VPN
 ipv4-family
  route-distinguisher 32:57514
  vpn-target 64862:57513 export-extcommunity
  vpn-target 64862:57513 import-extcommunity

这里故意让 PE2 的 RD 不一样:

PE1 RD:32:57513
PE2 RD:32:57514
RT 都是:64862:57513

这样更容易理解:

RD 可以不同,只负责区分路由
RT 要匹配,才负责互通

绑定接口并配 IP(PE2 用 g0/0/1 连 CE2):

interface GigabitEthernet0/0/1
 ip binding vpn-instance SX-FIRE-VPN
 ip address 10.10.20.2 255.255.255.252

静态路由:

ip route-static vpn-instance SX-FIRE-VPN 10.180.0.0 255.255.192.0 10.10.20.1

0x05 第四步:PE 之间配 MP-BGP

VPN 实例和静态路由都配好了,但两个站点的路由还不能互相传递。需要在 PE1 和 PE2 之间建立 MP-BGP 邻居,通过 VPNv4 地址族把 VPN 路由传过去。

PE1

bgp 64862
 peer 3.3.3.3 as-number 64862
 peer 3.3.3.3 connect-interface LoopBack0

 ipv4-family vpnv4
  peer 3.3.3.3 enable

 ipv4-family vpn-instance SX-FIRE-VPN
  import-route static

PE2

bgp 64862
 peer 1.1.1.1 as-number 64862
 peer 1.1.1.1 connect-interface LoopBack0

 ipv4-family vpnv4
  peer 1.1.1.1 enable

 ipv4-family vpn-instance SX-FIRE-VPN
  import-route static

验证 BGP

display bgp vpnv4 all peer

应该能看到 PE1-PE2 之间的 BGP 会话状态为 Established。

0x06 第五步:配 CE 设备

核心网和 PE 都配好了,最后配两台 CE。

CE1

system-view
sysname CE1

interface GigabitEthernet0/0/0
 ip address 43.251.249.1 255.255.255.252

interface LoopBack0
 ip address 172.24.80.1 255.255.240.0

ip route-static 10.180.0.0 255.255.192.0 43.251.249.2

CE2

system-view
sysname CE2

interface GigabitEthernet0/0/0
 ip address 10.10.20.1 255.255.255.252

interface LoopBack0
 ip address 10.180.0.1 255.255.192.0

ip route-static 172.24.80.0 255.255.240.0 10.10.20.2

0x07 最终验证

先看核心网:

display ospf peer
display mpls ldp session
display ip routing-table

PE1 / PE2 看 VPN 实例:

display ip vpn-instance
display ip vpn-instance verbose SX-FIRE-VPN
display ip routing-table vpn-instance SX-FIRE-VPN
display bgp vpnv4 all routing-table

ping 验证(重要)

ping 是验证 VPN 是否通的最直接手段,但要注意源地址和 VPN 实例的选择。

1. PE 上 ping VPN 实例内的地址

PE 的接口绑定了 VPN 实例后,默认 ping 走的是全局路由表(公网),不会查 VPN 实例路由表。所以必须加 -vpn-instance 参数:

ping -vpn-instance SX-FIRE-VPN 43.251.249.1
ping -vpn-instance SX-FIRE-VPN 172.24.80.1

含义:告诉设备用 SX-FIRE-VPN 这张路由表去 ping,而不是用公网路由表。

2. CE 上 ping 对端 CE(跨 MPLS 骨干网)

CE1 直接 ping CE2 的 loopback:

ping 10.180.0.1

注意:这条 ping 的源地址是 CE1 的出接口 IP(43.251.249.1),CE2 必须有回 43.251.249.0/30 的路由才能收到回复。如果 CE2 没有这条路由,ping 就会超时。

-a 指定源地址可以绕过这个问题:

ping -a 172.24.80.1 10.180.0.1

含义:用 CE1 的 Loopback0(172.24.80.1)作为源 IP 去 ping。CE2 有 172.24.80.0/20 → 10.10.20.2 的静态路由,回程包能正常回来。

3. 常见 ping 失败原因

ping 不通时按这个顺序排查:

CE 能 ping 通 PE 的 VPN 接口?  → 不通 = PE-CE 之间链路或 VPN 绑定有问题
PE 上 VPN 路由表有对端路由?    → 没有 = BGP 或 RT 配置有问题
PE 上 MPLS LSP 到对端 PE 正常? → 不正常 = LDP 或 OSPF 有问题
CE 用 -a 指定源能 ping 通?     → 能 = CE 缺少对互联地址的回程路由

4. ping 命令速查

CE 上 ping 对端:
  ping 10.180.0.1                          # 默认源=出接口IP
  ping -a 172.24.80.1 10.180.0.1           # 指定源=Loopback0

PE 上 ping VPN 内地址:
  ping -vpn-instance SX-FIRE-VPN 43.251.249.1   # PE→CE 直连验证
  ping -vpn-instance SX-FIRE-VPN 10.180.0.1     # PE→对端CE 验证 MPLS 隧道

PE 上查路由:
  display ip routing-table vpn-instance SX-FIRE-VPN
  display bgp vpnv4 all routing-table

如果 CE1 能 ping 通 CE2 的 10.180.0.1,说明 MPLS L3VPN 基本通了。

0x0A RD 和 RT 再总结

RD:Route Distinguisher,路由区分符
作用:让不同 VPN 里的相同私网路由不冲突
重点:RD 不决定互通关系
RT:Route Target,路由目标
作用:控制 VPN 路由导入和导出
重点:RT 决定哪些站点之间能互相学习路由

一句话:

RD 像路由身份证
RT 像 VPN 群标签

hcip mpls vpn l3vpn


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/huawei/610.html
文章标题:《HCIP MPLS L3VPN