华为交换机设备上端口链路类型access、trunk、hybrid如图示:

 

由上图可知三种端口类型的基本工作原理:
a)access端口
 发送(从交换机内部往外发送):
  带有vlan tag:删除tag后,发送
  不带vlan tag:不可能出现
接收:
   带有vlan tag:若该tag等于该access端口的pvid,则可以接收,进入交换机内部不带vlan tag:添加该access端口的pvid,进入交换机内部
b)trunk端口(允许发送native VLAN数据的时候,可以不加tag)
发送(从交换机内部往外发送):
      带有vlan tag:若tag等于该trunk端口的pvid,则删除tag后发送;否则保留tag直接发送
     不带vlan tag:不可能出现
接收:
   带有vlan tag:保留该tag,进入交换机内部
   不带vlan tag:添加该trunk端口的pvid,进入交换机内部
c)hybrid端口(允许发送多个VLAN数据的时候,可以不加tag)
发送(从交换机内部往外发送):
    带有vlan tag:
是否带tag进行发送,取决于用户配置(用户可以配置tagged list,untagged list)
   不带vlan tag:不可能出现
接收:
     带有vlan tag:保留该tag,进入交换机内部
     不带vlan tag:添加该hybrid端口的pvid,进入交换机内部

在设备上允许trunk和hybrid端口同时存在,但是不能将hybrid端口直接改为trunk端口(hybrid--》access---》trunk),反之亦然(早期是这样,现在不知道改没改)。

hybrid端口可以允许多个vlan的数据不带tag,而802.1q的trunk只能是native vlan(即pvid)对应的vlan的数据不带tag,应该说hybrid可以实现trunk端口的特性。实际使用时都可以用hybrid端口,而不用trunk。


基于上面的分析可知交换机接口出入数据处理过程如下 

access接口:access端口只能承载一个vlan的流量,通常用于交换机与pc相连的接口,当access接口收到一个数据帧时,先判断是否有vlan信息,如果没有则打上自己的PVID,如果有则直接丢弃;当access接口要转发一个数据帧时,先判断该侦的vlan是否和自己在一个vlan,如果是,则剥离vlan信息,再转发,如果不是,则丢弃

trunk接口:trunk接口可以承载多个vlan的流量,但在华为交换机上默认情况下只允许默认的vlan1的流量通过,只允许对默认vlan不打标记。通常用于与其它交换机相连的接口。当trunk接口收到一个数据帧时,先判断是否允许该vlan的流量通过,如果允许,则转发到相应的接口,由相应的接口进行处理,如果不允许,则丢弃。trunk接口发送数据帧时,同样判断是否允许该vlan通过,如果允许则转发到相应的接口,由相应的接口进行处理,如果不允许,则直接丢弃。

hybrid接口:hybrid接口可以承载多个vlan的流量,可用在与pc或者交换机相连的接口,与trunk接口的最大区别是可以对任何vlan打标记或不打标记。当hybrid接口收数据帧时,先判断该数据真是否有vlan信息,如果有,则看该接口是否对该vlan打标记,如果对该vlan打标记,则直接转发到相应的接口,由相应的接口进行处理;如果没有明确说对该vlan打标记,则丢弃。因为默认情况下,hybrid接口只允许默认vlan的数据帧通过,如果要允许其它vlan通过,就要对相应的vlan打标记。如果收到的数据帧没有任何标记,则标记为自己的PVID。在接口上配置对某些vlan标记所起的作用只是允许和不允许该vlan的数据帧通过的问题,在接口上配置为对某些vlan不打标记时只在接口发送数据帧时起作用,当接口收数据时,是不起作用的。hybrid接口发送数据帧时,若该数据帧没有标记,则判断该数据帧的标记vlan和自己收否在同一个vlan,如果在同一个vlan,则去掉标记后转发;如果该数据帧和自己不在同一个vlan,则判断接口对该数据帧标记还是不标记,如果不标记,则去掉标记后再进行转发,如果标记,则直接转发,若没有明确说明是标记还是不标记,则直接丢弃。如果要发送的数据帧没有标记,则直接转发。当把一个接口加入到vlan2后,再把该接口配置为hybrid接口时,该接口的PVID就变成里vlan2,同时对vlan2的数据帧不打标记

注:对于华为交换机缺省VLAN被称为Pvid Vlan”, 对于思科交换机缺省VLAN被称为Native Vlan”


以下案例可以帮助大家深入理解华为交换机的hybrid端口模式
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此时inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通时数据所走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1访问inter e0/2下的所接的pc2为例进行说明

pc1 所发出的数据,由inter0/1所在的pvid vlan10封装vlan10的标记后送入交换机,交换机发现inter e0/2允许vlan 10的数据通过,于是数据被转发到inter e0/2上,由于inter e0/2上vlan 10是untagged的,于是交换机此时去除数据包上vlan10的标记,以普通包的形式发给pc2,此时pc1->p2走的是vlan10

 来分析pc2给pc1回包的过程,pc2所发出的数据,由inter0/2所在的pvid vlan20封装vlan20的标记后送入交换机,交换机发现inter e0/1允许vlan 20的数据通过,于是数据被转发到inter e0/1上,由于inter e0/1上vlan 20是untagged的,于是交换机此时去除数据包上vlan20的标记,以普通包的形式发给pc1,此时pc2->pc1走的是vlan20