Project

General

Profile

Projet agregation » History » Version 19

Jocelyn Dealande, 11/11/2011 11:54 PM

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 4 Jocelyn Dealande
12 4 Jocelyn Dealande
h2. Test de tunproxy.py
13 4 Jocelyn Dealande
14 4 Jocelyn Dealande
On utilise "tunproxy.py":http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py. Entre 2 machines
15 4 Jocelyn Dealande
* client-adsl (une machine chez nous)
16 4 Jocelyn Dealande
* gateway (la VM)
17 4 Jocelyn Dealande
18 4 Jocelyn Dealande
h3. Sur la gateway (= VM ttn)
19 4 Jocelyn Dealande
20 4 Jocelyn Dealande
Démarrer le tunnel, il crée lui-même une interface _toto0_ (détruite à la sortie).
21 4 Jocelyn Dealande
22 4 Jocelyn Dealande
<pre>
23 4 Jocelyn Dealande
 ./tunproxy.py -s 6000
24 11 Jocelyn Dealande
 ifconfig toto0 10.0.0.1/24 mtu 1468
25 4 Jocelyn Dealande
</pre>
26 1 Laurent GUERBY
27 15 Jocelyn Dealande
La MTU est calculée comme suit : 
28 1 Laurent GUERBY
29 11 Jocelyn Dealande
  MTU de l'iface virtuelle  = MTU  de l'iface physique - taille_max(header IP) - taille(header UDP)
30 15 Jocelyn Dealande
  MTU de l'iface virtuelle = 1500 - 24 - 8
31 11 Jocelyn Dealande
32 17 Yanick Delarbre
http://www.commentcamarche.net/faq/7185-introduction-au-mtu
33 11 Jocelyn Dealande
34 4 Jocelyn Dealande
h3. Sur le client
35 4 Jocelyn Dealande
36 4 Jocelyn Dealande
37 4 Jocelyn Dealande
<pre>
38 4 Jocelyn Dealande
 ./tunproxy.py -c rhizome-fai.tetaneutral.net:6000
39 12 Yanick Delarbre
 ifconfig toto0 10.0.0.2/24 mtu 1468
