Saturday 15 January 2011

http - TCP receives packets, but it ignores them -



http - TCP receives packets, but it ignores them -

i have unusual networking problem. actual network configuration quite complex, because using openstack , docker build virtual network. however, problem not there, because capturing on host's interface , see packet in right way.... reasons not know, seems tcp ignoring them, though have been received: doesn't send ack them , doesn't send info application.

in trials, sent http request html page server jetty (ip 192.168.4.3) host (192.168.4.100).

what see capturing on 192.168.4.100 wireshark is:

192.168.4.100 -> syn -> 192.168.4.3 192.168.4.3 -> syn, ack -> 192.168.4.100 192.168.4.100 -> ack -> 192.168.4.3 192.168.4.100 -> / http/1.1 -> 192.168.4.3 192.168.4.3 -> ack -> 192.168.4.100 192.168.4.3 -> fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 1 of http 200 ok response -> 192.168.4.100 192.168.4.100 -> ack of fragment 1 -> 192.168.4.3 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 2 of http 200 ok response -> 192.168.4.100 192.168.4.100 -> ack of fragment 2 -> 192.168.4.3 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.3 -> retransmission of fragment 3 of http 200 ok response (psh) -> 192.168.4.100 192.168.4.100 -> ack of fragment 3 -> 192.168.4.3

this big problem, because there 40 seconds between request , lastly ack coincides moment application (telnet in case) gets data.

i have checked checksum , correct...

so don't know why happens , do! have tried different os hosts (a windows 8 mobile phone, mac osx, ubuntu 14.04, ...), nil changes. if send same request docker of virtual network, works fine.

any thought problem be?

thanks!

ps here can see screenshot of capture:

update

one thing think can interesting have made analogous capture, when http request sent 192.168.4.3 192.168.4.100. capture taken 1 time again on 192.168.4.100 interface , seems 1 time again 192.168.4.100 ignores packets receives (look @ 3 way handshake example). , found no reason again.

i managed solve problem. post here solution can useful if has same problem.

the problem disabled tso (tcp-segmentation-offload) on virtual bridge dockers attached command:

ethtool -k iface_name tso off

it turns off tso, whereas checksumming offload remains on. evidently, creates problem , though wireshark showed me tcp checksum ok, wasn't. host ignored packet due bad tcp checksum.

to turn off tso , checksumming too, used command:

ethtool --offload iface_name rx off tx off

and works.

http networking tcp docker openstack

No comments:

Post a Comment