CAVIUM包处理流程总结

【PIP/IPD部分】
 1、input部分
PKI模块从packet interface 模块接收到包, 执行头检测和流分类,    把包存在L2/DRAM中,PKI模块创建一个结构体,这个结构体包括SSO进行调度,排序,同步的所需要的信息,PKI模块将包提交给SSO    SSO将这个包放到所选择的对应的QOS输入队列上。
        
2、入口顺序:
入口顺序是PKI上接收的同一个流的数据, 并且被提交给SSO

3、packet data buf
储存接收到的packet data,    IPD从FPA中申请一个buf,    (FPA管理空闲的buf,   FPA的buf空间是在系统启动的时候申请的),然后IPD拷贝packet data的到这个buf,这个buf通常在把包数据读到内部存储器之后由PKO释放内存回到FPA, 

4、
五元组
五元组是一种最常见的根据ip来区分流的网络元素组合

5、流
一个流就是一个共享五元组的包组合

6、
五元组哈希值
五元组哈希通常用于包处理流程,一般用CRC(循环冗余算法),用CRC可以将一个五元组转化成一个16bit的数字,这个16比特值和五元组代表的意义是一样的,五元组用来区分流,PIP负责读包头,然后计算五元组哈希值

7、
tag value是一个32位的数字,第一个tag value 是由PIP/IPD在接收到packet的时候设置的,first tag value由3个区别开的部分组成
31-24位衡为0
23-16位是接收到packet的接口号或者全是1
15-0位是PIP计算的五元组哈希值

15-0位设置为五元组哈希值    的目的是让first tag 来区分流。如果first tag 对于每一个流都有唯一的tag,则OCTION可以平行处理多个流,这些流之间互不干扰,这个tag的全部32位都可以在包处理流程的不同阶段被内核更改,或者来指定出接口

8、tag type,first tag type
一个tag元组包括一个tag value和一个tag type
在包处理流程的不同阶段,tag元组可以被设置为不同值,下面会介绍tag type是怎样影响SSO调度的

9、ORDERED tag type  并行处理
   多个相同流的具有一个OEDERED tag tpe的包可以被多个核心并行处理,因此ORDER并不是表示同一时间只有一个包的意思,这样可以让多个核心同时处理同一个流的多个包,这样可以提升效率
    这种type可以用于允许并行的包处理流程

10、ATOMIC tag type  序列化处理
这种type用来加锁,只有一个具有某tag元组的包会得到这个ATOMIC锁,ATOMIC type特点是同一时间只有一个包在处理,并且严格保证入口顺序。
不同的流可以并行处理,但是同一个流的数据保证one at a time,正在等待的新包(没有获得锁的)是不会被调度的,所以核心不会失速,只有得到锁,包才会被调度。
核心可以改变包的tag type,如果first tag type是ORDERED,核心可以将这个包的ORDERED转换成ATOMIC类型的,这样就能使SSO来保证带有新type的包实现 one at a time,这就为内核提供了一个硬件的原子锁来保护特定区域,新type的包严格按照入口顺序排列,不是按照请求顺序或者随机顺序,当等待锁的时候,包也会被持续的分配给内核,SSO来通知内核何时锁被打开,此时这个包才能被内核处理

当first tag type 就被设置成ATOMIC的,则内核不会将type转换成OEDERED,这样就会使处理速度变慢,所以ATOMIC类型只在需要的时候才能用

11、NULL tag type
这种type既不有序也不序列化,多核心可以处理多个包,SSO不管顺序。    

12、QOS:
   QOS是0-7这8个整数,用来标示包处理的优先权,当收到包,PIP、PID会 为这个包计算QOS,并把这个QOS值写入work队列节点,0、7没有被定义谁优先级高谁优先级低,优先级也没有被要求必须是线性的,通常,优先权是可以配置的,只有一种例外情况,如果爱PKO输出队列中使用固定的优先权,队列的索引越小,则优先级越高,固定优先权输出队列也不是必须被要求的

13、work队列节点
包含tag calue, tag type, QoS value,group, 和一个指向packet data buf 的指针,IPD从FPA中申请WQE buffer,PIP和PID填充这个WQE fileds,并将WQE 发送给SSO,用add_work操作。
 
14、add work操作
用来将一个WQE发送给SSO

15、
Qos 输入队列
SSO有8个QoS 输入队列(0-7),每一个队列对应一个QoS value,当一个WQE被发送到SSO,则SSO会 根据WQE的QoS value将这个
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值