2. Terminologia (Terminology)
2.1. Generale (General)
IP - Internet Protocol Version 6. I termini IPv4 e IPv6 sono usati solo in contesti in cui è necessario evitare ambiguità.
ICMP - Internet Control Message Protocol per il protocollo Internet versione 6. I termini ICMPv4 e ICMPv6 sono usati solo in contesti in cui è necessario evitare ambiguità.
nodo (node) - un dispositivo che implementa IP.
router - un nodo che inoltra pacchetti IP non esplicitamente indirizzati a se stesso.
host - qualsiasi nodo che non sia un router.
livello superiore (upper layer) - un livello di protocollo immediatamente sopra IP. Gli esempi includono protocolli di trasporto come TCP e UDP, protocolli di controllo come ICMP, protocolli di routing come OSPF e protocolli di livello Internet (o livello inferiore) che vengono "tunnelizzati" su (cioè incapsulati in) IP come Internetwork Packet Exchange (IPX), AppleTalk o IP stesso.
collegamento (link) - una struttura di comunicazione o un mezzo attraverso il quale i nodi possono comunicare a livello di collegamento, cioè il livello immediatamente sotto IP. Gli esempi includono Ethernet (semplici o con bridge), collegamenti PPP, X.25, Frame Relay o reti ATM, nonché "tunnel" di livello Internet (o livello superiore), come tunnel su IPv4 o IPv6 stesso.
interfaccia (interface) - l'attacco di un nodo a un collegamento.
vicini (neighbors) - nodi attaccati allo stesso collegamento.
indirizzo (address) - un identificatore di livello IP per un'interfaccia o un insieme di interfacce.
indirizzo anycast (anycast address) - un identificatore per un insieme di interfacce (tipicamente appartenenti a nodi diversi). Un pacchetto inviato a un indirizzo anycast viene consegnato a una delle interfacce identificate da quell'indirizzo (quella "più vicina", secondo la misura di distanza del protocollo di routing). Vedere [ADDR-ARCH].
Si noti che un indirizzo anycast è sintatticamente indistinguibile da un indirizzo unicast. Pertanto, i nodi che inviano pacchetti a indirizzi anycast generalmente non sanno che viene utilizzato un indirizzo anycast. Nel resto di questo documento, i riferimenti agli indirizzi unicast si applicano anche agli indirizzi anycast nei casi in cui il nodo non è consapevole che un indirizzo unicast è effettivamente un indirizzo anycast.
prefisso (prefix) - una stringa di bit che consiste in un certo numero di bit iniziali di un indirizzo.
indirizzo di livello collegamento (link-layer address) - un identificatore di livello collegamento per un'interfaccia. Gli esempi includono indirizzi IEEE 802 per collegamenti Ethernet.
on-link - un indirizzo che è assegnato a un'interfaccia su un collegamento specificato. Un nodo considera un indirizzo come on-link se:
- è coperto da uno dei prefissi del collegamento (ad esempio, come indicato dal flag on-link nell'opzione Prefix Information), oppure
- un router vicino specifica l'indirizzo come destinazione di un messaggio Redirect, oppure
- viene ricevuto un messaggio Neighbor Advertisement per l'indirizzo (destinazione), oppure
- viene ricevuto qualsiasi messaggio Neighbor Discovery dall'indirizzo.
off-link - l'opposto di "on-link"; un indirizzo che non è assegnato ad alcuna interfaccia sul collegamento specificato.
corrispondenza del prefisso più lungo (longest prefix match) - il processo di determinazione di quale prefisso (se presente) in un insieme di prefissi copre un indirizzo di destinazione. Un indirizzo di destinazione è coperto da un prefisso se tutti i bit nel prefisso corrispondono ai bit più a sinistra dell'indirizzo di destinazione. Quando più prefissi coprono un indirizzo, il prefisso più lungo è quello che corrisponde.
raggiungibilità (reachability) - se il percorso "in avanti" unidirezionale verso un vicino funziona correttamente o no. In particolare, se i pacchetti inviati a un vicino raggiungono il livello IP sulla macchina vicina e vengono elaborati correttamente dal livello IP ricevente. Per i router vicini, la raggiungibilità significa che i pacchetti inviati dal livello IP di un nodo vengono consegnati al livello IP del router, e il router sta effettivamente inoltrand o pacchetti (cioè è configurato come router, non come host). Per gli host, la raggiungibilità significa che i pacchetti inviati dal livello IP di un nodo vengono consegnati al livello IP dell'host vicino.
pacchetto (packet) - un'intestazione IP più carico utile.
MTU di collegamento (link MTU) - l'unità di trasmissione massima, cioè la dimensione massima del pacchetto in ottetti, che può essere trasmessa in un'unità di trasmissione su un collegamento.
destinazione (target) - un indirizzo per il quale si cercano informazioni di risoluzione dell'indirizzo, o un indirizzo che è il nuovo primo hop quando viene reindirizzato.
proxy - un nodo che risponde ai messaggi di query Neighbor Discovery per conto di un altro nodo. Un router che agisce per conto di un nodo mobile che si è spostato off-link potrebbe potenzialmente agire come proxy per il nodo mobile.
indicazione ICMP destinazione irraggiungibile (ICMP destination unreachable indication) - un'indicazione di errore restituita al mittente originale di un pacchetto che non può essere consegnato per i motivi delineati in [ICMPv6]. Se l'errore si verifica su un nodo diverso dal nodo che ha originato il pacchetto, viene generato un messaggio di errore ICMP. Se l'errore si verifica sul nodo di origine, un'implementazione non è tenuta a creare e inviare effettivamente un pacchetto di errore ICMP alla sorgente, purché il mittente di livello superiore venga notificato attraverso un meccanismo appropriato (ad esempio, valore di ritorno da una chiamata di procedura). Si noti tuttavia che un'implementazione potrebbe trovare conveniente in alcuni casi restituire errori al mittente prendendo il pacchetto in errore, generando un messaggio di errore ICMP e quindi consegnandolo (localmente) attraverso le routine generiche di gestione degli errori.
ritardo casuale (random delay) - quando si inviano messaggi, a volte è necessario ritardare una trasmissione per un periodo di tempo casuale al fine di impedire a più nodi di trasmettere esattamente nello stesso momento, o per impedire alle trasmissioni periodiche a lungo raggio di sincronizzarsi tra loro [SYNC]. Quando è richiesta una componente casuale, un nodo calcola il ritardo effettivo in modo tale che il ritardo calcolato formi un valore casuale distribuito uniformemente che cada tra i tempi di ritardo minimo e massimo specificati. L'implementatore deve assicurarsi che sia la granularità della componente casuale calcolata che la risoluzione del timer utilizzato siano entrambe sufficientemente elevate per garantire che la probabilità che più nodi ritardino dello stesso tempo sia piccola.
seme di ritardo casuale (random delay seed) - se viene utilizzato un generatore di numeri pseudocasuali nel calcolo di una componente di ritardo casuale, il generatore dovrebbe essere inizializzato con un seme unico prima dell'uso. Si noti che non è sufficiente utilizzare solo l'identificatore di interfaccia come seme, poiché gli identificatori di interfaccia non saranno sempre unici. Per ridurre la probabilità che identificatori di interfaccia duplicati causino l'uso dello stesso seme, il seme dovrebbe essere calcolato da una varietà di sorgenti di input (ad esempio, componenti della macchina) che probabilmente saranno diverse anche su "scatole" identiche. Ad esempio, il seme potrebbe essere formato combinando il numero di serie della CPU con un identificatore di interfaccia. Ulteriori informazioni sulla casualità e sulla generazione di numeri casuali possono essere trovate in [RAND].
2.2. Tipi di collegamento (Link Types)
Diversi livelli di collegamento hanno proprietà diverse. Quelli di interesse per Neighbor Discovery sono:
capace di multicast (multicast capable) - un collegamento che supporta un meccanismo nativo a livello di collegamento per l'invio di pacchetti a tutti (cioè broadcast) o a un sottoinsieme di tutti i vicini.
punto-punto (point-to-point) - un collegamento che connette esattamente due interfacce. Un collegamento punto-punto è assunto avere capacità multicast e un indirizzo link-local.
accesso multiplo senza broadcast (non-broadcast multi-access, NBMA) - un collegamento a cui possono connettersi più di due interfacce, ma che non supporta una forma nativa di multicast o broadcast (ad esempio, X.25, ATM, frame relay, ecc.). Si noti che tutti i tipi di collegamento (incluso NBMA) dovrebbero fornire servizio multicast per le applicazioni che ne hanno bisogno (ad esempio, utilizzando server multicast). Tuttavia, è una questione per ulteriori studi se ND dovrebbe utilizzare tali strutture o un meccanismo alternativo che fornisce la capacità multicast equivalente per ND.
media condiviso (shared media) - un collegamento che consente la comunicazione diretta tra un certo numero di nodi, ma i nodi attaccati sono configurati in modo tale da non avere informazioni complete sul prefisso per tutte le destinazioni on-link. Cioè, a livello IP, i nodi sullo stesso collegamento potrebbero non sapere di essere vicini; per impostazione predefinita, comunicano attraverso un router. Gli esempi includono grandi reti di dati pubbliche (commutate) come Switched Multimegabit Data Service (SMDS) e Broadband Integrated Services Digital Network (B-ISDN). Conosciuto anche come "grandi nuvole". Vedere [SH-MEDIA].
MTU variabile (variable MTU) - un collegamento che non ha un MTU ben definito (ad esempio, anelli token IEEE 802.5). Molti collegamenti (ad esempio, Ethernet) hanno un MTU standard definito dal protocollo di livello collegamento o dal documento specifico che descrive come eseguire IP sul livello collegamento.
raggiungibilità asimmetrica (asymmetric reachability) - un collegamento in cui la raggiungibilità non riflessiva e/o non transitiva fa parte del normale funzionamento. (La raggiungibilità non riflessiva significa che i pacchetti da A raggiungono B, ma i pacchetti da B non raggiungono A. La raggiungibilità non transitiva significa che i pacchetti da A raggiungono B, e i pacchetti da B raggiungono C, ma i pacchetti da A non raggiungono C.) Molti collegamenti radio mostrano queste proprietà.
2.3. Indirizzi (Addresses)
Neighbor Discovery utilizza un certo numero di indirizzi diversi definiti in [ADDR-ARCH], tra cui:
indirizzo multicast all-nodes (all-nodes multicast address) - l'indirizzo di ambito link-local per raggiungere tutti i nodi, FF02::1.
indirizzo multicast all-routers (all-routers multicast address) - l'indirizzo di ambito link-local per raggiungere tutti i router, FF02::2.
indirizzo multicast solicited-node (solicited-node multicast address) - un indirizzo multicast di ambito link-local che viene calcolato come funzione dell'indirizzo della destinazione sollecitata. La funzione è descritta in [ADDR-ARCH]. La funzione è scelta in modo che gli indirizzi IP che differiscono solo nei bit più significativi, ad esempio a causa di più prefissi associati a provider diversi, vengano mappati allo stesso indirizzo solicited-node riducendo così il numero di indirizzi multicast a cui un nodo deve unirsi a livello di collegamento.
indirizzo link-local (link-local address) - un indirizzo unicast con ambito solo link che può essere utilizzato per raggiungere i vicini. Tutte le interfacce sui router devono (MUST) avere un indirizzo link-local. Inoltre, [ADDRCONF] richiede che le interfacce sugli host abbiano un indirizzo link-local.
indirizzo non specificato (unspecified address) - un valore di indirizzo riservato che indica la mancanza di un indirizzo (ad esempio, l'indirizzo è sconosciuto). Non viene mai utilizzato come indirizzo di destinazione, ma può essere utilizzato come indirizzo di origine se il mittente non conosce (ancora) il proprio indirizzo (ad esempio, durante la verifica che un indirizzo non sia utilizzato durante l'autoconfigurazione dell'indirizzo senza stato [ADDRCONF]). L'indirizzo non specificato ha un valore di 0:0:0:0:0:0:0:0.
Si noti che questa specifica non si conforma strettamente ai requisiti di coerenza in [ADDR-SEL] per gli ambiti degli indirizzi di origine e destinazione. È possibile in alcuni casi per gli host utilizzare un indirizzo di origine con un ambito maggiore dell'indirizzo di destinazione nell'intestazione IPv6.
2.4. Requisiti (Requirements)
Le parole chiave MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY e OPTIONAL, quando appaiono in questo documento, devono essere interpretate come descritto in [KEYWORDS].
Questo documento utilizza anche variabili concettuali interne per descrivere il comportamento del protocollo e variabili esterne che un'implementazione deve consentire agli amministratori di sistema di modificare. I nomi delle variabili specifici, come cambiano i loro valori e come le loro impostazioni influenzano il comportamento del protocollo sono forniti per dimostrare il comportamento del protocollo. Un'implementazione non è tenuta ad averle esattamente nella forma descritta qui, purché il suo comportamento esterno sia coerente con quello descritto in questo documento.