[projet-agregation] Format des paquets reçus dans un TUN

Jocelyn Delalande jocelyn.delalande at etu.utc.fr
Ven 11 Nov 18:54:13 CET 2011


Hello,

On travaille donc avec Yanick sur nos petits compteurs pour mesurer la 
BP des liens. On joue sur la base de tunproxy.py
(ci-joint la version bidouillée qui permet de montrer ce qui cloche).

On a un "souci", si on lit des paquets sur l'interface tun (réception 
via le tunnel) puis qu'on puis qu'on les injecte, pas de soucis, ça 
marche au poil. Maintenant, on veut récupérer la taille des paquets, ce 
qui nécessite de décoder l'header IP pour avoir le champ ip_len.

Vu qu'on est feignants, on utilise la lib pyip qui permet de décoder des 
paquets IP, on lui passe le buffer après avoir fait le receivefrom. La 
lib gueule en nous disant qu'elle ne veut pas d'un paquet IPv0… On 
vérifie en dumpant le contenu du paquet (juste après le recvfrom):

0000 00 00 08 00 45 00 00 54 ....E..T
0008 00 00 40 00 40 01 26 A7 .. at .@.&.
0010 0A 00 00 01 0A 00 00 02 ........
0018 08 00 1B A3 10 37 00 01 .....7..
0020 92 57 BD 4E 00 00 00 00 .W.N....
0028 B8 AB 05 00 00 00 00 00 ........
0030 10 11 12 13 14 15 16 17 ........
0038 18 19 1A 1B 1C 1D 1E 1F ........
0040 20 21 22 23 24 25 26 27 !"#$%&'
0048 28 29 2A 2B 2C 2D 2E 2F ()*+,-./
0050 30 31 32 33 34 35 36 37 01234567

On remarque le "45" caractéristique du début d'un paquet IP "standard" à 
la 5e colonne de la première ligne.
Effectivement, le paquet IP ne commence pas directement. il y a un "00 
00 08 00" qui traine. le 08 00 ressemble à un bout de header couche 2 
disant "le paquet de la couche inférieure est un paquet IPv4" 
(ethertype). les 4 premiers zéros restent un mystère pour nous…

D'où question : je comprend bien que ce pseudo-header de niveau 2 est 
éventuellement nécessaire, même sur un tun (donc niveau 3), mais ces 
pseudo en-têtes tun sont elles documentées quelque-part ? On ne trouve pas…

Pour l'instant on va se contenter de dropper ces premiers octets, mais 
on aimerait comprendre de manière précise ce qu'est ce truc.

Merci d'avance si vous avez des pistes :)

PS: Si vous aussi vous voulez vous aussi jouer avec les hexdump des 
paquets IP, je vous joint le source d'un tunproxy.py qui fait des 
hexdump de tous les paquets qu'il *reçoit* (attention les yeux). Il faut 
installer le paquet python-pyip au passage. Au passage, ce tunproxy 
configure lui-même les adresses suivantes pour les interfaces de tunnel :
- 10.0.0.1 pour le serveur
- 10.0.0.2 pour le client

-- 
   Jocelyn Delalande,
Étudiant Génie Informatique,
Université Technologique de Compiègne
tel : 06.21.96.86.99

-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: tunproxy.py
Type: text/x-python
Taille: 8252 octets
Desc: non disponible
URL: <http://lists.tetaneutral.net/pipermail/projet-agregation/attachments/20111111/751240fe/attachment.py>


More information about the projet-agregation mailing list