LLDP (Link Layer Discovery Protocol)

LLDP est un protocole standardisé (IEEE 802.1AB) de découverte de réseau ayant pour vocation de supplenter la multitudes de protocoles propriétaires du même type (Cisco Discovery Protocol, Nortel Discovery Protocol, …) et ainsi de permettre aux équipements de différents fabriquants de se découvrir mutuellement.

Introduction

LLDP est défini par le standard IEEE 802.1AB. Il s’agit d’un protocole de la couche liaison de données du modèle OSI (protocole de niveau 2). Ce qui signifie que LLDP est directement véhiculé dans une trame. Il est conçu pour fonctionner sur les réseaux de type IEEE 802 (Ethernet, …). Comme pour CDP il s’agit d’une simple émission de messages à interval régulier (Ce n’est pas une communication bidirectionnelle).

Les messages LLDP portent le doux nom de LLDPDU. Chacun de ces message est composé d’une suite de structures appellées TLV (Type-Length-Value) servant à contenir les informations.
Les LLDPDU sont envoyés à une adresse MAC destination spéciale qui n’est pas forwardée par les switches (0180.c200.000e, 0180.c200,0003 ou 0180.c200.0000), ce qui signifie que, à l’instar de CDP, LLDP sert à communiquer au travers d’un lien uniquement. D’équipement à équipement.
LLDP possède son propre EtherType (0x88CC) qui est donc indiqué dans le champs « Type » de la trame Ethernet.

Structure du LLDPDU

  • DMAC: Adresse MAC destination (0180.c200.000e, 0180.c200,0003 ou 0180.c200.0000).
  • SMAC: Adresse MAC de la machine émetrice.
  • TYPE: 0x88CC.
  • TLV1: Chassis ID, identifiant de la machine.
  • TLV2: Port ID, identifie le port depuis lequel le LLDPDU est émis.
  • TLV3: TTL TLV, Indique la durée de vue du LLDPDU.
  • TLVx: TLV supplémentaires optionnels.
  • ENDTLV: Indique la fin des TLVs dans le LLDPDU.

Structure d’un TLV

  • TLV Type (7 bits): indique la nature du TLV.
  • TLV Length (9 bits): indique la longueur de l’information.
  • TLV String (0-511 octets): information du TLV.

Principaux TLVs

  • Chassis ID (Type 1) : Identifie la machine émetrice (obligatoire).
  • Port ID (Type 2) : Identifiant du port duquel est émis le LLDPDU (obligatoire).
  • TTL TLV (Type 3) : Indique la durée de vie du LLDPDU (obligatoire).
  • Port Description (Type 4) : Description textuelle du port (optionnel).
  • System Name (Type 5) : Nom de la machine émetrice (optionnel).
  • System Description (Type 6) : Description de la machine émetrice (optionnel).
  • System Capabilities (Type 7) : Fonctionnalités de la machine émetrices (optionnel).
  • Management Address (Type 8) : Adresse IP de management de la machine (optionnel).

LLDP-MED (LLDP for Media Endpoint Devices)

LLDP-MED est une extension de LLDP servant à communiquer avec les équipements terminaux (les téléphones VoIP par exemple) qui offre des TLVs complémentaires pour supporter des informations relatives au PoE (Power Over Ethernet), à la localisation de l’équipement, aux polices d’accès réseau (informations relatives au VLANs, …), ou encore à la gestion d’inventaire (modèle de l’équipement, version du software, numéro de série, …). Sur les équipements Cisco, LLDP-MED est actif dés qu’on utilise LLDP.

Paramètres par défaut de LLDP (pour les équipements Cisco)

  • Etat initial de LLDP: désactivé
  • Etat initial de LLDP: désactivé
  • LLDP Holdtime (TTL): 120 secondes
  • LLDP Timer: 30 secondes (interval entre deux LLDPDU)
  • LLDP init delay: 2 secondes (temps d’attente avant premier envoi sur une interface)
  • LLDP tlv-select: désactivé (tous les TLVs sont envoyés par défaut)
  • LLDP med-tlv-select: désactivé (tous les TLVs spéciaux sont envoyés par défaut)

Disponibilité de LLDP sur les équipements Cisco

LLDP est un protocol assez récent et donc il est implémenté sur les plateformes assez récentes.
Pour les platerofmes de type IOS:

  • Côté switch, on le trouve à partir de la game des WS-C2960, WS-C3560, WS-C3750 et ME3400 depuis la version 12.2(37)SE toute licence confondue.
  • Côté routeur, il faut un IOS en version 15.2M pour les plateformes courantes et donc uniquement dans les dernières générations comme les séries 1900, 2900, 3900 ou encore dans les plus petits modèles les séries 880 et 890.

C’est un élément à prendre en compte pour la nouvelle CCNP et l’acquisition de matériel dans cette optique. Pour ma part j’ai eu du flair en faisant l’acquisition de trois WS-C3750 pour une bouchée de pain.

