Discussion amusante sur les protocoles réseau - Conférence 25 | Réseaux définis par logiciel: méthodes de gestion des propriétés de la communauté pour les infrastructures partagées

Cette série de blog lié, référence geeks temps - Quelque chose sur le protocole réseau

Dans la section précédente, nous avons mentionné que le VLAN natif et le pont Linux sont utilisés pour gérer la plate-forme cloud, mais cela est insuffisant en termes de flexibilité et d'isolement, et l'ensemble du réseau manque d'une vue unifiée et d'une gestion unifiée.

Cela peut être comparé à cela, le cloud computing est comme tout le monde vivant dans un appartement ensemble, partageant l'infrastructure dans la communauté, où le réseau est équivalent aux ascenseurs, couloirs, routes, portes, etc. dans la communauté. Tout le monde marche et a souvent des problèmes, en particulier dans Au plus fort du travail, trop de gens sortent, ce qui pose des défis à la gestion immobilière de la communauté.

La propriété peut envoyer son propre personnel de gestion immobilière dans les escaliers de chaque unité pour augmenter un peu la vitesse de l'ascenseur et peut envoyer quelqu'un pour ouvrir temporairement la porte de la clôture de la zone de remise en forme isolée et de la zone pittoresque afin que tout le monde puisse traverser la communauté. Si vous allez directement dans le métro, vous pouvez également envoyer des personnes pour modifier plusieurs entrées et sorties vers plus de sorties et moins d'entrées. Après 10h30, le pic de travail est passé, puis renvoyé.

Réseau défini par logiciel (SDN)

Ce mode est similaire au périphérique réseau traditionnel et au mode de pont Linux ordinaire. Pour configurer le chemin d'accès réseau de l'ensemble de la plate-forme cloud, vous devez vous connecter à cette machine pour le configurer, puis vous connecter à un autre périphérique pour le configurer pour réussir.

Si le personnel de gestion immobilière possède un système de contrôle intelligent, vous pouvez voir le flux de personnes dans chaque unité et chaque ascenseur de la communauté dans la salle de surveillance de la propriété. La vitesse de l'ascenseur est ajustée, la porte de la clôture est ouverte et une certaine entrée est changée en sortie.
Insérez la description de l'image ici
Il s'agit du Software Defined Networking (SDN). Il présente principalement les trois caractéristiques suivantes.

  • Séparation du contrôle et du transfert : le plan de transfert est un périphérique réseau virtuel ou physique , tout comme les routes de la cellule. L'avion de contrôle est le centre de contrôle unifié , tout comme la salle de surveillance de la propriété résidentielle. Ils étaient ensemble. Le gestionnaire de l'immeuble devait sortir de la salle de surveillance et gérer le matériel sur la route. Elle est maintenant séparée. La route est loin. Le contrôle est dans la salle de surveillance.
  • Interface ouverte entre le plan de contrôle et le plan de transfert : le contrôleur fournit une interface vers le haut, qui est appelée par la couche application , tout comme la salle de contrôle principale fournit des boutons à utiliser par l'administrateur de la propriété. Le contrôleur appelle l'interface vers le bas pour contrôler l'équipement réseau , tout comme la salle de contrôle principale contrôlera à distance la vitesse de l'ascenseur. Deux termes sont souvent utilisés ici: l'interface avant est appelée interface vers le nord et cette dernière interface est appelée interface vers le sud .
  • Contrôle centralisé logique : le plan de contrôle centralisé logiquement peut contrôler plusieurs appareils de plan de transfert , c'est-à -dire l'ensemble du réseau physique , de sorte qu'une vue globale de l'état du réseau peut être obtenue , et un contrôle optimisé du réseau peut être obtenu selon la vue globale de l'état du réseau Tout comme le gestionnaire immobilier peut voir la situation de toute la communauté dans la salle de surveillance et optimiser le plan d'accès en fonction de la situation.

OpenFlow 和 OpenvSwitch

Il existe de nombreuses façons d'implémenter SDN. Examinons une implémentation open source.

OpenFlow est un protocole d'interface orienté vers le sud pour la communication entre les contrôleurs SDN et les périphériques réseau . OpenvSwitch est utilisé pour créer des commutateurs virtuels logiciels .

