1. 同设备VLAN内互通
如图1所示,用户主机Host1和Host2连接在同台设备上,属于同一VLAN2,且位于相同网段,连接接口均设置为Access接口。
当用户主机Host1发送报文给用户主机Host2时,报文的发送过程如下(假设DeviceA还未建立任何转发表项)。
1)Host1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host2的MAC地址,报文目的MAC地址填写全F,目的IP地址为Host2的IP地址10.1.1.3。
2)报文到达DeviceA的接口interface1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的“源MAC地址+VID”与接口的对应关系(00e0-fc00-1111, 2, interface1)添加进MAC表。
3)根据报文“目的MAC地址+VID”查找DeviceA的MAC表,没有找到,于是在所有允许VLAN2通过的接口(本例中接口为interface2)广播该报文。
4)DeviceA的接口interface2在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
5)Host2收到该ARP请求报文,将Host1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址00e0-fc00-2222,目的IP为Host1的IP地址10.1.1.2。
6)DeviceA的接口interface2收到ARP响应报文后,同样给报文添加VID=2的Tag。
7)DeviceA将报文的“源MAC地址+VID”与接口的对应关系(00e0-fc00-2222, 2, interface2)添加进MAC表,然后根据报文的“目的MAC地址+VID”(00e0-fc00-1111, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口interface1转发该ARP响应报文。
8)DeviceA向出接口interface1转发前,同样根据接口配置剥离VID=2的Tag。
9)Host1收到Host2的ARP响应报文,将Host2的MAC地址和IP地址对应关系记录ARP表。
2. 跨设备VLAN内互通
如图2所示,用户主机Host1和Host2连接在不同的设备上,属于同一个VLAN2,且位于相同网段。为了识别和发送跨越设备的数据帧,设备与设备间通过干道链路连接,且允许携带VLAN2的报文通过。
当同一VLAN的用户处于不同网段时,无法通过DeviceA与DeviceB直接进行二层互通。可借助VLANIF技术实现三层互通,其互通原理与“跨设备VLAN间互通(VLANIF接口)”原理类似,不再赘述。
当用户主机Host1发送报文给用户主机Host2时,报文的发送过程如下(假设DeviceA和DeviceB上还未建立任何转发表项)。
1)Host1判断目的IP地址跟自己的IP地址在同一网段,于是发送ARP广播请求报文获取目的主机Host2的MAC地址,报文目的MAC地址填写全F,目的IP地址为Host2的IP地址10.1.1.3。
2)报文到达设备的接口interface1,发现是Untagged帧,给报文添加VID=2的Tag(Tag的VID=接口的PVID),然后将报文的“源MAC地址+VID”与接口的对应关系(00e0-fc00-1111, 2, interface1)添加进MAC表。
3)根据报文“目的MAC地址+VID”查找DeviceA的MAC表,没有找到,于是报文被广播到DeviceA的interface2接口。
4)DeviceA的interface2接口在发出ARP请求报文前,因为接口的PVID=1,与报文的VID不相同,所以直接透传该报文到DeviceB的interface2接口,不剥离报文的Tag。
5)DeviceB的interface2接口收到该报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
6)根据报文“目的MAC地址+VID”查找DeviceB的MAC表,没有找到,于是报文被广播到DeviceB的interface1接口。
7)DeviceB的接口interface1在发出ARP请求报文前,根据接口配置,剥离VID=2的Tag。
8)Host2收到该ARP请求报文,将Host1的MAC地址和IP地址对应关系记录ARP表。然后比较目的IP与自己的IP,发现跟自己的相同,就发送ARP响应报文,报文中封装自己的MAC地址00e0-fc00-2222,目的IP为Host1的IP地址10.1.1.2。
9)DeviceB的接口interface1收到ARP响应报文后,同样给报文添加VID=2的Tag。
10)DeviceB向自己的出接口interface2转发Host2的ARP响应报文前,因为接口interface2为Trunk接口且PVID=1,与报文的VID不相同,所以直接透传报文到DeviceA的interface2接口,不剥离报文的Tag。
11)DeviceA的interface2接口收到Host2的ARP响应报文后,判断报文的Tag中的VID=2是接口允许通过的VLAN,接收该报文。
12)DeviceA将报文的“源MAC地址+VID”与接口的对应关系(00e0-fc00-2222, 2, interface2)添加进MAC表,然后根据报文的“目的MAC地址+VID”(00e0-fc00-1111, 2)查找MAC地址表,由于前面已记录,查找成功,向出接口interface1转发该ARP响应报文。
13)DeviceA向出接口interface1转发前,同样根据接口配置,剥离VID=2的Tag。
14)Host1收到Host2的ARP响应报文,将Host2的MAC地址和IP地址对应关系记录ARP表。
由此可见,干道链路除了支持传输多个VLAN的数据帧外,还起到透传VLAN的作用,即干道链路上,数据帧只会转发,不会发生Tag的添加或剥离。