Riferimento agli attributi delle policy di route BGP

Questa pagina mostra esempi di policy di route BGP che utilizzano Common Expression Language (CEL) per il 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 annunciate, ma non entrambe contemporaneamente. Tuttavia, le policy di route BGP possono essere applicate a più peer BGP sul router Cloud.

Attributi usati per la 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 route BGP:

Operazione

Descrizione

communities.matchesEvery('65001:1234')

Restituisce true se le community sono un superset dell'elenco '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 proviene la community, ma il router Cloud non applica questa convenzione. I secondi 16 bit del valore codificano un numero univoco assegnato dall'AS 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:

  • 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 essere uno dei valori descritti in precedenza.

Può essere negato con !.

prefix('192.168.0.0/24')

Restituisce un oggetto 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 prefisso di input per famiglia di indirizzi max (/32 o /128) e l'inizio dell'intervallo impostato su la 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 prefisso di input per famiglia di indirizzi max (/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 sul prefisso di input /30.

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 on the 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 connesse da OR.

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

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

Router Cloud Cisco Juniper Spiegazione

'192.168.0.1'

192.168.0.1

192.168.0.1

Corrispondenza esatta con il 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

Corrispondenza esatta con il 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 con l'intervallo compreso tra 192.168.0.0/25 e 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 con l'intervallo compreso tra 192.168.0.0/24 e 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 con l'intervallo compreso tra 192.168.0.0/25 e 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 con l'intervallo compreso tra 192.168.0.0/24 e 192.168.0.0/30

Corrispondenza con tutte le route

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 policy di importazione.

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

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

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

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

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 delle azioni

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

Attributo

Descrizione

Limitazioni

asPath

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

Policy di esportazione e importazione

communities

L'elenco delle community della route

Solo policy di esportazione

med

Il discriminatore multi-exit (MED) della route

Policy di esportazione e importazione

Operazioni delle azioni

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

Operazione

Descrizione

Limitazioni

accept()

Accetta la route BGP e interrompe l'ulteriore valutazione delle policy o dei termini di route BGP , incluse le azioni che seguono questa.

Nessuna

drop()

Filtra la route BGP e interrompe l'ulteriore valutazione delle policy o dei termini BGP , incluse le azioni che seguono questa.

Nessuna

nextPolicy()

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

Nessuna

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

Aggiunge un elenco di numeri AS all'attributo AS-PATH, come sequenza.

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

Nessuna

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.

Il router Cloud ignora tutti i valori della community che sono community private mappate ai seguenti ASN di proprietà di Google:

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

Solo policy di esportazione

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.

Il router Cloud ignora tutti i valori della community che sono community private mappate ai seguenti ASN di proprietà di Google:

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

Solo policy di esportazione

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

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

Il router Cloud ignora tutti i valori della community che sono community private mappate ai seguenti ASN di proprietà di Google:

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

Solo policy di esportazione

med.set(12345)

Imposta MED su 12345.

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

Nessuna

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.

Nessuna

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.

Nessuna