tc
è un potente strumento della riga di comando in Linux utilizzato per configurare il controllo del traffico nel kernel. Permette di modellare il traffico di rete, dando priorità a specifici tipi di pacchetti, limitando la larghezza di banda e simulando la perdita di pacchetti. In sostanza, tc
ti permette di definire come i pacchetti vengono gestiti in entrata (ingress) e in uscita (egress) dalle tue interfacce di rete.
A cosa serve?
tc
viene utilizzato per una vasta gamma di scopi, tra cui:
Componenti principali di tc:
qdisc
(Queueing Discipline): Determina come i pacchetti vengono accodati prima di essere trasmessi. Esempi comuni includono pfifo_fast
, htb
e fq_codel
. qdisc
sono il nucleo della configurazione tc
. Ogni interfaccia di rete ha una qdisc
radice.
class
: Divide una qdisc
in sottoclassi, consentendo di applicare regole diverse a diversi tipi di traffico. Le class
sono organizzate in una struttura gerarchica, con una qdisc
radice e poi class
figlie.
filter
: Definisce quali pacchetti appartengono a quale class
. I filter
utilizzano criteri come indirizzi IP, porte, protocolli, e TOS (Type of Service) per classificare i pacchetti.
Sintassi di base:
La sintassi generale di tc
è la seguente:
tc [ OPTIONS ] OBJECT COMMAND [ ARGUMENTS ]
Dove:
OBJECT
è l'oggetto su cui si vuole agire (es. qdisc
, class
, filter
).COMMAND
è l'azione da eseguire (es. add
, change
, del
, show
).ARGUMENTS
sono i parametri specifici per l'oggetto e il comando.Esempi di utilizzo:
Visualizzare le qdisc
configurate su un'interfaccia:
tc qdisc show dev eth0
Aggiungere una qdisc
htb
all'interfaccia eth0
:
tc qdisc add dev eth0 root handle 1: htb default 10
Aggiungere una class
all'interno della qdisc
htb
:
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit
Aggiungere un filter
per indirizzare il traffico sulla porta 80 verso la class
1:1:
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 80 0xffff flowid 1:1
Argomenti importanti:
htb
(Hierarchical Token Bucket): Una qdisc
potente e flessibile, ampiamente utilizzata per il traffic shaping gerarchico. Permette di definire una gerarchia di classi con diverse velocità e priorità.
fq_codel
(Fair Queueing Controlled Delay): Una qdisc
che riduce la latenza e la jitter, particolarmente adatta per connessioni interattive. Utilizza algoritmi di "fair queueing" per garantire che nessuna connessione soffochi le altre.
rate
: Definisce la velocità minima garantita per una class
.
ceil
: Definisce la velocità massima che una class
può raggiungere.
prio
: La priorità del filtro (più basso è il valore, maggiore è la priorità).
Avvertenze:
La configurazione di tc
può essere complessa e richiede una buona comprensione dei concetti di networking. Una configurazione errata può degradare le prestazioni della rete o addirittura bloccare il traffico. È consigliabile studiare a fondo la documentazione e testare le configurazioni in un ambiente di prova prima di applicarle a un sistema di produzione.
Ricorda che le modifiche apportate con tc
sono generalmente temporanee e vengono perse al riavvio del sistema. Per rendere le modifiche permanenti, è necessario salvarle in un file di configurazione e caricarle all'avvio del sistema. Il metodo per farlo varia a seconda della distribuzione Linux.
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page