Frozen connections

Eugene Grosbein eugen at kuzbass.ru
Tue Mar 2 21:29:38 PST 2004


H!

I'm experiencing strange problems with HTTP connections between
two machines connected using 100Mbit ethernet switch.
Client is Windows 2000 SP4 (named kost),
server is FreeBSD 4.9/Apache 1.3.27 (named www).

Plain HTTP GET request starts the thansfer and it freezes often
and reproducably. I've traced this at the server side using
tcpdump -n -p -lenx -s 1518 host kost and tcp port 80 | tcpshow -cooked

[skip]

Packet 84
TIME:   12:06:40.902236 (4.996904)
LINK:   00:90:27:AB:08:88 -> 00:90:27:35:05:1B type=IP
  IP:   www -> kost hlen=20 TOS=00 dgramlen=1335 id=608D
        MF/DF=0/1 frag=0 TTL=64 proto=TCP cksum=A720
 TCP:   port http -> 2136 seq=0249739568 ack=1566419520
        hlen=20 (data=1295) UAPRSF=010000 wnd=58400 cksum=AB01 urg=0
DATA:   mic content such as CGI output,
            SSI pages, and server-generated directory listings will
            generally not use Keep-Alive connections to HTTP/1.0 cli
        ents.
            For HTTP/1.1 clients, persistent connections are the def
        ault
            unless otherwise specified. If the client requests it, c
        hunked
            encoding will be used in order to send content of unknow
        n
            length over persistent connections.</p>

            <p><strong>Apache 1.1 only</strong>: Set <em>max-request
        s</em>
            to the maximum number of requests you want Apache to ent
        ertain
            per connection. A limit is imposed to prevent a client f
        rom
            hogging your server resources. Set this to <code>0</code
        > to
            disable support. In Apache 1.2 and 1.3, this is controll
        ed
            through the MaxKeepAliveRequests directive instead.</p>

            <p>See also <a
            href="#maxkeepaliverequests">MaxKeepAliveRequests</a>.</
        p>
            <hr />

            <h2><a id="keepalivetimeout"
            name="keepalivetimeout">KeepAliveTimeout directive</a></
        h2>
            <a href="directive-dict.html#Syntax"
            rel="Help"><strong>Syntax:</strong></a> KeepAliveTimeout
            <em>seconds</em><br />
             <a href="directive-dict.html#Default"
            rel="Help"><strong>Default:</strong></a> <code>KeepAlive
        Timeout
            15</code><br />
             <a href="directive-dict.html#Context"
            rel="Help"><s
---------------------------------------------------------------------------
Packet 85
TIME:   12:06:41.011671 (0.109435)
LINK:   00:90:27:35:05:1B -> 00:90:27:AB:08:88 type=IP
  IP:   kost -> www hlen=20 TOS=00 dgramlen=40 id=10B8
        MF/DF=0/1 frag=0 TTL=128 proto=TCP cksum=BC04
 TCP:   port 2136 -> http seq=1566419520 ack=0249740863
        hlen=20 (data=0) UAPRSF=010000 wnd=0 cksum=A459 urg=0
DATA:   <No data>
---------------------------------------------------------------------------
Packet 86
TIME:   12:06:46.000344 (4.988673)
LINK:   00:90:27:AB:08:88 -> 00:90:27:35:05:1B type=IP
  IP:   www -> kost hlen=20 TOS=00 dgramlen=41 id=85FD
        MF/DF=0/1 frag=0 TTL=64 proto=TCP cksum=86BE
 TCP:   port http -> 2136 seq=0249740863 ack=1566419520
        hlen=20 (data=1) UAPRSF=010000 wnd=58400 cksum=4C37 urg=0
DATA:   t
---------------------------------------------------------------------------
Packet 87
TIME:   12:06:46.000689 (0.000345)
LINK:   00:90:27:35:05:1B -> 00:90:27:AB:08:88 type=IP
  IP:   kost -> www hlen=20 TOS=00 dgramlen=40 id=10D3
        MF/DF=0/1 frag=0 TTL=128 proto=TCP cksum=BBE9
 TCP:   port 2136 -> http seq=1566419520 ack=0249740863
        hlen=20 (data=0) UAPRSF=010000 wnd=0 cksum=A459 urg=0
DATA:   <No data>
---------------------------------------------------------------------------
Packet 88
TIME:   12:06:50.998475 (4.997786)
LINK:   00:90:27:AB:08:88 -> 00:90:27:35:05:1B type=IP
  IP:   www -> kost hlen=20 TOS=00 dgramlen=41 id=6A94
        MF/DF=0/1 frag=0 TTL=64 proto=TCP cksum=A227
 TCP:   port http -> 2136 seq=0249740863 ack=1566419520
        hlen=20 (data=1) UAPRSF=010000 wnd=58400 cksum=4C37 urg=0
DATA:   t
---------------------------------------------------------------------------
Packet 89
TIME:   12:06:50.998828 (0.000353)
LINK:   00:90:27:35:05:1B -> 00:90:27:AB:08:88 type=IP
  IP:   kost -> www hlen=20 TOS=00 dgramlen=40 id=10E5
        MF/DF=0/1 frag=0 TTL=128 proto=TCP cksum=BBD7
 TCP:   port 2136 -> http seq=1566419520 ack=0249740863
        hlen=20 (data=0) UAPRSF=010000 wnd=0 cksum=A459 urg=0
DATA:   <No data>
---------------------------------------------------------------------------
Packet 90
TIME:   12:06:51.278337 (0.279509)
LINK:   00:90:27:AB:08:88 -> 00:90:27:35:05:1B type=IP
  IP:   www -> kost hlen=20 TOS=00 dgramlen=41 id=64CE
        MF/DF=0/1 frag=0 TTL=64 proto=TCP cksum=A7ED
 TCP:   port http -> 2134 seq=1179931920 ack=1524903532
        hlen=20 (data=1) UAPRSF=010000 wnd=58400 cksum=FC43 urg=0
DATA:   t
---------------------------------------------------------------------------
Packet 91
TIME:   12:06:51.278615 (0.000278)
LINK:   00:90:27:35:05:1B -> 00:90:27:AB:08:88 type=IP
  IP:   kost -> www hlen=20 TOS=00 dgramlen=40 id=10E6
        MF/DF=0/1 frag=0 TTL=128 proto=TCP cksum=BBD6
 TCP:   port 2134 -> http seq=1524903532 ack=1179931920
        hlen=20 (data=0) UAPRSF=010000 wnd=0 cksum=5466 urg=0
DATA:   <No data>

As you see, last pair of packets repeats many times
and transfer is stalled here. What's wrong and who is guilty?

Eugene Grosbein


More information about the freebsd-net mailing list