LLDP / 802.1ab

Woher weiß ein Telefon oder Lync Client, wo er "angeschlossen" ist?, wenn er z.B. den Standort anzeigen will? Dafür und einiges andere gibt es LLDP. Der Client kann per LLDP kund tun, was er ist und was er kann und ein Switch kann per LLDP ebenfalls z.B. den Standort verraten.

Technik auf dem Kabel

Das funktioniert alles auf dem "Kabel" und zwar komplett losgelöst von klassischen Protokollen wie IPv4 oder IPV6. Die LLDP-Pakete werden als Ethernet Frame an eine gesondertes Multicast-MAC-Adresse (01:80:c2:00:00:0e) gesendet. Hier mal so ein Beispielpaket eines Lync Telefons.

Hier ist jetzt nicht aufgeklappt, welche unterschiedlichen Features das Telefon unterstützt, da dann die Liste relativ lang und unübersichtlich wird. Das Telefon verrät aber, dass es eben ein VoIP-Device ist, per PoE gespeist wird und einige andere Dinge. Anhand dieser Informationen kann also ein Switch schon erkennen, wer an einem Port hängt. Umgekehrt kann auch ein Switch natürlich Informationen über den Port an den "Next Hop" senden. Im Falle eines Endgerät wie einem Telefon könnten das Standortinformationen sein. Aber auch die Verbindung zwischen Switches kann so recht einfach erkannt werden. LLDP ist dabei ein unidirektionales Protokoll, d.h. es wird einfach nur gesendet ohne zu wissen, ob jemand die Daten auch empfängt.

Nach meinen Beobachtungen sendet ein Device alle 30 Sekunden einen Status, wie man hier an zwei Geräten sehen kann:

Das Aastra-Gerät in dem Beispiel sendet durchaus umfangreiche Bestandsdaten:

Allerdings kann natürlich ein Empfänger die Daten nutzen, um basierend darauf seine Konfiguration zu ändern oder auch einfach nur die Daten für weitere Dienste bereit zu stellen. Es ist gar nicht mal ungewöhnlich, dass ein Switch diese Daten sammelt und per SMNP an ein Management mitteilt.

LLDP für Switches

Damit ein Switch dem Endgerät natürlich einen Standort mitgeben kann, muss das im Switch hinterlegt werden. Ich habe das am Beispiel eines kleinen Cisco SG2000-08P Switch dokumentiert. Hier kann ich z.B. sehr einfach den Standort hinterlegen.

Leider kommen zumindest bei meinem Cisco SG200 diese Daten noch nicht am Client an. Da ist der Router deutlich verschwiegener. Nur die Chassis-ID und der Port wird gemeldet:

Das reicht aber noch nicht, denn ich muss dann auf jeden Port noch steuern, ob dort LLDP genutzt werden darf. Ich habe es natürlich erst mal für alle Ports eingeschaltet:

Geht man dann auf die "Neighbour Information", dann sieht man sehr gut, die Details des Endgeräts an dem Port:

Oder hier die Daten eines Audiocodes 420HD mit Angaben zum PoE Strombedarf

 

Selbst ein schon älterer HP Switch unterstützt das Einsammeln von LLDP Paketen und zeigt diese als Liste an:

Je nach Switch kann z.B. die PoE-Konfiguration von der LLDP-Meldung des Clients abhängig gemacht werden.

LLDP und VLAN

Einige Switches können das Endgerät anhand  der LLDP Meldungen in ein VLAN stecken, z.B. Telefone in ein Voice-VLAN.

Wobei dies eher ein weiches Kriterium ist. Für einen Angreifer ist es nicht schwer ein LLDP-Paket zum Switch zu senden um sich dann als Telefon auszugeben und damit dann mit einem PC den Zugang ins Voice Netz zu erhalten. Sie sollten in diesem Voice Netz ihren SIP-Server dennoch immer mit Authentifizierung betreiben.

LLDP und Lync

Der Lync Communicator selbst nutzt leider LLDP gar nicht. Dieser kann die LIS-Policies aktuell nur über das Subnetz ermitteln. Wer also diese Clients verorten möchte, muss kleine Subnetze einrichten, z.B.: pro Stockwerk.

Anders sieht es mit Lync Telefonen aus, die sehr wohl LLDP sprechen und Verstehen. Hier z.B. die Konfiguration für den Port 5 an meinem Cisco SG200-Router:

