发送过程:将数据包发送到以太网段上 , 假如该网段的主机不能识别802.1Q标签头 , 那么就将该标签头去掉 , 假如是与其他交换机互连的端口 , 一般不去掉 。
具体的接收、查询和发送过程可以参考TNETX 3270的相关资料 , 下面是一个无标签头的数据包的接收到发送的过程 。
图5 一个无标签头的数据包的处理流程
其中具体的路由过程参考TNETX 3270资料 。图6 是另外的一个例子 。
图6 一个互连的例子
以图6为例 , 假如Chris 发送一个数据包给Jackie , 那么 , 处理的过程如下:
Chris 发送一个数据包给Jackie 。
数据包到达交换机1的端口9 , 这是一个无标签头的包 , 所以交换机1 给该数据包添加一个VLAN ID 。
根据目的MAC地址和VLAN ID , 查询数据库 , 知道该数据包需要发送到24(或25、26号端口 , 这3 个端口被捆绑到一起 , 对上层来说 , 这3 个端口就好象一个端口 , 实际上交换机会根据3 个端口的流量来决定是从哪个端口往外发送) 。假如不知道 , 则该数据包还会被发送到端口6 , 当然 , 在发送到端口6 的以太网段时 , 会先将标签头去掉 , Altaf收到后会丢弃这个数据包 , 因为目的地址不是它 。由于端口24是Tag Aware端口 , 所以 , 发送到24 好端口的数据包的标签头不去掉 。
TNETX 4090交换机收到这个数据包后 , 根据VLANID和目的MAC 地址在它的数据库中查找路由 , 最后 , 它知道该数据包应该发送到端口4(5或6) , 标签头仍然不去掉 。
交换机2收到后 , 根据VLAN ID和目的MAC地址 , 在它的数据库中查找路由 , 知道该数据包需要发送到端口2 。于是将该数据包发送出去 。注重 , 发送出去的数据包需要去掉标签头 。
以上我们讨论了VLAN收发数据包的过程 , 它的具体实现已经由以太网交换机的交换芯片实现了 , 有爱好者可参考交换芯片的技术资料 。
二、802.1P协议
802.1p协议定义了优先级的概念 , 对于那些实时性要求很高的数据包 , 主机在发送时就在前面提到MAC桢头增加的3位优先级中指明该数据包优先级高 , 这样 , 当以太网交换机数据流量比较多时 , 它就会考虑优先转发这些优先级高的数据包 。
目前部分以太网交换机所采用的交换芯片只支持2种优先级 , 也有一些能支持4个优先级 。
802.1p协议还定义了GARP--Generic Attribute Registration Protocol 。这里的Attribute是指组播MAC地址、端口过滤模式和VLAN等属性 , GARP协议实际上可以定义很多交换机应该具有的特性 , 目前 , 它定义了GMRP--GARP Multicast Registration Protocol和GVRP--GARP VLAN Registration Protocol两个协议 , 以后会根据网络发展的需要定义其他的特性 。GARP定义了以太网交换机之间交换这些特性信息的方法 , 如何发送数据包 , 接收的数据包如何处理等等 。
GMRP协议是一个动态二层组播注册协议 , 它的很多方面跟IGMP(三层组播协议)类似 , 对于IP地址来说 , D类IP地址是组播地址 , 实际上 , 对于每一个IP组播地址 , 都有一个组播MAC地址跟它对应 , 802.1p协议就是根据组播MAC地址来在以太网交换机上注册和取消组播成员身份的 , 而IGMP是根据组播IP来治理的 。当然 , 假如以太网交换机没有实现GMRP协议 , 那么就只能通过静态配置来实现组播了 。
关于为什么需要二层组播协议?我们在具体讨论一下 。与协议IGMP一样 , 假如我们在自己的局域网内成立一个组播组 , 可能我们的局域网包含了很多交换机 , 假如这些交换机没有实现二层组播协议的话 , 那么 , 某个组员给其他组员发送数据包时 , 交换机就会将该数据包向所有的端口广播 , 因为交换机不知道哪个端口有人加入了该组播组 , 唯一的解决办法就是治理员配置交换机 , 这样 , 才能将这种广播转发数据包的发送方式限制住 , 而组播本身是动态的 , 所以 , 通过这种靠治理员的配置来实现组播的方式是不现实的 。因此 , 就需要有一个二层组播协议来动态治理组员 。这就是为什么需要二层组播协议的原因 , 目前 , 许多高档的交换机都把实现802.1p和802.1Q协议作为一个主要的性能指标 。
推荐阅读
- 边界网关协议 BGP
- 互联网协议 IPv6
- 互联网协议 IPv4协议
- TCP/IP协议
- 网络传输协议
- TCP-传输控制协议
- rip协议理解
- MDLC协议
- 802.11协议族简介
- 1 TCP/IP协议栈在嵌入式异构网络中的应用