chan_nms для Астериск

20 мая 2009, 14:40

CHAN_NMS - это драйвер канала для поддержки карт NMS Communications (которую купила компания Dialogic),  разрабатывающие  продукты Open Access с открытым кодом API, в которые входят карты E1/T1 с шиной PCI(-X), PCIe, и cPCI(e).

Скачать:

Какие возможности даёт использование этих карт в Астериск?


- Поддержка протоколов: PRI ISDN, SS7, и различных CAS;
- Контроль вызовов высокоуровневым драйвером канала, который поддерживает всевозможные сервисы и обеспечивает все требования операторских соединений;
- Использование G.729, G.723.1, и iLBC и транскодинг с помощью встроенных DSP;
- RTP поток напрямую из встроенных в карты портов Ethernet;
- Сертификация;
- бренд NMS можетбыть хорошим позитивным фактором, если вы планируете самостоятельный выпуск Астериск устройств.

Программное обеспечение выпущено под лицензией BSD (пункт 2), но всё остальное - под вашу ответственность, чтобы соответствовать всем остальным деталям лицензирования Астериск, программного обеспечения NMS, и лицензионным отчислениям за использование несвободных кодеков, которые могут быть применимы к вашему продукту и/или окружающей среде.

Скачаный проприетарный драйвер ядра - для платформы RedHat Enterprise Linux. Другие операционные системы семейства RedHat (CentOS) также прекрасно работают с ним в качестве бесплатной альтернативы RedHat Enterprise Linux.

В тестах использовалась 4-х портовая PRI карта CG6565, тестировалась в лабораторных условиях с E1 EuroISDN и T1 NI2 с АТС  различных брендов - Avaya, Samsung, Kvant. Использовалась следующая конфигурация:
- Asterisk версий 1.2 и 1.4.
- одна CG6565 карта с протоколом ISDN protocol на все транки. Указана производительность одной PCI карты до 8 транков, и сPCI - до 16-ти транков Е1. Детали протоколов настраиваются через конфигурационный файл NMS и содержат несколько возможностей для тюнинга.
- Для единого диал-плана Астериск контекст для входящих соединений указывается в конфигурационном файле канала.
- При указании синтаксиса для исходящих соединений можно выбрать конкретный транк или таймслот. Если не указано, будет выбираться первый свободный таймслот из любого доступного транка.

Представляемый канальный драйвер можно отнести по степени готовности к Альфа-версии. В последующих релизах планируется следующие возможности:
- Поддержка Астериск версии 1.6, и, возможно, CallWeaver и FreeSWITCH;
- поддержка нескольких карт одновременно;
- NFAS сетап;
- добавятся протоколы - CAS, разумеется SS7 и SIGTRAN;
- трансфер вызовов (перевод звонка);
- постановка на холд/снятие;
- посылка и приём номера блоком (оверлап);
- расширение числа настраиваемых параметров;
- различные сценарии и скрипты для самотестирования;
- CG6565 имеет порты Ethernet, таким образом возможности разгружать основной Ethernet канал через исходящий поток RTP расширяются.

Вот как это выглядит:

    -- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_PLACING_CALL
== chan_nms:670 timeslots_monitor: setting channel state to DIALING
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_CALL_PROCEEDING
== chan_nms:676 timeslots_monitor: call proceeded successfully
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_EXTENDED_CALL_STATUS_UPDATE, NCC_X_STATUS_INFO_PROGRESSDESCR
-- chan_nms:707 timeslots_monitor: Q.931 progress description: 8
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_REMOTE_ALERTING
== chan_nms:689 timeslots_monitor: setting channel state to RINGING
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_REMOTE_ANSWERED, NCC_ANSWER_VOICE
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_CALL_CONNECTED, NCC_CON_VOICE_BEGIN
== chan_nms:725 timeslots_monitor: setting channel state to UP
-- chan_nms.c:740 timeslots_monitor: calling adiRecordAsync() with format: 4; datalen: 160
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: ADIEVN_RECORD_STARTED, buf requested
-- NMS answered SIP/123-0a180478
-- chan_nms:1032 nms_indicate: indicating AST_CONTROL_SRCUPDATE - Source of media has changed
-- chan_nms:1054 nms_indicate: nothing to do
-- chan_nms.c:1092 nms_write: calling adiPlayAsync() with format: 4; length: 160
-- chan_nms.c:778 timeslots_monitor: userid 0; play underrun occured: 5
-- chan_nms:749 timeslots_monitor: record buffer requested 20001
-- chan_nms:1032 nms_indicate: indicating AST_CONTROL_SRCUPDATE - Source of media has changed
-- chan_nms:1054 nms_indicate: nothing to do
-- chan_nms:894 nms_hangup: entered
== chan_nms.c:897 nms_hangup: hangup NMS: Unknown
-- chan_nms:906 nms_hangup: calling nccDisconnectCall
-- chan_nms:919 nms_hangup: exiting
== Spawn extension (nms, 0200, 1) exited non-zero on 'SIP/123-0a180478'
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: ADIEVN_PLAY_DONE, Released , nbytes=38400
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: ADIEVN_RECORD_DONE, Released , nbytes=39280
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_CALL_DISCONNECTED
-- chan_nms.c:812 timeslots_monitor: Q.931 release cause: 16: Normal Clearing
-- chan_nms:820 timeslots_monitor: userid: 0; calling nccReleaseCall
-- chan_nms: ctahd: 0x80080005; userid: 0; Event: NCCEVN_CALL_RELEASED


Если хотите предложить помощь, или новую феатуру, или просто подискутировать - добро пожаловать в группу CHAN_NMS на  http://groups.google.com/group/chan-nms