De l'augmentation des performances grâce au multilayer-switching

MLS (MultiLayer Switch) procure un niveau de performances élevé en utilisant le meilleur du switching et du routing grâce à l'emploi d'ASIC.
IP est conectionless, délivrant chaque paquet indépendamment des autres.
Cependant le trafic réseau actuel est basé sur des conversations de bout en bout, tel que HTTP ou FTP.
MLS est une technique pour augmenter les performances de routage IP.

Il ne faut pas confondre MLS avec les Netflaw Feature Card de routeurs Cisco. MLS utilise le Route Switch Module (RSM) ainsi qu'un routeur, directement ou non, attaché. Ce n'est pas une obligation d'utiliser le NetFlow Switching avec MLS sur un RSM ou sur un routeur externe. N'importe quel path sur le RSM ou sur un routeur externe, fonctionnera.

1.1.            MLS-RP

MLS-RP envoie des Hellos messages toutes les 15 sec. sur une adresse multicast.
Les messages utilisent les well-known address CGMP comme adresses de destination. Cette adresse assure l'interopérabilité avec les switches du réseau. Si l'adresse utilisée est la même que celle de CGMP, le contenu quant à lui des trames diffère et contient différents types de protocoles.

XTAG

Mac

vlan

41

000C-1010-01CC

10

à vers le switch

41

00CC-1010-02DD

20

La réception des Hellos Messages
Chaque switch est à l'écoute des well-known multicast address mais seuls les switches L3 comprennent ces messages. Les autres diffusent ces messages sans les comprendre.
Quand un MLS-SE reçoit une trame, il en extrait les Mac-address source et destination ainsi que l'interface associée ou le vlan ID. Le MLS-SE enregistre l'adresse du MLS-RP dans sa CAM table (Content-Adressable Memory).
Le MLS-SE assigne un tag unique pour chaque routeur: le XTAG, 1 byte rattaché à la Mac-addr du routeur.
Le XTAG est aussi employé pour effacer une entrée spécifique de L3

1.1.1.        Explications:

Step 1: Le switch reçoit une trame entrante et regarde son adresse de destination.
Step 2: Le switch reconnaît l'adresse de destination comme étant celle du MLS-RP. Le switch apprend la Mac-addr. du MLS-RP grâce aux Hellos Packets L3.
Step 3: Le MLS-SE contrôle le MLS cache pour savoir si il n'existe pas déjà une entrée pour ce flot. Une nouvelle entrée dans le cache va être créée si la trame est la 1° d'un flot. Parce que la trame contient l'adresse du MLS-RP Le switch sait qu'il s'agit potentiellement de Layer 3 switching.
Step 4: L'étude de la trame initiale ne permet pas au switch de posséder toutes les infos de L3.Le switch envoie donc au route processor. Ce process d'envoi de la trame au route processor créé un "candidate entry".
Step 5: Le route processor reçoit la trame et consulte la table de routage.
Step 6: Si le route processor détient une route pour l'adresse de destination, Le route processor reconstruit le l'en-tête de L2 qui contient maintenant la Mac-addr. source du MLS-RP.
Step 7: Le route processor entre aussi la Mac-addr. de l'adresse de destination ou du next hop.
Step 8: Le route processor retourne la trame au MLS-SE
Step 9: Quand le switch reçoit la trame, il sait quel est le port qui sera employé pour envoyé la trame basée sur la CAM table. Cependant le switch à identifié que l'a Mac-addr. source est celle du route processor.
Step 10: Puis le switch cherche à savoir si il existe une entrée dans son cache pour le route processor. Le switch compare les XTAG  pour le candidate et la trame de retour. Si les 2 XTAG concordent, ils proviennent donc du même route processor.
Step 11: Le switch enregistre l'info de la trame de retour.
Step 12: Le switch envoie la trame sur le port de sortie en utilisant la Mac-addr. de destination. La seconde trame devient une entrée enable dans le cache MLS, les infos concernant le flot sont complètes. Le flot va être envoyé en direct entre source et destination. Il est à noter que pour que le layer3 switching puisse fonctionner, le switch doit voire les 2 bouts d'un flot, source et destination.
Step 13: Quand le switch reçoit les paquets suivants du flot, le switch reconnaît que les trames contiennent la Mac-addr. du route processor.
Step 14: Le switch contrôle les trames du flot dans le MLS cache et trouve une entrée pour le flot en question.
Step 15: Le switch réécrit l'en-tête de layer 2 en modifiant la Mac-addr. de destination avec la Mac-addr. du host B ainsi que la Mac-addr. source en y plaçant la Mac-addr. du route processor. Les adresses IP de L3 restent inchangées, cependant le TTL et décrémenté, le checksum est donc recalculé. Le MLS-SE réécrit le layer 3, les paquets semblent donc  issus d'un route processor.
Step 16: Après que le MLS-SE réécrive le paquet, le switch envoie la trame retravaillée à l'adresse de Mac de destination. L'identité et l'état d'un flot sont maintenus tant que le trafic est actif. Quand le trafic s'arrête, les entrées prennent de l'age. Les entrées partial ou candidate sont préservées dans le cache pendant une durée de 5 sec.

