⚡ Traffic Shaping & QoS

Controllo Banda, Prioritizzazione Traffico e Quality of Service

Capitolo 8 di 11

⚡ Cos'è il Traffic Shaping?

Il Traffic Shaping (o QoS - Quality of Service) è la capacità di controllare, prioritizzare e limitare il traffico di rete in base a regole specifiche. Immagina di avere un'autostrada a 3 corsie: il traffic shaping decide quali veicoli possono usare la corsia veloce, quali quella normale, e quali devono rallentare.

🎯 Problemi Risolti dal Traffic Shaping

📞

VoIP Instabile

Chiamate che "scattano" quando qualcuno scarica file → QoS garantisce priorità VoIP

🎥

Videoconferenze Lente

Teams/Zoom lagga durante backup → Priorità alta per videoconferenze

🐌

Un Utente Satura Banda

Download torrent occupa tutta la banda → Limiti per-utente o per-applicazione

🏢

Servizi Critici Lenti

ERP/CRM lento durante peak hours → Priorità garantita per traffico aziendale

📊 Scenari d'Uso Reali

Scenario Problema Soluzione QoS
Call Center VoIP scadente durante ore punta Priorità massima VoIP (EF), limite download per utenti
Ufficio Remoto Videoconferenze interrotte da aggiornamenti Windows Priorità alta videoconf, limite basso Windows Update
Scuola/Università Studenti saturano banda con YouTube/Netflix Limite streaming video, priorità piattaforme e-learning
Hotel/WiFi Pubblico Pochi utenti monopolizzano banda Fair queue + limite per-utente (es: 10 Mbps max)
Azienda Multi-Sede VPN site-to-site lenta Priorità traffico inter-sede, limit P2P/streaming

🔧 Due Approcci: Traffic Shaper vs Limiters

pfSense offre DUE sistemi di traffic shaping completamente diversi. È fondamentale capire quando usare quale!

🔹 Traffic Shaper (ALTQ)

Sistema più vecchio ma maturo, basato su ALTQ (Alternate Queueing). Lavora con code di priorità gerarchiche.

💡 Come Funziona ALTQ

ALTQ crea "code" (queues) con priorità diverse. Quando la banda è satura, i pacchetti nelle code ad alta priorità passano prima.

Banda WAN: 100 Mbps

Queue Hierarchy:
├─ qVoIP (40% banda, priorità 7) ← VoIP sempre fluido
├─ qVideoConf (30% banda, priorità 5) ← Teams/Zoom
├─ qWeb (20% banda, priorità 3) ← Navigazione normale
└─ qDefault (10% banda, priorità 1) ← Tutto il resto

Durante congestione:
- VoIP usa fino a 40 Mbps garantiti
- Se VoIP usa solo 10 Mbps, i 30 Mbps liberi vanno a VideoConf
- Fair distribution dinamica basata su priorità

✅ Vantaggi ALTQ:

  • ✅ Prioritizzazione intelligente basata su tipo traffico
  • ✅ Condivisione banda dinamica tra code
  • ✅ Wizard integrato (facilissimo per casi comuni)
  • ✅ Ideale per: VoIP, videoconferenze, gaming

❌ Limitazioni ALTQ:

  • ❌ Solo 1 interfaccia per tipo (1 WAN, 1 LAN)
  • ❌ Non funziona con multi-WAN load balancing
  • ❌ Meno granulare per limiti per-utente

🔹 Limiters (dummynet)

Sistema più flessibile basato su dummynet. Lavora con pipe che limitano rigidamente la banda.

Configurazione limiter download

Configurazione limiter per limitare velocità download con schedulers

💡 Come Funzionano i Limiters

I limiters sono "tubi" con diametro fisso. Crei limiters separati e li associ a regole firewall specifiche.

Limiter: Download_10Mbps
Bandwidth: 10 Mbps
Mask: Source Address

Applicato a regola firewall:
Source: LAN net
Destination: Internet
In/Out pipe: Download_10Mbps

Risultato:
Ogni IP LAN può scaricare MAX 10 Mbps
IP 192.168.1.10 → 10 Mbps max
IP 192.168.1.20 → 10 Mbps max (indipendente)
Totale può superare 10 Mbps (somma di tutti)

✅ Vantaggi Limiters:

  • ✅ Limiti per-utente granulari
  • ✅ Funziona con multi-WAN
  • ✅ Bandwidth guarantees rigidi
  • ✅ Supporta più interfacce simultaneamente

❌ Limitazioni Limiters:

  • ❌ Nessuna prioritizzazione intelligente
  • ❌ Banda "sprecata" se non utilizzata (non ridistribuita)
  • ❌ Configurazione più complessa (no wizard)

⚠️ ALTQ e Limiters Insieme: Possibile ma Attenzione!

Tecnicamente puoi usare ALTQ e Limiters contemporaneamente, MA:

  • ⚠️ Configurazione molto complessa
  • ⚠️ Facile creare conflitti/inefficienze
  • ⚠️ Debugging difficile

Consiglio: Scegli UNO dei due approcci in base alle tue esigenze!

🤔 Quale Scegliere?

Usa ALTQ Se... Usa Limiters Se...
Hai VoIP o videoconferenze critiche Vuoi limitare singoli utenti (es: 10 Mbps/user)
Vuoi prioritizzazione automatica per tipo traffico Hai multi-WAN con load balancing
Setup singola WAN + singola LAN Hai multiple interfacce (LAN, DMZ, Guest, etc.)
Vuoi wizard semplice e veloce Serve controllo granulare per-regola
Gaming online (bassa latenza critica) WiFi pubblico con fair usage per utente

🧙 Configurazione Traffic Shaper (ALTQ) con Wizard

Iniziamo con ALTQ usando il wizard - perfetto per VoIP, videoconferenze e gaming!

🚀 Step 1: Avviare il Wizard

  1. Accedi al wizard
    Vai in Firewall → Traffic Shaper → Wizards
  2. Seleziona wizard
    Wizard: Multiple Lan/Wan (più completo)
    Clicca Next

📊 Step 2: Configurare Banda WAN

  1. Numero connessioni WAN
    Number of WAN type connections: 1
    (Aumenta se hai multi-WAN)
  2. Configura connessione WAN
    Interface: WAN
    
    Scheduler: HFSC (consigliato)
    - HFSC = Hierarchical Fair Service Curve (migliore per VoIP)
    - CBQ = Class Based Queueing (più semplice)
    - PRIQ = Priority Queueing (meno features)
    
    Upload Bandwidth: 95% della banda upload reale
    Esempio: Se upload = 20 Mbps → Inserisci 19 Mbps
    (5% margine per overhead TCP/IP)
    
    Download Bandwidth: 95% della banda download reale
    Esempio: Se download = 100 Mbps → Inserisci 95 Mbps
    
    Come trovare banda reale?
    - Speedtest.net (3-5 test in momenti diversi, prendi media)
    - Fast.com (Netflix speed test)
    - Chiedi ISP (contratto può mentire!)

🏠 Step 3: Configurare LAN

  1. Numero connessioni LAN
    Number of LAN type connections: 1
    (Aumenta se hai multiple LAN/DMZ da shapare)
  2. Configura LAN
    Interface: LAN
    Scheduler: HFSC

📞 Step 4: Voice over IP (VoIP)

  1. Abilita supporto VoIP
    Enable
    Crea code ad altissima priorità per traffico VoIP
  2. Configura provider VoIP
    Provider: Generic (custom provider)
    
    Upload bandwidth %: 10%
    (VoIP usa pochissima banda - 10% è abbondante)
    Esempio: WAN 20 Mbps → VoIP garantiti 2 Mbps
    
    Download bandwidth %: 10%
    
    VoIP Server IP/Network:
    - Se PBX interno: 192.168.1.10
    - Se provider esterno: Lascia vuoto (wizard identifica VoIP automaticamente)
    - Se multipli: Crea alias e inserisci
    
    Nota: Wizard riconosce automaticamente protocolli VoIP comuni:
    - SIP (porta 5060/5061)
    - RTP (porte 10000-20000)
    - IAX (porta 4569)

🎮 Step 5: Penalty Box (Traffico a Bassa Priorità)

  1. Abilita Penalty Box
    Enable
    Coda a bassa priorità per P2P, file sharing, etc.
  2. Configura bandwidth
    Upload bandwidth %: 10%
    (P2P/torrent limitato a 10% banda)
    
    Download bandwidth %: 10%
    
    Address: (opzionale)
    Puoi specificare IP/network da penalizzare
    Esempio: 192.168.1.50 (utente che fa troppo P2P)

🌐 Step 6: Peer-to-Peer Networking

  1. Abilita rilevamento P2P
    Enable
    Identifica automaticamente traffico P2P (BitTorrent, eMule, etc.)
  2. Azione
    Options: 
    ☑ Lower priority (metti P2P in Penalty Box)
    (Consigliato - P2P va lento ma non blocca VoIP/web)
    
    Alternative:
    ☐ Deny (blocca completamente P2P)
    (Solo se vuoi policy zero-tolerance)

🎮 Step 7: Network Games

  1. Abilita supporto gaming
    Enable
    Priorità alta per gaming (bassa latenza critica!)
  2. Bandwidth
    Upload %: 10%
    (Gaming usa poca banda, ma necessita bassa latenza)
    
    Download %: 10%
    
    Cosa viene prioritizzato:
    - Counter-Strike, Call of Duty, Fortnite
    - League of Legends, Dota 2
    - WoW, Final Fantasy XIV
    - Xbox Live, PlayStation Network, Steam
    
    Wizard riconosce automaticamente porte gaming comuni

