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
  Chat (Client-Server) andresdrr 0 1 1 minute ago
Last Post: andresdrr
  How to combine data taken from server between client and GUI? bescf 9 597 Apr-02-2019, 11:48 AM
Last Post: bescf
  Graphql subscriptions client Edoar 0 249 Mar-11-2019, 04:13 PM
Last Post: Edoar
  TCP/IP client script help Rehan11 2 550 Jan-15-2019, 06:48 AM
Last Post: Rehan11
  recive post request from client(browser) python sockets kunz 1 597 Dec-13-2018, 12:53 AM
Last Post: kunz
  tcp server/client port connection issue valshev 2 1,364 Sep-01-2018, 02:50 PM
Last Post: valshev
  Send data BMP180 between client and server trought module socket smalhao 0 650 Jul-30-2018, 12:56 PM
Last Post: smalhao
  Sending/Receiving Multiple Message from Server or Client Lyperion 0 800 Jul-30-2018, 07:52 AM
Last Post: Lyperion
  need to understand better __setup__.py, websocket-client, packaging penright 0 709 Jul-08-2018, 09:40 PM
Last Post: penright
  Need help to make a server/client for DNS Eddie05 1 842 Jun-12-2018, 10:04 AM
Last Post: j.crater

Forum Jump:


Users browsing this thread: 1 Guest(s)