L2VPN传统结构

本文最后一次修改是在:2016年11月27日0:59:10

L2VPN传统结构
L2VPN传统结构

1、L2VPN

L2VPN分为Point-to-PointMulti-Point两种,一个是点对点,一个是多点接入,这个比较好理解。

同时,Point-to-Point又称为VPWS(Virtual Private Wire Service,虚拟私有专线服务,RFC 4664)。

2、Point-to-Point

(1)Point-to-Point下面的Like-to-LikeAny-to-Any分别指的是:

  • Like-to-Like 指的是两端用户的网络类型是一致的,比如一端是帧中继,那另一端也是帧中继;
  • Any-to-Any 指的是两端用户的网络类型是不一致的,比如一端是以太网,而另一端是帧中继。

或者你也可以理解为配置方式的不同:

  • Like-to-Like 一般的配置方式是:
    xconnect x.x.x.x yy encapsulation mpls
  • Any-to-Any 一般的配置方式是(需要配置伪线类):
    pseudowire-class CLASS_NAME
    encapsulation mpls
    interworking ethernet / ip
    
    int e 1/0
    xconnect x.x.x.x yy pw-class CLASS_NAME

(2)Point-to-Point最下面的 MPLS / AToM IP / L2TPv3 分别指的是:

  • 如果用MPLS实现基于Point-to-Point(点到点接入)的L2VPN,用到的技术叫做AToM(Any Transport over MPLS);
  • 如果用IP实现基于Point-to-Point(点到点接入)的L2VPN,用到的技术叫做L2TPv3。

其他相关文章:

3、Multi-Point

Multi-Point下面又分为VPLS(Virtual Private LAN Service,虚拟私有局域网服务,RFC 4762)和IPLS(Internet Protocol LAN Service,基于IP协议的局域网服务)。

(1)什么叫做LAN Service(局域网服务)?

如下图所示,一家公司有北京总部、广州分部和上海分部,他们均有10.1.0.0/16和10.2.0.0/16两个LAN网段,现在要让总部和各分部之间的这两个LAN网段实现连通。这种连通的方式类似于二层交换机,“二层交换机”(互联网)需要对两个LAN网段做VLAN划分和隔离,在保证同一个LAN网段下的终端设备能够互相连通的同时,不同的LAN网段之间(即10.1.0.0/16和10.2.0.0/16之间)还不能互相访问。

什么叫做LAN Service(局域网服务)?
什么叫做LAN Service(局域网服务)?

(2)VPLS和IPLS同样都是LAN Service(局域网服务),那它们的区别是?

  • 如果您需要用MPLS来实现基于Multi-Point(多点接入)的L2VPN,那么就要使用VPLS;
  • 如果您需要在IP环境下实现基于Multi-Point(多点接入)的L2VPN,那么就要使用IPLS。

(3)VPLS概述:

a. 接下来我们看看,什么是VPLS(Virtual Private LAN Service)?

如下图所示,下面这幅图很好地解释了什么是VPLS:VPLS允许多个本地以太网从不同的用户站点中通过服务提供商(service provider,SP)的网络连接到一起,从而在用户之间模拟一个单一的本地以太网环境。

VPLS 的概述
VPLS 的概述

如上图所示,VPLS相当于在服务提供商的网络中模拟出了一台交换机,这台交换机将Customer A的site 1、site 2和site 3连接到了一起;同时还模拟出了另外的一台交换机,另外这台交换机将Customer B的site 1、site 2和site 3连接到了一起。

b. VPLS的四个组成部分(The Four components that are part of VPLS are as follows):

  1. Attachment Circuit:附接链路
  2. VFI or VSI:虚拟转发实例(可以理解为一台模拟的交换机,类似于MPLS L3VPN中VRF的作用)
  3. Pseudo Wires:伪线
  4. Packet Switched Network(PSN):包交换网络 / 逻辑交换环境
VPLS 的四个组成部分
VPLS 的四个组成部分

c. 举个VPLS的例子:

如下图所示,A、B和C是三台交换机,他们隶属于一家客户;X、Y和Z也是三台交换机,他们隶属于另外一家客户;PE1、PE2和PE3是服务提供商(SP)的三层交换机。

举个VPLS的例子
举个VPLS的例子

如下图所示,现在我们在PE1、PE2和PE3上分别配置一个VFI(虚拟转发实例,即VFI-A、VFI-B和VFI-C),这个虚拟转发实例类似于MPLS L3VPN上的VRF;然后在每两个虚拟转发实例之间建立一条Pseudo Wires(伪线,即PW12、PW13和PW23)。

举个VPLS的例子,建立VFI和伪线
举个VPLS的例子,建立VFI和伪线

如下图所示,最后通过定向的LDP邻居关系,让LDP为每条伪线分配MPLS标签。这样,服务提供商内的VPLS环境就建立完成了,服务提供商内的这个VPLS环境就是PSN(逻辑交换环境)。

举个VPLS的例子,让LDP为伪线分配MPLS标签
举个VPLS的例子,让LDP为伪线分配MPLS标签

如下图所示,客户的交换机(即A、B、C、X、Y和Z)在连接服务提供商的三层交换机(PE1、PE2和PE3)时,可以使用Access口和Trunk口进行连接。当然,QinQ也是可以的。客户的交换机与服务提供商的三层交换机之间的这条线路就叫做Attachment Circuit(附接链路)。

举个VPLS的例子,客户的交换机连接服务提供商的三层交换机可以使用Access、Trunk和QinQ
举个VPLS的例子,客户的交换机连接服务提供商的三层交换机可以使用Access、Trunk和QinQ

最后,A、B和C之间就可以通信了,X、Y和Z之间也可以通信,同时这两家客户之间还是彼此隔离的(数据不会蹿)。

d. VFI的MAC地址学习过程以及水平分割原则:

如下图所示,当一个源IP地址为10.1、目的IP地址为10.2的数据包从交换机A发出时,我们来看一下在VPLS的转发环境中数据包是如何发送的。

VFI的MAC学习过程以及水平分割
VFI的MAC学习过程以及水平分割

如下图所示,VFI-A收到这个数据包后,VFI-A发现它的CAM表中没有这个条目,于是泛洪给VFI-B和VFI-C。VFI-B收到这个泛洪过来的数据包后,会读取这个数据包的源MAC地址,然后会往它的CAM表中记录下这条信息:

  • 来自VLAN10、源MAC地址为MAC-A的PC,是从MPLS标签为1012的PW12伪线上过来的。
VFI的MAC学习过程以及水平分割
VFI的MAC学习过程以及水平分割

看到这里你不禁会想:这跟交换机的工作原理就是一样的嘛,VFI就相当于一台虚拟的交换机,通过对源MAC地址的学习来构建CAM表。其实有一点不一样,在VFI-A、VFI-B和VFI-C之间是没有生成树来防环的。因为BPDU每2秒钟发送一个,这在互联网上是不现实的。那如何来防环呢?通过VFI之间的水平分割原则来实现:

  • VFI从伪线里收到的数据(包括未知单播帧、组播帧和广播帧),是不允许再往伪线里泛洪的,只能往物理口泛洪给客户的交换机。
VFI的MAC学习过程以及水平分割
VFI的MAC学习过程以及水平分割

所以,有了这个水平原则,VFI-B收到VFI-A泛洪过来的数据包后,只会往物理口继续泛洪给客户的交换机,而不能通过伪线泛洪给VFI-C。同理,VFI-C收到VFI-A泛洪过来的数据包后,也只会往物理口继续泛洪给客户的交换机,而不能通过伪线泛洪给VFI-B。

正是因为有了这个水平分割原则, 所以PE和PE之间要做full-mesh(全互联)的连接。

因为目的IP地址为10.2的PC在交换机B上,所以这个数据包最终是转发到目的地了。如下图所示,在回包时,交换机B将数据包转发给VFI-B后,VFI-B查它的CAM表,发现CAM表中已经有MAC-A的MAC地址了,所以查CAM表后就可以直接将数据包转发给VFI-A;VFI-A查它的CAM表,发现CAM表中也已经有MAC-A的MAC地址了,所以查CAM表后数据包最终会转发到交换机A上。

VFI的MAC学习过程以及水平分割
VFI的MAC学习过程以及水平分割

这就是在VPLS的L2VPN转发环境下,整个数据帧的交换过程。

e. VPLS的分层设计(Hierarchical VPLS —— Distributed PE Architecture):

因为有了那个水平分割原则, 所以PE和PE之间要做full-mesh(全互联)的连接。因为full-mesh(全互联)的部署和维护太麻烦了(尤其是当今的互联网这么大,难以部署和维护这一整张网),所以实际提倡在VPLS转发环境上使用分层的设计。

VPLS 的分层设计
VPLS 的分层设计

如上图所示,分层的设计类似于CSC,将PE分为u-PE和n-PE:

  • u-PE,即user-PE,是面向用户的,可以认为是城域网上的PE;
  • n-PE,即network-PE,是面向网络的,可以认为是核心网上的PE。

如下图所示,中间这一块是核心网,中间那三台三层交换机也就是n-PE:

