Hi Meganathan,

Is lwip computing the checksum?  You might time it to see how much throughput it has.

Have you used Wireshark to try to diagnose what is going on?

We are using lwip on a 456MHz TI TMS320C6748 with 100M Ethernet and get ~60Mbps

Regards
TK


On 11/15/2024 12:33 PM, Meganathan Raja Mani wrote:
Hi Norbert,
Thank you for your reply. I tried with the option below, but got the same result only.

#define LWIP_WND_SCALE1

#define TCP_RCV_SCALE 7

#define LWIP_TCP_SACK_OUT 1


Regards,
Meganathan


On Tue, Nov 12, 2024 at 9:06 AM Norbert Morawski <[email protected]> wrote:

    Maybe try window scaling?

    On November 12, 2024 17:18:41 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] <mailto:lwip-users%40nongnu.org>
    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
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to