Кратко
- RFC 3528 разрешает принявшему обновление mesh-enhanced Directory Agent отправить
SrvAckсервисному агенту до асинхронной пересылки регистрации другим каталогам. Квитанция закрывает локальную операцию, а не распределённое распространение. - Удаление проходит через сохраняемое состояние tombstone, чтобы запоздалый старый вариант не воскресил запись. Принять удаление, разнести метку, перестать отвечать записью и физически очистить её — разные события, как различны регистрация, видимость и работа сервиса.
Запоздавшее сообщение проверяет качество истории. Если система помнит происхождение, версию и удаление, она распознаёт старое состояние и не даёт ему вернуть запись. Если остался лишь последний флаг «active», поздний пакет выглядит как новое настоящее.
RFC 3528 опубликован в апреле 2003 года как Experimental Protocol. Он добавляет к SLPv2 полную сетку Directory Agents по областям, прямую пересылку и anti-entropy. Его правила показывают: распределённый каталог — это последовательность квитанций, а не единый переключатель.
Первая квитанция принадлежит точке входа
Service Agent отправляет регистрацию в Directory Agent. DA, который принимает обновление, становится accept DA. Если он поддерживает mSLP, затем он передаёт состояние партнёрам, обслуживающим те же области.
Прямая пересылка асинхронна. Accept MDA вправе вернуть MSA сообщение SrvAck раньше, чем отправит Srv(De)Reg другому MDA.
Подтверждение не ложно. Оно доказывает решение конкретного каталога по конкретной нагрузке. Однако оно не наблюдало очереди партнёров, их индексы, последующие запросы или состояние указанного сервиса.
Если бы запись ждала каждого партнёра, один медленный узел блокировал бы всех авторов. Разделение сохраняет доступность пути записи. Цена — честное обозначение статуса: «принято здесь», а не «известно везде».
Квитанция должна связывать личность accept DA, аутентифицированного MSA, области, хеш содержимого, version timestamp, accept ID, политику и решение. Обобщённый success стирает субъект и границу.
Надёжное соединение не завершает ещё не начатую отправку
Партнёры держат постоянное надёжное упорядоченное соединение для всех общих областей. Оно сохраняет порядок потока и позволяет не подтверждать отдельным SrvAck каждую запись, полученную от peer.
Но свойство транспорта не доказывает передачу конкретного сообщения. Оно могло ещё ждать отправки, соединение могло прерваться, а расхождение — потребовать последующей anti-entropy.
После начального обмена accept DA напрямую пересылает новые обновления соответствующим партнёрам, пока не произойдёт сбой. Это один переход от точки приёма к peers, а не бесконтрольная цепочка повторов.
Поэтому доказательство составляют отдельно для каждого ожидаемого peer: его аутентифицированная личность, общие области, соединение, позиция обновления, исход отправки и более поздний frontier. Фраза «сетка подключена» слишком широка и слишком бедна.
Accept ID не превращается в общую хронологию
Accept ID состоит из URL принявшего DA и accept timestamp, монотонно растущего у этого DA. Обновления одного источника должны распространяться в данном порядке.
Другой accept DA ведёт другую последовательность. Обновления, принятые разными каталогами, могут приходить в любом взаимном порядке. Их числа нельзя складывать в единую сетевую шкалу.
MSA также назначает регистрации version timestamp. Он помогает выбрать более новую версию одной записи. Время прихода не годится: старая версия может задержаться и появиться после новой.
Версия отвечает, какое содержание новее. Accept ID отвечает, откуда и в каком порядке оно вошло. Время запроса отвечает, что видел читатель. Одно поле updated_at не способно сохранить все три отношения.
Документ предполагает одного обновляющего SA для каждой регистрации. Несколько писателей требуют дополнительного правила полномочий и разрешения конфликтов; mSLP его не предоставляет.
Summary Vector описывает полученную историю
Для anti-entropy агент хранит по каждому известному accept DA последний полученный accept timestamp. Summary Vector становится набором рубежей для независимых исходных потоков.
Партнёр просит состояния после указанных рубежей. Полный запрос охватывает также accept DAs, отсутствующие в векторе запроса. Выборочный запрос касается только перечисленных accept IDs.
Успешная выборочная синхронизация может вообще не проверить пропущенный источник. Значит, запись «anti-entropy completed» обязана сохранять режим и множество охвата.
Требуемые состояния передаются в порядке accept ID, после чего SrvAck отмечает завершение обработки запроса. Это подтверждение имеет другой причинный объект, чем исходный SrvAck для Service Agent.
Даже совпавшие векторы не являются проверкой здоровья. Каталоги могут идеально согласовать просроченную, ошибочную или указывающую на недоступный адрес запись. Согласие о заявлении не делает заявление истинным.
Tombstone защищает от воскрешения
При восстановлении регистрация переносится с оставшимся сроком жизни. Она не получает новый полный срок, иначе каждый обмен продлевал бы устаревшее объявление.
Дерегистрация сохраняется как deleted registration. Этот tombstone нужен, чтобы более старое состояние, пришедшее с опозданием, не воскресило удалённый сервис. После истечения исходной регистрации метку можно очистить.
Отсюда следует цепочка: принять удаление, передать tombstone партнёрам, исключить запись из ответа, дождаться окончания срока, удалить сохранённую метку. Времена этих событий могут различаться.
Tombstone — не доказательство мгновенного исчезновения у каждого наблюдателя. Это доказательство того, что конкретный каталог знает решение об удалении и способен отвергнуть более старую версию.
Полная запись содержит идентификатор, version timestamp, accept ID, флаг удаления, оставшийся срок, маршрут восстановления и результаты запросов. Тогда позднее сообщение можно оценить по истории, а не по порядку появления в журнале.
Область задаёт границы распространения
Все MDAs, обслуживающие одну область, образуют для неё полную сетку. Одно соединение между двумя партнёрами переносит состояния нескольких общих областей. MSA достаточно зарегистрироваться у набора MDAs, объединение областей которых покрывает его собственные области.
Следовательно, успех в одной области не говорит за каталоги вне неё. User Agent может выбрать другой DA или другую область и получить иной ответ, не опровергая локальную квитанцию.
Полная сетка выбрана ради простоты и надёжности. RFC указывает общий порядок — десятки MDAs или меньше, а не неограниченное масштабирование. Это характеристика конструкции, не измерение действующей сети.
Разделение родительской области на две дочерние меняет обязанность регистрации. Сервису, который раньше публиковался один раз, может понадобиться присутствие в обеих. Управление областями влияет на доступность поиска.
Авторизация у входа определяет масштаб ошибки
mSLP использует аутентификацию SLPv2. MDA следует аутентифицировать другие MDAs до peering и MSAs до приёма и передачи их обновлений; MSA следует аутентифицировать выбранный MDA.
Упорядоченное TCP-соединение не доказывает разрешённое членство. Валидная подпись сама по себе не даёт ключу права писать в этой области. Правильный формат не удостоверяет содержание.
Компрометация одного MDA может затронуть всю сетку, поскольку состояние распространяется. Механизм доступности одновременно расширяет последствия ошибочного допуска.
SLPv2 предупреждает, что bootstrap без заранее настроенной безопасности может потребовать некоторой «слепой веры». Распределение ключей и политика проверки остаются обязанностями развёртывания.
IANA закрепляет за Mesh-enhancement SLPv2 extension ID 0x0006 и ссылается на RFC 3528. Реестр определяет номер, но не подтверждает реализацию, включение, аутентификацию, сходимость или результат.
Исчезновение из каталога не завершает пользовательскую задачу
SA пишет в один DA, а UA позже выбирает DA и область для запроса. Для доказательства видимости сохраняются личность отвечающего DA, области, предикат, хеш ответа, версия, оставшийся срок и момент наблюдения.
Положительный ответ остаётся записью о местонахождении. Он не соединяется с endpoint, не проверяет протокол приложения, не выдаёт пользователю полномочия и не завершает операцию.
Цепочка продолжает доказательство через разрешение адреса, сетевую достижимость, handshake, специфическую проверку здоровья и результат приложения. Отрицательный ответ после удаления также не говорит, что удалённый endpoint перестал существовать.
История должна пережить текущее состояние
Сначала фиксируются версия и статус протокола, области, личность MSA, credential, trust policy и авторизация. Они связываются с хешем нагрузки, version timestamp, accept DA и accept ID.
Первый SrvAck остаётся неизменной локальной квитанцией. Последующие передачи, summary frontiers и anti-entropy сохраняются как отдельные события. Позднее знание не должно переписывать смысл раннего доказательства.
Жизненный цикл удаления заслуживает той же структуры: решение, tombstone, распространение, наблюдение и purge. Запросы и сервисные проверки затем закрывают внешнюю часть цепи.
Операторы каталогов отвечают за состояние, безопасность — за полномочия, владелец сервиса — за здоровье, приложение — за пользовательский результат. Аудит соединяет квитанции, не передавая первой из них чужие полномочия.
Граница доказательств
Эта Статья не называет реализацию, поставщика, оператора, сетку, агента, сервис, endpoint, регистрацию, развёртывание, инцидент, сбой, атаку или клиентский результат. Она не измеряет распространённость, размер, задержку, видимость или здоровье.
RFC 3528 рассматривается как Experimental Protocol апреля 2003 года, а не Internet Standard. Значения 200 секунд для keepalive и 300 секунд для timeout — документированные defaults, не конфигурация и не измерение действующей системы.
Реестры и метаданные удостоверяют документы и назначенные значения, но не поведение running code.
Заметки Heng Lu об авторитете и работающем коде раскрыты как редакционная перспектива. Они помогают ограничить смысл квитанции, не доказывая намерение IETF или факт эксплуатации.
Вывод узок: tombstone может остановить старую версию, но только отдельные наблюдения докажут распространение удаления, видимость, доступность и итог.
Источники
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1771.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2165.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2608.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2609.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2610.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2614.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3059.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3082.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3224.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3421.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3528.xml
- https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3832.xml
- https://datatracker.ietf.org/api/v1/doc/document/rfc3528/?format=json
- https://datatracker.ietf.org/doc/rfc3528/
- https://datatracker.ietf.org/doc/rfc3528/history/
- https://www.iana.org/assignments/svrloc-extensions/svrloc-extensions.xhtml
- https://www.rfc-editor.org/errata_search.php?rfc=3528
- https://www.rfc-editor.org/info/rfc3528
- https://www.rfc-editor.org/rfc/rfc3528.html
- https://www.rfc-editor.org/rfc/rfc3528.txt
- https://heng.lu/on-authority-belief-and-the-internets-addressing-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
