注:本章节实验使用翼航仿真平台实现,私信作者即可体验使用。
EVPN VPLS是指利用EVPN E-LAN模型来传输多点到多点的VPLS业务。EVPN VPLS over SRv6 BE是指利用公网的SRv6 BE路径承载EVPN E-LAN私网数据。
实验背景:R1~R6之间使用ISIS作为IGP协议,R1和R6作为PE设备建立EVPN IBGP邻居关系。
实验需求:R7与R8之间的业务能够实现互通,PE之间通过建立双向SRv6 BE来承载E-LAN业务。
控制层分析(R6->R1)
第一步:R1~R6配置设备和接口的ISIS协议(略)
第二步:R1和R6配置Locator并在ISIS下发布
以R1的配置为示例,R6的配置类似,不再赘述
//分别为已知单播流量、BUM流量配置Locator
[R1]segment-routing ipv6
[R1-segment-routing-ipv6]locator R1_UNI ipv6-prefix A1:100:: 64 static 32
[R1-segment-routing-ipv6]locator R1_BUM ipv6-prefix A1:200:: 64 static 32 args 16 // 为BUM流量单独分配一段Locator,DT2M类型的Locator必须指定args长度
[R1]isis
[R1-isis-1]segment-routing ipv6 locator R1_UNI
[R1-isis-1]segment-routing ipv6 locator R1_BUM
第三步:R1与R6建立EVPN IBGP邻居关系
以R1的配置为示例,R6的配置类似,不再赘述
[R1]evpn source-address 1.1.1.1//用于建立EVPN Type 3路由
[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 6::6 as-number 100
[R1-bgp]peer 6::6 connect-interface LoopBack 0
[R1-bgp]l2vpn-family evpn
[R1-bgp-af-evpn]peer 6::6 enable
[R1-bgp-af-evpn]peer 6::6 advertise encap-type srv6
第四步:配置EVPN实例、BD和接口
以R6的配置为示例,R1的配置类似,不再赘述
1)创建EVPN实例
[R6]evpn vpn-instance vpn.a bd-mode //配置BD模式的EVPN实例
[R6-evpn-instance-vpn.a]route-distinguisher 100:2
[R6-evpn-instance-vpn.a]vpn-target 1:1 both
2)创建BD并绑定EVPN实例
[R6]bridge-domain 10
[R6-bd10]evpn binding vpn-instance vpn.a //BD模式的EVPN实例只能与BD绑定,不能与接口绑定
3)配置接口
[R6]interface GigabitEthernet 3/0/2.10 mode l2 //创建二层子接口
[R6-GigabitEthernet3/0/2.10]encapsulation dot1q vid 10 //只接收dot1q类型且vid为10的报文
[R6-GigabitEthernet3/0/2.10]rewrite pop single //对接收的报文进行剥除vlan tag操作
[R6-GigabitEthernet3/0/2.10]bridge-domain 10 //将二层子接口加入BD,允许报文通过广播域BD转发
第五步:对EVPN实例分配SID并引流
以R6的配置为示例,R1的配置类似,不再赘述
[R6]evpn vpn-instance vpn.a bd-mode
[R6-evpn-instance-vpn.a]segment-routing ipv6 locator R6_BUM unicast-locator R6_UNI //这里必须先配置BUM的Locator,再配置单播的Locator
[R6-evpn-instance-vpn.a]segment-routing ipv6 best-effort
[R1-evpn-instance-vpn.a]segment-routing ipv6 best-effort
//类比EVPN L3EVPN,该指令的功能是迭代隧道和使能EVPN L2VPN,因此R1也需要同步开启,否则R6发送的EVPN路由无法落到R1的EVPN实例表
完成以上配置后,R1和R6之间相互发送Type 3的EVPN路由:
数据分析层(R1->R6)
R7ping测R8,R7发现目标IP与源IP属于同一个网段,判断需要进行二层转发,于是查本地ARP表,发现没有对应的表项,因此发送ARP广播报文。
R1收到该报文后,发现目标MAC是广播地址,于是R1会根据EVPN Type 3路由对该报文进行封装并传递给邻居R6,其中目标地址被封装成R6发送过来的DT2M SID:
在R1的3/0/0抓包验证:
R6收到报文后,根据目标地址查本地SID表,发现该地址对应的动作是DT2M且关联BD 10,于是将IPv6报文头解封装,露出原始ARP广播报文,最后将数据包发送给BD 10关联的子接口进行泛洪:
R6的子接口3/0/2.10为广播包打上vlan 10后传递给R8,R8的ARP表项记录下源MAC和源IP并作ARP响应:
R8发送的ARP响应包是单播报文,实际上,前面R1收到R7的ARP广播报文后,会将源MAC和AC口、BD关联起来,在本地生成MAC转发表项,同时生成EVPN Type 2路由并通过BGP Update报文传递给邻居R6,那么R6就有关于源MAC的DT2U SID了:
因此R8的ARP响应包来到R6后,直接封装IPv6报文头,目的地址是R1发送过来的DT2U SID,在R1的3/0/0口抓包验证:
在R1的3/0/0口抓包全过程如下: