Introdução
Este artigo descreve como filtrar prefixos do Border Gateway Protocol (BGP) com os números de sistema autônomo (AS) 4-byte no ® do Cisco IOS.
Informações de Apoio
4-byte COMO números foram introduzidos no BGP quando o pool de 2-byte livre COMO números se tornou baixo. Isto significa que ENQUANTO o número pode agora ser um 2-byte ou um número 4-byte. O RFC 6793 especifica 4-byte COMO números. Um 2-byte COMO o número é um número entre 1 e 65,535. Um 4-byte COMO o número é um número entre 1 e 4,294,967,295.
O 4-byte COMO o número pode ser representado em uma forma pontilhada ou como um número liso. Um exemplo de um 4-byte pontilhado COMO o número é 7.52359. Isto é COMO o ponto do notaton. Um exemplo de um número 4-byte liso é 511111. Isto é COMO o asplain da notação. 7.52359 são os mesmos que 511111.
Um roteador do Cisco IOS pode usar o um ou outro COMO a notação. O padrão nas versões do Cisco IOS as mais recentes é asplain. A fim usar pontilhado COMO a notação, o comando de ponto do asnotation BGP pode ser usado.
Se por qualquer razão o administrador de rede não quer mandar prefixos BGP com uns ou vários 4-byte COMO números no AS PATH para um external bgp (ebgp) peer, a seguir estes prefixos podem ser filtrados. Este documento fornece um filtro possível para conseguir este. Poderia haver algumas razões pelas quais você não pôde querer um auto-falante de BGP mandar prefixos BGP com o 4-byte COMO números no AS PATH. Um exemplo poderia ser que há um defeito no auto-falante de BGP de recepção que conduz ao comportamento adverso, que ocorre somente para prefixos BGP com o 4-byte COMO números no AS PATH.
4-byte COMO o filtro do número
Note: O filtro nesta seção pode somente ser usado quando o BGP no roteador é executado no modo do ponto do asnotation.
Este filtro pode filtrar para fora prefixos com COMO OS PATH que guardam uns ou vários 4-byte COMO números.
router bgp 1
bgp asnotation dot
neighbor 10.1.1.2 remote-as 2
address-family ipv4
neighbor 10.1.1.2 activate
neighbor 10.1.1.2 filter-list 1 out
ip as-path access-list 1 deny .*[0-9]+\.[0-9]+.*
ip as-path access-list 1 permit .*
Está aqui um exame deste filtro.
- [0-9] significa todo o dígito.
- + significa umas ou várias ocorrências. Assim [0-9]+ significa todo o número, porque pode haver uns dígitos múltiplos atuais.
- \. significa. (ponto). O corte traseiro é precisado a fim certificar-se que o roteador não trata o ponto como um caractere especial mas o trata como um ponto. O . é um caractere especial e significa o fósforo todo o caráter (o convite).
- * significa o fósforo zero ou mais da precedência. Assim. * significa o fósforo qualquer coisa.
- O filtro completo .*[0-9]+\.[0-9]+.* significa qualquer coisa com um ponto nele.
Aqui está um exemplo:
O roteador1 (r1) recebe oito prefixos no BGP. O prefixo 10.100.1.1/32 BGP é o único prefixo com um AS PATH que consista somente em 2-byte COMO números. Todos os outros prefixos BGP têm uns ou vários 4-byte COMO o número no AS PATH.
R1#show bgp ipv4 unicast
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
*> 10.100.1.2/32 10.1.3.4 0 0 4 1.34464 3.3392 4.37856 i
*> 10.100.1.3/32 10.1.3.4 0 0 4 1.34464 200 4.37856 i
*> 10.100.1.4/32 10.1.3.4 0 0 4 500 4.37856 600 ?
*> 10.100.1.5/32 10.1.3.4 0 0 4 7.41248 3200 400 65000 ?
*> 10.100.1.6/32 10.1.3.4 0 0 4 50 3200 400 9.60176 ?
*> 10.100.1.7/32 10.1.3.4 0 0 4 66 1.57464 77 5.17320 99 ?
*> 10.100.1.8/32 10.1.3.4 0 0 4 7.52359 99 66 99 5.18307
3.37515 99 66 3.37515 99 ?
O r1 anuncia somente os prefixos sem nenhum 4-byte COMO o número no AS PATH para o bgp peer 10.1.1.2.
R1#show bgp ipv4 unicast neighbors 10.1.1.2 advertised-routes
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
Total number of prefixes 1
Você pode verificar o que o filtro .*[0-9]+\.[0-9]+.* filtra da tabela de BGP com o comando show ip bgp regexp:
R1#show ip bgp regexp .*[0-9]+\.[0-9]+.*
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.2/32 10.1.3.4 0 0 4 1.34464 3.3392 4.37856 i
*> 10.100.1.3/32 10.1.3.4 0 0 4 1.34464 200 4.37856 i
*> 10.100.1.4/32 10.1.3.4 0 0 4 500 4.37856 600 ?
*> 10.100.1.5/32 10.1.3.4 0 0 4 7.41248 3200 400 65000 ?
*> 10.100.1.6/32 10.1.3.4 0 0 4 50 3200 400 9.60176 ?
*> 10.100.1.7/32 10.1.3.4 0 0 4 66 1.57464 77 5.17320 99 ?
*> 10.100.1.8/32 10.1.3.4 0 0 4 7.52359 99 66 99 5.18307
3.37515 99 66 3.37515 99 ?
O filtro .*[0-9]+\.[0-9]+.* filtra para fora todos os prefixos com uns ou vários 4-byte COMO o número no atributo AS PATH.
Está aqui uma outra maneira de verificar o que o filtro filtra realmente da tabela de BGP:
R1#show bgp ipv4 unicast filter-list 1
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
O R2 recebeu somente o prefixo 10.100.1.1/32 do r1 devido ao filtro.
R2#show bgp ipv4 unicast
BGP table version is 6, local router ID is 10.1.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.1.1 0 1 4 100 200 300 i
Configuração alternada
Uma configuração alternada é usar um mapa de rotas em vez de uma lista de filtros:
router bgp 1
bgp asnotation dot
neighbor 10.1.1.2 remote-as 2
address-family ipv4
neighbor 10.1.1.2 route-map no-4byte out
ip as-path access-list 1 deny .*[0-9]+\.[0-9]+.*
ip as-path access-list 1 permit .*
route-map no-4byte permit 10
match as-path 1
Modo de Asplain
Quando o comando de ponto do asnotiation BGP é removido, que significa que o asnotation é asplain, a saída já não mostra os pontos no 4-byte COMO números. Esta saída é a mesma que mostrada previamente, salvo que pontilhados COMO números são agora asplain.
R1#show bgp ipv4 unicast
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
*> 10.100.1.2/32 10.1.3.4 0 0 4 100000 200000 300000 i
*> 10.100.1.3/32 10.1.3.4 0 0 4 100000 200 300000 i
*> 10.100.1.4/32 10.1.3.4 0 0 4 500 300000 600 ?
*> 10.100.1.5/32 10.1.3.4 0 0 4 500000 3200 400 65000 ?
*> 10.100.1.6/32 10.1.3.4 0 0 4 50 3200 400 650000 ?
*> 10.100.1.7/32 10.1.3.4 0 0 4 66 123000 77 345000 99 ?
*> 10.100.1.8/32 10.1.3.4 0 0 4 511111 99 66 99 345987
234123 99 66 234123 99 ?
O comando show BGP com a expressão regular usada no filtro no roteador não filtra para fora os prefixos com um ponto na tabela de BGP, porque há já não uns prefixos com o 4-byte pontilhado COMO o formato de número na tabela de BGP. Os 4-byte COMO números estão agora no formato do asplain.
R1#show ip bgp regexp .*[0-9]+\.[0-9]+.*
R1#
O comando show BGP com a lista de filtros igualmente mostra que o filtro não funciona quando o roteador reagir do modo do asplain:
R1#show bgp ipv4 unicast filter-list 1
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
*> 10.100.1.2/32 10.1.3.4 0 0 4 100000 200000 300000 i
*> 10.100.1.3/32 10.1.3.4 0 0 4 100000 200 300000 i
*> 10.100.1.4/32 10.1.3.4 0 0 4 500 300000 600 ?
*> 10.100.1.5/32 10.1.3.4 0 0 4 500000 3200 400 65000 ?
*> 10.100.1.6/32 10.1.3.4 0 0 4 50 3200 400 650000 ?
*> 10.100.1.7/32 10.1.3.4 0 0 4 66 123000 77 345000 99 ?
*> 10.100.1.8/32 10.1.3.4 0 0 4 511111 99 66 99 65509 56
100000 ?
O filtro como-PATH não funcionará:
R1#show bgp ipv4 unicast neighbors 10.1.1.2 advertised-routes
BGP table version is 9, local router ID is 10.100.1.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 10.100.1.1/32 10.1.3.4 0 0 4 100 200 300 i
*> 10.100.1.2/32 10.1.3.4 0 0 4 100000 200000 300000 i
*> 10.100.1.3/32 10.1.3.4 0 0 4 100000 200 300000 i
*> 10.100.1.4/32 10.1.3.4 0 0 4 500 300000 600 ?
*> 10.100.1.5/32 10.1.3.4 0 0 4 500000 3200 400 65000 ?
*> 10.100.1.6/32 10.1.3.4 0 0 4 50 3200 400 650000 ?
*> 10.100.1.7/32 10.1.3.4 0 0 4 66 123000 77 345000 99 ?
*> 10.100.1.8/32 10.1.3.4 0 0 4 511111 99 66 99 65509 56
100000 ?
Network Next Hop Metric LocPrf Weight Path
Total number of prefixes 8
Filtro para o modo de Asplain
Este filtro pode ser usado quando o BGP no roteador é executado no modo do asplain:
ip as-path access-list 4 deny _6553[6-9]_
ip as-path access-list 4 deny _655[4-9][0-9]_
ip as-path access-list 4 deny _65[6-9][0-9][0-9]_
ip as-path access-list 4 deny _[6][6-9][0-9][0-9][0-9]_
ip as-path access-list 4 deny _[7-9][0-9][0-9][0-9][0-9]_
ip as-path access-list 4 deny _[1-9][0-9][0-9][0-9][0-9][0-9]+_
ip as-path access-list 4 permit .*
Ou, está aqui o mesmo, mas mais o estojo compacto:
ip as-path access-list 4 deny _(6553[6-9]|655[4-9][0-9]|65[6-9][0-9][0-9]|6[6-9]
[0-9][0-9][0-9]|[7-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]+)_
ip as-path access-list 4 permit .*
Devido a este filtro, algum COMO o número mais altamente de 65,535 é filtrado. Além disso, isto pode ser aplicado ao vizinho de BGP se você usa uma lista de filtros ou um mapa de rotas.
Note: A filtração neste artigo não trabalha em uma sessão do Internal BGP (iBGP), que inclua em um refletor de rota.