SSP处理流程(以DX107为例)

来源:互联网 发布:整精米率检验数据 编辑:程序博客网 时间:2024/06/08 10:16




1.Ports MAC Rx
对于待接收的包,首先检查其合法性,在DX107中,会过滤包长小于64字节的包;然后就是为报文分配buffer。
如果待接收的包为untag包,则打上ingress端口缺省的COS和PVID;如果待接收的包为priority-tagged包,则只打上ingress端口的缺省PVID。

2.Header Deconde Engine
经过合法性检查之后,就要对报文头部进行解析,对于MAC层包头,要解析的字段是目的MAC、源MAC、COS值、VID、二层协议类型和三层协议类型,为后面的环节使用。

3.policy Engine(ACL表)
这是可选处理环节,可通过寄存器配置选择是否进行策略处理。如果是,那么报文就会在ACL表中逐条进行特征值匹配,如果匹配上了某条规则,就会使用该规则预设的操作进行处理。

4.Bridge Engine(转发表,VLAN表)
如果该报包在policy模块进行了镜像或提包策略操作,则要跳过该模块,只进行源MAC地址学习。
如果vlan ingress filter配置使能了,则会检查ingress端口是否在报文所携带的vlan中,如果不是,则会丢弃该报文。

通过查找MAC表,进行源MAC地址学习和目的MAC地址转发。
源MAC地址学习:以源MAC地址+VID为索引检索MAC地址表,如果查找不到相应表项,就将源MAC地址+VID+源端口号等信息写入MAC地址表。
目的MAC地址检索及转发:
如果待转发的包为单播包,则以目的MAC地址+VID为索引检索MAC地址表,如果找到了相应表项,就正常转发到对应的egress端口;如果找不到,就向所有该VLAN中的成员端口进行洪泛。
如果待转发的包为广播包,则向所有该VLAN中的成员端口进行广播。
如果待转发的包为组播包,则以组播MAC地址+VID去查找组播表,如果查到相应表项,则向所有组播成员端口转发;如果查找失败,则以vlan去查VLAN表,向所有vlan成员端口进行转发。

5.Multi-Target Replication
上述模块称为ingress模块,经过ingress模块后,可能会有包被丢弃,对于丢弃的包,要释放其所占buffer。对于每个可以转发出去的报文,交换芯片会为每个报文在每个egress方向分配一个标识该报文descriptor,该descriptor主要包含了一个TC值,用于报文在egress方向的队列调度。在队列调度中,当报文被成功发送或被丢弃后,该descriptor都会被释放。只有当报文相关的所有descriptor都释放后,该报文的buffer才会被释放。

6.Queue and port Shaping
DX107在每个端口egress方向有8个优先级队列,每个队列都使用令牌桶对进行待入队列的descriptor进行流量整形。

7.Transmit Scheduler
DX107在端口egress方向出队列,支持SP调度、WRR调度、SP+WRR调度。

8.Header Alteration
根据descriptor从buffer中读取相应的报文,并获取其vlan,如果egress端口是以untag方式加入该vlan,则要剥去报文的vlan tag。
如果egress端口为CPU口,还要加上DSA Tag。

9.Ports MAC Tx
如果在Header Alteration模块中,包头信息被改变了,则要重新生成CRC检验。
如果进入交换芯片的是64-67字节的tag包,而在egress端口处要过滤为untag包,则需要补齐为64字节。


原创粉丝点击