Vediamo come configurare un portchannel su un firewall Cisco ASA, vale a dire come aggregare diverse interfaccia ethernet a costituire un solo canale (etherchannel) usando LACP 802.3ad.
Interfacce ridondanti ed etherchannel sono due soluzioni che ci si prospettano quando vogliamo aumentare l’affidabilità delle connessioni. La similarità finisce qui: mentre una configurazione di interfacce ridondate implica che il traffico passa tutto attraverso una porta fisica e, se questa va in fail, se ne attiva un’altra, etherchannel provvede uno strumento per aumentare la banda di un canale ethernet, utilizzando contemporaneamente diverse interfacce fisiche in bilanciamento di carico. Se una di queste si guasta, è possibile continuare ad usare le altre automaticamente.
Detto questo, mettiamo da parte le interfacce ridondate ed occupiamoci direttamente di etherchannel. I firewall Cisco ASA supportano fino a 16 interfacce su un singolo canale (naturalmente dipende dai modelli), ma si deve tenere conto anche delle capacità di gestione dello switch cui si connettono. Lasciando da parte configurazioni estreme, possiamo pensare ad una configurazione “normale” che può significare la connessione di un numero di interfacce che può andare da 2 a 4. Dato che il processo non si modifica, per semplicità e sinteticità faremo riferimento a due sole interfacce.
Teniamo presente che: molti switch non supportano etherchannel con più di 8 interfacce.
ASA5505 non supporta etherchannel.
Cosa fa Etherchannel.
Un Etherchannel (802.3ad), noto anche come link aggregation, (e sui server come NIC Teaming) associa due o più interfacce in un unico canale logico. Il throughput complessivo aumenta, ma non per la singola sessione. Questo significa che mentre il canale può superare il Gigabit/sec di trhoughput, la singola connessione non può, dato che ogni singola sessione avviene attraverso una sola interfaccia.
Interfacce utilizzabili.
Tutte le interfacce debbono essere dello stesso tipo e della stessa velocità, e settate nello stesso modo. Se l’interfaccia supporta sia RJ45 che SFP (moduli ottici) potrà essere usata sia l’una che l’altra soluzione, per cui posso avere etherchannel misti ottici / rame. Lo switch di destinazione deve essere lo stesso per tutte le porte del’etherchannel, a meno che lo switch non sia parte di un VSS (un ssitema di switching virtuale). Ma in generale chi configura un VSS sa già come regolarsi.
Link Aggregation Control Program (LACP)
E’ il protocollo che controlla la negoziazione e l’aggregazione delle porte tra due diversi apparati dei rete (nel nostro caso l’ASA ed uno switch).
Le interfacce fisiche possono essere in modalità Active o Passive.
In modalità Passive l’interfaccia si abilita e costituisce un etherchannel soltanto se dall’altro lato della connessione è presente un dispositivo configurato in modalità active (in sostanza aspetta un invito dall’altro dispositivo per configurare un etherchannel).
In modalità Active l’interfaccia è inizializzata in etherchannel ed invita la sua “dirimpettaia” a fare altrettanto”. Naturalmente le interfacce debbono essere confuigurate per ospitare un etherchannel sia su ASA che su switch. Possono essere tutte in modaità active, è l’etherchannel salirà senza problemi.
Per funzionare, il protocollo LACP, che rileva l’esistenza dei portchannel, scambia delle LACPDU (Link Aggregation Control Protocol Data Units). In modalità active il numero di pacchetti LACPDU aumenta, e l’efficienza del trasferimento dimiuisce.
Esiste una terza possibilità, che è quella di configurare come ON le interfacce coinvolte nel portchannel. In questo caso l’etherchannel è sempre ON, sempre attivo, e non scambia LACPDU. Sull’altro dispositivo le interfacce dovranno anche esse essere impostate su ON, o l’etherchannel non si avvierà, visto che abbiamo eliminato la possibilità di inviare LACPDU.
In sostanza possiamo configurare come ON le interfacce se sappiamo bene cosa stiamo facendo, e se siamo interessati ad avere le massime prestazioni possibili.
Riassumendo si possono verificare questi casi
Configurazione ASA | Configurazione Switch | Risultato |
Passive | Passive | Il Portchannel non si avvia |
Active | Passive | Il portchannel si avvia |
Passive | Active | il portchannel si avvia |
On | On | Il portchannel si avvia, LACP non viene usato |
:
Configurazione di LACP
Tutte le interface dello stesso channel group (il gruppo di interfacce che costituisce un etherchannel) debbono essere dello stesso tipo (velocità, duplex, etc.).
Le interfacce non debbono avere un nome (nel caso va rimosso usando il comando no nameif)
LACP e Trunking.
LACP si può usare per interfacce in trunking senza problemi. L’unica cosa cui fare attenzione è che LACP non supporta il tagging della vlan nativa (in sostanza la vlan nativa deve essere untagged). Altrimenti il canale si blocca.
Configurazione delle interfacce per port-channel
Ciò detto la configurazione lato firewall è semplicissima: supponiamo di voler configurare le interfacce 3 e 4 del nostro asa in un unico port-channel, entriamo in modalità di configurazione e diamo i comandi:
ciscoasa(config)# int gigabitEthernet 1/3 ciscoasa(config-if)# channel-group 1 mode active INFO: security-level, delay, IP address and cts manual are cleared on GigabitEthernet1/3. ciscoasa(config-if)# int gigabitEthernet 1/4 ciscoasa(config-if)# channel-group 1 mode active INFO: security-level, delay, IP address and cts manual are cleared on GigabitEthernet1/4.
Il channel group viene aggiunto automanticamente al momento della configurazione della prima interfaccia. Troveremo dunque in configurazione:
interface Port-channel1 lacp max-bundle 8 no nameif no security-level no ip address
Sostanzialmente l’etherchannel è configurato. Prima di assegnare un indirizzo IP all’interfaccia, ci sono altre configurazioni che vorremo dare a livello 2:
lacp max-bundle numero indica il massimo numero di interfacce ATTIVE usate nel port-channel. Ad esempio possiamo avere un port-channel ocn 6 interfacce configurate, delle quali solo quattro siano attive. Se una delle quattro interfacce si guasta, viene automaticamente rimpiazzata da una di quelle in standby.
Possiamo anche indicare il minimo numero di interfacce attive, al di sotto delle quali il port-channel va in shut down, con il comando
port-channel min-bundle numero
interface Port-channel1 lacp max-bundle 4 port-channel min-bundle 2 no nameif no security-level no ip address
Configurazione del bilanciamento di carico
Di default il bilanciamento di carico viene effettuato in base all’indirizzo di sorgente e destinazione. In alcuni casi questa può non essere la scelta giusta. Se attraverso il firewall passano ad esempio grandi flussi di dati tra due server gli indirizzi in gioco sono sempre gli stessi, e in realtà le connessioni finiranno per insistere sempre sulla stessa interfaccia, riducendo di molto l’utilità del port-channel. Si può cambiare l’algoritmo di bilanciamento perché, ad esempio, usi nel computo del bilanciamento anche le porte di sorgente e destinazione con il comando
port-channel load-balance tipo di bilanciamento
La nostra configurazione diventa:
interface Port-channel1 lacp max-bundle 4 port-channel min-bundle 2 port-channel load-balance src-dst-port nameif test security-level 90 ip address 192.168.0.1 255.255.255.0
In questo caso sono stati anche aggiunti al port-channel il nome di interfaccia (test), l’ip address ed il livello di sicurezza.
Verificare la configurazione del port-channel
ciscoasa# sh port-channel 1 Span-cluster port-channel: No Ports: 2 Maxports = 32 Port-channels: 1 Max Port-channels = 48 Protocol: LACP/ active Minimum Links: 2 Maximum Bundle: 4 Load balance: src-dst-ip
Il comando show port-channel numero ci fornisce indicazioni riguardo il nimero di porte implicate (2), la configurazione del LACP (active), il minimo numor di link (2) ed il massimo numero (4). In ultimo il tipo di bilanciamento di carico (src-dst-ip).