La Fibre

Télécom => Réseau => reseau TCP/IP / Fonctionnement des réseaux => Discussion démarrée par: vivien le 11 février 2020 à 12:39:36

Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 12:39:36
Tuto: Analyser les problèmes de débit avec Wireshark
Exemple avec les problématiques de faible débit montant rencontrés par certains clients sur la Freebox Delta

(https://lafibre.info/images/wireshark/logo_wireshark.png) (https://lafibre.info/tcpip/realiser-une-capture-wireshark-pas-a-pas/)

Le résumé en un graphique :
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1.png)

L'explication complète :

Voici les débits montant de Breizh29 : en moyenne 100 Mb/s, ce qui est très éloigné des débits théorique de sa box.

iperf3 -c bouygues.testdebit.info -t 20 -i 1
Connecting to host bouygues.testdebit.info, port 5201
[  7] local 2a01:e0a:1fc:xxxxxxx port 52671 connected to 2001:860:deff:1000::2 port 5201
[ ID] Interval           Transfer     Bitrate
[  7]   0.00-1.00   sec  19.5 MBytes   163 Mbits/sec                 
[  7]   1.00-2.00   sec  15.6 MBytes   131 Mbits/sec                 
[  7]   2.00-3.00   sec  15.9 MBytes   134 Mbits/sec                 
[  7]   3.00-4.00   sec  11.3 MBytes  95.3 Mbits/sec                 
[  7]   4.00-5.00   sec  18.4 MBytes   154 Mbits/sec                 
[  7]   5.00-6.00   sec  16.3 MBytes   137 Mbits/sec                 
[  7]   6.00-7.00   sec  17.2 MBytes   144 Mbits/sec                 
[  7]   7.00-8.00   sec  11.9 MBytes   100 Mbits/sec                 
[  7]   8.00-9.00   sec  11.6 MBytes  97.4 Mbits/sec                 
[  7]   9.00-10.00  sec  19.9 MBytes   167 Mbits/sec                 
[  7]  10.00-11.00  sec  12.4 MBytes   104 Mbits/sec                 
[  7]  11.00-12.00  sec  2.66 MBytes  22.3 Mbits/sec                 
[  7]  12.00-13.00  sec  8.41 MBytes  70.7 Mbits/sec                 
[  7]  13.00-14.00  sec  13.1 MBytes   110 Mbits/sec                 
[  7]  14.00-15.00  sec  2.62 MBytes  22.0 Mbits/sec                 
[  7]  15.00-16.00  sec  9.66 MBytes  81.1 Mbits/sec                 
[  7]  16.00-17.00  sec  10.2 MBytes  85.8 Mbits/sec                 
[  7]  17.00-18.00  sec  11.3 MBytes  94.6 Mbits/sec                 
[  7]  18.00-19.00  sec  3.51 MBytes  29.4 Mbits/sec                 
[  7]  19.00-20.00  sec  11.0 MBytes  92.1 Mbits/sec                 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  7]   0.00-20.00  sec   242 MBytes   102 Mbits/sec                  sender
[  7]   0.00-20.01  sec   238 MBytes  99.9 Mbits/sec                  receiver

iperf Done.

Dans de nombreux cas quand le débit est limité, c'est une problématique qui est du coté client et non du coté FAI : Utilisation du WiFi, d'un PC pas assez puissant ou présence de logiciels résidents (principalement sous Windows 10) qui limitent le débit.

La capture ci-dessous a été réalisée par Breizh29, client Freebox Delta à Ergué-Gabéric, une commune du département du Finistère (29), dans la région Bretagne sur un serveur 10Gb/s hébergé par Bouygues Telecom à Nanterre (92). L’interconnexion entre Free et Bouygues Telecom se fait sur Paris TH2 en IPv4 comme en IPv6 dans les deux sens.

Breizh29 utilise iPerf3 version 3.7 pour faire ses tests de débit. Coté serveur, c'est un Ubuntu server 18.04 LTS avec Kernel 5.3 avec taille de buffer max de 16 Mo avec lui aussi iPerf3 version 3.7

Client : Mac mini (i7 3,2 GHz, 32 Go mémoire, 1 To SSD, macOS 10.15.2 - équipé d’un chip Aquantia AQC107) avc une optimisation réalisée sur le fichier /etc/sysctl.conf :

kern.ipc.maxsockbuf=33554432
kern.ipc.somaxconn=2048

net.inet.tcp.sendspace=4194304
net.inet.tcp.recvspace=4194304
net.inet.tcp.win_scale_factor=8
net.inet.tcp.autorcvbufmax=33554432
net.inet.tcp.autosndbufmax=33554432

net.inet.tcp.slowstart_flightsize=20
net.inet.tcp.local_slowstart_flightsize=9

net.inet.tcp.mssdflt=1432
net.inet.tcp.v6mssdflt=1452

Dans tous les tests ci-dessous le protocole de congestion TCP est Cubic aussi bien sur le mac que sur le serveur Linux. On fera une parenthèse sur le protocole de congestion TCP BBR à la fin de ce sujet.

Quand on parle de problème de débit, il est important de savoir si c'est lié à une congestion du réseau, congestion qui est présente le soir sur certains réseaux.

Pour répondre à cette question, Breizh29 à automatisé un test avec iPerf3, ce qui permet d'avoir un graphique des débits sur les 7 derniers jours :

Commande utilisée pour les tests montant multi-thread :
iperf3 -c bouygues.testdebit.info -t 4 -O 4 -p $numPort -4 -P 16 -f g
iperf3 -c bouygues.testdebit.info -t 4 -O 4 -p $numPort -6 -P 16 -f g


Commande utilisée pour les tests montant mono-thread :
iperf3 -c bouygues.testdebit.info -t 4 -O 4 -p $numPort -4 -P 1 -f g
iperf3 -c bouygues.testdebit.info -t 4 -O 4 -p $numPort -6 -P 1 -f g


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_ul.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_ul.png)

On note que le débit mono-thread est régulièrement à moins de 100 Mb/s, même en pleine nuit. La limitation de débit n'est donc pas liée à une congestion.

Le débit multi-thread est lui stable mais reste éloigné du débit théorique de la ligne.

Le débit montant sur la Freebox Delta doit être proche de 566 Mb/s en mono-thread comme en multi-thread.

Exemple de résultat obtenu par darkmoon en mono-connexion, un client sur Saint Genis Laval (69), avec une latence trés proche de celle de Breizh29.

iperf3 -c bouygues.testdebit.info -t 20 -i 1
Connecting to host bouygues.testdebit.info, port 5201
[  5] local 2a01:e0a:1d2:d8f0::xyzb port 36766 connected to 2001:860:deff:1000::2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  66.6 MBytes   558 Mbits/sec  5589   1.96 MBytes
[  5]   1.00-2.00   sec  67.5 MBytes   566 Mbits/sec  9663   2.03 MBytes
[  5]   2.00-3.00   sec  63.8 MBytes   535 Mbits/sec  8495   1.57 MBytes
[  5]   3.00-4.00   sec  67.5 MBytes   566 Mbits/sec  4149   1.61 MBytes
[  5]   4.00-5.00   sec  66.2 MBytes   555 Mbits/sec  8657   1.66 MBytes
[  5]   5.00-6.00   sec  71.2 MBytes   598 Mbits/sec  3841   1.52 MBytes
[  5]   6.00-7.00   sec  67.5 MBytes   566 Mbits/sec  5671   1.45 MBytes
[  5]   7.00-8.00   sec  67.5 MBytes   566 Mbits/sec  2902   1001 KBytes
[  5]   8.00-9.00   sec  67.5 MBytes   566 Mbits/sec  8688   1.54 MBytes
[  5]   9.00-10.00  sec  67.5 MBytes   566 Mbits/sec  4491   1.14 MBytes
[  5]  10.00-11.00  sec  66.2 MBytes   556 Mbits/sec  2471   2.20 MBytes
[  5]  11.00-12.00  sec  70.0 MBytes   587 Mbits/sec  4959    964 KBytes
[  5]  12.00-13.00  sec  66.2 MBytes   556 Mbits/sec  3696   2.26 MBytes
[  5]  13.00-14.00  sec  70.0 MBytes   587 Mbits/sec  3885   1.88 MBytes
[  5]  14.00-15.01  sec  67.5 MBytes   561 Mbits/sec  9621   1.59 MBytes
[  5]  15.01-16.00  sec  67.5 MBytes   572 Mbits/sec  10308   1.81 MBytes
[  5]  16.00-17.00  sec  67.5 MBytes   566 Mbits/sec  6166   1.41 MBytes
[  5]  17.00-18.00  sec  67.5 MBytes   566 Mbits/sec  2273   1.61 MBytes
[  5]  18.00-19.00  sec  67.5 MBytes   566 Mbits/sec  7242   1.05 MBytes
[  5]  19.00-20.00  sec  67.5 MBytes   566 Mbits/sec  3519   1.56 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-20.00  sec  1.32 GBytes   566 Mbits/sec  116286             sender
[  5]   0.00-20.01  sec  1.32 GBytes   566 Mbits/sec                  receiver

iperf Done.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 12:40:24
Faut-il mesurer le débit en multi-thread ou en mono-thread ?

Le débit multi-thread permet d'augmenter les débits en faisant abstraction des problèmes sur un réseau, comme par exemple des pertes de paquets.
Si le multi-thread permet d'afficher de meilleurs débits, il est par contre moins représentatif d'un usage réel qui, est du mono-thread pour la quasi-totalité des usages sur Internet.
Une mesure de débit multi-thread, si elle permet de voir la taille du tuyau, est aussi une façon d'afficher un débit plus élevé, mais non représentatif de l’expérience des clients.
Il est donc pertinent de se pencher sur la problématique rencontrée en mono-thread, qui impacte directement le ressenti des utilisateurs.

La limitation pourrait-elle être liée au Mac de Mac mini de Breizh29 ? (i7 3,2 GHz, 32 Go mémoire, 1 To SSD, macOS 10.15.2)