OpenvSwitch prend en charge le protocole OpenFlow . Bien sûr, certains commutateurs matériels prennent également en charge le protocole OpenFlow . Ils peuvent être une gestion unifiée contrôleur NRS, ce qui permet une connectivité réseau les deux machines physiques et virtuelles .
Insérez la description de l'image ici

Comment le contrôleur SDN contrôle-t-il le réseau via le protocole OpenFlow?

Insérez la description de l'image ici
Dans OpenvSwitch, il existe une règle de table de flux et tous les paquets qui transitent par ce commutateur seront traités par ces règles pour recevoir, transmettre et rejeter.

À quoi ressemble le débitmètre? En fait, c'est une table, chaque table a plusieurs lignes, chaque ligne est une règle. Chaque règle a une priorité, examinez d'abord les règles de haute priorité, puis examinez les règles de faible priorité.
Insérez la description de l'image ici
Pour chaque règle, cela dépend si les conditions de correspondance sont remplies . Ces conditions incluent, à partir de quel port il est entré, ce qui se trouve dans l'en-tête du paquet réseau, etc. Répond l' état des paquets réseau, vont effectuer un mouvement , ce réseau de paquets de processus. Vous pouvez modifier le contenu de l'en-tête du paquet, accéder à n'importe quel formulaire, le transférer vers un certain port réseau ou le supprimer.

Grâce à ces formulaires, les paquets réseau reçus peuvent être traités à volonté.
Insérez la description de l'image ici
Que puis-je faire spécifiquement? Comme le montre le tableau ci-dessus, il s'agit simplement de savoir comment traiter, peut couvrir les quatre couches de la pile de protocoles TCP / IP.

Pour la couche physique :

  • Les règles d'appariement incluent de quelle bouche entrer;
  • Les actions d'exécution incluent de quelle bouche.

Pour la couche MAC :

  • Les règles de correspondance incluent: Quelle est l' adresse MAC source ? ( dl_src ), quel est le MAC cible ? ( dl_dst ), qu'est-ce que le vlan ? ( dl_vlan );
  • Les actions d'exécution comprennent: modifier le MAC source ( mod_dl_src ), modifier le MAC cible ( mod_dl_dst ), modifier le VLAN ( mod_vlan_vid ), supprimer le VLAN ( strip_vlan ), apprentissage de l'adresse MAC ( apprendre ).

Pour la couche réseau :

  • Les règles de correspondance incluent: Quelle est l' adresse IP source ? ( nw_src ), quelle est l' IP cible ? ( nw_dst ).
  • Les actions d'exécution comprennent: la modification de l'adresse IP source ( mod_nw_src ) et la modification de l'adresse IP cible ( mod_nw_dst ).

Pour la couche transport :

  • Les règles de correspondance incluent: Quel est le port source ? ( tp_src ), quel est le port cible ? ( tp_dst ).
  • Les actions d'exécution comprennent: la modification du port source ( mod_tp_src ) et la modification du port cible ( mod_tp_dst ).

Dans l'ensemble, pour OpenvSwitch, le paquet réseau vient à moi, qui est un tampon. Je veux le changer, et je veux l'envoyer à n'importe quel port.

OpenvSwitch a une ligne de commande locale qui peut être configurée pour expérimenter certaines des fonctions dont nous avons parlé plus tôt. Nous pouvons créer un commutateur virtuel via les commandes OpenvSwitch. Vous pouvez ensuite ajouter plusieurs ports de port virtuel à ce commutateur virtuel.

ovs-vsctl add-br ubuntu_br

Expérience 1: utilisez OpenvSwitch pour réaliser la fonction VLAN

Essayons avec la fonction d'implémentation de VLAN via OpenvSwitch . Il existe deux types de port dans OpenvSwitch .

Le premier type est le port d'accès :

  • La balise est configurée sur ce port et les paquets provenant de ce port seront balisés avec cette balise;
  • Si l'ID VLAN du paquet réseau lui-même est égal à la balise, il sera envoyé à partir de ce port;
  • Les paquets envoyés depuis le port d'accès ne portent pas d'ID de VLAN.

