Configuration des Jumbo Frames

Qu'est-ce que c'est et à quoi ça sert

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 :

  • 6 entêtes/CRC et autres joyeusetés nécessaires aux divers protocoles
  • 6 acquittements
  • 6 calculs de CRC dans la couche Ethernet
  • 6 contrôles d’intégrité dans les couches TCP/IP

Donc, là où c’est possible, si on a des interfaces Giga supportant les jumbo-frames, les configurer c’est maximiser le débit !

Prérequis

  • L’un des patchs suivant : 112327-17 (Solaris 7), 111883-23 (Solaris 8), 112817-16 (Solaris 9)
  • Une carte réseau supportant les jumbo
  • Un switch réseau supportant les jumbo
  • Un réseau IP (ou un VLAN) sur lequel vous ne brancherez QUE des machines supportant le jumbo

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 !

Quelles sont les cartes supportées

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.

Côté switch

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 .

Côté Solaris

  • Ajouter les lignes suivantes au fichier /platform/`uname -m`/kernel/drv/nom_du_driver.conf (ex: /platform/sun4u/kernel.drv/ce.conf)
# Enable Jumbo Frames
accept-jumbo=1;
  • Modifier le fichier /etc/hostname.xxn (ex: /etc/hostname.ce0)
hostname_ou_@IP netmask + broadcast + mtu 9194 up
  • Rebooter votre serveur
  • Vérifier qu’il a bien pris en compte votre MTU à l’aide de la commande ifconfig

Vérification du fonctionnement

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 :

  • Aucune réponse au ping. Vous avez un soucis. :-) Vérifiez :
    • que vous n’avez pas un pare-feu qui bloque l’ICMP
    • que la machine que vous pinger n’est pas sur le même réseau avec un MTU plus petit
    • que la machine n’est pas sur un VLAN supportant les jumbo mais avec un MTU à 1500
  • Vous recevez un message de type
    ICMP Fragmentation needed and DF set from gateway //a.b.c.d//
    • vous avez tenté un ping vers une machine qui est sur un réseau ne supportant pas les jumbo
    • un routeur entre vous et cette machine ne supporte pas les jumbo
    • vous avez oublié de modifier le MTU de l’interface virtuelle du routeur inter-vlan
    • —- dans tout les cas, commencez par vous intéresser au routeur dont l’adresse est a.b.c.d
  • Vous avez des réponses correctes de type
    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

Liens externes

 
docs/base/reseau/jumbo.txt · Dernière modification: 20/11/2007 21:55 par ndorfsman