gordonb3 wrote: 
> Except that 10053 points to either the client or some network component
> closing the socket. If LMS closed the connection you would have seen a
> 10054.
> 
> Should also note that retransmit requests are not done by the receiver
> (i.e. the peer waiting for some response) but the sender. Since the
> socket is created as "non blocking", not receiving an ACK from the
> server likely causes the app to go into a loop until finally giving up
> (and generating the 10053), which explains the 100% CPU you're seeing.
> 
> Is your switch capable of port mirroring? If so you could bind your Pi
> to receive the same data as the windows machine and use tcpdump to
> verify what wireshark is telling you on the Windows machine. This would
> allow you to see whether it is the outgoing traffic being blocked, or
> the incoming.

Strangely it seems to be both ways, TCP:[Keep alive] initiated by the
host as well as by the client.
See the following excerpts from a capture with Microsoft Network Monitor
(I have actual IP addresses replaced with 'CLIENT' and 'HOST'):

Time / SourceToDestination / FrameNumber / Description

9.5011191       CLIENT to HOST  316     TCP:[Keep alive]Flags=...A....,
SrcPort=56579, DstPort=9000, PayloadLen=1, Seq=2774461185 - 2774461186,
Ack=3913298766, Win=8208        {TCP:125, IPv4:13}
9.5013944       HOST to CLIENT  317     TCP:[Keep alive ack]Flags=...A....,
SrcPort=9000, DstPort=56579, PayloadLen=0, Seq=3913298766,
Ack=2774461186, Win=1332        {TCP:125, IPv4:13}

and

32.9651553      HOST to CLIENT  3982    TCP:[Keep alive]Flags=...A....,
SrcPort=9000, DstPort=56925, PayloadLen=0, Seq=2162354824,
Ack=1382232115, Win=229 (scale factor 0x7) = 29312      {TCP:323, IPv4:13}
32.9652022      CLIENT to HOST  3983    TCP:[Dup Ack #3977]Flags=...A....,
SrcPort=56925, DstPort=9000, PayloadLen=0, Seq=1382232115,
Ack=2162354825, Win=0 (scale factor 0x8) = 0    {TCP:323, IPv4:13}
33.0935782      CLIENT to HOST  3984    TCP:[Keep alive]Flags=...A....,
SrcPort=56579, DstPort=9000, PayloadLen=1, Seq=2774462837 - 2774462838,
Ack=3913300530, Win=8209        {TCP:125, IPv4:13}
33.0965046      HOST to CLIENT  3985    TCP:[Keep alive ack]Flags=...A....,
SrcPort=9000, DstPort=56579, PayloadLen=0, Seq=3913300530,
Ack=2774462838, Win=1332        {TCP:125, IPv4:13}
33.1615348      CLIENT to HOST  3986    HTTP:Request, POST /jsonrpc.js  
{HTTP:31,
TCP:30, IPv4:13}
33.1618417      HOST to CLIENT  3987    TCP:Flags=...A...., SrcPort=9000,
DstPort=55966, PayloadLen=0, Seq=2820479526, Ack=4154110742,
Win=2097        {TCP:30, IPv4:13}
33.3604901      HOST to CLIENT  3988    TCP:Flags=...AP..., SrcPort=3483,
DstPort=56585, PayloadLen=30, Seq=2271133931 - 2271133961,
Ack=2859076443, Win=583 {TCP:14, IPv4:13}
33.3608028      CLIENT to HOST  3989    TCP:Flags=...AP..., SrcPort=56585,
DstPort=3483, PayloadLen=61, Seq=2859076443 - 2859076504,
Ack=2271133961, Win=8208        {TCP:14, IPv4:13}
33.3655584      HOST to CLIENT  3990    HTTP:Response, HTTP/1.1, Status: Ok, 
URL:
/jsonrpc.js     {HTTP:31, TCP:30, IPv4:13}
33.3737269      HOST to CLIENT  3991    TCP:Flags=...A...., SrcPort=3483,
DstPort=56585, PayloadLen=0, Seq=2271133961, Ack=2859076504,
Win=583 {TCP:14, IPv4:13}
33.4051077      HOST to CLIENT  3992    TCP:[Keep alive][Dup Ack
#3982]Flags=...A...., SrcPort=9000, DstPort=56925, PayloadLen=0,
Seq=2162354824, Ack=1382232115, Win=229 (scale factor 0x7) =
29312   {TCP:323, IPv4:13}
33.4051521      CLIENT to HOST  3993    TCP:[Dup Ack #3977]Flags=...A....,
SrcPort=56925, DstPort=9000, PayloadLen=0, Seq=1382232115,
Ack=2162354825, Win=0 (scale factor 0x8) = 0    {TCP:323, IPv4:13}
34.2371206      HOST to CLIENT  4001    TCP:[Keep alive][Dup Ack
#3982]Flags=...A...., SrcPort=9000, DstPort=56925, PayloadLen=0,
Seq=2162354824, Ack=1382232115, Win=229 (scale factor 0x7) =
29312   {TCP:323, IPv4:13}
34.2371686      CLIENT to HOST  4002    TCP:[Request Fast-Retransmit from
Seq2162354825]Flags=...A...., SrcPort=56925, DstPort=9000, PayloadLen=0,
Seq=1382232115, Ack=2162354825, Win=0 (scale factor 0x8) = 0    {TCP:323,
IPv4:13}

Whenever TCP:[Keep alive] is initiated by the client (squeezelite), the
host's (LMS) response is TCP:[Keep alive ack]. That seems to be OK.
Whenever TCP:[Keep alive] is initiated by the host however, the client's
response is TCP:[Dup Ack #frame number]. Is that OK? I was assuming here
is where the issue takes off.
When TCP:[Keep alive][Dup Ack #frame] is sent by the host, the client's
response is TCP:[Request Fast-Retransmit from Seq...].

After some time I get this:

86.5249184      HOST to CLIENT  5239    TCP:[Keep alive][Request Fast-Retransmit
from Seq1382232115]Flags=...A...., SrcPort=9000, DstPort=56925,
PayloadLen=0, Seq=2162354824, Ack=1382232115, Win=229 (scale factor 0x7)
= 29312 {TCP:323, IPv4:13}
86.5249691      CLIENT to HOST          5240    TCP:[Request Fast-Retransmit 
from
Seq2162354825]Flags=...A...., SrcPort=56925, DstPort=9000, PayloadLen=0,
Seq=1382232115, Ack=2162354825, Win=0 (scale factor 0x8) = 0    {TCP:323,
IPv4:13}

and further down still

120.2225124     HOST to CLIENT  7665    TCP:Flags=...A...F, SrcPort=9000,
DstPort=56925, PayloadLen=0, Seq=2164454887, Ack=1382232115, Win=229
(scale factor 0x7) = 29312      {TCP:323, IPv4:13}

the latter seems to me the point where the host tears down the
connection.

My current assumption is that in this code 

Code:
--------------------
    
  while (running && !new_server) {
  ....
  if ((ev = wait_readwake(ehandles, 1000)) != EVENT_TIMEOUT) {
  ....
  }
  ....
  }
--------------------

in function static void slimproto_run() the ev value is unexpected and
this results in a tight loop. Does that make sense?

This exchange above is apparently not on the application level but
within the TCP stack. The correct behavior has to be configured on the
application level upfront.


------------------------------------------------------------------------
fpo's Profile: http://forums.slimdevices.com/member.php?userid=71212
View this thread: http://forums.slimdevices.com/showthread.php?t=113554

_______________________________________________
plugins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/plugins

Reply via email to