为什么要学习vxlan网络,到底有什么用,这个问题我觉得对于热爱技术并且在云行业工作的人来说答案是不言而喻的,在此不做过多解释,大家百度下就好!
1、 什么是vlxan?
虚拟可拓展局域网 , mac in udp, 比如不同宿主机之间的虚拟机通信,最终还是要两个宿主机之间网络打通,两个宿主机之间构建vtep 隧道,传输封装好的udp 数据包,外层的udp数据包可以是两台物理机之间某一个网络,拆包后的数据帧就是虚拟机的网络,由此可以实现一个ip嵌套,进而可以有足够多的ip地址实现多租户隔离
Underlay 底层承载网
Overlay 基于底层网络互联互通的基础加上隧道技术取构建一个虚拟网络。Overlay的核心是打隧道
隧道的本质是打通两个vtep 之间的路由, 数据包要经过vxlan封装,最终走的还是uderlay 网络,不过该underlay 网络是构建隧道时选择的网络.
具体概念可参考如下文章,很详细了
https://blog.51cto.com/linweiwei/5212486
2、 消息发送接收流程
1 、会话层上面三层我们简称为应用层
该三层传输的就是我们通常说的消息,如qq消息
2 、该消息的形成是通过上层依次向下封装消息,发送到对端,接收数据后再从下层依次向上解封装,最终获取到可读消息
3、数据的封装过程如下,解封装是他的逆过程
3、vxlan 报文讲解-mac in udp
参考资料
http://m.biancheng.net/view/6391.html
数据链路层(数据帧):
目的地址:
接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,
首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
源地址:
发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
参考资料
http://c.biancheng.net/view/6440.html
传输层(udp报文)
UDP 报文中每个字段的含义如下:
- 源端口:这个字段占据 UDP 报文头的前 16 位,通常包含发送数据报的应用程序所使用的 UDP 端口。接收端的应用程序利用这个字段的值作为发送响应的目的地址。这个字段是可选的,所以发送端的应用程序不一定会把自己的端口号写入该字段中。如果不写入端口号,则把这个字段设置为 0。这样,接收端的应用程序就不能发送响应了。
- 目的端口:接收端计算机上 UDP 软件使用的端口,占据 16 位。
- 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
- 校验值:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。
封装过程:
outer mac header 、out ip header : 外层的,vtep 隧道网络
从传输层来看,其中vxlan head和 原始L2数据帧(内部的虚机网络) 当作udp 报文的数据部分嵌套在udp报文中。然后这个
嵌套的报文继续向下封装(网络层、数据链路层)就得到一个完整的数据包
报文封装是在原始以太报文之前添加了一个UDP封装及VXLAN头封装
VXLAN header
VXLAN Flags:8比特,取值为00001000。
VNI:VXLAN网络标识,24比特,用于区分VXLAN段。
Reserved:24比特和8比特,必须设置为0。
Outer UDP header
DestPort:目的UDP端口号是4789。
Source Port:源端口号是内层报文通过哈希算法计算后的值。
Outer IP header
IP SA:源IP地址是VXLAN隧道本端VTEP的IP地址。
IP DA:目的IP地址是VXLAN隧道远端VTEP的IP地址。
Outer Ethernet header
MAC DA:在发送报文的虚拟机所属VTEP上根据目的VTEP地址查找路由表,路由表中下一跳IP地址对应的MAC地址。
MAC SA:发送报文的虚拟机所属VTEP的MAC地址。
802.1Q Tag:可选字段,该字段为报文中携带的VLAN Tag。
Ethernet Type:以太报文类型。