Ti è mai capitato di andare da un cliente per risolvere un problema e scoprire che tutto era dovuto a una pessima configurazione dello switch? Immagino di sì.

Ma quante di queste volte hai pensato “ma perché diavolo qualcuno si è preso la briga di cambiare questa configurazione? Se l’avesse lasciata così com’era non sarebbe successo nulla!”

Ecco, oggi voglio parlarti proprio di quei casi. Ci sono alcuni elementi che in fase di configurazione degli switch non andrebbero mai toccati. Ne ho individuati tre.

Se tu ritieni che ce ne siano di più, commenta liberamente sotto all’articolo.
 

MAC Learning

La prima funzionalità di cui ti voglio parlare è chiamata MAC Learning. Sicuramente saprai già che uno switch usa i MAC address per decidere come inviare i frame. A livello Ethernet di solito ci si riferisce ai pacchetti chiamandoli frame, ma più o meno si tratta della stessa cosa.

Un MAC address non è altro che una sequenza a 48-bit che identifica univocamente un dispositivo. Gli indirizzi IPv4 standard usano una sequenza di soli 32 bit, quindi facendo due conti si possono identificare univocamente molti più device usando i MAC address rispetto a quelli identificabili con gli indirizzi IP.

Gli indirizzi IPv6 hanno una lunghezza d 128 bit ma la maggior parte degli indirizzi IPv6 include comunque un MAC address per semplificare la generazione dinamica di indirizzi.

Ogni frame ha un indirizzo MAC di partenza e uno di destinazione.

Lo switch cerca il MAC address di destinazione all’interno di una tabella interna generata dinamicamente, chiamata MAC table, e spedisce il frame alla porta associata a quel MAC.

Come fa lo switch a sapere dove e come indirizzare questi frame? Semplicemente “ascoltando”.

Ogni volta che riceve un frame da una porta, lo switch guarda al MAC address di partenza. Se questo non è ancora presente nella tabella MAC, crea un elemento che associa l’indirizzo a quella specifica porta.

Questo processo non è altro che il MAC learning.

Ci sono però un paio di eccezioni.

La prima riguarda broadcast e multicast. Si tratta di indirizzi MAC speciali.

Gli indirizzi broadcast sono composti da 48 bit fatti interamente di “1”. Un MAC address multicast, invece, comincia con 3 byte speciali: 01-00-5e, seguiti da 3 ulteriori byte (24 bit) che generalmente fanno riferimento agli indirizzi IP multicast e funzionano sia con IPv4 che IPv6.

Per definizione i frame spediti tramite broadcast vanno a tutti i device. Quando uno switch vede una sequenza di “1” nel MAC address di destinazione, si occupa di spedire il frame a tutte le porte attive.

I multicast, invece, vengono usati per la distribuzione simultanea di una stessa informazione a più destinatari. Quindi, i frame spediti via multicast sono inviati solo tramite alcune porte a dispositivi specifici, o a nessuna porta.

Potrei scendere maggiormente nel dettaglio (facendo magari inorridire i puristi che già con le descrizioni sopra esposte potrebbero aver storto il naso) e parlare di come gli switch fanno a sapere dove spedire i multicast, ma direi che è superfluo in questo momento.
 
 

L’altra importante eccezione riguarda il comportamento degli switch quando incontrano un MAC address sconosciuto, ovvero uno non presente nella “MAC table”. In questo caso, lo switch non ha altra scelta se non spedire il frame attraverso tutte le porte.

Questa operazione è chiamata strongflooding. La speranza è che il device corretto in qualche modo “risponda” cosicché lo switch possa aggiornare i dati nella MAC table.

Su molti switch è possibile disabilitare il MAC learning… ma perché farlo?

Ci possono essere alcuni buoni motivi. Ad esempio potresti voler configurare “staticamente” i dati di un particolare device nella MAC table in modo che non possa essere sovrascritto.

Oppure hai un numero così elevato di MAC address nella tua rete che non è possibile tenerli tutti all’interno di una sola tabella. In questi casi potresti voler disabilitare il MAC learning su una o più porte.

Comunque si tratta di situazioni estremamente rare. La maggior parte delle volte non hai alcun bisogno di disabilitare il MAC Learning, anche perché senza di esso i tuoi switch andranno in flooding a ogni frame da spedire. Ti lascio immaginare come le performance possano risentirne…

Quindi il mio consiglio è di non disattivare questa funzionalità a meno che tu non sappia esattamente cosa stai facendo e perché lo stai facendo. E se dovessi notare dei rallentamenti nelle reti dei tuoi clienti dai un’occhiata al MAC learning e assicurati che sia attivo.
 

Port Security

La seconda funzionalità è in qualche modo legata alla MAC table ed è chiamata “Port Security”.

Puoi ritrovarla su molti switch Cisco e ti permette di specificare un numero massimo di MAC address che possono comparire nella MAC table di un determinato switch.

Spesso viene utilizzata per evitare che la gente attacchi degli switch sotto la scrivania e colleghi un gruppo di macchine a una singola porta. A volte viene utilizzato anche per forzare determinati MAC addess, e di conseguenza specifici dispositivi, a essere gli unici dispositivi consentiti su determinate porte.

Il problema è che usare Port Security non è il metodo per risolvere queste situazioni. Potrei prendere un piccolo firewall e far sì che una decina di PC sembrino avere un unico MAC address. O potrei riconfigurare il mio device per fargli avere lo stesso MAC address di un altro.

Ma soprattutto, questa funzionalità, può creare serie e spiacevoli conseguenze. Per esempio, se la abiliti su una porta a cui è collegato un access point, puoi avere dei problemi quando un dispositivo deve connettersi a un access point diverso dall’altra parte dell’ufficio. E potresti avere il problema di non riuscire a far collegare tutti i device che, lecitamente, hanno diritto di connettersi.

In breve, penso che la funzionalità Port Security possa causare più problemi di quanti ne risolve. Se vuoi davvero controllare quale dispositivo si può connettere dove, forse è meglio usare un sistema Network Access Control come 802.1x.

La Port Security è disabilitata di default, non attivarla.
 

Spanning Tree

 
L’ultima funzionalità che secondo me dovrebbe sempre essere abilitata è Spanning Tree. Lo scopo del protocollo è evitare dei loop.

Ethernet ha un difetto terribile: non è possibile per nessun dispositivo stabilire se un particolare frame è stato inviato o no.

Quindi se hai un loop nella rete del tuo cliente, ossia due switch connessi attraverso più di un percorso, ogni switch invierà ogni frame in quel loop per un numero infinito di volte. Senza porsi nessuna domanda.

La soluzione è assicurarti che non esista nessun loop. Certo, potresti farlo manualmente, ma non funziona sempre.

A volte, non so perché, succede che qualcuno ha la brillante idea di connettere uno switch a due porte differenti. Non sono sicuro di capire quale sia il suo ragionamento o se ci sia logica in questa azione, ma succede più spesso di quanto dovrebbe. E ogni volta che accade, scoppia un casino in ufficio.

E poiché la rete è completamente congestionata dai tentativi di inviare lo stesso pacchetto infinite volte, diventa molto difficile capire dove si nasconda il loop colpevole.

Ma se abiliti Spanning Tree, la rete individuerà e bloccherà proattivamente i loop. Questo ti darà il vantaggio aggiuntivo di poter stabilire connessioni multiple tra gli switch per avere maggiore ridondanza in caso di problemi nella rete.

Tratto dal blog di Auvik.

Condividi sui Social Network