解密Access、Trunk、Hybrid端口对报文的转发规则


笔者将会通过在模拟器上进行实验并且通过实现现象来阐述数据包在进入和离开access、trunk、hybrid端口时,端口对数据帧所做的处理。

实验拓扑如下:
在这里插入图片描述

PCA属于vlan10且ip为192.168.1.10/24、PCB属于vlan20且ip为192.168.1.20/24,它们位于同网段不同的vlan。图中所有交换机均已创建好vlan10和vlan20。

实验的思路主要包括以下方面:
1、携带标签进入端口
2、不携带标签进入端口
3、携带标签离开端口
4、不携带标签离开端口

下面将针对这四方面进行实验,从实验现象总结出它们的转发规则

TIPS:对于wireshark抓包,在设备的入端口捕获的包是未经过该设备处理过的,而在设备的出端口捕获的包则经过了该设备的处理。即在上图中B点捕获的包和C点捕获的包是同一个包。

1、Access

现象1

如图所示,设置SW1的g1/0/1口和SW3的g1/0/1口分别属于vlan10和vlan20,其余交换机和接口保持不变。此用来验证Access接口对于数据包出接口的处理。
在这里插入图片描述

解释说明:在下面的抓包测试中有可能捕获的是ARP包,也有可能是ICMP包。理论上两台主机通信之前应该先发送ARP包解析对方的IP地址对应的MAC地址,但是测试中有可能出现两端连通的情况,这时沿途的交换机会保存PC的mac地址,因此会直接发送ICMP包。不过这些都无伤大雅,不影响实验结果。

在B处抓包,如下图所示,没有捕获任何有用的包(ARP或ICMP包),只有一些二层广播帧。首先PCA会广播ARP请求,在通过g1/0/1进入SW1时会打上vlan10的标签,而离开时出端口g1/0/2的pvid和数据包携带的标签值不一致,因此数据包被丢弃了。
在这里插入图片描述

对此可以稍加验证,如下图,设置SW1的g1/0/2的pvid为10。
在这里插入图片描述

再次对B点进行抓包,结果如下图所示。C点能够捕获到数据包但是不携带vlan标签。由此我们可以得出结论,携带标签的数据包在从access口出去的时候会检查出端口的pvid值,如果和自身携带的标签值一致则会剥离标签转发,否则丢弃。

在这里插入图片描述

从实验现象来看,可以发现不携带标签的数据包在进入access口后会被打上access的pvid标签,在离开access口会将自身携带的vlan标签与出端口的pvid比对,一致则剥离标签转发,不一致则丢弃。

现象2

如图所示,设置SW1的g1/0/2为trunk口,允许vlan10和vlan20通过,其他的条件不变
在这里插入图片描述

在E点抓包,此时发送到SW2的数据包携带了vlan10的标签。如图所示什么也没捕获到,鉴于这种情况可能有两种情况:

1)一种是数据包在SW2的g1/0/1由于携带的标签不等于g1/0/1的pvid而被丢弃

2)一种是在SW2的g1/0/2被丢弃,由于access口在出方向上仅允许标签和自身pvid值一致的数据包通过,vlan10和vlan1不一致而被丢弃。
在这里插入图片描述

对第二种情况进行验证,如图所示,设置SW2的g1/0/2位trunk口,允许vlan1和vlan10通过。

在这里插入图片描述

再次在E点抓包,结果如下图所示,没有捕获的数据包,因此不是第二种情况。

在这里插入图片描述

继续对第一种情况进行验证,设置SW2的g1/0/1的pvid为10

在这里插入图片描述

在E点抓包,可以捕获到包且数据包携带有vlan10标签。由于数据包从SW1出来后就携带vlan10标签,而SW2的g1/0/2也是允许数据包保留vlan10的标签通过的,因此SW2的g1/0/1口允许了数据包携带vlan10标签通过。可以得出我们的结论,access口在入方向允许携带标签值和自身pvid值一致的数据包通过。
在这里插入图片描述

从实验现象来看,对于进入access口且携带标签的数据包,如果携带标签和入端口的pvid标签一致则允许通过,否则丢弃。

小结

1、access口对于进入端口的数据包,检查是否携带标签,不携带标签则打上端口的pvid标签然后转发;携带标签且标签等于入端口的pvid转发,否则直接丢弃。

2、access口对于离开端口的数据包,不存在不携带标签的数据包(进入端口时携带);直接查看标签是否和端口的pvid相一致,一致剥离掉标签再进行转发,不一致直接丢弃。

2、Trunk

现象1

如图所示,SW1和SW2的g1/0/1口都为access口,pvid分别为vlan10和vlan20。SW2的g1/0/1口不允许任何vlan通过,其余交换机及端口的pvid都为vlan1且只允许vlan10和vlan20通过。

在这里插入图片描述

C点抓包结果如下图所示,捕获到了数据包且数据包携带有vlan10的标签。
在这里插入图片描述

E点抓包结果如下图所示,捕获到了数据包且数据包也携带有vlan10的标签。
在这里插入图片描述

现象2

如图所示,设置SW2的g1/0/2口不允许任何vlan通过。

