Wybierz swój język

Podstawy sieci z Cisco IOS. Moduł 4: CDP (Cisco Discovery Protocol)

CDP (Cisco Discovery Protocol) jest protokołem firmy Cisco Systems. Został wprowadzony do użytku w 1994 roku. Jego głównym zadaniem jest wykrywanie bezpośrednio przyłączonych czy też inaczej sąsiednich urządzeń, w tym dodatkowych informacji o nich. Protokół ten działa na urządzeniach firmy Cisco Systems, do których należą m.in. routery, przełączniki, telefony IP oraz punkty dostępowe i kontrolery WiFi. Na rynku można także spotkać produkty innych producentów, które obsługują go w mniejszym lub większym zakresie. Niemniej, z założenia CDP należy kojarzyć z produktami firmy Cisco Systems.

Protokół ten działa w warstwie drugiej modelu OSI/ISO. Zatem sąsiadujące ze sobą interfejsy urządzeń nie muszą być poprawnie zaadresowane, a nawet obsługiwać protokołu IP. Dlatego często CDP bywa stosowane również przy diagnozie problemów, jako że z jego użyciem łatwo da się sprawdzić, czy przeciwległe urządzenie posiada adres IP z tej samej podsieci lub czy w ogóle jesteśmy podpięci do właściwego urządzenia czy też właściwego portu danego urządzenia. Z jego użyciem można też bez dokumentacji wygodnie odtworzyć topologię sieci. Przy diagnozie przydatne są także informacje o natywnym VLAN, domenie VTP czy dupleksie w jakim pracuje port. Jeżeli któryś z tych parametrów nie jest zgodny, generowane są stosowne powiadomienia.

Informacje te dostępne są także dla stacji zarządzających NMS (Network Management Station) z użyciem bazy MIB (Management Information Base) protokołu SNMP (Simple Network Management Protocol). Odpowiednie obiekty OID (Object Identifier) znaleźć można pod nazwą CISCO-CDP-MIB. W ten sposób NMS ma wszystkie potrzebne dane do wizualizacji topologii naszej sieci.

CDP umożliwia również lepszą integrację mechanizmów typu FHS (First Hop Security) do ochrony przed atakami w sieci LAN, do których należy m.in. Port Security, DHCP Snooping, IP Source Guard czy Dynamic ARP Inspection (DAI). Dotyczy to systemów IT, gdzie działa telefonia IP. Z użyciem CDP, telefon IP może przekazać informację do przełącznika o stanie swojego drugiego portu, gdzie wpina się komputer PC. W ten sposób wspomniane mechanizmy są w stanie unieważnić powiązane z nim wpisy pomimo tego, iż port przełącznika w stronę telefonu IP jest bez żadnych zmian ciągle podniesiony. Dzięki temu komputer PC może zostać przepięty do innego telefonu IP lub gniazdka czy portu przełącznika i nie zostanie zablokowany przez te mechanizmy ochrony.


Jest to jeden z powodów, dla których warto budować infrastrukturę w oparciu o rozwiązania jednego producenta. Uzyskujemy o wiele lepszą integrację, kompatybilność i większą funkcjonalność. Da się dzięki temu o wiele więcej wyciągnąć z każdego rozwiązania. Mało kto zwraca uwagę na takie szczegóły, ale jak się je zbierze i weźmie pod uwagę okres około 10-lat, przez jakie rozwiązanie to będzie działało w naszej infrastrukturze, która nie jest mała, to zaczyna to jednak mieć znaczenie.

Przy wyborze rozwiązań do infrastruktury IT warto pamiętać, że o ile dwaj producenci wspierają te same standardy czy mechanizmy i mają je wyszczególnione w opisie produktu, to wcale nie oznacza, że oferują to samo. Aby wspierać dany standard wystarczy zaimplementować tylko te podstawowe, wymagane przez dany standard funkcjonalności. Bardzo dużo rzeczy jest opcjonalnych i w tańszych rozwiązaniach w ogóle nie zostaje zaimplementowane. Inna rzecz, że fakt obsługi tych samych mechanizmów nie musi oznaczać, że pomiędzy różnymi mechanizmami w ramach jednego produktu danego producenta istnieje taka sama integracja i kompatybilność. Ważne też jest to, czy implementacja tych mechanizmów jest wystarczająco zaawansowana, elastyczna i stabilna. Od tego będzie zależało czy w ogóle da się je produkcyjnie włączyć i stosować w wymaganym przez nas, konkretnym scenariuszu.

