Martin Kocian
2011-07-20 23:20:52 UTC
Hi,
I am experiencing delays in the TCP communication in omniorb 4.1.4 where
212 bytes get sent to a Linux box (kernel 2.6.18-92.el5) immediately
followed by about 200 kB. The problem is that the Linux box does not send
the ack for the 212 bytes until 40 ms later(see time in the second line):
14:39:12.071935 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: P 399:611(212) ack 73 win 17376 <nop,nop,timestamp 83 100339560>
14:39:12.112040 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 611 win 157 <nop,nop,timestamp 100378649 83>
^^
14:39:12.112235 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: . 611:2059(1448) ack 73 win 17376 <nop,nop,timestamp 83 100378649>
14:39:12.112276 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: . 2059:3507(1448) ack 73 win 17376 <nop,nop,timestamp 83 100378649>
14:39:12.112278 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 2059 win 180 <nop,nop,timestamp 100378649 83>
14:39:12.112295 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 3507 win 202 <nop,nop,timestamp 100378649 83>
...
I wrote a small, simple client-host program that emulates this situation
but there the Linx box sends the ack instantly:
18:37:52.427547 IP rce12.lab1.reg.1024 > rdcds105.lab1.reg.opencm: P 1:213(212) ack 1 win 17520
18:37:52.427580 IP rdcds105.lab1.reg.opencm > rce12.lab1.reg.1024: . ack 213 win 54
^^^^
18:37:52.427844 IP rce12.lab1.reg.1024 > rdcds105.lab1.reg.opencm: . 213:1673(1460) ack 1 win 17520
18:37:52.427858 IP rdcds105.lab1.reg.opencm > rce12.lab1.reg.1024: . ack 1673 win 77
...
Does omniorb configure TCP in some way that makes the receiving host wait
for multiple packets before it sends an ack? The only thing I could find
in the code is TCP_NODELAY being set but that does not make any difference
for this problem.
Any advice would be appreciated!
Thank you,
Martin
| Martin Kocian |
| ***@slac.stanford.edu |
| Stanford Linear Accelerator Center |
| M.S. 98, P.O. Box 20450 |
| Stanford, CA 94309 |
| Tel. (650)926-2887 Fax (650)926-2923 |
I am experiencing delays in the TCP communication in omniorb 4.1.4 where
212 bytes get sent to a Linux box (kernel 2.6.18-92.el5) immediately
followed by about 200 kB. The problem is that the Linux box does not send
the ack for the 212 bytes until 40 ms later(see time in the second line):
14:39:12.071935 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: P 399:611(212) ack 73 win 17376 <nop,nop,timestamp 83 100339560>
14:39:12.112040 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 611 win 157 <nop,nop,timestamp 100378649 83>
^^
14:39:12.112235 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: . 611:2059(1448) ack 73 win 17376 <nop,nop,timestamp 83 100378649>
14:39:12.112276 IP rce12.lab1.reg.1027 > rdcds105.lab1.reg.59711: . 2059:3507(1448) ack 73 win 17376 <nop,nop,timestamp 83 100378649>
14:39:12.112278 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 2059 win 180 <nop,nop,timestamp 100378649 83>
14:39:12.112295 IP rdcds105.lab1.reg.59711 > rce12.lab1.reg.1027: . ack 3507 win 202 <nop,nop,timestamp 100378649 83>
...
I wrote a small, simple client-host program that emulates this situation
but there the Linx box sends the ack instantly:
18:37:52.427547 IP rce12.lab1.reg.1024 > rdcds105.lab1.reg.opencm: P 1:213(212) ack 1 win 17520
18:37:52.427580 IP rdcds105.lab1.reg.opencm > rce12.lab1.reg.1024: . ack 213 win 54
^^^^
18:37:52.427844 IP rce12.lab1.reg.1024 > rdcds105.lab1.reg.opencm: . 213:1673(1460) ack 1 win 17520
18:37:52.427858 IP rdcds105.lab1.reg.opencm > rce12.lab1.reg.1024: . ack 1673 win 77
...
Does omniorb configure TCP in some way that makes the receiving host wait
for multiple packets before it sends an ack? The only thing I could find
in the code is TCP_NODELAY being set but that does not make any difference
for this problem.
Any advice would be appreciated!
Thank you,
Martin
| Martin Kocian |
| ***@slac.stanford.edu |
| Stanford Linear Accelerator Center |
| M.S. 98, P.O. Box 20450 |
| Stanford, CA 94309 |
| Tel. (650)926-2887 Fax (650)926-2923 |