Hi,

there is a tinyhttp server example for lwIP / DPDK on github, did tou try
that?

Do you call tcp_output() aftern tcp_send()?

Regards,

Leon


On Tue, 12 Nov 2024 at 17:18, Meganathan Raja Mani <[email protected]>
wrote:

> Hi
>
> Integrated the lwIP stack over DPDK and the application is written by
> using the lwIP raw API(NO_SYS=1).
>
> The main purpose of the application is to get max TCP throughput(10Gbps).
>
> Application is in full receiving(server) mode, which just sends ACK for
> the client data.
>
> The lwIP application and client app are cross connected with 10Gbps intel
> 82599 NIC card.
>
> The application has three threads. Each thread is pinned to a separate
> core(Intel Xeon 3.1 GHz).
>
> All the threads are running in a poll mode.
>
>    1. One thread receives the packets from DPDK and enqueues into rte
>    ring.
>    2. Second thread takes the packets from rte ring and converts into
>    pbuf and then passes it to lwIP stack by calling ip_input function. In the
>    receive callback, the app just frees the pbuf(does nothing).
>    3. Third thread reads data from lwIP stack and sends out to DPDK
>
>
>
> Changed following things in lwIP stack.
>
> #define TCP_TMR_INTERVAL            5  /* The TCP timer interval in
> milliseconds. */
>
> #define MEMP_NUM_PBUF               (10028)
>
> #define MEMP_NUM_TCP_SEG            160
>
> #define TCP_SND_QUEUELEN            MEMP_NUM_TCP_SEG
>
> #define PBUF_POOL_SIZE              (10 * 1024)
>
> #define TCP_MSS                     1460
>
> #define TCP_WND                     65535
>
> #define LWIP_CHECKSUM_ON_COPY       1
>
> #define TCP_SND_BUF                 65535
>
> #define TCP_SNDLOWAT                TCP_SND_BUF/2
>
> #define MEMP_NUM_TCPIP_MSG_INPKT    160
>
> #define CHECKSUM_CHECK_IP           0
>
> #define CHECKSUM_CHECK_TCP          0
>
> #define LWIP_DEBUG                  0
>
> #define LWIP_ICMP                   1
>
> #define MEM_USE_POOLS               1
>
> #define MEM_SIZE                    (128 * 1024 * 1024)
>
> #define MEM_ALIGNMENT               4
>
> #define ETH_PAD_SIZE                2
>
> #define LWIP_CHKSUM_ALGORITHM       2
>
> #define LWIP_TCP_KEEPALIVE          1
>
> Disable nagle(tcp_nagle_disable) for the pcb
>
> The stats_display() function doesn’t show any errors.
>
> With this,I can get max 2K packets per second(25 Mbps), which is very low.
>
> Any info about the max throughput can we get it with lwIP TCP protocol on
> any platform?
>
> Please let me know what I should do to get max throughput (line rate 10
> Gbps).
>
>
>
> Regards,
>
> Meganathan
>
> _______________________________________________
> lwip-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to