Configuration de base de LLDP

Commençons par vérifier l’état initial de LLDP dans une configuration par défaut…

3750-1#show lldp
% LLDP is not enabled
3750-1#

Comme prévu LLDP est désactivé par défaut. Activons le… et voyons ce que ça change.

3750-1#configure terminal
3750-1(config)#lldp run
3750-1(config)#end
3750-1#show lldp

Global LLDP Information:
    Status: ACTIVE
    LLDP advertisements are sent every 30 seconds
    LLDP hold time advertised is 120 seconds
    LLDP interface reinitialisation delay is 2 seconds
3750-1#

LLDP est maintenant active avec un timer par défaut de 30 secondes, une durée de vie des LLDPDU de 120 secondes et un délai d’initialisation sur les interfaces de 2 secondes.

Qu’en est-il des interfaces ? Sont elles actives ou non ?

3750-1#show lldp interface

FastEthernet1/0/1:
    Tx: enabled
    Rx: enabled
    Tx state: INIT
    Rx state: WAIT PORT OPER

FastEthernet1/0/2:
    Tx: enabled
    Rx: enabled
    Tx state: INIT
    Rx state: WAIT PORT OPER
	
	....

Activer LLDP globalement active également toutes les interfaces possibles!
Mais le switch discute-t-il vraiment ? Pour vérifier, branchons un autre switch à celui-ci (avec LLDP activé de la même manière).

3750-1#debug lldp packets
LLDP packet info debugging is on
3750-1#
*Mar  1 00:44:50.989: %LINK-3-UPDOWN: Interface FastEthernet1/0/1, changed state to up
*Mar  1 00:44:51.996: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0/1, changed state to up
3750-1#
*Mar  1 00:45:20.836: LLDP advertisement packet RX'd on intf FastEthernet1/0/1
*Mar  1 00:45:20.920: LLDP advertisement packet TX'd on intf FastEthernet1/0/1
3750-1#

L’interface passe UP/UP, le temps que Spanning-Tree fasse son job et hop, les premiers LLDPDU sont échangés!

Regardons maintenant à quoi ressemble le résultat…

