Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Как помечать префиксы BGP-пира и пересылать только их другому пиру?

    Как помечать префиксы BGP-пира и пересылать только их другому пиру?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Как помечать префиксы BGP-пира и пересылать только их другому пиру?, RouterOS
     
    mobilexpi
    Guest
    #1
    0
    13.04.2017 16:00:00
    Ребята, у меня есть несколько BGP-пиров, и некоторые из них — не IP-транзит, а локальный IXP. Хотелось бы понять, как можно «пометить» префиксы и рекламировать только эти префиксы (те, что от конкретного BGP-пира) другому BGP-пиру? Правильно ли для этого использовать BGP communities? Спасибо!
     
     
     
    zstm
    Guest
    #2
    0
    03.05.2017 16:56:00
    Привет, можешь привести пару примеров? Сейчас мои фильтры для сессии BGP клиента выглядят примерно так:

    IN:  
    chain=ZZ-in bgp-communities="" invert-match=no action=passthrough  
    set-bgp-prepend-path="" set-bgp-communities="" append-bgp-communities=""  

    chain=ZZ-in protocol=bgp invert-match=no action=accept  
    set-bgp-prepend-path="  

    OUT:  
    chain=ZZ-out prefix=My.prefix.ip/21 prefix-length=21 invert-match=no action=accept  
    set-bgp-prepend-path="" set-bgp-communities=49895:1510  

    chain=ZZ-out prefix=My.prefix.ip/24 prefix-length=24 invert-match=no action=accept  
    set-bgp-prepend-path="" set-bgp-communities=49895:1510  

    chain=ZZ-out bgp-communities="" invert-match=no action=discard  
    set-bgp-prepend-path="" set-bgp-communities="" append-bgp-communities=""
     
     
     
    ZeroByte
    Guest
    #3
    0
    03.05.2017 19:20:00
    Тебе нужно, чтобы в ZZ-in была настройка типа set-bgp-communities=xxx:yyy (вместо пустой строки “”). “” означает очистку сообществ у всех полученных префиксов. Если поставить xxx:yyy (где xxx — обычно твой ASN, а yyy — любое значение, которое ты выбираешь и которое будет означать «получено от пирингов»), то ты сможешь сделать исходящий фильтр для другого пира с такими правилами:  
    action=accept bgp-communities=xxx:yyy  
    action=discard  

    Если ты хочешь также отправлять собственные префиксы, независимо от сообществ, добавь ещё одно правило, которое принимает твои префиксы, и поставь его перед правилом №2 (до или после правила №1 — без разницы), например:  
    action=accept prefix=192.0.2.0/24  

    Что касается части :yyy у community… это число произвольное, и ты сам решаешь, что оно будет означать. Например, может быть так:  
    2000 = все IXC (если у тебя несколько IXC и ты хочешь предложить все такие маршруты другим пирам)  
    2001 = IXC 1 (если хочешь конкретно выделять маршруты от IXC1)  
    2002 = IXC 2 (то же самое) и так далее…  

    В таком случае, для каждого IXC в in-фильтре можно добавить два сообщества: xxx:2000 и xxx:2001 (в примере для IXC1). При этом xxx обычно будет твоим собственным ASN.
     
     
     
    zstm
    Guest
    #4
    0
    04.05.2017 05:44:00
    Хорошо, я понимаю, что set-bgp-communities должен настраиваться на входящих фильтрах от оператора, с которым у меня BGP-сессия? Сейчас у меня есть:  
    BGP-СЕССИЯ С PEER: 0 E name="ATM-Orange" instance=default remote-address=1.2.3.4 remote-as=1111 tcp-md5-key="" nexthop-choice  
    route-reflect=no hold-time=3m ttl=default in-filter=ATM_Orange-in out-filter=ATM_Orange-out address-family  
    default-originate=never remove-private-as=yes as-override=no passive=no use-bfd=no  

    Входящий фильтр: Флаги: X - отключено  
    0 chain=ATM_Orange-in bgp-communities="" invert-match=no action=passthrough set-bgp-prepend-path="" set-bgp-communities="" append-bgp-communities=""  

    1 chain=ATM_Orange-in protocol=bgp bgp-communities="" invert-match=no action=accept set-bgp-prepend-path="" set-bgp-communities="" append-bgp-communities=""  

    Исходящий фильтр: Флаги: X - отключено  
    0 chain=ATM_Orange-out prefix=1.2.3.4/21 prefix-length=21 protocol=bgp invert-match=no action=accept set-bgp-local-pref=50 set-bgp-prepend=3 set-bgp-prepend-path="" set-bgp-communities=""  

    1 chain=ATM_Orange-out prefix=1.2.3.4/24 prefix-length=24 protocol=bgp invert-match=no action=accept set-bgp-local-pref=50 set-bgp-prepend=3 set-bgp-prepend-path="" set-bgp-communities=""  

    2 chain=ATM_Orange-out invert-match=no action=discard set-bgp-prepend-path=""  

    Когда 1.2.3.4 — это мой PI-префикс. И теперь куда добавлять community к префиксам, которые приходят из этой сессии, чтобы отправлять их только до конечного клиента?
     
     
     
    ZeroByte
    Guest
    #5
    0
    04.05.2017 14:42:00
    Прочитай мой ответ ещё раз, я уже 100% объяснил, что нужно сделать, чтобы достичь своей цели. Твой текущий входящий фильтр — по сути, две правила, которые делают одно и то же… правило 1 — это passthrough-правило, то есть оно выполняет BGP-ACTION с префиксом, но не принимает никаких решений о фильтрации. По сути, правило 1 просто очищает префиксы от prepend-path (кстати, бесполезно в входящем фильтре), убирает сообщества со всех префиксов и, наконец, ничего не добавляет в пустой список сообществ.

    Я хотел обратить внимание на одну вещь, которую многие не знают о поведении GUI Winbox. Видишь разницу в двух правилах выше? Это раскрывающееся меню не просто прячет или показывает поле ввода, оно фактически его активирует. Когда меню раскрыто, пустое поле ввода на самом деле означает: «установить сообщество в пустое значение». Если хочешь оставить сообщества без изменений, нужно закрыть меню (как в правом окне).

    Твой входящий фильтр может быть таким коротким — одно правило: action=accept bgp-set-communities=xxxx:yyyy (значение community можно поставить любое, которое ты хочешь использовать для обозначения «получено от Orange», обычно xxxx — твой ASN, yyyy — любое значение, которое тебе подходит).

    Это правило принимает всё от Orange (фактически, доверяет им и считает, что они не пришлют кучу неверных маршрутов) и помечает их выбранным тобой сообществом.

    Если хочешь быть чуть менее доверчивым, можешь добавить в фильтр входящих сообщений от Orange правила discard — например, отвергать дефолтные префиксы, отвергать богон-сети и так далее. Но это уже тебе решать, что и как нужно фильтровать.

    Если хочешь применить сообщество ко всем префиксам, но при этом фильтровать, есть два варианта: либо сделать первое правило, которое назначает сообщество с action=passthrough (чтобы обработка продолжалась), либо сначала поставить все правила discard, а последний сделать accept с BGP-ACTION «set-communities».

    Для выходящих фильтров просто сделай цепочку, которая принимает префиксы с тем сообществом, что ты использовал во входящем фильтре, и отвергает все остальные. (это на вкладке BGP, а не на вкладке BGP Actions).
     
     
     
    ZeroByte
    Guest
    #6
    0
    04.05.2017 14:51:00
    Короткий ответ на ваш вопрос — «куда поставить правило для совпадения с этим сообществом?»… Вот здесь и нужно указать условие по сообществу. Любое правило с этим значением будет применятьcя только к префиксам, которые имеют сообщество xxxx:yyyy (сообщества обязательно должны быть числовыми, отсюда и красный предупреждающий текст на скриншоте). Короче говоря, все поля в разделах «Matchers» и «BGP» должны быть истинными, чтобы выполнялись действия и BGP-действия.
     
     
     
    zstm
    Guest
    #7
    0
    04.05.2017 16:26:00
    Большое спасибо, всё отлично работает. Вчера после ваших рекомендаций всё сработало, но я просто неправильно проверял. Мне показалось, что приходит слишком много префиксов, но на самом деле они просто идут от родительского оператора.
     
     
     
    humtum82
    Guest
    #8
    0
    31.07.2017 21:06:00
    Привет, ZeroByte! У меня похожая ситуация: у меня есть 2 провайдера, мой публичный префикс IP — x.x.0.0/22.

    Провайдер 1: у меня 100 Мбит, префикс рекламируется как x.x.0.0/22.  
    Провайдер 2: у меня 30 Мбит, префикс рекламируется как x.x.1.0/24.

    Провайдер 2 говорит, что их пиры не могут до нас достучаться, и поэтому мы должны рекламировать полный /22 у них. Но мы им объяснили, что если так сделаем, то у нас будет "забит" канал, ведь у них всего 30 Мбит. Они предложили выход — помечать их BGP-сообщества и рекламировать x.x.0.0/24, x.x.2.0/24 и x.x.3.0/24, так как x.x.1.0/24 уже рекламируется и к нему трогать нечего. Это сделано, чтобы не загружать каналы x.x.0.0/24, x.x.2.0/24 и x.x.3.0/24, потому что пометка гарантирует, что трафик в обе стороны с интернетом не пойдет.

    Мы пробовали разные методы, предложенные в форумах, но при их применении вся сеть переключается на провайдера 2 и "забивается".

    Подскажите, можно ли одновременно использовать исходящие маршруты для этих двух провайдеров? Мы хотим разделить исходящий трафик, а не гонять всё по одному, например, сделать балансировку 70:30.
     
     
     
    ZeroByte
    Guest
    #9
    0
    31.07.2017 21:43:00
    Причина того, что вы наблюдаете такое поведение, вполне очевидна, если на минуту задуматься, что происходит. ISP1 получает объявление одного префикса /22. ISP2 получает объявление четырёх префиксов /24. Первое правило выбора маршрута — выбрать самое конкретное совпадение (самый длинный подходящий префикс). То есть для любого IP-адреса из вашего блока в глобальной таблице BGP будут 2 подходящих маршрута — /22 через ISP1 и /24 через ISP2. Ни один метод трафик-инжиниринга или AS-prepend не помогут, потому что они даже не вступают в игру. Метрики — это всего лишь способ решать ничьи.

    Я бы рекомендовал объявлять /22 в оба ISP и просто добавить несколько AS-prepend для ISP2, либо, если они поддерживают сообщества (communities), которые заставляют их сеть добавлять ваш префикс при объявлении его другим соседям, это тоже стоит рассмотреть (особенно если ISP2 напрямую соединён с ISP1). Что касается исходящего трафика, вы можете легко настроить предпочтение любого ISP с помощью local_preference. К сожалению, для этого потребуется более тонкая настройка, чем просто понизить local_pref для ISP2, иначе почти весь трафик пойдёт через ISP1 из-за того, что список префиксов для обоих провайдеров будет примерно одинаковым.

    Если у вас два граничных роутера, то небольшое преимущество даст то, что один из методов разрешения ничьих BGP — отдать предпочтение eBGP-префиксам перед iBGP (два роутера используют iBGP для обмена маршрутами). Это происходит позже, чем учитывается AS-PATH, так что для многих префиксов AS-PATH будет одинаковой длины. Трафик, направленный через роутер1 как дефолтный шлюз, пойдёт через ISP1, а через R2 — через ISP2 для тех же назначений. Явно более хорошее направление всегда будет одинаковым.

    Если вы сможете хорошо проанализировать исходящий трафик и узнать, какой удалённый ASN получает сколько трафика, то сможете менять local_pref в зависимости от ASN назначения и добиться какого-то баланса. В целом же, считаю, что балансировка асимметричных линков у разных провайдеров — очень сложная задача, и лучше, если у вас будут линии одинаковой пропускной способности.
     
     
     
    ZeroByte
    Guest
    #10
    0
    31.07.2017 21:48:00
    Перечитав твоё сообщение, думаю, на твоём месте я бы просто оставил префикс x.x.1.0/24, а ещё объявил бы x.x.0.0/22 с AS-PREPEND примерно в 5 раз.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры