Les trames ethernet font normalement au maximum 1522 octets. Si on enlève les diverses entêtes et CRC, il ne nous en reste plus que 1500 pour le niveau 3, à savoir le protocole IP en général. Avec l’arrivée des réseaux Gigabits, on cherche à augmenter la taille des paquets afin de gagner du temps et du cycle CPU. Pour un paquet de 9216 octets contre les 6 paquets nécessaires de 1522 on va gagner :
Donc, là où c’est possible, si on a des interfaces Giga supportant les jumbo-frames, les configurer c’est maximiser le débit !
Certains d’entre-vous se demandent certainement à ce stade pourquoi il faut isoler ces machines sur un réseau IP spécifique. Je ne sais pas clairement si ceci fait partie d’une RFC quelconque, mais cela fait partie des prérequis d’un certain nombre de constructeurs...et pour avoir tenté un VLAN mixte, je peux vous assurer que vous aurez des soucis !
Si votre carte est une 10/100 Mbits/s, oubliez les jumbo frames, le principe même n’est pas adapté à un réseau à cette vitesse.
En revanche, pour les cartes 1 Gb/s ou même 10 Gb/s, le support des jumbo dépend de la carte ET du driver. Il va donc vous falloir vérfier ces points dans la documentation de vos cartes.
Pour ce qui est des cartes Sun le document Sunsolve 41665 nous affirme que le jumbo est supporté sur toutes les cartes GigaSwift (cuivre et fibre). Attention toutefois aux cartes intégrées.
Avant de toucher à la configuration de vos machines, commencez par vous charger de la configuration du switch. En général, il suffit de modifier le MTU des interfaces en le positionnant à 9216. L’interface et la syntaxe seront différentes en fonction du switch que vous utilisez. Si vous utilisez un VLAN n’oubliez pas de modifier le MTU de l’interface correspondant au routeur inter-vlan .
# Enable Jumbo Frames accept-jumbo=1;
hostname_ou_@IP netmask + broadcast + mtu 9194 up
ping fera l’affaire pour ce test trivial...mais avec une subtilité.
L’idée est d’envoyer un ping avec une taille de paquet ICMP qui ne tient pas dans la trame ethernet standard (1500) via l’interface configurée en jumbo frame. Ca donne quelque-chose comme ça :
/usr/sbin/ping -s ma_machine_distante 3000
Plusieurs cas risquent de se présenter :
ICMP Fragmentation needed and DF set from gateway //a.b.c.d//
3008 bytes from ma_machine_distante : icmp_seq=1. time=0. ms
Passez à l’étape suivante
Vous êtes maintenent sûr qu’un paquet ICMP de 3000 octets transite correctement jusqu’à votre deuxième machine supportant les jumbo. Cool. Mais est-ce que ce paquet ICMP est fragmenté ou passe-t-il dans une seule trame Ethernet ? Solaris maintient dans sa table de routage la taille maximum des trames qu’il peut envoyer à une machine distante. Donc, rien ne peut affirmer que le paquet n’est pas fragmenté tant que vous n’aurez pas consulté cette table :
$ netstat -arv | grep machine_sans_jumbo machine_sans_jumbo 255.255.255.255 192.168.1.254 ce5 1500* 0 1 UHA 8 0 $ netstat -arv | grep machine_avec_jumbo machine_avec_jumbo 255.255.255.255 192.168.1.254 ce5 9194* 0 3 UHA 781 0