# Router

Il livello 2 del modello ISO/OSI, noto come livello di collegamento dati, consente la comunicazione all'interno di una rete locale (LAN). Tuttavia, per comunicare tra segmenti di rete diversi, è necessario utilizzare dispositivi di rete operanti al livello 3, come i router o i multi-layer switch. Questi dispositivi sono in grado di instradare i pacchetti di dati tra reti diverse, gestendo indirizzi IP e determinando il percorso migliore per il trasferimento delle informazioni.

## Routing dei pacchetti

Un pacchetto può seguire diversi percorsi per raggiungere una destinazione esterna. Questo implica un processo di selezione e instradamento dei pacchetti, noto come `routing`, che consiste nel determinare il percorso più appropriato, passo dopo passo, per arrivare a destinazione.

Le rotte sono necessarie quando ci sono più router coinvolti, poiché in tal caso esistono differenti percorsi che i pacchetti possono seguire per raggiungere la loro destinazione.

Esistono algoritmi di routing che gestiscono l'instradamento dinamico dei pacchetti, adattandosi alle variazioni della rete in tempo reale. In alternativa, è possibile configurare rotte statiche, che rimangono fisse e non si adattano automaticamente alle condizioni della rete.

### Rotte statiche

#### Linux

Per visualizzare le rotte attive:

```bash
ip route
```

Per aggiungere una rotta statica:

```bash
ip route add destination_network/cidr via gateway

ip route add 10.10.1.0/24 via 192.168.0.195
```

#### Windows

Per visualizzare le rotte attive:

```cmd
route print
```

Per aggiungere una rotta statica:

```cmd
route add destination_network MASK subnet_mask gateway

route add 192.168.35.0 MASK 255.255.255.0 192.168.0.2
```

Per eliminare una rotta statica:

```cmd
route delete destination_network
```

#### Switch Layer 3

Per assegnare un indirizzo IP ad un'interfaccia:

```txt
switch> ena
switch# conf t
switch(config)# interface g0/1
switch(config-if)# ip address 192.168.2.1 255.255.255.0
switch(config-if)# no shut
```

Per aggiungere una rotta statica:

```txt
ip route destination_network subnet_mask next_hop
switch(config-if)# ip route 192.168.3.0 255.255.255.0 192.168.2.1
```
