Riferimento all'attributo della policy di route BGP

Questa pagina mostra esempi di criteri di route BGP che utilizzano il 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 un percorso corrisponde a quel termine. Un determinato criterio di route BGP può essere applicato solo in una direzione, in entrata per le route apprese o in uscita per le route pubblicizzate, ma non contemporaneamente in entrambe le direzioni. Tuttavia, i criteri di route BGP possono essere applicati a più peer BGP su Cloud Router.

Attributi corrispondenti

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

Intervallo IP per la route BGP

Operazioni di corrispondenza

La seguente tabella descrive le operazioni di corrispondenza disponibili per i criteri di route BGP:

Operazione

Descrizione

communities.matchesEvery('65001:1234')

Restituisce true se le community sono un superinsieme dell'elenco '65001:1234'.

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

Limitato solo all'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 192.168.0.0/24 (corrispondenza esatta).

destination.inAnyRange(r)

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

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

Negabile 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 prefisso che è una copia di prefix() con la fine dell'intervallo impostata sul valore massimo della famiglia per indirizzo del prefisso di input (/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 prefisso che è una copia di prefix() con la fine dell'intervallo impostata sul valore 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 prefisso che è una copia di prefix() con la fine dell'intervallo impostata su /30 del prefisso di input.

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 tabella seguente è un esempio dell'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

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

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

Abbina l'intervallo all'interno di 192.168.0.0/25 a 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

Abbina l'intervallo all'interno di 192.168.0.0/24 a 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

Abbina l'intervallo all'interno di 192.168.0.0/25 a 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

Abbina l'intervallo all'interno di 192.168.0.0/24 a 192.168.0.0/30

Attributi azione

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

Attributo

Descrizione

Limitazioni

asPath

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

Esporta e importa

communities

L'elenco delle community del percorso

Solo esportazione

med

Il discriminatore di uscita multipath (MED) del percorso

Esporta e importa

Operazioni di azioni

La seguente tabella descrive le operazioni di azioni disponibili per i criteri di route BGP:

Operazione

Descrizione

Limitazioni

accept()

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

Nessuno

drop()

Filtra il percorso BGP e interrompe l'ulteriore valutazione dei criteri o dei termini BGP, incluse le azioni che seguono questa.

Nessuno

nextPolicy()

Interrompe l'esecuzione dei termini rimanenti in questa policy di route BGP (incluse eventuali 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, sotto forma di 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.

Tutti i valori della community che sono comunità private mappati ai seguenti ASN di proprietà di Google vengono ignorati dal router Cloud:

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

Solo 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.

Tutti i valori della community che sono comunità private mappati ai seguenti ASN di proprietà di Google vengono ignorati dal router Cloud:

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

Solo esportazione

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

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

I valori della community che sono comunità private mappate ai seguenti ASN di proprietà di Google vengono ignorati dal router Cloud:

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

Solo esportazione

med.set(12345)

Imposta MED su 12345.

Nessuno