转发框架分为两种:RTC(run to cpmplete)运行至终结,pipeline(流水线)模型
1、RTC模型
什么是RTC模型,通俗的讲就是一个程序的几个逻辑功能都会在一个CPU上或者是一个核上从开始运行到结束,为了提升模块单位时间执行指令的条数,可以横向扩展线程的数量,这里边有一个缺陷就是所有核处理的流程是一样,被没有针对性的对某一块流程进行性能的提升,就这方面来说不如pipeline
2、pipeline模型
什么是pipeline模型,pipeline模型借鉴于工程流水线模型,将一个功能模块分割成几个独立的小逻辑单元,每个单元根据自身的实际情况进行针对性的加速,各自完成之后,采用一个中间的容器把结果联合在一起,从而提升并发的效率。
如图所示,网卡收到报文之后,一部分进程绑定top解析,一个进程绑定top查找,但是top查找需要解析的内容,怎么处理呢,top查找最开始可能是需要等待的,等待解析的结果,可以认为连接两人的纽带是中间的无锁队列,top解析完之后,将内容保存到无锁队列中,开始进行下一个报文的解析,top查找从无锁队列中取出分析结果去查询,两者是异步进行的。所以pipeline模型有一个弊端就是必须得知道每一个阶段的状态,某一个阶段处理的结果影响整个流程的性能,比如top查找取结果取得慢,top解析的内容可能最后就没法放进去就会丢包。