Estou tentando encontrar a maneira mais elegante de implementar um filtro RTBH para rotas recebidas de um cliente.
O filtro deve:
- Aceite apenas os prefixos dos clientes em uma lista de prefixos
- Aceitar apenas / prefixos 32
- Apenas prefixos com a comunidade blackhole
- Defina o próximo salto para o próximo salto RTBH (192.0.2.1)
Para começar, consultei o documento " Configurando condições de correspondência nos termos da política de roteamento " da Juniper.
Primeiro, pensei em combinar um prefix-list-filter
para corresponder apenas a rotas da lista de prefixos de clientes e um route-filter
para limitar os prefixos aceitos a / 32, da seguinte forma:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Mas então me deparei com essa informação no documento:
Se você configurar uma política que inclua alguma combinação de filtros de rotas, listas de prefixos e filtros de endereços de origem, elas serão avaliadas de acordo com uma operação OR lógica ou com uma pesquisa de correspondência de rota mais longa.
Como eu entendo isso (e acho que é um pouco claro), se eu usar prefix-list-filter
, route-filter
e / ou source-address-filter
no mesmo prazo, seria avaliado com um mais antigo jogo OR entre todos eles, o que torna esta abordagem inutilizável .
O que eu vim com esse filtro é o seguinte. O hostroutes-only
termo desvia todos os prefixos menores que / 32 para a próxima política. Depois disso, o prefixes
termo corresponde se o / 32 estiver no intervalo do cliente, corresponder ao seu caminho e tiver a comunidade blackhole definida:
term hostroutes-only {
from {
route-filter 0.0.0.0/0 prefix-length-range /0-/31;
}
then next policy;
}
term prefixes {
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
}
then {
next-hop 192.0.2.1;
accept;
}
}
Então, essa é a maneira mais elegante de lidar com isso? Alguma outra solução?