Thanks to everyone. Just figure it out the issue. When I set the MSS size as 9K and packet length on the client side as 9K, I see only 2K packets per second. #define TCP_MSS 9000 If I set MSS size as 1460, I see ~130K packets per second(1.3Gbps). Still a long way to reach 10Gbps throughput.
Regards, Meganathan On Fri, Nov 15, 2024 at 2:11 PM Leon Woestenberg <[email protected]> wrote: > 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 >
_______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
