Technologie de commutation de paquets développée par CISCO Systems, dont l’architecture est dotée de deux composantes principales : acheminement (forwarding) et contrôle. L’acheminement est effectué en utilisant des techniques de label-swapping, tandis que pour le contrôle, on utilise les protocoles de routage niveau réseau existants ainsi que des mécanismes pour la liaison et la distribution des étiquettes (tags).
Même si le tag switching ne repose pas sur ATM, il peut être directement appliqué aux switchs ATM. Le Tag Switching allie la souplesse et la richesse de fonctionnalités fournies par le routage niveau 3 (Network Layer routing) avec la simplicité du label swapping. Cette simplicité permet d’améliorer les performances d’acheminement tout en maintenant un rapport qualité/prix compétitif.
Les ingrédients du tag switching.
Un réseau tag switching est constitué de 2 sortes d’équipements :
- Les Tag Edge Routers sont des équipements de routage niveau réseau qui sont situés en bordure d’un réseau tag switching. Ils examinent les paquets arrivant dans le réseau et leur appliquent le tag, ou label, approprié, avant qu’ils ne soient acheminés vers leur noeud suivant (next hop) Pour les paquets qui quittent le réseau tag switch, les tag edge routers effectuent l’opération inverse en retirant les tags des paquets. Ces routeurs effectuent aussi des services à valeur ajoutée niveau réseau tels que la sécurité ou la classification de la QOS. Les tag edge routers utilisent les protocoles de routage standard pour créer les tables de routage qui identifient les routes au travers du réseau. En se basant sur les tables de routage, les tag edge routers utilisent le protocole de distribution des tags (TDP : tag distribution protocol) pour appliquer et distribuer les tags aux autres tag edge routers ou aux tag switchs.
- Les tag switchs sont au coeur du réseau tag switching. Ils acheminent les paquets marqués de tags. Les switchs ATM peuvent être utilisés en tant que tag switchs. Les tag switchs reçoivent, grâce au TDP, les informations provenant des tag edge routers et construisent leur propre base de donnée d’acheminement. Les tag switchs commutent alors les paquets en se basant seulement sur les tags, sans regarder l’entête niveau 3.
Tag Distribution Protocol (TDP)
Le Tag Distribution Protocol (TDP) est utilise par les équipements de tag switching afin de distribuer, requérir et mettre à jour les informations d’association de tag pour les protocoles IP dans le réseau. TDP ne remplace pas un protocole de routage. Il utilise plutôt les informations fournies par les protocoles de routage afin de créer les associations de tags.
Les bases d’information.
Le tag switching utilise 3 types de bases d’information pour enregistrer et retrouver les informations d’acheminement :
- La Forwarding Information Base (FIB) : Forme condensée de table de routage contenant les adresses de destination, les adresses de next hop, et les interfaces sortantes. Les routeurs basent les décisions d’acheminement sur l’adresse de destination d’un paquet, plus l’information contenue dans la FIB.
- La Tag Information Base (TIB) : Sert à associer un tag entrant à un ou plusieurs des éléments suivants :
Tag sortant, Adresse de destination, Outgoing link-level information…Une TIB peu exister entièrement pour un commutateur, une interface ou une combinaison des 2.
- La Tag Forwarding Information Base (TFIB): elle utilise les informations de la FIB et de la TIB pour construire l’information d’acheminement constituée de l’interface entrante, l’adresse de destination, le tag entrant, le next hop le plus efficace, et l’interface de sortie.
Les composantes du Tag Switching.
Le Tag Switching comprend 2 composantes: l’acheminement et le contrôle. Afin d’assurer l’acheminement des paquets, la composante d’acheminement utilise les informations des étiquettes (tags) contenues dans les paquets et les informations d’acheminement de tag maintenues par un tag switch. La composante de contrôle est chargée de maintenir correctes les informations d’acheminement de tag au sein d’un groupe de tag switchs interconnectés.
- La composante d’acheminement.
Le paradigme fondamental d’acheminement utilisé dans le tag switching est basé sur la notion de label swaping. Quand un paquet contenant un tag est reçu par un tag switch, le commutateur utilise le tag comme un index dans sa base d’information : la Tag Infomation Base (TIB). Chaque entrée dans la TIB est constituée d’un tag d’entrée, et de une ou plusieurs sous-entrées de la forme : (tag sortant, interface de sortie, niveau d’information de la liaison sortante). Si le commutateur trouve une entrée avec le tag entrant égal au tag contenu par le paquet, alors pour chaque tag sortant, interface de sortie, niveau d’information du lien sortant de l’entrée, le commutateur remplace le tag du paquet par le tag de sortie. Il remplace aussi le niveau d’information de la liaison (adresse MAC) dans le paquet par le niveau d’information de la liaison sortante. Il achemine enfin le paquet à travers l’interface de sortie. La décision d’acheminement est basée sur l’algorithme de correspondance exacte qui utilise comme index un tag de longueur fixe, assez court. Ceci permet une procédure d’acheminement plus simple comparée à celle mise en oeuvre dans la couche réseau. La procédure d’acheminement est suffisamment simple pour autoriser directement une implémentation matérielle. Le même algorithme d’acheminement s’applique à la fois pour l’unicast et le multicast – une entrée unicast possèderait une unique sous-entrée (tag de sortie, interface de sortie, niveau d’information de liaison sortante), alors qu’une entrée multicast possède une ou plusieurs sous-entrées de même type. (Pour les liaisons multi-accès, le niveau d’information du lien sortant inclurait dans ce cas une adresse MAC multicast). Ceci illustre comment avec le tag switching, le même paradigme d’acheminement peut être utilisé pour supporter différentes fonctions de routage.
- La composante de contrôle.
La notion d’association entre un tag et le routage niveau réseau est essentielle. Le tag switching supporte un large choix de granularités d’acheminement afin de fournir de bonnes caractéristiques de dimensionnement et accommoder en même temps diverses fonctionnalités de routage. Un tag pourrait être associé à un groupe de routes, ou encore un tag pourrait être associé au flux d’une application individuelle. Il pourrait aussi être associé à un arbre multicast. La composante de contrôle se charge de créer des associations de tags et de distribuer ensuite les informations d’association de tags parmi les tag switchs. La composante de contrôle est structurée comme une collection de modules, chacun étant conçu pour assurer une fonction de routage particulière. De nouveaux modules peuvent être rajoutés pour supporter de nouvelles fonctions de routage. Le routage basé sur la destination. Le tag switching peut supporter le routage basé sur la destination. Le routeur décide de l’acheminement en se basant sur l’adresse de destination contenue dans le paquet et de la base d’information d’acheminement (FIB) maintenue par le routeur. Un routeur construit sa FIB en utilisant les informations qu’il reçoit des protocoles de routage (OSPF, BGP).
Il existe 3 méthodes différentes pour l’allocation du tag et la gestion de la TIB (Tag Information Base) :
l’allocation du tag en aval, l’allocation du tag en aval sur demande, l’allocation du tag en amont. Dans tous les cas, un switch alloue les tags et les associe à des préfixes d’adresse dans sa FIB. Dans le cas de l’allocation en aval, le tag qui est véhiculé par un paquet est généré et associé à un préfixe par le switch à l’extrémité aval du lien (en tenant compte de la direction du flux de données). Dans le cas de l’allocation en amont, les tags sont alloués et associés au niveau de l’extrémité amont du lien. L’allocation sur demande signifie que les tags vont être alloués et distribués par le switch en aval seulement lorsque le switch en amont en fait la requête.
Dans le cas de l’allocation en aval, un switch est responsable de la création des associations de tags qui s’applique aux paquets de données entrants, et reçoit par ses voisins les associations de tags pour les paquets sortants. Dans le cas de l’allocation en amont, un switch est responsable de la création des associations de tags pour les tags sortants (c’est à dire pour les tags qui s’appliquent aux paquets de données qui partent du commutateur) et reçoit par ses voisins les associations de tags pour les paquets entrants. Le schema de l’allocation des tags en aval fonctionne de la manière suivante: pour chaque route de sa FIB, le switch alloue un tag, crée une entrée dans sa TIB (Tag Information Base) avec le tag entrant fixé sur le tag alloué, et avertit ensuite de l’association entre le tag et la route vers les commutateurs adjacents. Cet avertissement peut se faire en mettant l’association sur le dos du protocole de routage existant, ou bien en utilisant un protocole de distribution des tags (TDP : Tag Distribution Protocol) séparé.
Quand un tag switch reçoit une information d’association de tag pour une route et que cette information provient du noeud suivant (pour cette route), le commutateur place le tag (porté comme faisant partie de l’association d’association) dans le tag de sortie de l’entrée dans la TIB associée avec la route. Ceci crée l’association entre le tag sortant et la route.
Avec le schéma de l’allocation des tags en aval sur demande, on opère comme suit. Pour chaque route dans sa FIB, le switch identifie le prochain noeud (next hop) pour cette route. Il envoie ensuite une requête (via TDP) au prochain noeud dans la route pour l’association de tag. Quand le noeud suivant reçoit la requête, il alloue un tag, crée une entrée dans sa TIB en fixant le tag entrant sur le tag alloué, et retourne ensuite l’association entre le tag (entrant) et la route au commutateur qui est à l’origine de la requête. Quand le commutateur reçoit les informations d’association, il crée une entrée dans sa TIB dans laquelle le tag sortant prend la valeur reçue du noeud suivant.
On utilise le schéma de l’allocation des tags en amont de la manière suivante. Si un tag switch possède une ou plusieurs interfaces point à point, pour chaque route de sa FIB dont le noeud suivant peut être atteinte via
une de ces interfaces, le commutateur alloue un tag et avertit le noeud suivant de l’association entre le tag (sortant) et la route. Quand le commutateur du noeud suivant reçoit les informations d’association, il place le tag dans la TIB en l’associant à la route. Une fois que l’entrée de la TIB est remplie avec les tags entrants et les tags sortants, le tag switch peut acheminer les paquets pour les routes associées aux tags en utilisant l’algorithme d’acheminement du tag switching. Quand un tag switch crée une association entre un tag sortant et une route, le commutateur, en plus de remplir sa TIB, met aussi à jour sa FIB avec les informations d’association. Cela permet au commutateur d’ajouter des tags aux paquets qui en sont dépourvus.
Hiérarchie de la connaissance de routage.
L’architecture de routage IP modélise un réseau comme une collection d’ensembles de routages. Au sein d’un domaine, le routage s’effectue via un routage interne (ex : OSPF), tandis que le routage au travers des différents domaines s’effectue en utilisant un routage externe (ex : BGP). Tous les routeurs au sein de domaines qui portent du trafic de transit (ex : les domaines formés par les ISP) doivent maintenir les informations fournies par le routage interne mais aussi celles fournies par le routage externe. Cela est à l’origine de certains problèmes. Tout d’abord, la quantité d’information n’est pas insignifiante ce qui rajoute de la demande en ressources nécessaires aux routeurs. De plus l’augmentation du volume des informations de routage augmente bien souvent le temps de convergence de routage, ce qui dégrade les performances générales du système.
Le tag switching autorise le découplage du routage interne et externe. De cette façon, seuls les tag switchs situés en périphérie d’un domaine sont requis pour maintenir les informations de routage fournies par le routage externe, tandis que tous les autres switchs maintiennent uniquement les informations de routage fournies par le routage interne au domaine (qui sont généralement moins volumineuses que les informations de routage externe). En conséquences, la charge de routage des commutateurs qui ne sont pas en périphérie est réduite et le temps de convergence est écourté.
Afin de supporter cette fonctionnalité, le tag switching autorise un paquet à porter un ensemble de tags et non un seul. Cet ensemble est organisé comme une pile. Le tag switch peut échanger le tag du sommet de la pile, ou dépiler un tag, ou échanger le tag et empiler un ou plusieurs tags de la pile. Quand un paquet est acheminé entre 2 commutateurs (en périphérie) de domaines différents, la pile du paquet contient seulement un tag. Quand un paquet est acheminé à l’intérieur d’un domaine, la pile du paquet contient 2 tags, le 2ème étant empilé par le tag switch à l’entrée du domaine. Le tag de sommet de la pile permet d’acheminer le paquet jusqu’au tag switch approprié à la sortie du domaine. Le tag suivant dans la pile permet l’acheminement correct du paquet à la sortie du domaine. La pile est dépilée soit par le commutateur de sortie du domaine, soit par l’avant dernier.
Multicast.
La notion de “spanning tree” est essentielle pour le routage multicast. Des procédures de routage multicast (ex : PIM) sont responsables de la constRAction de tels arbres (les feuilles représentent les récepteurs), alors que l’acheminement multicast est responsable de l’acheminement des paquets multicast en suivant les arbres. Pour supporter une fonction d’acheminement multicast avec le tag switching, chaque tag switch associe un tag à un arbre multicast. Quand un tag switch crée une entrée d’acheminement multicast ainsi que la liste des interfaces sortantes pour cette entrée, le commutateur crée également des tags locaux (un par interface sortante). Le commutateur crée une entrée dans sa TIB et la remplie avec cette information pour chaque interface sortante en plaçant un tag généré localement dans le champ de tag sortant. Ceci crée une association entre un arbre multicast et le tag. Le commutateur avertit alors, au-delà de chaque interface sortante, de l’association entre le tag (associé à cette interface) et l’arbre. Quand un tag switch est averti de l’association entre un arbre multicast et un tag provenant d’un autre tag switch, si cet autre switch est son voisin en amont (en suivant l’arbre multicast), il place le tag associé dans la composante de tag entrant de l’entrée de la TIB qui est associée à l’arbre.
Routage flexible (routes explicites).
La propriété fondamentale du routage basé sur la destination est que la seule information utilisée pour acheminer le paquet est l’adresse de destination. Tandis que cette propriété permet un routage hautement précis, elle limite aussi la possibilité d’influencer le chemin suivi par les paquets. Ceci limite la capacité de distribuer le trafic parmi des liaisons multiples en allégeant la charge des liaisons les plus utilisés et en redistribuant cette charge sur les liaisons moins sollicitées. Pour acheminer vers des chemins différents de celui déterminé par le routage basé sur la destination, la composante de contrôle du tag switching autorise l’installation d’associations dans les tag switchs qui ne correspondent pas aux chemins du routage basé sur la destination.
Tag Switching avec ATM.
La technologie du tag switching peut s’appliquer aux commutateurs ATM en implémentant la composante de contrôle du tag switching. L’information de tag nécessaire pour le tag switching peut être portée par le champ VCI. Si on a besoin de 2 niveaux de tagging, le champ VPI peut être lui aussi utilisé bien que la taille du champ VPI limite la taille du réseau. Pour supporter la fonction de routage basé sur la destination avec le tag switching sur un commutateur ATM, il faut que le switch maintienne plusieurs tags associés à une route (ou à un groupe de routes possédant le même next hop). Il est indispensable d’éviter l’enchevêtrement des paquets qui proviennent des différents tags switchs en amont mais qui sont envoyés simultanément au même next hop. On peut utiliser l’allocation de tag sur demande en aval ou bien utiliser le schéma de l’allocation en amont pour l’allocation des tags et les procédures de maintenance de la TIB avec les commutateurs ATM.
Par conséquent, un commutateur ATM peut supporter le tag switching, mais il a au minimum besoin d’implémenter des protocoles de routage niveau réseau ainsi que la composante de contrôle du tag switching sur le commutateur. Il a aussi besoin de supporter l’acheminement niveau réseau. L’implémentation du tag switching sur un commutateur ATM simplifie l’intégration des routeurs et des commutateurs ATM. Un commutateur ATM capable de faire du tag switching apparaît comme un routeur pour le routeur adjacent. Les schémas d’adressage, de routage et de signalisation ATM ne sont plus nécessaires.
Qualité de service.
On utilise 2 mécanisme pour fournir une gamme de qualité de service aux paquets qui traversent un routeur ou un tag switch. On a tout d’abord besoin de ranger les paquets dans différentes classes. On doit ensuite s’assurer que la manipulation des paquets est telle que les caractéristiques appropriées de QOS sont fournies à chaque classe.
