Nel precedente articolo di questa serie, abbiamo discusso dei principi di base dell'instradamento IP e dei passaggi coinvolti nell'instradamento IP.
In questo articolo esamineremo un po' più da vicino alcuni degli altri aspetti relativi al routing IP.
Serie Linux IP Routing:parte 1, parte 2, parte 3 (questo articolo).
Iniziamo la discussione con la spiegazione dei flag nelle voci della tabella di routing.
Le bandiere
Di seguito è riportato l'elenco dei flag e il loro significato nella tabella di routing:
- U :questo flag indica che il percorso è terminato
- G :Questo flag indica che il percorso è verso un gateway. Se questo flag non è presente, possiamo dire che il percorso è verso una destinazione direttamente collegata
- H:questo flag indica che il percorso è verso un host, il che significa che la destinazione è un indirizzo host completo. Se questo flag non è presente, si può presumere che il percorso sia verso una rete e la destinazione sia un indirizzo di rete.
- D :questo flag indica che questo percorso è stato creato da un reindirizzamento.
- M :Questo flag indica che questo percorso è stato modificato da un reindirizzamento.
Percorso diretto, percorso indiretto e bandiera "G"
- Un percorso diretto è quello in cui la destinazione è collegata direttamente all'host di inoltro mentre in caso di percorso indiretto l'host di destinazione non è collegato direttamente all'host di inoltro.
- Su un percorso diretto l'indirizzo IP di destinazione e l'indirizzo del livello di collegamento nel datagramma sono quelli dell'host di destinazione mentre in caso di un percorso indiretto, l'IP di destinazione nel datagramma rimane invariato ma l'indirizzo del livello di collegamento cambia in quello di il prossimo router a cui viene consegnato questo datagramma.
- È qui che torna utile la bandiera 'G'. La bandiera "G" sopra indica che questa è una rotta indiretta. Per una rotta diretta, la bandiera "G" non è impostata.
La bandiera "G" contro la bandiera "H"
Ora, come tutti sappiamo, la bandiera "G" indica il percorso. Il percorso potrebbe essere diretto o indiretto come spiegato sopra.
Ma la bandiera "G" non deve essere confusa con la bandiera "H". Questo flag indica che l'indirizzo di destinazione nella voce è un indirizzo host o un indirizzo di rete.
Come già discusso nella parte precedente di questa serie di articoli, quando nella tabella di routing viene cercato l'indirizzo IP di destinazione dal datagramma ricevuto, per primo viene confrontato l'indirizzo completo.
Se la corrispondenza completa dell'indirizzo non riesce, l'ID di rete viene abbinato per vedere se la tabella di routing ha una voce per una rete a cui appartiene l'indirizzo IP di destinazione del datagramma.
Quindi vediamo che in caso di corrispondenza completa dell'indirizzo IP la voce conterrebbe il flag "H" mentre in caso di corrispondenza dell'ID di rete la voce non conterrebbe il flag "H".
Complessità della tabella di routing
Una tabella di routing può essere abbastanza semplice e può essere molto complessa. La complessità di una tabella di routing dipende dalla topologia della rete con cui comunica l'host. Consideriamo alcuni casi pratici e vediamo come influenzano la tabella di routing di un host.
- Un caso molto semplice sarebbe quello di un host autonomo che non è affatto connesso a nessuna rete. In questo caso lo stack TCP/IP può essere comunque utilizzato dall'host ma in caso di comunicazione solo con se stesso. Quindi in questo caso la tabella di routing conterrebbe una singola voce e quella sarà di interfaccia di loopback.
- Per un host connesso a una singola LAN, la tabella di routing conterrebbe un paio di voci. Una voce (come già discusso sopra) sarebbe quella dell'interfaccia di loopback mentre l'altra voce sarebbe quella della LAN.
- Ora, supponiamo che l'host sia connesso a Internet. In questo caso la tabella del router conterrà (oltre alla voce di loopback) una voce per il router predefinito attraverso il quale l'host è connesso a Internet.
- Se l'host è connesso a varie reti tramite interfacce diverse, la tabella di routing conterrà voci individuali per tutte le diverse reti a cui è connesso l'host. Inoltre ci sarà una voce di loopback e potrebbe esserci una voce di router predefinita.
Inizializzazione della tabella di routing
Finora abbiamo discusso delle voci della tabella di instradamento, di cosa contengono, della loro complessità ecc. Ora parliamo brevemente della creazione di queste voci.
- Quando un'interfaccia viene inizializzata, viene creata una voce per un percorso diretto nella tabella di routing corrispondente a tale interfaccia.
- I percorsi verso reti e host che non sono direttamente connessi possono essere aggiunti tramite comandi.
- Il comando 'percorso' viene utilizzato per questo scopo.
- Ad esempio, un comando di route di base sarebbe simile a:route add
- Se la "metrica" è diversa da zero, il flag "G" è impostato diversamente.
Questo comando route può essere attivato dai file di inizializzazione all'avvio del sistema. Il problema qui è che non esiste un file standard utilizzato in tutti i sistemi operativi che contiene il comando route. Sotto 4.4BSD e BSD/386 è /etc/netstart, sotto SVR4 è /etc/inet/rc.inet, sotto Solaris 2.x è /etc/rc2.d/S69inet, SunOS 4.1.x usa /etc /rc.local e AIX 3.2.2 utilizza /etc/rc.net.
Ci sono un paio di altri modi per inizializzare una tabella di routing. Come eseguire un demone di routing o utilizzare il protocollo di rilevamento del router, ma non li elaboreremo in questo articolo.
NOTA:dovresti anche capire come usare il comando route in modo efficace.
Errori irraggiungibili dell'host ICMP o della rete ICMP
Questi errori si verificano quando l'host o la rete (a cui è destinato il datagramma IP) sono inattivi. Ad esempio, supponiamo che l'host A sia connesso all'host B e il collegamento all'host B sia inattivo.
Quindi, in questo caso, se l'host A riceve un datagramma IP per l'host B, l'host A invierà un errore "host irraggiungibile" all'host da cui ha avuto origine questo datagramma IP.
Questo caso presuppone che non esista alcuna voce router predefinita sull'host A. Lo stesso vale per l'errore "rete irraggiungibile".