Rafał Rudewicz

1 grudnia 2017

Inna Sieć Newsletter


Protokoły WAN – HDLC, Point-to-point protocol PPP

Routing & Switching | 0 komentarzy

Point to Point Protocol w skrócie PPP to wspólnie z Cisco HDLC najpopularniejsze protokoły WAN funkcjonujące na łączach szeregowych. PPP posiada szereg funkcjonalności między innymi pozwala na load-balancing poprzez multilink oraz autentykację.
Protokoły WAN HDLC i PPP

i 3 Spis treści

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:

 

  1. ip address adres_ip mask
  2. 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):

 

 

 

  1. encapsulation hdlc  – wymuszamy enkapsulacje hdlc na interfejsie
  2. clock rate wybrana_prędkość
  3. 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

 

 

 

 

 

 

 

 

  1. Definiuje nagłówek i stopkę
  2. Wspiera połączenia synchroniczne i asynchroniczne
  3. Poprzez dodanie pola Type w nagłówku wspiera różne protokoły warstwy 3 poprzez pojedyncze połączenie
  4. Wspiera autentykację poprzez Password Authentication Protocol (PAP) oraz Challenge Handshake Autentication Protocol (CHAP).
  5. Wspiera Multilink – grupowanie kilku interfejsów WAN w jeden logiczny z zastosowaniem load-balancingu.
  6. Wspiera Error detection, pozwalający ustawić procentową tolerancję dla błędów zanim interfejs zostanie wyłączony.
  7. Wspiera kompresję danych
  8. 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:

 

 

 

 

 

 

 

 

  1. 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.
  2. Link-quality monitoring – Wyłącza interfejs po przekroczeniu progu tolerancji na błędu.
  3. Multilink PPP – Pozwala na równoważenie ruchu poprzez kilka interfejsów połączonych ze sobą logicznie.
  4. 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

 

 

 

 

Rafał Rudewicz

Rafał Rudewicz

Specjalizuję się w rozwiązaniach Enterprise oraz Service Provider. Projektuję, wdrażam oraz naprawiam sieci dla największych firm na świecie.

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *