Projet agregation » Historique » Version 30
Jocelyn Dealande, 06/12/2011 01:21
corrections mise en page + lien attachment
1 | 1 | Laurent GUERBY | h1. Projet agregation |
---|---|---|---|
2 | 1 | Laurent GUERBY | |
3 | 2 | Yanick Delarbre | * [[Bibliographie du projet]] |
4 | 18 | Yanick Delarbre | * [[L'installation de gitolite]] |
5 | 3 | Yanick Delarbre | * http://pad.rhizome-fai.net/U7HSgxYvDM | Le code du tunnel tun réalisé avec python |
6 | 17 | Yanick Delarbre | * http://pad.rhizome-fai.net/TS2HBLkTnN | Spécification de l'iperf (de quel manière on détecte la capacité d'un lien de manière opportuniste ? Monitoring ?) |
7 | 1 | Laurent GUERBY | |
8 | 1 | Laurent GUERBY | * http://lists.tetaneutral.net/listinfo/projet-agregation |
9 | 1 | Laurent GUERBY | * http://chiliproject.tetaneutral.net/issues/16 |
10 | 4 | Jocelyn Dealande | |
11 | 22 | Laurent GUERBY | h2. Prototype v1 |
12 | 22 | Laurent GUERBY | |
13 | 22 | Laurent GUERBY | http://lists.tetaneutral.net/pipermail/projet-agregation/2011-November/000023.html |
14 | 4 | Jocelyn Dealande | |
15 | 4 | Jocelyn Dealande | h2. Test de tunproxy.py |
16 | 4 | Jocelyn Dealande | |
17 | 4 | Jocelyn Dealande | On utilise "tunproxy.py":http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py. Entre 2 machines |
18 | 4 | Jocelyn Dealande | * client-adsl (une machine chez nous) |
19 | 4 | Jocelyn Dealande | * gateway (la VM) |
20 | 4 | Jocelyn Dealande | |
21 | 4 | Jocelyn Dealande | h3. Sur la gateway (= VM ttn) |
22 | 4 | Jocelyn Dealande | |
23 | 4 | Jocelyn Dealande | Démarrer le tunnel, il crée lui-même une interface _toto0_ (détruite à la sortie). |
24 | 4 | Jocelyn Dealande | |
25 | 4 | Jocelyn Dealande | <pre> |
26 | 4 | Jocelyn Dealande | ./tunproxy.py -s 6000 |
27 | 11 | Jocelyn Dealande | ifconfig toto0 10.0.0.1/24 mtu 1468 |
28 | 4 | Jocelyn Dealande | </pre> |
29 | 1 | Laurent GUERBY | |
30 | 15 | Jocelyn Dealande | La MTU est calculée comme suit : |
31 | 1 | Laurent GUERBY | |
32 | 11 | Jocelyn Dealande | MTU de l'iface virtuelle = MTU de l'iface physique - taille_max(header IP) - taille(header UDP) |
33 | 15 | Jocelyn Dealande | MTU de l'iface virtuelle = 1500 - 24 - 8 |
34 | 11 | Jocelyn Dealande | |
35 | 17 | Yanick Delarbre | http://www.commentcamarche.net/faq/7185-introduction-au-mtu |
36 | 11 | Jocelyn Dealande | |
37 | 4 | Jocelyn Dealande | h3. Sur le client |
38 | 4 | Jocelyn Dealande | |
39 | 4 | Jocelyn Dealande | |
40 | 4 | Jocelyn Dealande | <pre> |
41 | 4 | Jocelyn Dealande | ./tunproxy.py -c rhizome-fai.tetaneutral.net:6000 |
42 | 12 | Yanick Delarbre | ifconfig toto0 10.0.0.2/24 mtu 1468 |
43 | 4 | Jocelyn Dealande | </pre> |
44 | 4 | Jocelyn Dealande | |
45 | 4 | Jocelyn Dealande | Tout le trafic vers les adresses en 10.0.0.x passera par le tunnel. |
46 | 4 | Jocelyn Dealande | |
47 | 4 | Jocelyn Dealande | * http://lists.tetaneutral.net/listinfo/projet-agregation |
48 | 1 | Laurent GUERBY | * http://chiliproject.tetaneutral.net/issues/16 |
49 | 1 | Laurent GUERBY | |
50 | 15 | Jocelyn Dealande | Un test de perf sur un téléchargement d'un fichier de 40Mio donne : |
51 | 15 | Jocelyn Dealande | |
52 | 15 | Jocelyn Dealande | * avec tunnel : 909kb/s |
53 | 15 | Jocelyn Dealande | * sans tunnel : 942kb/s |
54 | 15 | Jocelyn Dealande | |
55 | 29 | Jocelyn Dealande | h1. Détection de la saturation d'un lien / bufferbloat |
56 | 30 | Jocelyn Dealande | |
57 | 29 | Jocelyn Dealande | Un des points sur lesquels nous nous penchons est la détection de la capacité d'un lien et de son évolution, ceci 1) pour utiliser au mieux des liens de capacité différente et éventuellement changeante. |
58 | 29 | Jocelyn Dealande | |
59 | 29 | Jocelyn Dealande | Tout le challenge est de détecter (passivement) plutôt que de mesurer (activement) la capacité du lien, sans induire de trafic supplémentaire. |
60 | 29 | Jocelyn Dealande | |
61 | 29 | Jocelyn Dealande | Nous avons fait des mesures sur deux liens : |
62 | 29 | Jocelyn Dealande | |
63 | 29 | Jocelyn Dealande | h2. Mesure ADSL Free (Freebox) |
64 | 29 | Jocelyn Dealande | |
65 | 29 | Jocelyn Dealande | Il semble que de la QoS soit appliquée⦠l'effet de bufferbloat n'est pas vraiment visible : on passe d'un ping de 40 à 70/80ms⦠(TODO: prendre le temps de collecter des résultats des deux côtés du tunnel un peu plus sérieusement que juste l'impression donnée ceci-dit). Tous les paquets de ping arrivent, même lorsque le lien est saturé. |
66 | 29 | Jocelyn Dealande | |
67 | 29 | Jocelyn Dealande | h2. Lien ADSL (OVH) |
68 | 29 | Jocelyn Dealande | |
69 | 29 | Jocelyn Dealande | L'effet de la saturation se fait clairement ressentir sur le ping : on passe de 70 à plus de 300ms de ping lorsque le lien est saturé. |
70 | 1 | Laurent GUERBY | |
71 | 30 | Jocelyn Dealande | Données du test et graphiques : attachment:saturation_et_ping___uplink_seulement__udp_sctp.ods |
72 | 30 | Jocelyn Dealande | |
73 | 1 | Laurent GUERBY | h3. Conditions du test : |
74 | 30 | Jocelyn Dealande | |
75 | 1 | Laurent GUERBY | * Tunnel tap basé sur tunproxy.py (cf dépôt git), qui est le seul à utiliser la connexion |
76 | 1 | Laurent GUERBY | * Données collectées toutes les secondes, chaque peer enregistre : |
77 | 30 | Jocelyn Dealande | ** timestamp |
78 | 30 | Jocelyn Dealande | ** stats des paquets entrants |
79 | 30 | Jocelyn Dealande | ** ping |
80 | 29 | Jocelyn Dealande | * On teste la connection au repos en la saturant par moments avec iperf |
81 | 30 | Jocelyn Dealande | ** en UDP : en metant l'option -b à une valeur supérieure à la capacité d'uplink |
82 | 30 | Jocelyn Dealande | ** en TCP |
83 | 1 | Laurent GUERBY | * Les données des 2 peers sont fusionnées à posteriori (script merge_tunproxy_csv.py) en fonction des timestamp. |
84 | 30 | Jocelyn Dealande | * Les données sont graphées sur un tableur (ouais je sais, beurk ;-) ). |
85 | 29 | Jocelyn Dealande | |
86 | 29 | Jocelyn Dealande | Le comptage du volume sortant n'est pas pertinent puisque la moitié des paquets peuvent-être dropés en route⦠|
87 | 29 | Jocelyn Dealande | |
88 | 29 | Jocelyn Dealande | |
89 | 29 | Jocelyn Dealande | h3. Analyse des résultats |
90 | 30 | Jocelyn Dealande | |
91 | 29 | Jocelyn Dealande | (voir document joint) |
92 | 29 | Jocelyn Dealande | * On note systématiquement une corrélation forte entre lien saturé et augmentation du ping. Que le lien soit saturé en UDP ou TCP. |
93 | 29 | Jocelyn Dealande | * En UDP, on peut saturer le lien complètement. Il en résulte qu'une part des pings se perd -> Prendre non seulement en compte le RTT mais également le taux de pings perdus. |
94 | 29 | Jocelyn Dealande | * En TCP, on observe aussi une montée du ping significative, mais jamais de pings perdus. On constate d'ailleurs que TCP se rend compte qu'il sature le lien et divise sa fenêtre (trou dans le graphe). |
95 | 29 | Jocelyn Dealande | * -> Quid de la réalité de la saturation d'un lien par rapport à ces deux exemples simples ? |
96 | 11 | Jocelyn Dealande | |
97 | 11 | Jocelyn Dealande | |
98 | 11 | Jocelyn Dealande | h1. Petits points techniques⦠|
99 | 11 | Jocelyn Dealande | |
100 | 20 | Jocelyn Dealande | h2. Que mesure iperf et comment (en UDP) ? |
101 | 1 | Laurent GUERBY | |
102 | 16 | Jocelyn Dealande | Iperf mesure le débit du client vers le serveur (dans un seul sens). En UDP, il envoie à une vitesse nominale (par défait 1M). Le résultat donné par le client n'est pas une mesure mais correspond à cette vitesse nominale. *Seul le _server repport_ correspond à la "vraie" mesure.* |
103 | 17 | Yanick Delarbre | |
104 | 17 | Yanick Delarbre | La saturation d'un lien générant des pertes, pour mesurer les pertes liées à la qualité du lien (et non à sa capacité), il faut demander au client d'émettre un peu en-dessous de la vitesse à laquelle peut recevoir le serveur. |
105 | 17 | Yanick Delarbre | |
106 | 17 | Yanick Delarbre | h2. Quelques outils réseaux bien pratique |
107 | 17 | Yanick Delarbre | |
108 | 17 | Yanick Delarbre | * tcpdump | http://openmaniak.com/fr/tcpdump.php |
109 | 17 | Yanick Delarbre | <pre bash> |
110 | 17 | Yanick Delarbre | tcpdump -D #Interfaces réseaux disponibles pour la capture |
111 | 17 | Yanick Delarbre | tcpdump port 80 -i eth0 -w capture.log #Enregistre le trafic Web vers le fichier capture.log pouvant être ouvert avec Wireshark |
112 | 17 | Yanick Delarbre | tcpdump icmp #Affiche tout le trafic associé au protocole icmp |
113 | 17 | Yanick Delarbre | </pre> |
114 | 17 | Yanick Delarbre | * ping | http://www.bortzmeyer.org/ping-taille-compte.html |
115 | 17 | Yanick Delarbre | ** Permet de tester un problème de MTU grâce à l'option -s de ping permettant de fixer une taille de paquet |
116 | 17 | Yanick Delarbre | * hping3 |
117 | 17 | Yanick Delarbre | <pre bash> |
118 | 5 | Jocelyn Dealande | hping --syn -p 80 --data 1200 10.0.0.1 #Envoie de paquet tcp syn sur le port 80 de taille 1200 |
119 | 15 | Jocelyn Dealande | </pre> |
120 | 21 | Jocelyn Dealande | |
121 | 21 | Jocelyn Dealande | |
122 | 23 | Jocelyn Dealande | *tracepath* pour découvrir le PMTU |
123 | 23 | Jocelyn Dealande | |
124 | 23 | Jocelyn Dealande | h1. TODO étapes suivantes |
125 | 23 | Jocelyn Dealande | |
126 | 23 | Jocelyn Dealande | * Chercher relation entre variations de latence et saturation de lien. Concrètement, être capable de détecter *l'évènement "mon lien est saturé"* et de mémoriser la capacité max. du lien |
127 | 23 | Jocelyn Dealande | * Finir de lire/comprendre le code de Fernando (linkagreg) |
128 | 1 | Laurent GUERBY | * Lire/comprendre le bout de script python de Laurent (multi-UDP pour contourner les QoS) |
129 | 9 | Jocelyn Dealande | |
130 | 1 | Laurent GUERBY | h1. Journal (Ã partir du 28 oct) |
131 | 23 | Jocelyn Dealande | |
132 | 29 | Jocelyn Dealande | Activités du projet de Yanick & Jocelyn (TX) |
133 | 29 | Jocelyn Dealande | |
134 | 29 | Jocelyn Dealande | h2. 5 déc. |
135 | 30 | Jocelyn Dealande | |
136 | 29 | Jocelyn Dealande | * Détection de saturation : |
137 | 29 | Jocelyn Dealande | * Output CSV en direct vers le fichier plutôt que statiquement au bout de 3 minutes⦠|
138 | 29 | Jocelyn Dealande | * Ãcriture d'un outil de script de logs CSV |
139 | 1 | Laurent GUERBY | * Collecte de mesures sur l'effet sur le ping de la saturation d'un lien en UDP et TCP |
140 | 24 | Yanick Delarbre | * Analyse basique des résultats |
141 | 25 | Yanick Delarbre | |
142 | 24 | Yanick Delarbre | h2. 27 nov. |
143 | 24 | Yanick Delarbre | |
144 | 24 | Yanick Delarbre | * Lecture et utilisation de linkagreg (outil d'agrégation de Fernando) |
145 | 24 | Yanick Delarbre | * Faire fonctionner linkagreg sur une architecture 64bits |
146 | 27 | Yanick Delarbre | * Faire fonctionner linkagreg avec une connection sur le client //Fonctionnel |
147 | 27 | Yanick Delarbre | * Faire fonctionner linkagre avec n connection sur le client //Non fonctionnel |
148 | 27 | Yanick Delarbre | ** Test avec une connection filaire et WiFi //Non fonctionnel car perte (important) de paquet sur le lien WiFi |
149 | 23 | Jocelyn Dealande | ** Test avec des connections virtuelles //Non fonctionnel car QoS inapplicable sur des interfaces virtuelles |
150 | 28 | Jocelyn Dealande | ** Test avec deux interfaces physiques //Non fonctionnel car QoS déficiente |
151 | 28 | Jocelyn Dealande | |
152 | 28 | Jocelyn Dealande | * Ajout de la collecte de données sur les temps de réponse (ping) périodiquement. |
153 | 28 | Jocelyn Dealande | * Export des données en CSV (pour exploitation/graphe⦠etc.) |
154 | 28 | Jocelyn Dealande | * Premier jeu de mesure (mauvais) sur une ligne adsl. |
155 | 19 | Jocelyn Dealande | * |
156 | 19 | Jocelyn Dealande | |
157 | 19 | Jocelyn Dealande | h2. 11 nov. |
158 | 19 | Jocelyn Dealande | |
159 | 19 | Jocelyn Dealande | * Debuggage du problème de MTU (c'est honteux mais c'est bêtement la taille des buffers qui n'était pas assez grande dans le programme. Notamment dû aux pseudo en-têtes, cf plus bas). |
160 | 19 | Jocelyn Dealande | * Configuration auto des adresses IP de chaque côté du tunnel (plus besoin d'ifconfig à la main) |
161 | 19 | Jocelyn Dealande | * Ajout sur tunproxy.py de compteurs de débit |
162 | 19 | Jocelyn Dealande | * mémorise le traffic sur les x dernières tranches de n secondes (défaut 10 tranches de 1 seconde) |
163 | 19 | Jocelyn Dealande | * Affiche les moyennes et les max. |
164 | 19 | Jocelyn Dealande | * Compréhension de ce qui passe dans TUN : bien qu'étant un tunnel de niveau 3, il y a une pseudo-en-tête de L2, cf "doc officielle":http://www.mjmwired.net/kernel/Documentation/networking/tuntap.txt#102 (merci Laurent!) |
165 | 19 | Jocelyn Dealande | * discussion avec Laurent sur les intérêts de faire un tunnel L2 (qui rajoute pourtant l'overhead de l'en-tête L2), en bref : |
166 | 19 | Jocelyn Dealande | * évite de gérer les soucis spécifiques du niveau IP |
167 | 1 | Laurent GUERBY | * TUN ne supporte pas IPV6 par exemple ⦠|
168 | 23 | Jocelyn Dealande | |
169 | 23 | Jocelyn Dealande | |
170 | 23 | Jocelyn Dealande | h2. 5 nov. |
171 | 23 | Jocelyn Dealande | * Mise en place d'un dépôt git (gitolite) pour partager du code avec Fernando Alves de Sames Wireless : |
172 | 23 | Jocelyn Dealande | |
173 | 23 | Jocelyn Dealande | # Dépot public : (lecture-seule) |
174 | 1 | Laurent GUERBY | git clone git://rhizome-fai.tetaneutral.net/agregation.git |
175 | 6 | Jocelyn Dealande | |
176 | 23 | Jocelyn Dealande | h2. 28 oct. |
177 | 5 | Jocelyn Dealande | |
178 | 8 | Jocelyn Dealande | * Initiation python (découverte pour Yanick) |
179 | 15 | Jocelyn Dealande | * Commentaire intégral du tunproxy.py et premiers tests de ce dernier |
180 | 5 | Jocelyn Dealande | ** ping ok (+1ms) |
181 | 5 | Jocelyn Dealande | ** iperf à travers le tunnel : BP ~= celle de l'uplink ADSL. Le dernier datagrame ne reçoit pas d'ACK |
182 | 5 | Jocelyn Dealande | |
183 | 5 | Jocelyn Dealande | <pre> |
184 | 5 | Jocelyn Dealande | [ 3] local 10.0.0.2 port 50191 connected with 10.0.0.1 port 5001 |
185 | 5 | Jocelyn Dealande | [ ID] Interval Transfer Bandwidth |
186 | 5 | Jocelyn Dealande | [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec |
187 | 5 | Jocelyn Dealande | [ 3] Sent 893 datagrams |
188 | 13 | Yanick Delarbre | [ 3] WARNING: did not receive ack of last datagram after 10 tries. |
189 | 13 | Yanick Delarbre | </pre> |
190 | 13 | Yanick Delarbre | |
191 | 13 | Yanick Delarbre | h2. 2 novembre |
192 | 13 | Yanick Delarbre | |
193 | 13 | Yanick Delarbre | * Modification de la MTU pour éviter la fragmentation de paquet |
194 | 13 | Yanick Delarbre | |
195 | 13 | Yanick Delarbre | h1. Fonctionnalité |
196 | 1 | Laurent GUERBY | |
197 | 1 | Laurent GUERBY | * Ajouter plusieurs sockets sur le tunnel pour éviter le traffic shaping de la part d'un opérateur |