Frames above 2000 bytes not acknowledged by receiver

asked 2018-08-24 00:08:24 +0000

lukasz139 gravatar image

updated 2018-08-24 05:53:21 +0000

Jaap gravatar image

I working on adding a jumbo frame functionality to my application. My problem is that I receive no ACK for frames with payload above 2000 bytes. My system looks as follows: the server sends requested measurement time to the client. The server side is an ARM processor with lwIP implementation of TCP/IP stack and with enabled support of jumbo frames. The client side is a Python script on my PC with network interface having jumbo frames enabled.

With configuration as above and payload above default 1460 system works fine. I do run with payload of 2000 bytes without problems. The MSS on client side is 9158, WIN 64320. The server side is: MSS 2000 and WIN 8000. However, once I increase the MSS on server side above 2000 bytes communication collapses. On Wireshark I can see that first frame with length above 2000 doesn't get acknowledged by the client (PC side) and re-transmissions begin. The client and server are connected directly without a switch. I cannot upload a Wireshark capture file since I am a new member.

I will be thankful for any advice from experienced users. It looks to me that jumbo frame shouldn't be an issue, since I operate way above standard Ethernet payload size without problem.

The cloud shark link (with tcp filter):

Thank you in advance.

edit retag flag offensive close merge delete


You can post a capture file to cloudshark or some other online file sharing site.

cmaynard gravatar imagecmaynard ( 2018-08-24 01:18:25 +0000 )edit

Thank you a lot for good advice. Here is the link with tcp filter applied:

lukasz139 gravatar imagelukasz139 ( 2018-08-24 02:17:21 +0000 )edit

You've given details about the server, but of the PC, that's giving you trouble, there is no information. All may be relevant, from NIC HW, controller, driver, etc.

Jaap gravatar imageJaap ( 2018-08-24 05:56:13 +0000 )edit

I am using NIC with jumbo frames support (I have verified that its MTU is set for 9k frame). The Python script handles a TCP socket receiving data. Buffer of the socket in the code is way above any possible frame. Connection is via wired Ethernet and no switch.

lukasz139 gravatar imagelukasz139 ( 2018-08-24 18:00:54 +0000 )edit