(T) Teoria protokołu DHCPv6**

Wstęp do protokołu DHCPv6

Zagadnienia związane z protokołem DHCPv6

RFC 3315 – Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  • DHCPv6 Client – Urządzenie inicjujące proces przydzielania adresu IPv6, oraz innych informacji rozgłaszanych przez serwer DHCPv6 (Takich jak adres serwera DNS czy nazwa domenowa).
  • DHCPv6 Server – Serwer DHCP odpowiadający na zapytania klienta, może lecz nie musi być w tej samej sieci co klient.
  • DHCPv6 Relay Agent – Urządzenie pośrednie, umożliwiające komunikację klienta z serwerem DHCP, w sytuacji gdy obydwa urządzenia znajdują się w innej sieci (Przeważnie jest to ruter).
  • Inne zagadnienia związane z protokołem DHCPv6:
    • DUID (DHCP Unique Identifier) – Numer identyfikujący urządzenia wspierającego protokół DHCPv6. Zarówno klient jak i serwer DHCP posiadają po jednej unikalnej 2-bajtowej wartości, która wraz z zmienną tworzy numer DUID (Referencja RFC 3315 ogranicza wielkość wartości DUID do 128 bajtów). Obecnie występują trzy rodzaje wartości DUID:
      • Adres Link-Local połączony z czasem.
      • Unikalny numer ID nadany przez organizację IANA.
      • Adres Link-Layer.
    • IA (Identity Association) – Kombinacja adresów przypisanych do jednego interfejsu sieciowego.
    • IAID (Identity Association Identifier) – Unikalna wartość przypisane do interfejsu sieciowego.
  • Adresy IPv6 oraz porty wykorzystywane przez serwer DHCPv6:
    • All_DHCP_Relay_Agents_and_Servers (FF02::1:2) – Multicast-owy adres Link-Local określający wszystkie serwery DHCPv6 oraz wszystkich agentów pośredniczących (Relay Agents).
    • All_DHCP_Servers (FF05::1:3) – Multicast-owy adres Site-Local określający wszystkie serwery DHCPv6.
    • UDP port 546 – Server DHCPv6 oraz agent pośredniczący (Relay) wysyłają wiadomości DHCP do klienta na porcie docelowym UDP 546.
    • UDP port 547 – Klient wysyła wiadomości DHCP do serwera DHCPv6 bądź agenta pośredniczącego (Relay) na porcie docelowym UDP 547.

Wiadomości protokołu DHCPv6

  • SOLICIT (1) – Wiadomość wysyłana przez klienta w celu zlokalizowania serwera bądź wielu serwerów DHCPv6.
  • ADVERTISE (2) – Odpowiedź serwera DHCPv6 na wiadomość SOLICIT.
  • REQUEST (3) – Zapytanie klienta skierowane do jednego z wybranych serwerów DHCPv6, z prośbą o przydzielenie adresu IPv6 oraz innych informacji protokołu DHCPv6 (Takich jak adres serwera DNS czy nazwa domenowa).
  • REPLAY (7) – Odpowiedź serwera DHCPv6 na wiadomość REQUEST. Zawiera adres IPv6 oraz inne informację protokołu DHCPv6. Odpowiedź REPLAY jest również stosowana w odpowiedzi na wiadomość SOLICIT w sytuacji skonfigurowania serwera DHCPv6 z opcją Rapid Commit Option.
  • INFORMATION-REQUEST (11) – Zapytanie klienta wysłane do jednego z wybranych serwerów DHCPv6, z prośbą o przesłanie innych informacji protokołu DHCPv6 bez jednoczesnego przydzielania adresu IPv6.
  • RENEW (5) – Prośba klienta o przedłużenie dzierżawy adresu IPv6 (Zawiera adres oraz inne informacje protokołu DHCP).
  • RELEASE (8) – Prośba klienta o unieważnienie dzierżawy adresu IPv6.
  • DECLINE (9) – Wiadomość wysłana przez klienta DHCP w celu poinformowania serwera DHCPv6, że wydzierżawiony przez serwer adres występuje już w sieci lokalnej (Duplikacja wykryta za pomocą funkcji DAD).

