Теоретические основы и архитектура

Лабораторная работа собирает всё из модуля в одной топологии: ромб PE1-P1/P2-PE2 с метриками, при которых LFA защищает линк PE1-P1, клиент A подключён к PE2 и PE3, а RR отдаёт PE1 оба пути VPNv4. Вы сначала измерите сходимость без оптимизаций, затем включите BFD и тюнинг SPF, затем LFA/rLFA и, наконец, BGP PIC с резервным путём, и после каждого шага повторите один и тот же тест отказа. Главная цель не в абсолютных цифрах, а в понимании, какая стадия (обнаружение, флудинг, SPF, FIB, BGP) даёт какую часть потерь и как её убирает каждый механизм. Измерение выполняется потоком пакетов с генератора с известной частотой, потери считаются как число потерянных пакетов, делённое на частоту. Время зависит от платформы: на виртуальных образах без аппаратной пересылки значения будут выше и шумнее, чем на железе, поэтому сравнивайте этапы между собой, а ожидаемые значения воспринимайте как диапазоны, а не гарантии.

Как измерять сходимость корректно

Сходимость измеряют по потерям пакетов, а не по таймерам из логов. Генератор отправляет поток известной частоты (1000 пакетов в секунду даёт разрешение 1 мс, 10000 - 0,1 мс) с последовательными номерами, приёмник считает пропущенные номера. Окно потерь равно числу потерянных пакетов, делённому на частоту; если потоки идут в обе стороны, фиксируйте их отдельно, так как маршрут туда и обратно сходится независимо. Измерение повторяют не меньше 10 раз на каждом этапе и сохраняют минимум, медиану и максимум: единичный прогон на виртуальной платформе мало что говорит из-за шума планировщика CPU. Не измеряйте командой ping с интервалом в секунду: она увидит лишь целые секунды. Часы на генераторе и приёмнике должны быть общими или поток считается на одном хосте (петля через сеть).

Типы инъекции отказа

Административное shutdown интерфейса - самый чистый тест, но он не повторяет физический обрыв: интерфейс снимается программно, а сосед узнаёт о потере сигнала сразу, поэтому BFD и LoS не показывают реальное время обнаружения. Для проверки обнаружения нужно отключить линк на стороне, которая не получает событие (отключение виртуального кабеля, ip link set down на хосте-мосте) или пассивно блокировать BFD-пакеты фильтром. Отказ узла (выключение или reload) проверяет IGP, BGP next-hop tracking и PIC Edge. Отказ процесса или перезагрузка control plane проверяют Graceful Restart/NSF. Возврат линка (link-up) проверяют отдельно: именно он провоцирует микропетли и вторую волну потерь. Заранее решите, какой тип отказа к какому этапу относится, и не смешивайте их.

Ожидаемые значения как диапазоны

Ниже порядки величин для проверки здравого смысла, а не гарантии: они зависят от платформы, версии ПО и числа префиксов. Отказ линка PE1-P1 без BFD и тюнинга: если интерфейс падает физически и платформа реагирует на потерю сигнала, потери составляют от долей секунды до нескольких секунд (SPF с дефолтными таймерами, FIB, метки); если полагаться на Hello/Dead, потери достигают десятков секунд. С BFD 50 мс x 3 и SPF 50/200/5000 мс: обычно 150-800 мс на аппаратных платформах. С LFA: от десятков миллисекунд до примерно 200 мс на железе (обнаружение плюс программирование), на виртуальных образах нередко 100-500 мс, а в части образов LFA не программируется в аппаратный путь и выигрыша нет. Отказ PE2 без PIC при малой таблице: от сотен миллисекунд до нескольких секунд, при дефолтной задержке next-hop trigger 5 с к времени добавляется 5 с; при 100 тысячах и более префиксов - от секунд до десятков секунд; с PIC Edge: 100-500 мс независимо от числа префиксов. Перезагрузка P1 с GR: при исправном helper потери близки к нулю для транзитного трафика, а без GR - как у отказа узла.