iPerf3 à l'avantage de demander très peu de puissance processeur, contrairement à un test de débit réalisé dans un navigateur qui va demande un monstre de puissance pour faire du 10 Gb/s.

La réponse est non, car voici ses tests de débit en descendant : On observe là une saturation le soir avec une forte chute de débit en mono-thread et une chute plus faible en multi-thread.

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_dl.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_dl.png)

Le serveur pourrait-il être l'élément limitant ?

Les tests descendant et montant sont réalisé sur le même serveur.

Il y a peu de chance que les limitations soient liée au serveur : celui ci à un trafic "in" ("in" correspond au trafic débit montant d'un client avec le serveur) qui est très faible.
Le serveur est par contre bien plus chargé sur "out" qui correspond aux tests de téléchargements qui sont eux bon.

Trafic sur l'interface réseau du serveur utilisé :

(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_serveur.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 13:07:36
Maintenant que ces éléments de contextes sont posés, on peut passer à la capture Wireshark.

Il y a un tutoriel qui explique comment faire :

Réaliser une capture Wireshark pas à pas
(https://lafibre.info/images/wireshark/logo_wireshark.png) (https://lafibre.info/tcpip/realiser-une-capture-wireshark-pas-a-pas/)

Il faut bien vérifier la barre d'état de Wireshark (la ligne tout en bas) : après avoir arrêté la capture, il doit y avoir marqué Perdus: 0 (0,0%). Si vous avez autre chose que 0, cela signifie que votre machine a eu un peu de mal a écrire le flux et que des paquets ont été perdus. La capture n'est pas parfaite. Il est préférable de la refaire en veillant à fermer les applications non nécessaire, car les paquets perdus peuvent compliquer fortement l'analyse, Wireshark montrant des paquets perdus qui sont en fait des paquets non capturés.


Comment faire un graphique de la connexion TCP avec Wireshark ?

Il faut sélectionner un paquet de donnée du transfert de donnée. (Si vous sélectionnez un acquittement TCP, la courbe se fera dans le sens où aucune donnée n'est transmise, il sera donc vide)

Pour être sur d'être sur la bonne connexion TCP (il peut y avoir d'autres connexions avant et après) l'astuce est de se placer au milieu de la capture et de sélectionner un paquet d'une grande taille (la taille apparaît dans la colonne Length) puis aller dans le menu Statistiques => Graphique des flux TCP => Séquence de temps (tcptrace)

Un graphique comme celui-ci apparaît :
(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_wireshark.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_wireshark.png)

En abscisse on a le temps depuis le début de la connexion TCP, exprimé en seconde. Ici le test dure 20 secondes.
En ordonnée on a les paquets transmis, exprimés en nombre d'octets transmis depuis le début de la connexion TCP. Chaque intervalle affiché correspond à 100 Mo transféré.

Plus la pente de la courbe est raide, plus le débit est élevé.
Plus la courbe est plate, plus le débit est faible.

On voit donc que le débit monte et à chaque incident, que j'ai entouré en rouge, le débit repars d'un débit faible avant d'augmenter lentement.
On va zoomer sur les incidents.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 13:23:31
Détail du premier incident, qui arrive moins de 200ms après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1_graphe.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1_graphe.png)

On est encore dans le début de la connexion, là où le débit progresse forcement. Cette perte de paquets que nous allons observer à un impact sur le débit accentué par les suivantes.

3 éléments sont dessinés :
- une courbe en bas en gris qui indique les octet acquittés par le serveur. La capture ayant été prise sur le client qui émet les paquets, les acquittements ne sont pas reçus immédiatement, il faut attendre 12 à 13 millisecondes, qui est la temps qui sépare entre l'envoi d'un paquet et la réception de la réponse. C'est le "ping" du client vers le serveur.

- des petits traits bleus, qui correspondent aux paquets émis.

- une courbe verte en haut qui indique la limite du nombre de paquets non acquittés qu'il est permis d'envoyer. Cette courbe augmente à chaque fois que les acquittements sont reçus.

La différence verticale entre la courbe grise et celle verte est la quantité de donnée non acquitté qu'il est possible d'envoyer. Cette quantité de donnée est régulièrement augmentée, quand tout se passe bien sur une connexion. Dans notre cas, on voit que l'émission des paquets n'est pas limité par la limite de la Rwin : TCP arrête d'émettre des paquets avant que cette limite soit atteinte, car l'algorithme d’évitement de congestion utilisé, Cubic, le demande.

La différence horizontale entre les paquets bleu et la courbe grise correspond à la latence effective, dans notre cas environ 13ms.


L'incident de perte de paquets :

J'ai surligné en rose l'endroit où il y a eu des des pertes de paquets : On note qu'une même séquence de donnée est envoyé une première fois peu après l'intervalle de temps 0,135sec et que ces mêmes paquets sont émis une seconde fois, à un débit plus faible, peu après l'intervalle de temps 0,165sec

Les traits rouge sont générés par Wireshark et correspondent à des acquittements qui signalement des donnes manquantes. On note que ces acquittements interviennent un temps égal à deux fois la latence après l'émission les paquets.

- Peu de temps après l'intervalle de temps 0,14sec :

Le Mac de Breizh29 envoi un gros paquet de données à un débit très élevé (près de 10 Gb/s). En effet, il un PC envoie au débit maximum de son interface soit ici à 10 Gb/s. Les paquets seront stockés dans les buffers au niveau de l'endroit où le débit est réduit à 600 Mb/s. Ces buffers doivent être présents à chaque endroit où le débit est limité, afin de ne pas être obligé de supprimer les paquets. Il ne faut pas tomber dans l’excès inverse avec des buffers trop grands (risque de buffer bloat).

Ici selon toute vraisemblance, la quantité de donnée envoyée a été trop importante pour la taille des buffers de l'OLT ou de la Freebox.

Les buffers qui posent problème sont toujours ceux à l'endroit où le débit est limité à 600 Mb/s. Cette limitation est probablement réalisée sur l'OLT, située dans le NRO, toutefois, il est possible que les buffers de la Freebox soient eux aussi sollicités en débit montant : Le 10G-EPON (IEEE 802.3av) mis en place par Free limite le débit de l'arbre à 1244 Mb/s (débit partagé par tous les clients). Il est donc possible que le buffers trop petit soient au niveau de la Freebox, juste avant que le débit parte sur l'arbre avec une limitation physique à 1244 Mb/s, soit au niveau de l'OLT qui doit limiter le débit montant aux 600 Mb/s contractuel.

Les paquets qui arrivent alors que le buffer est plein sont supprimés. L'ensemble des derniers paquets ont donc été supprimés et c'est ce que l'on observe sur la capture Wireshark.

- Peu de temps après l'intervalle de temps 0,15sec :

La courbe grise en bas augmente car le Mac à reçu les acquittements des paquets enfin de presque tous les paquets, vu que le serveur n'a pas reçu les paquets que j'ai surlignés en rose, probablement détruits par l'OLT ou la Freebox, au niveau de l’endroit où le débit est limité à 600 Mb/s.
Immédiatement le mac se met à envoyer la suite des données.

Ni le serveur ni le client ne s’inquiète que toutes les données ne soient pas acquittés : un petit retard est possible.

(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1.png)

- Peu de temps après l'intervalle de temps 0,152sec :

Là on reçois les acquittements envoyés par le serveur suites aux paquets envoyés peu après 0,15sec et ces acquittements, mis en rouge par Wireshark indiquent qu'il manque une plage de donnée.

Le mac va immédiatement renvoyer les paquets qu'il manque, mais à un débit plus faible.

- Peu de temps aprés l'intervalle de temps 0,164sec :

On reçois les acquittement pour les paquets surlignés en rose : la deuxième émission à bien fonctionné.

Par contre le débit va être réduit pour les prochains paquets (il va limiter le nombre de paquets envoyés d'un seul bloc pour éviter de faire exploser les buffers de l'OLT / Freebox, au niveau de l'endroit où le débit est réduit à 600 Mb/s ou 1244 Mb/s)


Ping du client vers une autres des IPv6 utilisé par le serveur :

Start: 2020-01-05T18:53:48+0100
HOST: Mac-mini-BZH.local                   Loss%   Snt   Last   Avg  Best  Wrst StDev
  1. AS12322  monIP          0.0%   100    0.3   0.4   0.2   1.0   0.1
  2. AS12322  2a01:e03:12:f836:7e2c::ffff   0.0%   100    2.7   2.4   1.6  12.2   1.2
  3. AS12322  2a01:e03:12:1700::ffff       77.0%   100    1.8   2.9   1.7  17.1   3.1
  4. AS12322  2a01:e03:11::1                0.0%   100    3.1   4.4   3.0  21.0   2.5
  5. AS12322  2a01:e03:f::1                 0.0%   100    4.4   4.7   3.9  12.4   1.2
  6. AS12322  2a01:e03:e::5                 0.0%   100    5.5   6.1   5.2  12.6   1.3
  7. AS12322  2a01:e03:e::2                18.0%   100    9.6   8.5   6.2  10.4   1.2
  8. AS12322  2a01:e03:1::22               40.0%   100   12.4  12.3  11.7  13.0   0.3
  9. AS12322  2a01:e00:3f::5                9.0%   100   12.6  12.4  11.8  18.0   0.7
 10. AS5410   2001:860:0:81::1              0.0%   100   11.9  12.1  11.6  12.8   0.3
 11. AS5410   2001:860:bbee:b4::2           0.0%   100   12.2  12.8  12.2  13.4   0.3
 12. AS5410   2001:860:bbe0:128::2          0.0%   100   13.3  13.2  12.7  13.7   0.3
 13. AS5410   2001:860:de01:1100::2         0.0%   100   12.4  12.5  12.0  13.2   0.3
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:14:07
Détail du premier incident, qui arrive moins de 200ms après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1_paquets.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1_paquets.png)

Il est intéressant de voir les paquets pour comprendre le fonctionnement et pouvoir analyser des cas complexes.

Sous la colonne Length on voit la taille des paquets :
- Tous les paquets de plus de 1514 octets sont des paquets de donnée, dans notre cas émis par le mac. L'élément le plus important est le numéro de séquence (Seq=xxxxx), le numéro qui identifie le paquet envoyé. Je l'ai surligné à la main en vert.
- Tous les paquets de moins de 114 octets sont des paquets d’acquittement TCP, dans notre cas, émis par le serveur. L'élément le plus important est le numéro d’acquittement (Ack=xxxxxx) qui acquitte les données reçues. Je l'ai surligné à la main en rose.

Une connexion TCP permettant de transférer des données dans les deux sens, chaque paquet de donnée est aussi un paquet d’acquittement pour un éventuel flux descendant. Ici chaque paquet de donnée acquitte Ack=1 car il n'y a aucune aucune donnée dans l'autre sens. Chaque acquittement a le numéro Seq=1 car il ne transporte aucune donnée.


Analyse : La connexion se déroule parfaitement bien jusqu'au paquet surligné en bleu.

Le paquet d’acquittement en bleu et les suivants sont spécifiques : ils ont à la fin un SLE=xxxxxx SRE=xxxxxxx, cela correspond à SACK, un acquittement sélectif (SACK = selective acknowledgement), qui autorise le destinataire TCP à acquitter des blocs de données reçus dans le désordre. SACK a été définie en 1996 dans la RFC 2018 (https://tools.ietf.org/html/rfc2018), permet au récepteur d'accuser réception d'un maximum de 3 blocs discontinus de paquets reçus correctement, en plus du numéro de séquence suivant immédiatement le dernier numéro de séquence du dernier octet contigu reçu successivement.

A droite du champ info, Wireshark indique le bord gauche du bloc (le premier numéro de séquence du bloc) et le bord droit du bloc (le numéro de séquence suivant immédiatement le dernier numéro de séquence du bloc ), un bloc étant une plage contiguë que le récepteur a correctement reçue.

Concrètement le paquet bleu acquitte jusqu'au numéro de séquence 504598, puis du numéro de séquence 506010 au numéro de séquence 547438.

Cela indique à l'émetteur que les paquets du numéro de séquence 504598 au numéro de séquence 506009 n'ont pas été reçus.
L’émetteur va analyser, pour soit laisser du temps si il pense qu'ils sont peut être dans le désordre (il peut arriver dans des cas spécifique que les paquets soient dans le désordre, ce qui va fortement limiter le débit) soit les ré-émettre.

Ici dans notre cas, le temps entre l'émission des paquets et la réception de acquittement indiquant qu'il manque des paquets est important, TCP va donc faire immédiatement une ré-émission des paquets en question. Les paquets ré-émis sont mis en rouge par Wireshark, pour indiquer qu'ils sont dans le désordre.

Seuls les paquets perdus sont ré-émis. A noter que avant l'invention de SACK, tous les paquets depuis le paquet perdu devaient être ré-émis, y compris les paquets reçus, faute de solution pour indique à l'émetteur quel paquets sont perdus et quels paquets ont été reçus.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:18:52
Détail du second incident, qui arrive 1,3 seconde après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte2.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte2.png)

TCP ayant réduit son débit après la perte de paquet, il tente lentement d'augmenter à nouveau le débit au fur et à mesure que la connexion avance.

A 1,3 seconde, on va de nouveau exploser les buffers de l'OLT / Freebox, mais l'augmentation de débit ayant été plus progressive qu'au début de la connexion, seuls quelques paquets sont supprimés.

Pour une raison que j'ignore, TCP va fortement réduire le débit, bien plus que nécessaire, on voit qu’après cette perte de paquet, le débit est presque nul et va ré-augmenter progressivement.


Les buffers qui posent problème sont toujours ceux à l'endroit où le débit est limité à 600 Mb/s. Cette limitation est probablement réalisée sur l'OLT, située dans le NRO, toutefois, il est possible que les buffers de la Freebox soient eux aussi sollicités en débit montant: Le 10G-EPON (IEEE 802.3av) mis en place par Free limite le débit de l'arbre à 1244 Mb/s (débit partagé par tous les clients). Il est donc possible que le buffers trop petit soient au niveau de la Freebox, juste avant que le débit parte sur l'arbre avec une limitation physique à 1244 Mb/s, soit au niveau de l'OLT qui doit limiter le débit montant aux 600 Mb/s contractuel. Dans tous les cas; il y a un endroit ou les buffers sont trop petits.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:20:55
Détail du troisième incident, qui arrive 1,84 seconde après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte3.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte3.png)

Le débit ayant peu à peu augmenté (TCP est persévérant), on va de nouveau avoir un dépassement de la taille des buffers de l'OLT ou de la Freebox à T=1,84 seconde.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:33:56
Détail du quatrième incident, qui arrive 2,4 seconde après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte4_graphe.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte4_graphe.png)

