Modulo QSPN - Esempio di uso degli indirizzi virtuali
Passo 11
Ora analiziamo alcune delle dinamiche nella rete che possono portare alla rimozione di indirizzi di connettività sui nodi.
Supponiamo che a causa di variazioni nelle condizioni atmosferiche, ora il nodo 𝜀 e il nodo 𝛾 sono a distanza di rilevamento con la loro interfaccia "eth1". Siccome entrambi hanno due identità devono valutare quali archi vanno formati:
L'arco fra le due identità definitive si forma sempre. Quindi abbiamo 𝜀N-𝛾N.
L'identità 𝜀i(2,2) è di connettività al livello 2 e ha indirizzo [1, 2, 1]. L'identità 𝛾N ha indirizzo [0, 0, 0] e quindi non appartiene a [1]. Quindi non abbiamo 𝜀i(2,2)-𝛾N.
Analogamente, l'identità 𝛾i(2,2) è di connettività al livello 2 e ha indirizzo [0, 2, 1]. L'identità 𝜀N ha indirizzo [1, 0, 0] e quindi non appartiene a [1]. Quindi non abbiamo 𝜀N-𝛾i(2,2).
L'identità 𝜀i(2,2) e L'identità 𝛾i(2,2) appartengono entrambe a [1]. Quindi abbiamo 𝜀i(2,2)-𝛾i(2,2).
Diamo questi comandi ai nodi:
- nodo 𝛾
ip route add 169.254.163.36 dev eth1 src 169.254.94.223 ip netns exec ntkv1 ip route add 169.254.241.153 dev ntkv1_eth1 src 169.254.24.198
- nodo 𝜀
ip route add 169.254.94.223 dev eth1 src 169.254.163.36 ip netns exec ntkv1 ip route add 169.254.24.198 dev ntkv1_eth1 src 169.254.241.153
La presenza di un nuovo arco su ciascuna delle 4 identità coinvolte scatena una serie di trasmissioni di ETP, al termine delle quali abbiamo queste nuove conoscenze:
Il nodo 𝛾N conosce un nuovo percorso per [1, 0, 0] costituito dall'arco 𝛾N-𝜀N.
Il nodo 𝜀N conosce un nuovo percorso per [0, 0, 0] costituito dall'arco 𝜀N-𝛾N.
Il nodo 𝛽i(1,2),N conosce un nuovo percorso per [0, 0, 0] costituito dagli archi 𝛽i(1,2),N-𝜀N-𝛾N e un nuovo percorso per [1, 0, 0] costituito dagli archi 𝛽i(1,2),N-𝛾N-𝜀N.
Il nodo 𝛾i(2,2) conosce un nuovo percorso per [1, 2, 1] costituito dall'arco 𝛾i(2,2)-𝜀i(2,2).
Il nodo 𝜀i(2,2) conosce un nuovo percorso per [0, 2, 1] costituito dall'arco 𝜀i(2,2)-𝛾i(2,2).
Il nodo 𝛽i(1,2),i(2,2) conosce un nuovo percorso per [0, 2, 1] costituito dagli archi 𝛽i(1,2),i(2,2)-𝜀i(2,2)-𝛾i(2,2) e un nuovo percorso per [1, 2, 1] costituito dagli archi 𝛽i(1,2),i(2,2)-𝛾i(2,2)-𝜀i(2,2).
Per il momento non descriviamo i comandi che sui vari nodi queste nuove conoscenze potrebbero scatenare o meno (sulla base dei costi dei vari archi). Rimandiamo questo a dopo per analizzare da subito la possibilità di rimuovere alcuni indirizzi di connettività.
Ora il nodo 𝛽i(1,2),i(2,2) si domanda se la rimozione del suo indirizzo [2, 2, 1] che è di connettività ai livelli da 1 a 2, provoca lo split del g-nodo [2, 1] o del g-nodo [1]. Applichiamo la regola generale esposta nel documento di analisi con i = 0 e j = 2, dove i è il livello del g-nodo che si dovrebbe rimuovere, il quale è di connettività ai livelli da i + 1 a j.
Per prima cosa si cerca il livello più piccolo k, partendo da i + 1, in cui il g-nodo gk-1(𝛽i(1,2),i(2,2)) ha almeno un vicino in gk(𝛽i(1,2),i(2,2)). Nel nostro caso è 1, in quanto [2, 2, 1] (l'equivalente di gk-1(𝛽i(1,2),i(2,2))) ha i vicini [1, 2, 1] e [0, 2, 1] in [2, 1] (l'equivalente di gk(𝛽i(1,2),i(2,2))).
Questo è l'insieme dei g-nodi di livello da 0 a 1 che 𝛽i(1,2),i(2,2) vede nella sua mappa: {[0, 2, 1], [1, 2, 1], [1, 1], [0, 1]}.
Questo è l'insieme dei g-nodi di livello da 0 che 𝛽i(1,2),i(2,2) vede nella sua mappa come diretti vicini di [2, 2, 1]: {[0, 2, 1], [1, 2, 1]}.
Per ogni elemento x del primo set, per ogni elemento y del secondo set, se x ≠ y, il nodo 𝛽i(1,2),i(2,2) è a conoscenza di un percorso per x che passa per y. Quindi 𝛽i(1,2),i(2,2) sa che è possibile rimuovere l'indirizzo di connettività [2, 2, 1].
In modo del tutto simile il nodo 𝛽i(1,2),N scopre che è possibile rimuovere l'indirizzo di connettività [2, 2, 0].
Diamo questi comandi ai nodi:
- nodo 𝛽
# rimuove 𝛽i12,N ip netns exec ntkv0 ip link delete ntkv0_eth1 type macvlan ip netns del ntkv0 # rimuove 𝛽i12,i22 ip netns exec ntkv1 ip link delete ntkv1_eth1 type macvlan ip netns del ntkv1
- nodo 𝛾
# come 𝛾N ip route change 10.0.0.1/32 via 169.254.163.36 dev eth1 src 10.0.0.0 ip route change 10.0.1.1/32 via 169.254.163.36 dev eth1 src 10.0.1.0 ip route change 10.0.2.1/32 via 169.254.163.36 dev eth1 src 10.0.2.0 ip route del 169.254.27.218 dev eth1 src 169.254.94.223 # come 𝛾i22 ip netns exec ntkv1 ip route change 10.0.0.6/31 via 169.254.241.153 dev ntkv1_eth1 ip netns exec ntkv1 ip route change 10.0.1.1/32 via 169.254.241.153 dev ntkv1_eth1 src 10.0.1.0 ip netns exec ntkv1 ip route change 10.0.2.2/31 via 169.254.241.153 dev ntkv1_eth1 ip netns exec ntkv1 ip route del 169.254.42.4 dev ntkv1_eth1 src 169.254.24.198
- nodo 𝜀
# come 𝜀N ip route change 10.0.0.0/32 via 169.254.94.223 dev eth1 src 10.0.0.1 ip route change 10.0.1.0/32 via 169.254.94.223 dev eth1 src 10.0.1.1 ip route change 10.0.2.0/32 via 169.254.94.223 dev eth1 src 10.0.2.1 ip route del 169.254.27.218 dev eth1 src 169.254.163.36 # come 𝜀i22 ip netns exec ntkv1 ip route change 10.0.0.0/30 via 169.254.24.198 dev ntkv1_eth1 ip netns exec ntkv1 ip route change 10.0.0.4/31 via 169.254.24.198 dev ntkv1_eth1 ip netns exec ntkv1 ip route change 10.0.1.0/32 via 169.254.24.198 dev ntkv1_eth1 src 10.0.1.1 ip netns exec ntkv1 ip route change 10.0.2.0/31 via 169.254.24.198 dev ntkv1_eth1 ip netns exec ntkv1 ip route del 169.254.42.4 dev ntkv1_eth1 src 169.254.241.153
Possiamo infine verificare che tutti i nodi raggiungono correttamente tutti gli indirizzi IP globali e gli indirizzi IP interni ai loro g-nodi di livello 1 e 2.