用华为模拟器做实验,为的是华为特有的hybrid功能。
从网上云里雾里看了一些关于trunk口,access口和hybrid口的相关介绍。觉得还是自己试验抓包分析一遍比较好。
ACCESS
首先从,access口开始
拓扑如下:结果是客户端1可以ping通客户端2
ping的过程,当数据包到达LSW1:e0/0/22的时候,因为是access vlan 10的配置,那么判断数据包是否有vlan的标签信息,如果有那么去除标签,如果没有就打上标签,这个时候当然是没有,所以打上标签vlan 10,然后在交换机中寻找,因为e0/0/1口也配置了vlan 10的acess口,所以与e0/0/22属于同一个vlan,也就是属于同一个广播域,可以收到广播信息,问192.168.1.2在哪里?
这个时候,因为数据包中带有vlan 10的标签,所以在从e0/0/1出去的时候,就需要解除标签,然后到达LSW2的e0/0/1,因为是access vlan 20,所以他又一次判断,因为你的标签已经没有了,所以再一次打上vlan 20的标签,然后由于LSW2的e0/0/22是属于vlan 20的,所以属于同一个广播域,广播发到了客户端2,客户端2再回应,这个时候数据包就可以顺利通讯了。
所以,在LSW1和LSW2之间抓包,数据包中是看不到vlan的标签信息的
所以access口在收到一个数据包时,判断有vlan标签(与配置相同的)则去除这个vlan标签,没有则打上标签
TRUNK
由于access只能承载一个vlan通过,所以在需要承载多个vlan通过的时候,就需要用到trunk口了
拓扑一样,配置发生一些变化:
变化是:在LSW2的e0/0/1口改为trnuk,并且允许VLAN 10和20通过。
但是,这个时候,客户端1去ping客户端2是ping不通的
原因:因为trunk口的作用是,收到一个数据包,判断是否有vlan,没有就打上本地vlan(华为pvid)标签,如果有则判断这个vlan是否可以允许通过。因为默认交换机的本地vlan是vlan1,所以在到达LSW2的时候,打上vlan1标签,而与vlan 20不是在同一个广播域。
所以如果在LSW2的e0/0/22口配置access vlan 1,这个时候就可以ping通了,或者把LSW2的e0/0/1口本地vlan配置为vlan 20
注意:思科trunk的配置是本地vlan(switchport trunk native vlan 20),而华为不同的是叫pvid配置命令(port trunk pvid vlan 20)
HYBRID
然后就是华为的hybrid,hybrid有一个untag和tag还有一个pvid的配置
例如:
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
首先hybrid口在收到一个报文的时候,会判断是否有vlan信息,如果没有就把pvid打到这个报文上去,如果有的话,就看是否允许通过,这一点与trunk口是类似的,所以刚开始我请教别人的时候,别人回答是:hybrid口就是trunk口,但是总有不同的地方。
hybrid在发送数据包的时候就要看tag和untag,如果报文标签上的vlan是需要tag的那么就直接发送即可,如果需要untag,那么就需要去掉vlan标签了。接下来实验研究分析一下。
拓扑没变,LSW2的e0/0/1口配置如下:
interface Ethernet0/0/1
port hybrid pvid vlan 20
port hybrid tagged vlan 10
port hybrid untagged vlan 20
客户端2ping客户端1抓取LSW1和LSW2的数据包
没有看到什么标签信息,因为untag的缘故vlan20的标签被去除了。
更改LSW2的e0/0/1口配置:
interface Ethernet0/0/1
port hybrid pvid vlan 20
port hybrid tagged vlan 10 20
然后还是客户端2ping客户端1,抓包
可以看到打上标签的报文了,但是因为对端access VLAN 10与vlan 20不同,所以被丢弃,不能ping通。