Guida MikroTik
RoutingAvanzato

BGP in RouterOS v7: instance, connection, local.role e output.network

Configura BGP v7 in RouterOS: creazione dell'instance, connessioni eBGP e iBGP con local.role, annuncio di prefissi con output.network e differenze fondamentali rispetto alla v6 (nessun /routing/bgp/instance implicito).

BGP in RouterOS v7: cosa cambia rispetto alla v6

In RouterOS v6 il processo BGP veniva identificato automaticamente tramite il router-id; la configurazione era concentrata in /routing/bgp/instance e /routing/bgp/peer. In RouterOS v7 l'architettura è completamente diversa: l'istanza BGP è esplicitamente dichiarata in /routing/bgp/instance con un AS number, e ogni sessione peer è configurata in /routing/bgp/connection con sub-parametri dotted (local.role, remote.address, remote.as, output.network, ecc.). Non esiste più il vecchio menu /routing/bgp/peer.

Configurazione eBGP di base in RouterOS v7
# 1. Creare l'istanza BGP con il proprio AS number
/routing/bgp/instance/add \
  name=bgp-main \
  as=65001 \
  router-id=10.0.0.1

# 2. Creare la connessione eBGP verso il peer ISP (AS 65002)
/routing/bgp/connection/add \
  name=peer-isp \
  instance=bgp-main \
  remote.address=203.0.113.2 \
  remote.as=65002 \
  local.role=ebgp \
  local.address=203.0.113.1 \
  output.network=mynetworks \
  comment="Peering eBGP con ISP upstream"

# 3. Definire i prefissi da annunciare al peer
/routing/bgp/network/add \
  network=192.0.2.0/24 \
  comment="Il nostro blocco IP pubblico"

# Verificare sessione BGP e rotte ricevute
/routing/bgp/session/print
/ip/route/print where bgp

local.role: il parametro chiave per eBGP e iBGP

Il parametro local.role definisce il tipo di sessione BGP e influenza le policy di propagazione predefinite. I valori principali sono:

  • ebgp: sessione esterna (tra AS diversi). Decrementa TTL, non propaga attributi iBGP.
  • ibgp: sessione interna (stesso AS). Usato tra router nello stesso AS per propagare rotte BGP internamente.
  • ebgp-rs: route server (IXP). Non modifica next-hop, non aggiunge AS path.
  • ebgp-rs-client: client di un route server.
Sessione iBGP tra router dello stesso AS
# Router A (route reflector) — AS 65001
/routing/bgp/instance/add name=ibgp-rr as=65001 router-id=10.255.0.1

/routing/bgp/connection/add \
  name=ibgp-to-routerB \
  instance=ibgp-rr \
  remote.address=10.255.0.2 \
  local.role=ibgp \
  local.address=10.255.0.1 \
  reflect=yes \
  comment="Route Reflector -> Client"

# Router B (client del RR) — AS 65001
/routing/bgp/instance/add name=ibgp-client as=65001 router-id=10.255.0.2

/routing/bgp/connection/add \
  name=ibgp-to-rr \
  instance=ibgp-client \
  remote.address=10.255.0.1 \
  local.role=ibgp \
  local.address=10.255.0.2

output.network e input/output filter

Il parametro output.network specifica la lista BGP network (definita in /routing/bgp/network) da annunciare a quel peer. Per applicare filtri su rotte in ingresso o uscita si usano input.filter e output.filter che puntano a chain di route filter definite in /routing/filter/rule.

Filtrare rotte in input da un peer BGP
# Creare una chain di filtro per accettare solo prefissi /24 o più specifici
/routing/filter/rule/add \
  chain=bgp-in-isp \
  rule="if (dst-len < 8 || dst-len > 24) { reject } else { accept }"

# Applicare il filtro alla connessione BGP
/routing/bgp/connection/set \
  [find name=peer-isp] \
  input.filter=bgp-in-isp
ATTENZIONE: in RouterOS v7 NON esiste il vecchio /routing/bgp/instance di v6 nel senso che lo si conosce da ROSv6. Se stai migrando da v6 a v7, ricrea ogni peer come /routing/bgp/connection con il parametro instance= che punta a /routing/bgp/instance. Il vecchio /routing/bgp/peer non esiste più in v7.
BGPeBGPiBGPBGP v7routing/bgp/connectionlocal.roleoutput.networkASpeerprefixroute reflectionBGP instanceROSv7

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