dns-sd extentions - russian
TRANSCRIPT
РАСШИРЕНИЕ ПРОТОКОЛА ОБНАРУЖЕНИЯ СЕРВИСОВ С ПОМОЩЬЮ ИНФОРМАЦИИ О КОНТЕКСТЕСтудент Нина Бучина
Руководитель Pieter J.L. Cuijpers
Дано
Беспроводная сенсорная сеть Сенсоры ограничены в ресурсах
Сервис-ориентированная архитектура Приложение=взаимодействующие сервисы
Сервисы изолированные, взаимозаменяемые
Один сервис – одно устройство
Автоматическое обнаружение сервисов Сообщение передаются широковещанием
Большое количество сетевых операций истощает батареи устройств
Дано
Беспроводная сенсорная сеть Сенсоры ограничены в ресурсах
Сервис-ориентированная архитектура Приложение=взаимодействующие сервисы
Сервисы изолированные, взаимозаменяемые
Один сервис – одно устройство
Автоматическое обнаружение сервисов Сообщение передаются широковещанием
Большое количество сетевых операций истощает батареи устройств
DNS (Domain Name System)
Типы записей: A, MX, PTR, SRV… PTR: Имя PTR ДругоеИмя
SRV: ИмяСервиса SRV АдресСервиса
DNS-SD (DNS-based Service
Discovery)
_type._protocol.domain PTR ServiceName.
_type._protocol.domain
ServiceName. _type._protocol.domain SRV service.domain:port
DNS-SD (DNS-based Service
Discovery)
_type._protocol.domain PTR ServiceName.
_type._protocol.domain
ServiceName. _type._protocol.domain SRV service.domain:port
DNS-SD (DNS-based Service
Discovery)
_type._protocol.domain PTR ServiceName.
_type._protocol.domain
ServiceName. _type._protocol.domain SRV service.domain:port
DNS-SD (DNS-based Service
Discovery)
_type._protocol.domain PTR ServiceName.
_type._protocol.domain
ServiceName. _type._protocol.domain SRV service.domain:port
Проблема (в DNS-SD)
_type._protocol.domain PTR ServiceName.
_type._protocol.domain
Три параметра поиска: Тип сервиса
Протокол
Домен
Множество похожих сервисов в сети =>
Множество ответов=>Большая нагрузка на сеть
Цель
Расширить список параметров для обнаружения сервисов Лучшая фильтрация
Уменьшение числа ответов и нагрузки на сеть
Дополнительные параметры поиска – контекст сервисов: расположение, состояние, ближайшие объекты, …
Все изменения – в рамках оригинального протокола DNS-SD
Широкая распространённость протокола
Обратная совместимость
Контекстные теги
Как закодировать контекст сервиса?
Пример: имеется сервис для сенсора с полной батареей в комнате 10а
Как закодировать требования клиента к сервису?
Пример: нужен сервис сенсора с полной батареей в комнате 10а
Контекстные теги
Как закодировать контекст сервиса?
Пример: имеется сервис для сенсора с полной батареей в комнате 10а
Назначить сервису теги:
room10a
fullBattery
Как закодировать требования клиента к сервису?
Пример: нужен сервис сенсора с полной батареей в комнате 10а
Булево выражение: fullBattery&room10a
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR
Tag to PTR
Conjunctions in PTR
Nested combinations
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR
Tag to PTR
Conjunctions in PTR
Nested combinations
Схема: Formula in PTR
Хранимые записи: Нет
Запрос: room10a&FullBattery||room2
room10a*fullBattery.room2
PTR?
room10a*fullBattery.room2 PTR
Service1
room10a*fullBattery.room2 PTR
Service2
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR Весь запрос в одном PTR-запросе
Tag to PTR
Conjunctions in PTR
Nested combinations
Схема: Tag to PTR
Хранимые записи:
Запрос: room10a&FullBattery||room2
room10a PTR?
fullBattery PTR?
room2 PTR?
room10a PTR Service1
fullBattery PTR Service1
room2 PTR Service2
room10a PTR Service1
fullBattery PTR Service1
room2 PTR Service2
Клиент фильтрует полученные записи на соответствие с формулой самостоятельно!
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR Весь запрос в одном PTR-запросе
Tag to PTR PTR-запись для каждого тега
Conjunctions in PTR
Nested combinations
Схема: Conjunctions in PTR
Хранимые записи:
Запрос: room10a&FullBattery||room2
fullBattery.room10a PTR?
room2 PTR?
fullBattery.room10a PTR Service1
room10a PTR Service1
fullBattery PTR Service1
room2 PTR Service2
fullBattery.room10a PTR Service1
room2 PTR Service2
Фильтрация ответов на клиенте необходима в случае использования отрицания в формуле
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR Весь запрос в одном PTR-запросе
Tag to PTR PTR-запись для каждого тега
Conjunctions in PTR PTR-запись для каждой конъюнкции в формуле
Nested combinations
Схема: Nested tags
combinations
Хранимые записи:
Указатели на имя,
Содержащее все теги
сервиса.
Клиент получает имя сервиса, ЛИБО полный контекст этого сервиса.
В последнем случае требуется ещё один DNS запрос для получения имени сервиса.
fullBattery.room10a PTR Service1
room10a PTR fullBattery.room10a
fullBattery PTR fullBattery.room10a
room2 PTR Service2
Схемы именования
Как выразить в DNS-сообщениях:
Сервис имеет теги room10a, fullBattery
Запрос сервисов с тегами fullBattery&room10a
Предложено несколько способов:
Formula in PTR Весь запрос в одном PTR-запросе
Tag to PTR PTR-запись для каждого тега
Conjunctions in PTR PTR-запись для каждой конъюнкции в формуле
Nested combinations PTR указывает на полный контекст
Количественная оценка схем
Критерии (Нефункциональные требования) Нагрузка на сеть (меньше-лучше)
Метрики: количество DNS-сообщений, размер DNS-сообщений
Объём памяти на хранение контекста (меньше-лучше)
Метрики: число байт на хранение контекста
Количество дополнительного кода (меньше-лучше)
Метрики: COSMIC
Максимальное количество тегов на сервис (больше-лучше)
Дополнительные операции
Результат оценки: рейтинг Лучшая схема получает 1 место, следующая – 2е и т.д. Сумма мест для разных критериев=итоговая оценка (меньше-
лучше)
Результаты оценки
0
0.5
1
1.5
2
2.5
3
3.5
4
Network
Operations
Code amountMemory usage
Number of tags
Formula in PTR
Tag to PTR
Conjunctions in PTR
Nested tags in PTR
Реализация
Основа: JmDNS
Библиотека реализующая DNS-SD на Java
Модификации:
Схемы именования
Публикация сервиса с набором тегов
Обнаружение сервиса с нужным контекстом при помощи булевого выражения
Опубликована:
http://dnssdext.net/