Więcej

    CDP – młotek w skrzynce narzędziowej sieciowca

    Niezależnie od rodzaju przyjętej fuchy dobry fachowiec ma zawsze przy sobie młotek. Narzędzie to proste, a jednocześnie skuteczne. Raczej niewielkie, a jakże potężne. W zasobach sieciowca świetną analogią do wspomnianego młotka jest protokół CDP – niezwykle przydatne narzędzie zarówno podczas inwestygacji problemu jak i wprowadzania nowej konfiguracji. W tym artykule bierzemy go na warsztat i sprawdzamy od środka!

    Poznajmy CDP

    CDP to skrót od Cisco Discovery Protocol, co od razu wskazuje na to, że jest to protokół własnościowy firmy Cisco. Działa on w warstwie drugiej modelu sieciowego ISO/OSI. Dzięki temu wystarczy, że dwa urządzenia zostaną połączone kablem i ustanowią połączenie na poziomie warstwy łącza danych, by protokół CDP mógł działać. Przytoczony kabel jest tylko uogólnieniem, ponieważ Cisco Discovery Protocol może działać niezależnie od użytego rodzaju medium przewodowego i protokołu. Jedynym wyjątkiem są subinterface’y Frame Relay w trybie multipoint, które to nie są wspierane.

    Cisco Discovery Protocol jest domyślnie włączony na urządzeniach firmy Cisco. Oznacza to, że zaraz po włączeniu urządzenie obsługujące CDP będzie mogło odbierać i wysyłać wiadomości CDP na wspieranych interfejsach. Jedynym warunkiem wstępnym jest to, by interfejs obsługiwał nagłówek Subnetwork Access Protocol (SNAP), który to po prostu jest rozszerzeniem nagłówka 802.2 LLC. CDP obecnie dostępny jest w wersji drugiej, która wzbogaciła go względem pierwszej o dodatkowe informacje wymieniane między połączonymi urządzeniami.

    Zastosowania CDP

    Dotychczas zdjęliśmy tylko wierzchni płaszcz z protokołu CDP. Pod nim schowane są potencjalne zastosowania i zalety związane z jego używaniem. Poniżej wymieniam trzy zastosowania, które w mojej ocenie są najważniejsze i przynoszą najwięcej korzyści. Oczywiście każdy z przykładów zawiera w sobie dodatkowe cechy.

    Znajdowanie sąsiadów

    Głównym zastosowaniem protokołu CDP jest odnajdywanie sąsiadów w sieci. Zakładając, że urządzenia w sieci mają włączoną obsługę CDP, po zalogowaniu się na każde z nich będziemy w stanie odnaleźć jego bezpośrednich sąsiadów. Bardzo ważne jest to, że nie otrzymamy automatycznie całej topologii sieci. Protokół CDP działa na styku dwóch połączonych ze sobą urządzeń, przez co widzieć będziemy tylko sąsiadów w ramach jednej domeny kolizyjnej.

    Wśród urządzeń wspierających CDP, a tym samym możliwych do odnalezienia w ramach sąsiedztwa, można wymienić między innymi:

    • Switche
    • Routery
    • WLAN kontrolery
    • Access Pointy
    • IP Phone’y

    Możliwość odnajdywania sąsiadów w sieci może okazać się bardzo pomocna podczas inwestygacji problemów. Dla przykładu będąc mocno zainteresowanym znalezieniem źródła pochodzenia danego adresu MAC w sieci dowiadujemy się, że trafia on na dany Switch z urządzenia podłączonego do portu GigabitEthernet0/1. Przy użyciu protokołu CDP okazuje się, że do tego portu podłączony jest Access Point firmy Cisco. Zatem naturalnie można kontynuować inwestygację w celu potwierdzenia, że dany MAC pochodzi z sieci WLAN.

    Równie skuteczna może się okazać pomoc CDP w przypadku konfiguracji nowych ustawień w sieci. Dla przykładu otrzymując zadanie zmiany VLAN-u na połączeniu od Switcha A do Switcha B wystarczy, że zalogujemy się na dowolny z nich i przy pomocy protokołu CDP dowiemy się na którym porcie podłączony jest poszukiwany sąsiad.

    Często zdarza się też, że musimy rozwiązać bardzo palący problem i nie mamy czasu na przeglądanie dokumentacji sieci w celu zapoznania się z topologią. Albo co gorsze i równie możliwe – taka dokumentacja w ogóle nie istnieje! Protokół CDP pomoże nam odnaleźć się w sieci i dotrzeć chociażby od Switcha Accessowego do urządzenia w warstwie Core.

    CDP przyda się także gdy chcemy wykonać dokumentację sieci i potrzebna jest nam topologia sieci. Jest to niestety zadanie manualne lub co najwyżej półautomatyczne, ale niezwykle skuteczne.

    Wspomaganie negocjacji PoE

    Często w sieci pojawiają się urządzenia zasilane przez PoE, np. Access Pointy i IP Phone’y. Po podłączeniu ich do Switcha PoE na portach do tych urządzeń wysyłana jest domyślna porcja mocy. Dzięki wiadomościom CDP wysyłanym przez podłączone urządzenia końcowe, a mówiąc dokładniej dzięki informacjom zawartym w tych wiadomościach, Switch może się dowiedzieć jaka dokładnie ilość mocy jest potrzebna na danym porcie. Następnie Switch może zwiększyć lub zmniejszyć moc wysyłaną do konkretnych urządzeń. W konsekwencji mamy dwa pozytywne wyniki takiego działania – urządzenia końcowe otrzymują odpowiednią dawkę energii, a Switch nie alokuje niepotrzebnie zbyt dużej ilości mocy do portów, które tego nie wymagają.

    Więcej o PoE przeczytasz w dedykowanym artykule – LINK.

    Wspomaganie działania SNMP

    Co jeśli zależy nam na odtworzeniu topologii sieci ale ręczne sprawdzanie urządzenia po urządzeniu nie wchodzi w grę? Pomocne mogą się okazać narzędzia służące do zarządzania siecią (Network Management System – NMS), które korzystają z protokołu SNMP. A gdzie tu jest CDP? Wspomniane narzędzia zarządzające mogą odpytywać urządzenia o poszczególne obiekty w bazie CISCO-CDP-MIB. Dzięki temu poznają sąsiadów danego urządzenia, dokładne porty użyte po obu stronach połączenia, typ/model urządzenia po drugiej stronie, jego adres IP itp. Mając taką bazę wiedzy to już kwestia dobrego NMS by był w stanie odwzorować te dane w formacie graficznym.

    Przykładową bazę MIB dla CDP znajdziesz tutaj – LINK.

    Więcej o SNMP przeczytasz w dedykowanym artykule – LINK.

    Działanie CDP

    Dotychczas informacje wysyłane w ramach działania tego protokołu określałem mianem wiadomości CDP. Wiemy już natomiast, że CDP działa w warstwie łącza danych, zatem informacje wymieniane między urządzeniami zawarte są w ramkach. Jako przykład użyję jedną z próbek ruchu dostępnych na stronie Wireshark, a dokładniej mówiąc plik „SampleCaptures/cdp_v2.pcap”.

    Wszystkie ramki CDP wysyłane są okresowo na adres multicast 01:00:0C:CC:CC:CC. Urządzenia z włączoną obsługą CDP odbierają ramki z takim adresem docelowym i odczytują zawarte w nich informacje. Co ważne, urządzenia nigdy nie przekazują tych ramek dalej, po odczytaniu danej wiadomości jest ona usuwana. To jest powód dla którego znani są wyłącznie bezpośrednio podłączeni sąsiedzi, a nie cała topologia sieci.

    Widoczny adres docelowy w ramce CDP.
    Widoczny adres docelowy w ramce CDP.

    Ramki CDP wysyłane są okresowo – domyślnie jest to 60 sekund, wartość ta jest konfigurowalna. Urządzenie, które odbierze ramkę CDP, odczytuje informacje w niej zawarte i zapisuje je w specjalnie przeznaczonej do tego tabeli. Tabela ta odświeżana jest za każdym razem, gdy urządzenie otrzyma nową ramkę CDP z danego źródła. Ramka CDP zawiera także pole Time To Live (TTL), które informuje urządzenie odbiorcze jak długo przesyłana informacja powinna być składowana. TTL domyślnie wynosi 180 sekund, co jest jednoznaczne z nieodebraniem trzech kolejnych ramek CDP z rzędu.

    Domyślna wartość TTL zawara w ramce CDP.
    Domyślna wartość TTL zawara w ramce CDP.

    Zawartość ramki CDP

    Kluczowe informacje w ramce CDP zawarte są w blokach danych nazywanych Type-Length-Value (TLV). Poniższa lista przedstawia niektóre TLV, które można spotkać w ramkach CDP:

    • Address – zawiera adres IP urządzenia wysyłającego ramkę.
    • Capabilities – określa typ urządzenia i jego możliwości, np. Switch.
    • Device ID – nazwa urządzenia.
    • Energywise – zbiór informacji potrzebnych podczas negocjacji mocy przydzielanej przez PoE na danym porcie.
    • Full or Half Duplex – wskazuje skonfigurowany tryb duplex portu na którym wysyłana jest dana ramka.
    • IP Network Prefix – zawiera listę prefiksów IP do których urządzenie może wysyłać pakiety IP.
    • Location – zawiera informacje, które Switch może wysłać do urządzeń końcowych. Mogą to być np. informacje o położeniu geograficznym.
    • Native VLAN – określa VLAN przypisywany nietagowanym ramkom odebranym na danym porcie.
    • Platform – platforma sprzętowa urządzenia nadawczego.
    • Port-ID – nazwa i numer portu, z którego wysyłana jest ramka.
    • Version – zawiera informacje o oprogramowaniu używanym na urządzeniu nadawczym.
    • VTP Management Domain – nazwa domeny VTP skonfigurowanej na urządzeniu nadawczym.

    Poniższy rysunek przedstawia pola TLV w przykładowej ramce CDP:

    Pola TLV w przykładowej ramce CDP.
    Pola TLV w przykładowej ramce CDP.

    Konfiguracja CDP

    CDP jest domyślnie włączone na wszystkich urządzeniach firmy Cisco. Można je wyłączyć w trybie konfiguracji globalnej w poniższy sposób:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#no cdp run

    Ponowne włączenie CDP globalnie można zrealizować w następujący sposób:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#cdp run

    CDP można też wyłączyć na konkretnym porcie:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#interface GigabitEthernet 1/0/1
    Switch_Blue(config-if)#no cdp enable

    Ponowne włączenie na konkretnym porcie:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#interface GigabitEthernet 1/0/1
    Switch_Blue(config-if)#cdp enable

    Możliwa jest także zmiana częstotliwości wysyłania ramek CDP (timer) oraz licznika TTL dla czasu przechowywania odebranych informacji (holdtime). Poniższe komendy zmieniają timer i holdtime na odpowiednio 30 i 90 sekund:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#cdp timer 30
    Switch_Blue(config)#cdp holdtime 90

    CDP jest domyślnie włączone w wersji drugiej począwszy od IOS 12.0(3)T. Możliwy jest jednak powrót do wersji pierwszej w poniższy sposób:

    Switch_Blue#configure terminal
    Enter configuration commands, one per line. End with CNTL/Z.
    Switch_Blue(config)#no cdp advertise-v2

    Debugowanie CDP

    Przede wszystkim warto upewnić się czy CDP jest włączone. Można to zrobić przy pomocy komendy show cdp. Tak wygląda output komendy przy CDP włączonym globalnie:

    Switch_Blue#show cdp
    Global CDP information:
    Sending CDP packets every 60 seconds
    Sending a holdtime value of 180 seconds
    Sending CDPv2 advertisements is enabled

    Jak widzisz output zawiera informację o włączonej wersji CDP oraz wartościach timerów. Natomiast przy CDP wyłączonym globalnie output tej samej komendy prezentuje się następująco:

    Switch_Blue#show cdp
    % CDP is not enabled

    Status CDP można też sprawdzić dla konkretnego portu używając komendy show cdp interface <nazwa_portu>. Output tej komendy przy włączonym CDP na porcie wygląda następująco:

    Switch_Blue#show cdp interface GigabitEthernet1/0/1
    GigabitEthernet1/0/1 is up, line protocol is up
    Encapsulation ARPA
    Sending CDP packets every 60 seconds
    Holdtime is 180 seconds

    Po wyłączeniu CDP na tym samym porcie dostaniemy poniższy output:

    Switch_Blue#show cdp interface GigabitEthernet1/0/1
    CDP is not enabled on interface GigabitEthernet1/0/1

    Bazując na poniższej topologii sprawdzimy jak prezentują się kolejne outputy komend dotyczących CDP i jakie informacje są w nich zawarte.

    Przykładowa topologia sieci.
    Przykładowa topologia sieci.

    W celu poznania sąsiadów urządzenia o nazwie Switch_Blue musimy się na nie zalogować i wykonać komendę show cdp neighbors. Wynik wykonania tej komendy jest następujący:

    Switch_Blue#show cdp neighbors
    Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
    S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
    D - Remote, C - CVTA, M - Two-port Mac Relay
    Device ID Local Intrfce Holdtme Capability Platform Port ID
    Switch_Yellow
    Gig 1/0/3 154 S I WS-C2960S Gig 1/0/13
    Switch_Green
    Gig 1/0/4 176 S I WS-C3560C Gig 0/14
    Switch_Red
    Gig 1/0/2 163 R S I WS-C4500X Ten 1/1/2
    WLC_1
    Gig 1/0/5 155 H AIR-CT550 Gig 0/0/1
    AP_1
    Gig 1/0/1 133 T B I AIR-CAP16 Gig 0

    Powyższy output zawiera podstawowe informacje na temat znalezionego sąsiada – jego nazwę, typ urządzenia, platformę sprzętową, nazwy i numery portów po obu stronach oraz licznik TTL. Możliwe jest także wyświetlenie dokładniejszych informacji. Poniższy przykład pokazuje to dla Access Pointa o nazwie AP_1:

    Switch_Blue#show cdp neighbors GigabitEthernet 1/0/1 detail
    Device ID: AP_1
    Entry address(es):
    IP address: 192.168.10.25
    IPv6 address: FE80::1AE7:28FF:FED1:9E60 (link-local)
    Platform: cisco AIR-CAP1602I-E-K9, Capabilities: Trans-Bridge Source-Route-Bridge IGMP
    Interface: GigabitEthernet1/0/1, Port ID (outgoing port): GigabitEthernet0
    Holdtime : 161 sec
    Version :
    Cisco IOS Software, C1600 Software (AP1G2-K9W8-M), Version 15.3(3)JC14, RELEASE SOFTWARE (fc1)
    Technical Support: http://www.cisco.com/techsupport
    Copyright (c) 1986-2017 by Cisco Systems, Inc.
    Compiled Sun 29-Oct-17 16:14 by prod_rel_team
    advertisement version: 2
    Duplex: full
    Management address(es):
    IP address: 192.168.10.25
    Total cdp entries displayed : 1

    Omawianą tablicę znalezionych sąsiadów można wyczyścić poleceniem clear cdp table. Zacznie się ona uzupełniać automatycznie wraz z otrzymywaniem kolejnych ramek CDP.

     Switch_Blue#clear cdp table

    Oprócz tego możliwe jest także wyświetlenie statystyk CDP:

    Switch_Blue#show cdp traffic
    CDP counters :
    Total packets output: 4860, Input: 5291
    Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
    No memory: 0, Invalid packet: 0,
    CDP version 1 advertisements output: 0, Input: 0
    CDP version 2 advertisements output: 4860, Input: 5291

    Zerowanie przedstawionych powyżej statystyk wykonuje się komendą clear cdp counters:

    Switch_Blue#clear cdp counters

    CDP należy do podstawowych narzędzi używanych przez sieciowców w topologiach opartych na urządzeniach Cisco. Przydaje się zarówno w chwili poznawania sieci jak i poszukiwania przyczyny zaistniałego problemu, a konfiguracja jest prosta i przyjemna. Mam dobrą informację dla osób, które nie mają styczności ze sprzętem Cisco lub po prostu wolą korzystać z otwartych protokołów – LLDP powinno spełnić te wymagania przy okazji nie odstając od zalet protokołu CDP.

    Jak często korzystasz z CDP? Czy dostrzegasz jakieś inne zalety tego protokołu? A może wady?

    🗳 Jak przydatna była ta publikacja?

    Średnia ocena 5 / 5. Ilość głosów: 1

    Brak ocen. Bądź pierwszy!

    Dziękujemy za ocenę! Zapraszamy Cię do obserwowania NSS w mediach społecznościowych!

    Przykro nam, że ta publikacja okazała się być dla Ciebie nieprzydatna!

    Uwaga: Twój głos będzie liczony tylko jeśli udzielisz feedbacku używając formularza poniżej.

    Jak możemy poprawić tę publikację?

    Łukasz Kowalski
    Network Architect, Współtwórca Na Styku Sieci

    4 KOMENTARZE

    guest
    4 - Ilość komentarzy
    Sortuj wg najstarszych
    Sortuj wg najnowszych Sortuj wg najlepszych
    Inline Feedbacks
    View all comments
    skandal

    Z CDP/LLDP korzystam tylko w sieciach gdzie uplinki do urządzeń mam rozproszone po różnych miejscach (wieloklatkowe biurowce w których sieć budowana jest z wielu punktów). W innym przypadku nie widzę sensu (punkt widzenia z perspektywy ISP).

    Damian Michalak

    Punkt widzenia z perspektywy ISP jak najbardziej mile widziany, dzięki! Komentarz złoto, ale komentujący skandal (😉)

    RiFF

    show ip arp
    show mac address-table address
    show cdp neighbors interface details

    W sieci \’campusowej\’ to typowy zestaw komend żeby odnaleźć switcha do którego jest podłączony jakiś host. Klikamy je na Core 😉 , namierzanie takiego SW bez CDP byłoby delikatnie mówiąc kłopotliwe . Oczywiście można też użyć jakiegoś softu jak ktoś ma wdrożony (np. Prime / ISE itp )

    Damian Michalak

    No raczej, Prime i ISE są bardzo wygodne w takich zastosowaniach 🙂 Ale chyba i tak każdy zaczynał od CDP ;D

    Sprawdź swoją wiedzę z CCNA

    Otrzymuj nasz cotygodniowy mailing "Czwartest" i sprawdź swoją wiedzę rozwiązując wyzywające zadania z zakresu certyfikacji CCNA. Dasz radę?

    Uzupełniając powyższe pole wyrażasz zgodę na otrzymywanie od GetGoodNet Damian Michalak z siedzibą we Wrocławiu newslettera zawierającego treści edukacyjne. Zgodę możesz wycofać w każdym czasie.

    NSS na Social Media

    1,611FaniLubię
    72ObserwującyObserwuj
    133ObserwującyObserwuj
    1,220SubskrybującySubskrybuj

    Najnowsze artykuły

    spot_img

    Może Cię też zainteresować...

    4
    0
    Co sądzisz na temat tej publikacji? Zostaw proszę komentarzx
    ()
    x