1.1.2.        Les commandes qui désactivent MLS

no ip routing
ip security
ip tcp compression-connections
ip tcp header-compression
clear ip route

En fait, en désactivant n'importe quelle commande du routeur qui s'applique à tous les paquets, on nettoie le cache MLS et MLS se désactive. 

1.2.            Augmenter le niveau de performances du routing IP avec MLS

La configuration de MLS:
Le Multilayer switching est en fait du routage inter-vlan.
Pour activer ce routage, il convient de récupérer les informations de vlan sur le routeur.
Les Route Processors interne sont connectés sur un trunk (interne) ISL et possédent donc les infos concernant les vlans.
Les Route Processors Externes ont la connaissance de subnet mais pas de vlan. Chaque interface de routeur externe doit posséder un vlan.
1° activation de MLS
router(config)# mls rp ip à activation du route processor
2° 2cas de figure : le lien switch/routeur se fait au travers

 Interface non ISL :
router(config-if)# mls rp vlan-id n°_du_vlan
Interface ISL : on crée plusieurs sous-intefaces, 1/vlan. Puis on active MLS sur chaque sous-interface.
router(config)#interface fastethernet 2/1.41
router(config-if)# mls rp ip vtp-domain nom_du_domaine_vtp
router(config-if)# mls rp ip
On termine par l'interface de management, en général le vlan1
router(config-if)# interface vlan 1
router(config-if)# mls rp ip management-interface

3° on passe maintenet au switch:
switch(enable) set mls enable à mode par défaut
switch(enable) set mls disable à désactivation de mls pour éviter la génération de messages propres à mls.
Attachement direct (ex RSM) le switch et le routeur se voient
Attachement indirect :
sur l'interface de management, souvent le vlan 1 :
switch(enable) set mls include ip_address
 

1.3.            Les petits problèmes de mls

Quand le route processor réside dans un domaine VTP différent de celui du switch, ce dernier ne peut généré de trames multilayer pour ce routeur (quel dommage !)
vlan domain name: bcmsn
router(config)# int vlan41
router(config-if)# mls rp ip

router#show mls rp
multilayer switching is globally enabled

number of domain configured for mls 2

vlan domain name: -null-

La solution consiste à supprimer les domaines nuls de leurs interfaces :
router(config)# int vlan41
router(config-if)# no mls rp ip

En désactivant mls d'une interface, enlève l'interface d'un null-domain
Rq : Nous sommes sur un routeur, la désactivation d'une commande se fait par no commande_à_désactiver

1.4.            La vérification de la configuration MLS

2.      L'application de Flow Masks

