LwIP поддерживает Zeroconf?
Я вижу, что lwIP имеет некоторый код AutoIP (он же IPv4LL, он же RFC 3927), но я не могу сказать, что он делает что-то выше в стеке Zeroconf, а именно, mDNS и DNS-SD (с RFC 2782).
Итак, поддерживает ли lwIP обнаружение службы DNS-SD? Если нет, то будет ли легко переносить код из проекта, подобного Avahi (если это разрешено лицензированием)?
4 ответа
Нет, lwIP не поддерживает ни одну часть Zeroconf, кроме AutoIP. Я не смотрел на Avahi, но портирование Apples mDNSResponder на lwIP довольно просто. Есть один неприятный момент, когда вам нужно отодвинуть заголовки pbuf, чтобы получить доступ к заголовку IP, чтобы получить IP отправителя (я думаю, что "правильный" метод для этого находится в работе для lwIP, но AFAIK еще не выпущен),
С mDNSResponder вы получаете как рекламу услуг, так и обнаружение.
Я не могу комментировать LWIP-часть вашего вопроса (в последний раз, когда я использовал LWIP, у него даже не было поддержки IPv4LL), но вам может быть интересно узнать, что Apple открыла свой код mDNSResponder, доступный здесь: http://developer.apple.com/networking/bonjour
Интересной особенностью этой реализации является то, что они предоставляют уровень платформы VxWorks, который может лучше подходить для переноса на встроенную цель, чем библиотека Avahi.
На веб-сайте lwIP есть средство отслеживания задач со следующими тремя элементами (похоже, что они были добавлены примерно в 2010 году, примерно в то время, когда этот вопрос первоначально задавался):
- Добавьте одноразовые многоадресные DNS-запросы (.local) в dns.c
- Отмечено как выполненное, декабрь 2016 г. Он предоставляет подмножество функциональных возможностей ZeroConf. Это не полное решение, но может стать хорошей основой для дальнейшего развития.
- Создайте модуль "mDNSQuerier" для поддержки множественных ответов и непрерывных многоадресных DNS-запросов.
- Создание модуля многоадресного DNS-ответчика, позволяющего приложениям LwIP поддерживать разрешение имен узлов многоадресного DNS
- 28 августа 2015 года эти два последних билета были помечены как "Отмененные" с пометкой "Отменено, поскольку, похоже, никто не хочет работать над этим".
Вот очень маленький респондент mDNS, который довольно легко перенести на lwIP:
https://bitbucket.org/geekman/tinysvcmdns
Яблоки mDNSResponder все еще довольно тяжелый для очень маленьких систем (с точки зрения использования ОЗУ), поэтому, если требуется только базовая функциональность, эта может быть предпочтительнее.