VPLS技术,公共网络中的一个L2VPN
VPN一共有8种类,三大属性是:MPLS(IP),L2(L3),P2P(P2MP)
MPLS VPN的属性是:MPLS,L3,P2MP
VPLS和EVPN的属性是:MPLS L2 P2MP
L3vpn是两个不在同一网段的网络互通
L2vpn是两个在相同网段的网络互通,二层转发需要直接向对方请求ARP,MAC地址表是怎么形成的。MPLS标签封装两个,一个用于数据传输,一个用于标识是哪个VPN。
VPLS
问题:不能实现负载分担,网络部署困难,不能CE多归属场景
他在MPLS网络上提供了类似LAN的业务,允许用户可以从多个地理位置接入网络,相互访问。
实现VPNLS,需要:创建隧道和PW(中间两个RT值连起来的线,伪线),VSI(虚拟交换实例),绑定PW和AC(接入链路,就是PE连接CE站点的链路)到VSI
VIS
为每一个VPLS单独划分的一个虚拟交换处理单元。VSI用于存放独立的MAC地址标和执行转发,并负责终结PW
绑定PW和AC到VSI
VPSL的报文转发过程
MAC地址的学习是靠数据转发(一台交换机拿到一个数据包对源地址首先进行学习)
底层配置:公网部分OSPF,对应的接口启了LDP
分配内层标签:静态分配标签,LDP跨跳分配,MP-BGP分配
mpls l2vpn //开启mpls l2vpn功能,默认支持3层VPN
mpls ldp remote-peer 名字 //跨跳建立LDP
remote-ip 3.3.3.3
vsi vpn1 static
pwsignal ldp //伪线通过哪种方式产生
vis-id 100 //ID号码
peer 3.3.3.3 //邻居是谁
interface ethernet0/0/0.10 //绑定实例
l2 bingding vsi vpn1
对于SW1
这里需要保留标签,因为接口下面可能会有很多VLAN,具体要让哪个VLAN通的话,可以进行控制。
二层VPN也会有环路,只要有泛洪机制存在,就有可能存在环路
如图,VPLS可能会出现双规归场景,像这种拓扑,因为二层的泛洪机制就有可能会出现环路,因为这不是交换机所以不能使用STP协议,但是也可以学习STP让一个端口进行堵塞,这样就可以消除环路,但是也产生了一个新的问题就是无法形成多路径可能会造成流量堵塞。
收敛速度慢
收敛速度在亚秒级,和数量地址的数量相关,PE1会逐条删除MAC地址
EVPN
颠覆了传统的L2 VPN数据学习MAC地址的方式,引入控制面学习MAC和IP指导数据转发,实现了转控分离,之前都是靠着数据转发一步一步的学习MAC地址,现在是MAC可以变成一种路由,携带的MAC地址进行传递,中间的设备可以学习MAC也可以不学习MAC
解决了典型问题,实现双活,快速收敛等
EVPN就是MP-BGP里面的一种地址族,负责的是控制平面的传递(内层标签的传递),外层转发也灵活多样(MPLS GRE SRV6)。
所以VPN都负责两个部分。其一,隧道头到隧道尾,可以使用LDP,GRE MPLS;其二,传递内层标签,使用EVPN。
EVPN基本术语
ES,用户站点连接到PE的一组链路,使用ESI来标识
EVI,EVPN的实例,每个用户都要有独立的MAC地址表,MAC地址表就由EVI实例产生。
MAC-VRF,PE上属于EVI的MAC地址表
DF,指定转发器,主要用于防止环路
ESI Label
BUM流量,广播,组播,未知单播转发行为是泛洪
ES和ESI
ES代表用户站点连接到PE的一组一台链路,使用ESI来表示
ESI总长度为10个字节,且在全网范围唯一
同意ES双规的两个PE配置的ESI必须相同
EVI和MAC-VRF
EVI代表一个EVPN实例,用于标识一个EVPN客户。
MAC-VRF是PE上属于EVI的MAC地址表
EVPN路由
EVPN就是一个BGP协议,就是使用BGP协议来传递的,BGP中的一个地址族
EVPN定义了一种新的BGP VLRI来承载所有的EVPN路由,被称为EVPN VLRI
EVPN NLRI被MP-BGP携带。MP-BGP支持多协议扩展,定义EVPN的AFI 是25,SAFI是70
发送的顺序是3,4,1,2
EVPN工作流程
底层的MPLS是打通的,一定是有一个外层标签的
BUM流量表
PE上面配置一个2层实例,相当于虚拟出来了一台交换机,会自动产生一个BUM转发表,生成BUM标签,并把这些标签发给其他的设备,这样当其他设备带上了BUM转发表的标签时传递的数据将执行转发行为。使用3类路由(集成多播路由),用3类携带BUM的标签。
上图,PE1为例,他讲发送3类路由发现邻居并分配BUM标签
上图,PE2,PE3和PE4生成BUM流量转发表
过程中所有PE均发送3类路由,最终形成稳定的BUM流量转发表
undo dcn //防止有bug
system-view i //传统配置方式
IGP互通,起了MPLS LDP
evpn sorce-address 1.1.1.1 配置源地址
创建BGP EVPN邻居
bgp 123
peer 3.3.3.3 as-number 123
peer 3.3.3.3 connect-interface l0
l2vpn-family evpn
peer 3.3.3.3 enable
创建EVPN实例(观察3类路由)
evpn vpn-instance vpn1
route-distinguisher 1:1
vpn-target 1:1 export-extcommunity
vpn-tartget 1:1 import-extcommunity
建立起邻居后,现在就可以传BUM流量
dis bgp evpan all routing-table inclusive-route 0:32:3.3.3.3
选举DF
一旦接口绑定实例之后,就会通告4类路由,用于选举DF
4类路由互相介绍我连接了哪一个ESI,如果连接了同一个ESI那么就开始选举DF,此时只有1个PE向CE转发BUM流量就是有DF身份的PE设备。
interface e1/0/9
evpn binding vpn-instance vpn1
esi 0011.2233.4455.6677.8899
就只传了一个ESI ID,用来查看哪台设备和自己连接了一个ES
1类路由
虽然有DF设备可以阻止环路,阻止的过程是只有从DF设备才可以进入BUM流量。但是还有一种场景可能会出现环路,就是从DF设备进入的流量又从非DF设备出来,然后泛洪的时候可能会又从DF设备进入,那么这样也就造成了环路。
设备会通过1类路由根据ES再生成一个标签,用于标识是这个ESI的标签,这个流量再发给DF的时候还会携带ESI标识的标签,这个时候DF会看到ESI标签和自己在一个ES里面,所以就把数据包丢弃。
启动过程阶段(3,4,1)
- 首先,要通过BGP的配置建立EVPN的邻居,启用实例,就有了MAC地址表,天然具备了BUM转发能力,就会产生BUM标签,通过3类路由互相之间两两交互。大家生成了第一张标签BUM流量转发表,记录了要给每个邻居发送BUM流量需要携带的标签
- 选举DF,使用4类路由互相发送,里面携带了ESI,可以看到谁与自己在同一个ES,就可以选举一个DF,之后通过1类路由补充针对ESI的标签,用于防环。
流量转发
CE1上面产生一个ARP请求会往外发送,发给了非DF设备,非DF设备发给了DF设备,又交给了CE2,数据走完了之后,沿途的MAC地址表中就学习到了1111
CE1访问CE2,首先发送ARP请求。PE1接收报文,生成本地MAC表条目。
与此同时,除了数据转发学习MAC,非DF设备收到后会生成MAC地址表进行加工,加上RD值,ESI,MAC和标签把它传递给自己的每一个邻居。往外推的方式是没有标签的,只学习到了MAC地址,只知道转发到哪一个邻居,但是不知道标签该对应多少,只有第二次通过单播报文再发一遍,才能知道去往不同的邻居携带什么样的标签。
转头机制
EVPN支持CE多活接入PE。PE2感知直连CE1,刷新最优的MAC表条目,并生成和通告Type 2路由。
dis bgp evpn all routing-table
集成单播路由,type3(主要是BUM标签)
ES路由,type4(主要是ES编号)
AD路由,type1(记录了ESI编号所对应的标签)
EVPN故障快速收敛
发送一个撤销对应ESI编号的路由全部删除掉。
启动过程
- 配置EVPN的源地址,配置EVPN的peer,创建VPN实例
- 创建完成VPN实例之后,会产生3类路由,带标签,BUM流量标签,互相之间传递BUM流量标签,形成了BUM流量转发表
- 接口绑定到VPN实例,起了ESI ID,产生了4类路由,交互ESI编号选举DF,自动传1类路由(携带标签,最终形成ESI转发表)
- 启动过程结束
报文交互过程(广播报文)
- 假如1.1访问1.2,构建出一个ARP出来,封装源MAC1.1目的MACFF,会交给非DF设备,首先对MAC地址进行学习,地址是个广播地址,执行泛洪行为(封装一个BUM标签),如果给自己这边的DF设备发的时候还会有一个ESI标签。
- 非DF设备学习到了一个MAC信息,将这个MAC地址变成EVPN 2类的路由,将这个MAC信息发给了所有的邻居,3和4学习到后都会做记录(记录去往MAC11对应的设备是PE几),同时也会把信息给PE1,PE1一看ESI我也在这个网络里面,那么就做了个转向。
- PE3与PE4因为有ESI的记录,所以能意识到PE1也能在这个ESI里面。
3类路由里面携带了BUM标签
4类路由里面携带了ESI ID
1类路由里面携带了ESI 的标签
2类路由里面携带了 内层标签,对应的ESI还有MAC地址