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
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)
This can also be applied to similar speed tests.