在这里插入图片描述

C点抓包结果如下图,没有抓取到数据包。
在这里插入图片描述

现象3

如图所示,设置SW2的g1/0/2口为trunk口,且其pvid设为10。

在这里插入图片描述

C点抓包结果如下图所示,能够抓取到数据包,但是数据包不携带vlan标签。

在这里插入图片描述

E点抓包结果如下图所示,抓取不到数据包。对此结果分析一下,进入到SW2的数据包只可能携带vlan1标签,即在进入SW2时被打上g1/0/1的pvid标签vlan1,在通过g1/0/2口时没有被放行,所以被丢弃掉了。
在这里插入图片描述

在SW2上的g1/0/2放行掉vlan1,在E点再次抓包,结果如下图仍然没有数据包。那么上面的分析是错的,所以原因可能在SW2的g1/0/1口上,可能g1/0/1口打上了pvid标签后有比对了permit列表,然后发现permit列表中没有vlan1,因此直接丢弃。
在这里插入图片描述

现象4

那么继续验证,设置SW2的g1/0/1和g1/0/2口都允许vlan1通过。

在这里插入图片描述

在E点的抓包结果如下,成功捕获到了数据包且没有携带vlan标签。那么就说明了入端口上打上了pvid后还会检查端口是否允许该pvid标签通过。
在这里插入图片描述

小结:

1、trunk口对于进入端口的数据包,首先检查数据包是否携带标签,不携带标签则加上端口的pvid标签然后查看该标签是否在端口的permit列表中,在则允许进入,否则丢弃;携带标签则直接查看该标签是否在端口的permit列表中,在则允许进入,否则丢弃。

2、trunk口对于离开端口的数据包,由于不携带标签的数据包进入端口会被打上端口的pvid标签,携带标签的数据包进入端口会查看端口的permit列表,标签在permit列表中就允许进入,否则直接丢弃。所以所有离开端口的数据包都是携带标签的,因此不会检查端口是否携带标签。那么直接检查数据包携带的标签是否存在端口的permit列表中,在列表中则查看该标签是否和端口的pvid一致,一致则剥离标签转发,不一致则直接转发;不在列表中则直接丢弃。

3、Hybrid

现象1

如图所示,SW1和SW3的g1/0/1口设置为hybrid口,pvid和untag列表都分别为vlan10和vlan20,除SW2的g1/0/2口的tag列表为空untag为vlan1、vlan10和vlan20外其余端口的pvid都为1,tag列表都为vlan10和vlan20。
在这里插入图片描述

C点抓包结果如下,能够捕获到数据包且数据包携带了vlan10标签。
在这里插入图片描述

E点抓包结果如下,能够捕获到数据包且数据包未携带vlan标签。

在这里插入图片描述

此结果说明不携带标签的数据包进入到hybrid口会被打上hybrid口的pvid标签,离开时会检查标签值是在tag列表还是untag列表中,如果在tag列表中就保留标签转发,在untag列表中则剥离标签转发。

现象2

如图所示,设置SW2的g1/0/1口tag和untag列表都为空
在这里插入图片描述

E点抓包结果如下图,捕获不到数据包。
在这里插入图片描述

将SW2的g1/0/1口设置tag列表为vlan10、untag列表为空,在E点能够捕获到数据包。
在这里插入图片描述

将SW2的g1/0/1口设置tag列表为空、untag列表vlan10,在E点也能够捕获到数据包

在这里插入图片描述

此结果说明对于携带标签的数据包进入到hybrid口后,会检查该端口是否存在tag/untag列表中,如果存在,则允许通过;否则直接丢弃。

小结

1、hybrid端口对于进入端口的数据包,先检查数据包是否携带vlan标签,不携带标签则打上端口的pvid标签值转发;携带标签则查看标签是否在tag/untag列表中,在tag/untag列表中则直接转发,否则直接丢弃。

2、hybrid端口对于离开端口的数据包,由于不携带标签的数据包会被打上入端口的pvid,携带标签的检查其是否在tag/untag列表中,不在列表中的标签直接丢弃,在的直接转发,所以hybrid出端口的所有数据包也是全部携带标签的。因此直接检查标签是存在tag列表中还是untag列表中,在tag列表中的保留标签发送;在untag列表中的剥离标签发送。

4、总结

in/untaggedin/taggedout/untaggedout/tagged
Access打上入端口的pvid标签再转发直接丢弃不存在该情况等于出端口的pvid剥离标签转发,不等于直接丢弃
Trunk打上入端口的pvid标签后再查看该标签值是否在permit列表中,在则转发,不在则丢弃在permit列表中直接转发,不在直接丢弃不存在该情况检查该标签值是否存在于permit列表,存在且等于出端口的pvid剥离标签转发,存在不等于直接转发;不存在直接丢弃
Hybrid打上入端口的pvid标签后再转发查看标签是否在tag/untag列表中,在tag/untag列表中则直接转发不存在该情况检查标签是存在tag列表还是untag列表中,在tag列表中的保留标签发送;在untag列表中的剥离标签发送
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值