Как связать результат со стадиями

Каждое улучшение убирает определённую стадию: BFD сокращает обнаружение, тюнинг SPF - ожидание расчёта, LFA - флудинг, SPF и FIB на пути, PIC - пофиксную перепрограммировку BGP. Если после включения механизма потери не уменьшились, значит узким местом была другая стадия. Если потери в тесте с LFA остались порядка 300-500 мс, проверьте, что резервный путь действительно установлен в FIB (repair path или backup next-hop), что BFD включён на обоих концах и что нет программной пересылки. Не забывайте про сходимость обратного направления: поток туда сходится по PE1, обратный - по PE2/PE3 и иногда использует другой механизм защиты. Анализируйте также восстановление: возврат линка с обычными таймерами может дать микропетлю, которую LFA не лечит; ей противодействуют микропетлевая задержка и упорядоченное обновление.

Ограничения лаборатории

Виртуальные образы маршрутизаторов (CSR, vMX, виртуальные VRP) пересылают пакеты программно: у них нет ASIC-программирования резервных путей, поэтому абсолютное время не отражает железо, а PIC и LFA иногда реализованы частично. Поэтому оценивайте относительное улучшение, и если вы работаете на железе, фиксируйте номер версии ПО. Нагрузка CPU от генерации 100 тысяч BGP-маршрутов может исказить измерение: запускайте генератор заранее и дожидайтесь стабилизации. Не измеряйте во время фоновых событий (flap, перезапуски). Наконец, фиксируйте конфигурацию на каждом этапе (диффом): воспроизводимость результата так же важна, как сама цифра.

Схема архитектуры и топология

text
                    RR 10.255.0.100
                         |  10.0.100.0/30
             10.0.11.0/30|        10.0.12.0/30
  +-----+ metric 10 +----+------ metric 10 +-----+  CE A (dual-homed)
  | PE1 |-----------| P1 |-----------------| PE2 |--+  LAN 192.168.20.0/24
  +-----+           +----+\                +-----+  |  RD 65000:2 (primary)
10.255.0.1      10.255.0.11 \ metric 30   10.255.0.2 |
     |                       \            +-----+    |
     | metric 20              +----------| PE3 |----+  RD 65000:3 (backup)
  +----+                     /           +-----+
  | P2 |--------------------+  10.255.0.3
  +----+  metric 10 to PE2, metric 30 to PE3
10.255.0.12

 Traffic: generator on LAN 192.168.10.0/24 (PE1) -> host 192.168.20.10 via VRF A
 Test A: shut PE1-P1 | Test B: power off PE2 | Test C: reload P1

Схема прохождения трафика и стек меток

text
1. Baseline: send a UDP stream at 1000 packets per second from LAN 192.168.10.0/24 to 192.168.20.10.
2. Inject a failure (link, node or process) and record the number of lost packets.
3. Loss window = lost packets / packet rate; repeat the test at least 10 times per stage.
4. Enable the next mechanism (BFD, SPF tuning, LFA/rLFA, BGP PIC) and repeat the same test.
5. Compare min / median / max per stage and map each improvement to a convergence stage.
6. Restore the link and measure recovery: repeat to check for microloops on link-up.

Таблица состояний и параметров

Этап лабораторииЧто включеноЧто проверяется
0. БазовыйIS-IS, LDP, iBGP, один путьПотери до оптимизации, зависимость от таймеров
1. BFD и SPFBFD 50 мс x 3, SPF 50/200/5000Сокращение обнаружения и расчёта
2. LFA/rLFAper-prefix LFA, remote LFAЛокальное переключение на линке PE1-P1
3. BGP PICУникальные RD, Add-Path, nexthop trigger 0Отказ PE2 не зависит от числа префиксов
4. Отказ узла и GRПерезагрузка P1 с GR/NSFРоль helper, потери при GR и без него
5. ВосстановлениеВозврат линкаМикропетли и повторные потери при link-up

Архитектурная модель и принцип работы