40 4 Jocelyn Dealande
</pre>
41 4 Jocelyn Dealande
42 4 Jocelyn Dealande
Tout le trafic vers les adresses en 10.0.0.x passera par le tunnel.
43 4 Jocelyn Dealande
44 4 Jocelyn Dealande
* http://lists.tetaneutral.net/listinfo/projet-agregation
45 1 Laurent GUERBY
* http://chiliproject.tetaneutral.net/issues/16
46 1 Laurent GUERBY
47 15 Jocelyn Dealande
Un test de perf sur un téléchargement d'un fichier de 40Mio donne :
48 15 Jocelyn Dealande
49 15 Jocelyn Dealande
* avec tunnel : 909kb/s
50 15 Jocelyn Dealande
* sans tunnel : 942kb/s
51 15 Jocelyn Dealande
52 11 Jocelyn Dealande
h1. Petits points techniques…
53 11 Jocelyn Dealande
54 11 Jocelyn Dealande
h2. Que mesure iperf et comment (en UDP) ?
55 11 Jocelyn Dealande
56 1 Laurent GUERBY
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.*
57 1 Laurent GUERBY
58 5 Jocelyn Dealande
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.
59 1 Laurent GUERBY
60 1 Laurent GUERBY
61 15 Jocelyn Dealande
h2. Pourquoi iperf ne fonctionne pas bien (plein de pertes) en TCP avec une mauvaise MTU ?
62 15 Jocelyn Dealande
Les faits, lorsque la MTU de l'interface de tunnel est à 0 :
63 1 Laurent GUERBY
64 15 Jocelyn Dealande
* iperf -c 10.0.0.1 ne fonctionne pas bien, à se demander si la fragmentation IP fonctionne (ne se termine jamais, on ne voit pas de paquets revenir vers le client)
65 15 Jocelyn Dealande
* un wget se foire comme iperf
66 16 Jocelyn Dealande
* ping -s 1400 10.0.0.1 fonctionne au poil)
67 17 Yanick Delarbre
68 17 Yanick Delarbre
h2. Quelques outils réseaux bien pratique
69 17 Yanick Delarbre
70 17 Yanick Delarbre
* tcpdump | http://openmaniak.com/fr/tcpdump.php
71 17 Yanick Delarbre
<pre bash>
72 17 Yanick Delarbre
tcpdump -D #Interfaces réseaux disponibles pour la capture
73 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
74 17 Yanick Delarbre
tcpdump icmp #Affiche tout le trafic associé au protocole icmp
75 17 Yanick Delarbre
</pre>
76 17 Yanick Delarbre
* ping | http://www.bortzmeyer.org/ping-taille-compte.html
77 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
78 17 Yanick Delarbre
* hping3
79 17 Yanick Delarbre
<pre bash>
80 17 Yanick Delarbre
hping --syn -p 80 --data 1200 10.0.0.1 #Envoie de paquet tcp syn sur le port 80 de taille 1200
81 17 Yanick Delarbre
</pre>
82 5 Jocelyn Dealande
83 15 Jocelyn Dealande
84 10 Jocelyn Dealande
h1. Journal (à partir du 28 oct)
85 9 Jocelyn Dealande
86 6 Jocelyn Dealande
Activités du projet de Yanick & Jocelyn (TX)
87 1 Laurent GUERBY
88 19 Jocelyn Dealande
h2. 11 nov.
89 19 Jocelyn Dealande
90 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).
91 19 Jocelyn Dealande
* Configuration auto des adresses IP de chaque côté du tunnel (plus besoin d'ifconfig à la main)
92 19 Jocelyn Dealande
* Ajout sur tunproxy.py de compteurs de débit 
93 19 Jocelyn Dealande
  * mémorise le traffic sur les x dernières tranches de n secondes (défaut 10 tranches de 1 seconde)
94 19 Jocelyn Dealande
  * Affiche les moyennes et les max.
95 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!)
96 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 :
97 19 Jocelyn Dealande
  * évite de gérer les soucis spécifiques du niveau IP
98 19 Jocelyn Dealande
  * TUN ne supporte pas IPV6 par exemple …
99 19 Jocelyn Dealande
100 19 Jocelyn Dealande
101 5 Jocelyn Dealande
h2.  28 oct. 
102 6 Jocelyn Dealande
103 12 Yanick Delarbre
* Initiation python (découverte pour Yanick ET Jocelyn) 
104 5 Jocelyn Dealande
* Commentaire intégral du tunproxy.py et premiers tests de ce dernier
105 8 Jocelyn Dealande
** ping ok (+1ms)
106 15 Jocelyn Dealande
** iperf à travers le tunnel : BP ~= celle de l'uplink ADSL. Le dernier datagrame ne reçoit pas d'ACK
107 5 Jocelyn Dealande
108 5 Jocelyn Dealande
<pre>
109 5 Jocelyn Dealande
[  3] local 10.0.0.2 port 50191 connected with 10.0.0.1 port 5001                        
110 5 Jocelyn Dealande
[ ID] Interval       Transfer     Bandwidth                                              
111 5 Jocelyn Dealande
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec                                         
112 5 Jocelyn Dealande
[  3] Sent 893 datagrams                                                                 
113 5 Jocelyn Dealande
[  3] WARNING: did not receive ack of last datagram after 10 tries.
114 5 Jocelyn Dealande
</pre>
115 13 Yanick Delarbre
116 13 Yanick Delarbre
h2. 2 novembre
117 13 Yanick Delarbre
118 13 Yanick Delarbre
* Modification de la MTU pour éviter la fragmentation de paquet
119 13 Yanick Delarbre
120 13 Yanick Delarbre
h1. Fonctionnalité
121 13 Yanick Delarbre
122 13 Yanick Delarbre
* Ajouter plusieurs sockets sur le tunnel pour éviter le traffic shaping de la part d'un opérateur