Juniper MX搭建BGP信令的MPLS L2 VPLS组网

本文最后更新于 2024年4月4日 中午

简介

本实验使用Juniper vMX 在PNET-LAB上运行搭建,使用BGP信令搭建VPLS。

PS:BGP信令会自动建立VPLS互联,不需要手动指定。

Juniper 系列文章:https://songxwn.com/categories/Juniper/

https://www.juniper.net/documentation/en_US/junos/topics/example/vpls-bgp-configuring.html

基础理论

VPLS称为虚拟专用局域网业务(Virtual Private LAN Service),是公用网络中提供的一种点到多点的L2VPN(Layer 2 Virtual Private Network)业务,使地域上隔离的用户站点能通过MAN/WAN(Metropolitan Area Network/Wide Area Network)相连,并且使各个站点间的连接效果像在一个LAN(Local Area Network)中一样。它是一种基于MPLS(MultiProtocol Label Switching)和以太网的二层VPN技术,也被称为透明局域网业务TLS(Transparent LAN Service)。

VPLS的典型组网如下图所示,处于不同物理位置的用户通过接入不同的PE设备,实现用户之间的互相通信。从用户的角度来看,整个VPLS网络就是一个二层交换的交换机,用户之间就像直接通过LAN互连在一起一样。

VPLS基本传输结构

如下图所示,整个VPLS网络就像一个交换机,它通过MPLS隧道在每个VPN的各个Site之间建立虚链路(PW),并通过PW将用户二层报文在站点间透传。对于PE(Provider Edge)设备,它会在转发报文的同时学习源MAC并建立MAC转发表项,完成MAC地址与用户接入接口(AC接口)和虚链路(PW)的映射关系。

VPLS网络中各组件的概念如下:

名称 全称 概念
AC(Attachment Circuit) 接入电路 用户与服务提供商之间的连接,即连接CE与PE的链路。支持的接口类型仅支持EVC二层子接口。
PW(Pseudo Wire) 伪线 两个PE设备上VSI之间的一条双向虚拟连接。它由一对方向相反的单向的MPLS VC(Virtual Circuit)组成,也称为仿真电路。
VSI(Virtual Switch Instance) 虚拟交换实例 VSI是交换机上为每一个VPLS单独划分的一个虚拟交换处理单元,在每一个VSI中都有独立的一张MAC地址表和转发器,并负责终结PW。
PW Signaling PW信令协议 VPLS实现的基础,用于创建和维护PW。目前,PW信令协议主要有LDP(Label Distribution Protocol)和BGP(Border Gateway Protocol)。
Tunnel 隧道 用于承载PW,一条隧道上可以承载多条PW。隧道是一条本地PE与对端PE之间的直连通道,完成PE之间的数据透明传输,可以是LSP(Label Switched Path)隧道。
Forwarder 转发器 转发器相当于VPLS的转发表。PE收到AC上送的数据帧,由转发器选定转发报文使用的PW。

PW信令协议

PW信令协议主要有LDP和BGP。在信令协议基础上实现的VPLS可以分为以下几种:

  • LDP方式的VPLS

  • BGP方式的VPLS

类型 描述 特点 应用场景
LDP方式的VPLS 采用LDP作为信令协议,也称为Martini方式的VPLS。 协议比较简单,对PE设备要求低,不能提供VPN成员自动发现机制,需要手工配置。 适合用在Site点比较少,不需要或很少跨域的情况,特别是PE不运行BGP的时候。
在增加PE时需要在每个PE上都配置到新PE的PW。
在每两个PE之间建立LDP Session,其Session数与PE数的平方成正比。
当需要时才对每个PE分配一个标签,标签利用率高。
在跨域时,必须保证所有域中配置的VSI都使用同一个VSI ID值空间。
BGP方式的VPLS 采用BGP作为信令协议,也称为Kompella方式的VPLS。 要求PE设备运行BGP,对PE设备要求高,可以提供VPN成员自动发现机制,用户使用简单。 适合用在大型网络的核心层,PE本身运行BGP以及有跨域需求的情况。
在增加PE时只要PE数没有超过标签块大小就不需要修改原有PE上的配置,只需配置新的PE。
利用RR(Route Reflector)降低BGP连接数,从而提高网络的可扩展性。
分配一个标签块,对标签有一定浪费。
在跨域时,采用VPN Target识别VPN关系,对跨域的限制较小。

LDP方式的VPLS

介绍

LDP方式的VPLS(Martini方式VPLS)采用静态发现机制实现成员发现,采用LDP作为信令。这种方式通过扩展标准LDP的TLV来携带VPLS的信息,增加了128类型和129类型的FEC TLV。建立PW时的标签发布方式采用DU模式,标签保持方式采用Liberal Label Retention。

