OPCP - Comment configurer les ports Trunk sur un nœud
Objectif
Les ports Trunk permettent à une seule instance (bare metal ou machine virtuelle) d'envoyer et de recevoir du trafic sur plusieurs réseaux Neutron via du vlan tagging, à travers une seule interface physique ou un bond LACP.
Ce guide explique comment configurer les ports Trunk Neutron dans OPCP pour activer la connectivité multi-réseau (vlan) sur un nœud bare metal ou une machine virtuelle.
Ce guide montre également comment configurer des sous-interfaces vlan au sein de votre instance pour accéder à chaque réseau rattaché au trunk.
La création de trunk nécessite le rôle admin. Un utilisateur projet ne peut pas créer de trunks.
L'ajout de sous-ports à un trunk nécessite également les droits admin par défaut, mais cela peut être délégué par votre administrateur.
Il est recommandé de configurer le trunk avant le déploiement d'une instance.
Ce guide ne couvre pas la configuration d'un trunk sur une instance déjà en production.
Pourquoi utiliser les ports Trunk ?
Les ports Trunk peuvent être utilisés dans trois cas d'usage précis :
- Accès multi-réseau depuis une seule instance : Les ports Trunk permettent à un serveur bare metal ou une machine virtuelle de communiquer sur plusieurs réseaux Neutron isolés via du vlan tagging, sans nécessiter de ports séparés pour chaque réseau.
- Dépasser la limite d'interfaces physiques sur bare metal : Sur un serveur bare metal, le nombre de réseaux Neutron est normalement limité par le nombre d'interfaces réseau physiques. Grâce aux ports Trunk, vous pouvez connecter plus de réseaux que d'interfaces physiques disponibles en multiplexant plusieurs vlans sur une seule interface ou un bond LACP.
- Gestion réseau simplifiée : Au lieu de provisionner plusieurs ports et de les attacher individuellement, vous créez un seul trunk avec des sous-ports, chacun taggé avec un vlan ID spécifique. Cela permet de garder la topologie réseau claire et maintenable.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un service OPCP actif.
- Un accès OpenStack CLI configuré avec les droits nécessaires (
clouds.yamlou variables d'environnement). - Le rôle admin (nécessaire pour la création de trunks et la gestion des sous-ports).
- Au moins deux réseaux Neutron déjà créés dans votre projet (un pour le port parent et un ou plusieurs pour les sous-ports).
- Un nœud bare metal ou un projet de machine virtuelle disponible.
La configuration des ports Trunk est une fonctionnalité réseau avancée nécessitant une bonne connaissance des concepts réseau OpenStack Neutron, du vlan tagging et de la CLI OpenStack.
En pratique
Configuration réseau et Trunk
1. Identifier vos réseaux
Avant de créer le trunk, identifiez les réseaux auxquels votre instance doit accéder. Listez les réseaux disponibles dans votre projet :
Exemple de sortie :
2. Créer le port parent
Créez un port Neutron qui servira de port parent du trunk. Ce port est requis par le modèle trunk de Neutron pour ancrer le trunk à l'instance.
Exemple :
Exemple de sortie :
Sur les instances bare metal, le port parent est un port factice. Il existe dans la base de données Neutron mais n'a aucun effet sur le fabric réseau. Le réseau assigné au port parent ne transportera aucun trafic vers l'instance. Toute la connectivité réseau réelle doit être configurée via les sous-ports (voir étapes 4 et 5).
Sur les machines virtuelles, le port parent transporte le réseau parent en trafic non taggé sur l'interface de base. Les réseaux des sous-ports sont délivrés en trafic vlan taggé.
3. Créer le Trunk
Créez un trunk Neutron en utilisant le port parent créé à l'étape précédente :
Exemple :
Exemple de sortie :
À ce stade, le trunk existe mais n'est attaché à aucun serveur. Le port parent est un port Neutron standard qui sera référencé lors de la création de l'instance.
4. Créer un sous-port
Créez un port Neutron sur chaque réseau que vous souhaitez rendre accessible via le trunk :
Exemple :
5. Ajouter le sous-port au Trunk
Attachez le sous-port au trunk en spécifiant le type de segmentation (vlan) et l'identifiant de segmentation correspondant au tag vlan du réseau :
Exemple :
Le comportement du segmentation-id diffère selon le type d'instance :
- Bare metal : le
segmentation-iddoit correspondre à l'identifiant de segmentation du réseau assigné au sous-port. Neutron ne vérifie pas cette valeur, mais si elle ne correspond pas, le trafic n'atteindra pas l'instance. - Machines virtuelles : le
segmentation-idpeut être n'importe quelle valeur de votre choix. L'hyperviseur gère la traduction entre le tag vlan du sous-port et l'identifiant de segmentation réel du réseau.
Pour ajouter d'autres réseaux, répétez les étapes 4 et 5 pour chaque réseau supplémentaire. Pour les instances bare metal, utilisez le segmentation-id correspondant à chaque réseau.
6. Vérifier la configuration du Trunk
Confirmez que le trunk est correctement configuré avec tous les sous-ports attendus :
Exemple :
Exemple de sortie :
7. Déployer une instance avec le Trunk
Créez l'instance en référençant le port parent. OpenStack configurera le trunk lors du provisionnement.
Exemple bare metal :
Exemple machine virtuelle :
Vous devez utiliser --port (en référençant le port parent) plutôt que --nic net-id=.... Utiliser --nic créerait un nouveau port et contournerait entièrement la configuration trunk.
Résumé des étapes
| Étape | Action | Commande |
|---|---|---|
| 1 | Lister les réseaux | openstack network list |
| 2 | Créer le port parent | openstack port create --network <nom-reseau> <nom-port-parent> |
| 3 | Créer le trunk | openstack network trunk create --parent-port <nom-port-parent> <nom-trunk> |
| 4 | Créer un sous-port | openstack port create --network <nom-reseau> <nom-sous-port> |
| 5 | Ajouter le sous-port au trunk | openstack network trunk set --subport port=<nom-sous-port>,segmentation-type=vlan,segmentation-id=<vlan-id> <nom-trunk> |
| 6 | Vérifier le trunk | openstack network trunk show <nom-trunk> |
| 7 | Déployer l'instance | openstack server create --port <nom-port-parent> --flavor <flavor> ... |
Configuration du système d'exploitation de l'instance
Après le déploiement de votre instance, vous devez configurer des sous-interfaces vlan dans l'OS invité pour accéder à chaque réseau rattaché via les sous-ports du trunk.
La configuration automatique du trunk via cloud-init n'est pas possible. OpenStack ne transmet pas les métadonnées trunk au userdata de l'instance. Vous devez configurer les sous-interfaces vlan manuellement ou via un outil de provisionnement post-déploiement.
Sur les instances bare metal, le port parent étant un port factice sans effet sur le fabric réseau, l'interface réseau de base n'aura aucune connectivité réseau par défaut. Tous les réseaux doivent être accessibles via des sous-interfaces vlan correspondant au segmentation-id assigné à chaque sous-port.
Sur les machines virtuelles, l'interface de base transporte le réseau parent en trafic non taggé. Seuls les réseaux des sous-ports nécessitent des sous-interfaces vlan.
1. Identifier l'interface réseau principale
Connectez-vous à votre instance et identifiez l'interface réseau principale :
Repérez l'interface principale (par exemple ens3, ens21f0np0, ou bond0 si LACP est configuré). C'est l'interface physique qui transporte le trunk.
2. Créer des sous-interfaces vlan (temporaire)
Pour chaque sous-port, créez une sous-interface vlan correspondant au segmentation-id que vous avez assigné. Il s'agit d'une méthode non persistante pour les tests :
Exemple :
Cette configuration ne survivra pas à un redémarrage. Consultez l'étape suivante pour une configuration persistante.
3. Configuration persistante (exemple Netplan)
Pour une configuration persistante des sous-interfaces vlan avec Netplan (Ubuntu/Debian avec cloud-init), créez un fichier de configuration (par exemple /etc/netplan/60-vlans.yaml) :
Puis appliquez la configuration :
Si votre instance utilise le bonding LACP (voir le guide LACP), remplacez ens3 par le nom de votre interface bond (par exemple bond0). Les sous-interfaces vlan deviennent alors bond0.100, bond0.200, etc.
4. Vérifier la connectivité
Vérifiez que vos sous-interfaces vlan sont actives et possèdent les bonnes adresses IP :
Puis testez la connectivité :
Exemple :
Si le ping réussit, votre sous-interface vlan est correctement configurée et le trunk transporte le trafic du réseau correspondant.
Conclusion
Vous avez configuré avec succès :
- Les ports Trunk Neutron au niveau OpenStack, connectant une instance à plusieurs réseaux via du vlan tagging ;
- Les sous-interfaces vlan dans l'OS invité pour accéder à chaque réseau rattaché via les sous-ports du trunk ;
- Et vérifié la connectivité réseau sur chaque vlan.
Votre instance peut désormais communiquer sur plusieurs réseaux isolés grâce à une seule configuration trunk.
Aller plus loin
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en œuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts du service Professional Services.
Échangez avec notre communauté d'utilisateurs.