J’ai été pas mal occupé dernièrement sur la mise en place de vio servers. J’en vois enfin le bout et je pense donc en faire une série de billets. Je commence par la mise en place de l’Etherchannel sur un vio server. En fait, je devrais plutôt parler de Link Aggregation (norme IEEE 802.3ad) mais le terme Etherchannel est sans doute plus parlant pour les gens du monde aix (merci smitty etherchannel :-). Je donne les commandes sous VIOS mais la logique est la même sous AIX.
description sommaire de la technologie
Le Link aggregation permet d’agréger plusieurs interfaces réseaux physiques en une interface logique disposant de la bande passante équivalente à l’ensemble des interfaces physiques agrégés et pouvant continuer à fonctionner lorsqu’une des interfaces est indisponibles ou perd sa connection.
La norme 802.3ad est un standard IEEE pour normaliser la manière dont les liens sont agrégés.
L’utilisation du protocole LACP (Link Aggregation Control Protocol) permet une configuration dynamique de l’agrégation par l’envoi de paquet LACP (nommé LACPDU pour Link Aggregation Control Protocol Dat Unit) à l’autre élément de la paire.
Voici des liens sur des descriptions plus détaillées de la technologie :
Configuration du switch Cisco
Je n’irai pas dans le détail de la configuration des switchs car c’est loin d’être ma spécialité. Les informations de cette section sont là à titre informatif pour un administrateur système afin de faciliter les échanges avec l’administrateur réseau lors des debugs de configuration.
Il faut préciser à l’administrateur réseau que l’on veut utiliser le LACP. Sur certains switchs Cisco le protocole par défaut est PAgP mais, à ma connaissance, il n’est pas utilisé pour faire de l’agrégation avec un serveur.
Pour faciliter le debug des problèmes de configuration, il est intéressant d’avoir la configuration des ports faisant partie du channel-group (Link Aggregation group).
Voici un extrait de la configuration des ports d’un groupe(je ne reprend que les paramètres pertinents pour le Link Aggregation) :
interface GigabitEthernet2/44
description vio1
speed 1000
duplex full
channel-group 20 mode active
interface GigabitEthernet2/46
description vio2
speed 1000
duplex full
channel-group 20 mode active
Description des paramètres :
interface: précise le numéro du port du switch
description: un commentaire sur l’utilisation du port
speed: vitesse du port. Dans le cas d’un LA, il est conseillé de forcer la vitesse.
duplex: duplex du port. Dans le cas d’un LA, il est conseillé le duplex du port à full.
channel-group : spécifie le numéro de groupe auquel les ports appartiennent. Seul des ports appartenant au même groupe peuvent s’agréger ensemble.
mode : Le mode active correspond à l’utilisation du LACP.
Les paramètres speed et duplex de chaque port faisant partie du même channel-group doivent être identiques (des vitesses et modes différents sont en théorie supportés par le protocole 802.3ad mais vivement déconseillées).
A noter aussi que les ports utilisés doivent se trouver sur le même switch physique.
Remarque : Selon le type et le constructeur du switch, il peut exister des technologies permettant de s’affranchir de cette limitation (comme SMLT, DSMLT et RSMLT pour Nortel). A voir avec l’administrateur réseau.
Configuration du VIO Server
La section ci-dessous utilise les commandes VIOS pour réaliser la configuration mais on pourrait effectuer les mêmes opérations à travers les commandes AIX. On vérifie les cartes ethernet disponibles pour réaliser le Link Aggregation :
$ lsdev -type adapter
name status description
ent0 Available 2-Port 10/100/1000 Base-TX PCI-X Adapter (1410890
ent1 Available 2-Port 10/100/1000 Base-TX PCI-X Adapter (1410890
ent2 Available 2-Port 10/100/1000 Base-TX PCI-X Adapter (1410890
ent3 Available 2-Port 10/100/1000 Base-TX PCI-X Adapter (1410890
ent4 Available Virtual I/O Ethernet Adapter (l-lan)
ent5 Available Virtual I/O Ethernet Adapter (l-lan)
fcs0 Available FC Adapter
fcs1 Available FC Adapter
fcs2 Available FC Adapter
fcs3 Available FC Adapter
scsi0 Available Wide/Ultra-3 SCSI I/O Controller
scsi1 Available Wide/Ultra-3 SCSI I/O Controller
vhost0 Available Virtual SCSI Server Adapter
vhost1 Available Virtual SCSI Server Adapter
vsa0 Available LPAR Virtual Serial Adapter
Pour identifier les ports à utiliser, il vaut mieux se baser sur les emplacements physiques des cartes, on utilise donc la commande suivante :
$ lsdev -dev ent0 -slot
# Slot Description Device(s)
U5791.001.992001F-P1-C01 PCI-X capable, 64 bit, 133MHz slot ent0 ent1
$ lsdev -dev ent2 -slot
# Slot Description Device(s)
U5791.001.992008G-P1-C01 PCI-X capable, 64 bit, 133MHz slot ent2 ent3
Comme sur les ports du switch, il est vivement recommandé de positionner le débit et le duplex du port. Ici à 1Gb full duplex. On active aussi les jumbo frames pour améliorer le débit maximum.
$ chdev -dev ent0 -attr media_speed=1000_Full_Duplex jumbo_frames=yes
ent0 changed
$ chdev -dev ent2 -attr media_speed=1000_Full_Duplex jumbo_frames=yes
ent2 changed
Une fois les interfaces configurés, il ne reste plus qu’à créer l’interface ieee 802.3ad
$ mkvdev -lnagg ent0 ent2 -attr mode=8023ad
ent5 Available
en5
et5
Description des paramètres :
-lnagg : spécifie les interfaces physiques qui vont être agrégés
-attr mode=8023ad : on spécifie que l’on utilise le mode d’agrégation 802.3ad.
Test de la configuration
Le plus simple est d’attribuer une adresse IP à la nouvelle interface sur le VIO Server pour qu’elle devienne active.
Remarque : cette adresse IP ne sera utilisé que pour les tests et devra être supprimé par la suite.
Attribution d’une adresse IP de test :
$ mktcpip -hostname test -inetaddr 195.51.51.67 -netmask 255.255.255.0 -interface en5
Il suffit ensuite de regarder son statut avec la commande netstat. La commande étant plutôt verbeuse, je me contenterais d’afficher les sections intéressantes et je ferais des interludes entre elles pour décrire les points intéressants. La commande est :
$ netstat -cdlistats
ETHERNET STATISTICS (ent5) :
Device Type: IEEE 802.3ad Link Aggregation
Hardware Address: 00:09:6b:6e:17:72
On voit apparaitre l’interface logique ent5 802.3ad ainsi que sa mac address.
Ensuite on voit apparaitre les statistiques concernant l’interface :
Statistics for every adapter in the IEEE 802.3ad Link Aggregation:
------------------------------------------------------------------
Number of adapters: 2
Operating mode: Standard mode (IEEE 802.3ad)
IEEE 802.3ad Link Aggregation Statistics:
Aggregation status: Aggregated
Received LACPDUs: 60877
Transmitted LACPDUs: 56256
Received marker PDUs: 0
Transmitted marker PDUs: 0
Received marker response PDUs: 0
Transmitted marker response PDUs: 0
Received unknown PDUs: 0
Received illegal PDUs: 0
Hash mode: Destination IP address
Les paramètres intéressants sont :
Number of adapters: cela indique que l’on a bien 2 interfaces physiques (dans notre cas).
Operating mode: le mode d’agrégation utilisé.
Les statistiques suivantes concernent le protocole 802.3ad :
Aggregation status: C’est LA statistique la plus importante. Cela donne le statut de l’agrégation. Tant que ce statut est différent de Aggregated, l’agrégation de lien n’est pas fonctionnelle.
Received LACPDUs : le nombre de paquets LACPDU reçu. Intéressant pour debugger.
Transmitted LACPDUs : le nombre de paquets LACPDU envoyés. Intéressant pour debugger.
Ensuite on obtient les statistiques par interface physiques :
-------------------------------------------------------------
ETHERNET STATISTICS (ent0) :
Device Type: 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902)
Hardware Address: 00:09:6b:6e:17:72
Ici on a le modèle physique ainsi que sa Mac Address.
Ensuite les informations nous donnant un statut sur le lien physique :
Link Status : Up
Media Speed Selected: 1000 Mbps Full Duplex
Media Speed Running: 1000 Mbps Full Duplex
La ligne Media Speed Running donne l’état actuel du lien. Il est important d’avoir le même débit en duplex Full sur les interfaces physiques.
On arrive ensuite aux informations les plus importantes pour le debug d’un problème de configuration. Le statut et les statistiques ieee 802.3ad par port.
IEEE 802.3ad Port Statistics:
-----------------------------
Actor System Priority: 0x8000
Actor System: 00-09-6B-6E-17-72
Actor Operational Key: 0xBEEF
Actor Port Priority: 0x0080
Actor Port: 0x0001
Actor State:
LACP activity: Active
LACP timeout: Long
Aggregation: Aggregatable
Synchronization: IN_SYNC
Collecting: Enabled
Distributing: Enabled
Defaulted: False
Expired: False
Partner System Priority: 0x8000
Partner System: 00-0E-D7-1F-29-00
Partner Operational Key: 0x0014
Partner Port Priority: 0x8000
Partner Port: 0x002F
Partner State:
LACP activity: Active
LACP timeout: Long
Aggregation: Aggregatable
Synchronization: IN_SYNC
Collecting: Enabled
Distributing: Enabled
Defaulted: False
Expired: False
Received LACPDUs: 30439
Transmitted LACPDUs: 28128
Received marker PDUs: 0
Transmitted marker PDUs: 0
Received marker response PDUs: 0
Transmitted marker response PDUs: 0
Received unknown PDUs: 0
Received illegal PDUs: 0
L’Actor system est l’identifiant du serveur AIX. Il sera donc identique pour l’ensemble des ports du Link Aggregation.
L’Actor Operational Key est la clé d’identification du Link Aggregation sur le serveur. Clé unique par LA.
Le Partner system est l’identifiant du switch.
Le Partner Operational Key est la clé d’identification du Link Aggregation sur le switch.
Il faut vérifier que les paramètres Actor Operational Key, Partner system et Partner Operational Key sont identiques pour toutes les interfaces faisant partie du même LA. L’Actor System ne change pas quand on reste sur le même serveur physique.
Chaque port (aussi bien coté switch que serveur ) doit avoir les états suivants :
LACP activity doit être à Active. Cela indique que l’on utilise LACP et le mode 802.3ad
Aggregation doit être à Aggregatable. Cela indique que le port peut faire partie d’un LA.
Synchronization doit être à IN SYNC. Cela indique que les ports du serveur et du switch sont synchronisés.
Conclusion
Une fois la configuration des ports switchs vérifiés, le problème le plus commun sur lequel je suis tombé est d’avoir les deux ports connectés physiquement à deux switchs différents(inversion lors du cablage). Le fait de vérifier le Partner System permet d’éviter ce genre de désagrément.
A noter aussi, que le mode IEEE 802.3ad nécessite quelques secondes à se mettre en place après activation de l’interface. C’est due à la négociation LACP qui nécessite que quelques paquets LACPDU soit échangés avant que la configuration soit activé. On peut lancer un ping sur l’interface pour accélérer l’établissement de l’agrégation.