以openwrt为例,下图是mt7621(glinet mt1300)中switch配置图
该switch一共有7个port,一个连接CPU,还有6个可供外部使用,上图只显示了6个port;
一个switch可以设置多个VLAN(虚拟局域网 Virtual Local Area Network),如上图设置了两个VLAN;
VID
VLAN的ID,一个port可以属于多个VLAN,也就是拥有多个VID,如上图LAN3(port2)拥有VID 1、2;
PVID
基于端口的VLAN ID(Port-base VLAN ID),一个port只允许有一个untag存在,而那个untag所属的VLAN的VID成为这个port的pvid,如上图LAN4(port3)的PVID为1,WAN(port4)的PVID为2;
untag
接收报文:
如果该报文untag,允许报文进入该端口所属VLAN中,并给报文打上PVID的vlan tag;
如果该报文带有tag并且tag与该port的PVID相等,则单独接收到该VLAN中,否则丢弃;
发送报文:
将报文中的tag剥掉,发送出去(VLAN中的报文一定会包含tag,所以不存在发送前没有tag的报文)
tag
接收报文:
如果该报文带有tag并且tag与该port所属的VLAN的vid相等,则单独接收到该VLAN中,否则丢弃;
发送报文:
将带有tag的报文,直接发出(VLAN中的报文一定会包含tag,所以不存在发送前没有tag的报文)
access端口
该端口只属于一个VLAN,并且为untag;表现就是untag端口;
trunk端口
该端口只属于多个VLAN,并且全部为tag;表现就是多个tag端口;
hybrid端口
该端口只属于多个VLAN,并且分别拥有tag和untag;
接收报文:
tag功能优先,所以会先判断报文是否有tag,如果有则接收进入tag与VID相等的VLAN中;
否则进入untag功能,如果该报文untag,允许报文进入该端口所属VLAN中,并给报文打上PVID的vlan tag,如果该报文带有tag并且tag与该port的PVID相等,则单独接收到该VLAN中,否则丢弃;
发送报文:
tag功能优先,所以会先判断报文tag是否与其所属的VLAN的VID相等,如果相等则发出;
否则进入untag功能,将报文中的tag剥掉,发送出去(VLAN中的报文一定会包含tag,所以不存在发送前没有tag的报文)