DUNDi

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:ByWFbOGKgGmZbM43BJHSZw@192.168.1.2/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].

Примечания

[править | править код]
  1. Digium General Peering Agreement Архивировано 28 августа 2008 года. (PDF)