Solaris 10 propose deux modes de communication réseau pour les zones non-globales. Le premier mode consiste à laisser l'OS tout gérer lui-même, auquel cas les paquets émis et reçus par une zone transiteront de manière transparente par l'interface physique la plus adaptée. Le second mode consiste à dédier une interface à une zone non-globale, qui en aura alors l'usage exclusif, ainsi qu'un accès complet aux devices associées (permettant par exemple de lancer un snoop, ce qui est impossible en mode non dédié). Ce billet fait un rapide tour d'horizon de cette fonctionnalité, appelée ip-exclusive, et disponible depuis Solaris 10 8/07 (U4).

Configuration d'une zone ip-exclusive

Pour configurer une zone en ip-exclusive, rien de plus simple. Pour ajouter l'interface bge0 à mazone, par exemple :

# zonecfg -z mazone zonecfg:mazone> set ip-type=exclusive zonecfg:mazone> add net zonecfg:mazone:net> set physical=bge0 zonecfg:mazone:net> end zonecfg:mazone> exit

Le lecteur averti notera que le paramètre ip-type est global à la zone, et qu'on ne pourra donc pas mélanger des interfaces dédiées et partagées.

Les interfaces qui supportent l’ip-exclusive

Pour pouvoir dédier une interface à une zone non-globale, celle-ci doit fonctionner avec un driver GLDv3 (voir à ce sujet mon billet sur le réseau et la virtualisation sous Solaris 10). Il y a toutefois une exception, qui sera abordée dans le paragraphe suivant.

Pour voir si une interface est GLDv3 ou non, on utilise la commande suivante :

# dladm show-link eri0 type: legacy mtu: 1500 device: eri0 ce0 type: legacy mtu: 1500 device: ce0 ce1 type: legacy mtu: 1500 device: ce1

Les interfaces legacy ne sont pas GLDv3, les autres (généralement non-vlan) le sont.

Les interfaces qui supportent cette fonctionnalité sont les suivantes :

  • afe (Nevada build 73 et suivantes)
  • bge
  • ce (Nevada build 80 et suivantes, voir paragraphe suivant)
  • dfme (Nevada build 73 et suivantes)
  • e1000g
  • eri (Nevada build 73 et suivantes)
  • hme (Nevada build 73 et suivantes)
  • iprb (Nevada build 73 et suivantes)
  • ixgb
  • mxfe (Nevada build 73 et suivantes)
  • nge
  • nxge
  • qfe (Nevada build 73 et suivantes)
  • rge
  • rtls (Nevada build 73 et suivantes)
  • xge
  • ath (Nevada seulement)

Utilisation d'une interface ce en ip-exclusive

Bien que l'interface ce (Cassini Ethernet) soit toujours basée sur un driver non-GLDv3, le parc installé est considérable (ce type d'interface se retrouve en standard sur de nombreuses cartes mères) et une solution de contournement a été développée pour permettre d'utiliser cette interface en mode dédié.

Il faut pour cela appliquer les deux patchs suivants :

  • 118777-12 (SPARC) ou 118778-11 (x86)
  • 137042-01 (SPARC) ou 137043-01 (x86)

Le premier est un patch spécifique à l'interface ce, et le second patch le daemon zoneadmd, pour qu'il altère un ioctl quand l'interface concernée n'est pas GLDv3.

Notez que l'interface apparaîtra toujours en tant que legacy via dladm.