Зачем нужны Hold Time и KEEPALIVE в BGP
Отредактирована 01.10.2026
BGP работает поверх TCP (порт 179).
BGP — это протокол прикладного уровня (L7), который использует TCP (L4) на порту 179 для доставки своих сообщений.
Что такое KEEPALIVE и Hold Time
| Параметр | Значение |
|---|---|
| Что это | Периодическое сообщение «я жив» |
| Когда | Каждые Keepalive Interval секунд (по умолчанию 60) |
| Размер | 19 октет (только заголовок, без данных) |
| Зачем | Подтвердить соседу, что сессия активна |
| Параметр | Значение |
|---|---|
| Что это | Таймер, в течение которого маршрутизатор ждёт KEEPALIVE (или любое другое сообщение) от соседа |
| По умолчанию | 180 секунд (3 × Keepalive) |
| Когда срабатывает | Если за Hold Time не пришло ни одного сообщения от соседа |
| Что происходит | Сессия разрывается, маршруты удаляются |
R1 R2 │──── KEEPALIVE (каждые 60 сек) ────►│ │◄─── KEEPALIVE (каждые 60 сек) ─────│ │ │ │ (если R2 молчит 180 сек) │ │ │ │ ✗ Hold Timer Expired │ │ ✗ Сессия разорвана │ │ ✗ Маршруты удалены │
Время (сек) R1 (Hold Timer) R2 Событие ───────────────────────────────────────────────────────────────────────────── t=0 Hold Timer: 180 Hold Timer: 180 KEEPALIVE обмен ↓ (сброс) ↓ (сброс) Сессия Established ───────────────────────────────────────────────────────────────────────────── t=60 Hold Timer: 180 Hold Timer: 180 KEEPALIVE обмен ↓ (сброс) ↓ (сброс) Сессия Established ───────────────────────────────────────────────────────────────────────────── t=120 Hold Timer: 180 Hold Timer: 180 KEEPALIVE обмен ↓ (сброс) ↓ (сброс) Сессия Established ───────────────────────────────────────────────────────────────────────────── t=180 Hold Timer: 180 ✗ R2 молчит R2 выключился (начинает отсчёт) R1 ждёт ───────────────────────────────────────────────────────────────────────────── t=240 Hold Timer: 120 ✗ R2 молчит R1 ждёт ───────────────────────────────────────────────────────────────────────────── t=300 Hold Timer: 60 ✗ R2 молчит R1 ждёт ───────────────────────────────────────────────────────────────────────────── t=360 Hold Timer: 0 ✗ R2 молчит ⏰ Hold Timer Expired ✗ Сессия разорвана R1 разрывает сессию ✗ Маршруты удалены Маршруты удалены ✗ Переключение на резерв Трафик идёт в обход ─────────────────────────────────────────────────────────────────────────────
| Причина | Пояснение |
|---|---|
| Запас на потерю пакетов | Если 1 KEEPALIVE потеряется — сессия не разорвётся |
| Запас на задержку | Если сеть загружена — KEEPALIVE может прийти с опозданием |
| Баланс | Слишком маленький Hold Time → «мигание» сессии |
| Баланс | Слишком большой Hold Time → долгое переключение на резерв |
- Один потерянный пакет → сессия разорвана.
- Это нестабильно — сеть бы «мигала».
R1#show bgp ipv4 unicast neighbors 10.1.12.2 | include hold time Last read 00:00:02, last write 00:00:29, hold time is 90, keepalive interval is 30 seconds Configured hold time is 180, keepalive interval is 60 seconds Minimum holdtime from neighbor is 90 second
| Строка | Что означает |
|---|---|
| hold time is 90 | Текущее (используемое) значение |
| keepalive interval is 30 | Текущий интервал |
| Configured hold time is 180 | Слишком маленький Hold Time → «мигание» сессии |
| Minimum holdtime from neighbor is 90 | Минимум, который принимает R1 от соседа |
R1#show bgp ipv4 unicast summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.1.12.2 4 65502 45 46 5 0 0 00:05:23 0 ↑ Up/Down = 5 минут 23 секунды (сессия установлена)
R1#show bgp ipv4 unicast summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.1.12.2 4 65502 45 46 5 0 0 00:05:23 Idle ↑ Состояние Idle (сессия разорвана)
%BGP-5-ADJCHANGE: neighbor 10.1.12.2 Down Hold Timer Expired %BGP-5-NBR_RESET: Neighbor 10.1.12.2 reset due to Hold Timer Expired
- Keepalive = 1 сек → излишняя нагрузка на CPU и сеть.
- Hold Time = 3 сек → сессия будет «мигать» при малейшей задержке.
- Hold Time = 0 → сессия никогда не разорвётся (опасно).
- Рекомендация: Keepalive ≥ 30 сек, Hold Time ≥ 90 сек.
R1(config-router)# neighbor 10.1.12.2 timers 30 90
- 30 — Keepalive (сек).
- 90 — Hold Time (сек).
show bgp ipv4 unicast neighbors 10.1.12.2 | include hold time
| Вопрос | Ответ |
|---|---|
| Зачем KEEPALIVE? | Подтвердить, что сосед жив |
| Зачем Hold Time? | Разорвать сессию, если сосед молчит |
| Почему 3 × Keepalive? | Запас на потерю 1–2 пакетов |
| Что если сосед молчит? | Сессия разрывается, маршруты удаляются |
| Как согласуются? | BGP выбирает наименьшее значение |
| Где смотреть? | show bgp ... neighbors ... | include hold time |
| Что сбрасывает Hold Timer? | Каждый KEEPALIVE |
| Что видно в syslog? | Hold Timer Expired |