Guida MikroTik
Firewall e QoSIntermedio

Mangle — Marking, Policy Routing e DSCP

Il modulo mangle permette di marcare connessioni e pacchetti per il QoS (Queue Tree), di implementare policy routing per load balancing o failover, e di modificare campi header come TTL e DSCP.

Mangle è il modulo di marcatura e modifica dei pacchetti in RouterOS. Non blocca né accetta traffico: marca le connessioni e i pacchetti per consentire ad altri moduli (Queue Tree per il QoS, routing per il policy routing) di trattarli in modo differenziato.

Azioni principali del mangle

  • mark-connection (new-connection-mark) — applica un segno a tutta la connessione. Efficiente perché segna solo il primo pacchetto (connection-state=new), poi i pacchetti successivi ereditano il mark.
  • mark-packet (new-packet-mark) — applica un segno al singolo pacchetto. Il Queue Tree usa questi mark per classificare il traffico nelle code. Limite: max 4096 mark distinti.
  • mark-routing (new-routing-mark) — dirige la connessione verso una tabella di routing specifica (policy routing, load balancing, failover).
  • change-ttl — modifica il TTL (increment/decrement/set). Utile per nascondere la topologia di rete o per gestire CPE dietro il router.
  • change-dscp — imposta i bit DSCP (0-63) per QoS end-to-end (es. EF=46 per VoIP, AF21=18 per streaming).
  • set-priority — imposta la priorità su interfacce VLAN (802.1p) o wireless (WMM).
  • change-mss — modifica il Maximum Segment Size TCP; essenziale per evitare frammentazione su tunnel VPN (imposta a 1300 per tunnel PPPoE/L2TP).

Pattern efficiente: mark-connection poi mark-packet

Marking QoS per Queue Tree — pattern connessione→pacchetto
# ================================================================
# PATTERN DI BASE: marca prima la connessione (solo sul primo pacchetto),
# poi marca tutti i pacchetti della connessione già marcata.
# Questo è MOLTO più efficiente che fare match su ogni singolo pacchetto.
# ================================================================

# PASSO 1: marca la connessione sul primo pacchetto (new)
# Esempio: identifica il traffico VoIP (SIP UDP 5060 e RTP 10000-20000)
/ip firewall mangle add   chain=prerouting   connection-state=new   protocol=udp dst-port=5060   action=mark-connection new-connection-mark=voip_conn   passthrough=yes   comment="Identifica connessioni SIP"

/ip firewall mangle add   chain=prerouting   connection-state=new   protocol=udp dst-port=10000-20000   action=mark-connection new-connection-mark=voip_conn   passthrough=yes   comment="Identifica flussi RTP"

# PASSO 2: marca ogni pacchetto della connessione già identificata
/ip firewall mangle add   chain=prerouting   connection-mark=voip_conn   action=mark-packet new-packet-mark=voip_packet   passthrough=no   comment="Marca pacchetti VoIP per il Queue Tree"

# PASSO 3: il Queue Tree usa il packet-mark per prioritizzare
# (vedi articolo QoS - Queue Tree HTB)

# ----------------------------------------------------------------
# MODIFICA MSS per connessioni PPPoE (previene frammentazione)
# ----------------------------------------------------------------
/ip firewall mangle add   chain=forward   protocol=tcp tcp-flags=syn   tcp-mss=1453-65535   action=change-mss new-mss=1452   passthrough=yes   comment="Clamp MSS per PPPoE (MTU 1492 - 40 = 1452)"

# ----------------------------------------------------------------
# POLICY ROUTING: traffico HTTP/HTTPS via ISP-2 (failover/load balance)
# ----------------------------------------------------------------
/ip firewall mangle add   chain=prerouting   in-interface-list=LAN   connection-state=new   protocol=tcp dst-port=80,443   action=mark-routing new-routing-mark=via-isp2   passthrough=yes   comment="Instrada navigazione web via ISP secondario"

# Nella tabella di routing "via-isp2" deve esserci una default-route
# che punta al gateway del secondo ISP:
/ip route add   dst-address=0.0.0.0/0   gateway=10.0.0.1   routing-table=via-isp2   comment="Default route ISP-2 per policy routing"
Attenzione: mark-routing non funziona con FastTrack — i pacchetti accellerati hardware bypassano il mangle. Se usi policy routing, disabilita FastTrack per quel traffico oppure usa hw-offload=no. Usa sempre passthrough=yes quando vuoi che il pacchetto continui a essere valutato dalle regole successive, passthrough=no (default) per fermarsi alla prima corrispondenza.
manglemark-connectionmark-packetmark-routingDSCPpolicy routingQoS markingchange-ttlchange-dscpset-priorityPCCload balancing

Configura senza fatica con l'AI

In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.

Prova WispOS