简单的说,vxlan就是一种封装方式,在本端将二层数据帧封装后,通过ip/ipv6网络传输到目的端,目的端解封装后,再将二层数据帧根据目的mac从相应端口转发出去,被视为l2vpn的一种。
一、VxLAN与其他L2VPN区别
使用gre隧道承载二层数据帧
使用vxlan隧道承载二层数据帧
使用lsp隧道或者TE隧道承载二层数据帧
Label1:使标签报文在骨干网中,从PE1传输到PE2或者从PE2传输到PE1(lsp隧道使用LDP协议根据路由表生成和映射-label1也称为公网标签)
Label2:根据标签找到相应的MAC表,根据MAC表找到出接口,将二层帧转发出去(各个PE生成label后,使用LDP或者bgp将此标签映射给对端PE.当对端PE给本端PE发送数据时,需要在数据帧前打上本端映射给对端的的标签。label2也称为私网标签)
二、VxLAN报文格式
根据原始报文中IP协议和外层IP协议的不同,可以分为以下四种:
IPv4 over IPv4
IPv6 over IPv4
IPv4 over IPv6
IPv6 over IPv6
本文主要介绍IPv4 over IPv4
三、VxLAN隧道的建立方式
host1与host3同属于一个子网,且需要相互通信,R1与R3之间需要建立vxlan隧道;
host2与host4同属于一个子网,且需要相互通信,R2与R3之间需要建立vxlan隧道;
同子网之间通信不需要三层网关,不同子网之间通信需要经过三层网关。
host1访问host2就需经过三层网关的路由转发。
隧道建立的包括:
A、手动建立隧道
B、使用BGP EVPN协议动态建立隧道
根据网关部署的不同方式,网关又分为:
A、静态集中式网关
B、BGP EVPN集中式网关
C、BGP EVPN分布式网关
四、VxLAN网络分类
1、无三层网关(同子网之间相互通信)
只有同子网之间主机通信,无跨子网通信,因此无需部署三层网关。
手动创建vxlan隧道。
2、集中式网关-静态方式
既有同子网之间主机通信,又有跨子网主机之间的通信,网关部署在spine上。
手动创建vxlan隧道。
3、集中式网关-BGP EVPN方式
既有同子网之间主机通信,又有跨子网主机之间的通信,网关部署在spine上。
leaf之间、leaf与spine之间使用BGP EVPN协议动态建立vxlan隧道。
4、分布式网关-BGP EVPN方式
既有同子网之间主机通信,又有跨子网主机之间的通信,网关部署在leaf上。
leaf之间使用BGP EVPN协议动态建立vxlan隧道。leaf与spine之间无需建立隧道,spine仅做普通的路由转发。
五、VxLAN通信原理剖析
1、无三层网关
A、手工方式建立VxLAN隧道
R1:
int nve 1
source 1.1.1.1---------------------------------------隧道的原端
vni 10 head-end peer-list 3.3.3.3-------------隧道的目的端和该隧道承载的VNI
R2:
int nve 1
source 2.2.2.2---------------------------------------隧道的原端
vni 20 head-end peer-list 3.3.3.3-------------隧道的目的端和该隧道承载的VNI
R3:
int nve 1
source 3.3.3.3---------------------------------------隧道的原端
vni 10 head-end peer-list 1.1.1.1-------------隧道的目的端和该隧道承载的VNI
vni 20 head-end peer-list 2.2.2.2-------------隧道的目的端和该隧道承载的VNI
B、原始报文的封装
R1:
Int e0/0/0.10 mode l2 --------------连接VPN-A站点1的子接口,设定接口为二层子接口
encapsulation dot1q vid 10----子接口封装类型(此vid本地有效)
rewrite pop single----------------去掉外层tag
bridge-domain 10---------------绑定BD域
bridge-domain 10
vxlan vni 10
///R2、R3类似
C、MAC地址学习-----换个网络结构来说明(同子网)
R2收到❷报文,不会向R3转发;R3收到❸报文,不会向R2转发,水平分割原则。R2、R3解封报文后,根据VNI绑定的BD域,将报文❶在BD域内(vni 10)广播
R2收到单播报文❶后根据MAC表,封装单播报文❶后生成单播报文❷
根据路由表,将报文❷转发给下一跳
R1收到报文❷后解封装得到报文❶,再根据自己的MAC表,将报文从port1转发出去
最后各R的mac表如下:
D、已知单播报文转发流程-同子网
E、BUM(广播、未知单播、组播)报文转发流程-同子网
接收报文❶的端口绑定了BD域,该域又绑定了VNI,R1根据VNI查找所有可能出口,如有多个出口,则将原始报文复制,封装再分别转发
R2 R3解封装后,在vni对应的BD域内广播发送报文❶
返回报文为单播报文,过程参考前面<<已知单播报文转发流程>>
2、集中式网关
A、手工方式建立VxLAN隧道--------隧道建立过程上一节一样
B、原始报文的封装---------------------报文封装和上一节一样
C、MAC地址学习
同子网MAC地址学习和上一节一样
跨子网,主机只需要学习网关的mac:
在R3上部署集中式网关:
int vbdif 10
Ip add 192.168.10.254 24
Int vbdif 20
Ip add 1921.68.20.254 24
D、已知单播报文转发流程
同子网已知单播报文转发流程与上一节一样。
跨子网已知单播报文转发流程:以host1<----->host2为例
经过ARP学习后,网关R3上的路由表:
host1->host2跨子网访问
返回报文host2->host1
BGP EVPN路由
EVPN通过扩展BGP协议新定义了几种BGPEVPN路由,这些BGPEVPN路由可以用于传递VTEP地址和主机信息,因此EVPN应用于VXLAN网络中,可以把原本依赖数据平面的VTEP发现和主机信息学习从数据平面转移到控制平面。
BGP EVPN路由之type2类型路由
Type2路由—MAC/IP路由在VXLAN控制平面中的作用包括:
1、主机MAC地址通告
要实现同子网主机的二层互访,两端VTEP需要相互学习主机MAC。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机MAC。
2、主机ARP通告
MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在网关设备之间传递主机ARP表项,实现主机ARP通告。此时的MAC/IP路由也称为ARP类型路由。
3、主机IP路由通告
在分布式网关场景中,要实现跨子网主机的三层互访,网关设备需要互相学习主机IP路由。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IP路由。同时MPLS Label2字段必须携带三层VNI。此时的MAC/IP路由也称为IRB(Integrated Routing and Bridge)类型路由。
ARP类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI;IRB类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI+三层VNI。因此,IRB类型路由包含着ARP类型路由,不仅可以用于主机IP路由通告,也能用于主机ARP通告
BGP EVPN路由之type3类型路由
Type3路由—Inclusive Multicast在VXLAN控制平面中的作用包括:
该类型路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。其中,Originating Router's IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。
BGP EVPN路由之type5类型路由
Type5路由—IP前缀路由在VXLAN控制平面中的作用包括:
该类型路由的IP Prefix Length和IP Prefix字段既可以携带主机IP地址,也可以携带网段地址
1.当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。
2.当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络中的主机访问外部网络。
3、集中式网关-BGP EVPN方式
在vxlan中引入BGP EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等,从而动态建立vxlan隧道。
控制平面的流程包括:
A、VxLAN隧道的建立:在两端VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态建立VXLAN隧道(相互发送type3路由---evpn实例)。
B、MAC地址学习:两端VTEP生成BGP EVPN路由并发送给对等体(相互发送type2路由)
数据平面的流程包括:
A、同子网已知单播报文转发
B、同子网BUM报文转发
C、跨子网报文转发
网关集中部署在spine上。
VXLAN隧道建立:
A、leaf和spine建立BGP EVPN对等体
B、BGP EVPN对等体之间相互发送BGP EVPN路由
该路由包含type3路由(含有VTEP IP和VNI)、下一跳属性和export RT属性
C、对等体比较收到路由的 export RT值和自己的import RT值,相同则接收该路由,不相同则丢弃。
D、对等体接收路由后,从中找出VTEP IP,如果到VTEP IP三层可达,即建立隧道。
E、根据VNI值,建立到对端的头端复制,用于BUN报文转发
MAC地址动态学习:
A、leaf生成主机的MAC表项,根据arp表项生成type2路由
B、BGP EVPN对等体之间发送type2路由、下一跳和export RT属性
C、接收端对比export RT属性与本端的import RT属性,相同即接收该路由,否则丢弃
D、获取路由中的MAC地址和vni,在本地构建MAC表项,出接口为Vxlan
数据平面的报文转发流程和上节静态集中式网关报文转发流程一样,可以参考上节。
4、分布式网关-BGP EVPN方式
与集中式网关-BGP EVPN方式不同之处在于:网关部署在leaf上,而spine仅作为路由转发的一个节点。
控制平面的流程包括:
A、VxLAN隧道的建立
B、MAC地址学习
数据平面的流程包括:
A、同子网已知单播报文转发
B、同子网BUM报文转发
C、跨子网报文转发
VXLAN隧道建立:
在两端VTEP之间建立BGP EVPN对等体,然后对等体之间利用BGP EVPN路由来互相传递VNI和VTEP IP地址信息,从而实现动态建立VXLAN隧道
同子网互通-BGP EVPN对等体之间相互发送Inclusive Multicast路由(type3),获取vtep地址和vni,从而建立vxlan隧道。
跨子网互通-网关需要发布下属主机的IP路由,又分以下两种:
a.通过IRB类型路由发布主机IP路由-type2
IRB类型路由只能发布32位主机IP路由
b.通过IP前缀类型路由发布主机IP路由-type5
IP前缀类型路由既能发布32位主机IP路由又能发布网段路由。
MAC地址动态学习:
VTEP根据ARP表项生成BGP EVPN路由并发送给对BGP EVPN等体(相互发送type2路由)
在vxlan环境中,不同子网之间通信,需要分别在两端vtep上创建l3vpn实例,设定RD值和RT值,两端建立BGP对等体,然后相互发生路由(连同三层vni一起发送。在MPLSVPN中是私网标签)
bgp对等体之间约定数据包的封装格式为vxlan(两端建立vxlan隧道)。
最终结果是:本端vtep有对端子网的路由,接受本端主机对对端子网的数据请求后,vxlan封装后发送给路由下一跳。对端收到数据包后,解封装,根据三层vni,查找l3vpn是实例对应的路由表,根据目的ip找mac地址,根据mac表从相应端口转发出去。
跨子网互通VxLAN隧道建立准备工作:
1、leaf上分别创建l3VPN实例,设定RD值和RT值
2、将L3VPN实例和BD域对应的接口(三层接口)绑定
3、设置 BD域对应的接口即三层网关的地址。
4、leaf之间创建IBGP对等体,在l2vpn evpn地址族下使能对等体,使leaf之间能收发BGP evpn路由。
5、 BGP MPLS/IP VPN中,PE对等体之间发送VPNv4路由时,还会发送私网标签。公网为LSP或者TE隧道。在VxLan中,leaf对等体之间相互通告使用VxLAN封装。
6、既然是VxLAN封装,肯定要指定VNI值。该值在第一步VPN实例中手工指定
7、创建EVPN实例,设置RD和RT值,然后将该EVPN实例绑定到BD域上,同时启用水平分割
(VxLAN为点到多点结构,防止环路)
8、在leaf上设能分布式网关功能。
跨子网互通 VXLAN隧道建立方式一:通过IRB类型路由发布主机IP路由(type2)
1、leaf1根据PC1的BD域,找到三层网关绑定的vni,然后根据EVPN实例生成IRB型路由
(IRB类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI+三层VNI。)
2、leaf1向leaf2发送BGP EVPN路由,包括IRB型路由、下一跳、扩展团体属性和Export RT属性。扩展团体属性约定隧道为vxlan封装。
3、leaf2收到路由后,做如下处理:
A、 Export RT值与本端EVPN的import RT值相同,则接收该路由。
提取到其中包含的ARP类型路由,用于实现主机ARP通告。
B、 Export RT值与本端l3VPN的import RT值相同,则接收该路由。
从中提取Host1的主机IP地址、三层VNI,在其路由表中保存Host1的主机IP路由
C、在通过EVPN实例或L3VPN实例接收该路由后,Leaf2通过下一跳属性获取Leaf1的VTEP IP地址,如果该VTEP IP地址是三层路由可达的,则建立一条到Leaf1的VXLAN隧道。
跨子网互通 VXLAN隧道建立方式二:通过IP前缀类型路由发布主机IP路由(type5)
1、leaf1上将Host1的主机IP地址生成直连路由,然后在leaf1 BGP l3vpn实例地址族下,import direct该直连路由.
2、L3VPN实例下Host1的主机IP路由将发布给EVPN实例。然后由EVPN实例生成IP前缀类型路由
3、Leaf1向Leaf2发送BGP EVPN路由,该路由携带本端L3VPN实例的eERT、扩展团体属性、路由下一跳属性以及IP前缀类型路由。其中,扩展团体属性携带的是隧道类型(取值是VXLAN隧道)、本端VTEP的MAC地址;路由下一跳属性携带的是本端的VTEP IP地址。
4、Leaf2收到Leaf1发来的BGP EVPN路由后,进行如下处理:
A、检查该路由携带的eERT,如果与本端L3VPN实例的elRT相同,则接收该路由,否则丢弃该路由。然后,L3VPN实例获取到该路由携带的IP前缀类型路由,从中提取Host1的主机IP地址、三层VNI,在其路由表中保存Host1的主机IP路由
B、在通过L3VPN实例接收该路由后,Leaf2通过下一跳属性获取Leaf1的VTEP IP地址,如果该VTEP IP地址是三层路由可达的,则建立一条到Leaf1的VXLAN隧道。
MAC地址动态学习:
同子网之间的mac地址学习与前面章节一样;
跨子网之间,主机只需要学习网关的mac地址,详见前面章节。
报文转发:
同子网已知单播报文转发和同子网BUM报文转发流程将前面章节。
跨子网报文转发流程:
稍微复杂一点结构,无同子网:
在没有同子网互相通,且公网支持vxlan不支持MPLS的情况下,才使用此方案。
六、实验
1、同子网-手动创建隧道
host1->host3(192.168.10.1->192.168.10.2)
arp请求报文(R1收到host1的arp请求报文)-原始报文
arp应答报文(R1发送给host1的arp应答报文)--原始报文
host1 ping host2 request报文-原始报文
host1 ping host2 replyt报文-原始报文
R1(VTEP1)封装后发送给R3(VTEP2)报文-vxlan报文
将原始的arp请求报文(host1->host2)封装在vxlan报文中。隧道的起点为1.1.1.1,终点为2.2.2.2,vni为10
R1(VTEP1) 收到的arp应答报文,被封装在vxlan报文中。隧道的起点为2.2.2.2,终点为1.1.1.1,vni为10
ping request报文,被封装在vxlan报文中。隧道的起点为1.1.1.1,终点为2.2.2.2,vni为10
ping reply报文,被封装在vxlan报文中。隧道的起点为2.2.2.2,终点为1.1.1.1,vni为10
R1(VTEP1)BD域的MAC表
host1arp表
以上就是同子网MAC地址学习和已知单播报文转发的过程。
2、集中式网关-手动创建隧道
网关部署在R3上
int vbdif 10
ip add 192.168.10.254 24
int vbdif 20
ip add 192.168.20.254 24
跨子网通信:host1->host2(192.168.10.1->192.168.20.1)
跨子网通信第一步就是获取网关MAC
R1发给R2的arp报文-原始的host1发出的ARP请求报文经过vxlan封装
host1 ping host2原始报文,(70:7b:e8:2d:1c:c1) 网关MAC
host1 ping host2原始报文经过vxlan封装(R1->R3)。
R3上: host1 ping host2原始报文vxlan重封装
内层的源目的mac地址变了
R3收到R1的vxlan报文:
S-IP:192.168.10.1 D-IP:192.168.20.1
S-MAC:(54:89:98:12:5f:f2), D-MAC:(70:7b:e8:2d:1c:c1)-host1网关mac
R3发送给R2的vxlan报文:
S-IP:192.168.10.1 D-IP:192.168.20.1
S-MAC:(70:7b:e8:2d:1c:c1)-host2网关mac, D-MAC:(54:89:98:cf:79:b3)
host2收到的报文(已经被R2解封装)
host1 arp表
host3 arp表
host2 arp表
host4 arp表
R3(网关)arp表
注:网关部署在spine上
以上为实际试验中通过抓包分析所得。
虽然包3内层源MAC和包4源MAC均为0,但是不影响,数据包的返回。
跨网段,返回的数据包直接丢给网关。
3、集中式网关-BGP EVPN方式动态创建隧道
网关部署在spine上
int vbdif 10
ip add 192.168.10.254 24
int vbdif 20
ip add 192.168.20.254 24
和上节<<2、集中式网关-手动创建隧道>>唯一不同之处在于vxlan隧道的建立是动态的。
实际环境中:
同子网互访没有问题;
跨子网互访:host1->host3
spine收到包2后,没有重新封装包3
host3->host1:
spine收到包2后,重新封装,构造包3后发送给下一跳。
包3内层源MAC地址并非理论上的mac10,而是全0。
返回包2到了spine后,spine没有重新封装报文3。
集中式网关-BGP EVPN方式动态创建隧道总结:
同子网通信没有问题;跨子网通信失败。
不确定是软件版本问题还是bug。
如果有人知道原因,还请不吝赐教。
4、分布式网关-BGP EVPN方式动态创建隧道
同子网动态创建隧道和前节一样。
跨子网动态创建隧道分两种:
A、动态建立VXLAN隧道方式1: 通过IRB类型路由发布主机IP路由(type2)
leaf1: evpn vpn-instance evpn1 bd-mode route-distinguisher 100:1 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # evpn vpn-instance evpn2 bd-mode route-distinguisher 100:100 vpn-target 100:100 export-extcommunity vpn-target 100:100 import-extcommunity # ip vpn-instance ABC ipv4-family route-distinguisher 100:1 vpn-target 1:1 export-extcommunity evpn vpn-target 1:1 import-extcommunity evpn vxlan vni 5010 # ip vpn-instance l3vpn2 ipv4-family route-distinguisher 100:100 vpn-target 100:100 export-extcommunity evpn vpn-target 100:100 import-extcommunity evpn vxlan vni 5050 # bridge-domain 10 vxlan vni 2010 split-horizon-mode evpn binding vpn-instance evpn1 # bridge-domain 50 vxlan vni 2050 split-horizon-mode evpn binding vpn-instance evpn2 # interface Vbdif10 ip binding vpn-instance ABC ip address 192.168.10.254 255.255.255.0 arp distribute-gateway enable arp collect host enable # interface Vbdif50 ip binding vpn-instance l3vpn2 ip address 172.16.10.1 255.255.255.0 arp distribute-gateway enable arp collect host enable # interface Ethernet1/0/1.1 mode l2 encapsulation dot1q vid 10 rewrite pop single bridge-domain 10 # interface Ethernet1/0/3.1 mode l2 encapsulation dot1q vid 50 rewrite pop single bridge-domain 50 # interface Nve1 source 1.1.1.1 vni 2010 head-end peer-list protocol bgp vni 2050 head-end peer-list protocol bgp # bgp 100 router-id 1.1.1.1 peer 3.3.3.3 as-number 100 peer 3.3.3.3 connect-interface LoopBack0 # ipv4-family vpn-instance ABC ipv4-family vpn-instance l3vpn2 # l2vpn-family evpn undo policy vpn-target peer 3.3.3.3 enable peer 3.3.3.3 advertise irb peer 3.3.3.3 advertise encap-type vxlan # | leaf2: evpn vpn-instance evpn1 bd-mode route-distinguisher 100:2 vpn-target 1:1 export-extcommunity vpn-target 1:1 import-extcommunity # evpn vpn-instance evpn2 bd-mode route-distinguisher 100:100 vpn-target 100:100 export-extcommunity vpn-target 100:100 import-extcommunity # ip vpn-instance ABC ipv4-family route-distinguisher 100:2 vpn-target 1:1 export-extcommunity evpn vpn-target 1:1 import-extcommunity evpn vxlan vni 5010 # ip vpn-instance l3vpn2 ipv4-family route-distinguisher 100:100 vpn-target 100:100 export-extcommunity evpn vpn-target 100:100 import-extcommunity evpn vxlan vni 5050 # bridge-domain 100 vxlan vni 2010 split-horizon-mode evpn binding vpn-instance evpn1 # bridge-domain 50 vxlan vni 2050 split-horizon-mode evpn binding vpn-instance evpn2 # interface Vbdif100 ip binding vpn-instance ABC ip address 192.168.20.254 255.255.255.0 arp distribute-gateway enable arp collect host enable # interface Vbdif50 ip binding vpn-instance l3vpn2 ip address 172.16.20.1 255.255.255.0 arp distribute-gateway enable arp collect host enable # interface Ethernet1/0/1.1 mode l2 encapsulation dot1q vid 100 rewrite pop single bridge-domain 100 # interface Ethernet1/0/3.1 mode l2 encapsulation dot1q vid 50 rewrite pop single bridge-domain 50 # interface Nve1 source 3.3.3.3 vni 2010 head-end peer-list protocol bgp vni 2050 head-end peer-list protocol bgp # bgp 100 router-id 3.3.3.3 peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack0 # ipv4-family vpn-instance ABC ipv4-family vpn-instance l3vpn2 # l2vpn-family evpn undo policy vpn-target peer 1.1.1.1 enable peer 1.1.1.1 advertise irb peer 1.1.1.1 advertise encap-type vxlan # |
B、动态建立VXLAN隧道方式2: 通过IP前缀类型路由发布主机IP路由(type5)
leaf1: # bgp 100 router-id 1.1.1.1 peer 3.3.3.3 as-number 100 peer 3.3.3.3 connect-interface LoopBack0 # ipv4-family vpn-instance ABC import-route direct advertise l2vpn evpn ipv4-family vpn-instance l3vpn2 import-route direct advertise l2vpn evpn # l2vpn-family evpn undo policy vpn-target peer 3.3.3.3 enable peer 3.3.3.3 advertise encap-type vxlan # | leaf2: # bgp 100 router-id 3.3.3.3 peer 1.1.1.1 as-number 100 peer 1.1.1.1 connect-interface LoopBack0 # ipv4-family vpn-instance ABC import-route direct advertise l2vpn evpn ipv4-family vpn-instance l3vpn2 import-route direct advertise l2vpn evpn # l2vpn-family evpn undo policy vpn-target peer 1.1.1.1 enable peer 1.1.1.1 advertise encap-type vxlan # |
动态建立VXLAN隧道方式1与动态建立VXLAN隧道方式2的主要区别:
方式1:通过IRB类型路由发布主机IP路由(type2)
IRB类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI+三层VNI
方式2: 通过IP前缀类型路由发布主机IP路由(type5)
IP前缀类型路由携带的有效信息有: 主机IP地址+三层VNI
下面主要以方式2: 通过IP前缀类型路由发布主机IP路由为例,抓包分析跨子网通信时vxlan隧道的建立过程:
host1->host3跨子网通信:(192.168.10.1->192.168.20.1)
192.168.10.1->192.168.20.1原始报文。(70:7b:e8:2c:3e:cf)网关192.168.10.254MAC
内层源目的MAC变化。
(70:7b:e8:2c:3e:cf)网关192.168.10.254MAC
(70:7b:e8:21:68:9e)网关192.168.20.254MAC
leaf1公网接口MAC(vxlan报文外层源MAC)
leaf1公网接口下一跳地址MAC(vxlan报文外层目的MAC)
host3收到的报文。
///
本例中没有同子网。
MAC | IP | BD | VNI | EVPN实例 | l3vpn实例 | |||
R1 | ||||||||
host1 | 5489-98ae-5732 | 192.168.10.1 | 10 | 2010 | evpn1 | |||
vbdif10 | 707b-e82c-3ecf | 192.168.10.254 | ABC | |||||
host2 | 5489-98de-5bbc | 172.16.10.2 | 50 | 2050 | evpn2 | |||
vbdif50 | 707b-e82c-3ecf | 172.16.10.1 | l3vpn2 | |||||
R2 | ||||||||
host3 | 5489-9897-3109 | 192.168.20.1 | 100 | 2010 | evpn1 | |||
vbdif100 | 707b-e821-689e | 192.168.20.254 | ABC | |||||
host4 | 5489-982c-4ad0 | 172.16.20.2 | 50 | 2050 | evpn2 | |||
vbdif50 | 707b-e821-689e | 172.16.20.1 | l3vpn2 | |||||
R1 | R3 | |||||||
192.168.12.1 | 3801-f801-0100 | 5489-980a-6e92 | 192.168.12.2 | |||||
R2 | R3 | |||||||
192.168.23.3 | 3801-f802-0100 | 5489-980a-6e93 | 192.168.23.2 |
VxLAN隧道建立过程中的抓包(leaf之间重建BGP peer):
type3路由
07da(16进制)=2010(10进制)
type5路由
1293(16进制)=5010(进制)
type2路由
07da(16进制)=2010(10进制)
type2路由通告host3的MAC地址
type2路由
type2路由通告vbdif100的MAC地址
type3路由
0802(16进制)=2050(10进制)
type5路由
type2路由
0802(16进制)=2050(10进制)
type2路由通告host4的MAC地址
type2路由
type2路由通告vbdif50的MAC地址
消息 | EXTENDED COMMUNITIES | PMSI TUNNEL ATTRIBUTE | MP REACH NLRI |
UPDATE Message1 | RT: 1:1 /VXLAN Encapsulation | 2010 Ingress Replication | type3 3.3.3.3 100:2 |
UPDATE Message2 | RT: 1:1 /VXLAN Encapsulation | type5 192.168.20.0/24 5010 | |
UPDATE Message3 | RT: 1:1 /VXLAN Encapsulation | type2 mac3 2010 | |
UPDATE Message4 | RT: 1:1 /VXLAN Encapsulation | type2 mac-vdif100 2010 | |
UPDATE Message5 | RT: 100:100/ VXLAN Encapsulation | 2050 Ingress Replication | type3 3.3.3.3 100:100 |
UPDATE Message6 | RT: 100:100/ VXLAN Encapsulation | type5 172.16.20.0/24 5050 | |
UPDATE Message7 | RT: 100:100/ VXLAN Encapsulation | type2 mac4 2050 | |
UPDATE Message8 | RT: 100:100/ VXLAN Encapsulation | type2 mac-vdif100 20 50 |
分布式网关-BGP EVPN方式动态创建隧道总结:
1、 在没有同子网互相通,且公网支持vxlan不支持MPLS的情况下,才使用此方案。
2、同子网通信和跨子网通信都没有问题,和理论分析的一致。