Thanks guys,

Ted Dunning wrote:

Look at the content length.  Your file is very short which is what Pound is saying.  If the server on the other side is saying that the content is very long, but it really isn't, then Pound probably has to wait for the end of file to know how short the file is.  This could easily cause major problems with throughput.
Nope, the Fast and Slow headers are from a different URL/File, so the differing lengths you see below aren't the issue. By using a larger file as the faster example, I can rule out network overheads.

I'm using ethereal to view the differences between the apache rewrite and pound tcp transmissions.... the major difference is that apache sends the HTTP Header in the same packet as the html text. However, Pound sends the header.... waits (---insert the overhead here---), keeps waiting.... for client ACKnowledgement to arrive and then sends the content (html/text).

Furthermore... I have a FAST example of the header being sent in a seperate packet before the content packet. However pound does not wait for an ACK that the header has been recieved! It immediately sends the content.

Why would it do this?

Thanks very much for reading!





Below is the Ethereal log showing all the data transmissions....

Frame 13.... the incoming HTTP Header.....
No.     Time        Source                Destination           Protocol Info
     13 0.027730    pound.mydomain.com    client.mydomain.com HTTP     HTTP/1.1 200 OK

Frame 13 (258 bytes on wire, 258 bytes captured)
    Arrival Time: Sep  9, 2005 11:58:45.097780000
    Time delta from previous packet: 0.001602000 seconds   **** NOTE that this is very low!
    Time since reference or first frame: 0.027730000 seconds
 
    Frame Number: 13
    Packet Length: 258 bytes
    Capture Length: 258 bytes
    Protocols in frame: eth:ip:tcp:http
Ethernet II, Src: Intel_56:f9:a1 (00:d0:b7:56:f9:a1), Dst: client.mydomain.com (00:13:20:59:47:e3)
    Destination: client.mydomain.com (00:13:20:59:47:e3)
    Source: Intel_56:f9:a1 (00:d0:b7:56:f9:a1)
    Type: IP (0x0800)
Internet Protocol, Src: pound.mydomain.com (pound.mydomain.com), Dst: client.mydomain.com (client.mydomain.com)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 244
    Identification: 0xe9e9 (59881)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0x27c8 [correct]
    Source: pound.mydomain.com (pound.mydomain.com)
    Destination: client.mydomain.com (client.mydomain.com)
Transmission Control Protocol, Src Port: 81 (81), Dst Port: 2056 (2056), Seq: 1, Ack: 511, Len: 204
    Source port: 81 (81)
    Destination port: 2056 (2056)
    Sequence number: 1    (relative sequence number)
    Next sequence number: 205    (relative sequence number)
    Acknowledgement number: 511    (relative ack number)
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 6432
    Checksum: 0x7f2f [correct]
Hypertext Transfer Protocol
    HTTP/1.1 200 OK\r\n
        Request Version: HTTP/1.1
        Response Code: 200
    Server: Apache-Coyote/1.1\r\n
    ETag: W/"111-1126147562000"\r\n
    Last-Modified: Thu, 08 Sep 2005 02:46:02 GMT\r\n
    Content-Type: text/html\r\n
    Content-Length: 111\r\n
    Date: Fri, 09 Sep 2005 02:45:36 GMT\r\n
    \r\n

Frame 14.... The ACK for the Header..... it arrives this takes 0.13452sec to arrive... Very SLOW!

No.     Time        Source                Destination           Protocol Info
     14 0.162250    client.mydomain.com   pound.mydomain.com        TCP      2056 > 81 [ACK] Seq=511 Ack=205 Win=65331 Len=0

Frame 14 (60 bytes on wire, 60 bytes captured)
    Arrival Time: Sep  9, 2005 11:58:45.232300000
    Time delta from previous packet: 0.134520000 seconds
   **** NOTE that this is now very HIGH! :'(
    Time since reference or first frame: 0.162250000 seconds
  
    Frame Number: 14
    Packet Length: 60 bytes
    Capture Length: 60 bytes
    Protocols in frame: eth:ip:tcp
Ethernet II, Src: client.mydomain.com (00:13:20:59:47:e3), Dst: Intel_56:f9:a1 (00:d0:b7:56:f9:a1)
    Destination: Intel_56:f9:a1 (00:d0:b7:56:f9:a1)
    Source: client.mydomain.com (00:13:20:59:47:e3)
    Type: IP (0x0800)
    Trailer: 000000000000