Podstawowa zasada działania protokołu DHCPv6

  • Wymiana informacji pomiędzy klientem a serwerem DHCPv6, jest zbliżona w swym działaniu do zasad protokołu DHCP względem protokołu IPv4, istnieje jednak pomiędzy nimi pewna różnica wynikająca z np. braku adresu rozgłoszeni-owego w protokole IPv6.
  • Proces wymiany danych pomiędzy klientem a serwerem DHCPv6 wygląda następująco:
    • Klient wysyła zapytanie SOLICIT (multicast address).
    • Serwer odpowiada komunikatem ADVERTISE (unicast address).
      • Klient kolekcjonuje otrzymane komunikaty ADVERTISE, zebrane od wielu serwerów DHCPv6. W celu wybrania najlepszej propozycji względem propagowanego prefiksu.
    • Klient potwierdza wybranie adresu IPv6 za pomocą komunikatu REQUEST.
    • Serwer potwierdza rezerwację adresu za pomocą komunikatu CONFIRM.
  • Oprócz tradycyjnej cztero-fazowej negocjacji adresu IPv6, istnieje jeszcze jedna opcjonalna, dwuetapowa negocjacja (Rapid two-way message Exchange), w której klient wraz z serwerem DHCPv6 wymieniają jedynie komunikaty SOLICIT oraz REPLY.
Aby opcja dwuetapowej negocjacji adresu IPv6 była dostępna, obydwa urządzenia muszą być skonfigurowane w trybie szybkiego zatwierdzania pakietów protokołu DHCP „rapid-commit” (RFC 4039).
Proces cztero-stopniowej negocjacji jest wykorzystywany w sieci posiadającej więcej niż jeden serwer DHCPv6. Natomiast w przypadku sieci z jednym serwerem, możliwe staje się wykorzystanie negocjacji dwuetapowej.

Stateful DHCPv6 – Relay Agent

  • W sytuacji, w której docelowy serwer DHCPv6 znajduje się w innej sieci niż host. Protokół DHCP wykorzystuje dwa adresy IPv6. Źródłowy Link-Local oraz docelowy multicast, kierowany do wszystkich agentów pośredniczących (Relay).
    • Adres źródłowy Link-Local – Klient wykorzystuje własny adres IPv6 Link-Local w celu nadania zapytania DHCPv6.
    • Adres Multicast-owy FF02::1:2 – Link-Local Multicast Address jest wykorzystywany jako adres docelowy skierowany do wszystkich serwerów znajdujących się w sieci lokalnej oraz ruterów działających jako agenci przekierowania (Relay).
W przypadku agenta Relay względem protokołu IPv6, ruter pełniący tę rolę zmienia adres źródłowy (Link-Local klienta DHCP) na swój własny adres unicast-owy. Jest to istotna różnica w stosunku do protokołu IPv4.

Działanie protokołu DHCPv6

Proces działania protokołu DHCPv6

Wiadomości RS, RA zostały opisane w artykule: Router Solicitation oraz Router Advertisement.