VPLS 的分层设计,n-PE 所在的核心网
VPLS 的分层设计,n-PE 所在的核心网

如下图所示,连接在核心网上的分支就是城域网,u-PE就在城域网上(不过这里需要注意的是,城域网可不是只有一条线这么简单,中间还会有很多很多台设备,这里只是简要地画出来了而已):

VPLS 的分层设计,u-PE 所在的城域网
VPLS 的分层设计,u-PE 所在的城域网

如下图所示,这三个城域网分别代表北京、上海和广州,然后在北京、上海和广州的三个站点之间提供VLPS的L2VPN服务。通过下图你就能很明显地感觉到,在u-PE上无论怎么开启VFI、怎么配置伪线,都不会影响到核心网的部署和运行,核心网只要做接入就好了。通过VPLS的分层设计,就能有效地降低网络的复杂度。

VPLS 的分层设计
VPLS 的分层设计

如果您不了解CSC结构的话,您可能对上图的理解还不是很透彻,我现在说得具体一点:

  • 核心网里的这三台n-PE是已经部署好了一个VPLS L2VPN的,至于城域网上的u-PE怎么部署VPLS L2VPN那就是城域网的事情了;
  • 因为核心网的这一个VPLS L2VPN就能为所有城域网下的VPLS L2VPN提供L2VPN服务,所以核心网的VPLS L2VPN的配置以后不需要再改动,跟城域网的VPLS L2VPN的配置也无任何关联;
  • 所以,在城域网上无论怎么开启VFI、怎么配置伪线,都不会影响到核心网的部署和运行,核心网只要做接入就好了。

现在一定会有人好奇,核心网的三层交换机怎么能够为城域网里的VPLS L2VPN提供L2VPN服务呢?换句话说,核心网是怎么把城域网嵌套进来的呢?

VPLS 分层设计,城域网和核心网之间用的 QinQ
VPLS 分层设计,城域网和核心网之间用的 QinQ

如上图所示,很简单,如果你仔细看的话,你会发现城域网和核心网之间用的是QinQ。

如下图所示,这是在VPLS的分层设计下,使用QinQ进行数据包转发的全过程:

在 VPLS 的分层设计下,使用 QinQ 进行数据包转发的全过程
在 VPLS 的分层设计下,使用 QinQ 进行数据包转发的全过程

当然,在VPLS的分层设计中,除了使用QinQ以外,使用多层的MPLS标签也是可以实现的。

如下图所示,最上方的拓扑是没有做VPLS的分层设计的;中间的拓扑是使用QinQ的VPLS的分层设计;最下方的拓扑是使用多层MPLS标签的VPLS的分层设计。

VPLS 的三种拓扑图
VPLS 的三种拓扑图

总而言之,这种基于多点接入的VPLS L2VPN还是蛮好玩的,可惜模拟器做不了这个实验(GNS3自身是不支持交换机的,只支持路由器;IOU虽然支持交换机,但可惜的是IOU上的交换机的Bug太严重,配置命令也支持得不齐全)。也正是因为做不了这个实验,Ricky才用文字描述了这么多…… 在未来的一段时间内,希望能凑齐这些设备,然后用真机来做一遍这个实验吧,敬请期待哟 ~~

(4)IPLS概述:

IPLS的话,Ricky没研究,但应该与VPLS类似,只是用IP去实现了(比如加个报头之类的)。

4、MPLS L2VPN的Control Plane和Data Plane

在MPLS L2VPN中,

  • Control Plane:维护PE-PE之间的伪线;
  • Data Plane:完成本地封装与伪线封装的转换。

5、MPLS L2VPN上,PE对本地封装和伪线封装的处理

PE上对本地封装和伪线封装的处理
PE上对本地封装和伪线封装的处理

NSP(Native Service Processor,本地服务处理器)会对Like-to-like和Any-to-Any进行不同的伪线封装的处理:

  • Like-to-like:从客户路由器(CE端)接收的数据将会原封不动地转发进伪线;
  • Any-to-Any:从客户路由器(CE端)接收的数据,将擦除伪线规定的数据之外的信息,然后才转发进伪线。

其他相关文章:

这篇文章对你有帮助吗?

相关文章

2条评论

  1. 今天(2016年11月27日0:59:10)Ricky 对本篇文章进行了修改,主要增加了VPLS的相关描述内容。

  2. Seagate

    可以试试eve-ng模拟器,只要有CSR1kv的镜像,可以用bridge-domain来模拟层交换机。另外也可以用xrv来模拟核心三层交换机。

Seagate 发表评论 取消回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据