Riferimento agli attributi della policy di route BGP

Questa pagina mostra esempi di criteri di route BGP che utilizzano Common Expression Language (CEL) per router Cloud.

Le policy di route BGP sono definite come un elenco ordinato di termini. Ogni termine viene valutato nell'ordine specificato e include sia una condizione sia un'azione corrispondente per quando una route corrisponde a quel termine. Una determinata policy di route BGP può essere applicata solo in una direzione, in entrata per le route apprese o in uscita per le route pubblicizzate, ma non contemporaneamente. Tuttavia, le policy di route BGP possono essere applicate a più peer BGP sul router Cloud.

Attributi di corrispondenza

La tabella seguente descrive gli attributi di corrispondenza disponibili per le policy di route BGP:

Attributi

Descrizione

communities

Elenco delle community attribuite alla route BGP

destination

L'intervallo IP per la route BGP

Operazioni di corrispondenza

La tabella seguente descrive le operazioni di corrispondenza disponibili per le policy di routing BGP:

Operazione

Descrizione

communities.matchesEvery('65001:1234')

Restituisce true se le community sono un superset della lista '65001:1234'.

Un community_value è un campo a 32 bit suddiviso in due sezioni a 16 bit. Per convenzione, i primi 16 bit del valore codificano il numero di sistema autonomo (AS) della rete da cui ha origine la comunità, ma router Cloud non applica questa convenzione. I secondi 16 bit del valore codificano un numero univoco assegnato dal sistema autonomo di origine.

Limitato alla sola importazione.

destination == '192.168.0.0/24'

Restituisce true se una route BGP corrisponde a 192.168.0.0/24 (corrispondenza esatta).

destination != '192.168.0.0/24'

Restituisce true se una route BGP non corrisponde a 192.168.0.0/24 (corrispondenza esatta).

destination.inAnyRange(r)

Restituisce true se una route BGP rientra nell'intervallo r, dove r è uno dei seguenti valori:

  • Una stringa con un prefisso codificato in CIDER, ad esempio 192.168.0.0/24.
  • Il tipo astratto restituito da prefix() o uno dei metodi fluent che puoi chiamare su prefix(), ad esempio longer().
  • Un elenco eterogeneo in cui ogni elemento deve corrispondere a uno dei valori descritti in precedenza.

Negabile con !.

prefix('192.168.0.0/24')

Restituisce un oggetto di corrispondenza del prefisso che rappresenta l'intervallo CIDR 192.168.0.0/24, utilizzato con destination.inAnyRange().

prefix('192.168.0.0/24').longer()

Restituisce un oggetto intervallo di prefissi che è una copia di prefix() con la fine dell'intervallo impostata sul massimo per famiglia per indirizzo del prefisso di input (/32 o /128) e l'inizio dell'intervallo impostato sulla lunghezza del prefisso di input più uno.

prefix().orLonger()

Restituisce un oggetto intervallo di prefissi che è una copia di prefix() con la fine dell'intervallo impostata sul massimo per famiglia per indirizzo del prefisso di input (/32 o /128).

prefix().lengthRange(20, 30)

Restituisce un oggetto intervallo di prefissi che è una copia di prefix() con l'inizio dell'intervallo impostato su /20 e la fine impostata su /30.

prefix().upTo(30)

Restituisce un oggetto intervallo di prefissi che è una copia di prefix() con la fine dell'intervallo impostata su /30 del prefisso di input.

communitySets('regional')

(Anteprima)

Restituisce l'elenco delle community denominate nel set di community regional sul router.

prefixSets('local')

(Anteprima)

Restituisce l'elenco dei prefissi denominati nel set di prefissi local sul router.

x || y

Restituisce true se x o y è true.

x e y devono essere espressioni booleane che utilizzano l'attributo communities o destination.

A causa delle regole per le operazioni || (OR), tutte le condizioni sono effettivamente zero o più operazioni di corrispondenza destination collegate da OR.

(D0 || D1 || ... || Dm)

La seguente tabella è un esempio di utilizzo di prefix per creare espressioni regolari complesse rispetto ad alcuni fornitori di router:

Router Cloud Cisco Ginepro Spiegazione

'192.168.0.1'

192.168.0.1

192.168.0.1

Corrispondere esattamente al prefisso 192.168.0.1/32

'192.168.0.0/24'

prefix('192.168.0.0/24')

192.168.0.0/24

192.168.0.0/24 exact

Corrispondere esattamente al prefisso 192.168.0.0/24

prefix('192.168.0.0/24').longer()

