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地址