实现过程

  • 利用LDP信令协议建立PW的过程如图4-4所示:

    图4-4 利用LDP信令协议建立PW的过程

    1. 当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的LDP Session已经建立,PE1则采用DU方式主动向PE2发送标签映射消息(Label Mapping Message),该消息中包含PW ID和与该PW ID绑定的VC标签,以及接口参数。

    2. PE2收到该标签映射消息后,会检查本地是否也和该VSI进行了关联。如果已经关联并且封装类型等参数也相同,则说明PE1和PE2的VSI都在同一个VPN内。此时PE2将接受标签映射消息,即单向VC1建立成功。同时,PE2向PE1回应自己的标签映射消息,PE1收到PE2的标签映射消息后作同样的检查和处理,最终也成功建立VC2。

  • 利用LDP信令协议拆除PW的过程如图4-5所示:

    图4-5 利用LDP信令协议拆除PW的过程

    1. 当PE1取消指定PE2为其对端后,PE1向PE2发送标签撤除消息(Label Withdrawal Message),PE2收到该消息后拆除VC1,并向PE1回应标签释放消息(Label Release Message)。

    2. PE1收到标签释放消息后,释放标签并拆除VC2。

BGP方式的VPLS

介绍

BGP方式的VPLS(Kompella方式VPLS)采用动态发现机制实现成员发现,用BGP作为信令。这种方式利用BGP的多协议扩展(MP-BGP)传递VPLS成员信息,其中MP-REACH和MP-UNREACH属性传递VPLS的标签信息,接口参数信息在扩展团体属性中传递,VPN成员关系靠RD(Route Distinguish)和VPN-Target来确定,RD和VPN-TARGET都在扩展团体属性中传递。

实现过程

  • 利用BGP信令协议建立PW的过程如图4-6所示:

    图4-6 利用BGP信令协议建立PW的过程

    1. 当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的BGP Session已经建立,PE1则向PE2发送携带MP-REACH属性的Update消息,包括Site ID和标签块信息。

    2. PE2收到该Update消息后,根据自己的Site ID和报文中的标签块,计算出唯一的一个标签值,作为VC标签,此时单向VC1建立成功。同时,PE2根据报文中Site ID和本地标签块,也可以得到PE1的VC标签值,并向PE1发送Update消息,PE1收到PE2的Update消息后作同样的检查和处理,最终也成功建立VC2。

  • 利用BGP信令协议拆除PW的过程如图4-7所示:

    图4-7 利用BGP信令协议拆除PW的过程

    1. 当PE1取消指定PE2为其对端后,PE1向PE2发送携带MP-UNREACH属性的Update消息,PE2收到该消息后释放标签并拆除VC1,同时向PE1回应携带MP-UNREACH属性的Update消息。

    2. PE1收到标签释放消息后,释放标签并拆除VC2。

环路避免

在以太网上,为了避免环路,一般的二层网络都要求使能STP(Spanning Tree Protocol)协议。但是对使用VPLS的用户来说,不会感知到ISP(Internet Service Provider)的网络,因此在私网侧使能STP的时候,不能把ISP的网络考虑进来。因而VPLS中使用PW全连接和水平分割转发来避免环路:

PE之间逻辑上全连接(PW全连接),也就是每个PE必须为每一个VPLS转发实例创建一棵到该实例下的所有其他PE设备的树。

每个PE设备必须支持水平分割转发来避免环路。“水平分割转发”的意思就是从公网侧PW收到的数据包不再转发到这个VSI关联的其它PW上,只能转发到私网侧,从PE收到的报文不转发到其他PE。也就是说要求任意两个PE之间通过直接相连的PW通信,而不能通过第三个PE设备中转报文,这也是PE之间需要建立全连接(PW全连接)的原因。

PE间全连接和水平分割一起保证了VPLS转发的可达性和无环路。当CE到PE有多条连接,或连接到同一个VPLS VPN的不同CE间有连接时,VPLS不能保证没有环路发生,需要使用其他方法来避环。

对于用户来说,在L2VPN私网内运行STP协议是允许的,所有的STP的BPDU(Bridge Protocol Data Unit)报文只是在ISP的网络上透传。

BGP-VPLS实验拓扑

  • MX1-4 之间配置ISIS L2 打通底层路由。

  • MX1-4 之间建立MP-iBGP,开启L2VPN地址族。

  • MX1-4 之间建立LDP,用于公网MPLS隧道建立。

  • 创建VPLS VRF配置RD RT,配置唯一站点关联接入端口。

分步配置- 以MX1为例