Diagram opisujący działanie protokołu DHCPv6
  1. Jeżeli klient protokołu DHCPv6 nie otrzymał jeszcze wiadomości Router Advertisement, sam zainicjuje proces pozyskiwania adresu IPv6 za pomocą wiadomości Router Solicitation, wysłanej na adres FF02::2.
  2. Ruter systematycznie co 200 sekund, bądź w odpowiedzi na zapytania Router Solicitation wysyła odpowiedzi Router Advertisement, ze skonfigurowanymi przez administratora flagami A, O oraz M.
  3. Klient wyśle wiadomość SOLICIT do wszystkich dostępnych serwerów DHCPv6 (Na adres IPv6 FF02::1:2). W niektórych przypadkach klient może wysłać wiadomość SOLICIT na opcjonalnie skonfigurowany adres Unicast.
  4. Serwer odpowie na wiadomość SOLICIT, wiadomością ADVERTISE. Jeżeli klient otrzyma więcej niż jedną wiadomość ADVERTISE rozpocznie proces wyboru najlepszej oferty (RFC 3315 rozdział 17.1.3).
  5. Klient wyśle wiadomość REQUEST bądź INFORMATION-REQUEST w zależności od wybranej metody pobierania adresu IPv6 (Stateful bądź Stateless DHCPv6) w oparciu o wartości otrzymanych flag A, O oraz M.
    1. Jeżeli flaga M posiada wartość 1, klient wyśle wiadomość REQUEST.
    1. Jeżeli flaga M posiada wartość 0 a flaga O wartość 1, klient wyśle wiadomość INFORMATION-REQUEST.
  6. Serwer odpowie na wiadomość REQUEST, wiadomością REPLAY zawierającą adres IPv6 oraz inne informacje protokołu DHCPv6. W przypadku otrzymania wiadomości INFORMATION-REQUEST, serwer odpowie wiadomością REPLAY zawierającą jedynie pozostałe informacje protokołu DHCPv6 bez adresu IPv6.
  7. W sytuacji, w której czas dzierżawy adresu IPv6 zbliża się ku końcowi, klient wyśle wiadomość RENEW z prośbą o wydłużenie tego czasu.
  8. Serwer odpowie na otrzymaną wiadomość RENEW, wiadomością REPLAY, potwierdzając tym samym przedłużenie czasu dzierżawy.
Zarówno wiadomość RENEW jak i REPLAY zawierają adres IP wraz z innymi informacjami protokołu DHCPv6.
  • Jeżeli klient nie potrzebuje już przydzielonego adresu IPv6, wyśle wiadomość zwalniającą posiadany adres (RELEASE).
Serwer wysyła wiadomość potwierdzającą REPLAY, w odpowiedzi na wiadomość RELEASE bądź DECLINE.

Zasada działania protokołu DHCPv6 Relay Agent

W przypadku łączenie się z serwerem DHCPv6 za pośrednictwem rutera pośredniczącego (Relay Agent), proces przydziału adresu IPv6 przez serwer DHCPv6 wygląda następująco:

  1. Jeżeli klient protokołu DHCPv6 nie otrzymał jeszcze wiadomości Router Advertisement, sam zainicjuje proces pozyskiwania adresu IPv6 za pomocą wiadomości Router Solicitation, wysłanej na adres FF02::2.
  2. Ruter systematycznie co 200 sekund, bądź w odpowiedzi na zapytania Router Solicitation wysyła odpowiedzi Router Advertisement, ze skonfigurowanymi przez administratora flagami A, O oraz M.
  3. Klient wyśle wiadomość SOLICIT do wszystkich dostępnych serwerów DHCPv6 (Na adres IPv6 FF02::1:2). W niektórych przypadkach klient może wysłać wiadomość SOLICIT na opcjonalnie skonfigurowany adres Unicast.
  4. Agent wyśle wiadomość RELAY-FORWARD zawierającą enkapsulowaną, oryginalną wiadomość SOLICIT otrzymaną od klienta, na multicast-owy adres Site-Local (FF05::1:3), bądź skonfigurowany przez administratora adres Unicast.
  5. Serwer odpowie na wiadomość RELAY-FORWARD, wiadomością RELAY-REPLY zawierającą enkapsulowaną wiadomość ADVERTISE …
Wszystkie wiadomości nadawane przez agenta Relay do serwera DHCPv6 stanowią oryginalną wiadomość otrzymaną od klienta, enkapsulowaną do postaci wiadomości RELAY-FORWARD.
Wszystkie wiadomości wysyłane przez serwer DHCPv6 do Agenta Relay stanowią oryginalną wiadomość serwera enkapsulowaną do postaci wiadomości RELAY-REPLY.

Pozostałe tematy związane z protokołem IPv6

Przydzielanie adresów IPv6

Protokół NAT względem protokołu IPv6

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz