Search code examples
tcpdpdk

Does DPDK provide a native TCP/IP network stack implemetation?


I'm trying to find out if there is any native TCP/IP stack implemetation provided in DPDK or any popular open-source project to achieve it. Any help will be grateful.

Update: My platform is Ubuntu 16.04 x64, Intel 82599es NIC with DPDK 20.08. What I'm trying to accomplish is to rebuild TCP connections out of the packets I receive on the NIC port for later use. I thought tools like ANS, mTCP and fstack may do the track but they are third party and some of them are not fully open-sourced, so I'm looking for a native one or one that is popular for developers. I don't know what should I call this kind of requirement, sorry for troubles causing because of the question, I'll change it after I know the related concept better.


Solution

  • There are no native TCP-IP stack implementation in DPDK version till date DPDK version 20.11 LTS. Going further in my humble opinion DPDK would not be implementing native TCP-IP stack. Hence current options are

    Since the requirement is to rebuild TCP connection state information, my recommendation is to

    1. create RTE_FLOW_ACTION_MIRROR to create the packet copy at HW NIC level for all interested TCP connection using a combination of IP-TCP address-ports.
    2. If there is no HW option, either using ref_cnt_update or copying the user packet payload create a copy of the packet.
    3. With help RTE_RINGS or RTE_FB_ARRAY organize the packets from client and server based on symmetric RSS (if available) or based on custom HASH to appropriate containers.
    4. For you packet processing recommendation is either use FSTACK or mTCP or BSD TCP-ip from scratch

    there are multiple references on the Internet which gives hints to get started too. Please refer