5.12. Configurez les runners de teamd
Les runners sont des unités de code qui sont ajoutées dans le démon de Team, quand une instance du démon est créée. Pour obtenir une introduction aux runners de
teamd
, voir Section 5.4, « Comprendre le démon de Network Teaming et les "Runners" ».
5.12.1. Configuration du runner de diffusion
Pour configurer le runner de diffusion, à l'aide d'un éditeur, en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": {"name": "broadcast"}, "ports": {"em1": {}, "em2": {}} }
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.2. Configuration du runner dynamique
Le runner dynamique se comporte de la même façon que le runner roundrobin.
Pour configurer le runner dynamique, à l'aide d'un éditeur, en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": {"name": "random"}, "ports": {"em1": {}, "em2": {}} }
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.3. Configuration du runner roundrobin
Pour configurer le runner roundrobin, à l'aide d'un éditeur, en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": {"name": "roundrobin"}, "ports": {"em1": {}, "em2": {}} }Configuration de base de roundrobin
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.4. Configuration du runner activebackup
Le runner activebackup peut utiliser tous les link-watchers afin de déterminer l'état des liens dans un regroupement. L'un des exemples suivants peut être ajouté au fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool" }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }L'exemple de configuration utilise le runner active-backup avec ethtool comme link watcher. Le port em2 a une plus grande priorité. Le drapeau em1 (sticky) est rendu actif, et le demeurre tant que le lien est actif lui-même.
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool" }, "ports": { "em1": { "prio": -10, "sticky": true, "queue_id": 4 }, "em2": { "prio": 100 } } }L'exemple de configuration ajoute un ID de file d'attente correspondant à
4
. Il utilise le runner active-backup avec ethtool comme link watcher. Le port em2 a une plus grande priorité. Le drapeau em1 (sticky) est rendu actif, et le demeurre tant que le lien est actif.
Pour configurer le runner activebackup, à l'aide d'ethtool comme link-watcher et y appliquer un délai, en utilisant un éditeur en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool", "delay_up": 2500, "delay_down": 1000 }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }L'exemple de configuration utilise le runner active-backup avec ethtool comme link watcher. Le port em2 a une plus grande priorité. Le drapeau sticky veille à ce que si em1 est rendu actif, il le demeure quand le lien est actif. Les changements de liens ne sont pas propagés par le runner immédiatement, mais des délais s'appliquent.
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.5. Configuration du runner d'équilibrage des charges
Ce runner peut être utilisé pour deux types d'équilibrage de charge, en mode actif et passif. En mode actif, un rééquilibrage constant du trafic s'effectue en utilisant des statistiques de trafic récents pour répartir le trafic aussi uniformément que possible. En mode statique, les flux de trafic sont répartis au hasard sur les liens disponibles. Cela favorise la vitesse d'exécution en raison de la réduction de la charge de traitement. C'est dans les applications de trafic de haut volume que c'est souvent apprécié, car le trafic est généralement constitué de plusieurs flux de données distribués au hasard entre les liens disponibles, et de cette manière, le partage des charges s'effectue sans intervention de la part de
teamd
.
Pour configurer le runner d'équilibrage des charges en transmission passive (Tx), à l'aide d'un éditeur, en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": { "name": "loadbalance", "tx_hash": ["eth", "ipv4", "ipv6"] }, "ports": {"em1": {}, "em2": {}} }Configuration de l'équilibrage des charges de transmission passive (Tx) basé hachage.
Pour configurer le runner d'équilibrage des charges en transmission active (Tx), à l'aide d'un éditeur, en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": { "name": "loadbalance", "tx_hash": ["eth", "ipv4", "ipv6"], "tx_balancer": { "name": "basic" } }, "ports": {"em1": {}, "em2": {}} }Configuration de l'équilibrage des charges de transmission active (Tx) à l'aide d'un équilibreur des charges de base.
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.6. Configuration du runner LACP (802.3ad)
Pour configurer le runner LACP, à l'aide d'ethtool comme link-watcher, en utilisant un éditeur en tant qu'utilisateur
root
, ajouter ce qui suit dans le fichier de configuration au format JSON du regroupement :
{ "device": "team0", "runner": { "name": "lacp", "active": true, "fast_rate": true, "tx_hash": ["eth", "ipv4", "ipv6"] }, "link_watch": {"name": "ethtool"}, "ports": {"em1": {}, "em2": {}} }La configuration de la connexion à un homologue pouvant utiliser le protocole link aggregation control protocol (LACP). Le runner LACP doit utiliser ethtool pour surveiller l'état d'un lien. Il ne sert à rien d'utiliser n'importe quelle autre méthode de surveillance des liens, mise à part ethtool parce que, par exemple, dans le cas de arp_ping, le lien n'apparaissait pas ; la raison étant que le lien doit être tout d'abord établi, et seulement après, les paquets, ARP inclus, peuvent passer. L'utilisation de ethtool empêche cela, car il surveille chaque couche de liens individuellement.
L'équilibrage des charges actif est possible dans ce runner de la même façon qu'il est possible dans le runner d'équilibrage des charges. Pour activer l'équilibrage des charges de transmission active (Tx), ajouter la section suivante :
"tx_balancer": { "name": "basic" }
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.7. Configurer le monitoring des états de liens
Les méthodes suivantes de surveillance des états de liens sont disponibles. Pour implémenter une des méthodes, ajouter la chaîne de format JSON au fichier de configuration de format JSON de Team, à l'aide de l'éditeur, en tant qu'utilisateur
root
.
5.12.7.1. Configurer Ethtool pour le monitoring des états de liens
Pour ajouter ou modifier un délai existant, en millisecondes, entre le lien à venir et le runner qui est notifié à ce sujet, ajoutez ou modifiez un article comme suit :
"link_watch": { "name": "ethtool", "delay_up": 2500 }
Pour ajouter ou modifier un délai existant, en millisecondes, entre le lien en voie de désactivation et le runner qui est notifié à ce sujet, ajoutez ou modifiez un article comme suit :
"link_watch": { "name": "ethtool", "delay_down": 1000 }
5.12.7.2. Configurer ARP Ping pour le monitoring d'états de liens
Le démon team
teamd
envoie une demande ARP REQUEST à une adresse tout en fin de lien afin de déterminer si le lien est actif. La méthode utilisée est la même que celle de l'utilitaire arping, sauf qu'il n'est pas utilisé.
Préparer un fichier contenant la nouvelle configuration en format JSON sur le modèle suivant :
{ "device": "team0", "runner": {"name": "activebackup"}, "link_watch":{ "name": "arp_ping", "interval": 100, "missed_max": 30, "source_host": "192.168.23.2", "target_host": "192.168.23.1" }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }Cette configuration utilise arp_ping comme link watcher. L'option
missed_max
correspond à la valeur limite du nombre maximal de réponses manquées (réponses ARP, par exemple). Doit être combiné avec l'option interval
afin de déterminer la durée totale avant qu'un lien puisse être signalé comme étant inactif.
Pour télécharger une nouvelle configuration d'un port em2 de regroupement, à partir d'un fichier contenant une configuration JSON, utilisez la commande suivante en tant qu'utilisateur
root
:
~]# port config update em2 JSON-config-fileNotez que l'ancienne configuration sera remplacée et que toutes les options omises seront réinitialisées aux valeurs par défaut. Voir la page de manuel
teamdctl(8)
pour obtenir plusieurs exemples de commandes d'outils de contrôle de démons de team.
5.12.7.3. Configurer IPv6 NA/NS pour le monitoring des états de liens
{ "device": "team0", "runner": {"name": "activebackup"}, "link_watch": { "name": "nsna_ping", "interval": 200, "missed_max": 15, "target_host": "fe80::210:18ff:feaa:bbcc" }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }
Pour configurer l'intervalle entre les paquets NS/NA, ajouter ou modifier une section, comme suit :
"link_watch": { "name": "nsna_ping", "interval": 200 }La valeur correspond à un nombre positif en millisecondes. Elle doit être choisie en conjonction à l'option
missed_max
pour déterminer la durée totale avant qu'un lien soit signalé comme étant inactif.
Pour configurer le nombre maximum de paquets de réponses NS/NA pour permettre de rapporter que le lien est inactif, ajouter ou modifier une section, comme suit :
"link_watch": { "name": "nsna_ping", "missed_max": 15 }Nombre maximal de paquets de réponse NS/NA manquées. Si ce nombre est dépassé, le lien est signalé comme étant inactif. L'option
missed_max
correspond à la valeur limite du nombre maximal de réponses manquées (réponses ARP, par exemple). Doit être combiné avec l'option interval
afin de déterminer la durée totale avant qu'un lien puisse être signalé comme étant inactif.
Pour configurer le nom d'hôte qui est résolu en adresse cible
IPv6
de paquets NS/NA, ajouter ou modifier une section, comme suit :
"link_watch": { "name": "nsna_ping", "target_host": "MyStorage" }L'option « target_host » contient le nom d'hôte à convertir en adresse
IPv6
qui sera utilisée comme adresse cible pour les paquets NS/NA. Une adresse IPv6
pourra être utilisée à la place du nom d'hôte.
Veuillez consulter la page man
teamd.conf(5)
pour plus d'informations.
5.12.8. Configurer Sélection de port de substitution
Le port physique qui transmet une image est normalement sélectionné par la partie du noyau du pilote de l'agrégat (team) et n'est pas pertinent à l'utilisateur ou à l'administrateur système. Le port de sortie est sélectionné à l'aide des politiques du mode d'agrégat sélectionné (
teamd
runner), À l'occasion, toutefois, il est utile de diriger certaines classes de trafic sortant vers certaines interfaces physiques pour appliquer des politiques un peu plus complexes. Par défaut, le pilote team est sensible aux files d'attente multiples et 16 files d'attente sont créées lors de l'initialisation du pilote. Si on souhaite davantage ou moins de files d'attente, l'attribut tx_queues
peut être utilisé pour modifier cette valeur lors de la création d'instance de pilote team.
L'ID de file d'attente d'un port peut être défini par l'option de configuration du port
queue_id
comme suit :
{ "queue_id": 3 }Ces ID de files d'attente peuvent être utilisées en conjonction à l'utilitaire tc afin de configurer une discipline de file d'attente pour files multiples, et des filtres destinés à certains trafics devant être transmis à des périphériques de port particuliers. Ainsi, si vous souhaitez utiliser la configuration ci-dessus et que vous souhaitiez forcer tout le trafic lié à
192.168.1.100
, pour utiliser eth1 dans l'équipe (team) faisant office de périphérique de sortie, exécutez la commande en tant qu'utilisateur root
sous le format suivant :
~]#Ce mécanisme de remplacement de logique de runner afin de relier le trafic à un port particulier peut être utilisé avec n'importe quel runner.tc qdisc add dev team0 handle 1 root multiq
~]#tc filter add dev team0 protocol ip parent 1: prio 1 u32 match ip dst \
192.168.1.100 action skbedit queue_mapping 3
5.12.9. Configurer Sélectionneurs de ports Tx basés BPF
L'équilibrage des charges et les runners LACP utilisent les hachages de paquets pour trier les flux de trafic réseau. Le mécanisme de calcul de hachage est basé sur le code Berkeley Packet Filter (BPF). Le code BPF est utilisé pour générer un hachage au lieu de prendre une décision politique au sujet des paquets sortants. La longueur de hachage est de 8 bits, ce qui donne 256 variantes. Cela signifie que différents tampons socket (SKB) peuvent avoir le même hachage et donc faire passer le trafic sur un même lien. L'utilisation d'un hachage court est un moyen rapide de trier le trafic en flux divers à but d'équilibrage des charges sur des liens multiples. En mode statique, le hachage sert uniquement à décider à partir de quel port le trafic doit être envoyé. En mode actif, le runner redéfinira continuellement les hachages de ports différents pour tenter de parvenir à un équilibre parfait.
Les types de chaînes ou de fragments suivants peuvent être utilisés pour le calcul d'un hachage Tx de paquet :
eth
— Utilise les adresses MAC source et destinationvlan
— Utilise ID VLAN.ipv4
— Utilise les adresses de source et de destinationIPv4
.ipv6
— Utilise les adresses de source et de destinationIPv6
.ip
— Utilise les adresses de source et de destinationIPv4
etIPv6
.l3
— Utilise les adresses de source et de destinationIPv4
etIPv6
.tcp
— Utilise les ports de source et de destinationTCP
.udp
— Utilise les ports de source et de destinationUDP
.sctp
— Utilise les ports de source et de destinationSCTP
.l4
— Utilise les ports de source et de destinationTCP
etUDP
etSCTP
.
Ces chaînes peuvent être utilisées en ajoutant une ligne au format suivant au runner d'équilibrage des charges : exemple
"tx_hash": ["eth", "ipv4", "ipv6"]See Section 5.12.5, « Configuration du runner d'équilibrage des charges ».