input.accept-communities (string; Default: ) — быстрый способ отфильтровать входящие обновления с определёнными сообществами. Это позволяет фильтровать входящие сообщения ещё до их разбора и сохранения в памяти, что существенно снижает её использование. Обычная цепочка входной фильтрации может только отклонить префиксы, из-за чего память всё равно будет расходоваться, а в таблице маршрутизации (/routing route) они будут отображаться как «неактивные, отфильтрованные». Для применения изменений требуется перезапуск сессии.
Я пользуюсь сервисом, который выдаёт кучу bgp-сообществ, и хочу отфильтровать некоторые из них. Например, нужны 65444:700 и 65444:710, поэтому я добавляю:
/routing filter community-list
add communities=65444:710,65444:700 disabled=no list=some_list
Далее редактирую своё BGP-соединение, чтобы включить input.accept-communities:
/routing bgp connection
add as=*** disabled=no hold-time=4m input.accept-communities=some_list \
.filter=bgp_in keepalive-time=1m listen=yes local.address=*** .role=\
ebgp multihop=yes name=some_bgp output.filter-chain=discard \
remote.address=*** .as=65444 router-id=*** \
routing-table=main
И добавляю фильтр для назначения шлюза к маршрутам:
/routing filter rule
add chain=bgp_in disabled=no rule="set gw some_gw; accept"
Но ничего не происходит, я всё равно получаю все сообщества. Работает только такой фильтр:
/routing filter rule
add chain=bgp_in disabled=no rule="if ( bgp-communities equal 65444:700 || bgp-communities equal 65444:710) {set gw some_gw; accept}"
Но это уже пустая трата ресурсов...
Я пользуюсь сервисом, который выдаёт кучу bgp-сообществ, и хочу отфильтровать некоторые из них. Например, нужны 65444:700 и 65444:710, поэтому я добавляю:
/routing filter community-list
add communities=65444:710,65444:700 disabled=no list=some_list
Далее редактирую своё BGP-соединение, чтобы включить input.accept-communities:
/routing bgp connection
add as=*** disabled=no hold-time=4m input.accept-communities=some_list \
.filter=bgp_in keepalive-time=1m listen=yes local.address=*** .role=\
ebgp multihop=yes name=some_bgp output.filter-chain=discard \
remote.address=*** .as=65444 router-id=*** \
routing-table=main
И добавляю фильтр для назначения шлюза к маршрутам:
/routing filter rule
add chain=bgp_in disabled=no rule="set gw some_gw; accept"
Но ничего не происходит, я всё равно получаю все сообщества. Работает только такой фильтр:
/routing filter rule
add chain=bgp_in disabled=no rule="if ( bgp-communities equal 65444:700 || bgp-communities equal 65444:710) {set gw some_gw; accept}"
Но это уже пустая трата ресурсов...
