Кратко

  • RFC 1989 полностью определил механизм LQR, но не политику: обе стороны могли оценить потери в каждом направлении и при этом применить разные критерии пригодности линии.
  • Накопительные счётчики отправителя, локальные значения, добавленные при приёме, и возвращённые позднее наблюдения сверялись по разностям между отчётами.
  • Отчёт оставался свидетельством, а не приговором: направления согласовывались независимо, 32-битные счётчики переполнялись, Magic-Number лишь помогал обнаружить loopback, а безопасность и восстановление не задавались.

У двух одинаковых потерь могут быть разные последствия

Два канала теряют по два пакета из ста. На одном работает чувствительный к задержке сервис и есть дешёвый резервный маршрут. Другой — единственная связь удалённой площадки, а трафик способен повторять передачу. Одинаковая доля потерь не делает одинаковым решение об отключении.

В мае 1992 года механизм PPP Link Quality Monitoring был опубликован как RFC 1333. В августе 1996 года его заменил RFC 1989. Новый документ прямо разделил «mechanism» и «policy». Формат Link-Quality-Report, точки измерения и порядок применения полностью специфицированы. Критерий хорошей или плохой линии и реакция на ухудшение оставлены реализации и могут различаться на концах.

Это не пробел, который должен был заполнить единый контроллер. Стандарт уменьшил объём обязательного согласия. Оборудованию разных производителей нужен общий смысл чисел. Ему не нужно знать цену резервного канала, допустимую деградацию приложения или полномочия дежурного инженера.

Каждый запрос создавал обязательство в одном направлении

По умолчанию контроль качества выключен. Сторона, желающая получать сведения, включает в LCP Configure-Request опцию Quality-Protocol типа 4. Шестнадцатеричное значение c025 обозначает Link Quality Report. Ответ Configure-Ack означает, что peer согласился отправлять выбранный протокол.

Запрос читается как «присылай отчёты мне», а не как взаимная клятва. Направления согласовываются отдельно; RFC 1661 допускал даже разные протоколы качества в противоположных направлениях. Однако реализация, согласившаяся отправлять LQR, обязана правильно обрабатывать входящие LQR, даже если не запросила их сама и не применяет локальную политику мониторинга.

Для LQR опция содержит четырёхоктетный Reporting-Period в сотых долях секунды. Это максимальный интервал: peer может отправлять чаще. Ноль означает отсутствие собственного таймера и немедленную отправку LQR в ответ на входящий. Согласование не позволяет обоим концам выбрать ноль и бесконечно ждать первого сообщения.

Protocol-Reject, указывающий LQR, требует прекратить отправку. Поэтому сохранённый Ack доказывает принятое тогда обязательство, но не последующую доставку отчётов через ухудшившуюся линию.

В отчёте встречались три момента измерения

Имена полей LQR даны относительно получателя, потому что именно он запросил отчёт. PeerOutPackets, PeerOutOctets и PeerOutLQRs — текущие выходные счётчики отправителя. При приёме локальный процесс логически добавляет SaveInPackets, SaveInOctets, отбросы, ошибки и SaveInLQRs. Эти SaveIn-поля не передавались по входящей линии; это наблюдение в локальной точке.

Когда получатель позже отправляет отчёт обратно, сохранённые значения возвращаются как PeerIn.... Поля LastOut... повторяют последнюю полученную картину прежних локальных выходных счётчиков. Серия LQR связывает нынешнее утверждение peer о своей отправке с тем, что он ранее утверждал о приёме от нас.

Это не индивидуальная квитанция на пакет. Сопоставляются приращения. Изменение PeerInPackets сравнивается с изменением LastOutPackets, чтобы оценить потери локального исходящего направления. SaveInPackets и PeerOutPackets показывают входящее. Октеты дают дополнительный масштаб. Рост отбросов и ошибок на peer может направить расследование к перегруженному приёмнику, а не к физическому повреждению.

Но он лишь направляет. Протокол не удостоверяет добросовестность счётчика и не устанавливает единственную причину.

Общим должен был стать сам смысл октета

PPP мог выполнять framing и escaping в основном процессе, отдельном устройстве или аппаратном контроллере. Синхронно-асинхронный преобразователь мог менять представление незаметно для реализации. Если каждая сторона сообщит ближайший физический счётчик, разница представлений будет выглядеть как потеря.