3750-1#show lldp neighbors
Capability codes:
    (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device
    (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other

Device ID           Local Intf     Hold-time  Capability      Port ID
3750-2              Fa1/0/1        120        B               Fa3/0/1

Total entries displayed: 1

3750-1#

Notez que l’affichage ressemble très fort à celui de CDP et que les informations sont quasi identiques! « show lldp neighbors » affiche donc une liste simplifiée des voisins directements connectés. Comme pour CDP nous pouvons afficher les informations détaillées pour tous les voisins (dans ce cas-ci il n’y en a qu’un 😉 )…

3750-1#show lldp neighbors detail
------------------------------------------------
Chassis id: 001b.d59e.3100<= Adresse MAC principale du switch (TLV Chassis ID)
Port id: Fa3/0/1<= Port émetteur, donc celui du voisin (TLV Port ID)
Port Description: FastEthernet3/0/1<= Nom complet de l'interface du voisin (TLV Port description)
System Name: 3750-2<= Hostname du voisin (TLV System Name)

System Description:
Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 12.2(55)SE7, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2013 by Cisco Systems, Inc.
Compiled Mon 28-Jan-13 10:16 by prod_rel_team

Time remaining: 97 seconds
System Capabilities: B,R
Enabled Capabilities: B
Management Addresses - not advertised
Auto Negotiation - supported, enabled
Physical media capabilities:
    100base-TX(FD)
    100base-TX(HD)
    10base-T(FD)
    10base-T(HD)
Media Attachment Unit type: 16
Vlan ID: 1


Total entries displayed: 1

3750-1#

De nouveau cela ressemble très fort à l’affichage de CDP, toutefois, les informations affichées concernent l’émetteur du LLDPDU … cela vaut aussi pour l’interface affichée. Attention à la confusion!

Il est également possible d’afficher les informations détaillées pour un seul équipement en spécifiant son Hostname.

3750-1#show lldp entry 3750-2

Capability codes:
    (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device
    (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other
------------------------------------------------
Chassis id: 001b.d59e.3100
Port id: Fa3/0/1
Port Description: FastEthernet3/0/1
System Name: 3750-2

System Description:
Cisco IOS Software, C3750 Software (C3750-IPSERVICESK9-M), Version 12.2(55)SE7, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2013 by Cisco Systems, Inc.
Compiled Mon 28-Jan-13 10:16 by prod_rel_team

Time remaining: 94 seconds
System Capabilities: B,R
Enabled Capabilities: B
Management Addresses - not advertised
Auto Negotiation - supported, enabled
Physical media capabilities:
    100base-TX(FD)
    100base-TX(HD)
    10base-T(FD)
    10base-T(HD)
Media Attachment Unit type: 16
Vlan ID: 1


Total entries displayed: 1
3750-1#

Comme pour CDP, il est possible d’avoir les statistiques concernant le nombre de messages envoyés et reçus, le nombre d’erreurs etc…

3750-1#show lldp traffic

LLDP traffic statistics:
    Total frames out: 78		<= LLDPDU envoyés
    Total entries aged: 0		<= LLDPDU expirés
    Total frames in: 78			<= LLDPDU reçus
    Total frames received in error: 0   <= Erreurs à la réception
    Total frames discarded: 0           <= Trames rejetées
    Total TLVs discarded: 0             <= TLVs rejetés
    Total TLVs unrecognized: 0          <= TLVs inconnus
3750-1#

Pour afficher l’état de LLDP sur les interfaces…

3750-1#show lldp interface

FastEthernet1/0/1:
    Tx: enabled
    Rx: enabled
    Tx state: IDLE			<= En attente d'émission (l'interface est fonctionelle)
    Rx state: WAIT FOR FRAME		<= En attente de réception

FastEthernet1/0/2:
    Tx: enabled
    Rx: enabled
    Tx state: INIT			<= En attente d'initialisation de l'interface (rien n'est connecté)
    Rx state: WAIT PORT OPER        <= En attente d'initialisation de l'interface (rien n'est connecté)
	
	...

Pour afficher l’état de LLDP d’une interface spécifique…

3750-1#show lldp interface fastEthernet 1/0/1

FastEthernet1/0/1:
    Tx: enabled
    Rx: enabled
    Tx state: IDLE
    Rx state: WAIT FOR FRAME
3750-1#

Paramétrage de LLDP

Activation globale de LLDP

3750-1(config)#lldp run

Désactivation globale de LLDP

3750-1(config)#no lldp run

Configurer l’interval entre deux LLDPDU (10 secondes par exemple). Vous pouvez choisir une valeur comprise entre 5 et 65534 secondes.

3750-1(config)#lldp timer 10

Configurer la durée de vie des LLDPDU envoyés (par exemple 60 secondes). Vous pouvez définir une durée de vie de 0 à 65535 secondes.

3750-1(config)#lldp holdtime 60

Configurer le délai d’initialisation de LLDP, (par exemple 4 secondes). Valeur comprise entre 2 et 5 secondes.

3750-1(config)#lldp reinit 4

Par défaut LLDP transmet tous les TLVs disponibles. Mais vous pouvez choisir de restreindre cela en définissant ceux à propager.
Il faut répéter la commande pour chaque TLV. Une fois un TLV choisi, l’équipement ne propagera plus que lui (et ceux qui vous configurerez après).

3750-1(config)#lldp tlv-select ?
  mac-phy-cfg          IEEE 802.3 MAC/Phy Configuration/status TLV
  management-address   Management Address TLV
  port-description     Port Description TLV
  port-vlan            Port VLAN ID TLV
  power-management     IEEE 802.3 DTE Power via MDI TLV
  system-capabilities  System Capabilities TLV
  system-description   System Description TLV
  system-name          System Name TLV

3750-1(config)#

Pour envoyer tous les TLVs, il faut annuler les différentes commandes « lldp tlv select » entrées.

Paramétrage spécifique de LLDP à une interface

Activer l’émission des LLDPDUs

3750-1(config-if)#lldp transmit

Désactiver l’émission des LLDPDUs

3750-1(config-if)#no lldp transmit

Activer la réception des LLDPDUs

3750-1(config-if)#lldp receive

Désactiver l’émission des LLDPDUs

3750-1(config-if)#no lldp receive

Notez que par défaut, les interfaces envoient et reçoivent les LLDPDU une fois que LLDP est activé globalement.

Vous pouvez également défini les TVLs mais aussi les MED-TLV à émettre par l’interface. Par exemple:

3750-1(config-if)#lldp tlv-select ?
  power-management  IEEE 802.3 DTE Power via MDI TLV

Et…

3750-1(config-if)#lldp med-tlv-select ?
  inventory-management  LLDP MED Inventory Management TLV
  location              LLDP MED Location TLV
  network-policy        LLDP MED Network Policy TLV
  power-management      LLDP MED Power Management TLV

Pour conclure

Comme beaucoup de protocoles standardisé, LLDP hérite quasi toutes ses fonctionnalités de ses prédécesseurs propriétaires. A priori, lorsque son implémentation sera plus globale, il remplacera CDP avec aisance.
Là ou Cisco a clairement pensé à nous, c’est dans son implémentation. Vous utilisez CDP ? Alors changez un mot clé dans la commande et vous savez utiliser LLDP ! (« show cdp neighbors » ou « show lldp neighbors » … quelle différence ?).

Voici donc un des sujets ajoutés dans la nouvelle version dde l’examen CCNP Switch … pas de quoi fouetter un chat … si ?

0 Comments on “LLDP (Link Layer Discovery Protocol)