想要了解vxlan技术,首先要分清什么是underlay,什么是overlay。
一、什么是underlay和overlay
通常情况下,我们将现实的物理传输的网络层和传输层称为underlay,基于underlay实现的逻辑网络我们称为overlay。
从功能上来说underlay就类似于overlay网络的一根网线,也就是说,overlay网络通过underlay实现网络直连。
更加简单粗暴的理解如下:
- underlay = 互联网的IP封装
- overlay = 内部局域网的IP封装
以基于VXLAN实现的HTTP服务为例,看看underlay和overlay的封装:
- underlay : Ethernet / IP / UDP / VXLAN
- overlay :Ethernet / IP / TCP / HTTP
那么,完整的数据封装就是将underlay和overlay格式合并起来:
- Ethernet/IP/UDP/VXLAN/Ethernet/IP/TCP/HTTP
二、深入浅出VXLAN
针对上面提到的数据封装格式,接下来我们采用问答的方式,帮助大家进一步理解VXLAN。
- 问:数据封装格式中有两个Ethernet,其中第一个Ethernet的目的MAC地址是谁的?
- 答:是现实物理传输网络的网关的,也可以理解为互联网下一跳的MAC地址。
- 问:如果两个VTEP端点直接使用光纤直连,目的MAC是谁的?
- 答:既然只有一跳,那当然是目的VTEP的MAC地址了。
- 问:VTEP是什么意思呢?
- 答:vxlan tunnel endpoint,其实就是underlay的头端、尾端两个节点。
- 问:underlay的头端、尾端做什么用的?
- 答:underlay的头端用来负责underlay的协议封装,也就是封装格式中头部的“Ethernet / IP / UDP / VXLAN/”这一部分,它们是由underlay的头端(VTEP)设备来完成的。
- 问:那么网络中谁负责将这一部分头部信息解封装呢?
- 答:VTEP的尾端设备负责解封装返回的流量。
- 整个VTEP的传输流程可以理解为:VTEP Head ------------> VXLAN Tunnel ---------------> VTEP Tail
- 问:VTEP尾端设备剥离掉underlay,然后如何处理剩余数据?也就是如何处理这部分内容“Ethernet / IP / TCP / SMB”。
- 答:当然是首先提取MAC地址。
- 假设数据是从青岛主机(头端VTEP)到达东京的VM(尾端VTEP),那么目的MAC就是东京VM的MAC地址,源MAC就是青岛某处的主机。
- 需要注意的是:
- a.青岛的主机与东京的VM应该在相同网段,它们的MAC地址有可能是VM的MAC,也有可能是物理机器的MAC。
- b.VTEP可以和VM或主机跑在一台机器上,也可以不在一台机器上,换而言之,VTEP对于主机是一个透明的设备。
- 问:为何青岛的VTEP会发给东京,而不是发给北京的VTEP?
- 答:因为青岛的VTEP通过控制平面的ARP协议从东京过来的ARP Request学习到了东京VM的MAC。
- 这是因为,vxlan协议依赖ARP Request在各个隧道上流淌,从哪个VTEP收到ARP Reply,就知道目的MAC 与哪个VTEP关联。这种方式类似交换机学习MAC地址的方式,先广播flood,然后看哪个端口有响应。
- 问:如果东京一共有5个VTEP邻居,不包含自己,东京的VTEP会把ARP REquest 发给多少个地方?
- 答:它会利用P2P方式将ARP广播通过所有的5个P2P隧道发出去。
- 问:除了ARP方式,另外的常用方式是什么?
- 答:也可以使用BGP进行交换,BGP可以理解跑在TCP 179端口上的应用程序。
- 问:BGP 可以用来交换什么?
- 答:BGP可以交换nlri(Network Layer Reachabilty Information),简单来说就是路由条目。
- 问:那么,基于BGP协议的IP、MAC等多种数据标签,如何区分他们呢?
- 答:通过扩展BGP的属性:包括IPv4、IPv6、label、MAC,address-family等。这其中用来传输MAC地址的,就是BGP EVPN address-family。
- 我们可以这样来理解,BGP相当于一辆火车,一个address-family 相当于一节车厢,每节车厢,可以拉不同的货物,有的是IPv4路由表,有的是IPV6路由表,有的是MAC地址。也就是说BGP报文内容分成很多段,每一段里面装载的东西不一样。
- 问:为何VTEP只交换MAC,而不交换路由表,怎么做到的?
- 答:在BGP协商阶段,capability可以协商哪些需要封装,哪些不需要,包括MAC。
- 问:东京的VTEP通过BGP告诉了青岛VTEP的MAC地址,问题又来了, 东京VTEP又是如何获得MAC地址的?
- 答:就像刚才所提到的,依然是ARP flooding,每一个VTEP都是这样学习本地二层网络,包括其他主机的IP、MAC的映射。
总结
综上所述,VXLAN就是这样的网络虚拟化技术,使用VTEP将源主机的物理网络IP、MAC作为外层头进行封装,然后基于UDP协议在IP网络上传输,到达目的地后再由VTEP解封装后发送给目标主机。
相信通过以上问答,大家应该能够初步理解这个技术了。