TCP tente de s'adapter pour ne pas faire éclater les buffers de l'OLT ou de la Freebox, mais en augmentant peu à peu le débit, il va perdre des paquets pendant que le buffer se vide et donc perdre plusieurs paquets non consécutifs.

Détail des paquets du quatrième incient :
(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte4_paquets.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte4_paquets.png)

Ici on voit que l'on a atteint le maximum de la taille des option TCP : 40 octets.
SACK prend de la place et on est limité à 3 blocs qui sont tous utilisés ici.
Si l'émetteur à reçu des paquets après ceux indiqués, il ne peut le mentionner dans SACK et ils seront retransmis.

J'ai surligné en vert les numéro de séquence des paquet de donnée.

L'analyse de la situation réalisée par Wireshark est à prendre avec des pincette. En effet ce qui est inscrit entre crochet [TCP Dup ACK] [TCP Fast Retransmission] [TCP OUt-Of-Order] [TCP Retransmission] sont liés a des algorithmes qui tentent d'aider celui qui regarde la capture, mais ces commentaires ne sont pas toujours appropriés.

Certains paquets sont notés par Wireshark comme étant [TCP OUt-Of-Order] [TCP Retransmission] [TCP Fast Retransmission] alors que ce sont des paquets renvoyés suite à la même perte de paquet.

[TCP Dup ACK] est censé montrer un acquittement déjà reçu (intéressant pour voir si le réseau duplique les paquets, et oui cela s'est déjà vu) mais une analyse du SACK montre bien que ce n'est pas un acquittement identique à un déjà reçu.

Bref, il y a simplement des acquittements qui montrent que plusieurs paquets sont perdus et l'émetteur qui renvoi les paquets.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:37:57
Détail du cinquième incident, qui arrive 8,8 seconde après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte5.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte5.png)

TCP à fait attention après un début de connexion chaotique a envoyer les paquets de façon modérée pour ne pas faire éclater les buffers de l'OLT / Freebox.

Toutefois TCP ne sait pas qu'il est le seul à utiliser la box, et donc il va de temps en temps faire monter le débit pour voir si la limitation du départ est toujours présente. Si il y avait d'autres suage en parallèle, la situation évoluer, il faut donc de temps en temps tester les limites de la connexion et c'est ce qui est fait là.

On va de nouveau avoir un dépassement de la taille des buffers de l'OLT / Freebox à T=8,8 seconde.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:40:15
Détail du sixième incident, qui arrive 15,8 seconde après le début de la connexion : (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte6.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte6.png)

7 seconde après le précédent problème, on est dans la même situation : TCP test les limites de la connexion et on a de nouveau un dépassement de la taille des buffers de l'OLT / Freebox à T=15,8 seconde.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 14:43:25
Conclusion de cette capture :

Cela montre de façon quasiment certaine que l'endroit des buffers sont trop petits pour permettre d'avoir de bon débits sur une connexion TCP. Il faudrait, si c'est possible logiciellement, augmenter cette taille des buffers.

Les buffers qui posent problème sont toujours ceux à l'endroit où le débit est limité à 600 Mb/s. Cette limitation est probablement réalisée sur l'OLT, située dans le NRO, toutefois, il est possible que les buffers de la Freebox soient eaux aussi sollicités en débit montant : Le 10G-EPON (IEEE 802.3av) mis en place par Free limite le débit de l'arbre à 1244 Mb/s (débit partagé par tous les clients). Il est donc possible que le buffers trop petit soient au niveau de la Freebox, juste avant que le débit parte sur l'arbre avec une limitation physique à 1244 Mb/s, soit au niveau de l'OLT qui doit limiter le débit montant aux 600 Mb/s contractuel.


Comment savoir si c'est plutôt coté OLT ou coté Freebox que le débit est trop faible ?


Le test serait de faire un comparatif avec une connexion 1 Gb/s (connecter le PC sur port 1 Gb/s de la Freebox est suffisant).

Si le débit montant est nettement meilleur avec une connexion 1 Gb/s, la limitation est du coté Freebox.

Si le débit n'est pas meilleur, il est plus difficile de tirer une conclusion, mais le buffer trop petit est probablement coté OLT, là où est fait la limitation du débit montant. Dans le cas (possible également mais peu probable) où la limitation de débit à 600 Mb/s est réalisé coté Freebox, alors ce sera le buffer coté Freebox, au niveau de la limitation à 600 Mb/s)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 15:15:29
Et cela donne quoi avec l'algorithme d'évitement de congestion BBR ?

Cryptage, qui est confronté à la même problémaique que Breizh29 a réalisé des tests avec l''algorithme d'évitement de congestion Cubic (utilisé par défault) puis en fin de message avec le nouveau BBR crée par Google :
Ci-dessous les tests en IPv6 puis en IPv4, en étant connecté directement sur la Freebox.
Les débits sont toujours merdiques, comme depuis le début... (Free ne veut rien faire, "tout est normal").

