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字节。
- SSP处理流程(以DX107为例)
- HBase1.0.0源码分析之请求处理流程分析以Put操作为例(一)
- HBase1.0.0源码分析之请求处理流程分析以Put操作为例(二)
- 第三方登录之QQ登录——OAuth2.0处理流程介绍(以QQ登录为例)
- 数据分类流程(以titanic分类为例)
- Qt事件处理机制整个流程--以鼠标在一个窗口中点击为例
- Qt事件处理机制整个流程--以鼠标在一个窗口中点击为例
- QEMU(基于QEMU 2.0.0)设备初始化流程 - realizefn 调用流程(以 RTC为例)
- S5PV210的异常处理第一阶段(以中断为例)
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- 第三方登录之QQ登录(二)——OAuth2.0处理流程介绍(以QQ登录为例)
- 字符串处理,以HDU 2100为例
- 以Sequence方式处理上传的文件(此处文件以图片为例)
- 流程以客户为中心
- ARM 中断驱动程序的开发流程(以s3c2440开发板为例)
- ZedBoard的启动流程(以运行linux操作系统为例)
- csr8670--sink工程的大致工作流程分析(以speaker为例)一
- 函数调用方式__stdecl _stdcall _fastcall __thiscall介绍
- java基础学习日志20110226
- VC++6.0禁止改变单文档窗口大小,修改标题的实现
- Java实现图像全屏显示
- Web分析
- SSP处理流程(以DX107为例)
- WinCE系统字体的设置
- 用apache反向代理IIS实现并存
- WinCE系统声音定制
- 感知春运(2)回家
- 发牌+洗牌+前台显示搞定了
- 【Swing入门教程】一步一步做Netbeans(3):定制可显示多行的JToolTip
- 平台+插件软件设计思想及基于COM的原型实现
- 各种信息在计算机中的表示(数字、字母、汉字)