Le deuxième type est le port de jonction :

  • Ce port ne configure pas les balises, configure les troncs;
  • Si les trunks sont vides, tous les VLAN sont des trunk, ce qui signifie que pour tous les paquets VLAN, quel ID VLAN est transporté par lui-même, quel ID VLAN est transporté, si aucun VLAN n'est défini, il appartient au VLAN 0, tous sont autorisés à passer;
  • Si les jonctions ne sont pas vides, seuls les paquets avec ces ID de VLAN passeront.

Nous créons l'environnement suivant via la commande suivante:

ovs-vsctl add-port ubuntu_br first_br
ovs-vsctl add-port ubuntu_br second_br
ovs-vsctl add-port ubuntu_br third_br
ovs-vsctl set Port vnet0 tag=101
ovs-vsctl set Port vnet1 tag=102
ovs-vsctl set Port vnet2 tag=103
ovs-vsctl set Port first_br tag=103
ovs-vsctl clear Port second_br tag
ovs-vsctl set Port third_br trunks=101,102

De plus, il est nécessaire de configurer pour interdire l'apprentissage des adresses MAC.

ovs-vsctl set bridge ubuntu_br flood-vlans=101,102,103 

Insérez la description de l'image ici
Après avoir créé l'environnement, faisons cette expérience.

  1. Ping 192.168.100.103 à partir de 192.168.100.102, puis utilisez tcpdump pour capturer les paquets. Le premier_if a reçu le paquet, et l'en-tête du premier_br n'a pas d'ID de VLAN. Le second_if a également reçu le paquet. Comme second_br est un port de jonction, l'en-tête du paquet sort avec un ID VLAN et le troisième_if ne peut pas recevoir le paquet.
  2. De 192.168.100.100 à ping 192.168.100.105, second_if et third_if peuvent recevoir le paquet, bien sûr, ping échoue, car third_if n'appartient pas à un VLAN. Le premier_si ne peut pas recevoir le colis. second_if peut recevoir le paquet et l'en-tête du paquet contient l'ID VLAN = 101. Le troisième_if peut également recevoir le paquet, et l'en-tête du paquet contient l'ID VLAN = 101.
  3. De 192.168.100.101 au ping 192.168.100.104, second_if et third_if peuvent recevoir le paquet. Le premier_si ne peut pas recevoir le colis. second_br peut recevoir le paquet et l'en-tête du paquet contient l'ID VLAN = 102. troisième_si il peut recevoir le paquet, et l'en-tête du paquet contient VLAN ID = 102.

Grâce à cet exemple, nous pouvons voir que grâce à OpenvSwitch, vous pouvez apprendre le mode de fonctionnement du VLAN sans acheter un commutateur qui prend en charge le VLAN.

Expérience 2: utilisez OpenvSwitch pour simuler la liaison de la carte réseau et vous connecter au commutateur

Ensuite, faisons une autre expérience. Plus tôt, nous avons également dit que pour une haute disponibilité, vous pouvez utiliser la liaison de carte réseau pour vous connecter au commutateur, et OpenvSwitch peut également simuler cela.

Dans OpenvSwitch, il existe un bond_mode , qui peut être défini sur les trois valeurs suivantes:

  • active-backup : une connexion est active, l'autre est une sauvegarde, quand active échoue, la sauvegarde est en haut;
  • balance-slb : installez le MAC source et sortez le VLAN pour que le trafic équilibre la charge;
  • balance-tcp : uniquement lorsque le protocole LACP est pris en charge, peut charger l'équilibre selon L2, L3, L4.

Nous construisons un environnement de test. 
Insérez la description de l'image ici
Nous utilisons la commande suivante pour établir une connexion de liaison.

ovs-vsctl add-bond br0 bond0 first_br second_br
ovs-vsctl add-bond br1 bondl first_if second_if
ovs-vsctl set Port bond0 lacp=active
ovs-vsctl set Port bondl lacp=active

Par défaut, bond_mode est le mode de sauvegarde active, le premier actif est first_br et first_if.

