Wykupując od swojego dostawcy dedykowane łącze otrzymujemy usługę w warstwie 1 modelu ISO/OSI. Twój SP zgodnie z umową zobowiązuje się do dostarczenia każdego wysłanego bitu. Jednakże nie mamy tu jeszcze zdefiniowanego protokołu warstwy drugiej łącza danych. HDLC był szeroko stosowany w technologiach WAN (połączenie klient -> ISP) w warstwie drugiej jako protokół połączenia punkt-punkt.
Standardowa ramka HDLC zaproponowana przez IEEE spełnia tylko kilka ważnych funkcji. Jak każdy inny protokół warstwy łącza danych posiada nagłówek pozwalający stwierdzić gdzie ramka się zaczyna oraz posiada pole FCS które pozwala określić czy ramka nie została uszkodzona podczas transmisji.
Cisco od siebie dodało dodatkowe pole Type określające jaki protokół warstwy wyższej jest w użyciu. Pozwala to na równoczesne stosowanie 2 różnych protokołów np. IP w wersji 4 i 6.
Mówiąc o łączach szeregowych należy pamiętać, że nie są one udostępniane ze standardowymi prędkościami które znasz z interfejsów Ethernetowych. Prędkości nie są również ujednolicone i tak mamy 2 równoległe konwencje prędkości dostępne dla Ameryki (linia T) oraz dla Europy (linia E).
Nazwa standardu prędkości | Prędkość wyrażona w kilobitach na sekundę |
DS0 | 64Kbps. |
Fractional T1 | Wielokrotność 64Kbps, maksymalnie do x24. |
DS1 (T1) | 1.544Mbps (24 DS0) |
E1 (Europa) | 2.048Mbps (32 DS0) |
DS3 (T3) | 44.736 Mbps (28 DS1) |
E3 (Europa) | 34 Mbps (16 E1) |
Łącząc dwa routery Cisco łączem szeregowym oba będą domyślnie używać HDLC jako protokołu warstwy łącza danych.
Konfiguracja HDLC
Standardowo interfejsy sieciowe do prawidłowej pracy nie wymagają konfiguracji ani warstwy pierwszej (wystarczy podłączony kabel) oraz warstwy drugiej (w przypadku administracyjnie zamkniętego interfejsu może być potrzebne wydanie komendy no shutdown). Podobnie jak w przypadku interfejsów ethernetowych wystarczające powinno być nadanie odpowiedniego adresu na przykład poprzez komendę ip address.
Wchodzimy do konfiguracji interfejsu i wydajemy polecenia:
- ip address adres_ip mask
- no shutdown
Pozostale polecenia sa opcjonalne jesli interfejs wstał w warstwie pierwszej i drugiej (up/up) oraz mogą być konieczne jeśli mamy interfejst w stanie (up/down):
- encapsulation hdlc – wymuszamy enkapsulacje hdlc na interfejsie
- clock rate wybrana_prędkość
- bandwidth wybrana_prędkość
PPP Point to Point protocol
Protokół PPP posiada wiele podobieństw do HDLC, oba są protokołami warstwy łącza danych stosowanych przy połączeniach szeregowych (serial link). Jednakże PPP który został zdefiniowy w 1990 roku został wyposażony w kilku dodatkowych usprawnień w stosunku do swojego poprzednika (HDLC występuje jako standard IEEE oraz Cisco HDLC jako własnościowy standard).
Funkcje PPP
- Definiuje nagłówek i stopkę
- Wspiera połączenia synchroniczne i asynchroniczne
- Poprzez dodanie pola Type w nagłówku wspiera różne protokoły warstwy 3 poprzez pojedyncze połączenie
- Wspiera autentykację poprzez Password Authentication Protocol (PAP) oraz Challenge Handshake Autentication Protocol (CHAP).
- Wspiera Multilink – grupowanie kilku interfejsów WAN w jeden logiczny z zastosowaniem load-balancingu.
- Wspiera Error detection, pozwalający ustawić procentową tolerancję dla błędów zanim interfejs zostanie wyłączony.
- Wspiera kompresję danych
- Definiuje podwarstwę Network Control Protocols (NCP) w której zdefiniowe są protokoły kontrolne wspomagające integrację protokołów warstwy wyższej. Na przykład dla IPv4 w PPP mamy zdefiniowany IPCP które odpowiada za połączenie między warstwą 2 i 3.
Elementy PPP
Ramka HDLC-like
Definiuje zawartość ramki która została stworzona na bazie oryginalnie zaproponowanej przez IEEE ramki HDLC.
Link Control Protocol LCP
Subwarstwa definiuje funkcje które ułatwiają komunikację z warstwą fizyczną oraz usprawniają pracę warstwy łącza danych. Zawiera funkcję takie jak:
- Magic number – Każdy router wysyłając ramkę umieszcza w niej swój losowo wybrany number, jeśli otrzyma ramkę z tym numer ramka jest traktowana jako zapętlona, a interfejs powinien zostać automatycznie wyłączony.
- Link-quality monitoring – Wyłącza interfejs po przekroczeniu progu tolerancji na błędu.
- Multilink PPP – Pozwala na równoważenie ruchu poprzez kilka interfejsów połączonych ze sobą logicznie.
- PAP lub CHAP – Wspiera autentykację.
Subwarstwa PPP defininiująca kategorie protokołów z których każdy odpowiada za komunikację z innym protokołem wartswy sieciowej. Na przykład dla IP w wersji 4 mamy zdefiniowane IPCP, dla IP w wersji 6 IPv6CP, dla Cisco discovery protocol CDP mamy CDPCP.
Autentykacja PPP
Jedną z fundamentalnych spraw w kwestii bezpieczeństwa jest zweryfikowanie czy druga strona naszej komunikacji jest tym za kogo się podaje i czy powinna otrzymać wysyłane do niej dane. Zazwyczaj nie jesteśmy w stanie fizycznie sprawdzić jakie urządzenie jest po drugiej stronie „kabla” i czy nie zostało czasem podmienione.
W protokole PPP posiadamy dwie protokoły pozwalające na autentykację drugiej strony komunikacji: Password authentication Protocol PAP oraz Challenge Handshake Authentication Protocol CHAP. Oba protokoły wymieniają między sobą dane jednak z pewnymi różnicami.
Jedną z podstawowych różnic pomiędzy tymi dwoma protokołami jest fakt kto rozpoczyna proces autentykacji, w przypadku PAP robi to router który ma zostać autentykowany, dla CHAP wygląda to odwrotnie, to router autentykujący rzuca wyzwanie – challenge drugiej końcówce. Kolejną różnicą jest sposób przesyłania hasła, PAP przesyła hasło niezaszyfrowane i każdy kto jest wstanie podsłuchać komunikację może odczytać hasło, natomiast CHAP korzysta z funkcji hashującej MD5.

Stosowanie PAP ze względów bezpieczeństwa nie jest najlepszą opcją w obecnych czasach. Jednakże jest kilka wyjątków od tej sytuacji. PAP będzie stosowany w przypadku starszych urządzeń które nie mają zaimplementowanego protokołu CHAP. Gdy potrzebujemy zasymulować mechanizm logowania i autentykacji użytkownika również powinniśmy zastosować PAP ze względu na jego jawność w komunikatach.
R1#hostname Bob Bob(config)# username Ted password Buggie Bob(config)# interface serial 0/0/0 Bob(config-if)# ip address 10.1.1.1 255.255.255.252 Bob(config-if)# encapsulation ppp Bob(config-if)# ppp authentication pap Bob(config-if)# ppp pap sent-username Bob password Fuzzy
R2#hostname Ted Ted(config)# username Bob password Fuzzy Ted(config)# interface serial 0/0/0 Ted(config-if)# ip address 10.1.1.2 255.255.255.252 Ted(config-if)# encapsulation ppp Ted(config-if)# ppp authentication pap Ted(config-if)# ppp pap sent-username Ted password Buggie
Autentykacja poprzez CHAP jest znacznie bezpiecznieczna od PAP ze względu na zastosowanie jednokierunkowej funckji hashującej MD5. Oznacza to, że hash jest generowany każdorazowo (jest unikatowy) i losowo. Nawet jeśli zostanie podsłuchany nie ma możliwości na jego podstawie odtworzenia oryginalnych danych do logowania lub jego ponownego wykorzystania,
PAP i CHAP działają w subwarstwie LCP. Jeśli proces autentykacji nie powiedzie się LCP pozostanie zamknięte.
R1#hostname Bob Bob(config)# username Ted password Buggie Bob(config)# interface serial 0/0/0 Bob(config-if)# ip address 10.1.1.1 255.255.255.252 Bob(config-if)# encapsulation ppp Bob(config-if)# ppp authentication chap
R2#hostname Ted Ted(config)# username Bob password Buggie Ted(config)# interface serial 0/0/0 Ted(config-if)# ip address 10.1.1.2 255.255.255.252 Ted(config-if)# encapsulation ppp Ted(config-if)# ppp authentication chap

