VXLAN是一种Overlay网络技术,我相信大家对Overlay和VXLAN已经有一定的了解了,所以,我不在这对Overlay和VXLAN做解释。我们直接看一下VXLAN网络是如何工作的。
VTEP
首先看看VXLAN网络中的重要组成部分,VTEP(VXLAN Tunnel Endpoint)。VTEP是一个网络设备VXLAN数据是在VTEP之间传递。从逻辑上看,VTEP包含了两个接口:uplink和downlink。Uplink连接Underlay网络,原始数据封装成VXLAN格式通过uplink在Underlay网络上传输;downlink连接Overlay网络,原始数据从downlink传入传出。所以,VTEP可以看成是一个连接Overlay和Underlay网络的edge设备。
举个例子,当Overlay中VLAN100数据包通过downlink发送至VTEP,首先会映射到VXLAN ID 1001。在这之后,VTEP根据原始数据包的目的MAC地址和刚刚转换获得的VXLAN ID,在VTEP L2 Table中查找对应的Remote VTEP,如果能找到,就原始的Ethernet Frame封装成VXLAN数据包,再通过uplink发送出去。
对端VTEP的uplink收到了VXLAN数据包,解封装获得原始的Ethernet Frame,再将VXLAN ID与VLAN ID做映射,加入VLAN100的信息,最后数据包再通过downlink发送出去。这样,两个VTEP下的VLAN 100网络相当于是连通的。(注:虽然这里都是VLAN 100,但是实际上两个VTEP下对同一个VXLAN ID对应的VLAN ID可以不一样)
原始的Ethernet Frame被封装成了一个IP/UDP packet,数据的传输变成了VTEP之间的IP/UDP packet传输,VTEP之间可以是二层网络,三层网络,甚至更复杂,但是这对VLAN100是透明的。
flood-learn
前面的例子中,如果VTEP L2 Table中没有找到对应的Remote VTEP,那就要通过flood-learn来获得对端的VTEP。
以Unknown Unicast为例来说明(也可以用Broadcast,例如ARP来说明,但是我就找到了上面这张图,所以。。。)当最左侧虚机想ping最右侧虚机,ping包送到VTEP,因为在VTEP中找不到对应的Remote VTEP,VTEP会做如下操作:
- 原始的Ethernet Frame被封装成VXLAN格式,VXLAN包的外层目的IP地址为组播地址。
- VXLAN数据包被发送给组播内所有其他VTEP。
其实这就是flood过程。因为组播内所有VTEP都是接收方,最右侧虚机可以收到组播的ping包。最右侧的VTEP首先从ping包中学习到了最左侧虚机的MAC地址,VXLAN ID和对应的VTEP。因为有了这些信息,当最右侧虚机返回时,会直接发送到最左侧VTEP。这样最左侧VTEP也能从返回包中学习到最右侧虚机的MAC地址,VXLAN ID和对应的VTEP,并记录在自己的L2 Table中,这就是learn过程。与交换机中的flood-learn不一样的是,交换机中记录的是对应的交换机端口和MAC的关系,这里记录的是Remote VTEP(IP Address)和MAC的关系。
下次最左侧虚机想访问最右侧虚机,不需要再flood,直接查VTEP L2 Table就能找到对应的remote VTEP。
所以从这里看出,VXLAN的转发信息,也是通过数据层的flood-learn获取,VXLAN不需要一个控制层也能工作,这与VPLS的情况很像啊!
https://zhuanlan.zhihu.com/p/28611292
VRF
VRF可以称为Virtual Routing&Forwarding,有时候也称为VPN Routing&Forward,这是一个类似Linux network Namespace的东东。VRF一般运行在专用网络设备上,每一个VRF都有独立的转发信息。这样,不需要多个设备,而只是在一个设备上,就可以为多个租户创建隔离的环境,每个租户用自己VRF,独立完成路由转发。下图中,在一个设备上就可以为三个租户实现三个隔离的VRF。
既然叫VRF,那么没有悬念,它的功能是跟路由/转发联系在一起。在EVPN里面,VRF有两种,MAC-VRF和IP-VRF。MAC-VRF可以看成L2交换机,IP-VRF可以看成L3路由器。它们之间的关系如下图所示:
https://zhuanlan.zhihu.com/p/29519776
文章评论