À l'heure actuelle, lorsque nous exécutons une commande ping sur 192.168.100.102 à partir de 192.168.100.100 et 192.168.100.103 à partir de 192.168.100.101, tcpdump peut voir que tous les paquets passent par first_if.

Si le premier_if est défini sur down, la direction du paquet changera et il est constaté que le second_if commence à avoir du trafic, qui ne semble pas être affecté pour 192.168.100.100 et 192.168.100.101.

Si nous utilisons la commande suivante, définissez bond_mode sur balance-slb. Ensuite, nous pingons 192.168.100.102 sur 192.168.100.100 et 192.168.100.103 sur 192.168.100.101 en même temps, nous avons constaté que le paquet a été shunté via tcpdump.

ovs-vsctl set Port bond0 bond_mode=balance-slb
ovs-vsctl set Port bond1 bond_mode=balance-slb

Grâce à cet exemple, nous pouvons voir que grâce à OpenvSwitch, vous pouvez également voir l'effet de la liaison sans acheter deux commutateurs qui prennent en charge la liaison.

Architecture OpenvSwitch

Comment OpenvSwitch fait-il cela? Regardons le schéma d'architecture d'OpenvSwitch. 
Insérez la description de l'image ici
Openvswitch contient de nombreux modules en mode utilisateur il y a deux processus importants , il y a deux outils de ligne de commande importants .

  • Le premier processus est le processus OVSDB . La ligne de commande ovs-vsctl communiquera avec ce processus pour créer un commutateur virtuel, créer un port et ajouter le port au commutateur virtuel. OVSDB enregistrera ces informations de topologie dans un fichier local.
  • Le deuxième processus est le processus vswitchd . La ligne de commande ovs-ofctl communiquera avec ce processus pour émettre des règles de table de flux. Les règles spécifieront comment traiter les paquets réseau. Vswitchd placera la table de flux en mode utilisateur Flow Table.

Dans l' état du noyau , OpenvSwitch a le module de noyau OpenvSwitch.ko , correspondant à la partie Datapath de la figure . Enregistrez une fonction sur la carte réseau, cette fonction sera appelée chaque fois qu'un paquet réseau arrive sur la carte réseau.

Dans cette fonction du noyau, vous obtiendrez des paquets réseau et retirerez des informations importantes à différents niveaux, par exemple:

  • Au niveau de la couche physique, in_port est l'ID du port réseau dans lequel le paquet entre;
  • Au niveau de la couche MAC, les adresses MAC source et de destination;
  • Au niveau de la couche IP, adresses source et destination;
  • Au niveau de la couche transport, les numéros de port source et de destination.

Dans le noyau , il existe un tableau de flux d'état du noyau . Ensuite, le module du noyau correspond aux règles de la table de flux du noyau. S'il correspond, il exécute l'opération, modifie le paquet, ou le transfère ou le rejette. Si le noyau ne correspond pas, vous devez entrer l'état utilisateur, et l' état utilisateur et l'état du noyau communiquent entre eux via un mécanisme Netlink de Linux .

Le noyau indique au processus en mode utilisateur vswitchd de faire correspondre les règles de la table de flux en mode utilisateur jusqu'à l'appel. Les règles sont des règles de table de flux complet et la table de flux de noyau est uniquement destinée à un traitement rapide. Certaines règles sont réservées . Les règles expireront après un certain temps .

Lorsque la règle de table de flux est mise en correspondance en mode utilisateur, l'opération est effectuée en mode utilisateur , et la table de flux mise en correspondance est remise au noyau via réinjection , de sorte que les paquets suivants puissent trouver cette règle dans le noyau.

Le protocole openflow est appelé ici , qui est un outil de ligne de commande local ou un contrôleur SDN distant . Un contrôleur SDN important est OpenDaylight.

Le diagramme suivant est le diagramme de topologie vu dans OpenDaylight. Y a-t-il un sentiment que le gestionnaire immobilier est dans la salle de surveillance?
Insérez la description de l'image ici

Comment utiliser OpenvSwitch dans le cloud computing?

Comment OpenvSwitch peut-il être utilisé dans le cloud computing?
Insérez la description de l'image ici
Nous discutons toujours de la scène du VLAN.