Koncepcja Multilink
Multilink PPP jest użyteczną funkcjonalnością PPP kiedy posiadamy dwa lub więcej równoległych szeregowych interfesjów sieciowych pomiędzy dwoma urządzeniami. MLPPP grupuje fizyczne interfejsy w jeden interfejs logiczny dzięki czemu zyskujemy kilka ważnych benefitów. Po pierwsze otrzymujemy zwiększoną przepustowość pomiędzy dwoma urządzeniami jednocześnie zmiejszając skomplikowanie połączeń w warstwie 3. Oprócz zwiększonej przepustowości otrzymujemy prawdziwy load-balancig który polega na podzieleniu ramki na mniejsze ramki które zostaną wysłane poprzez kilka interfejsów równolegle i następnie odtworzone na routerze odbiorcy. Bez zastosowania MLPPP potrzebowaliśmy osobnej podsieci na każdy link co przełożyło by się na dodatkowe relacje sąsiedztwa w dynamicznych protokołach routingu, dodatkowe wpisy tras o równoważnym priorytecie.

Konfiguracja Multilink
Bob(config)# interface serial 0/0 Bob(config-if)# encapsulation ppp Bob(config-if)# ppp multilink group 1 Bob(config)# interface serial 0/1 Bob(config-if)# encapsulation ppp Bob(config-if)# ppp multilink group 1 Bob(config)# interface multilink 1 Bob(config-if)# ip address 10.1.1.1 255.255.255.252 Bob(config-if)# encapsulation ppp Bob(config-if)# ppp multilink Bob(config-if)# ppp multilink group 1
Ted(config)# interface serial 0/0 Ted(config-if)# encapsulation ppp Ted(config-if)# ppp multilink group 1 Ted(config)# interface serial 0/1 Ted(config-if)# encapsulation ppp Ted(config-if)# ppp multilink group 1 Ted(config)# interface multilink 1 Ted(config-if)# ip address 10.1.1.2 255.255.255.252 Ted(config-if)# encapsulation ppp Ted(config-if)# ppp multilink Ted(config-if)# ppp multilink group 1
Weryfikacja Multilink
W celu weryfikcji poprawnego działania multilinku możemy podejrzeć jego konfigurację zarówno jako logicznego interfejsu jak również zweryfikować jego konfigurację jako elementu protokołu punkt-punkt. Na koniec oczywiście warto sprawdzić również czy fizyczne interfejsy wchodzące w jego skład są poprawnie podniesione (stan up/up).
Bob#show interfaces multilink 1 Multilink1 is up, line protocol is up Hardware is multilink group interface Internet address is 10.1.1.1/30 MTU 1500 bytes, BW 3088 Kbit/sec, DLY 100000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation PPP, LCP Open, multilink Open Open: IPCP, CDPCP, loopback not set Bob#show ppp multilink Multilink1, bundle name is Ted Endpoint discriminator is Ted Bundle up for 00:46:33, total bandwidth 3088, load 1/255 Receive buffer limit 24000 bytes, frag timeout 1000 ms 0/0 fragments/bytes in reassembly list 0 lost fragments, 1 reordered 0/0 discarded fragments/bytes, 0 lost received 0x6A received sequence, 0x70 sent sequence Member links: 2 active, 0 inactive (max not set, min not set) Se1/1, since 00:46:34 Se1/0, since 00:46:33 Bob#show ip interface brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down down FastEthernet0/1 unassigned YES unset administratively down down Serial1/0 unassigned YES unset up up Serial1/1 unassigned YES unset up up Serial1/2 unassigned YES unset administratively down down Serial1/3 unassigned YES unset administratively down down Multilink1 10.1.1.1 YES manual up up
0 komentarzy