Jump to content

Recommended Posts

Posted

Схема: Customer => ISP => Uplink.

 

Как анонсировать вышестоящим аплинкам только те сети, которые есть в таблице маршрутизации.

Т.е. пока BGP сессия Customer'а  в UP-е, сети его анонсируются аплинкам.

В интернетах пишу, что через community. Но осилить, т.е. понять схему как это настроить пока не смог.

Поделитесь, пжл, примером.

 

Posted
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) Обновление фильтрОв.

 

 

Posted

@TheUser , Благодарю за подробный пример!

 

1 час назад, TheUser сказал:

2) Фильтрацию на вход комьюнити 21666:1000 со всех BGP-сессий (только вы ее навешиваете);

Вы правы, вероятность есть, что может прилететь схоже за номером комьюнити  от Customer'a или Uplink'а. Есть ли механизмы защиты?

Posted
45 минут назад, feeman сказал:

После того, как настроил community часть аплинков полегло?)) 

Вы, видимо, туда Full View отдали, обычное дело: получили от того, кто не упал, отдали тем, кто попадал.
Политики пришлите что настороили, номер AS и IP-адреса можно замазать/поменять...

 

Posted
24 минуты назад, TheUser сказал:

Вы, видимо, туда Full View отдали, обычное дело: получили от того, кто не упал, отдали тем, кто попадал.

ACL на out в этом плане выручает.

Clear bgp neigbor решило проблему.

  • 4 weeks later...
Posted (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 by Jora_Cornev
Posted
Цитата

 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 или ваши абоненты в разных подсетях?

Posted
8 минут назад, TheUser сказал:

Клиент со своей AS? 

 Все верно.

 

8 минут назад, TheUser сказал:

Это со своими AS или ваши абоненты в разных подсетях?

 Задача, т.е. речь только про клиентов со своими AS.

 

11 минут назад, TheUser сказал:

А давно Hurricane имеет право оказывать услуги связи с РФ?

Вам Показалось)) Или если очень надо, то, нен-нет, да можно получить услугу.

Posted
19 минут назад, Jora_Cornev сказал:

Вам Показалось)) Или если очень надо, то, нен-нет, да можно получить услугу.

И письмо счастья от ЦМУ ССОП.

 

19 минут назад, Jora_Cornev сказал:

 Задача, т.е. речь только про клиентов со своими AS.

А делать полноценные управляющие комьюнити Вы не хотите, потому что клиенты со своими AS смогут увести вас в переплату по бёрсту в одном аплинке, и в недогрузку другого. Так? Тогда задача не решается, а клиенту говорится, что услуга отдается "как есть", любые пожелания по изменению связности на внешнем периметре сети только после пересмотра стоимости услуги.

 

 

 

Posted (edited)
6 часов назад, TheUser сказал:

А делать полноценные управляющие комьюнити Вы не хотите

Т.е. в этом случае вне зависимости от группы в которой клиент должен находиться:

1. Дешевый интернет.

2. Средний интернет.

3. Дорогой интернет.

 

Находясь в группе дешевый интернет клиент может завернуть свой трафик в дорогого аплинка ?

 

Edited by Jora_Cornev
Posted
21 час назад, Savchenko сказал:

Не очень понятен смысл этого, какая конечная цель? 

Очевидно, что конечная цель - потерять даунстрима.

Posted
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. 
И дальше рисовать под этот план политики.

Posted

Вот тут 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

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.