feeman Posted July 18, 2025 Posted July 18, 2025 Схема: Customer => ISP => Uplink. Как анонсировать вышестоящим аплинкам только те сети, которые есть в таблице маршрутизации. Т.е. пока BGP сессия Customer'а в UP-е, сети его анонсируются аплинкам. В интернетах пишу, что через community. Но осилить, т.е. понять схему как это настроить пока не смог. Поделитесь, пжл, примером. Вставить ник Quote
VolanD666 Posted July 18, 2025 Posted July 18, 2025 А просто свои блоки вы не можете зафильтровать? Вставить ник Quote
TheUser Posted July 18, 2025 Posted July 18, 2025 4 минуты назад, feeman сказал: Схема: Customer => ISP => Uplink. Как анонсировать вышестоящим аплинкам только те сети, которые есть в таблице маршрутизации. Т.е. пока BGP сессия Customer'а в UP-е, сети его анонсируются аплинкам. В интернетах пишу, что через community. Но осилить, т.е. понять схему как это настроить пока не смог. Поделитесь, пжл, примером. Если предположить, что Customer - это нижестоящая AS с BGP-сессией, то создаете под него route-policy: route-map Customer-in permit 100 match ip address prefix-list CustomerPrefixes set community 21666:1000 additive exit где CustomerPrefixes - перечень разрешенных к использованию им сетей. 21666:1000 - ваше комьюнити, которым вы маркируете клиентов. И в сторону аплинка нужно анонсировать уже по этому комьюнити, типа так: route-map Uplink-out permit 100 <тут у вас наверняка уже что-то есть> route-map Uplink-out permit 200 match community CUSTOMER_COMMUNITY bgp community-list expanded CUSTOMER_COMMUNITY seq 5 permit 21666:1000 Итого получается: Пока сессия с клиентом в UP, его маршруты имеют комьюнити 21666:1000, и они анонируются в аплинк. Когда сессия с клиентом в DOWN, его маршруты могут прилетать откуда угодно, но на них нет нужного комьюнити, поэтому они не анонсируются через вас в аплинки. Это прям очень упрощенно, т.к. нужно предусмотреть: 1) Градацию Local Preference для маршрутов от клиентов (больше) и аплинков (меньше); 2) Фильтрацию на вход комьюнити 21666:1000 со всех BGP-сессий (только вы ее навешиваете); 3) Обновление фильтрОв. Вставить ник Quote
feeman Posted July 18, 2025 Author Posted July 18, 2025 @TheUser , Благодарю за подробный пример! 1 час назад, TheUser сказал: 2) Фильтрацию на вход комьюнити 21666:1000 со всех BGP-сессий (только вы ее навешиваете); Вы правы, вероятность есть, что может прилететь схоже за номером комьюнити от Customer'a или Uplink'а. Есть ли механизмы защиты? Вставить ник Quote
feeman Posted July 18, 2025 Author Posted July 18, 2025 После того, как настроил community часть аплинков полегло?)) Вставить ник Quote
TheUser Posted July 18, 2025 Posted July 18, 2025 45 минут назад, feeman сказал: После того, как настроил community часть аплинков полегло?)) Вы, видимо, туда Full View отдали, обычное дело: получили от того, кто не упал, отдали тем, кто попадал. Политики пришлите что настороили, номер AS и IP-адреса можно замазать/поменять... Вставить ник Quote
feeman Posted July 18, 2025 Author Posted July 18, 2025 24 минуты назад, TheUser сказал: Вы, видимо, туда Full View отдали, обычное дело: получили от того, кто не упал, отдали тем, кто попадал. ACL на out в этом плане выручает. Clear bgp neigbor решило проблему. Вставить ник Quote
vurd Posted July 18, 2025 Posted July 18, 2025 Предъявите ваши права на управление BGP. Вставить ник Quote
Jora_Cornev Posted August 13, 2025 Posted August 13, 2025 (edited) Прилетела задача, приступил к реализации и сразу получил граблями... Три аплинка с разной стоимостью, раскидал клиентов по группам через Community и теоретически все ок! Но тут клиент, т.е. Custumer_2 говорит - хочу самостоятельно управлять анонсированием своих подсетей в двух аплинков, которые мне доступны. Т.е. в одного аплинка (с дешевым_по_стоимости_интернетом) он хочет отдать 1-у подсеть, а во второй аплинк (с среднем_по_стоимости_интернетом) 2-е подсети. Хотелка клиента привела меня в тупик... Просьба помочь! bgp community-list expanded fo_CUSTOMER_с_дешевым_по_стоимости_интернетом_111 seq 10 permit 12349:111 bgp community-list expanded fo_CUSTOMER_с_среднем_по_стоимости_интернетом_222 seq 10 permit 12349:222 bgp community-list expanded fo_CUSTOMER_с_дорогим_по стоимости_интернетом_333 seq 10 permit 12349:333 BGP секция: Скрытый текст router bgp 12349 neighbor 13.XX.XX.35 remote-as 13335 neighbor 13.XX.XX.35 description Uplink_1_дешевый_интернет ! neighbor 69.XX.XX.39 remote-as 6939 neighbor 69.XX.XX.39 description Uplink_2_средний_интернет ! neighbor 12.XX.XX.89 remote-as 12389 neighbor 12.XX.XX.89 description Uplink_3_дорогой_интернет ! address-family ipv4 unicast neighbor 13.XX.XX.35 route-map EXPORT_for_Uplink_1_дешевый_интернет out neighbor 69.XX.XX.39 route-map EXPORT_for_Uplink_2_средний_интернет out neighbor 12.XX.XX.89 route-map EXPORT_for_Uplink_3_дорогой_интернет out Route-map для Клиентских подсетей: Скрытый текст route-map EXPORT_for_Uplink_1_дешевый_интернет permit 111 match community fo_CUSTOMER_с_дешевым_по_стоимости_интернетом_111 exit ! route-map EXPORT_for_Uplink_1_дешевый_интернет permit 222 match community fo_CUSTOMER_с_среднем_по_стоимости_интернетом_222 exit ! route-map EXPORT_for_Uplink_1_дешевый_интернет permit 333 match community fo_CUSTOMER_с_дорогим_по стоимости_интернетом_333 exit ! route-map EXPORT_for_Uplink_2_средний_интернет permit 222 match community fo_CUSTOMER_с_среднем_по_стоимости_интернетом_222 exit ! route-map EXPORT_for_Uplink_2_средний_интернет permit 333 match community fo_CUSTOMER_с_дорогим_по стоимости_интернетом_333 exit ! route-map EXPORT_for_Uplink_3_дорогой_интернет permit 333 match community fo_CUSTOMER_с_дорогим_по стоимости_интернетом_333 exit ! Route-map для Клиентов: Скрытый текст route-map IMPORT_from_Customer_1 permit 10 match ip address prefix-list CUSTOMER_1 set community 12349:111 additive set local-preference 200 exit route-map IMPORT_from_Customer_2 permit 10 match ip address prefix-list CUSTOMER_2 set community 12349:222 additive set local-preference 200 exit route-map IMPORT_from_Customer_3 permit 10 match ip address prefix-list CUSTOMER_3 set community 12349:333 additive set local-preference 200 exit Edited August 13, 2025 by Jora_Cornev Вставить ник Quote
TheUser Posted August 13, 2025 Posted August 13, 2025 Цитата neighbor 69.XX.XX.39 remote-as 6939 neighbor 69.XX.XX.39 description Uplink_2_средний_интернет А давно Hurricane имеет право оказывать услуги связи с РФ? 4 часа назад, Jora_Cornev сказал: Но тут клиент, т.е. Custumer_2 говорит - хочу самостоятельно управлять анонсированием своих подсетей в двух аплинков, которые мне доступны. Клиент со своей AS? 4 часа назад, Jora_Cornev сказал: раскидал клиентов по группам через Community Это со своими AS или ваши абоненты в разных подсетях? Вставить ник Quote
Jora_Cornev Posted August 13, 2025 Posted August 13, 2025 8 минут назад, TheUser сказал: Клиент со своей AS? Все верно. 8 минут назад, TheUser сказал: Это со своими AS или ваши абоненты в разных подсетях? Задача, т.е. речь только про клиентов со своими AS. 11 минут назад, TheUser сказал: А давно Hurricane имеет право оказывать услуги связи с РФ? Вам Показалось)) Или если очень надо, то, нен-нет, да можно получить услугу. Вставить ник Quote
TheUser Posted August 13, 2025 Posted August 13, 2025 19 минут назад, Jora_Cornev сказал: Вам Показалось)) Или если очень надо, то, нен-нет, да можно получить услугу. И письмо счастья от ЦМУ ССОП. 19 минут назад, Jora_Cornev сказал: Задача, т.е. речь только про клиентов со своими AS. А делать полноценные управляющие комьюнити Вы не хотите, потому что клиенты со своими AS смогут увести вас в переплату по бёрсту в одном аплинке, и в недогрузку другого. Так? Тогда задача не решается, а клиенту говорится, что услуга отдается "как есть", любые пожелания по изменению связности на внешнем периметре сети только после пересмотра стоимости услуги. Вставить ник Quote
Jora_Cornev Posted August 13, 2025 Posted August 13, 2025 (edited) 6 часов назад, TheUser сказал: А делать полноценные управляющие комьюнити Вы не хотите Т.е. в этом случае вне зависимости от группы в которой клиент должен находиться: 1. Дешевый интернет. 2. Средний интернет. 3. Дорогой интернет. Находясь в группе дешевый интернет клиент может завернуть свой трафик в дорогого аплинка ? Edited August 13, 2025 by Jora_Cornev Вставить ник Quote
Savchenko Posted August 14, 2025 Posted August 14, 2025 Не очень понятен смысл этого, какая конечная цель? Вставить ник Quote
vurd Posted August 15, 2025 Posted August 15, 2025 21 час назад, Savchenko сказал: Не очень понятен смысл этого, какая конечная цель? Очевидно, что конечная цель - потерять даунстрима. Вставить ник Quote
Jora_Cornev Posted August 15, 2025 Posted August 15, 2025 В 13.08.2025 в 20:41, TheUser сказал: А делать полноценные управляющие комьюнити Вы не хотите Чувство недосказанности. Нужны подробности. Вставить ник Quote
TheUser Posted August 16, 2025 Posted August 16, 2025 18 часов назад, Jora_Cornev сказал: Чувство недосказанности. Нужны подробности. Ну какие еще подробности? Тут надо рисовать полностью новую конфигурацию. А прежде накидать план комьюнити, например: 1) Собственные маршруты вы отмечаете как 10666:1 2) Маршруты от нижестоящих клиентов - 10666:2 3) Маршруты от апстримов - 10666:3 4) Маршруты от конкретного апстрима 10666:3NN, где NN - двузначный номер апстрима. , где 10666 - номер вашей AS. Под каждого вашего апстрима делаете комтюнити вида 10666:3NNX, где NN - двузначный номер апстрима,а X - экшн, 0-не анонсировать, 1,2, и тп. - добавить соответствующее количество препендов. И еще не забыть придумать градацию Local Preference, например, для клиентов 1000, для апстримов 100-200. И дальше рисовать под этот план политики. Вставить ник Quote
TheUser Posted August 17, 2025 Posted August 17, 2025 Вот тут ChatGPT наконфигурил по ТЗ выше. Но перепроверять лень. Явно правила CUST-UP01-* нечитабельны, нужно переделать на две отдельных проверки на клиентский префикс 10666:2, а затем уже чекать управляющие. ! ! ---------- COMMUNITY NAMESPACE ---------- ! ip bgp-community new-format ! ! Наши origin-теги (присваиваем только мы сами) ip community-list expanded OUR-ORIGIN-TAGS permit ^10666:(1|2|3[0-9][0-9])$ ! ! Разрешённые управляющие теги (клиенты могут ставить): 10666:3NNX ip community-list expanded OUR-CONTROL-TAGS permit ^10666:3[0-9][0-9][0-9]$ ! ! Комбинированные списки "клиентский И управляющий" для апстрима-01 ! (совпадение обоих токенов в любом порядке) ip community-list expanded CUST-UP01-BLOCK permit ((^| )10666:2( |$).*((^| )10666:3010( |$)))|((^| )10666:3010( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP01-PREP1 permit ((^| )10666:2( |$).*((^| )10666:3011( |$)))|((^| )10666:3011( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP01-PREP2 permit ((^| )10666:2( |$).*((^| )10666:3012( |$)))|((^| )10666:3012( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP01-PREP3 permit ((^| )10666:2( |$).*((^| )10666:3013( |$)))|((^| )10666:3013( |$).*((^| )10666:2( |$))) ! ! Комбинированные списки "клиентский И управляющий" для апстрима-02 ip community-list expanded CUST-UP02-BLOCK permit ((^| )10666:2( |$).*((^| )10666:3020( |$)))|((^| )10666:3020( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP02-PREP1 permit ((^| )10666:2( |$).*((^| )10666:3021( |$)))|((^| )10666:3021( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP02-PREP2 permit ((^| )10666:2( |$).*((^| )10666:3022( |$)))|((^| )10666:3022( |$).*((^| )10666:2( |$))) ip community-list expanded CUST-UP02-PREP3 permit ((^| )10666:2( |$).*((^| )10666:3023( |$)))|((^| )10666:3023( |$).*((^| )10666:2( |$))) ! ! ---------- BGP ---------- ! router bgp 10666 bgp log-neighbor-changes bgp enforce-first-as ! neighbor 203.0.113.2 remote-as 65001 neighbor 203.0.113.2 description CUSTOMER-1 ! neighbor 198.51.100.1 remote-as 64501 neighbor 198.51.100.1 description UPSTREAM-01 ! neighbor 198.51.100.2 remote-as 64502 neighbor 198.51.100.2 description UPSTREAM-02 ! neighbor 10.0.0.10 remote-as 10666 neighbor 10.0.0.10 description IBGP-RR neighbor 10.0.0.10 update-source Loopback0 neighbor 10.0.0.10 next-hop-self ! address-family ipv4 ! ! --- наши анонсы --- network 192.0.2.0 mask 255.255.255.0 route-map TAG-OWN network 198.51.100.0 mask 255.255.255.0 route-map TAG-OWN ! ! --- CUSTOMER-1 --- neighbor 203.0.113.2 activate neighbor 203.0.113.2 send-community both neighbor 203.0.113.2 route-map FROM-CUSTOMER in neighbor 203.0.113.2 route-map TO-CUSTOMER out ! ! --- UPSTREAM-01 --- neighbor 198.51.100.1 activate neighbor 198.51.100.1 send-community both neighbor 198.51.100.1 route-map FROM-UPSTREAM-01 in neighbor 198.51.100.1 route-map TO-UPSTREAM-01 out ! ! --- UPSTREAM-02 --- neighbor 198.51.100.2 activate neighbor 198.51.100.2 send-community both neighbor 198.51.100.2 route-map FROM-UPSTREAM-02 in neighbor 198.51.100.2 route-map TO-UPSTREAM-02 out ! ! --- iBGP RR --- neighbor 10.0.0.10 activate neighbor 10.0.0.10 send-community both neighbor 10.0.0.10 route-map FROM-IBGP in neighbor 10.0.0.10 route-map TO-IBGP out ! exit-address-family ! ! ! ---------- ТЕГИРОВАНИЕ НАШИХ СЕТЕЙ ---------- ! route-map TAG-OWN permit 10 set comm-list OUR-ORIGIN-TAGS delete set community 10666:1 ! ! ! ---------- ВХОД ОТ КЛИЕНТА (sanitize origin, оставить control) ---------- ! route-map FROM-CUSTOMER permit 10 set comm-list OUR-ORIGIN-TAGS delete set community 10666:2 additive set local-preference 1000 ! ! ! ---------- ВХОД ОТ АПСТРИМОВ (ничему не доверяем) ---------- ! route-map FROM-UPSTREAM-01 permit 10 set comm-list OUR-ORIGIN-TAGS delete set comm-list OUR-CONTROL-TAGS delete set community 10666:301 additive set local-preference 150 ! route-map FROM-UPSTREAM-02 permit 10 set comm-list OUR-ORIGIN-TAGS delete set comm-list OUR-CONTROL-TAGS delete set community 10666:302 additive set local-preference 150 ! ! ! ---------- ВХОД ОТ iBGP ---------- ! route-map FROM-IBGP permit 10 set local-preference 500 ! ! ! ---------- ЭКСПОРТ КЛИЕНТАМ ---------- ! route-map TO-CUSTOMER permit 10 ! по умолчанию анонсируем ! ! ! ---------- ЭКСПОРТ В АПСТРИМ-01 (только клиентские с 10666:2) ---------- ! route-map TO-UPSTREAM-01 deny 10 match community CUST-UP01-BLOCK ! 10666:2 + 10666:3010 => не анонсировать ! route-map TO-UPSTREAM-01 permit 20 match community CUST-UP01-PREP3 ! 10666:2 + 10666:3013 set as-path prepend 10666 10666 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-01 permit 30 match community CUST-UP01-PREP2 ! 10666:2 + 10666:3012 set as-path prepend 10666 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-01 permit 40 match community CUST-UP01-PREP1 ! 10666:2 + 10666:3011 set as-path prepend 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-01 permit 100 ! всё остальное (в т.ч. наши/апстримные) — обычный экспорт set comm-list OUR-CONTROL-TAGS delete ! ! ! ---------- ЭКСПОРТ В АПСТРИМ-02 (только клиентские с 10666:2) ---------- ! route-map TO-UPSTREAM-02 deny 10 match community CUST-UP02-BLOCK ! 10666:2 + 10666:3020 => не анонсировать ! route-map TO-UPSTREAM-02 permit 20 match community CUST-UP02-PREP3 ! 10666:2 + 10666:3023 set as-path prepend 10666 10666 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-02 permit 30 match community CUST-UP02-PREP2 ! 10666:2 + 10666:3022 set as-path prepend 10666 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-02 permit 40 match community CUST-UP02-PREP1 ! 10666:2 + 10666:3021 set as-path prepend 10666 set comm-list OUR-CONTROL-TAGS delete ! route-map TO-UPSTREAM-02 permit 100 set comm-list OUR-CONTROL-TAGS delete ! ! ! ---------- ЭКСПОРТ В iBGP ---------- ! route-map TO-IBGP permit 10 ! при необходимости можно передавать control-теги внутри AS ! end Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.