DPDK-ANS - 基于 DPDK 的 TCP/IP 协议栈


BSD
Linux
C/C++

软件简介

ANS(Acceleted Network Stack) 是一个基于 DPDK 的 TCP/IP stack,可以运行在 linux
userspace。用户可以自由添加、删除ether 接口和IP地址,添加、删除静态路由。

支持的环境

  • EAL is based on dpdk-1.7.0

  • Development enviroment is based on x86_64-native-linuxapp-gcc

  • TCP/IP stack is based on FreeBSD 10.0-RELEASE

支持的特性

  • Netdp initialize

  • Ether layer

  • ARP

  • IP layer

  • Routing

  • ICMP

  • TCP

  • UDP

  • Commands for adding, deleting, showing IP address

  • Commands for adding, deleting, showing static route

Testing

  • TCP 连接建立释放性能

    |--------------------------------------| 
        |      TCP Server accept performance   |
        |--------------------------------------| 
        | Linux with epoll | NETDP with epoll  | 
        |    (Multi core)  |    (one core)     |
        |--------------------------------------|
        | 53k connection/s | 43k connection/s  | 
        |--------------------------------------|

  • TCP 数据传输性能

一个socket接收190Mbyte tcp payload,一个socket发送130Mbyte tcp playload

Communication(synchronization)  0 runtime:   0.734931 s
Communication(synchronization)  1 runtime:   0.469566 s
Communication(synchronization)  2 runtime:   0.449729 s
Communication(synchronization)  3 runtime:   0.648432 s
Communication(synchronization)  4 runtime:   0.449422 s
Communication(synchronization)  5 runtime:   0.647259 s
Communication(synchronization)  6 runtime:   0.457027 s
Communication(synchronization)  7 runtime:   0.457691 s
Communication(synchronization)  8 runtime:   0.67568 s
Communication(synchronization)  9 runtime:   0.736285 s
  • 三层转发性能

    |--------------------------------------| 
        |      L3 forwarding performance       |
        |             (one lcore)              |
        |--------------------------------------| 
        | Packet size(byte)| Throughput(Mpps)  | 
        |--------------------------------------|
        |     64           |      3.682        | 
        |--------------------------------------| 
        |     128          |      3.682        | 
        |--------------------------------------| 
        |     256          |      3.683        | 
        |--------------------------------------| 
        |     512          |      2.35         |
        |--------------------------------------| 
        |     1024         |      1.197        | 
        |--------------------------------------| 
        |     1500         |      0.822        | 
        |--------------------------------------|