Я намагаюся знайти найелегантніший спосіб реалізації фільтра 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;
}
}
Отже, це найелегантніший спосіб впоратися з цим? Будь-які інші рішення?