Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
OpenVPN(-NL) Performance
Jan Just Keijser 9 November 2017 1
2
Wie ben ik? Werkzaam in de ICT sinds 1995
Werk bij Nikhef als Grid System Engineer sinds 2005 In 2004 OpenVPN “ontdekt” Sinds die tijd gebruiker en supporter van OpenVPN Auteur van “OpenVPN 2 Cookbook” (2011), “Mastering OpenVPN” (2015, met Eric Crist) en “OpenVPN Cookbook - 2nd Edition” (2017) ICT interesses: open source, netwerken, VPNs, performance, security, openssl, socat 2
3
Wat heb ik met performance?
Experimenten produceren steeds meer data: 20 PB/jr Voor verwerking hebben we 100,000 cores online 100 Gbps netwerken Terabit link tussen Nikhef en Amsterdam Beveiliging is zeer belangrijk: 100k cores zijn erg aantrekkelijk voor hackers Gevaren: DDoS, spam, mining, etc 3
4
Wat heb ik met performance?
4
5
Ingrediënten voor een snel VPN
Hardware Netwerk Software OS Crypto libraries OpenVPN 2.4+ Configuratie en instellingen Meetmethode 5
6
Hardware Architectuur: Skylake+ of Ryzen+ Kloksnelheid
AES support in CPU, of crypto accelerator Test: openssl speed -evp aes-256-gcm Met AES-NI: k Zonder: k (gebruik “OPENSSL_ia32cap=0 openssl ...”) 6
7
Netwerk OpenVPN kan makkelijk 100+ Mbps aan
Met allerlaatste CPUs haalt OpenVPN ~ 1 Gbps Als je niet vastzit aan MTU=1500 dan haalt OpenVPN 2+ Gbps (record: 2.85 MTU=9000) Test altijd eerst de “raw” netwerk snelheid: “raw” iperf: Mbps OpenVPN iperf: 900 MTU=1500 (gebruik “iperf -c … -l 64M -n 2G”) 7
8
Software: OS Server OS: Linux (of *BSD) Betere “tun” driver
Betere netwerk stack Client OS: Linux, Windows, Android (geen idee van MacOS/iOS performance) Embedded devices: Check de kloksnelheid Bedenk dat voor iedere 1 Mbps throughput circa 3 MHz CPU power nodig is Met een 250 MHz MIPS CPU krijg je geen 100+ Mbps VPN 8
9
Software: crypto libraries
OpenSSL versus mbedTLS OpenSSL heeft betere hand-gecodeerde assembly routines voor AES en SHA V1.0.1 speed aes-256-gcm: k V1.1.0 speed aes-256-gcm: k OpenVPN op Gigabit Ethernet: V2.4.4 AES-256-GCM (mbedTLS eist hoofdletters!) OpenSSL iperf : /- 10 Mbps) MbedTLS iperf : /- 10 Mbps) 9
10
Software: OpenVPN V2.4+: Negotiate Cipher Protocol
GCM cipher suites → encrypt+hash in 1 stap → snelheid! Met en zonder GCM V2.4.4 “--ncp-disable” (aes-256-cbc) : 650 Mbps Met NCP (aes-256-gcm) : 900 Mbps Vooral belangrijk voor de server Bij meerdere clients wordt de throughput verdeeld 10
11
Configuratie (1) Proto udp vs tcp Soms is “proto tcp” echt sneller!
Dev tun vs tap Bridging = no-no voor performance IPv4 vs IPv6 IPv6 is ca 10% langzamer. (verwacht: max 2%) Tls-auth/tls-crypt: Zou niks uit moeten maken In sommige gevallen zie ik 5% perf drop 11
12
Configuratie (2) Het illustere kwartet link-mtu tun-mtu fragment
mssfix Eigenlijk is alleen “fragment” noodzakelijk Een hogere tun-mtu waarde werkt alleen bij point-to- point links Voor Ethernet netwerken nauwelijks de moeite waard; voor ADSL/kabel en 4G/LTE wel van toepassing 12
13
Configuratie (3) Dubbele server setup loont
1 server voor LAN clients met standaard instellingen 1 server voor mobiele clients Aparte crypto instellingen --cipher, --auth Aparte MTU instellingen --fragment, --mssfix, --tun-mtu Ook vanuit beveiligingsoogpunt een goed idee (vergelijk met BYOD) 13
14
Scripts & plugins Server-side script BLOKKEERT alle clients zolang het loopt Gebruik plugins waar mogelijk: die draaien in een aparte thread Two Factor Authentication: rekeying is vaak heel langzaam Ook bij rekeying blokkeert de server Niet echt geschikt voor de server zelf Speel met --reneg-sec en --reneg-bytes 14
15
Meetmethode “iperf”, “iperf3” & “ping” are your friends
“iperf” : throughput “ping” : latency Throughput wordt beter van hogere MTU/fragment waarde Latency wordt beter van lagere MTU waarde Gebruik iperf -c …. -l 4M -n 2G -fk voor consistentere resultaten 15
16
Test configuratie proto udp port 1194 dev tun
server ca ca.crt cert server.crt key server.key dh dh1024.pem tls-auth ta.key 0 user nobody group nobody cipher aes-256-cbc auth sha256 16
17
Windows vs Linux clients
Server: Skylake Xeon Gold 3.2 GHz Client: Haswell 3.8 GHz Linux client: OpenVPN 2.3: 600 Mbps OpenVPN 2.4: 840 Mbps Windows 7 client, OpenVPN 2.4: Naar client: ~400 Mbps UDP: naar server: Mbps TCP: naar server: Mbps 17
18
De “tun”/TAP-WIN adapter
UDP/TCP encrypted traffic 1 Ethernet OpenVPN 3 2 tun/tap device 18
19
Het probleem @ Gigahertz+
19
20
Toekomst Minder monolithisch ontwerp Betere schaalbaarheid
Meer stroomlijnen voor performance En uiteraard: nog snellere CPUs :) 20
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.