1、情况列举 Switch 收发 Switch 对标记的处理 remarkAccess (接收) Tagged = PVID 不接收 注:部分高端产品可能接收。Access (接收) Tagged =/ PVID 不接收 注:部分高端产品可能接收。Access (接收) Untagged 接收 增加 tagPVID 从 PCAccess (发送) Tagged = PVID 转发 删除 tag Access (发送) Tagged =/ PVID 不转发 不处理 Access (发送) Untagged 无此情况 无此情况 无此情况Trunk (接收) Tagged = PVID 接收 不修改 t
2、ag Trunk (接收) Tagged =/ PVID 接收 不修改 tag Trunk (接收) Untagged 接收 增加 tagPVID Trunk (发送) Tagged = PVID If Passing then 转发 删除 tag Trunk (发送) Tagged =/ PVID If Passing then 转发 不修改 tag Trunk (发送) Untagged 无此情况 无此情况 无此情况(注)Hybrid (接收) Tagged = PVID 接收 不修改 tag 对端是 trunkHybrid (接收) Tagged =/ PVID 接收 不修改 tag 对
3、端是 trunkHybrid (接收) Untagged 接收 增加 tagPVID 类 TrunkHybrid (发送) Tagged = PVID Tag 和 untag 中列出的 vlan可以 passing 看Tag项和 untag项 Hybrid (发送) Tagged =/ PVID Tag 和 untag 中列出的 vlan可以 passing 看 Tag项和 untag项 Hybrid (发送) Untagged 无此情况 无此情况 无此情况(注)我来解释一下收报文:Acess端口 1、收到一个报文,判断是否有 VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有
4、则直接丢弃(缺省)发报文:Acess端口: 1、将报文的 VLAN信息剥离,直接发送出去 收报文:trunk端口: 1、收到一个报文,判断是否有 VLAN信息:如果没有则打上端口的 PVID,并进行交换转发,如果有判断该 trunk端口是否允许该 VLAN 的数据进入:如果可以则转发,否则丢弃发报文:trunk端口: 1、比较端口的 PVID和将要发送报文的 VLAN信息,如果两者相等则剥离 VLAN信息,再发送,如果不相等则直接发送收报文:hybrid端口: 1、收到一个报文2、判断是否有 VLAN信息:如果没有则打上端口的 PVID,并进行交换转发,如果有则判断该 hybrid端口是否允许
5、该 VLAN的数据进入:如果可以则转发,否则丢弃发报文:hybrid端口:1、判断该 VLAN在本端口的属性(disp interface 即可看到该端口对哪些 VLAN是 untag, 哪些 VLAN是 tag)2、如果是 untag则剥离 VLAN信息,再发送,如果是 tag则直接发送先呈请一下上面的几个帖子的术语:Tag为 IEEE802.1Q协议定义的 VLAN的标记在数据帧中的标示;ACCESS端口,TRUNK 端口是厂家对某一种端口的叫法,并非 IEEE802.1Q协议的标准定义;这个数据交换的过程比较复杂,如果想解释的话,首先要了解一下几个IEEE802.1Q协议的定理;1、下面
6、是定义的各种端口类型对各种数据帧的处理方法;Tagged数据帧 Untagged数据帧in out in outTagged端口 原样接收 原样发送 按端口 PVID打 TAG标记按照 PVID打TAG标记Untagged端口丢弃 去掉 TAG标记 按端口 PVID打 TAG标记原样发送2、所谓的 Untagged Port和 tagged Port不是讲述物理端口的状态,而是讲诉物理端口所拥有的某一个 VID的状态,所以一个物理端口可以在某一个 VID上是 Untagged Port,在另一个 VID上是 tagged Port;3、一个物理端口只能拥有一个 PVID,当一个物理端口拥有了一
7、个 PVID的时候,必定会拥有和 PVID的 TAG等同的 VID,而且在这个 VID上,这个物理端口必定是 Untagged Port;4、PVID 的作用只是在交换机从外部接受到 Untagged 数据帧的时候给数据帧添加 TAG标记用的,在交换机内部转发数据的时候 PVID不起任何作用;5、拥有和 TAG标记一致的 VID的物理端口,不论是否在这个 VID上是Untagged Port或者 tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的 tagged 数据帧;6、拥有和 TAG标记一致的 VID的物理端口,只有在这个 VID上是 tagged Port,才可以接
8、受来自交换机外部的标记了这个 TAG标记的 tagged 数据帧;以下是神州数码对命令的定义(各个厂家对命令的定义可能不一定一致,但是都必须遵循上面的定理):1、Trunk 端口就是在一个物理端口上增加这个交换机所有 VLAN的 VID标示,并且除了和这个物理端口 PVID标示一致的 VID标示为 Untagged Port外,在其他的 VID上都是 Tagged Port;2、Access 端口就是指拥有一个和 PVID标记相同的 VID的物理端口,在这个VID上,遵循定理一定为 untagged Port;在了解了以上的基础理论之后,我们在来看一下楼主的问题:一个数据包从 PC机发出经过
9、ACCESS端口-TRUNK 端口-TRunk-ACCESS-PC 数据包发生了怎么样的变化?我们先把上述的描述变换为 IEEE802.1Q的标准描述:一个数据包从 PC机发出经过(Untagged 数据帧)ACCESS端口(PVID 定义为 100,VID=100=Untagged Port)-TRUNK端口(PVID 定义为 1出厂配置,没有更改,VID=1=Untagged Port,VID=100=tagged Port)-另一个交换机的 TRunk端口(PVID 定义为 1出厂配置,没有更改,VID=1=Untagged Port,VID=100=tagged Port)-另一个交换
10、机的 ACCESS端口(PVID 定义为 100,VID=100=Untagged Port)-PC数据包发生了怎么样的变化?(Untagged 数据帧)首先假设两台交换机刚刚开机(MAC 地址表为空)从 PC机发出的数据帧进入交换机的 ACCESS端口以后,会按照这个端口的 PVID打 100的 Tag标记,根据交换机的转发原理,交换机会把这个数据帧转发给 VID=100的所有端口(除了进口以外),这个过程叫做 VLAN Flood;参照上面的定理 1;由于 Trunk端口拥有 VID=100,所以才可接受这个标记 Tag为 100的 tagged数据帧;参照上面的定理 5;由于 Trunk
11、端口在 VID=100上为 tagged Port,所以在发送数据帧出交换机的时候,不改变 Tagged数据帧的结构;参照上面的定理 1;到了另一个交换机的 Trunk端口的时候,由于 Trunk端口拥有 VID=100,所以才可接受这个标记 Tag为 100的 tagged数据帧;参照上面的定理 6;另一个交换机的 Trunk端口,接收到标记 tag为 100的 tagged数据帧,并不作任何的更改;参照上面的定理 1;另一个交换机收到到标记 tag为 100的 tagged数据帧,根据交换机的转发原理,交换机会把这个数据帧转发给 VID=100的所有端口(除了进口以外);参照交换机交换原理
12、(受到一个未知目的 MAC数据帧);这样另一个交换机的 ACCESS端口就可以收到标记 tag为 100的 tagged数据帧;参照上面的定理 5;另一个交换机的 ACCESS端口在发出标记 tag为 100的 tagged数据帧的时候,会去掉 TAG标记,转发 untagged数据帧给 PC;参照上面的定理 1;这样 PC机就收到了这个数据;=其实就是 cisco 中的 trunk 和 access 的区别 端口接收数据时: 如果端口是 tagged 方式,当数据包本身不包含 VLAN 的话,输入的数据包就加上该缺省 vlan;如果数据包本身已经包含了 VLAN,那么就不再添加。 如果是 u
13、ntagged 方式,输入的数据包全部都要加上该缺省 vlan。不管输入的数据包是否已经有 VLAN 标记。 端口发送数据时: 如果端口是 tagged 方式,如果端口缺省 VLAN 等于发送的数据包所含的 VLAN,那么就会将 VLAN 标记从发送的数据包中去掉;如果不相等,则数据包将带着 VLAN 发送出去,实现 VLAN 的透传。 如果是 untagged 方式,则不管端口缺省 VLAN 为多少,是否等于要输出的数据包的VLAN,都会将 VLAN ID 从数据包中去掉。PVIDPVID 为 Port Vlan ID,也就是端口的虚拟局域网 ID 号,关系到端口收发数据帧时的VLAN TA
14、G 标记 去超市买东西有个扫描设备扫描一下商品上的标签,然后价格就会出现 商品上的标签就好比一个标记,而扫描器就好比解读这个标记的设备 PVID 和VID(标记)之间的关系就好比 扫描器和商品标记的关系,不同的是 PVID 不仅用来解析ViD 也用来生成 VID 终端设备比如电脑 PC 等,自身不具备产生标记的能力,因为数据帧格式是固定的,发送端自身不知道自身是哪个 VLAN 成员那么他自己当然不可能在帧内标记 VLANid 了,标记和解标记都是由中间设备来完成的. 交换机上的端口分为两种 一种是接入层端口直连设备的,叫做 access 一种是交换机和交换机之间的端口负责汇聚的叫做 trunk
15、 access 端口负责接终端设备,他收到一个帧的时候,如果帧这个没有标记他就用自己的 pvid 给他打上标记,他在发出一个帧时如果 VID=PVID 就去掉标记以保证传送给终端设备的帧没有被变动过,pvid 是在划分 vlan 时候每个端口都 有的属性的默认情况下思科交换机中每个端口初始 pvid 是1,表示他是 vlan1的成员们如果你给他划分了其他VLAN 那么 PVID 相应会发生更改 ACCESS 端口的特点是 只允许符合 PVID 的流量通过 trunk 的意思是他是一条中继链路允许各种 VLAN 通过,他的规则和 acc 差不多,当收到一 个没有 tag 的标记的时候就用自己的 pvid 给他标记,当发送一个帧时候如果 vid=pvid 则去掉 pvid,与 access 不同的是,trunk 有一个 属于自己的本征 VLAN,用来发送一些cdp,bpdu 等交换机间联系的数据或者管理流量,从交换机自身产生的帧在发出去的时候是不会带标记的,因为 VID=pvid 所以标记被去掉,而对端接收到没有标记的帧时候就会用自身本征 VLAN 的信息给他加上标记,然后查看交换表如果发现目的地址是自己则去掉 标记,如果发现目的 mac 地址不是自己则继续转发给其他 trunk 同时去掉标记(因为一个交换机只有一个本征 VLAN 所有 pvid=vid 去掉标记)