标签:com 缓冲区 绑定 运行 网卡 linux 乱序 级别 队列
设计了基于DPDK的包捕获系统,以及把包分配到不同队列的hash算法且实现核心的负载均衡。
缺点
NAPI技术:用于多个包连续到达的情况。使得一个CPU周期内捕获尽可能多的包。
RSS技术:数据包根据hash算法被分配到多个接收队列,每个队列绑定一个CPU核心和NAPI线程。并行化。
虽然有如此强劲的技术,但是还存在着技术瓶颈。
允许用户空间的进程使用DPDK所提供的库直接访问网卡而无需经过内核。
由
librte_ring
库提供的rte_ring
无锁队列,环形,大小固定,先进先出,单/多生产者/消费者的排队场景,存储对象的指针。各个 P C 有指针来访问控制。相较于普通的用长度不限的双链表实现的队列,有两个好处:无锁、减少突发操作和大量数据传输导致的 cache miss。
EAL
可以提供物理内存的映射,它会创建一个叫做RTE_memseg
的表来将地址上不连续的物理内存映射为可连续访问的。然后将这些内存分成多个内存区域。这些区域是构建于DPDK库之上的应用使用内存的基本单元。这些基本单元用rte_ring
来存放。
lib_mbuf
库提供的缓冲区rte_mbuf
。缓冲区会在应用程序实际运行之前就被创建出来并存放在内存池中。应用现在可以通过指定mbuf
来指定访问某一个mempool
。释放一个rte_mbuf
只是将回到它来自的mempool
。为了容纳更大的数据包的元数据,可以将多个rte_mbuf
链接在一起。说白了就是程序通过rte_mbuf
来申请内存。
标签:com 缓冲区 绑定 运行 网卡 linux 乱序 级别 队列
原文地址:https://www.cnblogs.com/031602523liu/p/9447950.html