RFC 1989 задал абстрактную точку отсчёта. Считаются октеты, участвующие в FCS, сам FCS и один флаг на кадр. Дополнительные флаги и escape-биты или октеты не считаются. Задача — воспроизводимая мера переданной информации, а не полный расход физических символов или полосы. InGoodOctets не включает материал кадров, отнесённых к ошибкам или отбросам.

Вставляемые значения уже должны учитывать ожидаемый вклад создаваемого LQR. Счётчики растут, но 32-битные поля доходят до предела и возвращаются к нулю; вычисление разности обязано учитывать переполнение. Некоторые интерфейсные счётчики при установлении LCP также не сбрасываются к общему начальному значению. Синхронизация строится на относительном изменении, а не на выдуманном общем нуле.

Если одна сторона учитывает escaping, разрыв растёт вместе с трафиком. Если переполнение вычесть как обычные знаковые числа, появляется огромная ложная аномалия. Совместимость требовала общей семантики, а не одной ширины поля.

Потерянный LQR тоже мог быть потерянным пакетом

LQR получал высший приоритет в мультиплексоре, чтобы сведения о качестве не ждали за обычным трафиком. Но увеличение частоты не всегда повышало уверенность. На хорошем канале отчёт избыточен и должен минимально мешать данным. Длинный период сглаживает всплески, но медленнее замечает полный обрыв.

Асимметрия меняет полезность повторов. Если входящие LQR приходят и показывают очень плохой исходящий путь, ускорять отправку по этому же пути бессмысленно: новые отчёты, вероятно, потеряются. Если исходящий путь хорош, а входящий плох, несколько попыток дают шанс доставить часть отчётов и помочь peer сформировать собственное решение.

RFC 1989 не превращал один пропуск в приговор. Если ожидаемый LQR не пришёл или полученный отчёт показывает действительно плохое состояние, следует отправить как минимум ещё один. Для алгоритмического решения требуется не менее двух интервалов туда-обратно: первый сигнал мог быть временной нагрузкой или потерей самого отчёта.

Документ рекомендовал гистерезис и приводил K успехов из N периодов как пример. Он не устанавливал K, N или процент. Восстановление тоже не получило обязательной процедуры. Можно закрыть протоколы сетевого уровня, продолжить LQR и снова настроить их после улучшения; смена маршрута, разрыв или продолжение работы оставались местными решениями.

c025 не являлся сертификатом доверия

Если Magic-Number был согласован, собственное число во входящем LQR могло указать на loopback. Без согласования поле равно нулю и игнорируется. Это средство обнаружения аномалии канального уровня, а не доказательство личности устройства или оператора.

RFC 1989 прямо сообщает, что вопросы безопасности не рассматриваются. Он не добавляет криптографическую целостность отчёта и независимое удостоверение его значений. Аутентификация PPP относится к другой фазе. c025 в захвате доказывает появление представления LQR в этой точке; оно не доказывает внешнюю истинность счётчиков или доставку приложению.

Эксплуатационный журнал должен отдельно хранить Configure-Request, Ack или Reject, согласованный период, фактическое время прихода, сырые счётчики, обработку переполнения, разности, версию политики и последующее действие. Одна отметка «линия плохая» удаляет автора и основание решения.

Общий механизм не стал общей властью

Историческая сила LQR — в точном размере консенсуса. Запрос, максимальный интервал, точки измерения, возврат двух направлений и смысл разностей были общими. Допустимая потеря и стоимость восстановления — нет.

Два конца могли применять разные окна, пороги и действия, продолжая понимать один отчёт. Для локального улучшения не требовалось разрешение центра; требовалось соблюдать добровольно согласованный механизм.

Регистрация c025 в IANA доказывает тип протокола. Configure-Ack доказывает принятие обязанности сообщать. Разности поддерживают оценку, ошибки и отбросы сужают гипотезу. Затем локальная политика создаёт статус, а маршрутизация, NCP, физический канал и приложение показывают последствия.

Отчёт дал сторонам общую бухгалтерию. Права вынести общий приговор он не получил.

Источники