各种端口类型对各种数据帧的处理方法:
所谓的Untagged Port和tagged Port不是讲述物理端口的状态,而是将是物理端口所拥有的某一个VLAN ID的状态,一个物理端口可以在一些VLAN ID上是Untagged Port,在另一些VLAN ID上是tagged Port;
我的理解:
ACCESS:PVID的Untagged Port;
接收时:如果是Untagged帧,按照PVID打上tag然后寻找相同VLAN ID的端口转发;如果是Tagged帧,丢弃;
发送时:如果是Untagged帧,直接发出;如果是Tagged帧,VLAN ID等于PVID的话就去掉tag然后发出,否则丢弃;
TRUNK:多个VLAN ID(根据permit定义或GVRP学习)的Tagged Port和PVID的Untagged Port;
接收时:如果是Untagged帧,按照PVID打上tag然后寻找相同VLAN ID的端口转发;如果是Tagged帧,VLAN ID在Tagged Port有定义时直接寻找相同VLAN ID的端口转发,否则丢弃;
发送时:如果是Untagged帧,按照PVID打上tag然后发出;如果是Tagged帧,VLAN ID在Tagged Port有定义时直接发出,否则丢弃;
HYBRID:任意VLAN ID的Tagged或Untagged Port,PVID的Untagged Port;
接收时:如果是Untagged帧,按照PVID打上tag然后寻找相同VLAN ID的端口转发;如果是Tagged帧,VLAN ID在Tagged Port有定义时直接寻找相同VLAN ID的端口转发,VLAN ID在Untagged Port有定义时去掉tag后寻找相同VLAN ID的端口转发,否则丢弃;
发送时:如果是Untagged帧,按照PVID打上tag然后发出;如果是Tagged帧,VLAN ID在Tagged Port有定义时直接发出,VLAN ID在Untagged Port有定义时去掉tag后发出,否则丢弃;
一个简单实例:
一个数据包从PC1发出经过ACCESS->TRUNK->TRUNK->ACCESS->PC2数据包发生了怎么样的变化?
我们先把上述的描述变换为IEEE802.1Q的标准描述:
一个数据包从PC1机发出经过(Untagged 数据帧)
SWITCH A:
ACCESS端口(PVID定义为100)
TRUNK端口(PVID定义为1,tagged Port:VLAN 100)
SWITCH B:与A相同
PC1数据包发生了怎么样的变化?(Untagged 数据帧)
首先假设两台交换机刚刚开机(MAC地址表为空)从PC1发出的数据帧进入SWITCH A的ACCESS端口以后,会按照这个端口的PVID打100的Tag标记,根据交换机的转发原理,交换机会把这个数据帧转发给VID=100的所有端口(除了进口以外),这个过程叫做VLAN Flood;
由于Trunk端口拥有VID=100,所以接收到这个标记Tag为100的tagged数据帧;
由于Trunk端口在VID=100上为tagged Port,所以在发送数据帧的时候,不改变Tagged数据帧的结构;
到了SWITCH B的Trunk端口的时候,由于Trunk端口拥有VID=100,所以接收到这个标记Tag为100的tagged数据帧;
SWITCH B的Trunk端口,接收到标记tag为100的tagged数据帧,并不作任何的更改,根据交换机的转发原理,交换机会把这个数据帧转发给VID=100的所有端口(除了进口以外);(因为此时交换机还没有完整的ARP表,否则会单播发送)
这样SWITCH B的ACCESS端口就可以收到标记tag为100的tagged数据帧;
ACCESS端口在发出标记tag为100的tagged数据帧的时候,会去掉TAG标记,转发untagged数据帧给PC2;
这样PC2就收到了这个数据;
阅读(2547) | 评论(0) | 转发(0) |