Кратко

  • RFC 10035 добавляет в YANG Library доступный только для чтения список augmented-by. Сервер сообщает, какие модули напрямую расширяют другой модуль в том же module-set, хотя базовый модуль не может обнаружить эту обратную зависимость в собственном исходнике.
  • Список не транзитивен. Если B добавляет узел под A, а C — лист под узлом, определённым B, то A перечисляет B, а B перечисляет C. C не становится прямым расширением A лишь потому, что его путь начинается в A.
  • Это версионированное прямое соседство по данным одного сервера, а не полный граф или подтверждение исполнения. Нужны также content-id, редакции, доступ, обход клиента, разобранные исходники и наблюдаемый результат.

Обычная зависимость объявляется там, где она нужна. В YANG из RFC 7950 оператор import называет модуль, чьи определения используются, а include — включаемый подмодуль. Парсер открывает файл и видит исходящие связи.

Внешний augment приходит с другой стороны. Чужой модуль указывает место в дереве базовой схемы и вставляет туда новые узлы. Посетитель знает адрес, но базовый файл не получает список посетителей. Поэтому правильный разбор базы всё равно может дать неполную эффективную схему.

RFC 10035 решает именно эту задачу обнаружения. Документ YANG Library: Addition of the augmented-by List опубликован в августе 2026 года на стандартизационном треке IETF и обновляет RFC 8525. Авторы — Zhuoyao Lin, Benoît Claise и Ignacio Dominguez Martinez-Casanueva. Новая leaf-list augmented-by позволяет серверу назвать прямые расширяющие модули.

Опыт Claise объясняет операционный контекст, но не делает стандарт его единоличной собственностью. В профиле IETF, сохранённом 31 августа 2026 года, указаны 45 RFC, включая RFC 10035, и тогдашние публичные роли в управлении и эксплуатации сетей, проверке метрик, семинаре IAB и поддержке YangCatalog. Биография IETF 104 фиксирует его работу содиректором области Operations and Management в 2012–2018 годах, а также занятия YANG, телеметрией и автоматизацией. Это датированные сведения об участии в коллективной работе, не власть над внедрениями.

Зависимость записана у того, кто меняет

import и include находятся у потребителя. Внешний augment находится в источнике, который меняет чужое дерево. RFC 10035 относит его вместе с deviation к обратным зависимостям: форма или поведение базы меняются из-за инструкции вне неё.

YANG Library уже умела называть модули отклонений. Аналогичного пути для расширений не было. Поиск по общему каталогу найдёт кандидатов, но не состав конкретного сервера. augmented-by ограничивает ответ его контекстом: базовый и расширяющий модули должны быть перечислены в одном module-set.

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

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

Главную границу показывает пример с тремя модулями. A определяет foo-a. B добавляет под ним foo-b. C добавляет лист под foo-b.

Путь C укоренён в A, но непосредственный родитель нового листа определён B. Поэтому A перечисляет B, а B — C. A не перечисляет C как прямое расширение.

Так сохраняется смысл ребра. Если копировать всех потомков во все списки предков, сообщение сервера смешается с транзитивным замыканием клиента. Реальная точка присоединения исчезнет, а список разрастётся повторениями.

Приложение, которому нужно замыкание, обходит A→B→C. Если важен конкретный узел, оно загружает исходники и разбирает дерево. Версия алгоритма, предел глубины, циклы, редакции и ошибки принадлежат клиенту. Сервер даёт минимальный совместимый факт — прямое соседство.

content-id ставит временну́ю метку

RFC 8525 связывает текущую информацию YANG Library сервера с content-id, который должен изменяться вместе с библиотекой. Клиент может кешировать экземпляр и получить новый после смены значения. RFC 10035 также требует обновлять библиотеку и augmented-by при подключении новых модулей.

Снимок A→B без сервера, endpoint, времени, module-set и content-id нельзя воспроизвести. Отсутствующее ребро ещё неоднозначнее: прямого расширения может не быть, но возможны устаревшая библиотека, отсутствие поддержки RFC 10035, фильтрация доступа или ошибочный отчёт.

Квитанция сохраняет аутентифицированного субъекта, решение контроля доступа, datastore, имена, редакции, пространства имён и исходные рёбра. Вычисленное клиентом замыкание записывается отдельно — с исходниками, версией обхода, ограничениями, ошибками и результатом. Тогда локальный вывод не выдают за заявление сервера.

Только чтение не означает безвредность

augmented-by не меняет конфигурацию, но может раскрыть дополнительные модули, функции или компоненты реализации. RFC 10035 предупреждает, что структура способна помочь целевой атаке, и рекомендует ограничить чтение авторизованными пользователями через контур управления доступом.

Два субъекта могут видеть разные картины. «Не возвращено» не равно «не существует». Поэтому утверждение об отсутствии связи обязано включать результат авторизации.

Список также увеличивает экземпляр YANG Library. Оператор поддерживает его свежесть, клиент управляет кешем. Разумная граница оставляет серверу короткое точное ребро, а глубокий анализ выполняют только те приложения, чьим решениям он нужен.

Граф модели не равен поведению сервера

Правильное A→B не доказывает, что клиент понял эффективную схему. Ему предстоит получить нужную редакцию B, разобрать её, при необходимости пройти B→C, учесть отклонения, features, datastore и область доступа.

Граф не доказывает и совпадение работающего сервера с моделью. RFC 8342 упорядочивает представления данных для управления сетью. Конфигурация, состояние, телеметрия и результат автоматизации показывают, что произошло в системе.

Полезное доказательство соединяет ребро, исходник, парсер, решение и итог. Running-Code Primacy не отвергает карту; оно не позволяет карте без наблюдения свидетельствовать о территории.

Источники