ISIS 基础路由和接口配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
set interfaces lo0 unit 0 family inet address 1.1.1.1/32
set interfaces lo0 unit 0 family iso address 49.0001.0000.0000.0001.00
set interfaces lo0 unit 0 family mpls
# 配置Lookback0口IP地址,ISIS的NET地址,开启MPLS。
set interfaces ge-0/0/1 unit 0 family inet address 12.1.1.1/24
set interfaces ge-0/0/1 unit 0 family iso
set interfaces ge-0/0/1 unit 0 family mpls
set interfaces ge-0/0/2 unit 0 family inet address 13.1.1.1/24
set interfaces ge-0/0/2 unit 0 family iso
set interfaces ge-0/0/2 unit 0 family mpls
# 配置两个骨干接口,配置互联IP,开启ISIS ISO、开启MPLS。
set protocols isis interface ge-0/0/1.0 hello-padding disable
set protocols isis interface ge-0/0/1.0 point-to-point
set protocols isis interface ge-0/0/2.0 point-to-point
set protocols isis interface ge-0/0/2.0 hello-padding disable
# ISIS宣告骨干互联接口,配置为P2P网络类型,关闭Hello报文填充。
set protocols isis interface lo0.0 passive
# ISIS宣告lookback 口,并配置为被动接口。
set protocols isis level 2 wide-metrics-only
# 配置ISIS L2 度量值计算为宽。
set protocols isis level 1 disable
# 关闭ISIS L1,只使用L2互联。

MP-iBGP - L2VPN

1
2
3
4
5
6
7
8
9
10
11
12
13
set routing-options autonomous-system 9527 
set routing-options router-id 1.1.1.1
# 配置BGP AS号,全局路由ID
set protocols bgp group songxwn.com local-address 2.2.2.2
# 创建BGP组,并指定为iBGP
set protocols bgp group songxwn.com type internal
# 配置源IP为LookbackIP
set protocols bgp group songxwn.com
set protocols bgp group songxwn.com neighbor 3.3.3.3
set protocols bgp group songxwn.com neighbor 4.4.4.4
# 建立iBGP邻居
set protocols bgp group songxwn.com family l2vpn signaling
# 开启l2vpn地址族,允许传递l2vpn类路由。

LDP和MPLS配置

1
2
3
4
5
6
7
8
set protocols ldp interface ge-0/0/1.0
set protocols ldp interface ge-0/0/2.0
set protocols ldp interface lo0.0
# 骨干互联接口,Lookback口开启LDP
set protocols mpls interface lo0.0
set protocols mpls interface
set protocols mpls interface
# 骨干互联接口,Lookback口开启MPLS

VPLS AC 接入配置

1
2
3
4
5
6
7
8
9
set interfaces ge-0/0/3 vlan-tagging
set interfaces ge-0/0/3 encapsulation vlan-vpls
set interfaces ge-0/0/3 unit 0 encapsulation vlan-vpls
set interfaces ge-0/0/3 unit 0 vlan-id 600
set interfaces ge-0/0/3 unit 0 family vpls
# 带VLAN接入,带VLAN传输,发送到对端也会带VLAN。
set interfaces ge-0/0/4 encapsulation ethernet-vpls
set interfaces ge-0/0/4 unit 0 family vpls
# 不带VLAN接入

VPLS 路由实例配置

1
2
3
4
5
6
7
8
9
10
11
12
set routing-instances songxwn.com instance-type vpls
set routing-instances songxwn.com
set routing-instances songxwn.com interface ge-0/0/3.0

set routing-instances songxwn.com no-tunnel-services
set routing-instances songxwn.com route-distinguisher 192.168.0.1:9527
set routing-instances songxwn.com vrf-target target:9527:9527
set routing-instances songxwn.com protocols vpls no-tunnel-services
set routing-instances songxwn.com protocols vpls site MX1 site-identifier 1
set routing-instances songxwn.com protocols vpls site MX1 interface ge-0/0/3.0
set routing-instances songxwn.com protocols vpls site

  • RD - 帮助 BGP 区分 可能相同的网络层可达性信息 (NLRI) 从不同 VPLS 实例接收的消息。每个VPLS路由实例 在 PE 路由器上配置的必须具有唯一的路由区分器。

  • RT - 定义哪个路由是 VPLS 的一部分。 唯一的路由目标有助于区分不同的 VPLS 服务在同一路由器上。

  • site - 提供 VPLS 站点的唯一名称,全局唯一。

  • site-identifier - 提供唯一的数字标识符 对于 VPLS 站点,全局唯一。

PS:no-tunnel-services 参考 https://www.juniper.net/documentation/cn/zh/software/junos/vpn-l2/topics/task/vpls-configuring-without-tunnel-services-pic.html

https://www.juniper.net/documentation/en_US/junos/topics/concept/vpls-security-routing-instance-understanding.html

