深入浅出VXLAN技术

想要了解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。

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

总结

综上所述,VXLAN就是这样的网络虚拟化技术,使用VTEP将源主机的物理网络IP、MAC作为外层头进行封装,然后基于UDP协议在IP网络上传输,到达目的地后再由VTEP解封装后发送给目标主机

相信通过以上问答,大家应该能够初步理解这个技术了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容