(图文)解读DLR里ARP的完整解析过程

 

如果您觉得我们的文章技术水平还凑合,请搜索:虚拟人,收听我们的公众号...



说明:本文图片来自网路

之前的Part01~Part18的NSX系列文档里,介绍了如何配置和使用NSX-v产品。实际上在配置过程中可能会由于各种原因导致某些场景无法配完即通,最典型的问题就是跨越L3的L2通讯无法正常进行。此时如果要排错则需要先了解整个通讯流程是这样的。而本文就将会介绍当发生VM1 › VM2通讯时的ARP地址解析完整过程;

如下图所示,可以看到这是DLR ARP的完整过程,分为了7个步骤:


上图中,VM1位于ESXi Host A,VM2位于ESXi Host B,它们之间要通讯需要跨越主机和Distributed Logical Router。而这个过程就存在着一个MAC地址学习和ARP映射关系建立。详细的步骤如下:

第01步、位于ESXi Host A上的DLR会生成一个ARP请求包,里面会包含Source MAC,这里的Source MAC是vMAC而不是pMAC,然后会以广播的形式去定义Destination MAC地址。位于ESXi Host A上的VXLAN模块会在Egress的VXLAN 5001上查找所有VTEP,并且为每个VTEP都发送一个广播帧的完整拷贝;

第02步、当第01步里发送的帧通过VXLAN封装过程离开ESXi Host A之后,Source MAC(vMAC)会从vMAC变更为pMAC A,以便返回的traffic可以找到位于ESXi Host A上的初始DLR。此时的Source MAC = pMAC A,Destination MAC = Broadcast;

第03步、当ESXi Host B收到这个传输过来的帧之后,就会执行解包动作,然后从里面找到和确认与位于VXLAN 5001上本地DLR LIF匹配的虚拟机IP地址讯息。之后会标记收到的帧然后执行Proxy ARP。此时,Destination MAC会被从Broadcast变更为vMAC,以便这个帧能够抵达本地DLR;

第04步、位于ESXi Host B上的Local DLR会接受帧的ARP请求,此时的Source MAC = pMAC,Destination MAC = vMAC,同时也会看到请求访问的LIF IP地址。之后就会保留Source MAC,然后生成一个新的ARP请求包,Source MAC = vMAC,Destination MAC = Broadcast。帧会被标识为"DVS Local"以便规避通过dvUplink执行flooding,然后DVS会将帧传送给VM2;

第05步、VM2收到访问请求之后,会发送ARP应答,此时Source MAC = MAC2,Destination MAC = vMAC,DVS会将它传送到Local DLR;

第06步、位于ESXi Host B上的DLR会将收到帧里面的Destination MAC更改为第04步里保留下来的pMAC A,然后将包发送回位于ESXi Host A上的DVS;

第07步、ARP应答返回到ESXi Host A之后,Destination MAC会从pMAC变更回vMAC,然后带着Source MAC = MAC2和Destination MAC = vMAC的ARP应答帧将会抵达位于ESXi Host A上的DLR。DLR会把ARP应答请求返回给发起方的VM1;

至此,就可以完成从VM1到VM2的双向访问请求建立。之后,位于ESXi Host A上的DLR就可以发送traffic到VM2上了。

那么,如果发生通讯问题,则可以根据这里的通讯流程,一步步的去定位问题所在,然后解决掉。

如果您觉得我们的文章技术水平还凑合,请搜索:虚拟人,收听我们的公众号


    关注 虚拟人


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册