MX1 配置一览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# MX1 配置
set interfaces ge-0/0/3 vlan-tagging
set interfaces ge-0/0/3 encapsulation vlan-vpls
set interfaces ge-0/0/3 unit 0 encapsulation vlan-vpls
set interfaces ge-0/0/3 unit 0 vlan-id 600
set interfaces ge-0/0/3 unit 0 family vpls
set interfaces ge-0/0/4 encapsulation ethernet-vpls
set interfaces ge-0/0/4 unit 0 family vpls
## AC 接入端口配置
set interfaces ge-0/0/1 unit 0 family inet address 12.1.1.1/24
set interfaces ge-0/0/1 unit 0 family iso
set interfaces ge-0/0/1 unit 0 family mpls
set interfaces ge-0/0/2 unit 0 family inet address 13.1.1.1/24
set interfaces ge-0/0/2 unit 0 family iso
set interfaces ge-0/0/2 unit 0 family mpls
## 骨干互联接口配置
set interfaces lo0 unit 0 family inet address 1.1.1.1/32
set interfaces lo0 unit 0 family iso address 49.0001.0000.0000.0001.00
set interfaces lo0 unit 0 family mpls
## Lookback0口配置
set routing-instances songxwn.com instance-type vpls
set routing-instances songxwn.com protocols vpls site MX1 interface ge-0/0/4.0
set routing-instances songxwn.com protocols vpls site MX1 site-identifier 1
set routing-instances songxwn.com protocols vpls no-tunnel-services
set routing-instances songxwn.com interface ge-0/0/4.0
set routing-instances songxwn.com route-distinguisher 192.168.0.1:9527
set routing-instances songxwn.com vrf-target target:9527:9527
## VPLS 路由实例配置
set protocols isis interface ge-0/0/1.0 hello-padding disable
set protocols isis interface ge-0/0/1.0 point-to-point
set protocols isis interface ge-0/0/2.0 point-to-point
set protocols isis interface ge-0/0/2.0 hello-padding disable
set protocols isis interface lo0.0 passive
set protocols isis level 2 wide-metrics-only
set protocols isis level 1 disable
## ISIS互联配置
set protocols ldp interface ge-0/0/1.0
set protocols ldp interface ge-0/0/2.0
set protocols ldp interface lo0.0
## LDP配置
set protocols mpls interface lo0.0
set protocols mpls interface ge-0/0/1.0
set protocols mpls interface ge-0/0/2.0
## MPLS配置
set routing-options autonomous-system 9527
# 配置BGP AS号
set protocols bgp group songxwn.com type internal
# 创建BGP组,并指定为iBGP
set protocols bgp group songxwn.com local-address 4.4.4.4
set protocols bgp group songxwn.com neighbor 3.3.3.3
set protocols bgp group songxwn.com neighbor 1.1.1.1
set protocols bgp group songxwn.com neighbor 2.2.2.2
#BGP Peer配置
set protocols bgp group songxwn.com family l2vpn signaling
# 开启l2vpn地址族,允许传递l2vpn类路由。

从MX4 接入PC Ping MX1 接入PC 抓包

VPLS 连接验证

1
show vpls connections   

验证VPLS MAC地址表(有通信才会有地址)

1
show vpls mac-table

验证VPLS MPLS转发表

1
show route forwarding-table family mpls

验证BGP、ISIS、LDP邻居

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
show bgp summary 
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 3 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
bgp.l2vpn.0
3 3 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
2.2.2.2 9527 1238 1237 0 0 9:13:27 Establ
bgp.l2vpn.0: 1/1/1/0
songxwn.com.l2vpn.0: 1/1/1/0
3.3.3.3 9527 57 56 0 0 24:07 Establ
bgp.l2vpn.0: 1/1/1/0
songxwn.com.l2vpn.0: 1/1/1/0
4.4.4.4 9527 39 38 0 0 15:55 Establ
bgp.l2vpn.0: 1/1/1/0
songxwn.com.l2vpn.0: 1/1/1/0
1
2
3
4
5
6
7
8
show isis adjacency 
Interface System L State Hold (secs) SNPA
ge-0/0/1.0 MX2 2 Up 23
ge-0/0/2.0 MX3 2 Up 20
show ldp session
Address State Connection Hold time Adv. Mode
2.2.2.2 Operational Open 20 DU
3.3.3.3 Operational Open 29 DU

参考文档

https://support.huawei.com/enterprise/zh/doc/EDOC1100075312/ea751f32

https://www.h3c.com/cn/d_200805/606212_30003_0.htm

https://www.juniper.net/documentation/en_US/junos/topics/example/vpls-bgp-configuring.html

https://www.juniper.net/documentation/cn/zh/software/nce/feature-guide-virtual-private-lan-service/topics/example/vpls-bgp-configuring-detailed-solutions.html

主要还有大侠唐在飞的大力支持


Juniper MX搭建BGP信令的MPLS L2 VPLS组网
https://songxwn.com/Juniper-BGP-VPLS/
作者
Song
发布于
2024年4月4日
更新于
2024年4月4日
许可协议