📺 Step 8: Altri Servizi

Il wizard permette di configurare altre applicazioni:

  • HTTP/HTTPS: Navigazione web normale
  • Streaming Media: YouTube, Netflix (priorità media)
  • Mail: SMTP/IMAP (priorità media-bassa)

Per semplicità, configuriamo solo i critici (VoIP, Gaming, P2P) e lasciamo il resto a priorità default.

✅ Step 9: Finalizzazione

  1. Review configurazione
    Wizard mostra summary delle code create
    Verifica che tutto sia corretto
  2. Clicca Finish
    Wizard applica configurazione
    ✅ Traffic Shaper attivo!

🎉 Wizard Completato!

Il wizard ha creato automaticamente:

  • ✅ Code HFSC gerarchiche su WAN e LAN
  • ✅ Regole firewall con code associate
  • ✅ Priorità: VoIP > Gaming > Web > P2P
  • ✅ Bandwidth garantiti per ogni coda

🔧 Configurazione Manuale Limiters

Ora vediamo come creare limiters per controllo granulare per-utente.

Configurazione limiter upload

Configurazione limiter per controllare velocità upload con mask per-IP

📝 Esempio: Limitare Ogni Utente a 10 Mbps Download

  1. Accedi a Limiters
    Vai in Firewall → Traffic Shaper → Limiters
  2. Crea limiter download
    Clicca New Limiter
  3. Configura limiter
    Name: Download_10Mbps_PerUser
    (Nome descrittivo)
    
    ☑ Enable
    
    Bandwidth: 10 Mbit/s
    (Limite per singolo utente)
    
    Mask: Source addresses
    (CRITICO! Applica limite PER source IP)
    
    Description: Limita ogni utente a 10 Mbps download
    
    Opzioni avanzate (opzionali):
    
    Scheduler: FlowQueue-CoDel (consigliato)
    - FlowQueue-CoDel = Migliore per latenza (gaming/VoIP)
    - FlowQueue-PIE = Alternativa moderna
    - NONE = No scheduling (default)
    
    Queue Size (buckets): 64 (default OK)
    
    ECN: ☑ Enable
    (Explicit Congestion Notification - riduce packet loss)
    Clicca Save
  4. Crea limiter upload
    Ripeti creazione per upload (simmetrico):
    Name: Upload_5Mbps_PerUser
    Bandwidth: 5 Mbit/s
    Mask: Destination addresses
    (Per upload, maschera su DESTINATION!)
Limiter con alias per traffico specifico

Applicazione limiter a specifici IP usando aliases firewall

🔥 Associare Limiter a Regola Firewall

  1. Modifica regola LAN
    Firewall → Rules → LAN
    Modifica regola "Allow LAN to any" (o crea nuova regola)
  2. Scroll a Advanced Features
    Espandi sezione Advanced Options
  3. Configura limiters
    In / Out pipe:
    In: Download_10Mbps_PerUser
    (Traffico IN verso client = download)
    
    Out: Upload_5Mbps_PerUser
    (Traffico OUT da client = upload)
    
    Spiegazione direzioni:
    IN = Traffico che ENTRA nell'interfaccia (verso LAN = download)
    OUT = Traffico che ESCE dall'interfaccia (da LAN = upload)
  4. Salva e applica
    Save → Apply Changes
    ✅ Limiters attivi!

🎯 Test Limiters

Da PC utente (192.168.1.100):

1. Vai su Speedtest.net
2. Esegui test

Risultato atteso:
Download: ~10 Mbps (limitato)
Upload: ~5 Mbps (limitato)

Se supera = limiter non applicato correttamente
- Verifica regola firewall abbia limiter
- Verifica "mask" corretta (source per download)
- Check Status → Queues per vedere limiter attivo

📅 Schedulers - Limiti Temporali

Gli schedulers permettono di applicare regole/limiters solo in determinate fasce orarie!

Configurazione scheduler temporale

Creazione scheduler per applicare regole in fasce orarie specifiche

📝 Esempio: Blocca Streaming Video Orario Lavorativo

  1. Crea scheduler
    Vai in Firewall → Schedules
    Clicca Add
  2. Configura schedule
    Schedule Name: Orario_Lavorativo
    Description: Lunedì-Venerdì 9:00-18:00
    
    Month: (lascia vuoto = tutti i mesi)
    Day: (lascia vuoto = tutti i giorni)
    
    Time Range:
    Start: 09:00
    Stop: 18:00
    
    Days of Week:
    ☑ Mon
    ☑ Tue
    ☑ Wed
    ☑ Thu
    ☑ Fri
    ☐ Sat
    ☐ Sun
    
    Clicca Add Time se serve aggiungere più fasce
    Save
  3. Usa scheduler in regola firewall
    Firewall → Rules → LAN → Add
    Action: Reject
    Protocol: TCP/UDP
    Source: LAN net
    Destination: Alias "Streaming_Sites"
    (YouTube, Netflix, Disney+, etc. - crea alias IP)
    Destination Port: 80, 443
    
    Schedule: Orario_Lavorativo ← SELEZIONA SCHEDULE!
    
    Description: Blocca streaming video ore lavorative
    
    Risultato:
    Lun-Ven 9:00-18:00 → YouTube/Netflix bloccati
    Fuori orario → YouTube/Netflix funzionano normalmente

📊 Monitoraggio Traffic Shaping

👁️ Visualizzare Code Attive

  1. Status code ALTQ
    Vai in Status → Queues
    Vedrai tutte le code con statistiche real-time
  2. Informazioni visualizzate
    Queue Name: qVoIP
    Bandwidth: 8.5 Mbps / 10 Mbps (85% utilizzato)
    Packets: 125,432 queued, 234 dropped
    Borrows: 12 times
    (Volte che ha "preso in prestito" banda da altre code)
    
    Cosa cercare:
    ✅ Dropped packets bassi (<1%) = OK
    ⚠️ Dropped packets alti (>5%) = Banda insufficiente
    ✅ Borrows alti = Code collaborano bene
    ⚠️ Una coda sempre al 100% = Sottodimensionata

📈 Grafici Banda

Status → Traffic Graph

Opzioni:
- Interface: WAN
- Resolution: 1 second
- Style: Area/Line

Mostra banda usata real-time per interfaccia
Utile per identificare picchi e saturazioni

🔧 Troubleshooting Traffic Shaping

❌ Problema: Limiters Non Funzionano

  1. Verifica limiter abilitato
    Firewall → Traffic Shaper → Limiters
    ☑ "Enable" deve essere selezionato
  2. Verifica regola firewall corretta
    Firewall → Rules → LAN
    La regola deve avere In/Out pipe configurati
    La regola deve essere SOPRA altre regole che potrebbero matchare prima
  3. Check mask corretto
    Download limiter: Mask = Source addresses
    Upload limiter: Mask = Destination addresses
    
    Se invertiti, limiter non funziona per-utente!
  4. Verifica Stati
    Status → Queues
    Dovresti vedere limiter attivo con pacchetti processati

❌ Problema: VoIP Ancora Scadente con ALTQ

Possibili cause:

1. Banda configurata troppo alta
   Se configuri banda WAN > reale, ALTQ non funziona
   Soluzione: Riduci a 90-95% banda reale (SpeedTest)

2. Bufferbloat ISP
   Router ISP ha buffer enormi che introducono latency
   Test: DSLReports Speed Test (mostra bufferbloat grade)
   Soluzione: Riduci banda configurata a 80-85% reale

3. Upload saturato
   VoIP sensibile a upload saturo (ACK packets ritardati)
   Soluzione: Riduci upload max al 90%, aumenta % VoIP

4. Regole firewall sbagliate
   Traffico VoIP non passa dalla coda giusta
   Verifica: Status → Queues → qVoIP deve avere pacchetti
   
5. QoS sul router ISP
   Se doppio NAT, QoS deve essere su router ISP non pfSense
   Soluzione: Metti router ISP in bridge mode

✅ Best Practices Traffic Shaping

  • Misura banda reale: SpeedTest multipli in ore diverse, prendi minimo
  • Configura 90-95% banda: Mai 100% (overhead, variabilità ISP)
  • Priorità VoIP massima: Se usi telefoni IP, VoIP SEMPRE priorità 1
  • Limita P2P aggressivamente: P2P satura tutto se non controllato
  • Test DSLReports: Verifica bufferbloat score (A/A+ = ottimo)
  • Monitor dropped packets: Se >1% costante = bandwidth insufficiente
  • Schedulers per policy: Usa schedule per blocking temporale
  • Documenta configurazione: QoS complesso - documenta scelte
  • Review trimestrale: Necessità cambiano (più utenti, nuovi servizi)
  • Bridge mode ISP router: QoS funziona meglio senza doppio NAT

🎯 Prossimi Passi

Eccellente lavoro! Ora hai configurato Traffic Shaping professionale con prioritizzazione VoIP, limiters per-utente e schedulers temporali. La tua rete ora gestisce la banda in modo intelligente anche durante picchi di traffico!

Nel prossimo capitolo configureremo una DMZ completa per ospitare server pubblici in modo sicuro, isolati dalla LAN interna.

🔒 Prossimo: Configurazione DMZ →