H3C 模拟器搭建BGP AD自动发现LDP信令的VPLS组网

本文最后更新于 2024年4月6日 凌晨

简介

本实验使用在H3C HCL上运行搭建,使用AD-BGP方式搭建VPLS。

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

LDP VPLS采用FEC 128 TLV的LDP协议作为信令协议,需要手工配置PW,对设备的性能要求较低;BGP AD VPLS采用BGP协议自动发现VPLS域中的成员,并通过FEC 129 TLV的LDP协议自动建立PW。通常LDP VPLS适合于少量站点的VPLS网络,BGP AD VPLS适合于要求大量PW的VPLS网络。

VPLS系列文章: https://songxwn.com/tags/vpls/

基础理论

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。

VPLS的三种方式 - PW信令协议

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

  • LDP方式的VPLS

  • BGP方式的VPLS

  • BGP AD方式的VPLS

类型 描述 特点 应用场景
LDP方式的VPLS 采用LDP作为信令协议,也称为Martini方式的VPLS。 协议比较简单,对PE设备要求低,不能提供VPN成员自动发现机制,需要手工配置。在增加PE时需要在每个PE上都配置到新PE的PW。在每两个PE之间建立LDP Session,其Session数与PE数的平方成正比。当需要时才对每个PE分配一个标签,标签利用率高。在跨域时,必须保证所有域中配置的VSI都使用同一个VSI ID值空间。 适合用在Site点比较少,不需要或很少跨域的情况,特别是PE不运行BGP的时候。
BGP方式的VPLS 采用BGP作为信令协议,也称为Kompella方式的VPLS。 要求PE设备运行BGP,对PE设备要求高,可以提供VPN成员自动发现机制,用户使用简单。在增加PE时只要PE数没有超过标签块大小就不需要修改原有PE上的配置,只需配置新的PE。利用RR(Route Reflector)降低BGP连接数,从而提高网络的可扩展性。分配一个标签块,对标签有一定浪费。在跨域时,采用VPN-Target识别VPN关系,对跨域的限制较小。 适合用在大型网络的核心层,PE本身运行BGP以及有跨域需求的情况。
BGP AD方式的VPLS 首先通过扩展的BGP UPDATE报文来自动发现VPLS域中的其他成员信息,然后通过LDP FEC 129信令报文来完成本地VSI与远端VSI之间自动协商建立VPLS PW。 通过VPLS成员自动发现和VPLS PW的自动部署:与LDP方式VPLS相比,网络新增站点时配置的工作量少。与BGP方式VPLS相比,不仅节省本地的标签资源,而且能兼容与PWE3的互通。 BGP AD方式VPLS结合了BGP和LDP两种VPLS信令各自的优点。

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。

BGP AD方式的VPLS

介绍

BGP AD VPLS是BGP Auto-Discovery VPLS的简写,也称为BGP自动发现方式的VPLS,是一种自动部署VPLS网络的新技术。

BGP AD VPLS是首先通过扩展的BGP UPDATE报文来自动发现VPLS域中的其他成员信息,然后通过LDP FEC 129信令报文来完成本地VSI与远端VSI之间自动协商建立VPLS PW的过程。此外,BGP AD也支持HVPLS(Hierarchical Virtual Private LAN Service),可以通过关闭水平分割功能,使该对等体在HVPLS网络中属于用户端。

目的

随着VPLS技术的广泛应用,VPLS的组网规模也越来越大,网络部署的配置量也越来越大。为了实现简化网络配置,业务自动部署,降低运营成本的实际需求,引入了BGP AD VPLS的技术。

BGP AD VPLS是结合了Kompella VPLS和Martini VPLS两种类型的VPLS信令的优势而提出来的,利用扩展BGP报文在成员自动发现方面的优势来完成VSI之间的成员发现,再利用LDP FEC 129信令来协商建立PW,完成VPLS PW业务的自动部署。

通过VPLS成员自动发现和VPLS PW的自动部署,减少了部署VPLS网络的配置工作量,实现了业务的自动部署,降低了客户的运营成本。

相关概念