3 types de masques :
destination IP                 à pas d'access-list
source destination IP       à access-list standard
IP flow                          à access-list étendue
MLS-SE utilise le mode flow-mask pour déterminer comment les paquets sont comparés entre les entrées MLS et le cache MLS.
Le flow mask mode est basé sur les access-lists configurées sur chaque interface des routeurs.
En utilisant des access-list, on modifie le flow mask.
Le MLS-SE apprend le flow-mask au travers de messages MLSP depuis chaque MLS-RP pour lesquels les MLS-SE réalisent le layer switching.
Le MLS-SE ne supporte qu'un seul flow mask pour l'ensemble des MLS-RP.
Si un MLS-SE détecte différents flow mask depuis différents MLS-RP pour lequel le MLS-SE réalise le L3 switching, le MLS-SE modifie son flow mask pour le flow mask le plus spécifique détecté.
On peut mettre en place un flow mask sur un MLS-SE sans appliquer une access-list sur le route processor. On utilise cette commande quand on veut cacher les entrées à partir d'un ensemble de critères pour exporter des statistiques de flot mais sans appliquer une access-list sur une interface.
! Quand un MLS-SE pointe sur plusieurs MLS-RP le flow mask le plus restrictif est utilisé.
switch(enable) set mls flow

2.1.1.        Flow Mask : destination IP

router(config)# interface vlan41
            ip address 172.16.11.143 255.255.255.0
            mls rp vtp-domain bcmsn
            mls rp management-interface
            mls rp ip

On remarque qu'aucune access-list n'est appliquée.
router# show mls rp
Multilayer switching is globally enabled
mls id is 0010.F6B3.D000
mls ip address 172.16.1.142

mls flow mask is destination-ip

number of domain configured for mls 1
vlan domain name: bcmsn

current flow mask: destination-ip

 C'est le flow mask par défaut.
Le MLS-SE maintient une entrée MLS pour chaque adresse IP de destination.

2.1.2.        Flow Mask : Source-destination IP

router(config)# interface vlan41
            ip address 172.16.11.143 255.255.255.0
            ip access-group 2 out
mls rp vtp-domain bcmsn
            mls rp management-interface
            mls rp ip

On remarque qu' une access-list standard est appliquée.
router# show mls rp
Multilayer switching is globally enabled
mls id is 0010.F6B3.D000
mls ip address 172.16.1.142

mls flow mask is source-destination-ip

number of domain configured for mls 1
vlan domain name: bcmsn

current flow mask: source-destination-ip

 Le MLS-SE maintient une entrée MLS pour chaque adresse IP source et destination.

2.1.3.        Flow Mask : Ip Flow

router(config)# interface vlan41
            ip address 172.16.11.143 255.255.255.0
            ip access-group 101 in
            mls rp vtp-domain bcmsn
            mls rp management-interface
            mls rp ip

On remarque qu' une access-list étendue est appliquée.
router# show mls rp
Multilayer switching is globally enabled
mls id is 0010.F6B3.D000
mls ip address 172.16.1.142

mls flow mask is ip-flow

number of domain configured for mls 1
vlan domain name: bcmsn

current flow mask: ip-flow

 C'est le flow mask le plus spécifique.
Le MLS-SE maintient une entrée MLS en cache pour chaque flot détecté.
Un flot IP incluse adresse IP source et destination, le protocole, le protocol port.

2.1.4.        Output access-list et MLS

2.1.5.        Input access-list et MLS

Les routeurs configurés avec un ios > 11.3 ne supportent pas automatiquement les access-list en entrée sur les interfaces configurées pour supporter MLS. Si une interface est configurée avec une acess-list en entrée, tous les paquets d'un  flot qui sont destinés à cette interface passent par le routeur. Dans ce cas même si le routeur a connaissance du flot, celui-ci ne sera jamais switché. 
Dans ce cas il existe une solution au niveau global :
router(config)# mls rp ip input-acl

3.      La configuration du multilayer switching

 switch(enable) set mls enable
Le cache MLS est limité en taille. Les entrées du cache sont donc supprimées sous certaines conditions.
Les entrées candidate sont maintenues durant 5 sec. sans enable entry correspondante.
Si aucun flot pour cette entrée n'est détecté, l'aging-time par défaut est de 256 sec.
D'autres évènements peuvent purger les entrées du cache :

La commande qui sert à modifier l'aging time :
switch(enable) set mls agingtime aging_time
Rq: La valeur de l'aging-time est une valeur multiple de 8 comprise entre 8 et 2032

3.1.            La gestion des flux courts

