Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Frames above 2000 bytes not acknowledged by client/receiver
#1
HI,
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 have checked also that MTU of the PC NIC (with Python script running) is truly enabled for 9k frames.

The main part of the code responsible for socket handling:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))

##Send new connection string and print the echoed reply
s.send(str)
data = s.recv(BUFFER_SIZE)
d = data.decode('ASCII')
print(d+'. Connected with:'+TCP_IP)

.
.
.

#Input file name from keyboard
name_of_file=input('Type file name:\n')
Name = os.path.join(save_path, name_of_file+".txt")         
#Name = os.path.join(name_of_file+".txt")         file:///C:/Users/29_06_60psiout_5.txt
file=open(Name, 'w', newline='')
filewriter = csv.writer(file)

.
.
.

BUFFER_SIZE = 20000

###Loop waiting for frames:
while 1:
    data = s.recv(BUFFER_SIZE)
    if not data: ##If empty frame is received break and close the connection from client side
        file.close() 
        break
    i=0
    for value in data:
        filewriter.writerow([i, value])
        i=i+1
    index=index+1   

s.close()##Shpuld frovide FIN flag from client side
#filewriter.writerow(['End'])


print('Connection closed:\n',datetime.datetime.now().strftime(fmt),'\n')
The cloud shark link (with tcp filter): https://www.cloudshark.org/captures/5...

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.

Thank you in advance.
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  How to combine data taken from server between client and GUI? bescf 9 514 Apr-02-2019, 11:48 AM
Last Post: bescf
  Graphql subscriptions client Edoar 0 209 Mar-11-2019, 04:13 PM
Last Post: Edoar
  TCP/IP client script help Rehan11 2 499 Jan-15-2019, 06:48 AM
Last Post: Rehan11
  recive post request from client(browser) python sockets kunz 1 546 Dec-13-2018, 12:53 AM
Last Post: kunz
  tcp server/client port connection issue valshev 2 1,120 Sep-01-2018, 02:50 PM
Last Post: valshev
  Send data BMP180 between client and server trought module socket smalhao 0 620 Jul-30-2018, 12:56 PM
Last Post: smalhao
  Sending/Receiving Multiple Message from Server or Client Lyperion 0 737 Jul-30-2018, 07:52 AM
Last Post: Lyperion
  need to understand better __setup__.py, websocket-client, packaging penright 0 658 Jul-08-2018, 09:40 PM
Last Post: penright
  Need help to make a server/client for DNS Eddie05 1 803 Jun-12-2018, 10:04 AM
Last Post: j.crater
  Flask.socketio and client side html tables / JS georgelza 1 1,102 Jun-05-2018, 03:56 AM
Last Post: georgelza

Forum Jump:


Users browsing this thread: 1 Guest(s)