深入浅出DPDK——流分类与多队列
流分类
流分类指的是网卡依据数据包的特性将其分类的技术。分类的信息可以以不同不方式呈现给数据包的处理者,比如将分类信息记录于描述符中,将数据包丢弃或者将流导入某个或某些队列中。
包的分类
传统包的分类:IP、TCP、UDP甚至VXLAN、NVGRE等tunnel报文,该信息可以体现在数据包的接收描述符中。
DPDK:Mbuf结构中含有相应的字段来表示网卡分析出的包的类型。
网卡设备同时可以根据包的类型确定其关键字,从而根据关键字确定其收包队列。
其中RSS和Flow Director技术都是依据包的类型匹配相应的关键字,从而决定其DMA的收包队列。
RSS
负载均衡是多队列网卡最常见的应用,其含义就是将负载分摊到多个执行单元上执行。对应Packet IO而言,就是将数据包收发处理分摊到多个核上。
RSS(接收方扩展):网卡上用于将流量分散到不同队列中的技术。和硬件相关联,必须要有网卡的相关硬件支持,RSS把数据包分配到不同的队列中,其中哈希值的计算公式在硬件中完成的,也可以定制修改。
DPDK的轮询模式的驱动也提供了配置RSS的接口。
RSS就是根据关键字通过哈希函数计算出哈希值,再有哈希值确定队列。以下是各种数据包的RSS关键字:
| 数据包类型 | 哈希计算输入 |
|---|---|
| IPV4 UDP | S-IP、D-IP、S-Port、D-Port |
| IPV4 TCP | S-IP、D-IP、S-Port、D-Port |
| IPV4 SCTP | S-IP、D-IP、S-Port、D-Port、Verfication-Tag |
| IPV4 OTHER |

本文详细解析了DPDK中的流分类技术,如RSS和FlowDirector,以及它们如何根据包类型分配负载和实现QoS。讲解了RSS的哈希算法和FlowDirector的精确匹配,以及如何利用这些技术进行负载均衡、服务质量管理和虚拟化流分类。还涉及到了数据包过滤和各类队列策略。

702

被折叠的 条评论
为什么被折叠?