Przykładem może być choćby wspomniane CDP i Port Security. To że producent telefonów IP i przełącznika wspiera CDP oraz Port Security wcale nie musi oznaczać, że telefon IP będzie w stanie przekazać informacje o stanie swoich portów do przełącznika. A nawet jeśli, to czy działający na przełączniku mechanizm Port Security, będzie w stanie coś z tą informacją dalej zrobić.

Dlatego dobór właściwego rozwiązania do infrastruktury IT często wymaga długich i żmudnych testów lub drogich konsultacji eksperckich. W praktyce przetestowanie wszystkiego i tak jest nierealne, stąd wiele organizacji polega na zaufanych partnerach.


Protokół CDP stosowany jest też do precyzyjnego wskazania maksymalnego poboru mocy danego urządzenia (dla przykładu telefonu IP lub punktu dostępowego WiFi). O ile CDP nie ma wpływu na to, czy urządzenie to będzie konsumowało jej mniej czy więcej to sprawi, że z budżetu mocy przełącznika zostanie ujęte tylko tyle, ile faktycznie dane urządzenie potrzebuje. Bazowanie na poziomach mocy określonych w standardach PoE (Power over Ethernet) nie jest optymalne i gospodarne. Zdarza się, że urządzenie przekracza dany próg o bardzo niewiele, a musi zostać już zaklasyfikowane do wyższego. W ten sposób zarezerwowana dla niego moc nie jest przez niego wykorzystywana i też nie może być wykorzystywana przez inne urządzenia. Dzięki CDP urządzenia mogą precyzyjnie wskazać wymaganą ilość mocy. W ten sposób przełącznik może dokonać bardziej precyzyjnej alokacji i co za tym idzie zasilić więcej urządzeń. To z kolei przekłada się na możliwość zakupu mniejszej ilości przełączników dostępowych czy czasem nawet przełączników z zasilaczami o mniejszej mocy (dostępny budżet mocy dostosowany jest do mocy zasilacza przełącznika).

Za pośrednictwem CDP przełącznik anonsuje VLAN głosowy. Dzięki temu telefony IP i terminale wideo mogą zastosować do komunikacji VLAN głosowy, zamiast domyślnego, w którym odbywa się transmisja danych z komputera. W ten sposób pomiędzy przełącznikiem, a telefonem IP powstaje "pseudo-Trunk", gdzie ruch głosowy jest oddzielony z użyciem VLAN od ruchu z podpiętego do telefonu komputera. Dodatkowo, CDP umożliwia przekazanie telefonowi IP jak ma traktować ruch z podpiętego do niego komputera pod kątem zapewnienia odpowiedniej jakości usług. Chodzi o QoS (Quality of Service). Przełącznik może nakazać telefonowi, aby ufał temu jak oznacza ruch komputer lub zdefiniować jak ten ruch powinien zostać oznaczony przez telefon.

Znacząco ułatwia to wdrożenie i dalsze użytkowanie infrastruktury z telefonią IP i pokojami do spotkań wideo.

To wszystko jest potrzebne i wygodne, kiedy chcemy zapewnić odpowiednią segmentację, bezpieczeństwo oraz jakość działających usług w naszej sieci. Kiedy jednak chcemy tylko wpinać do sieci wszystko jak leci i aby to wszystko w najprostszy możliwy sposób "jakoś" działało, to oczywiście powyższe funkcjonalności nie są wtedy niezbędne. W każdym razie, o ile ich brak nie jest szybko zauważany przez zwykłych użytkowników, to ich dodanie w późniejszym czasie może stać się niemożliwe bez dużej inwestycji i ponownego zakupu. Dlatego warto o tym wszystkim pamiętać już przy projektowaniu i doborze rozwiązań.

