1、背景

问题

  • 硬中断操作消耗
  • 软中断操作消耗
  • 频繁的上下文切换
  • NIC到内核空间(DMA/CPU两次存储总线)
  • 内核数据校验(1次存储总线)
  • 内核->用户空间数据拷贝(2次存储总线,发送逆路径)
  • 协议处理消耗(中断,数据复制,校验,上下文切换)

解决办法

  • NIC存储空间直接映射用户空间
  • DMA在NIC与共享存储中移动数据
  • COW技术
  • 存储空间内存预分配(数据到达延时不确定)
  • RDMA协议与TOE(包内带存储位置)
  • 异步中断改为轮询
  • NIC中中断合并
  • 多线程多队列
  • 指令cache优化

2、解决方案

  • netmap
  • PF_RING/DNA(商业)
  • DPDK
  • PacketShader
  • OpenOnload(商业)

2.1、netmap(Universita` di Pisa, Italy 2011

  • 功能产品
  1. netmap-ipfw (userspace ipfw/dummynet)
  2. netmap-libpcap (-> usable by libpcap apps)
  3. netmap-click (-> usable by Click apps)
  4. qemu, Xen, bhyve support
  • 相对linux内核的改进
  1. 核心功能:降低每个网络数据包的处理消耗
  2. zero-copy
  3. kernel bypass
  4. bathed I/O
  5. multi-queueing
  • 架构

  • 核心技术
  1. metadata refactoring to lose some unnecessary packet weight
  2. fixed size packets with memory preallocation
  3. no copying of packet data, only access to the packet buffers
  4. multiple hardware queues
  5. 支持多种网卡(IGB, IXGBE, r8169, forcedeth, e1000 and e1000e)

2.2、PF_RING/DNA(ntop的商业产品)

  • 作为netmap的商业版
  • 功能
  1. new generation DNA, Direct NIC Access drivers
  2. adds native support for Napatech cards
  3. adds native support for Endace DAG cards
  4. can be used to inject packets to the linux network stack
  5. virtualization and inter-process communication
  • 架构

2.3、DPDK(6WIND开发,Intel优化)

  • 相较前者提供更多用户态功能和方法
  1. multi-core framework with enhanced NUMA-awareness
  2. libraries for packet manipulation across cores
  3. pipeline model where typically one core takes the packets from a device and give them to another core for processing
  4. run-to-completion model where packets are distributed among cores using RSS
  5. processed on the core which also transmits them

  • 为Intel平台的产品(网卡,芯片,CPU)量身优化
  1. 实现无中断收包
  2. 固定大小的数据包,内存预分配
  3. 能够跨DRAM通道传输对象

2.4、PacketShader(Korea 2010)

  • a software router using the GPU as an accelerator
  • 为mTCP做过优化和裁剪(packet I/O)
  • 核心技术
  1. Large packet buffer – for storing a greater amount of packet data which speeds up memory allocation and deallocation
  2. Parallel hardware processing
  3. NUMA
  4. Multiple core CPU scalability(linear scalability)
  • 架构

3、竞品对比

  • 功能
  • 吞吐量性能
  • 多队列性能

3.1、功能对比

3.2、性能对比

  • Forwarding throughput for some I/O frameworks using 4 cores and no multi-queueing

  • Forwarding throughput for some Click I/O implementations with multiples I/O systems using 4 cores

  • Full push path using multi-queue compared to locking – DPDK and Netmap implementations with 4 cores using the router test case

 
 
 
下一篇分享:多核TCP加速解决方案