Internet Protocol, Src: client.mydomain.com (client.mydomain.com), Dst: pound.mydomain.com (pound.mydomain.com)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 40
    Identification: 0x299f (10655)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0xa8de [correct]
    Source: client.mydomain.com (client.mydomain.com)
    Destination: pound.mydomain.com (pound.mydomain.com)
Transmission Control Protocol, Src Port: 2056 (2056), Dst Port: 81 (81), Seq: 511, Ack: 205, Len: 0
    Source port: 2056 (2056)
    Destination port: 81 (81)
    Sequence number: 511    (relative sequence number)
    Acknowledgement number: 205    (relative ack number)
    Header length: 20 bytes
    Flags: 0x0010 (ACK)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 0... = Push: Not set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 65331
    Checksum: 0xda50 [correct]
    SEQ/ACK analysis
        This is an ACK to the segment in frame: 13
        The RTT to ACK the segment was: 0.134520000 seconds

Frame 15.....  The HTML Content is then sent....
No.     Time        Source                Destination           Protocol Info
     15 0.162380    pound.mydomain.com        client.mydomain.com HTTP     Continuation or non-HTTP traffic

Frame 15 (165 bytes on wire, 165 bytes captured)
    Arrival Time: Sep  9, 2005 11:58:45.232430000
    Time delta from previous packet: 0.000130000 seconds
**** NOTE that this is very low!
    Time since reference or first frame: 0.162380000 seconds
    Frame Number: 15
    Packet Length: 165 bytes
    Capture Length: 165 bytes
    Protocols in frame: eth:ip:tcp:http:data
Ethernet II, Src: Intel_56:f9:a1 (00:d0:b7:56:f9:a1), Dst: client.mydomain.com (00:13:20:59:47:e3)
    Destination: client.mydomain.com (00:13:20:59:47:e3)
    Source: Intel_56:f9:a1 (00:d0:b7:56:f9:a1)
    Type: IP (0x0800)
Internet Protocol, Src: pound.mydomain.com (pound.mydomain.com), Dst: client.mydomain.com (client.mydomain.com)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 151
    Identification: 0xe9eb (59883)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0x2823 [correct]
    Source: pound.mydomain.com (pound.mydomain.com)
    Destination: client.mydomain.com (client.mydomain.com)
Transmission Control Protocol, Src Port: 81 (81), Dst Port: 2056 (2056), Seq: 205, Ack: 511, Len: 111
    Source port: 81 (81)
    Destination port: 2056 (2056)
    Sequence number: 205    (relative sequence number)
    Next sequence number: 316    (relative sequence number)
    Acknowledgement number: 511    (relative ack number)
    Header length: 20 bytes
    Flags: 0x0018 (PSH, ACK)
        0... .... = Congestion Window Reduced (CWR): Not set
        .0.. .... = ECN-Echo: Not set
        ..0. .... = Urgent: Not set
        ...1 .... = Acknowledgment: Set
        .... 1... = Push: Set
        .... .0.. = Reset: Not set
        .... ..0. = Syn: Not set
        .... ...0 = Fin: Not set
    Window size: 6432
    Checksum: 0x8882 [correct]
Hypertext Transfer Protocol
    Data (111 bytes)

0000  3c 68 74 6d 6c 3e 0a 20 3c 68 65 61 64 3e 0a 20   <html>. <head>.
0010  20 3c 74 69 74 6c 65 3e 54 65 72 72 61 4d 61 70    <title>TerraMap
0020  3c 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e   </title>.</head>
0030  0a 3c 62 6f 64 79 3e 48 65 6c 6c 6f 20 57 6f 72   .<body>Hello Wor
0040  6c 64 20 66 72 6f 6d 3a 20 68 75 65 79 2e 61 64   ld from: huey.ad
0050  6c 2e 61 72 64 65 63 2e 63 6f 6d 2e 61 75 3c 2f   l.ardec.com.au</
0060  62 6f 64 79 3e 0a 0a 3c 2f 68 74 6d 6c 3e 0a      body>..</html>.










Andrew Hughes wrote:

Fast HTTP response header: Slow HTTP response header (helloworld.html):
    ...  
  • Content-Length:
    • 24433
  • Date:
    • Thu, 08 Sep 2005 02:25:17 GMT
    ...
  • Content-Length:
    • 132
  • Date:
    • Thu, 08 Sep 2005 02:33:21 GMT



-- 
Ted Dunning
Chief Scientist
Veoh Networks