IPv6 – 5: Neighbor Discovery Protocol e SLAAC – parte 1

Neighbor Discovery Protocolo (NDP) è il nucleo della capacità di autoconfigurazione dei nodi IPv6. Sostituisce ARP, router redirection e diverse altre funzioni,  consentendo una stateless autoconfiguration con duplicate address detection (vale a dire che è in grado di assegnare automaticamente l’indirizzo IPv6 all’interfaccia, senza che sia necessario un server DHCP, configurare un default gateway, è scoprire se l’indirizzo assegnato è già in uso).
E’ descritto in RCF2461, resa obsoleta da RFC 4861 (vedi https://www.rfc-editor.org/info/rfc4861).

Messaggi ICMPv6 usati.

NDP si appoggia a ICMPv6, che è parte integrante di IPv6, non soltanto un protocollo di diagnostica come nel caso di IPv4. ICMPv6 viene usato per MTU discovery, neighbor discovery, router discovery, etc.

Un pacchetto ICMPv6 è caratterizzato da:

– next header value: 58
– type (1 byte) : il tipo di messaggio ICMPv6
– code (1 byte): codice del messaggio, ha un valore che dipende dal tipo di messaggio
– checksum (2 byte)
– Message body (variabile)

Esistono due categorie di messaggi ICMPv6: error (type da 0 a 127)  e informational (type da 128 a 255) . Sono messaggi di errore, ad esempio, Destination unreachable, Packet too big, Time Exceeded, etc.  Tra gli informational ricordiamo i noti echo request ed echo reply.

Neighbor Discovery Protocol

Neighbor Discovery Protocol (RFC 4861)  si appoggia ad ICMPv6 per svolgere le proprie funzioni, ed usa messaggi multicast per comunicare con l’ambiente circostante e ricavarne le informazioni necessarie (definiti in “IP Version 6 Addressing Architecture”, RFC 4291, February 2006).

Tipi di indirizzi usati.

NDP utilizza questi tipi di indirizzi multicast:

all-nodes multicast address: FF02::1 è l’indirizzo multicast che, a livello locale, comunica con tutti i nodi presenti sulla LAN.
all-routers multicast address: FF02::2 è l’indirizzo multicast che, a livello locale, comunica con tutti i router presenti sulla LAN

Questi indirizzi di multicast consentono, ad interfaccia ancora non completamente configurata, di comunicare con il resto della LAN, in modo da poter scoprire i corretti parametri di con-figurazione. Non essendo broadcast, riducono sensibilmente il carico di elaborazione degli host sulla rete.

Messaggi ICMPv6 usati.

NDP usa per il suo funzionamento 5 diversi tipi di messaggi ICMPv6: una coppia di messaggi Router Advertisement e Router Solicitation ed un messaggio di Redirect.

Comunicazione con i router: avviene mediante due tipi di messaggio ICMP:

1 – Router Solicitation (type code 133, code 0):  è un messaggio che viene inviato in multicast da un nodo in via di configurazione; richiede ai router presenti sulla LAN di inviare subito un messaggio di Router advertisement (vale a dire richiede ai router di annunciare la propria presenza sulla rete in modo da poter essere trovati)

2 – Router Advertisement (type code 134, code 0): sono dei messaggi inviati dai router, periodicamente e su richiesta, che definiscono i parametri usati su una specifica LAN (indirizzo e maschera di rete, etc.)

Comunicazione con i propri pari sulla rete: anche questa usa due messaggi ICMP

1- Neighbor solicitation (type 134, code 0): viene usato per scoprire duplicati di indirizzi e per avere il Link Layer address (su rete ethernet il MAC address, sostituendo ARP) di un nodo presente sulla rete.

2 – Neighbor Advertisement (type 135, code 0): risposta ad un Neighbor Solicitation, viene anche diffuso autonomamente in caso di modifiche di Link Layer address.

Redirect: usato dai router per consigliare un diverso gateway per una determinata rete di destinazione.

Configurazione del gateway e prefix discovery. 

Supponiamo che il nodo si sia appena avviato e debba configurare i valori di una propria interfaccia sulla lan (Ip address, gateway, maschera di rete, etc:).

Il nodo invia un Router solicitation message, chiedendo a tutti i router sulla rete di “farsi vivi”.

Nel pacchetto sono presenti questi campi:

  • Source address: può essere l’indirizzo nullo, o un indirizzo già assegnato all’interfaccia.
  • Destination address; FF02::2 (inviato in muticast a tutti i router)
  • Hop limit: 255; qualunque messaggio con hops inferiore a 255 viene scartato. Questo impedisce che vengano presi in considerazione messaggi inviati da altre reti (avrebbero Hops inferiore a 255)
  • Type: 133; il tipo di messaggio ICMPv6
  • Code: 0
  • Checksum:  usata per il controllo di errore
  • Reserved: non usato, deve essere a 0.
  • Options: Source Link Layer Address (può essere inserito  solo se il source address è non nullo, vale a dire se l’interfaccia ha già un indirizzo IPV6; altrimenti non viene incluso ed il router risponderà multicast)

I router presenti sul nodo leggono il messaggio inviato in multicast e rispondono con un Router advertisement che annuncia la loro presenza in rete. Questo messaggio contiene:

  • Source address: l’indirizzo link-local dell’interfaccia del router dalla quale viene inviato il messaggio,
  • Destination address: FF02::1 (all-node multicast address visto precedentemente, o l’indirizzo del nodo chiamante se già configurato)
  • Hop Limit: 255
  • Type: 134
  • Code: 0
  • Cheksum: controllo di errore, come sopra
  • Cur Hop Limit: il valore che il nodo userà come Hop Count per questo router. 0 indica un valore non specificato (per questo router).
  • M bit: se vale 1, indica che i parametri di configurazione saranno inviati da un server DHCPv6, altrimenti DHCPv6 non è abilitato
  • O bit: se vale 1 indica che DHCPv6 fornirà informazioni di configurazione aggiuntive (equivalenti alle oprions di IPv4; ad esempio un DNS)
  • Reserved: 6 bit a zero
  • Router lifetime: il periodo per cui il router può essere considerato affidabile (in secondi). Se posto a 0 indica che il router NON è il default router.
  • Reachable Time: il tempo, in millisecondi, in cui un nodo considererà raggiungibile un vicino, dopo aver ricevuto una conferma di raggiungibilità. In sostanza ci dice per quanto tempo possiamo considerare presente sulla rete il nodo; viene usato da Neighbor Unreachability Detection.
  • Retrans Time:  il tempo, in millisecondi, di ritrasmissione di un messaggio di Neighbor Solicitation.
  • Source Link Layer Address: l’indirizzo link layer (MAC address su una rete ethernet)  dell’interfaccia del router che invia il messaggio. Può non essere specificato se il router effettua load balancing su più interfacce.

Possibili opzioni:

  • source link-layer address; contiene il link-layer address dell’interfaccia da cui il router sta effettuando la comunicazione; elimina la necessità di una risoluzione ARP (protocollo che non è presente , lo ricordiamo, in IPv6) consente al nodo ricevente di effettuare ulteriori comunicazioni unicast con il router
  • MTU: dovrebbe essere inviato per reti che usano MTU variabile, può esserlo per le altre
  • Prefix information; specifica i prefissi un uso sulla rete; dovrebbero essere inviati dal router (con eccezione dei prefissi link-local), in modo tale che il nodo abbia consapevolezza di tutti i diversi prefissi di rete  in uso. Viene usato nella stateless address auto configuration (SLAAC)

Vedremo nel prossimo post i formati di neighbor solicitation  e neighbor advertisement e come questi messaggi vengano utilizzati nella autoconfigurazione del nodo.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. Usiamo i cookies per ragioni tecniche. Teniamo in alta considerazione la tua privacy.

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi