使用VLL技术实现多家合作伙伴复用同一条链路做两端数据全透传

公司A当前租用一条10G跨市运营商光缆,自身业务只用到一半流量,为节省成本,寻求多家合作伙伴共用链路以达到财务需求

合作伙伴需求接入链路全透传,即光缆两端接入点端口逻辑直连

当前有三种方案可以实现上述需求

Vxlan

VLL

VPLS

该篇仅分析使用VLL来实现,Vxlan和VPLS在之后的文档中分析

首先来介绍下VLL技术

  VLL基本架构

AC(Attachment Circuit)接入电路

  公司A到合作伙伴之间的电路,一般是同机房光纤直连,或者传输线路

VC(Virtual Circuit)虚电路

  公司A两端PE间建立的单向虚拟连接,可以使用LDP做为信令或者手动配置

PW(Pseudo Wire)伪线

  双线VC组成一条PW,承载合作伙伴数据

Tunnel隧道

  用来承载PW,两端PE间的隧道,可以是lsp,GRE隧道等

VLL分类

CCC

  CCC方式一般用于本地连接,绑定PE两个端口为一组CCC端口,用于两个本地站点数据交互

martini

  martini方式用于异地站点间数据交互,使用LDP信令来用于VC标签交换

SVC

  SVC方式同martini控制层面与数据层面,只是不使用LDP做为VC标签交换,使用手动分配VC标签,类似于mpls手动隧道于LDP隧道的区别

VLL控制平面

  PE-PE间使用mpls ldp隧道,mpls ldp不在介绍,可见另一篇文档,PE-PE对每一组合作伙伴用户端口分配相同L2VC-ID 同时手动或者使用LDP分配VC标签,PE1收到PE2分发的关于CE1 的VC标签后对比两端L2VC-ID是否相同,如果相同就建立映射关系,建立单向VC

VLL数据平面

  PE收到CE的数据后打上对端PE分配的VC标签,查找映射表后在压入公网标签,数据包在mpls链路上传输时依靠公网标签,到达对端PE后根据VC标签转发至相应端口,下文抓包分析

配置举例,使用martini方式建立VLL举例

#ospf部分略

#mpls部分

PE1#
mpls lsr-id 1.1.1.1
mpls
mpls ldp
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0
 mpls
 mpls ldp

#P
mpls lsr-id 2.2.2.2
mpls
mpls ldp
interface GigabitEthernet0/0/0
 ip address 12.1.1.2 255.255.255.0
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 ip address 23.1.1.2 255.255.255.0
 mpls
 mpls ldp

#PE2
mpls lsr-id 3.3.3.3
mpls
mpls ldp
interface GigabitEthernet0/0/1
 ip address 23.1.1.3 255.255.255.0           
 mpls
 mpls ldp


#VLL部分
#PE1
mpls l2vpn
mpls ldp remote-peer 3.3.3.3
 remote-ip 3.3.3.3
interface GigabitEthernet0/0/3
 mpls l2vc 3.3.3.3 101

#PE2
mpls l2vpn
mpls ldp remote-peer 1.1.1.1
 remote-ip 1.1.1.1
interface GigabitEthernet0/0/3
 mpls l2vc 1.1.1.1 101

PE1上查看MPLS LDP状态

查看VLL状态

可以看到分配的VC label 是1026

PE2上查看PE1对应的公网标签为1025

CE2测试pingCE1

抓包分析

抓包可以看到CE2—CE1的数据经过PE2封装后压入MPLS隧道外层标签是1025,内层标签是1026

再转P向PE1转发的数据包

可以看到由于mpls的php(次末跳弹出)机制,数据包到达PE1时只有一层VC标签1026,PE1根据VC标签把数据转发至相应端口

但现网中往往中间的P设备并不支持mpls或者不归我们管理, 此时可以使用GRE隧道来承载PW

#区别使用MPLS承载配置如下
interface Tunnel0/0/0
 ip address 192.168.1.1 255.255.255.0
 tunnel-protocol gre
 source 1.1.1.1
 destination 3.3.3.3

tunnel-policy t1
 tunnel select-seq gre load-balance-number 1

interface GigabitEthernet0/0/3
 mpls l2vc 3.3.3.3 101 tunnel-policy t1

抓包观察

 可以看到在VC标签外层包裹一层GRE,实际使用中需要根据业务类型来调整MTU大小,否则会极大的影响传输效率

以上就是VLL的整个转发过程,VLL有个缺陷是只能有两个站点间做数据全透传,不支持多个站点,而VPLS支持多个站点间二层互通,后续继续分享VPLS实现方式

Leave a Reply

Your email address will not be published. Required fields are marked *

X