Speedtest shows a lower throughput through ProxySG
search cancel

Speedtest shows a lower throughput through ProxySG

book

Article ID: 166939

calendar_today

Updated On:

Products

ProxySG Software - SGOS

Issue/Introduction

From our observation, Speedtest determines the bandwidth by downloading several image files, from smaller to larger ones. If the bandwidth does not hit a certain threshold, it will not download larger files to determine the high bandwidth.

The ProxySG may reuse the server-side port if the client-side connection is being reused. It has been observed that there are Speedtest servers that do not respond to the TCP-SYN packet for a TCP Port that has just been closed previously. This may cause overall throughput to drop because a parallel download to determine the highest bandwidth is not possible.

No.     Time     Source                Destination           SrcPort DstPort Protocol Info
    140 10.643   ###.###.###.###       ###.###.###.###       3924    80      HTTP     GET /speedtest/latency.txt?x=############# HTTP/1.1
    141 10.650   ###.###.###.###       ###.###.###.###       80      3924    TCP      http > mpl-gprs-port [ACK]
    142 10.651   ###.###.###.###       ###.###.###.###       80      3924    HTTP     HTTP/1.1 200 OK  (text/plain)
    143 10.651   ###.###.###.###       ###.###.###.###       80      3924    TCP      http > mpl-gprs-port [FIN, ACK]
    144 10.651   ###.###.###.###       ###.###.###.###       3924    80      TCP      mpl-gprs-port > http [ACK]
    145 10.651   ###.###.###.###       ###.###.###.###       8080    51029   HTTP     HTTP/1.1 200 OK  (text/plain)
    146 10.651   ###.###.###.###       ###.###.###.###       3924    80      TCP      mpl-gprs-port > http [FIN, ACK]
    147 10.657   ###.###.###.###       ###.###.###.###       80      3924    TCP      http > mpl-gprs-port [ACK]
    148 10.852   ###.###.###.###       ###.###.###.###       51029   8080    TCP      51029 > http-alt [ACK] Seq=2445777519 Ack=356004117 Win=16187 Len=0
    150 10.868   ###.###.###.###       ###.###.###.###       51029   8080    HTTP     GET http://example.com/speedtest/random350x350.jpg?x=#############&y=2 HTTP/1.1
    151 10.869   ###.###.###.###       ###.###.###.###       3924    80      TCP      [TCP Port numbers reused] mpl-gprs-port > http [SYN]
    153 10.937   ###.###.###.###       ###.###.###.###       8080    51029   TCP      http-alt > 51029 [ACK]
    154 13.837   ###.###.###.###       ###.###.###.###       3924    80      TCP      mpl-gprs-port > http [SYN]
    155 13.843   ###.###.###.###       ###.###.###.###       80      3924    TCP      http > mpl-gprs-port [SYN, ACK]
    156 13.843   ###.###.###.###       ###.###.###.###       3924    80      TCP      mpl-gprs-port > http [ACK]
    157 13.843   ###.###.###.###       ###.###.###.###       3924    80      HTTP     GET /speedtest/random350x350.jpg?x=#############&y=2 HTTP/1.1
    158 13.849   ###.###.###.###       ###.###.###.###       80      3924    TCP      http > mpl-gprs-port [ACK]
    159 13.850   ###.###.###.###       ###.###.###.###       80      3924    HTTP     HTTP/1.1 200 OK
    160 13.850   ###.###.###.###       ###.###.###.###       8080    51029   HTTP     HTTP/1.1 200 OK

Frame 142: 340 bytes on wire (2720 bits), 340 bytes captured (2720 bits)
Hypertext Transfer Protocol
    HTTP/1.1 200 OK
    Date: [timestamp]
    Server: [server data]
    Last-Modified: [timestamp]
    ETag: "#######-#-########"
    Accept-Ranges: bytes
    Content-Length: 10
    Connection: close            <<<<<
    Content-Type: text/plain; charset=UTF-8

Frame 145: 371 bytes on wire (2968 bits), 371 bytes captured (2968 bits)
Hypertext Transfer Protocol
    HTTP/1.1 200 OK
    Date: [timestamp]
    Server: [server data]
    Last-Modified: [timestamp]
    ETag: "#######-#-########"
    Accept-Ranges: bytes
    Content-Type: text/plain; charset=UTF-8
    Content-Length: 10
    Proxy-Connection: Keep-Alive    <<<<<
    Connection: Keep-Alive          <<<<<
    Age: 0

Resolution

The following CPL should address the problem by preserving persistency with the user computer.

<Proxy>
    request.header.referer=example.com http.client.persistence(preserve)

 

For testing purposes, we can also use the following :

<Proxy>
    http.client.persistence(preserve)

Additional Information

This can also be applied to similar speed tests.