Set-CsLisPort `
   -ChassisID 10-8c-cf-ce-5b-62 `
   -PortId 5 `
    -Description "Net at Work Wired" `
   -Location "Paderborn LAN" `
   -CompanyName "Net at Work GmbH" `
   -HouseNumber "32a" `
   -PreDirectional "" `
   -StreetName "Am Hoppenhof" `
   -StreetSuffix "" `
   -City "Paderborn" `
   -State "NRW" `
   -PostalCode 33106 `
   -Country DE

Auch für WiFi-Access Points gibt es Lösungen, sofern der Client dies unterstütze

Set-CsLisWirelessAccessPoint `
   -BSSID 10-8c-cf-ce-5b-62 `
   -Description "Net At Work WiFi 2.OG"" `
   -Location "Paderborn Wifi 2OG" `
   -CompanyName "Net at Work GmbH" `
   -HouseNumber "32a" `
   -PreDirectional "" `
   -StreetName "Am Hoppenhof" `
   -StreetSuffix "" `
   -City "Paderborn" `
   -State "NRW" `
   -PostalCode 33106 `
   -Country DE

Über diesen Weg kann man in Lync den Standort eines Clients z.B. bei Notrufen ermitteln lassen. Das ist aber insbesondere in den uSA (Stichwort 911 und Notruf) ein Thema.

Leider unterstützt genau der Lync Communicator noch kein LLDP, so dass diese Geräte nur über das Subnetz zu einem LIS-Ort zugeordnet werden können.

Set-CsLisSubnet `
   -Subnet 192.168.100.0 `
   -Description "Net At Work WiFi 2.OG"" `
   -Location "Paderborn Wifi 2OG" `
   -CompanyName "Net at Work GmbH" `
   -HouseNumber "32a" `
   -PreDirectional "" `
   -StreetName "Am Hoppenhof" `
   -StreetSuffix "" `
   -City "Paderborn" `
   -State "NRW" `
   -PostalCode 33106 `
   -Country DE

LLDP und SNMP

Aktuell fehlt mir noch eine passende Software als Beispiel, um LLDP-Daten per SNMP anzufragen und anzuzeigen.#
Und einen "SNMPWALK" wollte ich nun doch nicht hier auflisten.

 

LLDP und Windows

Leider hat Microsoft LLDP bis heute es nicht in den Windows Clients implementiert. Ich hätte mir schon gewünscht, dass z.B. ein Windows Client z.B. seinen Hostname per LLDP an den Switch meldet. Dabei wäre es sicher ganz einfach und für Administratoren sogar von Vorteil, wenn ein Endgerät solche Informationen an den Switch weiter gibt. Sicher ist Datenschutz ein Thema aber ein Switch weiß auch ohne LLDP z.B. die MCA-Adressen und mit wem der Client kommuniziert. Das Gateway Gateway kennt sogar die ZIEL-IP-Adressen und könnte DNS-Anfragen und DHCP-Requests auswerten. Wer also einen Client "profilieren" will, kann das mit den aktiven Netzwerkkomponenten viel besser und vollständig tun. Dennoch ist es schade, dass LLDP nur von den Lync Telefonen aktuell genutzt wird.

Auch umgekehrt könnte ein Windows Client die von einem LLDP-tauglichen Switch versendeten Informationen empfangen und z.B. in den Netzwerkeinstellungen mit anzeigen. Einmal über die Netzwerkkarte "hovern" und Windows könnte dem Support Hinweise zum Switch und dem Port geben. Leider ist dem aber nicht so. Es gibt allerdinge ein paar 3rd Party Produkte, die LLDP Daten versenden oder empfangene Daten anzeigen.

Gerade das Empfangen der Meldungen vom Switch läuft wohl bei dem ein oder anderen Programm darauf hinaus, dass es quasi per "Sniffer" alle Pakete annimmt und sich die LLDP-Meldungen einsammelt.

CDP - Cisco Discovery Protocol

Natürlich ist LLDP nicht erst entwickelt worden um, dann von den Herstellern umgesetzt zu werden. Entsprechend gibt es natürlich auch andere Discovery Protokolle. Cisco hat hier schon früh eine eigene Spezifikation entwickelt, die von einigen Geräten auch unterstützt wird.

 

Hier am Beispiel eines Polycom VVX500, welches kurz nach dem Einschalten seine Fähigkeiten zum Switch meldet.

Weitere Links