Jednym z nietypowych i obecnie już raczej niestosowanych zastosowań protokołu CDP jest ODR (On-Deman Routing). Za jego sprawą sąsiadujące urządzenia mogą wymienić się informacjami o routingu (prefiksy IP i trasa domyślna). Warto pamiętać, że ODR to nie protokół routingu, a tylko rozszerzenie do CDP. Trasy otrzymane z użyciem ODR oznaczone są literką "o" w tablicy routingu. Aktywacja ODR wymaga dodatkowej konfiguracji. Nie należy tego robić przed dokładnym zapoznaniem się z dokumentacją ODR oraz obsługiwanymi przez ODR scenariuszami wdrożeń.

Wśród wysyłanych informacji znajduje się też model i typ urządzenia oraz wersja jego oprogramowania. Ponadto odbierane informacje mają wpływ na zawartość tablicy sąsiedztwa naszego urządzenia, co potencjalnie może posłużyć jako wektor ataku. Oczywiście najpierw musiałaby powstać stosowna podatność. To jest powodem, dla którego zaleca się wyłączenie tego protokołu w stronę sieci zewnętrznej, czyli do dostawców usług sieci Internet oraz innych zewnętrznych organizacji. Zastosowanie tego protokołu na tego typu połączeniach i tak bywa mało użyteczne, stąd też najczęściej się tak robi. Chociaż, kiedy pomiędzy nami, a operatorem działa CDP, to można wykorzystać CDP do śledzenia dostępności sąsiada w regułach PBR (Policy-Based Routing).

Urządzenia ogłaszają informacje o sobie na każdym z interfejsów, gdzie działa CDP. W sieci Ethernet informacje te wysyłane są okresowo na adres multicast 01:00:0c:cc:cc:cc z wykorzystaniem do enkapsulacji IEEE 802.2 LLC + SNAP. Jako, że jest to protokół własnościowy firmy Cisco Systems, w polu OUI nagłówka SNAP znajduje się wartość 0x00000c identyfikująca firmę Cisco Systems. Zaraz po niej znajduje się zarządzane przez Cisco Systems pole Type, gdzie wartość 0x2000 identyfikuje protokół CDP.

Poszczególne informacje przenoszone są w polach TLV (Type, Length, Value). Ich ilość w wiadomości CDP może być różna. Zależy to zarówno od typu i modelu urządzenia, jak i wersji jego oprogramowania.


Domyślnie, na większości urządzeń firmy Cisco Systems protokół CDP jest włączony. Weryfikację działania tego protokołu można przeprowadzić z użyciem polecenia trybu EXEC: "show cdp". Na zrzucie poleceń widać efekt wydania tego polecenia, gdzie na błękitnym tle widać czas co jaki wysyłane są wiadomości CDP (domyślnie 60 sekund), na żółtawym czas ważności wysyłanych przez nas informacji w tablicach sąsiadów (domyślnie 180 sekund) i na zielonawym, że działa CDPv2, czyli CDP w wersji drugiej.

Z użyciem polecenia trybu EXEC: "show cdp interface" możemy wylistować wszystkie interfejsy obsługujące protokół CDP. Przykład dla jednego z nich widać na czerwonawym tle. Z użyciem polecenia trybu EXEC: "show cdp traffic" możemy wyświetlić informacje o wysyłanych i otrzymanych wiadomościach CDP. Liczniki powiązane z tymi informacjami mogą zostać wyzerowane z użyciem polecenia trybu EXEC: "clear cdp counters". Zostało to pokazane w dolnej części zrzutu poleceń (liczniki na fioletowawym tle).


Jeżeli protokół CDP nie jest nam potrzebny, to można wyłączyć go z użyciem polecenia trybu konfiguracji globalnej: "no cdp run". Do ponownego włączenia służy polecenie trybu konfiguracji globalnej: "cdp run".

Kiedy protokół ten jest aktywny na urządzeniu, to mamy też możliwość jego dezaktywacji na poszczególnych interfejsach. Dokonać tego można z użyciem polecenia trybu konfiguracji interfejsu: "no cdp enable". Ponowne włączenie CDP na interfejsie wymaga użycia polecenia trybu konfiguracji interfejsu: "cdp enable".

