2. Le contexte : la maquette et les topologies types

Comme annoncé en introduction, on cherche à illustrer les fonctions réseau classiques de commutation de circuits et de paquets. Par définition, la commutation de circuits est le propre d'un commutateur tandis que la commutation de paquets est le propre d'un routeur. Sur des équipements réels, un routeur se distingue d'un commutateur par l'électronique de ses interfaces. Non seulement cette électronique sert à l'interconnexion entre réseaux hétérogènes mais elle offre aussi des fonctions de qualité de service (QoS) plus sophistiquées. L'électronique d'un commutateur permet de constituer un très grand nombre de circuits full-duplex entre interfaces Ethernet. Si un commutateur assure la fonction de routage, celle-ci revient à interconnecter des réseaux homogènes puisque toutes ses interfaces sont de type Ethernet.

Toujours sur des équipements réels modernes, la commutation de paquets et la commutation de circuits se font grâce à des composants qui manipulent un type de mémoire particulier appelé Content-addressable memory. Ces composants permettent d'accélérer considérablement la transmission des données en utilisant un algorithme de hachage des informations contenues dans les en-têtes de trames et de paquets. Plutôt que suivre le processus de désencapsulation normal qui consiste à analyser tous les champs des en-têtes de chaque couche, on se contente de comparer des valeurs binaires calculées à partir du flux réseau entrant et d'un flux antérieur. Si un flux arrive sur une interface avec les mêmes propriétés qu'un flux antérieur (adresses MAC, étiquette IEEE802.1Q, adresses IP, etc.) pour lequel la décision de commutation a déjà été prise, il n'est pas nécessaire de reprendre l'examen des en-têtes.

Dans un contexte de virtualisation, les besoins sont exactement les mêmes. Si le système hôte ne dispose pas (encore) de mémoire TCAM, il est tout à fait possible d'utiliser les mêmes algorithmes de hachage dans le sous-système réseau du noyau pour atteindre le même objectif d'accélération des transmissions entre interfaces. C'est ici qu'il faut mettre un bémol, la comparaison des résultats de hachage et la transmission ne se font plus à la «vitesse du silicium» du composant spécialisé mais à la vitesse d'accès à la mémoire vive (RAM) et aux interfaces réseau du système hôte. Or, une interface réseau de serveur aussi performante soit elle, ne pourra garantir un très grand nombre de circuits full-duplex. C'est là que se situe le goulot d'étranglement dans les transmissions réseau entre le monde virtuel et le monde réel.

Le rôle du commutateur virtuel Open vSwitch est justement de gérer les commutations de circuits et de paquets en coopération avec le sous-système réseau du noyau Linux du système hôte. Ses performances dépendent donc directement des composants disponibles sur le système hôte. Dans le contexte de cet article, il présente un avantage indéniable, il se manipule exactement comme un commutateur réel. Voyons les schémas de topologies types étudiées.

Dans le premier exemple, la fonction de routage (commutation de paquets) est assurée directement par le système hôte.

Dans le second exemple, la fonction de routage (commutation de paquets) est assurée par une instance de système virtuel. De plus, on illustre la cascade (stacking) entre commutateurs virtuels.