
Ingress+MMU+Egress Switch Model
上图表示了以太网帧在进入交换芯片以后,一个基本的物理处理流程是从“Ingress”单元到“MMU”单元再到“Egress”单元,该过程描述了以太网交换芯片对帧从进入到送出的处理流程。
Ingress模块包含下面一些主要处理功能:1、数据包检查、拆分;2、VLAN处理;3、地址学习;4、L2交换;5、L3路由交换;6、快速过滤处理(FFP);7、其他附加功能,如CPU包处理、Mirror、Trunk功能等。
MMU模块负责对帧进行缓存排队(buffering)处理和调度处理(scheduling),它从Ingress逻辑中接收帧,并调度、暂存这些帧,随后传送到Egress逻辑。所有的帧存储和对帧缓存的维护管理都是通过MMU完成的,MMU表现为调度的核心所在。
Egress模块包含下面一些主要处理功能:1、从MMU请求帧传送;2、若帧输出不需要带Tag则它将VLAN Tag移除;3、如果端口是uplink端口并且HTLS模式使能,则添加HTLS包头;4、对L3 IPMC报文进行修正;5、将IPMC报文复制到VLAN中每个正确的端口;6、可能的话重新计算CRC(看Tag是否有变化);7、Egress对包的老化做处理;8、Egress速率控制;9、将帧传送给发送MAC;若是往CPU方向传送的帧,则CMIC Egress将把帧通过DMA通道直接传送给CPU。
下面从交换机芯片原理详细讲解VLAN 的处理原理,首先交换机芯片内部处理的所有的包都是带有VLAN Tag信息的,所以对于进入芯片的每一个数据包,都会赋予一个VLAN ID。
1、无tag报文进入交换机处理流程
如果配置了基于端口的VLAN就会打上端口的PVID,access端口就是指端口加入某个VLAN就是该端口的PVID,如果是trunk和hybird端口PVID默认是1,也可以手工修改为其他VLAN;
如果配置了基于MAC地址、IP子网或基于网络层协议的VLAN,就根据匹配的对应字段信息打上对应的Tag,如果没有匹配同样会打上端口的PVID。
2、有tag报文进入交换机处理流程
如果是Access端口则看所带的Tag和端口缺省VLAN是否相同,相同就允许进入,否则丢弃该Tag报文;
如果是Trunk或Hybird端口则看该端口是否允许该VLAN通过,否则丢弃该Tag报文。
3、无Tag报文离开交换机处理流程
因为交换机内部所有报文都带Tag,因此该情况不存在。
4、有Tag报文离开交换机处理流程
如果是Access端口则跟该端口PVID相同的报文剥离TAG离开交换机;
如果是Trunk端口则携带Tag离开交换机,但Tag和端口PVID一样就会剥离Tag离开交换机;
如果是Hybird端口则根据客户配置那些VLAN携带Tag,那些VLAN剥离Tag离开交换机。
交换机通过给进入交换机的所有数据包都打上Tag,从而区别不同VLAN的数据,实现不同VLAN的隔离,然后再通过控制报文离开交换机的方式,实现跨交换机的的相同VLAN的互通。