罕见的有Intel的82575、82576,Boardcom的57711等,下面以公司的服务器运用较多的Intel 82575网卡为例,剖析一下多行列网卡的硬件的完成以及linux内核软件的支撑。
1.多行列网卡硬件完成
图1.1是Intel 82575硬件逻辑图,有四个硬件行列。当收到报文时,经由过程hash包头的SIP、Sport、DIP、Dport四元组,将一条流老是收到雷同的行列。同时触发与该行列绑定的中断。
图1.1 82575硬件逻辑图
2.什么是RSS
RSS(Receive Side Scaling)是一种能够在多处置惩罚器体系下使吸收报文在多个CPU之间高效分发的网卡驱动手艺。
网卡对吸收到的报文举行剖析,猎取IP地点、协媾和端口五元组信息
网卡经由过程设置的HASH函数依据五元组信息盘算出HASH值,也能够依据二、三或四元组举行盘算。
取HASH值的低几位(这个细致网卡能够差别)作为RETA(redirection table)的索引
依据RETA中存储的值分发到对应的CPU
下图形貌了完全的处置惩罚流程:
基于RSS手艺顺序能够经由过程硬件在多个CPU之间来分发数据流,而且能够经由过程对RETA的修改来完成动态的负载平衡。
3.在DPDK中设置RSS
DPDK支撑设置静态hash值和设置RETA。 不过DPDK中RSS是基于端口的,并依据端口的吸收行列举行报文分发的。 比方我们在一个端口上设置了3个吸收行列(0,1,2)并开启了RSS,那末 中就是如许的:
{0,1,2,0,1,2,0.........}
运行在差别CPU的应用顺序就从差别的吸收行列吸收报文,如许就达到了报文分发的结果。
在DPDK中经由过程设置rte_eth_conf
中的mq_mode
字段来开启RSS功用, rx_mode.mq_mode = ETH_MQ_RX_RSS
。
当RSS功用开启后,报文对应的rte_pktmbuf
中就会存有RSS盘算的hash值,能够经由过程pktmbuf.hash.rss
来访问。 这个值能够直接用在后续报文处置惩罚过程当中而不需要从新盘算hash值,如疾速转发,标识报文流等。
RETA是运行时可设置的,如许应用顺序就能够动态转变CPU对应的吸收行列,从而动态调治报文分发。 细致经由过程PMD模块的驱动举行设置,比方ixgbe_dev_rss_reta_update
和ixgbe_dev_rss_reta_query
。
以上就是网卡多行列手艺与RSS功用的细致引见的细致内容,更多请关注ki4网别的相干文章!