# \[OpenVPN\] Optimiser les débit pour connexion 1Gbps?

**URL:** <https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181>\
**Category:** Support Debian\
**Created:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181 "2016-02-21T19:07:48Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/1 "2016-02-21T19:07:48Z")

</div>

Bonjour,

Voilà un certain temps que j’utilise «&nbsp;intensivement&nbsp;» OpenVPN sur différent serveurs.  
Pour l’instant c’était seulement des serveurs en 100Mbps, mais j’était plus limité par le processeur que par la connexion proprement dite.

Récemment j’ai fait l’acquisition d’un nouveau serveur, avec une connectivité en 1Gbps.  
Processeur Xeon E3-1230, jeux d’instruction AES (aes-ni), RAM 8Go EEC…  
Sauf que maintenant ce n’est plus le processeur qui me limite, mais autre chose (Mais quoi ??? Mystère !).  
En AES-256-CDC le processeur est quasiment pas sollicité (30% sur une thread).

Coté client, j’ai une connexion SFR Fibre 1Gbps.  
Processeur i7-3770K, RAM 32Go… Une bonne petite bête.

Sur la machine client, comme sur la machine serveur, en download depuis Testdebit.info je suis facile au 900Mbits/s.  
Et download d’un fichier du serveur (via apache) vers la machine client, idem.

En revanche, via OpenVPN, je plafonne avec les même tests à environ 160Mbps.  
Si je désactive l’encryption, je tombe en dessous des 100Mbits.  
Je me serais attendu pourtant à un résultat inverse.

J’ai longuement parcouru la toile.  
Je suis tombé sur ça : [community.openvpn.net/openvpn/w … orks\_Linux](https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux)  
Ainsi que de nombreux forums.

Mais pas d’évolution notable dans mon cas avec les configs proposées (c’était souvent de jouer avec tun-mtu, fragment…).

Serveur :

```nohighlight
mode server
proto udp
port 1195
dev tun0

ca keys/servers/ca.crt
cert keys/servers/server.crt
key keys/servers/server.key
dh keys/servers/dh1024.pem
tls-auth keys/ta.key 0
cipher aes-256-cbc

client-cert-not-required
username-as-common-name
plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn

server 10.1.0.0 255.255.255.0
client-config-dir others/udp-1195/
push "redirect-gateway def1 bypass-dhcp"

keepalive 10 120
persist-key
persist-tun

verb 3
status logs/udp-1195.sts
log-append logs/udp-1195.log

```

Client :

```nohighlight
client
dev tun
proto udp

remote mondomaine.fr 1195

ca ca.crt
tls-auth ta.key 1
cipher AES-256-CBC

auth-user-pass ../logins.txt

nobind
resolv-retry infinite
persist-key
persist-tun
verb 3

```

openssl speed aes-256-cbc :

```nohighlight
Doing aes-256 cbc for 3s on 16 size blocks: 13682966 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 64 size blocks: 3606779 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 256 size blocks: 913768 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 1024 size blocks: 229469 aes-256 cbc's in 2.99s
Doing aes-256 cbc for 3s on 8192 size blocks: 28719 aes-256 cbc's in 2.99s
OpenSSL 1.0.1e 11 Feb 2013
built on: Mon Mar 18 20:41:20 CET 2013
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256 cbc 73219.88k 77201.96k 77974.87k 78587.38k 78684.30k

```

openssl speed -evp aes-256-cbc :

```nohighlight
Doing aes-256-cbc for 3s on 16 size blocks: 81821132 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 64 size blocks: 21479841 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 256 size blocks: 5429785 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1361247 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 8192 size blocks: 170298 aes-256-cbc's in 2.99s
OpenSSL 1.0.1e 11 Feb 2013
built on: Mon Mar 18 20:41:20 CET 2013
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 437838.83k 459769.17k 463341.65k 466192.95k 466582.35k

```

Auriez-vous des pistes à me suggérer afin d’optimiser la vitesse ?  
Je ne demande pas 1Gbps via OpenVPN, mais déjà 200 ou 300Mbps je serais aux anges 🙂 !

Comment font les grosses entreprises pour interconnecter plusieurs site (point-to-point, sans parler de solutions «&nbsp;matériel&nbsp;» type CISCO…) ? IPSEC, L2TP ?

Si vous avez besoin d’autre éléments, ne pas hésiter !

Merci !

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/2 "2016-02-21T19:07:50Z")

</div>

> [@Darel](#):
>
> Sauf que maintenant ce n’est plus le processeur qui me limite, mais autre chose (Mais quoi ??? Mystère !).

La charge CPU de l’autre machine ? La vitesse des disques ? Une QoS du FAI ou de l’hébergeur ?  
Tu as vérifié l’absence de fragmentation des paquets à l’intérieur du tunnel et des paquets du tunnel ?

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/3 "2016-02-21T19:07:50Z")

</div>

CPU machine client idem, une thread, 10%.  
J’ai testé sous une machine Linux, au cas où sa viendrait de l’adaptateur TAP de Windows, et ben non, c’est pareil.

Pas de problème au niveau des débits des disques, l’un comme l’autre arrivent a manger le 1Gbps sans OpenVPN.  
Coté client SSD Samsung 840 Pro, coté serveur RAID 0.

QoS sa je ne sais pas.  
Pas à ma connaissance en tout cas.

Pour la fragmentation, comment le vérifier ?

Merci de ta réponse PascalHambourg !

---

<div class="post-metadata">

**Author:** ![ben\_raven](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ben_raven/32/4076_2.png) [@ben\_raven](https://www.debian-fr.org/u/ben_raven)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/4 "2016-02-21T19:07:51Z")

</div>

Tu peux balancer ton résultat [speedtest.net/](http://www.speedtest.net/)

Pour faire rêver mais aussi pour voir ton upload. Merci ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/5 "2016-02-21T19:07:51Z")

</div>

> [@Darel](#):
>
> Pour la fragmentation, comment le vérifier ?

Il faut lancer une capture de paquets (wireshark, tcpdump…) lors d’un téléchargement et vérifier la présence de fragments. Capturer :

- tous les paquets sur l’interface tun/tap du VPN
- les paquets UDP/1195 sur l’interface ethernet par laquelle passe le VPN.

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/6 "2016-02-21T19:07:51Z")

</div>

Serveur :  
 ![](http://pix.isalo.org/upload/original/1384953965.png)

Client :  
 ![](http://pix.isalo.org/upload/original/1384953997.png)

Ok. Je vais regarder.  
Merci !

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/7 "2016-02-21T19:07:51Z")

</div>

J’arrive à capturer le trafic avec Wireshark, mais comment identifier une fragmentation ?

En revanche, quand je fais un “tcpdump -i tun0 udp port 1195” et que je met un fichier en téléchargement sur le client, rien n’est capturé. Normal ?

---

<div class="post-metadata">

**Author:** ![ben\_raven](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ben_raven/32/4076_2.png) [@ben\_raven](https://www.debian-fr.org/u/ben_raven)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/8 "2016-02-21T19:07:51Z")

</div>

[quote=“Darel”]Serveur :  
 ![](http://pix.isalo.org/upload/original/1384953965.png)

Client :  
 ![](http://pix.isalo.org/upload/original/1384953997.png)

Ok. Je vais regarder.  
Merci ![/quote]

Et tu télécharges sur le serveur, depuis le client ?

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/9 "2016-02-21T19:07:51Z")

</div>

> [@ben\_raven](#):
>
> Et tu télécharges du client vers le serveur ?

Non, du serveur vers le client, ou de testdebit vers le client en passant par OpenVPN.

[quote=«&nbsp;PascalHambourg&nbsp;»]Il faut lancer une capture de paquets (wireshark, tcpdump…) lors d’un téléchargement et vérifier la présence de fragments. Capturer :

- tous les paquets sur l’interface tun/tap du VPN
- les paquets UDP/1195 sur l’interface ethernet par laquelle passe le VPN.[/quote]  
Je penses avoir trouver comment faire avec Wireshark…

![](http://pix.isalo.org/upload/original/1384956333.png)

Donc je suppose que oui, sa fragmente.  
C’est bien ça, ou je suis complètement à coté de la plaque ?

---

<div class="post-metadata">

**Author:** ![ben\_raven](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ben_raven/32/4076_2.png) [@ben\_raven](https://www.debian-fr.org/u/ben_raven)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/10 "2016-02-21T19:07:52Z")

</div>

Et si tu passes ton VPN en TCP ça donne quoi ?

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/11 "2016-02-21T19:07:52Z")

</div>

J’était en train de me poser la question 😃 !  
Je suis tombé sur ça : [forums-web2.gentoo.org/viewtopic … art-0.html](http://forums-web2.gentoo.org/viewtopic-t-795994-start-0.html)

Je vais tester.

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/12 "2016-02-21T19:07:52Z")

</div>

Nop, c’est encore pire, je tombe à 20Mbps.

J’ai aussi éssayer de mettre ça :

`tun-mtu 6000
fragment 0
mssfix 0`  
Idem.

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/13 "2016-02-21T19:07:52Z")

</div>

[quote=«&nbsp;Darel&nbsp;»], quand je fais un «&nbsp;tcpdump -i tun0 udp port 1195&nbsp;» et que je met un fichier en téléchargement sur le client, rien n’est capturé. Normal ?  
J’arrive à capturer le trafic avec Wireshark, mais comment identifier une fragmentation ?

En revanche, quand je fais un «&nbsp;tcpdump -i tun0 udp port 1195&nbsp;» et que je met un fichier en téléchargement sur le client, rien n’est capturé. Normal ?[/quote]  
Oui, normal : tu n’as pas fait ce que j’ai dit dans mon message précédent. Les paquets UDP/1195 sont visibles à l’extérieur du VPN, donc sur l’interface ethernet (eth0 ?) et non l’interface tun/tap. Sur tun0, le plus simple est de tout capturer.

AMA «&nbsp;TCP segment of a reassembled PDU&nbsp;» affiché par wireshark correspond plutôt à la segmentation normale de TCP et pas à de la fragmentation IP. La taille réduite des segments (1407 octets) semble tenir compte de la surcharge d’encapsulation du VPN, pour éviter la fragmentation IP.

> [@](#):
>
> Nop, c’est encore pire, je tombe à 20Mbps.

TCP dans TCP, ce n’est jamais terrible car la gestion de la congestion et des retransmissions des deux couches TCP empilées interfèrent l’une avec l’autre…

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/14 "2016-02-21T19:07:52Z")

</div>

Donc si je comprends bien, ce n’est pas fragmenté ?

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/15 "2016-02-21T19:07:53Z")

</div>

avec une trace tcpdump sur les interfaces tun et eth ce serait plus facile (pour moi) de vérifier.

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/16 "2016-02-21T19:07:53Z")

</div>

tcpdump -i eth0 udp port 1195 : [op2.labz.fr/tcpdump.txt](http://op2.labz.fr/tcpdump.txt)  
tcpdump -v -i eth0 udp port 1195 : [op2.labz.fr/tcpdump-v.txt](http://op2.labz.fr/tcpdump-v.txt)  
tcpdump -vv -i eth0 udp port 1195 : [op2.labz.fr/tcpdump-vv.txt](http://op2.labz.fr/tcpdump-vv.txt)  
tcpdump -vvv -i eth0 udp port 1195 : [op2.labz.fr/tcpdump-vvv.txt](http://op2.labz.fr/tcpdump-vvv.txt)

Environ 10Mo par fichier.

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/17 "2016-02-21T19:07:53Z")

</div>

Il n’était pas nécessaire de fournir une trace aussi volumineuse, un passage contenant quelques paquets de grosse taille (\> 1000 octets) suffisait. Pas de fragmentation des paquets “à l’extérieur” du VPN en tout cas, ils ont même le flag “DF” qui empêche la fragmentation. Reste à vérifier à l’intérieur du VPN, avec

```auto

```

même si d’après la trace succinte de wireshark montrée plus haut cela ne semble pas être le cas non plus.

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:07 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/18 "2016-02-21T19:07:54Z")

</div>

En effet, ils ont aussi le flag “DF”… [pastebin.com/2yC55SpS](http://pastebin.com/2yC55SpS)

---

<div class="post-metadata">

**Author:** ![Darel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/darel/32/3190_2.png) [@Darel](https://www.debian-fr.org/u/Darel)\
**Post date:** [Février 21, 2016, 7:08 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/19 "2016-02-21T19:08:05Z")

</div>

Là je ne sais plus trop quoi regarder.  
Vous pensez qu’un VPN IPsec serait plus performant ?

---

<div class="post-metadata">

**Author:** ![sv0t](https://www.debian-fr.org/user_avatar/www.debian-fr.org/sv0t/32/5190_2.png) [@sv0t](https://www.debian-fr.org/u/sv0t)\
**Post date:** [Février 21, 2016, 7:08 UTC](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181/20 "2016-02-21T19:08:07Z")

</div>

Traditionnel un VPN s’appuie sur IPSec (Internet Protocol Security) pour créer un tunnel entre les deux extrémités.  
Je suis curieux de la réponse qui peut être donnée, mais je ne pense pas que cela fasse une différence…

Abonnement

[Page suivante](https://www.debian-fr.org/t/openvpn-optimiser-les-debit-pour-connexion-1gbps/60181.md?page=2)
