Network Stalls
Posted: Sat Oct 30, 2010 1:45 pm
For years, I have about 30 openvpn connections successfully running at any given moment except for connections with one particular ISP which experiences periodic network stalls over the vpn while non-vpn traffic is flowing normally.
In the following setup, the VPN end-point running in server mode is located at a hosting provider and is using an official IP address. The VPN end-point running in client mode is located on a DSL router (linux host) which is using an official IP address.
If I do a:
from the server to the DSL connection then the pings come back. Using:
produces messages:
These pings are going over the VPN from the server to the DSL connection. Pinging the DSL connection from the server *without* going over the VPN connection produces the same behaviour (|ping|==1472 -> succes; |ping|==1473 -> fail).
If I setup a regular (|icmp|==64) ping going from the server to the DSL connection, all pings are replied to in less than 15ms. At the same time, I run a ping (|icmp|==64) from the server to the DSL connection going over the VPN connection. Most pings are replied to in 17ms but there's periods when several pings are lost or stalled significantly while at the same time, the 'regular' ping (which is not going over the vpn connection) simply continues without any stalls or lost replies.
This is the ping which is not going over the VPN from the server to the DSL connection:
and the beat goes on...
This is the ping from the same server to the same DSL connectiong going over the VPN connection:
and the dropping or stalling continues for anywhere between 10s and several minutes...
Both pings were started at the same time.
This is the server config:
and this is the client config:
Note that there are several clients connecting with this server from several different ISPs. All clients run for years without any issues whatsoever while one client on one particular ISP experiences these stalls.
I don't see any special messages logged. If I use "verb 6", then, on the DSL connection I see the UDP packets come in, get transferred/unpacked to ICMP, receive an ICMP response which is transferred/packed to UDP and sent back over the DSL link. Iirc, the UDP packets are 133 octets in size.
I've played with mssfix, tun-mtu and fragment but to no avail. I've run the same VPN over (non-preferable) TCP but the behaviour is more or less the same.
Should I accuse my ISP of traffic shaping of some sort?
In the following setup, the VPN end-point running in server mode is located at a hosting provider and is using an official IP address. The VPN end-point running in client mode is located on a DSL router (linux host) which is using an official IP address.
If I do a:
Code: Select all
# ping -s 1472 -M do 172.18.18.6
Code: Select all
# ping -s 1473 -M do 172.18.18.6
Code: Select all
From 172.18.18.1 icmp_seq=1 Frag needed and DF set (mtu = 1500)
If I setup a regular (|icmp|==64) ping going from the server to the DSL connection, all pings are replied to in less than 15ms. At the same time, I run a ping (|icmp|==64) from the server to the DSL connection going over the VPN connection. Most pings are replied to in 17ms but there's periods when several pings are lost or stalled significantly while at the same time, the 'regular' ping (which is not going over the vpn connection) simply continues without any stalls or lost replies.
This is the ping which is not going over the VPN from the server to the DSL connection:
Code: Select all
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=75 ttl=61 time=12.6 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=76 ttl=61 time=12.5 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=77 ttl=61 time=12.5 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=78 ttl=61 time=12.6 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=79 ttl=61 time=12.5 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=80 ttl=61 time=12.6 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=81 ttl=61 time=12.4 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=82 ttl=61 time=12.4 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=83 ttl=61 time=12.6 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=84 ttl=61 time=12.3 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=85 ttl=61 time=12.8 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=86 ttl=61 time=12.3 ms
64 bytes from dsl.hostname (dsl.ipa.ddr.ess): icmp_seq=87 ttl=61 time=13.0 ms
This is the ping from the same server to the same DSL connectiong going over the VPN connection:
Code: Select all
64 bytes from 172.18.18.6: icmp_seq=76 ttl=64 time=14.4 ms
64 bytes from 172.18.18.6: icmp_seq=77 ttl=64 time=14.5 ms
64 bytes from 172.18.18.6: icmp_seq=78 ttl=64 time=14.5 ms
64 bytes from 172.18.18.6: icmp_seq=79 ttl=64 time=14.6 ms
64 bytes from 172.18.18.6: icmp_seq=82 ttl=64 time=1013 ms
64 bytes from 172.18.18.6: icmp_seq=80 ttl=64 time=5017 ms
64 bytes from 172.18.18.6: icmp_seq=87 ttl=64 time=1015 ms
64 bytes from 172.18.18.6: icmp_seq=86 ttl=64 time=3016 ms
64 bytes from 172.18.18.6: icmp_seq=83 ttl=64 time=9020 ms
64 bytes from 172.18.18.6: icmp_seq=92 ttl=64 time=1016 ms
64 bytes from 172.18.18.6: icmp_seq=90 ttl=64 time=4018 ms
64 bytes from 172.18.18.6: icmp_seq=96 ttl=64 time=1014 ms
Both pings were started at the same time.
This is the server config:
Code: Select all
cd /etc/openvpn/config_dir
local off.ici.al.ip
port 29302
proto udp
dev tun7
hand-window 240
ca ca.crt
cert HS.crt
key HS.key
dh dh2048.pem
; tun
server 172.18.18.0 255.255.255.0
route 172.18.17.0 255.255.255.0
push "route 172.18.21.0 255.255.255.0"
push "dhcp-option DNS 172.18.21.252"
client-config-dir ccd
keepalive 10 180
cipher AES-256-CBC
comp-lzo no
max-clients 128
persist-key
persist-tun
ifconfig-pool-persist /var/run/openvpn/HS-ipp.txt
status /var/run/openvpn/HS-openvpn-status.log
verb 3
mute 13
Code: Select all
cd /etc/openvpn/client_conf
client
dev tun5
proto udp
remote off.ici.al.ip 29302
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert DSL_1.crt
key DSL_1.key
cipher AES-256-CBC
comp-lzo
verb 3
I don't see any special messages logged. If I use "verb 6", then, on the DSL connection I see the UDP packets come in, get transferred/unpacked to ICMP, receive an ICMP response which is transferred/packed to UDP and sent back over the DSL link. Iirc, the UDP packets are 133 octets in size.
I've played with mssfix, tun-mtu and fragment but to no avail. I've run the same VPN over (non-preferable) TCP but the behaviour is more or less the same.
Should I accuse my ISP of traffic shaping of some sort?