IPv6 (1 flux) :
Connecting to host bouygues.testdebit.info, port 5201
[  4] local 2a01:e0a:2d... port 49773 connected to 2001:860:deff:1000::2 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  6.12 MBytes  51.0 Mbits/sec
[  4]   1.01-2.00   sec  8.88 MBytes  75.0 Mbits/sec
[  4]   2.00-3.00   sec  8.38 MBytes  70.3 Mbits/sec
[  4]   3.00-4.00   sec  5.00 MBytes  41.9 Mbits/sec
[  4]   4.00-5.00   sec  8.62 MBytes  72.4 Mbits/sec
[  4]   5.00-6.00   sec  13.1 MBytes   110 Mbits/sec
[  4]   6.00-7.01   sec  7.00 MBytes  58.4 Mbits/sec
[  4]   7.01-8.01   sec  9.50 MBytes  80.0 Mbits/sec
[  4]   8.01-9.00   sec  8.75 MBytes  73.8 Mbits/sec
[  4]   9.00-10.00  sec  13.0 MBytes   109 Mbits/sec
[  4]  10.00-11.01  sec  6.75 MBytes  55.9 Mbits/sec
[  4]  11.01-12.01  sec  8.38 MBytes  70.7 Mbits/sec
[  4]  12.01-13.01  sec  11.6 MBytes  96.8 Mbits/sec
[  4]  13.01-14.00  sec  7.00 MBytes  59.6 Mbits/sec
[  4]  14.00-15.01  sec  11.8 MBytes  97.8 Mbits/sec
[  4]  15.01-16.01  sec  11.4 MBytes  94.8 Mbits/sec
[  4]  16.01-17.00  sec  6.88 MBytes  58.3 Mbits/sec
[  4]  17.00-18.00  sec  11.5 MBytes  96.7 Mbits/sec
[  4]  18.00-19.00  sec  7.62 MBytes  64.0 Mbits/sec
[  4]  19.00-20.00  sec  10.1 MBytes  84.9 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-20.00  sec   181 MBytes  76.1 Mbits/sec                  sender
[  4]   0.00-20.00  sec   181 MBytes  76.1 Mbits/sec                  receiver

IPv6 2 flux :
[SUM]   0.00-20.01  sec   281 MBytes   118 Mbits/sec                  sender
[SUM]   0.00-20.01  sec   281 MBytes   118 Mbits/sec                  receiver

IPv6 4 flux :
[SUM]   0.00-20.00  sec   470 MBytes   197 Mbits/sec                  sender
[SUM]   0.00-20.00  sec   469 MBytes   197 Mbits/sec                  receiver

IPv6 8 flux :
[SUM]   0.00-20.01  sec   651 MBytes   273 Mbits/sec                  sender
[SUM]   0.00-20.01  sec   650 MBytes   273 Mbits/sec                  receiver

IPv6 16 flux :
[SUM]   0.00-20.00  sec   798 MBytes   335 Mbits/sec                  sender
[SUM]   0.00-20.00  sec   795 MBytes   334 Mbits/sec                  receiver

IPv4 (1 flux) :
Connecting to host bouygues.testdebit.info, port 5201
[  4] local 192.168.200.22 port 49876 connected to 89.84.1.222 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  3.50 MBytes  29.1 Mbits/sec
[  4]   1.01-2.00   sec  8.88 MBytes  75.1 Mbits/sec
[  4]   2.00-3.00   sec  12.8 MBytes   107 Mbits/sec
[  4]   3.00-4.00   sec  7.00 MBytes  58.9 Mbits/sec
[  4]   4.00-5.01   sec  5.62 MBytes  46.7 Mbits/sec
[  4]   5.01-6.01   sec  9.50 MBytes  80.1 Mbits/sec
[  4]   6.01-7.01   sec  10.9 MBytes  91.5 Mbits/sec
[  4]   7.01-8.01   sec  10.4 MBytes  86.2 Mbits/sec
[  4]   8.01-9.00   sec  5.88 MBytes  50.0 Mbits/sec
[  4]   9.00-10.00  sec  9.00 MBytes  75.4 Mbits/sec
[  4]  10.00-11.01  sec  8.25 MBytes  68.8 Mbits/sec
[  4]  11.01-12.00  sec  10.8 MBytes  90.7 Mbits/sec
[  4]  12.00-13.01  sec  6.88 MBytes  57.1 Mbits/sec
[  4]  13.01-14.01  sec  7.50 MBytes  63.0 Mbits/sec
[  4]  14.01-15.01  sec  8.38 MBytes  70.4 Mbits/sec
[  4]  15.01-16.01  sec  8.12 MBytes  68.3 Mbits/sec
[  4]  16.01-17.00  sec  9.25 MBytes  77.8 Mbits/sec
[  4]  17.00-18.01  sec  5.50 MBytes  45.9 Mbits/sec
[  4]  18.01-19.01  sec  6.62 MBytes  55.6 Mbits/sec
[  4]  19.01-20.00  sec  10.2 MBytes  86.2 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-20.00  sec   165 MBytes  69.1 Mbits/sec                  sender
[  4]   0.00-20.00  sec   165 MBytes  69.1 Mbits/sec                  receiver


IPv4 2 flux :
[SUM]   0.00-20.01  sec   270 MBytes   113 Mbits/sec                  sender
[SUM]   0.00-20.01  sec   270 MBytes   113 Mbits/sec                  receiver

IPv4 4 flux :
[SUM]   0.00-20.01  sec   495 MBytes   207 Mbits/sec                  sender
[SUM]   0.00-20.01  sec   494 MBytes   207 Mbits/sec                  receiver

IPv4 8 flux :
[SUM]   0.00-20.00  sec   657 MBytes   276 Mbits/sec                  sender
[SUM]   0.00-20.00  sec   656 MBytes   275 Mbits/sec                  receiver


IPv4 16 flux :
[SUM]   0.00-20.00  sec   818 MBytes   343 Mbits/sec                  sender
[SUM]   0.00-20.00  sec   815 MBytes   342 Mbits/sec                  receiver



Edit : je viens de faire le test en bbr et c'est juste hallucinant...  :o
Par contre sous Windows que ce soit en cubic, ctcp, dctcp ou newreno ça ne change strictement rien... débit de merde en upload.  :-\

Je ne sais pas ce qu'on peut en conclure... Saturation chez Free ?


1 flux :
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-20.00  sec  1.17 GBytes   503 Mbits/sec  89401             sender
[  5]   0.00-20.04  sec  1.17 GBytes   501 Mbits/sec                  receiver

2 flux :
[SUM]   0.00-20.00  sec  1.26 GBytes   542 Mbits/sec  122231             sender
[SUM]   0.00-20.03  sec  1.26 GBytes   539 Mbits/sec                  receiver


Pour les abonnés Free qui ont le même genre de désagréments n'hésitez-pas à voter ici : https://dev.freebox.fr/bugs/task/29953
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 15:21:16
C'est quoi cet algorithme BBR qui permet de passer le débit montant sur une connexion de 69 Mb/s à 503 Mb/s ? (multiplication du débit par 7,3)

BBR, (Bottleneck Bandwidth and Round-trip propagation time) est un algorithme de contrôle de congestion TCP développé chez Google en 2016.