缩略语 英文全称 说明
VPLS ID Virtual Private LAN Service ID 每个VPLS域的标识符。
AGI Attachment Group Identifier 相同VPLS域中VSI实例间用于协商的域标识符。
AII Attachment Individual Identifier 相同VPLS域中VSI实例间用于协商的VSI实例标识符。
SAII Source Attachment Individual Identifier BGP-AD方式VSI中进行PW协商时,携带的源附属ID,即为本端信令协商PEER IP地址。
TAII Target Attachment Individual Identifier BGP-AD方式VSI中进行PW协商时,携带的目的附属ID,即为对端信令协商PEER IP地址。

实现过程

BGP AD VPLS结合了Martini VPLS和Kompella VPLS的优势,通过BGP信令实现VPLS成员的自动发现,不仅减少了配置工作量,而且减少了对标签的浪费。

BGP AD VPLS是通过扩展BGP UPDATE报文,携带VSI成员信息,完成VPLS域中VSI成员之间的自动发现,然后通过LDP FEC 129类型的信令进行协商,完成VSI之间PW的自动建立,实现了VPLS域中VSI成员的自动发现及VPLS PW业务的自动部署。

  1. VPLS成员发现阶段

    VPLS成员发现是建立PW的第一阶段,使用BGP协议进行自动成员发现,其交互过程和携带的信息如图7-8所示。

    图7-8 VPLS成员发现的交互过程图

    BGP AD VPLS成员发现的交互过程详细描述如下:

    1. 当在PE1设备上完成VPLS-ID、RD、RT、VSI-ID等参数的配置后,PE1会将这些信息封装到BGP的Update消息中作为BGP AD报文,向所有BGP域内的对端PE发送。当PE2在配置完成后也会做相同的处理。

      其中,RD默认使用VPLS-ID的值,所以只需要配置VPLS-ID即可。而VSI-ID即本端的LSR-ID,也不需要手动配置。

    2. 在PE接收到远端发送过来的Update报文后,会根据配置的RT策略对收到的BGP AD报文进行过滤。对于符合RT策略的BGP AD报文,PE设备会从报文中获取远端VSI的信息,并将这些远端信息与本地配置生成的信息做比较。

      • 当两端设备的VSI中的VPLS-ID相同时,说明两个VSI属于同一个VPLS域,可以协商建立PW,而且这两个VSI之间只能建立一条PW。

      • 当两端设备的VSI中的VPLS-ID不同时,说明这两个VSI分属不同的VPLS域,则不能建立PW。

  2. VPLS PW自动部署阶段

    当完成VPLS成员发现后,则通过LDP FEC 129信令协商建立PW,具体交换过程和携带的信息如图7-9所示。

    图7-9 VPLS PW自动部署过程图

    BGP AD VPLS PW的自动部署过程详细描述如下:

    1. 两台PE上属于相同VPLS域的VSI根据到远端(BGP AD中的Next Hop)的LDP会话状态相互发起LDP Mapping(FEC 129)信令,其中携带AGI、SAII、TAII和标签等信息。

      BGP AD VPLS在成员发现后,采用主动触发LDP协议创建LDP会话的方式,使LDP能够按照业务的需求来建立会话。当VPLS业务撤销,不再使用该LDP会话时,再主动触发LDP协议拆除LDP会话。这样既能减少LDP会话拓扑的维护工作量,又能提高系统资源的利用率,减少网络资源的开销,提升网络性能。

    2. PE接收到远端的LDP Mapping(FEC 129)信令后,解析获取VPLS-ID、PW Type、MTU、TAII等信息,将这些信息与本地VSI比较,如果协商通过,并且满足建立PW的条件时,创建到对端的PW。

环路避免

在以太网上,为了避免环路,一般的二层网络都要求使能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 AD-VPLS实验拓扑

  • PE1-3 之间配置OSPF Area0 打通底层路由。

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

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

  • 创建VSI配置RD RT,开启BGP AD。

分步配置- 以PE1为例

OSPF 基础路由和骨干接口配置

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
ospf 1
area 0.0.0.0
network 1.1.1.9 0.0.0.0
network 20.1.1.0 0.0.0.255
network 30.1.1.0 0.0.0.255


# 配置ospf并宣告接口。

interface LoopBack0
ip address 1.1.1.9 255.255.255.255
#
interface GigabitEthernet0/0
ip address 20.1.1.1 255.255.255.0
mpls enable
mpls ldp enable
#
interface GigabitEthernet0/1
ip address 30.1.1.1 255.255.255.0
mpls enable
mpls ldp enable

