DUNDi (англ. Distributed Universal Number Discovery — распределённое универсальное распознавание номеров) — протокол маршрутизации VoIP, который обеспечивает службу каталогов, похожую на ENUM.
DUNDi позволяет подключённым узлам делиться друг с другом информацией о плане нумерации. Может быть рассмотрен как P2P-реализация единой телефонной книги.
Протокол изобрёл Марк Спенсер, известный также разработкой Asterisk PBX. Синтаксис выдачи DUNDi-запроса может быть сразу использован для вызова в плане нумерации Asterisk.
Узлы
Для работы протокола, каждый DUNDi-клиент должен знать хотя бы ещё одного DUNDi-клиента. Так как DUNDi-клиенты принадлежат одной сети, они называются узлами. Также хоть один достижимый узел должен знать, как обеспечить требуемое расширение плана нумерации.
В конфигурации DUNDi есть ограничение на число последовательных запросов между узлами установкой TTL.
- TTL = 1 означает что только вы можете запрашивать узлы, другие не могут запрашивать дальше.
- TTL = n означает что опрашиваемые узлы могут перенаправить запрос другим им известным узлам n-1 раз.
Публикация расширений
Каждый узел DUNDi может публиковать свои расширения контекста[уточнить], например, можно подключиться к номерам E.164 или публиковать их.
Каждое публикуемое расширение (ряд расширений) имеет свой вес (чем вес ниже, тем выбор предпочтительней).
Примеры
В интерфейсе командной строки Asterisk можно проверить работу конфигурации DUNDi:
asterisk1*CLI> dundi lookup 301@priv bypass
1. 0 IAX2/priv:[email protected]/301 (EXISTS)
from 00:0c:29:d2:d8:ec, expires in 3600 s
DUNDi lookup completed in 113 ms
Приведённый DUNDi-запрос выдаёт PBX известные узлы для достижения расширения 301 сети «priv».
Ответ состоит из 6 частей:
- Используемый протокол связи IAX2.
- Контекстное имя «priv».
- ByW[…]HSZw — секретный ключ PBX, переадресующий на расширение 301 (меняется периодически).
- Адрес PBX — 192.168.1.2 (или domainname, должно быть достижимо стороной вызова)
- Расширение для звонка 301 (может отличаться от того, что вы запрашивали, то есть когда внешние звонки не разрешены внутреннему расширению)
- «EXISTS» говорит, что PBX публикует этот номер. Возможно, PBX публикует больше расширений, чем действительно подключено, так что гарантии достижимости все равно нет.
В порядке предотвращения перегрузки сети и чтобы сделать запросы быстрыми насколько возможно, вовлеченные узлы кешируют увиденные запросы. Из-за устаревания ключей каждый запрос имеет срок годности (по умолчанию — 1 час).
Когда нет контекста на запрос, DUNDi сбрасывается в контекст E.164. Это значит будет выдан обычный (международный) номер как 0031201234567. Для этого нужен узел, связанный хоть с одним узлом из E164 trust group. Узлы этой группы ограничиваются Digium GPA (Digium General Peering Agreement)[1].
Примечания
Ссылки