前言
VMware NSX-T是一个商业SDN解决方案,可以用于ESXi、KVM、Linux、Windows等环境,具体支持的情况需要查阅兼容性矩阵。
NSX-T作为一个开放的SDN解决方案,在VMware的软件定义数据中心解决方案里扮演重要角色
NSX-T Overlay网络二层通讯原理
NSX-T和大多数SDN方案一样,采用overlay的网络(Geneve)来实现VxLAN的网络寻址与互联,下面先从报文角度出发,先来看看Geneve的实现方法:
假设我们的环境如上图,NSX-T分布式交换机分别位于多个主机中,这些分布式交换机虽然在不同的节点上,但其IP和MAC都完全相同。
NSX-T服务是运行在ESXi kernel层的,我们可以在ESXi执行命令看到其服务状态,内核运行效率要远远优于用户空间的进程,在支持KVM的Linux主机上也是运行在内核层。
图中NSX-T分布式交换机划分了3个网段:VNI 100、VNI 200、VNI 300,分别对应WEB、APP、DB的网段。
下面我们来看看图中的数据报文如何封装和转发到正确的目的端:
1、在封装之前,NSX-T查询三张表:
TEP表,由NSX-T维护和必须的表:
TEP | VNI |
---|---|
10.0.0.1 | 100 300 |
10.0.0.2 | 100 200 |
MAC表,由NSX-T维护和必须的表::
TEP | VNI | VM MAC |
---|---|---|
10.0.0.1 | 100 300 | VM WEB1 MAC VM DB1 MAC VM WEB2 MAC |
10.0.0.2 | 100 200 | VM APP1 MAC VM WEB3 MAC |
ARP表,非必须的表,但却能帮助我们减少BUM(B广播、U单播、M多播)泛洪:
TEP | VNI | VM MAC | VM IP |
---|---|---|---|
10.0.0.1 | 100 300 | VM WEB1 MAC VM DB1 MAC VM WEB2 MAC | 目前为空 |
10.0.0.2 | 100 200 | VM APP1 MAC VM WEB3 MAC | 目前为空 |
这个例子是虚拟机172.1.0.2要去访问172.1.0.4,一开始ARP表为空,因此我们也就不知道172.1.0.4的MAC地址是多少,因此要先发出BUM查询MAC
2、NSX-T在所有具有VNI 100的ESXi机器上BUM泛洪,得到目标的VM MAC地址,与现有的MAC表格对比后建立ARP表
TEP | VNI | VM MAC | VM IP |
---|---|---|---|
10.0.0.1 | 100 300 | VM WEB1 MAC VM DB1 MAC VM WEB2 MAC | VM WEB1 IP |
10.0.0.2 | 100 200 | VM APP1 MAC VM WEB3 MAC | VM WEB3 IP |
3、现在NSX-T知道了目标在哪个ESXi主机上,并且知道对端TEP MAC(底层网络的ARP表可以查到)、对端TEP IP、VNI、VM MAC、VM IP,开始对数据包进行封装:
4、红色部分报文在目标端ESXi的NSX-T上进行解封给到目标虚拟机原始报文,两台虚拟机之间就实现了寻址与通讯。