Кратко

  • RFC 3145 добавил PPP-причину в L2TP Call-Disconnect-Notify, но оставил атрибут необязательным, не требующим понимания и не влияющим на сеанс.
  • Код, номер управляющего протокола и направление задают координаты сообщения одного узла; они не доказывают физическую первопричину, вину, показ текста пользователю или расчёт.
  • Расширение сделало диагностику переносимой между владельцами, не передав отправителю полномочия судить об инциденте.

Успешное завершение сообщения не объясняло завершение сеанса

L2TP соединял концентратор доступа LAC и сетевой сервер LNS, перенося между ними PPP-сеанс. Туннельная машина состояний была намеренно отделена от подробностей PPP. Поэтому уведомление о снятии вызова могло быть совершенно корректным, даже если удалённая сторона ничего не знала о последнем PPP-событии.

В Call-Disconnect-Notify уже находились L2TP Result Code и Error Code. Они описывали результат туннельного управления. Тайм-аут LCP, отсутствие подходящего NCP, отказ метода аутентификации или административное завершение относились к другой плоскости.

Особенно заметен разрыв был там, где LAC и LNS принадлежали разным организациям. Одна сторона видела линию доступа и пользователя, другая — PPP-состояние. У каждой были собственные часы, идентификаторы и интересы. Без общего квитанционного поля они соглашались лишь в том, что сеанса больше нет.

RFC 3145 определил PPP Disconnect Cause Code AVP: Vendor ID 0, Attribute Type 46, допустимый только в CDN. Внутри находились код отключения, PPP Control Protocol Number, Direction и необязательный текст UTF-8.

Но атрибут не заменял Result/Error Code. Стандарт требовал использовать их вместе. Туннельный результат и PPP-наблюдение могли дополнять или даже ставить вопросы друг к другу. Сведение их в одну «причину» уничтожило бы происхождение данных.

Диагностика не получила права управлять

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

Атрибут предназначался только для информации и журналирования. Он не должен был влиять ни на туннель, ни на PPP-сеанс. Существующая машина состояний совершала действие; узел сообщал локальное наблюдение; дальнейшее расследование формировало вывод. Одно поле не объединяло эти три полномочия.

Hidden разрешалось установить, а RFC 3193 позже описал защиту L2TP при помощи IPsec. Защищённый канал укрепляет доказательство отправителя, целостности и конфиденциальности. Он не превращает локальную интерпретацию отправителя в полную причинную модель. Подлинное высказывание может оставаться ошибочным или неполным.

Направление принадлежало рассказчику

Direction 0 означал глобальную ошибку, 1 — «у peer», 2 — «локально». Точка отсчёта — узел, сформировавший AVP. Если сборщик заменяет local на «оператор», а peer на «клиент», он добавляет коммерческие роли. Если он заменяет их на «виновник» и «пострадавший», он уже выносит несуществующий приговор.

При нормальном завершении направление показывало, кто отправил LCP Terminate-Request. Для обязательного шифрования или обратного вызова — кто требовал возможность и кто отказал. При выборе аутентификации — были ли локальные методы отклонены peer или локальная система не принимала методы, запрошенные peer. Отказ может быть корректным соблюдением политики.

Control Protocol Number задавал предмет сообщения. Глобальные причины использовали ноль; LCP-ошибки ссылались на LCP; аутентификационные — на соответствующий протокол; NCP-ошибки — на сетевой управляющий протокол. При нескольких отказах NCP разрешалось несколько AVP. Если оставляли один, он описывал последний отказ. Последний не значит единственный и не значит главный.

Поэтому запись «код 16» почти бесполезна без peer, туннеля, сеанса, CDN, времени, защиты, протокола и направления. Официальный номер становится свидетельством только вместе с координатами.

Справочник симптомов не был экспертизой

Начальные значения от 0 до 20 включали отсутствие информации, административное отключение, нормальное завершение, тайм-аут машины состояний, отсутствие распознаваемых LCP-пакетов, возможную петлю по Magic Number, тайм-аут Echo Request, несогласованность Multilink PPP, отказ обязательного callback или шифрования, ошибки аутентификации, отсутствие доступных NCP и невозможность согласовать адреса.

Единые названия позволяли сравнивать реализации. Они не устраняли неоднозначность наблюдения. Echo timeout совместим с потерей, перегрузкой, фильтром обратного пути, мёртвым peer и зависшим локальным процессом. Ошибка аутентификации — исход протокольного обмена, а не разрешение раскрыть, какая часть учётных данных была верной.

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

Необязательный UTF-8-текст также не становился каноническим оттого, что его можно показать. Он мог быть неточным, чувствительным или не дойти до пользователя. Оригинал, локализованная фраза и структурированный код должны сохраняться отдельно.

Совместимость сохранила прошлое, а не власть производителя

Черновой вариант использовал Vendor ID 43 компании 3Com. Получателям разрешили считать старую форму эквивалентной, но отправителям не рекомендовали её использовать. Старые сообщения оставались читаемыми, а новая передача переходила к назначению IETF.

Реестр IANA устанавливает, как декодировать число. Он не подтверждает распространённость реализации и не проверяет правдивость отдельного события. Peer создаёт сообщение; реестр стабилизирует язык; PPP-состояния и пакеты дают возможность его оспорить.

У расчёта была собственная квитанция

Причина могла помогать учёту и отладке. RADIUS tunnel accounting имел отдельные атрибуты для корреляции, Start, Interim, Stop и счётчиков. PPP-код может подсказать фон остановки, но не доказывает получение Stop, полноту счётчиков или правильность счёта.

Нужны и данные эксплуатации. Echo timeout сопоставляется со счётчиками, сигналами и проверками пути. Аутентификационная причина — с переходами состояний без распространения секретов. Нормальное завершение — с реальным LCP-обменом. Код открывает дело, но не закрывает его.

Пользовательское сообщение образует ещё одну цепочку: сформировано, доставлено, увидено. Наличие текста в AVP не подтверждает два последних шага.

Работающая система оставалась апелляцией

RFC 3145 стандартизировал ограниченное высказывание. Код и реестр принадлежат символическому уровню; CDN — зарегистрированное действие; PPP и пакеты — работа системы; учёт и опыт пользователя — последствия. Ни один уровень не вправе изображать остальные.

Современные системы часто получают reason, удаляют автора и направление, делают удобную фразу и называют её глобальной причиной инцидента. Документ 2001 года был осторожнее. Причина пересекала туннель. Право определять реальность вместе с ней не передавалось.

Источники