TODOs:
* Metriken schaffen, die das Problem zeigen
* Queues der Interface monitoren
* netstat -nua zeigt ansteigende queue länge
* siehe auch tc -s qdisc
* anzahl der verbundenen clients monitoren?
* in tabelle 104 aka. reverseroutes stehen Routen zu den VPN-Clients
* Nach dem richtigen Netz greppen und wir haben alle VPN-Clients
* referenzclient pro vpn um latenz/jitter/loss zu ermitteln?
* aus DC und hinter DSL XXX
# Problem definition
Der Datendurchsatz des VPN03-Service ist teilweise zu gering und es kommt zeitweise zu Paketverlust innerhalb der VPN-Verbindungen.
Die Ping-Zeiten sind relativ unterschiedlich (Jitter).
# Brain storming
* queuing policy ändern?
* profiling des openvpn prozesses
* kernel profiling?
* rcv und snd buffer auf 0 reduzieren auf server+client seite
* Kernel-Default-Buffer ev. anpassen?
* uebergabe kernelspace-userspace beschleunigen mit compile options?
* Kontext-Switche?
* MSS-Clamping beim NAT auf einen Wert ~1280 DONE?
* OpenVPN mss-fix beim Plastikrouter auf ~1300
* OpenVPN UDP replay window deaktivieren ( --replay-window )
* ev. nicht ohne weiteres möglich, da bei den Clients aktiv
* aktiv <-> inaktiv ist inkompatibel?
* könnte man vielleicht vom Server pushen?!
* no-replay: vpn unbenutzbar [Bad LZO decompression header byte: 0]
** warum haben wir LZO aktiv? 98% des traffics ist HTTP, welches i.d.r. eh schon via mod-deflate komprimiert wird
** LZO ist nur für openvpn tcp konfiguration aktiv
* net.netfilter.nf_conntrack_tcp_timeout_established
* hoher timeout führt zu vollem conntrack table
* Virtualisierung und iptables saugen süße kleine Hamster durch enge Strohhalme - daran wird sich aber wohl so schnell nichts ändern.
* zu viele Clients pro Server - auch daran wird sich erstmal nicht viel ändern
** jemalloc
** aktueller Kernel
** Xen? irqbalance 1.0.6+ und Receive Packet Steering
* --fast-io Option, hört sich schon genial an
* testweise auf vpn03d aktiviert
* BSD vs Linux
** pfsense BSD basierend schmal lässt sich auch auf z.B. Raspberry Pi betreiben ohne Virtualisierung
** warum pfsense und kein vanilla openbsd? Wir brauchen das fancy webfrontend nicht.
** Problem bei RasPi: CPU und v.a. die besch... Netzkartenanbindung - intern über USB2, was CPU frisst und bei ~25MBit/s dichtmacht (reines IP-Forwarding, noch kein VPN, keine Crypto).
*** ALIX Boards nutzen AMD Geode aus dem jahr 2005/2007 -> sehr alte hardware
* SNAT --to-source anstatt kompliziertes HMARKing nutzen
# Metrics
## OpenVPN Konfiguration für Monitoring
ping -I <srcip> dst
mtr --address <srcip> dst
dev option sollte vpn03{a,b,c,d} sein
remote ebenfalls
client
dev vpn03a
dev-type tun
remote vpn03a.berlin.freifunk.net
nobind
persist-key
persist-tun
ca freifunk-ca.crt
cert freifunk-test.crt
key freifunk-test.key
ns-cert-type server
comp-lzo no
cipher none