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的过程
当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的LDP Session已经建立,PE1则采用DU方式主动向PE2发送标签映射消息(Label Mapping Message),该消息中包含PW ID和与该PW ID绑定的VC标签,以及接口参数。
PE2收到该标签映射消息后,会检查本地是否也和该VSI进行了关联。如果已经关联并且封装类型等参数也相同,则说明PE1和PE2的VSI都在同一个VPN内。此时PE2将接受标签映射消息,即单向VC1建立成功。同时,PE2向PE1回应自己的标签映射消息,PE1收到PE2的标签映射消息后作同样的检查和处理,最终也成功建立VC2。
利用LDP信令协议拆除PW的过程如图4-5所示:
图4-5 利用LDP信令协议拆除PW的过程
当PE1取消指定PE2为其对端后,PE1向PE2发送标签撤除消息(Label Withdrawal Message),PE2收到该消息后拆除VC1,并向PE1回应标签释放消息(Label Release Message)。
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的过程
当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的BGP Session已经建立,PE1则向PE2发送携带MP-REACH属性的Update消息,包括Site ID和标签块信息。
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的过程
当PE1取消指定PE2为其对端后,PE1向PE2发送携带MP-UNREACH属性的Update消息,PE2收到该消息后释放标签并拆除VC1,同时向PE1回应携带MP-UNREACH属性的Update消息。
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业务的自动部署。
VPLS成员发现阶段
VPLS成员发现是建立PW的第一阶段,使用BGP协议进行自动成员发现,其交互过程和携带的信息如图7-8所示。
图7-8 VPLS成员发现的交互过程图
BGP AD VPLS成员发现的交互过程详细描述如下:
当在PE1设备上完成VPLS-ID、RD、RT、VSI-ID等参数的配置后,PE1会将这些信息封装到BGP的Update消息中作为BGP AD报文,向所有BGP域内的对端PE发送。当PE2在配置完成后也会做相同的处理。
其中,RD默认使用VPLS-ID的值,所以只需要配置VPLS-ID即可。而VSI-ID即本端的LSR-ID,也不需要手动配置。
在PE接收到远端发送过来的Update报文后,会根据配置的RT策略对收到的BGP AD报文进行过滤。对于符合RT策略的BGP AD报文,PE设备会从报文中获取远端VSI的信息,并将这些远端信息与本地配置生成的信息做比较。
当两端设备的VSI中的VPLS-ID相同时,说明两个VSI属于同一个VPLS域,可以协商建立PW,而且这两个VSI之间只能建立一条PW。
当两端设备的VSI中的VPLS-ID不同时,说明这两个VSI分属不同的VPLS域,则不能建立PW。
VPLS PW自动部署阶段
当完成VPLS成员发现后,则通过LDP FEC 129信令协商建立PW,具体交换过程和携带的信息如图7-9所示。
图7-9 VPLS PW自动部署过程图
BGP AD VPLS PW的自动部署过程详细描述如下:
两台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会话拓扑的维护工作量,又能提高系统资源的利用率,减少网络资源的开销,提升网络性能。
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 |
|
MP-iBGP - AD
1 |
|
LDP和MPLS配置
1 |
|
VPLS AC 接入配置
1 |
|
从CE-3 接入PC Ping CE-1 接入PC 抓包
VPLS 连接验证
1 |
|
验证VPLS MAC地址表(有通信才会有地址)
1 |
|
验证BGP、OSPF、LDP邻居
1 |
|
1 |
|
1 |
|
参考文档
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
主要还有大侠唐在飞的大力支持