Traffic+Engineering

III] Traffic Engineering sur le réseau MPLS 1. Introduction Le but des tests présentés ci-dessous est de mettre en œuvre certains mécanismes offerts par MPLS pour effectuer du Traffic Engineering sur un réseau. Les scénarios étudiés sont : - Création d’un lien statique pour répartir la charge sur un réseau - Création d’un lien de secours pour sécuriser un lien en cas de panne - Création d’un lien dynamique avec une contrainte de la bande passante Ces scénarios sont implémentés sur le réseau complet des 3 agences. 2. Création d’un lien statique 2.1 Objectif L'objectif de ce test est de définir explicitement une route reliant LER1 à LER2 en passant par LSR3. Or un paquet allant de LER1 à LER2 emprunte le chemin le plus direct, c’est-à-dire qu’il ne passe pas par LSR3. Sur un réseau réel, les chemins les plus courts sont parfois congestionnés alors que d’autres sont sous-utilisés. Le Traffic Engineering permet de répartir la charge sur le réseau en obligeant certains flux à emprunter les chemins moins utilisés par le protocole de routage interne. 2.2 Autoriser le Traffic Engineering sur les routeurs Pour commencer, il faut configurer tous les routeurs afin qu’ils supportent le Traffic Engineering. La commande //**mpls traffic-eng tunnels**// active la fonction tunnel du routeur. //**router(config)# mpls traffic-eng tunnels**// Afin que chaque routeur puisse être identifié par une adresse IP unique, nous utilisons une interface virtuelle appelée loopback 0. L’adresse IP de cette interface se configure de la même manière qu’une interface physique classique. Cette adresse doit posséder un masque de 32 bits. //**router(config)# interface loopback 0**// //**router(config-int)# ip address 12.0.0.x 255.255.255.255**// Voici les adresses IP utilisées pour chaque routeur : •LER1 : 12.0.0.1 •LSR1 : 12.0.0.2 •LSR2 : 12.0.0.4 •LSR3 : 12.0.0.3 •LER2 : 12.0.0.5 •LER3 : 12.0.0.6 Pour faire du Traffic Engineering, le routeur doit connaître la topologie du réseau. Pour cela, on peut lui dire d’utiliser la topologie connue par OSPF grâce à la commande //**mpls traffic-eng area**//. L’area est toujours la même que celle dans laquelle on veut faire du Traffic Engineering. **//router(config)# router ospf 10//** **//router(config-router)# mpls traffic-eng area 0//** La commande suivante permet de configurer l’identificateur du routeur utilisé pour le Traffic Engineering. Nous identifions les routeurs avec leur adresse de loopback. //**router(config-router)# mpls traffic-eng router-id loopback 0**// Pour que OSPF ajoute les adresses d’identifications des routeurs dans les tables, il faut ajouter la plage d’adresse 12.0.0.0 dans l’area 0. //**router(config-router)# network 12.0.0.0 0.0.0.255 area 0**// Pour autoriser les tunnels sur une interface, la commande //**mpls traffic-eng tunnels**// doit être ajoutée dans la configuration de cette interface. Chaque interface utilisée par le tunnel doit être configurée ainsi. //**router(config-int)# mpls traffic-eng tunnels**// 2.3 Création des chemins Un tunnel est unidirectionnel. Il faut donc créer un tunnel pour le chemin d’aller et un autre pour le chemin de retour. Un tunnel est défini sur le routeur se trouvant à son entrée. Dans notre cas, cela correspond aux deux LER. __Configuration du tunnel 1 sur LER1 :__ Le routeur voit un tunnel comme une interface. Il suffit de taper la commande //**interface tunnel id**// pour le créer et entrer dans son mode de configuration. L'//**id**// étant le numéro permettant d’identifier le tunnel sur le réseau. //**LER1(config)# interface tunnel 1**// Il faut configurer l’adresse IP de cette interface. Un tunnel MPLS ne doit pas être numéroté (//**unnumbered**// ) car il représente une connexion unidirectionnelle. On l’associe à l’identificateur du routeur. //**LER1(config-int)# ip unnumbered loopback 0**// Ensuite, il faut définir la destination du tunnel. Dans notre cas, cette destination est LER2 (12.0.0.5). //**LER1(config-int)# tunnel destination 12.0.0.5**// La commande suivante indique que le mode d’encapsulation des paquets utilisé pour le tunnel est MPLS. //**LER1(config-int)# tunnel mode mpls traffic-eng**// Le tunnel doit être signalé aux IGP afin qu’il soit pris en compte lors de la création des tables de routage. Pour cela, il faut utiliser la commande suivante : //**LER1(config-int)# tunnel mpls traffic-eng autoroute announce**// La commande ci-dessous indique au tunnel qu’il doit suivre la route explicitée par l’identificateur 1. //**LER1(config-int)# tunnel mpls traffic-eng path-option 1 explicit identifier 1**// Ci-dessous est définie la route explicitée par l'identificateur 1. Cette route est indiquée en faisant la liste des routeur devant être traversés par le tunnel. Selon la FIGURE 8.1, le tunnel 1 doit passer par LSR1, LSR3, LSR2 pour finir à LER2. //**LER1(config)# ip explicit-path identifier 1**// //**LER1(cfg-ip-expl-path)# next-address 12.0.0.2**// //**LER1(cfg-ip-expl-path)# next-address 12.0.0.4**// //**LER1(cfg-ip-expl-path)# next-address 12.0.0.3**// //**LER1(cfg-ip-expl-path)# next-address 12.0.0.5**// __Configuration du tunnel 2 sur LER2 :__ La configuration du second tunnel sur LER2 se fait de la même manière que celle de LER1 : //**LER2(config)# interface tunnel 2**// //**LER2(config-int)# ip unnumbered loopback 0**// //**LER2(config-int)# tunnel destination 12.0.0.1**// //**LER2(config-int)# tunnel mode mpls traffic-eng**// //**LER2(config-int)# tunnel mpls traffic-eng autorouteannounce**// //**LER2(config-int)# tunnel mpls traffic-eng path-option 1 explicit identifier 1**// //**LER2(config)# ip explicit-path identifier 1**// //**LER2(cfg-ip-expl-path)# next-address 12.0.0.3**// //**LER2(cfg-ip-expl-path)# next-address 12.0.0.4**// //**LER2(cfg-ip-expl-path)# next-address 12.0.0.2**// //**LER2(cfg-ip-expl-path)# next-address 12.0.0.1**// Remarque : Pour que la route explicitée soit valide, il faut redémarrer les routeurs LER1 et LER2.