《基于DPDK收包的suricata的安装和运行》中已经讲过基于DPDK收发包的suricata的安装过程,今天我们来看一下,suricata中DPDK的收发包线程模型以及相关的配置。
1、收发包线程模型:
通过分析代码,suricata中DPDK收发包线程模型如下:
suricata按网卡指定收包线程,IPS模式下成对的网卡收包线程数必须得一样,在上图中,网卡1和网卡2是一对,每个网卡配置两个收包线程,网卡1的两个收包线程绑定cpu core1和core2,网卡2的两个收包线程绑定cpu core3和core4,网卡1的core1收包线程从网卡1的0号队列收报文,然后往网卡2的0号队列发,其它收包线程的收发报文关系见上图中的箭头。
分析一下上面的收包模型:
1)每个cpu core只处理某一个网卡的单个队列的报文,性能会高一些,但是会耗用更多的cpu。
2)在配置网卡RSS的情况下,相同五元组会话的报文,会在每个网卡的相同编号的队列进行处理,所以五元组会话是会存在多线程互斥访问的问题的。
3)每个发送队列只会有一个收包线程的cpu core进行调用,没有互斥的问题。但这种方式只适用于成对网口透明转发的情况,对二三层转发不太适合。