6. Zone Indices (Indici di zona)
6. Zone Indices (Indici di zona)
Poiché lo stesso indirizzo non globale può essere in uso in più di una zona dello stesso ambito (ad es., l'uso dell'indirizzo link-local fe80::1 su due link fisici separati) e un nodo può avere interfacce collegate a diverse zone dello stesso ambito (ad es., un router normalmente ha più interfacce collegate a link diversi), un nodo richiede un mezzo interno per identificare a quale zona appartiene un indirizzo non globale. Questo si realizza assegnando, all'interno del nodo, un distinto "indice di zona" a ogni zona dello stesso ambito a cui quel nodo è collegato, e consentendo a tutti gli usi interni di un indirizzo di essere qualificati da un indice di zona.
L'assegnazione degli indici di zona è illustrata nell'esempio nella figura seguente:
---------------------------------------------------------------
| a node |
| |
| |
| |
| |
| |
| |
| /--link1--\ /--------link2--------\ /--link3--\ /--link4--\ |
| |
| /--intf1--\ /--intf2--\ /--intf3--\ /--intf4--\ /--intf5--\ |
---------------------------------------------------------------
: | | | |
: | | | |
: | | | |
(imaginary ================= a point- a
loopback an Ethernet to-point tunnel
link) link)
Figura 1: Esempio di indici di zona
Questo nodo di esempio ha cinque interfacce:
-
Un'interfaccia loopback al link loopback immaginario (un link fantasma che non va da nessuna parte).
-
Due interfacce allo stesso link Ethernet.
-
Un'interfaccia a un link punto-a-punto.
-
Un'interfaccia tunnel (ad es., l'endpoint astratto di un tunnel IPv6-over-IPv6 [8], presumibilmente stabilito su un link Ethernet o punto-a-punto).
È pertanto collegato a cinque zone interface-local, identificate dagli indici di interfaccia da 1 a 5.
Poiché le due interfacce Ethernet sono collegate allo stesso link, il nodo è collegato a soli quattro zone link-local, identificate dagli indici di link da 1 a 4. Si noti anche che anche se l'interfaccia tunnel è stabilita su Ethernet, il link tunnel ottiene il suo proprio indice di link, che è diverso dall'indice della zona link Ethernet.
Ogni indice di zona di un particolare ambito dovrebbe contenere informazioni sufficienti per indicare l'ambito, in modo che tutti gli indici di tutti gli ambiti siano univoci all'interno del nodo e gli indici di zona stessi possono essere utilizzati per uno scopo dedicato. L'utilizzo dell'indice per identificare una voce nella Management Information Base (MIB) è un esempio dello scopo dedicato. La rappresentazione effettiva per codificare l'ambito è dipendente dall'implementazione ed è fuori dall'ambito di questo documento. All'interno di questo documento, gli indici sono semplicemente rappresentati in un formato come "indice di link 2" per leggibilità.
Gli indici di zona sono strettamente locali al nodo. Ad esempio, il nodo all'altro capo del link punto-a-punto può utilizzare valori di indice di interfaccia e di link completamente diversi per tale link.
Un'implementazione dovrebbe anche supportare il concetto di una zona "predefinita" per ogni ambito. E, quando supportato, il valore dell'indice zero per ogni ambito DOVREBBE essere riservato per significare "utilizzare la zona predefinita". A differenza di altri indici di zona, l'indice predefinito non contiene alcun ambito, e l'ambito è determinato dall'indirizzo che l'indice predefinito accompagna. Un'implementazione può anche definire una zona predefinita separata per ogni ambito. Questi indici predefiniti possono anche essere utilizzati come qualificatore di zona per un indirizzo per il quale il nodo è collegato a una sola zona; ad es., quando si utilizzano indirizzi globali.
Attualmente, non esiste un modo per un nodo di determinare automaticamente quali delle sue interfacce appartengono alle stesse zone; ad es., lo stesso link o la stessa zona di ambito multicast più grande di interface. In futuro, i protocolli possono essere sviluppati per determinare tale informazione. In assenza di tali protocolli, un'implementazione DEVE fornire un mezzo per l'assegnazione manuale e/o la riassegnazione degli indici di zona. Inoltre, per evitare di eseguire una configurazione manuale nella maggior parte dei casi, un'implementazione dovrebbe, per impostazione predefinita, assegnare inizialmente gli indici di zona solo come segue:
-
Un indice di interfaccia univoco per ogni interfaccia.
-
Un indice di link univoco per ogni interfaccia.
Quindi la configurazione manuale sarebbe necessaria solo per i casi meno comuni di nodi con più interfacce su un singolo link o di quelli con interfacce su zone di diversi ambiti (solo multicast).
Pertanto, gli assegnamenti di indice di zona predefiniti per il nodo di esempio dalla Figura 1 sarebbero come illustrato nella Figura 2 di seguito. La configurazione manuale sarebbe quindi richiesta per, ad esempio, assegnare lo stesso indice di link alle due interfacce Ethernet, come mostrato nella Figura 1.
---------------------------------------------------------------
| a node |
| |
| |
| |
| |
| |
| /--link1--\ /--link2--\ /--link3--\ /--link4--\ /--link5--\ |
| |
| /--intf1--\ /--intf2--\ /--intf3--\ /--intf4--\ /--intf5--\ |
---------------------------------------------------------------
: | | | |
: | | | |
: | | | |
(imaginary ================= a point- a
loopback an Ethernet to-point tunnel
link) link)
Figura 2: Esempio di indici di zona predefiniti
Oltre ad assegnare inizialmente gli indici di zona, come specificato sopra, un'implementazione dovrebbe selezionare automaticamente una zona predefinita per ogni ambito per il quale c'è più di una scelta, da utilizzare ogni volta che un indirizzo è specificato senza un indice di zona (o con un indice di zona di zero). Ad esempio, nell'esempio mostrato nella Figura 2, l'implementazione potrebbe selezionare automaticamente intf2 e link2 come zone predefinite per ognuno di questi due ambiti. (Un possibile algoritmo di selezione è scegliere la prima zona che include un'interfaccia diversa dall'interfaccia loopback come predefinita per ogni ambito.) Un mezzo DEVE anche essere fornito per assegnare la zona predefinita per un ambito manualmente, ignorando qualsiasi assegnazione automatica.
L'indirizzo loopback unicast, ::1, non può essere assegnato a nessuna interfaccia diversa dall'interfaccia loopback. Pertanto, è consigliato che, ogni volta che ::1 è specificato senza un indice di zona o con l'indice di zona predefinito, sia interpretato come appartenente alla zona link-local del link loopback, indipendentemente da quale zona link-local è stata selezionata come predefinita. Se questo viene fatto, allora per i nodi con una sola interfaccia non loopback (ad es., una singola interfaccia Ethernet), il caso comune, gli indirizzi link-local non devono essere qualificati con un indice di zona. L'indirizzo non qualificato ::1 farebbe sempre riferimento alla zona link-local che contiene l'interfaccia loopback. Tutti gli altri indirizzi link-local non qualificati farebbero riferimento alla zona link-local che contiene l'interfaccia non loopback (fintanto che la zona link-local predefinita è stata impostata come la zona che contiene l'interfaccia non loopback).
A causa del requisito che una zona di un dato ambito si trovi completamente all'interno di zone di ambito più grande (vedi Sezione 5, sopra), due interfacce assegnate a diverse zone di ambito S DEVONO anche essere assegnate a diverse zone di tutti gli ambiti più piccoli di S. Pertanto, l'assegnazione manuale di distinti indici di zona per un ambito può richiedere l'assegnazione automatica di distinti indici di zona per ambiti più piccoli. Ad esempio, supponiamo che distinti indici multicast site-local 1 e 2 siano assegnati manualmente nella Figura 1 e che il sito 1 contenga i link 1, 2 e 3, ma il sito 2 contenga solo il link 4. Questa configurazione causherebbe la creazione automatica di corrispondenti indici admin-local (cioè, multicast "scop" valore 4) 1 e 2, perché l'ambito admin-local è più piccolo dell'ambito site-local.
Con le considerazioni precedenti, il set completo di indici di zona per il nodo di esempio dalla Figura 1, con le configurazioni aggiuntive qui, è mostrato nella Figura 3 di seguito.
---------------------------------------------------------------
| a node |
| |
| |
| |
| |
| |
| /--------------------site1--------------------\ /--site2--\ |
| |
| /-------------------admin1--------------------\ /-admin2--\ |
| |
| /--link1--\ /--------link2--------\ /--link3--\ /--link4--\ |
| |
| /--intf1--\ /--intf2--\ /--intf3--\ /--intf4--\ /--intf5--\ |
---------------------------------------------------------------
: | | | |
: | | | |
: | | | |
(imaginary ================= a point- a
loopback an Ethernet to-point tunnel
link) link)
Figura 3: Esempio completo di indici di zona
Sebbene gli esempi precedenti mostrino l'assegnazione dei valori dell'indice delle zone in sequenza per ogni ambito, a partire da uno, i valori dell'indice di zona sono arbitrari. Un'implementazione può etichettare una zona con qualsiasi valore scelga, fintanto che il valore dell'indice di ogni zona di tutti gli ambiti è univoco all'interno del nodo. Zero DOVREBBE essere riservato per rappresentare la zona predefinita. Le implementazioni che scelgono di seguire l'API di base consigliata [10] vorranno limitare i loro valori di indice a quelli che possono essere rappresentati dal campo sin6_scope_id della struttura sockaddr_in6.