mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
6.4 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. ---
  2. categories: network
  3. title: Howto iperf
  4. ...
  5. * Documentation : <https://iperf.fr/iperf-doc.php>
  6. * Manpage : <https://manpages.debian.org/stable/iperf/iperf.1.en.html>
  7. * Code source iperf v3 : <https://github.com/esnet/iperf>
  8. * FAQ iperf v3 : <http://software.es.net/iperf/faq.html>
  9. [iperf](http://software.es.net/iperf/) est un outil de diagnostic réseau permettant de mesurer le débit sur des réseaux IP.
  10. ## Principe
  11. iperf doit être installé sur les deux machines entre lesquelles le débit est mesuré : il sera lancé en mode serveur sur l'une, et en mode client sur l'autre.
  12. Si l'on utilise le protocole TCP, le débit sera aussi élevé que la liaison de bout en bout le permet ; avec le protocole UDP, le client devra choisir quel débit émettre ou recevoir, et un rapport affichera le nombre de paquets perdus.
  13. iperf a été ré-écrit en version 3 (commande `iperf3`), avec notamment le support d'IPv6. Suivant les cas d'usage, nous utilisons encore iperf en version 2 (commande `iperf`) notamment dans le cas de tests en mode UDP où iperf3 a pas mal de bugs.
  14. Par défaut iperf3 en mode serveur ouvre la socket réseau `TCP/5201`, pour iperf c'est `TCP/5001`.
  15. ## Installation
  16. Sous Debian :
  17. ~~~
  18. # apt install iperf iperf3
  19. ~~~
  20. Sous OpenBSD :
  21. ~~~
  22. # pkg_add iperf iperf3
  23. ~~~
  24. ## Utilisation basique
  25. Lancer en mode serveur :
  26. ~~~
  27. $ iperf3 -s
  28. -----------------------------------------------------------
  29. Server listening on 5201
  30. -----------------------------------------------------------
  31. ~~~
  32. Sur le client, on lance le test de débit pendant 10 secondes :
  33. ~~~
  34. $ iperf3 -c 192.0.2.1 -t 10
  35. Connecting to host 192.0.2.1, port 5201
  36. [ 4] local 192.0.2.2 port 56832 connected to 192.0.2.1 port 5201
  37. [ ID] Interval Transfer Bandwidth Retr Cwnd
  38. [ 4] 0.00-1.00 sec 11.9 MBytes 99.8 Mbits/sec 0 129 KBytes
  39. [ 4] 1.00-2.00 sec 11.3 MBytes 94.9 Mbits/sec 0 156 KBytes
  40. [ 4] 2.00-3.00 sec 11.2 MBytes 93.8 Mbits/sec 0 156 KBytes
  41. [ 4] 3.00-4.00 sec 11.1 MBytes 93.3 Mbits/sec 0 156 KBytes
  42. [ 4] 4.00-5.00 sec 11.1 MBytes 92.8 Mbits/sec 0 163 KBytes
  43. [ 4] 5.00-6.00 sec 11.1 MBytes 93.3 Mbits/sec 0 163 KBytes
  44. [ 4] 6.00-7.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
  45. [ 4] 7.00-8.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
  46. [ 4] 8.00-9.00 sec 11.1 MBytes 92.8 Mbits/sec 0 163 KBytes
  47. [ 4] 9.00-10.00 sec 11.2 MBytes 93.8 Mbits/sec 0 163 KBytes
  48. - - - - - - - - - - - - - - - - - - - - - - - - -
  49. [ ID] Interval Transfer Bandwidth Retr
  50. [ 4] 0.00-10.00 sec 112 MBytes 94.2 Mbits/sec 0 sender
  51. [ 4] 0.00-10.00 sec 111 MBytes 93.4 Mbits/sec receiver
  52. iperf Done.
  53. ~~~
  54. ## Utilisation avancée
  55. ### Firewall
  56. Afin de pouvoir utiliser iperf, il faut s'assurer que les ports entre le client et le serveur sont bien ouverts.
  57. Par défaut il faut donc autoriser les flux TCP entre le port client (1024 et 65535) et le port serveur (5201).
  58. ### UDP
  59. Par défaut en mode UDP, une bande passante de **1Mb/s** sera utilisée.
  60. Il faut préciser la bande passante souhaitée pour le test avec l'option `-b`, par exemple pour 10Mb/s : `-b 10M`.
  61. #### iperf (version 2)
  62. Il faut lancer explicitement le serveur en mode UDP :
  63. ~~~
  64. $ iperf -s -u
  65. ------------------------------------------------------------
  66. Server listening on UDP port 5001
  67. Receiving 1470 byte datagrams
  68. UDP buffer size: 208 KByte (default)
  69. ------------------------------------------------------------
  70. ~~~
  71. On peut alors lancer le client en mode UDP :
  72. ~~~
  73. $ iperf -c 192.0.2.1 -u -b 10M
  74. ------------------------------------------------------------
  75. Client connecting to 192.0.2.1, UDP port 5001
  76. Sending 1470 byte datagrams, IPG target: 1176.00 us (kalman adjust)
  77. UDP buffer size: 208 KByte (default)
  78. ------------------------------------------------------------
  79. [ 3] local 192.0.2.2 port 50090 connected with 192.0.2.1 port 5001
  80. [ ID] Interval Transfer Bandwidth
  81. [ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec
  82. [ 3] Sent 8505 datagrams
  83. [ 3] Server Report:
  84. [ 3] 0.0-10.0 sec 11.9 MBytes 10.0 Mbits/sec 0.051 ms 0/ 8505 (0%)
  85. ~~~
  86. #### iperf3
  87. Avec iperf3, on ne lance pas le serveur en mode UDP, c'est le client qui va gérer la bascule sur le protocole UDP.
  88. Ce comportement s'explique notamment pour des raisons de sécurité, pour éviter de pouvoir envoyer trop facilement un flux UDP vers n'importe quelle IP.
  89. On lance donc le serveur de façon standard :
  90. ~~~
  91. $ iperf3 -s
  92. -----------------------------------------------------------
  93. Server listening on 5201
  94. -----------------------------------------------------------
  95. ~~~
  96. Et on précise le mode UDP au niveau client :
  97. ~~~
  98. $ iperf3 -c 192.0.2.1 -u -b 10M
  99. Connecting to host 192.0.2.1, port 5201
  100. [ 4] local 192.0.2.2 port 34378 connected to 192.0.2.1 port 5201
  101. [ ID] Interval Transfer Bandwidth Total Datagrams
  102. [ 4] 0.00-1.00 sec 1.09 MBytes 9.17 Mbits/sec 140
  103. [ 4] 1.00-2.00 sec 1.19 MBytes 9.96 Mbits/sec 152
  104. [...]
  105. - - - - - - - - - - - - - - - - - - - - - - - - -
  106. [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
  107. [ 4] 0.00-10.00 sec 11.8 MBytes 9.92 Mbits/sec 0.539 ms 0/1512 (0%)
  108. [ 4] Sent 1512 datagrams
  109. iperf Done.
  110. ~~~
  111. ### Options
  112. Options générales intéressantes :
  113. * `-p N` : utiliser un port spécifique
  114. * `-i N` : afficher un rapport intermédiaire toutes les N secondes
  115. * `-J` : sortie au format JSON (iperf3 uniquement)
  116. Options intéressantes pour le serveur :
  117. * `-D` : lancer en mode daemon
  118. * `-1` : traiter un seul client et quitter (iperf3 uniquement)
  119. Options intéressantes pour le client :
  120. * `-t N` : transmission pendant N secondes (au lieu de 10 secondes par défaut)
  121. * `-P N` : lancer N clients en parallèle
  122. * `-d` : lancer une transmission bidirectionnelle simultanément (iperf v2 uniquement)
  123. * `-r` : lancer une transmission bidirectionnelle séparément (iperf v2 uniquement)
  124. * `-R` : lancer une transmission dans le sens inverse (le client reçoit, iperf3 uniquement)
  125. ## Serveurs iperf publics
  126. Maintenir un serveur iperf public est complexe, la plupart des serveurs de la liste <https://iperf.fr/iperf-servers.php> sont injoignables en général. Voici les serveurs les plus fiables de la liste :
  127. ~~~
  128. $ iperf3 -c ping.online.net
  129. $ iperf3 -c iperf.eenet.ee
  130. ~~~