Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

BGP_HOLD_TIME_EXPIRED Сетевое оборудование и VPN

MikroTik Log: bgp,error notification sent: hold time expired — Решение

Обновлено: 24.08.2026 · Официальная документация ↗

Периодический разрыв BGP-соседства и флаппинг маршрутных таблиц в системном журнале:

  • bgp,error notification sent: hold time expired (Error code: 4, Subcode: 0)
  • bgp,info Connection reset by peer / HoldTimer expired
  • bgp,warning BGP session down, peer <IP> unreachable
  • Сессия переходит из состояния Established в Idle или Active, прерывая прохождение транзитного сетевого трафика.

1. Причины срабатывания Hold Timer

Ошибка означает, что маршрутизатор не получил ни одного служебного сообщения Keepalive или Update от BGP-пира в течение времени Hold Time (по умолчанию 90 или 180 секунд). Основные причины: перегрузка CPU при получении Full View, блокировка пакетов TCP порт 179 в Firewall, дропы из-за несовпадения MTU или перегрузка физического линка.

2. Проверка доступности порта TCP 179 и фильтрации Firewall

Убедитесь, что фаервол не дропает сессии BGP при высокой нагрузке:

/ip firewall filter add chain=input protocol=tcp port=179 action=accept place-before=1 comment="Accept BGP TCP 179"

3. Корректировка таймеров BGP (RouterOS v7)

Если канал связи подвержен кратковременным задержкам или микропотерям, увеличьте интервалы таймеров в BGP Connection/Template:

/routing bgp connection set [find name="bgp-peer-isp"] hold-time=180s keepalive-time=60s

4. Проверка MTU и фрагментации TCP BGP Update пакетов

Пакеты BGP Update с большими таблицами маршрутов генерируют сегменты максимального размера. Если на пути занижен MTU, пакеты теряются. Настройте фиксацию MSS или Path MTU Discovery:

/ip firewall mangle add chain=output protocol=tcp tcp-flags=syn port=179 action=change-mss new-mss=1400 passthrough=yes
💡 Практика специалистов: В RouterOS v7 для стабильности BGP сессий с операторами Full View обязательно настраивайте `input.filter` для фильтрации ненужных префиксов (например, дефолтный запрет bogon/RFC1918 сетей) прямо на входе, снижая нагрузку на RAM и процессор.

Частые вопросы (FAQ)

Что такое BGP Hold Time?

Hold Time — максимальный интервал времени в секундах, в течение которого маршрутизатор ожидает получения управляющих сообщений Keepalive или Update от соседа перед объявлением пира недоступным.

Почему Hold Timer сбрасывается именно в момент получения Full-View таблицы?

Обработка сотен тысяч маршрутов вызывает всплеск утилизации CPU до 100%, из-за чего процесс маршрутизации не успевает своевременно ответить на входящие Keepalive-сообщения.

Как проверить загрузку процессора при флапе BGP?

Используйте инструмент профайлера: /tool profile cpu=all. В RouterOS v7 обработка BGP распределена по нескольким ядрам через процесс routing.

Как включить логирование BGP сообщений?

Выполните команду: /system logging add topics=bgp,raw action=memory.

Полезные материалы
Рекомендуем