Alors que la plupart des algorithmes de contrôle de la congestion sont basés sur la perte (ils s'appuient sur la perte de paquets comme signal pour réduire le débit), BBR utilise la bande passante maximale et le temps d'aller-retour pour construire un modèle explicite du réseau. Chaque accusé de réception de paquets produit un échantillon de débit qui enregistre la quantité de données livrées sur l'intervalle de temps entre la transmission d'un paquet de données et l'accusé de réception de ce paquet. Alors que les débits augmentent, la latence associée au bufferbloat au lieu de la perte de paquets devient un marqueur plus fiable du débit maximal, ce qui fait que BBR fournit, en mono connexion, un débit plus élevé et une latence inférieure, face aux algorithmes basés sur la perte de paquet, comme le populaire CUBIC.

A noter :

o Peu représentatif de l’Internet, BBR est principalement utilisé par Google. Une fois implémenté dans YouTube, BBR a permis en moyenne un débit de réseau supérieur de 4% et jusqu'à 14% dans certains pays (source Google).

o BBR est efficace et rapide, mais son équité vis-à-vis des flux non BBR est contestée. Alors que la présentation de Google montre que BBR coexiste bien avec CUBIC, des chercheurs le trouvent injuste par rapport aux autres flux et non évolutif. Ils montrent que BBR ne fonctionne pas bien dans des environnements dynamiques tels que les réseaux cellulaires. Ils ont également montré que BBR avait un problème d'injustice. Par exemple, lorsqu'un flux CUBIC coexiste avec un flux BBR dans le réseau, le flux BBR peut dominer le flux CUBIC et en obtenir toute la bande passante.


Comparatif Cubic / BBR, réalisé en débit descendant sur la même Freebox Delta de Breizh29, utilisée pour ce tutoriel sur l'analyse avec Wireshark :


Les évolutions du tcp_congestion_control :
- 17 janvier 9h32 Illinois => Cubic
- 20 janvier 8h12 Cubic => BBR
- 22 janvier 10h03 BBR => Illinois (on n'avais pas de tests mono-thread en Illinois)

Actuellement :
$ cat /proc/sys/net/ipv4/tcp_congestion_control
illinois


(https://lafibre.info/images/free_debit/202001_comparatif_bubic_bbr_1.png)

(https://lafibre.info/images/free_debit/202001_comparatif_bubic_bbr_2.png)

(https://lafibre.info/images/free_debit/202001_comparatif_bubic_bbr_3.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 15:59:27
Comment passer à BBR ?

C'est l’émetteur qui doit changer de protocole de congestion.
Pour le débit descendant, il est donc impossible de le changer.

Ici on s'intéresse au débit montant, voici le tutoriel que pour Linux :

Je recommande de faire un fichier :
sudo nano /etc/sysctl.d/90-optimization.conf

Il suffit de mettre la ligne suivante :
net.ipv4.tcp_congestion_control=bbr

Redémarrez votre PC.

Pour vérifier l'algorithme de contrôle de congestion TCP utilisé :
cat /proc/sys/net/ipv4/tcp_congestion_control

Cela affiche "bbr" si la modification a bien été prise en compte ou "cubic" autrement.

Vous pouvez en profiter pour augmenter les buffer TCP afin d'être sur de ne pas limiter le débit quand la latence et le débit est élevé.

Insérer dans le même fichier les lignes suivantes :

# Increase TCP buffers
net.ipv4.tcp_rmem=4096 131072 16777216
net.ipv4.tcp_wmem=4096 87380 16777216
net.core.rmem_max=16777216
net.core.wmem_max=16777216
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 11 février 2020 à 17:17:46
Merci pour cette analyse, c'est très instructif.
T'as dû passer un moment pour la rédiger !

Ça met en évidence un problème de buffers pour lequel on a du mal à imaginer que Free n'en sache rien...

Personne n'aurait un contact chez Free pour faire remonter le problème ? L'analyse de Vivien doit pouvoir aider.

Mettre en place BBR ça aide mais ce n'est pas forcément une solution viable et surtout les Windowsiens restent sans contournement.

Une remarque pour ton tuto Vivien : pour appliquer la modification du sysctl.conf on peut s'éviter le reboot en passant la commande "sysctl -p".
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 17:30:18
Oui pour appliquer les modifications sans reboot : sudo sysctl -p permet de charger les fichiers /etc/sysctl.conf et /etc/sysctl.d/* et donc d'appliquer les paramètres.

Avant de contacter Free, il me semble important de poursuivre l'analyse pour voir où est le problème :

Comment savoir si c'est plutôt coté OLT ou coté Freebox que le débit est trop faible ?

Le test serait de faire un comparatif avec une connexion 1 Gb/s (connecter le PC sur port 1 Gb/s de la Freebox est suffisant).

Si le débit montant est nettement meilleur avec une connexion 1 Gb/s, la limitation est du coté Freebox.

Si le débit n'est pas meilleur, il est plus difficile de tirer une conclusion, mais le buffer trop petit est probablement coté OLT, là où est fait la limitation du débit montant. Dans le cas (possible également mais peu probable) où la limitation de débit à 600 Mb/s est réalisé coté Freebox, alors ce sera le buffer coté Freebox, au niveau de la limitation à 600 Mb/s)

Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: ubune le 11 février 2020 à 17:46:52
Oui pour appliquer les modifications sans reboot : sudo sysctl -p permet de charger les fichiers /etc/sysctl.conf et /etc/sysctl.d/* et donc d'appliquer les paramètres.

Avant de contacter Free, il me semble important de poursuivre l'analyse pour voir où est le problème :

Salut Vivien et merci pour l'analyse !

Pour le test en 1gbps, il y a un topic complet qui en parle, on a en effet un meilleur upload en 1gbps qu'en 10gbps => https://lafibre.info/1gb-free/debit-upload-x520-da1/
Un ticket a été ouvert par Roncamma => https://dev.freebox.fr/bugs/task/28327
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 11 février 2020 à 18:17:21
@Vivien : pour ma part je suis en Freebox Révolution donc forcément en 1 Gbps.

Du coup ça orienterait plutôt sur l'OLT car l'ONU n'est pas le même entre Delta et Révolution.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 11 février 2020 à 18:24:19
Si tu es avec la Freebox révolution ton PC ne dépasse pas 1 b/s en upload et donc le premier endroit où les buffer se remplissent, c'est là ou le débit est limité à 600 Mb/s.

La limitation de débit est généralement réalisée coté OLT (donc dans les équipements au NRO), mais c'est possible, bien que peu probable, que la limitation de débit à 600 Mb/s soit réalisé coté Freebox. Si on est dans ce dernier cas, alors ce sera le buffer coté Freebox, au niveau de la limitation à 600 Mb/s.

Les équipements étant différents pour les clients en point à point, il serait intéressant de savoir si ils sont également touché par ce problème de petits buffers.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Breizh29 le 11 février 2020 à 18:28:05
Impressionnant le tuto !
Merci Vivien.
Je vous fais le test en 1 gbps asap.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: hwti le 11 février 2020 à 22:08:07
@vivien : il y a quelques "SLACK" à la place de "SACK".

Sinon l'analyse est intéressante, en revanche elle n'explique pas pourquoi Fuli10 voit toujours des pertes sur un test en UDP avec débit limité : https://lafibre.info/1gb-free/serveur-iperf3-chez-free/msg725969/#msg725969.
Normalement, si le PC envoie plus lentement que la capacité de la ligne, il ne devrait pas y avoir de pertes au niveau des endroits où le débit est limité, même si les buffers sont petits (sauf si l'arbre est saturé bien sûr, ce qui ne semble pas être le cas).
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 12 février 2020 à 09:02:17
J'ai corrigé les SACK mal écrits.

J'ai rajouté un résumé en un graphique :

(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_perte1.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Thornhill le 12 février 2020 à 09:14:15
Normalement, si le PC envoie plus lentement que la capacité de la ligne, il ne devrait pas y avoir de pertes au niveau des endroits où le débit est limité, même si les buffers sont petits (sauf si l'arbre est saturé bien sûr, ce qui ne semble pas être le cas).

Même sans parler de saturation de l'arbre, en xPON le débit upload est en permanence (125 us) renégocié (algo DBA, timeslots, TDMA) entre ONT et OLT, en fonction des demandes de trafic de tous les acteurs de l'arbre.
Ceci peut conduire à des variations de capacités dans le temps pour une ligne donnée, qui peut provoquer, si c'est mal géré au niveau bufferisation, des pertes de paquets.
 
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 12 février 2020 à 12:58:44
Oui, Il faut prévoir des buffers au niveau de l'interface wan upload de la box, une saturation au niveau de l'arbre, entrainant pour l'utilisateur une limitaiton de débit plus forte que l'outil qui limite à 600 Mb/s coté OLT est possible.

Dans notre cas, on a vu que les débits étaient mauvais la nuit, or il y a de forte chance d'avoir l'arbre très peu chargé en upload la nuit.

Ce graphique a été un élément décisif pour fermer la porte à certaines possibilités, le graphe Wireshark n'est pas suffisant à lui seul. (cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_ul.png) (https://lafibre.info/images/wireshark/202002_free_delta_analyse_debit_breizh29_ul.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Higs le 13 février 2020 à 19:38:04
Bonsoir à tous,

Très beau dossier Vivien que tu as fais là.
En lisant, j'avoue que je ne maîtrise pas tout, mais j'y ai vu (peut-être une erreur de ma part) des similitudes avec ce qui arrive a plusieurs freenaute comme moi.

la perte de paquets, déconnexion de certains jeux en multi très très rapidement donc non jouable.
pour éviter de tout répéter je mets le lien : https://dev.freebox.fr/bugs/task/27503 (https://dev.freebox.fr/bugs/task/27503), peut-être un oeil mieux avisé que moi pourra y décelé des similitudes plus fines ou voir que le problème et complètement différent.

Une note à ajouter à ce lien,
Ayant fait récemment l’acquisition d'une bête de compétition (R9 3950x / CM MSI X570 Prestige creation donc avec 10Gbits), j'ai pu avoir l'occasion de faire un download à environ 120/150Mo/s à destination de mon SSD (qui était loin de saturer) et remarqué sur les stats de la freebox que d'un coup l'upload qui était quasi nul se faisait présent fortement (sur la courbe de la freebox d'un calme quasi plat à bien voir le rouge, ça saute aux yeux) et dès que le download redescendait vers 100Mo/s l'upload redevenait quasi nul. ainsi de suite durant le temps du transfert.

je suivrais donc avec attention tout ce qui se passe ici.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 13 février 2020 à 21:47:09
Les pertes de paquets que j'ai observé se produisent quand trop de paquets sont envoyés à un débit dépassant largement le débit de 600 Mb/s en upload.

Je ne connais pas World of Tanks ou World of Warships, mais d'habitude les jeux utilisent peu de bande passante et donc ce ne peut pas être la cause d'une saturation du buffer si il n'y a pas d'autres usages en même temps.

Si tu as "une perte de plus ou moins 75% de mes paquets de mon PC fixe branché en cable RJ45 vers la box. J’ai fait le test avec la wifi avec le même PC et la plus de soucis" cela pourrait être un problématique de câble Ethernet ou de driver de carte réseau. Le test est fait avec une carte 10 Gb/s (ta carte mère semble ne pas avoir de ports Ethernet 1 Gb/s, uniquement deux ports 10 Gb/s)

Connecté en Ethernet, un simple ping en IPv4 (exemple: ping ipv4.lafibre.info) montre des pertes de paquets ?
C'est la même chose en IPv6 ?
Si tu arrives à avoir des pertes de paquets par un simple ping, on va pouvoir trouver par différents tests le coupable.

Tu pourrais faire un test avec un PC moins haut de gamme connecté en Ethernet ? (On a déjà eu des problèmes avec des cartes réseau pour joueurs)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Higs le 13 février 2020 à 23:28:23
Oui, j'ai vu que de ton côté c'était en upload, j'ai pas possibilité de faire de l'upload rapidement de gros fichier.

j'ai pas précisé, Conan76 sur dev.freebox c'est moi.

Pour les jeux, il s'agissait de jeux tel que For Honor, Overcooked 2 et d'autre triple A, le seul que j'ai qui passe et Diablo 3. peut-être que les 2 premiers jeux pré-cité nécessite pas mal de synchro car ce sont des jeux type cooperatif ou 1vs1.

chez moi, je suis en RJ45, pas de wifi sur le pc volontairement, ma box étant au sous sol et dalle de béton (rez de chaussé et étage) cf mon installation (en recherchant Higs sur le forum de lafibre.info)
Ma nouvelle carte mère a 1 port 10Gb (aquantia) et 1Gb (intel) et du wifi 6. seul mon 10Gb est branché
sur mon ancienne, je n'avais que du 1Gb sur laquelle j'avais un I7-4790K, c'est avec elle que j'avais fait les tests sur dev.freebox

et donc les même soucis en changeant de matériel et d'autres PC sur le réseau.

pour les ping, les captures que j'avais faite comme l'autre personne via le logiciel Plotter effectué des ping et même avec on voyait de la perte de paquets au plus l'analyse était fine au plus on avait des pourcentages élevés dans le ping

Sur les captures on voit bien qu'il s'agissait directement de la freebox et l'élément juste derrière elle. je précise que je suis en IP full stack et que le problème est présent (je suis passé dessus pour accéder à l'ensemble de mes ports pour mes équipements interne).


Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Florian le 15 février 2020 à 16:17:32
Passionnant. En espérant que ça débouche chez une explication de la part de Free...
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 15 février 2020 à 20:18:22
Passionnant. En espérant que ça débouche chez une explication de la part de Free...

Ce sera le cas uniquement si quelqu'un connaît du monde chez Free.

Dès que Vivien aura donné le go je compléterai le ticket dev.freebox.fr mais je pense qu'ils traiteront rien...
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 15 février 2020 à 20:33:07
Tu as le go.

Une capture en uplaod depuis un PC connecté sur le port 1 Gb/s Ethernet de la Freebox à une heure où le trafic sur l'arbre 10GEpon est statistiquement faible serait intéressante, pour être sur que le pb vient de l'équipement qui limite le débit à 600 Mb/s.

Toutefois, il est possible de faire un ticket avec les infos déjà récupérées.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 16 février 2020 à 15:49:58
J'ai ajouté des éléments sur le ticket.

Je vois pour faire la capture si je trouve un moment  ;D
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 13:47:05
Comparaison Cubic / BBR réalisé sur une ligne Free FTTH impactée elle aussi par les pertes de paquets.

Débit montant :
(https://lafibre.info/images/free_debit/202002_comparatif_cubic_bbr_2.png) (https://lafibre.info/images/free_debit/202002_comparatif_cubic_bbr_2.png)

Tests réalisés par Breizh29, client Freebox Delta à Ergué-Gabéric, une commune du département du Finistère (29), dans la région Bretagne sur un serveur 10Gb/s hébergé par Bouygues Telecom à Nanterre (92). L’interconnexion entre Free et Bouygues Telecom se fait sur Paris TH2 en IPv4 comme en IPv6 dans les deux sens.

Client : VM sur ESXi 4vCPU sur un Core i7-10710U @1.1 GHz avec 4 Go de ram (sur 32 Go de l’hôte)
La connectivité 10G est assurée par un Sonnet Solo 10G Thunderbolt 3 édition
La VM est montée sous ESXi (6.7u2), la configuration réseau de VMWare est laissée d'origine.
La MTU est passée à 9000 dans la conf.
OS invité : Ubuntu 19.10 (Kernel Linux 5.3) et iPerf 3.6

Protocole de congestion BBR via /etc/sysctl.conf :
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.core.optmem_max = 268435456
net.core.rmem_default = 212992
net.core.wmem_default = 212992
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_fastopen = 1
net.ipv4.tcp_tso_win_divisor = 8


OS Serveur : Ubuntu server 18.04 LTS avec Kernel 5.3 avec taille de buffer max de 16 Mo.
iPerf 3.7
Optimisation réalisée :

# Reduce the swap
vm.swappiness = 1

# Reduce the threshold where a DDOS impacts the server
net.ipv4.tcp_max_syn_backlog = 4096

# TCP congestion control protocol for high-speed and long-distance networks
#net.ipv4.tcp_congestion_control=illinois
net.ipv4.tcp_congestion_control=bbr

# Disable the memorization of previous tests, in order to avoid that the server burns the tests following a limited performance
net.ipv4.tcp_no_metrics_save=1

# Increase TCP buffers
net.ipv4.tcp_rmem=4096 131072 16777216
net.ipv4.tcp_wmem=4096 87380 16777216
net.core.rmem_max=16777216
net.core.wmem_max=16777216

# Increase the queue within the Linux kernel where traffic is stored after reception from the NIC
net.core.netdev_max_backlog=4000

# Increase number of incoming connections
net.core.somaxconn = 512
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Fuli10 le 17 février 2020 à 14:37:37
Hello,
Quelqu'un serait intéressé pour interpréter 2 captures pcap du problème de perf. en uplink cubic et bbr sur un lien 1Gb ?
Pris directement entre la fbx et l'ONT, avec comme client un openwrt 19.1 (x64 - kernel 4.14) directement en DMZ de la box (donc NAT).
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 14:38:53
Je suis preneur !
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:12:35
Fuli10, on commence par ta capture Cubic.

root@gateway:~# iperf3 -C cubic -c bouygues.testdebit.info -p 5206 -t 2 -i 1 -V --get-server-output
iperf 3.7
Linux gateway 4.14.167 #0 SMP Wed Jan 29 16:05:35 2020 x86_64
Control connection MSS 1428
Time: Mon, 17 Feb 2020 13:55:57 UTC
Connecting to host bouygues.testdebit.info, port 5206
      Cookie: pqqc6v4qa3l4up7eqye6yofg5eeyqhhs2cql
      TCP MSS: 1428 (default)
[  5] local 2a01:e0a:369:d4xx::1 port 58782 connected to 2001:860:deff:1000::2 port 5206
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 2 second test, tos 0
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  31.3 MBytes   262 Mbits/sec    0    262 KBytes
[  5]   1.00-2.00   sec  33.8 MBytes   283 Mbits/sec    2    241 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-2.00   sec  65.0 MBytes   273 Mbits/sec    2             sender
[  5]   0.00-2.04   sec  63.9 MBytes   262 Mbits/sec                  receiver
CPU Utilization: local/sender 2.7% (1.1%u/1.6%s), remote/receiver 0.2% (0.0%u/0.2%s)
snd_tcp_congestion cubic
rcv_tcp_congestion cubic

Server output:
-----------------------------------------------------------
Server listening on 5206
-----------------------------------------------------------
Accepted connection from 2a01:e0a:369:d4xx::1, port 58780
[  6] local 2001:860:deff:1000::2 port 5206 connected to 2a01:e0a:369:d4xx::1 port 58782
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-1.00   sec  28.9 MBytes   242 Mbits/sec
[  6]   1.00-2.00   sec  33.5 MBytes   281 Mbits/sec
[  6]   2.00-2.04   sec  1.46 MBytes   292 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-2.04   sec  63.9 MBytes   262 Mbits/sec                  receiver


iperf Done.


iPerf3 indique que seul 2 paquets ont été retransmis, c'est très peu. (Il n'est pas anormal d'avoir quelques paquets perdus avec TCP)

Voici ton graphique Statistiques => Graphique des flux TCP => Séquence de temps (tcptrace) :

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_1.png)

Il est très propre. On note une montée en débit rapide (liée à la faible latence entre toi et le serveur) puis on a une droite, ce qui signifie que le débit est stable a environ 300 Mb/s.

A t=1,4 seconde, on voit les deux paquets consécutifs qui sont perdus et la baisse de débit qui est immédiatement opérée.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:15:24
Voici un zoom au moment de la perte des deux paquets :

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_2.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:31:08
Maintenant, tout n'est pas parfait, je vois au début de la connexions des acquittements sélectifs (SACK).

Sur le graphique, ce sont des petits traits rouge au niveau de la courbe en bas (couleur gris) qui indiquent les octet acquittés par le serveur.

Ces traits rouge se voient à t=0,253 et t=0,255.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_3.png)

Quand on clique sur ces traits rouges, Wireshark nous place sur les paquets correspondants pour pouvoir comprendre le problème.

Les 3 paquets ont étés analyses par Wireshark comme [TCP Dup ACK] et mis en rouge. On note la présence d’acquittement sélectif : concrètement, il y a eu de la gigue et le serveur à reçu les paquets dans le désordre et c'est vraiment anormal. Le paquet qui vient juste après la séquence 3882770 est arrivé après 3 paquets situés après. D'où le fait que le serveur signale ce paquet manquant.

L'émetteur ne va pas ré-émettre le paquet en question car très rapidement (en moins d'une milliseconde) le serveur acquitte le paquet manquant.

Ici je ne vois pas d'impact sur le débit, mais une gigue qui met rompt l'ordre des paquets peut être catastrophique sur le débit. Bref, c'est un vrai problème, même si je ne pense pas qu'il a réduit le débit.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_4.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_cubic_4.png)

Pourquoi le débit est deux fois plus faible qu'espéré ?

Je voit deux causes possibles pour expliquer un tel débit :
- Le client a des paramètres TCP/IP qui ne sont pas optimisé pour un si haut débit (il faudrait tester avec un vrai Linux, en effet les Linux embarqués peuvent avoir des paramètres plus conservateurs pour économiser de la ram)
- La gigue aurait convaincu l'émetteur de ne pas être trop agressif.

Il est possible que le débit soit imité à cause d'une autre cause, là rien n'est évident.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:39:15
Fuli10, on continue par ta capture BBR.

Là le débit est au rendez-vous.


root@gateway:~# iperf3 -C bbr  -c bouygues.testdebit.info -p 5206 -t 2 -i 1 -V --get-server-output
iperf 3.7
Linux gateway 4.14.167 #0 SMP Wed Jan 29 16:05:35 2020 x86_64
Control connection MSS 1428
Time: Mon, 17 Feb 2020 13:46:47 UTC
Connecting to host bouygues.testdebit.info, port 5206
      Cookie: uhlltw5d3vpaciyan3f3lhhi3qmdtqdk3ibj
      TCP MSS: 1428 (default)
[  5] local 2a01:e0a:369:d4xx::1 port 58774 connected to 2001:860:deff:1000::2 port 5206
Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 2 second test, tos 0
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  69.1 MBytes   580 Mbits/sec  5477    940 KBytes       
[  5]   1.00-2.00   sec  67.5 MBytes   566 Mbits/sec  7091    892 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-2.00   sec   137 MBytes   573 Mbits/sec  12568             sender
[  5]   0.00-2.04   sec   134 MBytes   551 Mbits/sec                  receiver
CPU Utilization: local/sender 3.2% (1.4%u/1.9%s), remote/receiver 0.0% (0.0%u/0.0%s)
snd_tcp_congestion bbr
rcv_tcp_congestion bbr

Server output:
-----------------------------------------------------------
Server listening on 5206
-----------------------------------------------------------
Accepted connection from 2a01:e0a:369:d4xx::1, port 58772
[  6] local 2001:860:deff:1000::2 port 5206 connected to 2a01:e0a:369:d4xx::1 port 58774
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-1.00   sec  62.4 MBytes   524 Mbits/sec
[  6]   1.00-2.00   sec  68.2 MBytes   572 Mbits/sec
[  6]   2.00-2.04   sec  3.30 MBytes   703 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-2.04   sec   134 MBytes   551 Mbits/sec                  receiver


iperf Done.


iPerf3 indique que 12568 paquets ont été retransmis. C'est bien le cas.

BBR est agressif et génère pleins de paquets perdu c'est connu.

Voici la courbe Séquence de temps (tcptrace) :

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_1.png)

On note un débit très stable, la ligne bleu est une vrai droite, le débit est toujours au maximum.

On note aussi beaucoup, beaucoup de paquets retransmis. Un même paquet peut même etre élis 4 fois avant d'être reçu par le serveur !
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:43:04
Voici le début de la connexion TCP :

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_2.png)

Jusqu'à 0,09 seconde, les paquets émis sont reçus et acquittés rapidement.

A partir de 0,09 seconde et jusqu'à la fin de la capture, c'est paquet perdu sur paquets perdus et la courbe grise des acquittements se décale vers la droite vu qu'il faut attendre d'avoir tous les paquets et qu'il faut renvoyer plusieurs fois certains.

A 0,12 secondes, l'émetteur arrête d'envoyer des paquets : la Rwin (paquets non acquittés) est remplie. C'est quand la courbe bleu des paquets envoyés touche la courbe verte. La courbe verte située en haut indique la limite du nombre de paquets non acquittés qu'il est permis d'envoyer. Cette courbe augmente à chaque fois que les acquittements sont reçus. Avec l'augmentation de la Rwin, c'est le seul moment où l'émetteur va arrêter d'envoyer des paquets. Augmenter la Rwin aurait peut-être permis d'éviter cette courte interruption et de gagner encore un petit peu de débit au début de la connexion.

Voici un zoom, regardez bien les petits point bleu qui sont ré-émis jusqu'à 4 fois !

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_3.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:45:02
Zoom vers la fin de la capture pour montrer que l'on est toujours dans la même configuration avec pleins de traits rouge qui sont des acquittements qui indiquent que des paquets sont perdus et les traits bleu qui sont des paquets ré-émis.

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_4.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_fuli10_bbr_4.png)

Merci pour cette belle capture qui montre comment BBR s'y prend pour améliorer le débit par rapport à Cubic.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Fuli10 le 17 février 2020 à 22:50:19
Le problème de débit étant reproductible avec un pc (linux ou windows) derrière le routeur, j'ai testé justement avec la machine la plus proche de la box. Sinon je peux faire aussi facilement une capture avec un ubuntu derrière le routeur. Mais le pire étant que c'est pareil avec le routeur connecté directement sur l'ONT (débit faible en uplink aussi bien depuis ubuntu que depuis openwrt). Je pourrais aussi faire une capture dans ce mode mais pas avant un moment, et de toute façon je doute de sa pertinence vs derrière la freebox).
Je n'ai configuré que l'IPv6 mais j'atteind aussi des débits équivalents sur iperf depuis le routeur et depuis ubuntu.
Et là encore c'est 300Mbps, mais d'habitude en cubic c'est plus proche des 200-250Mbps comme ce soir.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 février 2020 à 22:59:03
J'ai regardé la capture de Breizh29 que j'avais conservé et on voit aussi de la gigue et comme toi des paquets qui arrivent en retard de 3 paquets sans que l'émetteur ne ré-envoi le paquet indiqué comme non reçu car acquitté rapidement.

Comme pour toi, on ne voit pas une basse de débit après cette forte gigue.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 17 février 2020 à 23:04:10
Du coup on voit bien qu'il y a des choses à faire côté Free...  ;)

Espérons que les équipes réseaux vont trouver quelque chose.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: hwti le 17 février 2020 à 23:33:39
iPerf3 indique que 12568 paquets ont été retransmis. C'est bien le cas.
...
On note aussi beaucoup, beaucoup de paquets retransmis. Un même paquet peut même etre élis 4 fois avant d'être reçu par le serveur !
13% de pertes donc, c'est effectivement beaucoup.

J'ai regardé la capture de Breizh29 que j'avais conservé et on voit aussi de la gigue et comme toi des paquets qui arrivent en retard de 3 paquets sans que l'émetteur ne ré-envoi le paquet indiqué comme non reçu car acquitté rapidement.
Est-ce que ça pourrait être Free qui répartit aléatoirement les trames sur plusieurs liens 10Gbps ?
Autant sur le download ça pourrait avoir un intérêt, autant sur l'upload avec 600Mbps par abonné c'est bizarre.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 18 février 2020 à 08:20:17
Les liens sont symétriques et les opérateurs utilisent des LAG de n port 10 Gb/s pour la collecte ou n ports 100 Gb/s pour le backone.

J'ai déjà vu des liens constitués de LAG de 128 ports 10 Gb/s.

La base dans les réseaux c'est de faire en sorte qu'une connexion TCP utilise toujours le même lien du LAG pour éviter que les paquets arrivent dans le désordre.

- Mode 4 : IEEE 802.3ad (https://fr.wikipedia.org/wiki/IEEE_802.3ad) : Groupement de ports pour load balancing et Failover : Fonctionne les switchs Ethernet qui supportent cette norme. Le mécanisme de load blancing est similaire à celui du mode Balance-XOR.Il est basé sur le principe qui consiste à affecter toujours le même chemin à la même machine en fonction du couple IP source / IP destination / port. Cela implique que le switch gère le 802.ad et que les interfaces soient compatibles mii-tool et/ou ethtool.

La répartition du trafic se fait par un hash XOR (eXclusive OR ou OU exclusif) en fonction des arguments sélectionnables suivants :
  • les adresses MAC(source et ou destination)
  • les adresses IP (source et ou destination)
  • le port applicatif (destination)

Tous les ports d'un groupe doivent obligatoirement être paramétrés à la même vitesse, même duplex (full/half), même VLAN, même mode (access/trunk).
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Fuli10 le 18 février 2020 à 08:51:16
Perso je verrais plutôt un problème avec les buffers internes de l'ONT qui divise dynamiquement mais mal son pool de mémoire entre UL et DL (sûrement un buffer unique partagé). Ce qui me fait dire ça c'est les résultats catastrophiques oscillant DL/UL quand on fait 2 sessions iperf en DL et UL. Possible que l'algorithme d'allocation fait que certains paquets apres un watermark sorte avec plus ou moins de délais.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 18 février 2020 à 09:28:52
Je ne comprends pas comment un buffer pourrait faire que les paquets se retrouvent dans le désordre.

A moins que ce soit un bug de la fonction de priorisation des paquets [SYN] [SYN-ACK] présent de mémoire sur la Freebox, qui permet de prioriser ce types de péquets pour éviter qu'ils aient a attendre leur tour (et c'est plutôt une bonne idée de prioriser les paquets [SYN] [SYN-ACK], ce sont des paquets de petite taille, il vont peu ralentir les autres connexions et le temps gagné va permettre de monter plus rapidement la connexion)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 18 février 2020 à 20:14:52
@Vivien : ça t'intéresse des captures tcpdump au cul d'une Freebox Revolution, IPv4 + IPv6 et Cubic + BBR ?

Ca a été testé en governor à "performance" pour être sûr que le CPU ne vienne pas perturber.
Normalement il ne devrait pas y avoir de pollution externe car c'était la seule machine sur la Freebox.

Il y a + de 3 Go de data pour 4 captures de 20 secondes...  :o
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 18 février 2020 à 20:39:45
Oui, intéressé si c'est du mono-connexion (difficile 'analyser quelques chose sur du multi-connexions TCP).

Le trafic étranger ne me gène pas, je filtre toujours sur la connexion TCP de la capture.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 18 février 2020 à 20:54:54
C'est du mono-connexion oui, j'ai utilisé cette commande :

iperf3 -c bouygues.testdebit.info -t 20 -i 1 ( -4 ) ( -C bbr)
Le test a été fait à 13h : entre 80-130 Mbps en Cubic et 450-500 Mbps en BBR de mémoire.
--> Je te fais parvenir ça par MP.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 08:32:34
La compression de tes captures est impressionnante : ton .tar.lzma a une taille de 6,2 Mo compressé et fait 3,3 Go décompressé.

Je commence par la capture Cubic IPv6

On voit assez quelques pertes de paquets. Wireshark à tagué 23 paquets "Out-of-Order" et 13 paquets "TCP Fast Restransmission", cela fait donc en réalité 36 paquets perdus.

(Le filtre à utiliser est tcp.analysis.retransmission et tcp.analysis.out_of_order pour voir ces paquets)

La courbe n'est pas une droite parfaite, on voit que le débit baisse à chaque perte de paquet, pour remonter doucement ensuite.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_1.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 08:40:37
Un point important est le début de la connexion : si cela démarre mal, le trafic a de très forte chance d'être limité.

Voici les paquets de données depuis le début.

On note que lors de la 3ème slave d'envoi de paquets, à T=0,074, il y a des traits rouges, correspondants à ce que Wireshark considère comme [TCP Dup ACK] :


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_2.png)

Quand on regarde le détaille, on note qu'un paquet, celui qui commence par 54302 a été retardé de 4 paquets.

Il y a donc un vrai problème dés le début et on voit que l'émetteur à réduit sa vitesse d'émission : Avant on était sur des paquets de 6 à 10 Ko, immédiatement après cette gigue on est majoritairement sur des paquets de 1,5 Ko.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_cubic_3.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 08:49:35
On continue avec la capture Cubic IPv4

On voit assez quelques pertes de paquets. Wireshark à tagué 45 paquets "Out-of-Order" et 17 paquets "TCP Fast Restransmission", cela fait donc en réalité 62 paquets perdus.

Attention, ce ne sont pas des paquets de MTU de 1500, ce sont des paquets vu de ton PC, avant qu'ils soient découpés par la carte réseau. Certains paquets retransmis ont une taille de 14546 octets, c'est donc un assemblage de 10 paquets.

En réalité on dépasse donc les 100 paquets perdus.

La courbe n'est pas une droite parfaite, on voit que le débit baisse à chaque perte de paquet, pour remonter doucement ensuite.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_1.png)

Voici le tout début de la connexion, au note a la 5ème slave de paquets envoyés un éclatement des buffers, on est dans le même cas que Breizh29.

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_2.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 09:01:36
Voici la suite de la connexion, avec le même niveau de zoom que celui utilisé pour le tout début de la connexion.

On est à t=0,3 sec donc encore au début et là on observe 3 phénomènes de gigue, déjà observée dans les autres captures.

Pour le premier phénomène de gigue, le comportement de l'émetteur est différent de ce que l'on à vu jusqu'à présent : il va renvoyer le paquet, pensant qu'il est perdu.

C'est inutile car il est acquitté immédiatement derrière, donc l’acquittement correspond au paquet initial reçu avec un peu de retard.

On observe plus tard l’acquittement spécifique au paquet reçu en double.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_3.png)

Dans la vue par paquet, on voit :
- T=0,335 Le paquet 3110342 est arrivé en retard de 2 paquets
- T=0,335 l'émetteur a renvoyé le paquet présumé perdu dés le second [TCP Dup ACK]
- T=0,348 Le paquet renvoyé en double est acquitté de manière spécifique par le récepteur avec du SACK, pour bien faire comprendre à l'émetteur que le paquet a été reçu en double.

TCP ayant une capacité d’apprentissage, comme l'acquittement spécial, il laissera plus de temps lors des prochains phénomène de gigue pour recevoir l’acquittement. Bref, TCP prend en compte que cette connexion est dégradée et qu'elle a une forte gigue : il faut donc envoyer les paquets à un débit plus réduit (plus ils sont rapprochés, pus il y a un risque d'être dans le désordre à la réception) et en cas d'acquittements qui mentionnent une perte de paquets, laisser plusieurs paquets passer, au ca où cela serait une gigue.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_4.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_cubic_4.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 09:14:28
La capture BBR en IPv6

En IPv6 Cubic, 240 Mo ont été échangés pendant les 20 secondes (l'axe des ordonnée s’arrête à 240 000 000 octets)

En IPv6 BBR, c'est plus de 1,2 Go qui ont été échangés pendant les 20 secondes (on dépasse 1 200 000 000 sur l'axe des ordonnée)

=> BBR a un débit moyen plus de 5 fois plus élevé à Cubic ici

Vous savez que si BBR est agressif, cela va faire des paquets perdus en masse.

Le filtre tcp.analysis.retransmission annonce 912 paquets, dont la plupart sont d'une grande taille (certains font même 53 Ko)
Le filtre tcp.analysis.out_of_order annonce 13 938 paquets, dont la plupart sont d'une grande taille (certains font même 60 Ko !)

On est donc sur de la perte de paquet massive.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_1.png)

Comme pour les autres captures, voici le tout début de la connexion.

On remarque que BBR envoi les paquets à un rythme régulier, là où BBR envoi des slave de paquets.

Tout se passe bien quand le débit est réduit, jusqu'à T=0,2 secondes ensuite ce sont des pertes massives.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_2.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 09:24:24
Un point intéressant, c'est que l'on voit à la 15ème seconde du test que le trafic s’arrête un certain temps.

Voici le zoom sur cette période :


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_3.png)

Les paquets d'acquittement sélectif (SACK = selective acknowledgement)sont limités à un maximum de 3 blocs discontinus de paquets reçus correctement, en plus du numéro de séquence suivant immédiatement le dernier numéro de séquence du dernier octet contigu reçu successivement.

Ici on dépasse visiblement 3 blocs discontinus, et il n'est donc pas simple à l'émetteur de faire son choix dans les paquets à ré-émettre.

La situation a visiblement dérapé. Voici le vue par paquets, j'ai coupé la partie droite, c'est simple, tous les paquets d’acquittements sont remplis de 3 blocs discontinus, le maximum possible.

Je dois par contre partir travailler, je ne pourrais pas analyser tout de suite la cause de cette interruption du trafic en BBR.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_4.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv6_bbr_4.png)

On note que quand l'émetteur repart après avoir renvoyé quelques paquets dont il attendait l’acquittement, BBR repart directement au débit maximum, alors que Cubic dans des situation comme celle à repart en "slow start" comme au début d'une connexion TCP, en envoyant quelques paquets puis attendant leur acquittements.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 14:00:22
Capture BBR en IPv4

On a une belle droite : le débit est stable.

Contrairement à la courbe BBR en IPv6, il n'y a pas d'interruption


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_1.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_1.png)

Voici la courbe du début de la connexion.

On note deux interruption de courtes durées à T=0,2 sec et T= 0,26 sec


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_2.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_2.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 14:01:37
On va ensuite avoir régulièrement ces petites coupures, où l’émetteur n'émet plus rien pendant une courte durée.

Un gain de débit est donc encore possible


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_3.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_3.png)

(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_4.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_4.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 19 février 2020 à 14:05:55
Un zoom sur un de ces coupures.

Il y a un trait bleu des paquet émis à gauche puis un peu plus à droite un trait bleu en pointillé, ce sont tous les paquets renvoyés.

On note que pendant cette coupure, l’émetteur continue de renvoyer tous les paquets qui lui sont signalés perdus.
C'est uniquement la courbe de gauche qui est mis en pause quelques dizaines de millisecondes.

Pendant cette coupure, le débit est faible est les buffers doit se vider : on n'exploite pas au maximum le débit offert par la ligne dans ces moments là.


(cliquer sur le graphique pour zoomer)
(https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_5.png) (https://lafibre.info/images/wireshark/202002_free_analyse_debit_cryptage_ipv4_bbr_5.png)
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: Cryptage le 19 février 2020 à 23:38:40
Est-ce que cette analyse te permet de conclure ? Par exemple sur des buffers trop petits comme supposé précédemment ?
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 20 février 2020 à 08:08:07
Sur la capture IPv4 Cubic, on voit bien le fait que les buffers sont trop petits.

Cela ne se voit pas sur la capture IPv6 Cubic, mais c'est peut-être que tu avait fait un test avant : TCP est mesure de garder souvenir des destinations où les précédents connexions on posées problème et où il faut donc envoyer les paquets à un faible débit.

Pour éviter ce phénomène de mémoire, il faudrait employer net.ipv4.tcp_no_metrics_save=1 comme je l'ai mis dans mon fichier d'optimisation, présent sur les serveurs de test de débit que j'administre :

nano /etc/sysctl.d/90-server-optimization.conf
# Reduce the swap
vm.swappiness = 1

# Disable the memorization of previous tests, in order to avoid that the server burns the tests following a limited performance
net.ipv4.tcp_no_metrics_save=1

# Increase TCP buffers
net.ipv4.tcp_rmem=4096 131072 16777216
net.ipv4.tcp_wmem=4096 87380 16777216
net.core.rmem_max=16777216
net.core.wmem_max=16777216

# Increase the queue within the Linux kernel where traffic is stored after reception from the NIC
net.core.netdev_max_backlog=4000

# Reduce the threshold where a DDOS impacts the server
net.ipv4.tcp_max_syn_backlog = 4096

# Increase number of incoming connections
net.core.somaxconn = 512

Par défaut, TCP enregistre diverses métriques de connexion dans le cache de routage lorsque la connexion se ferme, de sorte que les connexions établies dans un proche avenir peuvent les utiliser pour définir les conditions initiales. Habituellement, cela augmente les performances globales, mais peut parfois entraîner une dépendance du test N au test N-1.

Dans le cadre des tests réalisés ici, nous souhaitons voir les problèmes et éviter qu'il réduise préventivement son débit.

Afin d’assurer une décorrélation des tests successifs, il semble opportun de désactiver la mémorisation des tests précédents sur le serveur pour les tests download (déjà fait) et sur le client pour les tests upload, via l'emploi de « tcp_no_save_metrics=1 »  afin d’éviter que serveur bride tous les tests suite à une performance limitée.

Les optimisations des buffers sont aussi bienvenue pour ne pas avoir de limitation de ce coté là (mais à priori ce n'est pas la cause de la limitation de débit enregistré et si cela briderait le débit, cela le ferait de manière équivalente en Cubic et en BBR)


Maintenant l'autre problème qui est présents dans les différentes captures (et que je n'avais pas vu lors de la première analyse de Breizh29), c'est le fait que les paquets arrivent régulièrement dans le désordre.
Je pense que ce désordre est probablement la cause des coupures vu avec un transfert avec le protocole de congestion BBR.

Il y a donc deux gros problèmes rencontrés dans ces captures.

Le buffer on sait que c'est sous la responsabilité de Free.
Les paquets qui arrivent dans le désordre, on n'a rien qui prouve que c'est sous la responsabilité de Free.

Il faudrait faire un capture en Cubic (BBR c'est compliqué à analyser vu les pertes dans tous les sens) avec un serveur qui n'est pas hébergé chez Bouygues Telecom pour voir si les paquets dans le désordre sont toujours présents.

Je suis donc intéressé par un upload Cubic, plutôt en IPv6, vers un autre serveur iPerf3.
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: ottbytel le 17 septembre 2020 à 15:17:38
En lisant plusieurs thread sur les forums, on remarque que l'augmentation de l'UL dans les offres Free à améliorer les résultats des tests de débit UL.
Savez-vous si Free est intervenu aussi sur les buffers  ?
Titre: Tuto:Analyser les problèmes de débit avec Wireshark (exemple avec Freebox Delta)
Posté par: vivien le 17 septembre 2020 à 15:34:18
Les buffers, si ils ne sont pas présents matériellement, il n'est pas possible de les créer par une mises à jour logicielle.

Pour moi la Delta aurait besoin d'une révision pour corriger ce bug hardware.