Certains flux sont sporadiques ou très courts, une requête DNS par ex..
La connexion sur ce type de flux sera close avant même alors qu'il n'y aura pas nécessité de la mettre en cache.
De plus la mise en cache va consommer des ressources pour rien, puisque l'entée s'y trouvera pendant au moins 5 sec.
Pour résoudre le problème des entrées à durée de vie courte du cache, il convient de mettre en place un nouveau mécanisme de vieillissement (aging-time) : le fast aging time.
Si le MLS-SE ne détecte pas un nombre de paquets spécifiques durant un temps donné, l'entrée est supprimée du cache.
2 paramètres interviennent dans la définition de fast agingtime :
La durée valide d'une entrée en cache
Le nombre de paquets qui seront détectés durant la période  spécifiée. 0, 1, 3, 5, 7, 15, 31, 63 sont des valeurs acceptées. Le défaut est 0
switch(enable) set mls agingtime fast 64 7
Dans cet exemple les entrées qui font moins de 7 paquets durant 64 secondes seront supprimées du cache.
switch(enable) show mls à pour verifier la configuration
Multilayer switching enabled
Multilayer switching aging time = 304 seconds
Multilayer switching fast aging time = 64 seconds, packets threshold = 7


Pour voir les infos d'un MLS-RP, il convient de rentrer la commande :
switch(enable) show mls rp addr_ip_du_mls-rp

Il convient de ne pas confondre show mls rp sur le MLS-SE et sur le MLS-RP.

3.2.            Définition d'un routeur externe

switch(enable) set mls include 172.16.41.168
Multilayer switching enabled for router 172.16.41.168

Cette commande n'est valide que pour les routeurs externes.
Le MLS-SE incluse automatiquement l'adresse IP de son MLS-RP. Si le module RSM-RP est physiquement supprimé ou désactivé, son adresse IP est automatiquement retirée. Cette adresse ne peut être enlevée par la commande :
switch(enable) clear mls include
Comment visualiser la liste d'inclusion du switch (la liste qui contient l'adresse IP du MLS-RP) :
switch(enable) show mls include
Included MLS-RP

--------------------
172.16.1.142     à le MLS-RP interne est ajouté automatiquement
172.16.41.168   à le route processor externe est ajouté manuellement

3.3.            La visualisation des entrées de cache MLS

switch(enable) show mls entry
Destination IP         Source IP              Prot        DstPrt       SrcPrt    Destination Mac                  Vlan      Port
----------------        ---------------         ------      --------    --------    -------------------                ------      -----
MLS-RP 172.16.1.142:
172.16.1.143     172.16.87.3                   UDP      1238          60224     00-10-7b-ee-94-70             1          2/9
172.16.1.143     172.16.87.3                   UDP      69             60224     00-10-7b-ee-94-70             1          2/9
172.16.1.143     172.16.87.3                   UDP      69             36776     00-10-7b-ee-94-70             1          2/9

MLS-RP 172.16.41.168:
172.16.41.17     172.16.53.1                   UDP      60224       1238      00-00-0c-06-5b-1e              41        2/1
172.16.41.17     172.16.53.1                   UDP      36776       69         00-00-0c-06-5b-1e              41        2/1

 switch(enable) show mls entry destination ip_address    à pour une adresse spécifique
switch(enable) show mls entry source ip_address                      
à pour une adresse source spécifique
switch(enable) show mls entry rp  ip_address                
à pour un MLS-RP spécifique
switch(enable) show mls entry flow prot. src-port dest-port         à pour un flot IP  spécifique

3.4.            Enlever les entrées de cache MLS

switch(enable) clear mls entry destination ip_address     à cleare toutes les entrées pour une adresse IP de destination
switch(enable) clear mls entry source ip_address             à vide toutes les entrées pour une adresse IP source
switch(enable) clear mls entry flow prot. src-port dest-port          à vide toutes les entrées pour un flot donné

4.      Différents exemples de topologies utilisant le multilayer switching

4.1.            Les topolgies du multilayer switching qui ne sont pas supportées

Publié le samedi 11 novembre 2006
Mis à jour le vendredi 10 novembre 2006
par Jack Mielcarek