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

Fernando ALVES Fernando.alves at sameswireless.fr
Sam 12 Nov 12:12:01 CET 2011


Bonjour,


Le 11/11/2011 19:54, Laurent GUERBY a écrit :
> On Fri, 2011-11-11 at 18:54 +0100, Jocelyn Delalande wrote:
>> 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…
> Bonsoir,
>
> A priori pour ce projet on s'interesse au niveau 2 donc
> seulement au tap, pas la peine de jouer avec tun :).
>
> La documentation de /dev/tun est dans les sources du kernel :
>
> http://www.mjmwired.net/kernel/Documentation/networking/tuntap.txt
>
> <<
>   3.2 Frame format:
> 103	  If flag IFF_NO_PI is not set each frame format is:
> 104	     Flags [2 bytes]
> 105	     Proto [2 bytes]
> 106	     Raw protocol(IP, IPv6, etc) frame.
> Le seul flag defini dans les sources du 3.0.8 a l'air d'etre :
>
> ./include/linux/if_tun.h:#define TUN_PKT_STRIP	0x0001
> ./drivers/net/tun.c:			pi.flags |= TUN_PKT_STRIP;
>
> Probablement utiliser IFF_NO_PI donc.
>
>> 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 :)
> En cherchant une solution a un probleme particulier des membres de
> tetaneutral.net sur une ADSL je pense avoir une méthode alternative de
> tunnel aggregant : plutot que de faire du /dev/tun juste faire un tunnel
> UDP qui dispatche les paquets sur plusieurs connections UDP. Et ensuite
> lancer un simple openvpn (qui va gerer authentification et compression)
> par dessus ce tunnel UDP.
C'est ce que fait linkagreg,
il ouvre  plusieurs connexions UDP (Socket UDP) entre le client et le serveur,
l'interface tun (qui peut facilement être remplacé par tap), sert juste d'interface de communication avec le "kernel network".

Pour l'instant dans l'outil je me suis focalisé sur le transport des données,
toutes les autres parties sont pour l'instant en dure dans le code ou reste à développer
(authentification, gestion des signaux, routage pour support de multi client, optimisation...)

La prochaine phase que je pense ajouter est la fragmentation des paquets.

si vous voulez essayer, voila comment je l'utilise:

##############################
# VM Serveur eth0= 192.168.1.1
##############################
*./linkagreg -s -d -i tun10&
ip addr add 10.0.0.1/24 dev tun10
ip link set up dev tun10*

##############################
# VM Client eth0=192.168.1.2
# eth1=192.168.1.3
# ouverture de 2 tunnel UDP:
# 192.168.1.2<-->  192.168.1.1
# 192.168.1.3<-->  192.168.1.1
##############################
*./linkagreg -c 192.168.1.1 -f 192.168.1.2,192.168.1.3 -d -i tun10&
ip addr add 10.0.0.2/24 dev tun10
ip link set up dev tun10
*

PS: le projet a été développé avec l'IDE code::Block.

A+
Fernando


>
> J'ai un bout de code qui ne marche pas encore mais ca devrait pas
> tarder. Une piste de plus :).
>
> Laurent
>
>
> _______________________________________________
> projet-agregation mailing list
> projet-agregation at lists.tetaneutral.net
> http://lists.tetaneutral.net/listinfo/projet-agregation

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.tetaneutral.net/pipermail/projet-agregation/attachments/20111112/46a449ac/attachment.html>


More information about the projet-agregation mailing list