[projet-agregation] linkagreg (était Format des paquets reçus dans un TUN)
Jocelyn Delalande
jocelyn.delalande at etu.utc.fr
Sam 12 Nov 14:54:56 CET 2011
Salut,
> Avec la fragmentation des paquets il ne devrait plus y avoir de
> problème de MTU/MSS entre le client et serveur, théoriquement devrait
> même accepter
> un MTU > 1500 (a tester).
Prenons un cas concret, un programme veut transmettre via TCP 2000
octets sur une interface TUN
1) Cas avec une MTU volontairement plus faible (ex: 1400) sur
l'interface TUN (sans frag. de la part de linkagreg) :
- TCP découpe les données en 2 segments et les passe à la couche IP ;
- les 2 paquets sont lus par l'application de tunnel et sont injectés
dans le tunnel UDP, la pile réseau rajoute tous ses headers (UDP+IP+MAC);
- vu qu'on a choisi une MTU volontairement plus faible pour le tun,
lorsque la pile réseau envoie ces paquets encapsulés via l'interface
physique, ils ne sont pas redécoupés une fois de plus. 2 trames
seulement sortent par l'interface réseau
2) Cas où linkagreg gère la fragmentation et où l'on laisse la MTU du
tun à 1500
- TCP découpe son flux le paquets en 2 segments et les passe à la
couche IP ;
- les 2 paquets sont lus par l'application de tunnel, le premier est
découpé en 2. Les 3 paquets obtenus sont injectés dans le tunnel UDP, la
pile réseau rajoute tous ses headers (UDP+IP+MAC);
- la non plus, vu que le tunnel gère la fragmentation, aucune
fragmentation supplémentaire n'est faite pour transmettre le paquet sur
l'interface physique.
Ce dont je ne suis pas convaincu là c'est que pour moi
- si on set la MTU du tun/tap correctement, on transmet 2 paquets
- si on utilise de la fragmentation, on transmet 3 paquets, et on
ajoute un délai/coût de traitement/source d'erreurs.
On peut y voir une question de vitesse (on splite les gros paquets pour
les envoyer en parallèle). Ceci-dit entre ça et faire la répartition
paquet/paquet, je ne suis pas persuadé que le bénéfice soit énorme, et
je suppose qu'il est négatif lorsque le lien est chargé ou qu'il y a
des écarts de latence entre les deux liens.
Je ne demande qu'à être convaincu ceci-dit, quelque-chose m'échappe
sûrement :-)
Bonne journée,
Jocelyn
>
> Exemple:
> 1) coté serveur le "network Kernel" écrit un paquet de 1500 octets sur
> l'interface tun/tap créé par linkagreg,
> 2) linkagreg lit ce paquet de 1500 octets le divise en 2
> (2*(750+header linkagreg)) et les transmets a travers 2 tunnel UDP a
> l'appli linkagreg coté client.
> 3) coté client linkagreg reçoit 2 paquets de 750 octets + header
> linkagreg, il ré-assemble ces 2 paquets en un paquet de 1500 octet et
> l’écrit sur l'interface tun/tap qu'il a créé.
Quel est le bénéfice réel de couper tous les paquets en 2 ?
>
> Coté client et serveur le "network Kernel" pense avoir à faire à une
> interface de 1500 octets de MTU (comme pour une interface ethernet).
>
> http://irp.nain-t.net/doku.php/140pppoe:070_mtu_mss_etc
Bon lien, merci :) Ok pour le PMTU qui se foire dans la plupart des cas
à cause du filtrage d'ICMP. J'avais oublié ce point.
>
> Fernando
>
>>
>>
>> Jocelyn
>>
>>
>>>
>>>
>>> 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
>>> *
>>
>>
>>
>
>
>
--
Jocelyn Delalande,
Étudiant Génie Informatique,
Université Technologique de Compiègne
tel : 06.21.96.86.99
More information about the projet-agregation
mailing list