Projet

Général

Profil

Benchmark VPN » Historique » Version 9

Baptiste Jonglez, 31/05/2014 10:29

1 2 Baptiste Jonglez
{{>toc}}
2 2 Baptiste Jonglez
3 1 Baptiste Jonglez
h1. Benchmark VPN
4 1 Baptiste Jonglez
5 1 Baptiste Jonglez
But : *étudier la performance de différentes solutions de VPN sur des petits routeurs OpenWRT.*
6 1 Baptiste Jonglez
7 1 Baptiste Jonglez
Le but final étant de se servir des tunnels pour router des IP publiques : [[Partage_ADSL_OpenVPN]]
8 1 Baptiste Jonglez
9 2 Baptiste Jonglez
Pour les autres critères de choix (facilité de mise en place, sécurité, etc), voir [[VPN]].
10 1 Baptiste Jonglez
11 2 Baptiste Jonglez
h2. Méthodologie
12 1 Baptiste Jonglez
13 7 Baptiste Jonglez
Matériel : un routeur à benchmarker, et deux ordinateurs testeurs (voir plus bas pour se contenter d'un seul ordinateur testeur)
14 7 Baptiste Jonglez
15 7 Baptiste Jonglez
Le routeur monte un tunnel VPN avec un ordinateur branché sur le WAN.  Sur le LAN, l'autre ordinateur se connecte normalement.
16 7 Baptiste Jonglez
17 7 Baptiste Jonglez
En un schéma :
18 7 Baptiste Jonglez
19 1 Baptiste Jonglez
!benchmark-setup.png!
20 1 Baptiste Jonglez
21 7 Baptiste Jonglez
Une fois ce setup en place, on utilise iperf en TCP entre les deux laptops, en empruntant le tunnel (i.e. entre 192.168.42.1 et 172.23.38.2 sur le schéma)
22 7 Baptiste Jonglez
23 7 Baptiste Jonglez
On ne fait pas de iperf sur le routeur directement, car iperf bouffe lui-même pas mal de CPU.  De plus, sur le routeur, on ne met ni firewall, ni NAT.
24 7 Baptiste Jonglez
25 7 Baptiste Jonglez
Tests à réaliser : *iperf TCP entre les deux laptops, dans les deux sens*, dans les cas suivants :
26 7 Baptiste Jonglez
27 7 Baptiste Jonglez
* test gros paquets (1400 octets), puis petits paquets (cf. VoIP, 50 à 100 octets, la mesure standard étant 64 octets)
28 7 Baptiste Jonglez
* sans emprunter le VPN (baseline), puis à travers le VPN
29 7 Baptiste Jonglez
30 7 Baptiste Jonglez
Paramètres mesurés :
31 7 Baptiste Jonglez
32 7 Baptiste Jonglez
* débit mesuré par iperf, et en déduire le nombre de paquets par secondes (attention à la taille des headers dans le calcul)
33 7 Baptiste Jonglez
* consommation CPU sur le routeur (difficilement automatisable / reproductible ?)
34 7 Baptiste Jonglez
35 7 Baptiste Jonglez
Autres tests possibles :
36 7 Baptiste Jonglez
37 7 Baptiste Jonglez
* avec/sans firewall stateful
38 7 Baptiste Jonglez
* client connecté sur le wifi plutôt que sur un des ports LAN (mais les résultats risquent de beaucoup dépendre du matériel wifi)
39 2 Baptiste Jonglez
40 1 Baptiste Jonglez
À terme, on peut envisager une automatisation de ce processus, par exemple via un paquet OpenWRT pour le routeur et une configuration toute faite et/out script pour le testeur.
41 2 Baptiste Jonglez
42 8 Baptiste Jonglez
h3. Avec un seul laptop
43 8 Baptiste Jonglez
44 8 Baptiste Jonglez
C'est possible de tester avec un seul laptop, si il a deux interfaces réseau (par exemple une carte réseau USB).  Par contre, il faut bidouiller un peu : si on iperf vers une de ses propres adresses, ça va rester en local et ne pas passer par le routeur. 
45 8 Baptiste Jonglez
46 8 Baptiste Jonglez
Solution : utiliser les *network namespaces* de linux. Technique décrite ici : http://blog.bofh.it/debian/id_446
47 8 Baptiste Jonglez
48 9 Baptiste Jonglez
La première interface est eth0, qui sera branchée sur le WAN (donc côté VPN), tandis que eth1 sera utilisée en simple client sur le LAN.
49 9 Baptiste Jonglez
50 9 Baptiste Jonglez
<pre>
51 9 Baptiste Jonglez
ip netns add bench
52 9 Baptiste Jonglez
ip link set eth1 netns bench
53 9 Baptiste Jonglez
ip netns exec bench ip link set lo up
54 9 Baptiste Jonglez
ip netns exec bench ip link set eth1 up
55 9 Baptiste Jonglez
</pre>
56 9 Baptiste Jonglez
57 9 Baptiste Jonglez
Il suffit ensuite de faire toutes les manips sur eth1 avec @ip netns exec bench@ devant, ou bien carrément lancer un shell dans le nouveau namespace :
58 9 Baptiste Jonglez
59 9 Baptiste Jonglez
<pre>
60 9 Baptiste Jonglez
ip netns exec bench /bin/bash
61 9 Baptiste Jonglez
</pre>
62 9 Baptiste Jonglez
63 1 Baptiste Jonglez
h2. Related
64 2 Baptiste Jonglez
65 2 Baptiste Jonglez
Rien de bien concret côté OpenWRT :
66 1 Baptiste Jonglez
67 2 Baptiste Jonglez
* http://wiki.openwrt.org/doc/howto/performance
68 1 Baptiste Jonglez
* http://wiki.openwrt.org/doc/hardware/performance
69 2 Baptiste Jonglez
70 2 Baptiste Jonglez
h2. Résultats
71 2 Baptiste Jonglez
72 1 Baptiste Jonglez
h3. L2TP
73 1 Baptiste Jonglez
74 1 Baptiste Jonglez
Pour la mise en place, voir [[Tunnel L2TP]].