Я намагаюся знайти найелегантніший спосіб реалізації фільтра RTBH для маршрутів, отриманих від замовника.
Фільтр повинен:
- Приймайте лише клієнти власні префікси зі списку префіксів
- Лише приймати / 32 префікси
- Тільки префікси з спільнотою blackhole
- Встановити наступний перехід на RTBH наступний перехід (192.0.2.1)
Для початку я ознайомився з документом " Налаштування умов матчу в умовах політики маршрутизації " від Juniper.
Спершу я подумав про поєднання prefix-list-filter
маршрутів, які відповідають лише спискам клієнтів, і route-filter
обмеження прийнятих префіксів на / 32, наприклад:
from {
as-path customer;
community blackhole;
prefix-list-filter customer-prefixes orlonger;
route-filter 0.0.0.0/0 prefix-length-range /32-/32;
}
Але потім я натрапив на цю інформацію в документі:
Якщо ви налаштовуєте політику, яка включає деяку комбінацію фільтрів маршрутів, списків префіксів та фільтрів адрес джерела, вони оцінюються відповідно до логічної операції АБО або пошуку найзручнішого маршруту.
Як я розумію , це (і я вважаю , це трохи незрозуміло), якщо я використовую prefix-list-filter
, route-filter
і / або source-address-filter
в той же термін він буде оцінюватися з довгою-матч або між усіма ними, що робить цей підхід непридатним для використання .
Що я придумав - це наступний фільтр. hostroutes-only
Термін веде все префікси коротше / 32 до наступної політики. Після цього prefixes
термін відповідає, якщо / 32 знаходиться в діапазоні замовника, відповідає його як-шляху і має спільноту blackhole:
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;
}
}
Отже, це найелегантніший спосіб впоратися з цим? Будь-які інші рішення?