Lorsqu'il n'y a pas d'OpenvSwitch , si un nouvel utilisateur souhaite utiliser un nouveau VLAN, vous devez également créer une carte réseau virtuelle appartenant au nouveau VLAN et créer un pont virtuel séparé pour le locataire, de sorte que lorsque de plus en plus d'utilisateurs , La carte réseau virtuelle et le pont réseau virtuel seront de plus en plus nombreux, la gestion est très compliquée .

Un autre problème est la machine virtuelle VLAN et l'environnement physique du VLAN est une transmission transparente, soit depuis le début de la planification du temps, vous devez faire correspondre les environnements physiques et virtuels fortement liés, déjà rigides . Avec l'introduction d'OpenvSwitch, le statut a été amélioré.

Tout d'abord, puisque OpenvSwitch lui-même prend en charge le VLAN, toutes les machines virtuelles peuvent être placées sur un pont br0 et différents utilisateurs peuvent configurer différentes balises pour réaliser l'isolement. Par exemple, dans la figure ci-dessus, les machines virtuelles de l'utilisateur A sont toutes sur br0 et les machines virtuelles de l'utilisateur B sont toutes sur br1. Avec OpenvSwitch, vous pouvez les mettre toutes sur br0, il suffit de définir des balises différentes.

De plus, un commutateur virtuel br1 peut également être créé pour isoler le réseau physique du réseau virtuel. Le réseau physique a un plan VLAN pour le réseau physique. La machine virtuelle se trouve sur une machine physique et tous les VLAN commencent à 1. Puisqu'il n'y a pas plus de 4096 machines virtuelles sur une machine, si VLAN démarre à partir de 1 sur une machine physique, c'est certainement suffisant.

Par exemple, sur la figure, dans la machine physique supérieure, l'utilisateur A se voit attribuer une balise de 1, l'utilisateur B se voit attribuer une balise de 2, tandis que dans la machine physique inférieure, l'utilisateur A se voit attribuer une balise de 7, l'utilisateur B est affecté La balise est 6.

Si la communication et l'isolement entre les machines physiques se font toujours via des VLAN, les VLAN des machines virtuelles et les VLAN de l'environnement physique doivent être mis en correspondance, mais pour plus de flexibilité, ils ne sont pas nécessairement les mêmes, de sorte que le réseau des machines physiques et des machines virtuelles peut être géré séparément Réseau. Heureusement, OpenvSwitch peut modifier le contenu du package. Par exemple, en faisant correspondre dl_vlan, puis exécutez mod_vlan_vid pour améliorer les paquets réseau entrant et sortant de la machine physique.

Bien qu'il y ait plus de locataires, le VLAN de l'environnement physique n'est toujours pas suffisant, mais avec le mappage d'OpenvSwitch, le physique et le virtuel sont découplés afin que l'environnement physique puisse utiliser d'autres technologies sans affecter l'environnement de la machine virtuelle.

Résumé

Eh bien, cette section est ici, résumons:

  • L'utilisation de SDN pour contrôler l'intégralité du réseau cloud est identique à la gestion de la sécurité communautaire de l'ensemble de la propriété depuis la salle de contrôle principale, en séparant le plan de contrôle et le plan de données;
  • Une implémentation de commutateur virtuel open source OpenvSwitch, qui peut apporter des modifications arbitraires à son propre package, rendant ainsi le cloud très flexible dans le contrôle du réseau;
  • Après avoir introduit OpenvSwitch dans le cloud, il peut rendre la configuration simple et flexible, et peut découpler le réseau physique et le réseau virtuel.

Enfin, je vous laisse deux questions:

  1. Dans cette section, il est mentionné que VIP peut atteindre un équilibre complexe entre différentes machines grâce à des tableaux de flux. Savez-vous comment le faire?
  2. Bien qu'OpenvSwitch puisse dissocier des réseaux physiques et virtuels, le nombre de VLAN utilisés dans le réseau physique n'est pas suffisant. Savez-vous quoi faire?
Publié 40 articles originaux · louange gagné 1 · vues 5350

Je suppose que tu aimes

Origine blog.csdn.net/aha_jasper/article/details/105575638
conseillé
Classement