192.168.0.0/24 ge 25 le 32

192.168.0.0/24 longer

Corrispondenza dell'intervallo all'interno di 192.168.0.0/25 con 192.168.0.0/32

prefix('192.168.0.0/24').orLonger()

192.168.0.0/24 le 32

192.168.0.0/24 orlonger

Corrispondenza dell'intervallo all'interno di 192.168.0.0/24 con 192.168.0.0/32

prefix('192.168.0.0/24').lengthRange(25, 30)

192.168.0.0/24 ge 25 le 30

192.168.0.0/24 prefix-length-range /25-/30

Corrispondenza dell'intervallo all'interno di 192.168.0.0/25 con 192.168.0.0/30

prefix('192.168.0.0/24').upTo(30)

192.168.0.0/24 le 30

192.168.0.0/24 up to /30

Corrispondenza dell'intervallo all'interno di 192.168.0.0/24 con 192.168.0.0/30

Corrispondenza con tutti i percorsi

La tabella seguente descrive esempi che corrispondono a tutte le route nell'espressione di corrispondenza di una policy di route BGP:

Operazione

Descrizione

communities.matchesEvery([])

Corrisponde a tutte le route per le norme di importazione.

destination.inAnyRange(prefix('0.0.0.0/0').orLonger())

Corrisponde a tutti gli indirizzi IPv4 per le norme di importazione o esportazione.

destination.inAnyRange(prefix('::/0').orLonger())

Corrisponde a tutti gli indirizzi IPv6 per le policy di importazione o esportazione.

destination.inAnyRange([prefix('0.0.0.0/0').orLonger(), prefix('::/0').orLonger()])

Corrisponde a tutte le route per le policy di importazione o esportazione.

Attributi azione

La tabella seguente descrive gli attributi delle azioni disponibili per i criteri di route BGP:

Attributo

Descrizione

Limitazioni

asPath

L'elenco dei numeri AS attraversati dall'aggiornamento della route BGP

Esportare e importare policy

communities

L'elenco delle community dell'itinerario

Esporta solo policy

med

Il Multi-exit Discriminator (MED) della route

Esportare e importare policy

Operazioni di azione

La seguente tabella descrive le operazioni di azione disponibili per le policy di route BGP:

Operazione

Descrizione

Limitazioni

accept()

Accetta la route BGP e interrompe l'ulteriore valutazione delle norme o dei termini delle route BGP, incluse le azioni successive.

Nessuno

drop()

Filtra la route BGP e interrompe l'ulteriore valutazione delle norme o dei termini BGP, incluse le azioni successive.

Nessuno

nextPolicy()

Interrompe l'esecuzione dei termini rimanenti in questa policy di route BGP (incluse le azioni successive a questo termine) e passa alla successiva policy di route BGP applicata (se presente).

Nessuno

asPath.prependSequence([1, 2, 3])

Antepone un elenco di numeri AS all'attributo AS_PATH, come sequenza.

Gli argomenti devono essere numeri interi compresi nell'intervallo di 32 bit.

Nessuno

communities.add('65001:1234')

Aggiunge il valore della community all'elenco delle community.

Il valore della community può essere una singola community o un elenco.

Eventuali valori della community delle community private mappati agli ASN di proprietà di Google riportati di seguito vengono ignorati da router Cloud:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Esporta solo policy

communities.remove('65001:1234')

Rimuove il valore della community dall'elenco delle community.

Il valore della community può essere una singola community o un elenco.

Eventuali valori della community delle community private mappati agli ASN di proprietà di Google riportati di seguito vengono ignorati da router Cloud:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Esporta solo policy

communities.replaceAll(['65001:1234'])

Sostituisce l'elenco delle community con il valore della community, che può essere vuoto.

I valori della community che sono community private mappate agli ASN di proprietà di Google riportati di seguito vengono ignorati da router Cloud:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Esporta solo policy

med.set(12345)

Imposta MED su 12345.

Il valore di MED deve essere un numero intero senza segno compreso tra 0 e 232.

Nessuno

med.add(12345)

Aggiunge 12345 al valore impostato di MED.

Il valore di MED deve essere un numero intero senza segno compreso tra 0 e 232. Se il risultato dell'addizione è maggiore di 232 - 1, questa operazione imposta MED su 232 - 1.

Nessuno

med.subtract(12345)

Sottrae 12345 dal valore impostato di MED.

Il valore di MED deve essere un numero intero senza segno compreso tra 0 e 232. Se il risultato della sottrazione è inferiore a 0, questa operazione imposta MED su 0.

Nessuno