Istnieje także możliwość zmiany czasu po którym wysyłane są kolejne wiadomości CDP oraz czasu przetrzymywania naszych informacji w tablicach sąsiednich urządzeń czyli czasu, po którym informacje te są z nich usuwane. Służą do tego odpowiednio polecenia trybu konfiguracji globalnej: "cdp timer" i "cdp holdtime".

Wartości tych czasów nie muszą być takie same pomiędzy sąsiadującymi urządzeniami.


Informacje o sąsiednich urządzeniach znajdują się w tablicy, której zawartość da się wyświetlić z użyciem polecenia trybu EXEC: "show cdp neighbors". Dla każdego z podłączonych bezpośrednio urządzeń widoczny jest oddzielny wiersz, w którym kolumna:

  • "Device ID" określa nazwę urządzenia,
  • "Local Intrfce" określa nazwę interfejsu naszego urządzenia (czyli tego, na którym wydano to polecenie),
  • "Holdtme" określa wartość licznika czasu ważności informacji od danego sąsiada (czas ten zlicza w dół i ustawiany jest na wartość początkową z każdą kolejną otrzymaną od niego wiadomością CDP),
  • "Capability" określa typ sąsiada według kodów widocznych w legendzie powyżej tabelki,
  • "Platform" określa platformę sąsiada,
  • "Port ID" określa nazwę interfejsu sąsiada (według jego lokalnej nomenklatury nazewniczej).

Są to ogólne i bardzo skrótowe informacje o każdym z bezpośrednio połączonych sąsiadów, który obsługuje protokół CDP.

Aby wyczyścić znajdujące się w tablicy sąsiedztwa informacje należy użyć polecenia trybu EXEC: "clear cdp table".


Bardziej szczegółowe informacje o poszczególnych sąsiadach dostępne są po wskazaniu konkretnego interfejsu oraz dodaniu parametru "detail" do polecenia trybu EXEC: "show cdp neighbors". Przykład takich informacji dla punktu dostępowego sieci WLAN, zlokalizowanego za interfejsem "GigabitEthernet 1/0/7" widać na zrzucie poleceń poniżej.

Warto zwrócić uwagę, że widać m.in. jego nazwę (błękitnawe tło), adres IP (zielonawe tło) oraz zarówno interfejs naszego lokalnego urządzenia, jak i interfejs widocznego za nim punktu dostępowego (fioletowawe tło).


Na tym slajdzie widać przykładowe informacje o telefonie IP, który znajduje się za portem "GigabitEthernet 1/0/24". Widać m.in. jego nazwę (błękitnawe tło), adres IP (zielonawe tło) oraz zarówno interfejs naszego lokalnego urządzenia, jak i interfejs widocznego za nim telefonu (fioletowawe tło).

To na co tutaj warto dodatkowo zwrócić uwagę, to stan drugiego portu (żółtawe tło). To ta informacja jest bardzo użyteczna dla wspomnianych wyżej mechanizmów bezpieczeństwa FHS (First Hop Security) sieci LAN.


Bardziej szczegółowe informacje dostępne są także poprzez polecenie trybu EXEC: "show cdp entry". Polecenie to wymaga podania nazwy sąsiedniego urządzenia. Jeżeli chcemy wyświetlić szczegółowe informacje o wszystkich sąsiednich urządzeniach, należy użyć polecenia trybu EXEC: "show cdp entry" z gwiazdką "*" lub polecenia trybu EXEC: "show cdp neighbors detail" bez wskazania konkretnego interfejsu. W ten sposób otrzymamy szczegółowe informacje o wszystkich bezpośrednio podłączonych sąsiadach, u których na interfejsach w naszym kierunku działa protokół CDP.

 

Na powyższym zrzucie widać przykładowe informacje wysłane z maszyny wirtualnej obsługującej funkcję centrali telefonicznej CUCM (Cisco Unified Communications Manager) dla telefonów IP, która działa na platformie VMware vSphere.


Przed kolejną porcją wiedzy zachęcamy do przećwiczenia i utrwalenia tej poznanej tutaj. Skorzystaj z naszych ćwiczeń!


Zachęcamy do śledzenia nas w mediach społecznościowych Facebook i LinkedIn.


Zapraszamy do kontaktu drogą mailową Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. lub telefonicznie +48 797 004 932 lub +48 797 004 938.