网络概念- VXLAN技术详解

引言:工作中一直用VLAN和VXLAN,但是没有形成知识体系,百度一下大神们的文章,在此整理成学习笔记。感谢大神们的无私分享,参照的主要文章链接如下:

http://network.51cto.com/art/201902/592347.htm

https://blog.csdn.net/dylloveyou/article/details/80107792

https://blog.51cto.com/liufei888/2071793?from=timeline&isappinstalled=0

http://virtual.51cto.com/art/201901/590900.htm


一 引言

上一篇文章  https://blog.csdn.net/qq_35550345/article/details/87882567   中,我有个疑问如下:

      云计算多租户环境下使用VLAN会造成交换机的MAC地址表异常庞大,进而影响交换机的性能。但是一般而言云环境下的交换机都是直接与物理机相连,那么交换机存储的MAC地址表仅仅是物理机的MAC吗?如果只是存储物理机的MAC,一个交换机所连接的物理机数和其端口数量应该是一致的,也就是说存储的MAC地址应该不至于过多才是。交换机存储的MAC地址是物理机上的虚拟机的MAC地址吗?此外,虚拟交换机不具备MAC地址学习的能力,那么它的MAC地址表是怎么形成的呢?

      物理交换机存储的MAC地址表是根据ARP协议学习来的,也就是说,其不区分物理机还是虚拟机,只要是能够通过arp学习获得的MAC地址都会记录下来,因此,如果虚拟机过多确实会造成MAC地址表庞大,进而影响交换机的性能。而虚拟交换机确实不具备MAC地址学习能力,因此在创建虚机时,MAC地址与端口的对应关系会通过API主动写入MAC地址表。

二 VXLAN技术详解

      本质上VXLAN是一种隧道技术,通过将虚拟网络中的数据帧封装在实际物理网络中的报文中进行传输。具体实现方式为:将虚拟网络的数据帧添加VXLAN首部后,封装在物理网络中的UDP报文中,然后以传统网路络的通信方式传送该UDP报文,到达目的主机后,去掉物理网络报文的头部信息以及VXLAN首部,将报文交付给目的终端。整个通信过程目的终端不会感知到物理网络的存在。VXLAN数据报文如下:

网络概念- VXLAN技术详解_第1张图片

      除了常规的各层的header之外,VXLAN协议定义了8个字节的VXLAN Header。其中的24bit用来标识不同的二层网络,这样总共可以标识1600多万个不同的二层网络。一般的传输层端口号用来标识进程或者应用,但是在VXLAN协议里面的,Ethernet Frame封装在UDP里面,UDP的source port被用来在ECMP或者LACP做负载均衡;destination port被用来标识VXLAN数据,IANA(Internet Assigned Numbers Authority)分配给VXLAN的端口号是4789。VXLAN数据是经过VTEP(VXLAN Tunnel EndPoint)封装和解封装的,相应的VXLAN数据的外层IP地址就是VTEP的IP地址。最外层的MAC地址用来实现VTEP之间的数据传递。

网络概念- VXLAN技术详解_第2张图片

      几个VXLAN相关的术语:

      NVE:NetworkVirtualization Edge,网络虚拟边缘,用于建立VxLAN隧道的网络设备;

      VTEP:VxLANtunnel End Point,VxLAN隧道端点,指建立VxLAN隧道的NVE设备端点IP,可用于静态VxLAN配置及动态VxLAN配置。vxlan通过VTEP实现mac与IP的映射,VTEP包括IP接口和本地mac地址两部分,而且是独立的。

      VNI:VirtualNetwork Identifier,虚拟网络ID,一个VNI即一个VxLAN广播域,实现VxLAN广播域隔离,相当于VLAN中的VLAN ID;

      BD:BridgeDomain,定义一个VxLAN广播域,可配合配置BDIF,实现跨VxLAN路由,一个BD唯一映射一个VNI。

      VXLAN与VLAN的最大区别在于,VLAN只是修改了原始的Ethernet Header,但是整个网络数据包还是原来那个数据包,而VXLAN是将原始的Ethernet Frame隐藏在UDP数据里面。经过VTEP封装之后,在网络线路上看起来只有VTEP之间的UDP数据传递,原始的网络数据包被掩盖了。VXLAN并不是凭空出现,这种在UDP里面封装网络数据的做法,在VXLAN之前就已经存在,例如OTV(Overlay Transport Virtualization)和LISP(Locator/ID Separation Protocol)。

      VTEP节点可以由实现了VXLAN功能的交换机、路由器等硬件设备充当,但在更多的基于虚拟化技术实现的网络拓扑的应用中,VTEP节点的角色更多由部署了多台虚拟机的主机中的hypervisor进程来担任,如下图:

网络概念- VXLAN技术详解_第3张图片

      在VXLAN网络的数据转发过程中,VTEP负责对原数据包和目的数据包进行封装和解封装工作,如下图:

网络概念- VXLAN技术详解_第4张图片

      VXLAN通过多播组进行网络传输,见下图:

网络概念- VXLAN技术详解_第5张图片

      在数据初次访问时,VXLAN网络的自学习过程与VLAN网络的mac地址学习过程很相似,(注意:与交换机中的flood-learn不一样的是,交换机中记录的是对应的交换机端口和MAC的关系,这里记录的是Remote VTEP(IP Address)和MAC的关系),当什么信息也没有学到的时候使用多播组进行广播,当学习到IP信息和mac信息后,通过单播的方式进行互访,具体如下图:

网络概念- VXLAN技术详解_第6张图片

      此外,“VXLAN与VLAN之间可以互访” ,VLAN与VXLAN的访问需要通过VXLAN网关进行映射的翻译,见下图:

网络概念- VXLAN技术详解_第7张图片

     


转载请注明出处,谢谢!

你可能感兴趣的:(网络精华)