sockets - TCP transactions taking progressively longer -


i have piece of equipment i'm trying talk on tcp. it's quite simple, , following (python) code pretty want in practice.

what should happen send packet request device change setting, should receive "operation complete packet" (which '1').

i've implemented code below in c same result, i'm confident isn't python problem.

import numpy np import socket  sock = socket.socket(socket.af_inet, socket.sock_stream)  # set values send device values = np.arange(0.2, 1.0, 0.02)  sock.connect(('192.168.1.147', 9221))  value in values:     # string sets value, requests operation complete output.     sock.sendall('i1 %1.3f; *opc?'.encode('utf-8') % (value, ))     print(sock.recv(32)) # prints out '1', or b'1\r\n' in python 3 

what experience output expected output delay between sending , receiving gets progressively longer until have kill program.

the resultant wireshark output interesting:

no.     time           source                destination           protocol length info       4 2.970271597    192.168.1.106         192.168.1.147         tcp      74     49938 → 9221 [syn] seq=0 win=26880 len=0 mss=8960 sack_perm=1 tsval=26446953 tsecr=0 ws=128       5 2.971102415    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [syn, ack] seq=0 ack=1 win=5840 len=0 mss=1460       6 2.971118924    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=1 ack=1 win=26880 len=0       7 2.971152591    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [psh, ack] seq=1 ack=1 win=26880 len=15       8 2.977589098    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=1 ack=1 win=5840 len=3       9 2.977597172    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=16 ack=4 win=26880 len=0      10 2.977948459    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=1 ack=16 win=5840 len=0      11 2.977952056    192.168.1.106         192.168.1.147         tcp      54     [tcp dup ack 9#1] 49938 → 9221 [ack] seq=16 ack=4 win=26880 len=0      12 3.167593066    192.168.1.106         192.168.1.147         tcp      69     [tcp spurious retransmission] 49938 → 9221 [psh, ack] seq=1 ack=4 win=26880 len=15      13 3.168475846    192.168.1.147         192.168.1.106         tcp      60     [tcp dup ack 10#1] 9221 → 49938 [ack] seq=4 ack=16 win=5840 len=0      14 3.168487149    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [psh, ack] seq=16 ack=4 win=26880 len=15      15 3.174457755    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=4 ack=16 win=5840 len=3      16 3.174481722    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=31 ack=7 win=26880 len=0      17 3.174817948    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=4 ack=31 win=5840 len=0      18 3.567587105    192.168.1.106         192.168.1.147         tcp      69     [tcp spurious retransmission] 49938 → 9221 [psh, ack] seq=16 ack=7 win=26880 len=15      19 3.568540028    192.168.1.147         192.168.1.106         tcp      60     [tcp dup ack 17#1] 9221 → 49938 [ack] seq=7 ack=31 win=5840 len=0      20 3.568551611    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [psh, ack] seq=31 ack=7 win=26880 len=15      21 3.574509787    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=7 ack=31 win=5840 len=3      22 3.574533527    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=46 ack=10 win=26880 len=0      23 3.574857577    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=7 ack=46 win=5840 len=0      24 3.574870866    192.168.1.106         192.168.1.147         tcp      54     [tcp dup ack 22#1] 49938 → 9221 [ack] seq=46 ack=10 win=26880 len=0      25 4.367591502    192.168.1.106         192.168.1.147         tcp      69     [tcp spurious retransmission] 49938 → 9221 [psh, ack] seq=31 ack=10 win=26880 len=15      26 4.368487116    192.168.1.147         192.168.1.106         tcp      60     [tcp dup ack 23#1] 9221 → 49938 [ack] seq=10 ack=46 win=5840 len=0      27 4.368498284    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [psh, ack] seq=46 ack=10 win=26880 len=15      28 4.374526599    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=10 ack=46 win=5840 len=3      29 4.374558188    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=61 ack=13 win=26880 len=0      30 4.374881659    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=10 ack=61 win=5840 len=0      31 4.374896303    192.168.1.106         192.168.1.147         tcp      54     [tcp dup ack 29#1] 49938 → 9221 [ack] seq=61 ack=13 win=26880 len=0      32 5.971603454    192.168.1.106         192.168.1.147         tcp      69     [tcp spurious retransmission] 49938 → 9221 [psh, ack] seq=46 ack=13 win=26880 len=15      33 5.972478351    192.168.1.147         192.168.1.106         tcp      60     [tcp dup ack 30#1] 9221 → 49938 [ack] seq=13 ack=61 win=5840 len=0      34 5.972490012    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [psh, ack] seq=61 ack=13 win=26880 len=15      35 5.978397699    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=13 ack=61 win=5840 len=3      36 5.978418493    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [ack] seq=76 ack=16 win=26880 len=0      37 5.978754841    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=13 ack=76 win=5840 len=0      38 5.978768499    192.168.1.106         192.168.1.147         tcp      54     [tcp dup ack 36#1] 49938 → 9221 [ack] seq=76 ack=16 win=26880 len=0      43 7.134413907    192.168.1.106         192.168.1.147         tcp      69     49938 → 9221 [fin, psh, ack] seq=76 ack=16 win=26880 len=15      44 7.140478879    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [psh, ack] seq=16 ack=76 win=5840 len=3      45 7.140515226    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [rst] seq=76 win=0 len=0      46 7.140822269    192.168.1.147         192.168.1.106         tcp      60     9221 → 49938 [ack] seq=16 ack=91 win=5840 len=0      47 7.140838249    192.168.1.106         192.168.1.147         tcp      54     49938 → 9221 [rst] seq=91 win=0 len=0 

(at point killed it)

what suggests me ack being sent, being ignored reason (malformed in way?). original packet sent again progressively longer delays (which suspect correct behaviour lost packets), results in transmission buffer being backed new packet not being sent. wireshark seems think resend spurious demonstrated "spurious retransmission".

the device responding packet it's sent first time, can see it's display.

it's possible there protocol incorrectness going on, don't know how diagnose problem. i'm happy work around - it's not production @ stage.

(fyi, device tti power supply).

so turns out problem firmware issue on hardware. i'm curious incorrect in ack packets cause resend, problem far concerned solved.

for completeness , encountering same problem, power supply tti pl303qmd. upgraded firmware version 3.02 4.06 , problem solved.


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -