Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • 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 — тонкая, но серьезная проблема с community

    Ошибка BGP — тонкая, но серьезная проблема с community

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Ошибка BGP — тонкая, но серьезная проблема с community, RouterOS
     
    ZeroByte
    Guest
    #1
    0
    03.03.2016 18:24:00
    Я обнаружил баг в ROS BGP, из-за которого возникает рассогласование состояния между двумя BGP-пирами, и выкладываю это для осведомленности сообщества.

    Тестовая среда: Router OS версии 6.34 на платформе CHR, запущенный в Virtualbox в GNS3.

    Баг: В некоторых случаях маршрут может менять статус так, что он уже не проходит через фильтр маршрутов. В этом случае исходный роутер удаляет префикс из списка объявляемых маршрутов, но при этом не отправляет сообщение об отзыве (withdrawal update). После этого никакие мягкие обновления (refresh) не могут убрать маршрут из таблицы маршрутов соседа. Маршрут должен в итоге истечь по TTL, но иначе избавиться от ошибочного маршрута у удалённого пира можно только полной остановкой и запуском сессии пира или повторным объявлением маршрута с последующей блокировкой его другим правилом фильтрации.

    Как воспроизвести это поведение: Не все переходы статусных изменений accept->discard затрагиваются багом. Я не знаю, в чём причина, но вот такой сценарий его вызывает.

    Я настроил систему, где фильтры маршрутов применяют community к локально-генерированным маршрутам, а затем фильтруют исходящие объявления, основываясь на этой community. В работе участвуют два фильтра: global-out и peer-out.

    R1 (маршрутизатор, который объявляет маршруты) сопоставляет локально-сгенерированные маршруты и добавляет к ним community 1:1 [global-out], затем фильтрует маршруты для пира R2 так, чтобы отправлялись только маршруты с community 1:1 [peer-out].

    Конфигурация R1:  
    /ip route  
    add distance=254 dst-address=192.168.1.0/24 type=blackhole  
    add distance=254 dst-address=192.168.2.0/24 type=blackhole

    /routing filter  
    add action=accept bgp-communities=1:1 chain=peer-out  
    add action=discard chain=peer-out  
    add action=accept append-bgp-communities=1:1 chain=global-out locally-originated-bgp=yes

    /routing bgp instance  
    set default out-filter=bgp-global-out as=65530

    /routing bgp network  
    add network=192.168.1.0/24 synchronize=yes  
    add network=192.168.2.0/24 synchronize=yes

    /routing bgp peer  
    add name=R2 out-filter=peer-out remote-address=10.1.2.2 remote-as=65520 ttl=default

    Конфигурация R2 тривиальна — он принимает все маршруты от R1 по eBGP сессии.

    Если в /routing bgp network создать третий маршрут, например 192.168.3.0/24 с synchronize=no, то фильтр global-out не применит community к этому префиксу, так как он не считается «локально-сгенерированным». Следовательно, фильтр peer-out его заблокирует от отправки R2 (я тестировал именно это поведение и так нашёл этот баг).

    Однако, если изменить существующий префикс (192.168.2.0/24), поменяв synchronize с yes на no, роутер внутренне удалит community 1:1 с этого префикса и затем заблокирует его в списке объявлений. Но при этом роутер не отправит BGP Update с уведомлением об отзыве маршрута для R2.

    /routing bgp advertisements> print  
    PEER     PREFIX             NEXTHOP      AS-PATH    ORIGIN  LOCAL-PREF  
    R2       192.168.1.0/24     10.1.2.1                igp

    /ip route> print where bgp  
    Flags: X - отключенный, A - активный, D - динамический,  
    C - соединение, S - статический, r - rip, b - bgp, o - ospf, m - mme,  
    B - blackhole, U - недоступен, P - запрещён  
    #      DST-ADDRESS        PREF-SRC        GATEWAY      DISTANCE  
    0 ADb  192.168.1.0/24                     10.1.2.1         20  
    1 ADb  192.168.2.0/24                     10.1.2.1         20

    Wireshark показал, что сообщение об отзыве маршрута от R1 не отправлялось. Если R2 или R1 выполнит refresh, то R1 отправит только префикс 192.168.1.0/24 — R2 же оставит 192.168.2.0/24 в своей таблице, поскольку не получил никакой новой информации по этому маршруту.

    Я понимаю, что звучит как крайний случай, но ситуация неприятная: фильтр блокирует маршрут, роутер считает, что отозвал его, а на самом деле этого не произошло.

    Есть ещё одна проблема с фильтрами маршрутов — изменение порядка правил, перетаскивая их в цепочке, не заставляет фильтр переоценивать маршруты. Изменение существующего правила (даже просто комментария) заставляет фильтр сделать переоценку правильно.

    И ещё — если использовать один фильтр (без глобального фильтра на уровне инстанса), поведение меняется: BGP matcher будет считать локально-генерированные маршруты даже если synchronize=no, и тогда баг не проявляется.
     
     
     
    ZeroByte
    Guest
    #2
    0
    31.03.2016 15:31:00
    Сегодня утром я получил обновление от Mikrotik по этой проблеме — в целом оно совпадает с тем, что уже обсуждалось в этой теме: если этот баг можно исправить в ROSv6, то это будет сделано именно там. Спасибо, Mikrotik, что разбираетесь с этим вопросом. В этом посте я особо не акцентировал внимание, но есть ещё одно поведение — перестановка правил фильтрации не заставляет их пересчитываться. То есть, если переставить правило, которое принимает префикс, так чтобы оно шло перед правилом, которое его отбрасывает, логично было бы ожидать, что этот префикс начнёт рекламироваться, но на самом деле это не происходит, пока я не сделаю что-то простое, например, не добавлю и не уберу комментарий к правилу.
     
     
     
    Cha0s
    Guest
    #3
    0
    22.03.2016 12:03:00
    Подписываюсь на эту тему, так как это может быть связано с давней проблемой, когда MikroTik не корректно отправляет сообщения об отзыве маршрутов BGP. http://forum.mikrotik.com/t/inject-route-into-bgp-routing-table-problem/6929/1 http://forum.mikrotik.com/t/routeros-2-9-24-is-out/6777/28 http://forum.mikrotik.com/t/bgp-routing-problem-your-opinion/6459/1 Очень надеюсь, что решение всё же есть. Прошло уже целое десятилетие(!), а проблема, описанная в теме выше, до сих пор не решена.
     
     
     
    ZeroByte
    Guest
    #4
    0
    22.03.2016 14:30:00
    Я так и не получил никакого ответа от Mikrotik, кроме автоматического «мы получили ваше письмо». Именно такие мелкие пробелы в защите и не позволяют ROS войти в элиту ядровой маршрутизации, на мой взгляд. Я уверен в своих знаниях BGP, маршрутизации и ROS и мог бы настроить маршрутизирующее ядро на базе ROS, но именно такие «мелочи» могут по-настоящему запутать тех, кто только начинает разбираться в непростой теме BGP; тех, кто не понимает, что то, что они видят, — это вовсе не норма.
     
     
     
    StubArea51
    Guest
    #5
    0
    23.03.2016 12:53:00
    Продолжайте настаивать... В конце концов MikroTik включит это в план исправлений. Они уже устранили почти все баги, которые я им сообщал — иногда быстро, иногда не очень, но, думаю, это вполне закономерно, учитывая, что роутеры у них такие недорогие. Ресурсов на разработку продукта, тестирование, код и техподдержку всего лишь ограниченное количество. Но я не перестаю им писать, это помогает сохранять внимание к проблеме. К тому же ребята из MikroTik много читают форум... Так что держать эту тему активной — лучший способ привлечь внимание разработчиков MikroTik. Когда появится возможность, оставьте номер обращения в этой ветке.
     
     
     
    mrz
    Guest
    #6
    0
    23.03.2016 13:11:00
    Не переживайте, мы ответим на запрос, когда тест будет завершён. Те ссылки 2006 года здесь не имеют значения, так как тогда использовалась совсем другая реализация (quagga).
     
     
     
    Cha0s
    Guest
    #7
    0
    23.03.2016 13:14:00
    Пакет routing-test должен был заменить quagga. Проблема здесь связана с вашей реализацией BGP, а не с Quagga. До использования routing-test (quagga) у нас не было никаких проблем с тем, что префиксы не удалялись корректно.
     
     
     
    mrz
    Guest
    #8
    0
    23.03.2016 15:08:00
    Эти старые темы уже не актуальны, согласно обсуждениям проблема наблюдалась в версиях 2.8 (quagga), 2.9 и в тестах маршрутизации 2.9. Как я уже говорил, мы протестируем проблему, обсуждаемую в ЭТОЙ теме, и сообщим вам, можно ли её исправить в ROS v6.
     
     
     
    StubArea51
    Guest
    #9
    0
    23.03.2016 16:11:00
    MRZ, ты можешь подтвердить, что это действительно баг?
     
     
     
    mrz
    Guest
    #10
    0
    30.03.2016 11:12:00
    Могу подтвердить, что есть два бага: 1. фильтр инстанса некорректно совпадает с исходящими сетями; 2. withdraw не отправляется после того, как маршрут отбрасывается.
     
     
     
    nz_monkey
    Guest
    #11
    0
    31.03.2016 05:17:00
    Привет, Maris! Есть ли примерное время, когда исправят эти баги?
     
     
     
    mrz
    Guest
    #12
    0
    31.03.2016 10:48:00
    Я дам знать, когда появятся новости.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры