Cisco France Blog

J'ai testé pour vous : Zero-touch deployment – Que faire quand auto-smartports ne fait pas ce que je veux?

4 min read



Voici le premier post d’une longue série j’espère concernant ce que l’on appelle “Zero-touch deployment”, c’est-à-dire comment on peut déployer un réseau qui va s’auto-configurer. Cela est particulièrement utile au niveau des nombreux commutateurs d’accès pour lesquels on se passerait bien volontiers de passer du temps à les configurer. On branche le switch et celui-ci va télécharger le bon IOS, la bonne configuration, et les ports seront ensuite automatiquement configurés en fonction de l’équipement connecté et l’authentification faite sur le port. On va parler de fonctionnalités comme Smart-Install, Auto Smartports, ISE, radius, 802.1X, etc. mais n’anticipons pas trop. Ici je vais me concentrer sur Auto Smartports et comment “customiser” cette fonctionnalité…

Auto Smartports est la fonctionnalité Cisco qui va permettre d’appliquer automatiquement des configurations sur un port en fonction de l’équipement qui va être connecté. Des règles de profiling sont définies par défaut dans l’IOS mais ne font pas toujours ce que l’on veut… On peut même avoir des scénarios dans lesquels le profiling fait sur l’équipement n’est pas forcément celui escompté. Ce post a pour objectif de montrer la souplesse que l’on peut avoir avec Auto Smartports et qui va nous permettre de répondre à la plupart des cas de figure rencontrés.

J’ai fait tous les tests ci-dessous sur un 4500 en Sup6L-E en 15.1(1)SG. Afin d’illustrer une erreur de profiling de Auto Smartports, je branche sur le port GigabitEthernet 1/11 un routeur Cisco 2951 et l’on constate que l’équipement est reconnu comme un commutateur:

4507-2#sh macro auto interface gigabitEthernet 1/11
 Global Auto Smart Port Status
 Auto Smart Ports Enabled
 Fallback : CDP Disabled
Interface Auto Smart Port Fallback Macro Description(s)
--------------------------------------------------------------
Gi1/11 TRUE None CISCO_SWITCH_EVENT

Avec la configuration ci-dessous pour la macro Switch:

interface GigabitEthernet1/11
 switchport mode trunk
 auto qos trust
 macro description CISCO_SWITCH_EVENT
 service-policy input AutoQos-4.0-Input-Policy
 service-policy output AutoQos-4.0-Output-Policy
end

Vous constaterez que j’ai bien connecté un routeur 2951 sur le port en question:

4507-2#sh cdp neighbors | i 1/11
 Gig 1/11 145 R S I CISCO2951 Gig 0/1

Alors quelle est l’origine du problème? Auto Smartports se base sur 2 composantes:

  • Le Device sensor, qui permet de récupérer des informations de profiling du device localement (via MAC, CDP, LLDP, DHCP). Ces informations sont brutalement récupérées sur le routeur et associées à chaque port.
  • Le Device classifier, qui va déterminer le type de matériel à partir des informations recueillies par device sensor, et qui va ensuite appliquer les bonnes macros (en théorie). Mais devant le nombre d’équipements en jeu des mauvaises décisions peuvent être prises par le device classifier aussi il faut pouvoir prendre le contrôle.

Voyons quelles sont les options pour résoudre un problème de profiling et voyons quelle souplesse on a sur le déploiement d’Auto-Smartports.

Rajouter une règle par adresse MAC

La technique consiste à définir des groupes d’adresses MAC (en spécifiant les MAC ou les OUI) qui permettront de lancer des macros. Quand une adresse MAC est vue sur un port comme appartenant à un groupe alors on va lancer la macro correspondante. Ci-dessous je configure un groupe d’adresse MAC appelé MAC-MAC qui contient l’adresse MAC de mon MAC 🙂

macro auto mac-address-group MAC-MAC
 mac-address list C82A.142D.A5FD

Ensuite je définis la macro qui va être appliquée quand l’adresse MAC est vue sur un port. J’aurais également pu appeler une fonction déjà existante dans le système mais mon objectif ici est de montrer toute la souplesse permise par auto smartports.

macro auto execute MAC-MAC {
 if [[ $LINKUP -eq YES ]]
 then conf t
 interface $INTERFACE
 macro description $TRIGGER
 exit
 end
 fi
 if [[ $LINKUP -eq NO ]]
 then conf t
 interface $INTERFACE
 no macro description
 exit
 end
 fi
}

Je shut et no shut le port et je vois que la bonne macro est appliquée sur le port 1/12 où j’ai connecté mon laptop.

4507-2#sh macro auto interface gi1/12
 Global Auto Smart Port Status
 Auto Smart Ports Enabled
 Fallback : CDP Disabled
Interface Auto Smart Port Fallback Macro Description(s)
--------------------------------------------------------------
Gi1/12 TRUE None MAC-MAC

Et on observe que la configuration du port est mise à jour en conséquence… Pas grand chose dans la config: à vous de mettre ce que vous voulez dans vos scripts!

interface GigabitEthernet1/12
 macro description MAC-MAC
end

Ici je peux donc simplement créer des nouvelles règles. Evidemment cela suppose de connaître les adresses MAC ou les OUI des systèmes concernés ce qui n’est pas toujours simple. Aussi cette méthode ne pourra pas toujours être déployée. Les méthodes suivantes pourront peut-être vous aider.

Rajouter une règle sur le nom du voisin CDP

La première étape consiste à récupérer le nom exact du neighbor CDP.

Device ID: C2951-1.test.cisco.fr
Entry address(es):
 IP address: 10.153.0.51
 IPv6 address: A::A (global unicast)
 IPv6 address: FE80::7281:5FF:FEF6:7DF1 (link-local)
Platform: Cisco CISCO2951/K9, Capabilities: Router Switch IGMP
Interface: GigabitEthernet1/11, Port ID (outgoing port): GigabitEthernet0/1
Holdtime : 160 sec

Attention s’il y a des “espaces” cachés, il faut récupérer tous les cartactères avant la “virgule”. Ensuite on définit un trigger qui va déclencher une macro sur détection de ce voisin CDP.

macro auto trigger CISCO_2951
 device Cisco CISCO2951/K9

Et en dernier lieu je créé la macro CISCO_2951 qui va être appelée par le trigger précédemment défini.

macro auto execute CISCO_2951 {
 if [[ $LINKUP -eq YES ]]
  then conf t
  interface $INTERFACE
  macro description $TRIGGER
  exit
  end
 fi
 if [[ $LINKUP -eq NO ]]
  then conf t
  interface $INTERFACE
  no macro description
  exit
  end
 fi
}

Vous noterez que la macro ne fait aucune configuration: elle se contente d’appliquer un nom de macro sur l’interface. A vous de configurer ce que vous voulez…

Je shut / no shut le port et la bonne macro s’applique:

4507-2#sh macro auto interface gigabitEthernet 1/11
 Global Auto Smart Port Status
 Auto Smart Ports Enabled
 Fallback : CDP Disabled
Interface Auto Smart Port Fallback Macro Description(s)
--------------------------------------------------------------
Gi1/11 TRUE None CISCO_2951

Jetons un coup d’oeil à la configuration du port

interface GigabitEthernet1/11
 macro description CISCO_2951
end

Cette possibilité offerte depuis peu en IOS et pas encore documentée je crois permet donc de faire plus ou moins tout ce que l’on veut sous réserve que l’équipement distant parle CDP.

Déporter le profiling sur serveur radius distant (ISE) qui appliquera la bonne macro

Cette option est à mon avis la meilleure puisqu’elle permet de centraliser la prise de décision sur un serveur ISE (Identity Service Engine) qui offre une console de management simplifiée. Au delà du profiling ce serveur permettra également la gestion de l’authentification 802.1X, le contrôle de posture, et la définition des règles sur tout le réseau WiFi. Promis je posterai un article avec des tests poussés sur ISE.

Références

Configuration guide Auto Smartports 4500 – 15.1(1)SG

 Configuration guide Auto Smartports 3k/2k – 15.0(2)SE

Authors

Jerome Durand

Technical Solutions Architect

Laisser un commentaire


1 commentaires