Referência do atributo da política de rotas BGP

Esta página mostra exemplos de políticas de rotas BGP, usando o Idioma de expressão comum (IEC) para o Cloud Router.

As políticas de rotas BGP são definidas como uma lista ordenada de termos. Cada termo é avaliado pela ordem que especificar e inclui uma condição e uma ação correspondente para quando uma rota corresponder a esse termo. Uma política de encaminhamento BGP específica só pode ser aplicada numa direção, quer seja de entrada para rotas aprendidas ou de saída para rotas anunciadas, mas não em ambas simultaneamente. No entanto, as políticas de rotas BGP podem ser aplicadas a vários pares BGP no Cloud Router.

Atributos correspondentes

A tabela seguinte descreve os atributos de correspondência disponíveis para políticas de rotas BGP:

Atributos

Descrição

communities

Lista de comunidades atribuídas à rota BGP

destination

Intervalo de IP para a rota BGP

Operações de correspondência

A tabela seguinte descreve as operações de correspondência disponíveis para políticas de rotas BGP:

Operação

Descrição

communities.matchesEvery('65001:1234')

Devolve true se as comunidades forem um superconjunto da lista '65001:1234'.

Um community_value é um campo de 32 bits dividido em duas secções de 16 bits. Convencionalmente, os primeiros 16 bits do valor codificam o número do sistema autónomo (AS) da rede de origem da comunidade, mas o Cloud Router não aplica esta convenção. Os segundos 16 bits do valor codificam um número exclusivo atribuído pelo AS de origem.

Restrito apenas à importação.

destination == '192.168.0.0/24'

Devolve true se uma rota BGP corresponder a 192.168.0.0/24 (correspondência exata).

destination != '192.168.0.0/24'

Devolve true se uma rota BGP não corresponder 192.168.0.0/24 (correspondência exata).

destination.inAnyRange(r)

Devolve true se uma rota BGP estiver no intervalo r, em que r é uma das seguintes opções:

  • Uma string com um prefixo codificado em CIDER, como 192.168.0.0/24.
  • O tipo abstrato devolvido por prefix() ou um dos métodos fluidos que pode chamar em prefix(), como longer().
  • Uma lista heterogénea em que cada elemento tem de ser um dos valores descritos anteriormente.

Negável com !.

prefix('192.168.0.0/24')

Devolve um objeto de prefixo que representa o intervalo CIDR 192.168.0.0/24, usado com destination.inAnyRange().

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

Devolve um objeto de intervalo de prefixos que é uma cópia de prefix() com o fim do intervalo definido para o máximo por família de endereços do prefixo de entrada (/32 ou /128) e o início do intervalo definido para o comprimento do prefixo de entrada mais um.

prefix().orLonger()

Devolve um objeto de intervalo de prefixos que é uma cópia de prefix() com o fim do intervalo definido para o máximo por família de endereços do prefixo de entrada (/32 ou /128).

prefix().lengthRange(20, 30)

Devolve um objeto de intervalo de prefixos que é uma cópia de prefix() com o início do intervalo definido como /20 e o fim definido como /30.

prefix().upTo(30)

Devolve um objeto de intervalo de prefixos que é uma cópia de prefix() com o fim do intervalo definido como /30 do prefixo de entrada.

x || y

Devolve true se x ou y for true.

x e y têm de ser expressões booleanas que usam o atributo communities ou destination.

Devido às regras para operações || (OU), todas as condições são, na prática, zero ou mais operações de correspondência destination ligadas por OU.

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

A tabela seguinte é um exemplo da utilização de prefix para criar expressões regulares complexas em comparação com alguns fornecedores de routers:

Cloud Router Cisco Zimbro Explicação

'192.168.0.1'

192.168.0.1

192.168.0.1

Corresponda exatamente ao prefixo 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

Corresponda exatamente ao prefixo 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

Faça corresponder o intervalo em 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

Faça corresponder o intervalo em 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

Faça corresponder o intervalo em 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

Faça corresponder o intervalo em 192.168.0.0/24 a 192.168.0.0/30

Corresponde a todos os trajetos

A tabela seguinte descreve exemplos que correspondem a todas as rotas na expressão de correspondência de uma política de rotas BGP:

Operação

Descrição

communities.matchesEvery([])

Corresponde a todas as rotas para políticas de importação.

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

Corresponde a todos os endereços IPv4 para políticas de importação ou exportação.

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

Corresponde a todos os endereços IPv6 para políticas de importação ou exportação.

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

Corresponde a todas as rotas para políticas de importação ou exportação.

Atributos da ação

A tabela seguinte descreve os atributos de ações disponíveis para políticas de rotas BGP:

Atributo

Descrição

Restrições

asPath

A lista de números de SA que a atualização da rota BGP atravessou

Políticas de exportação e importação

communities

A lista de comunidades do trajeto

Exporte apenas políticas

med

O discriminador de várias saídas (MED) do encaminhamento

Políticas de exportação e importação

Operações de ações

A tabela seguinte descreve as operações de ações disponíveis para políticas de rotas BGP:

Operação

Descrição

Restrições

accept()

Aceita a rota BGP e interrompe a avaliação adicional das políticas ou dos termos de rotas BGP, incluindo quaisquer ações que venham depois desta.

Nenhum

drop()

Filtra a rota BGP e interrompe a avaliação adicional de políticas ou termos de BGP, incluindo quaisquer ações que venham depois desta.

Nenhum

nextPolicy()

Interrompe a execução dos termos restantes nesta política de rotas BGP (incluindo quaisquer ações após este termo) e passa para a próxima política de rotas BGP aplicada (se existir).

Nenhum

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

Adiciona uma lista de números de SA ao atributo AS-PATH, como uma sequência.

Os argumentos têm de ser números inteiros dentro do intervalo de 32 bits.

Nenhum

communities.add('65001:1234')

Adiciona o valor da comunidade à lista de comunidades.

O valor da comunidade pode ser uma única comunidade ou uma lista.

Quaisquer valores de comunidade que sejam comunidades privadas mapeadas para os seguintes ASNs pertencentes à Google são ignorados pelo Cloud Router:

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

Exporte apenas políticas

communities.remove('65001:1234')

Remove o valor da comunidade da lista de comunidades.

O valor da comunidade pode ser uma única comunidade ou uma lista.

Quaisquer valores de comunidade que sejam comunidades privadas mapeadas para os seguintes ASNs pertencentes à Google são ignorados pelo Cloud Router:

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

Exporte apenas políticas

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

Substitui a lista de comunidades pelo valor da comunidade, que pode estar vazio.

Quaisquer valores de comunidade que sejam comunidades privadas mapeadas para os seguintes ASNs pertencentes à Google são ignorados pelo Cloud Router:

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

Exporte apenas políticas

med.set(12345)

Define o MED como 12345.

O valor de MED tem de ser um número inteiro não assinado de 0 a 232.

Nenhum

med.add(12345)

Adiciona 12345 ao valor definido de MED.

O valor de MED tem de ser um número inteiro não assinado de 0 a 232. Se o resultado da adição for superior a 232 - 1, esta operação define o MED como 232 - 1.

Nenhum

med.subtract(12345)

Subtrai 12345 ao valor definido de MED.

O valor de MED tem de ser um número inteiro não assinado de 0 a 232. Se o resultado da subtração for inferior a 0, esta operação define o MED como 0.

Nenhum