# 配置骨干接口,并开启MPLS和LDP.


MP-iBGP - AD

1
2
3
4
5
6
7
8
9
10
11
bgp 9527
peer 2.2.2.9 as-number 9527
peer 2.2.2.9 connect-interface LoopBack0
peer 3.3.3.9 as-number 9527
peer 3.3.3.9 connect-interface LoopBack0
#
address-family l2vpn
peer 2.2.2.9 enable
peer 3.3.3.9 enable

# 建立BGP开启L2VPN地址族传递

LDP和MPLS配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mpls lsr-id 1.1.1.9
mpls ldp

# 开启全局LDP,配置LDP源地址为 lookback地址
l2vpn enable


# 开启l2vpn全局

vsi songxwn.com
auto-discovery bgp
route-distinguisher 100:1
vpn-target 100:1 export-extcommunity
vpn-target 100:1 import-extcommunity
signaling-protocol ldp
vpls-id 9527:1


# VSI配置,开启BGP AD,配置RD RT,配置信令协议为ldp,配置vpls-id。vpls-id同VPS组网需要相同

VPLS AC 接入配置

1
2
3
4
5
6
7
8
interface GigabitEthernet0/2
xconnect vsi songxwn.com
# 不带VLAN接入
interface Giabitethernet 1/0/1
service-instance 10
encapsulation s-vid 100
xconnect vsi songxwn.com
# 二层子接口接入

从CE-3 接入PC Ping CE-1 接入PC 抓包

VPLS 连接验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
display l2vpn pw verbose
VSI Name: svc
Peer: 2.2.2.9 VPLS ID: 9527:1
Signaling Protocol : LDP
Link ID : 8 PW State : Up
In Label : 917629 Out Label: 917629
MTU : 1500
PW Attributes : Main
VCCV CC : -
VCCV BFD : -
Tunnel Group ID : 0x800000230000000
Tunnel NHLFE IDs : 4
Peer: 3.3.3.9 VPLS ID: 9527:1
Signaling Protocol : LDP
Link ID : 9 PW State : Up
In Label : 917628 Out Label: 917628
MTU : 1500
PW Attributes : Main
VCCV CC : -
VCCV BFD : -
Tunnel Group ID : 0x800000330000001
Tunnel NHLFE IDs : 5

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

1
2
3
4
5
6
7
8

display l2vpn mac-address

MAC Address State VSI Name Link ID/Name Aging
56dc-86bf-0406 Dynamic svc 0 Aging
56dc-8f68-0606 Dynamic svc 9 Aging
--- 2 mac address(es) found ---

验证BGP、OSPF、LDP邻居

1
2
3
4
5
6
7
8
9
10
11
12
show bgp peer l2vpn

BGP local router ID: 1.1.1.9
Local AS number: 9527
Total number of peers: 2 Peers in established state: 2

* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State

2.2.2.9 9527 21 24 0 1 00:16:23 Established
3.3.3.9 9527 19 23 0 1 00:13:32 Established

1
2
3
4
5
6
7
8
9
10
show ospf peer

OSPF Process 1 with Router ID 1.1.1.9
Neighbor Brief Information

Area: 0.0.0.0
Router ID Address Pri Dead-Time State Interface
2.2.2.9 20.1.1.2 1 40 Full/DR GE0/0
3.3.3.9 30.1.1.3 1 31 Full/DR GE0/1

1
2
3
4
5
6
display mpls ldp peer
Total number of peers: 2
Peer LDP ID State Role GR MD5 KA Sent/Rcvd
3.3.3.9:0 Operational Passive Off Off 178/178
2.2.2.9:0 Operational Passive Off Off 178/178

参考文档

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

https://support.huawei.com/enterprise/zh/doc/EDOC1100333866/3120d885

https://www.h3c.com/cn/d_202306/1884427_30005_0.htm#_Toc137577552

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

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


H3C 模拟器搭建BGP AD自动发现LDP信令的VPLS组网
https://songxwn.com/H3c-BGP-AD-LDP_VPLS/
作者
Song
发布于
2024年4月5日
更新于
2024年4月6日
许可协议