Налаштування dahdi в asterisk (витяг з керівництва по налаштуванню elf2-ae) - рішення на базі
Налаштування DAHDI в Asterisk (витяг з керівництва по налаштуванню ELF2-AE)
Для чіткості, введемо базові терміни:- Адаптер - плата, що встановлюється в слот PCI, що вводить один або кілька потоків (аналогових або цифрових) в PC.
- SPAN - діапазон канальних інтервалів (каналів, слотів), зіставляється порту пристрою в драйвері DAHDI. SPAN створюється драйвером відповідного пристрою (наприклад, драйвером адаптера Quasar, що вводить 2-8 портів E1), і конфігурується рядком "span =" у файлі конфігурації system.conf.
- Dynamic SPAN - діапазон канальних інтервалів (каналів, слотів), зіставляється порту пристрою в драйвері DAHDI. Dynamic SPAN реєструється і конфігурується рядком "dynamic =" у файлі конфігурації system.conf динамічно, при завантаженні конфігурації утилітою dahdi_cfg (в той час як SPAN реєструється при завантаженні драйвера адаптера).
Драйвер DAHDI виконує для Asterisk дві функції - надає дані і синхронізацію. Для Asterisk синхронізація необхідна в першу чергу для конференцій.
Синхронізація в DAHDI - один з найбільш тонких і важливих моментів в налаштуванні DAHDI і Asterisk. Правильна настройка DAHDI має на увазі вибір головного джерела синхронізації і вибір другорядних (резервних) джерел синхронізації.
Важливість настройки синхронізації обумовлена тим, що на рівні драйвера DAHDI, робота ведеться з потоками від пристроїв (голос - це безперервний потік даних), а не з пакетами (як в VoIP). Тобто при розходженні синхронізації між різними потоками, дані будуть рваними. Особливо це буде помітно при підключенні факсів / модемів. Темп, з яким відбуватимуться втрати (Skip) або повтори (Slip) голосових кадрів (фреймів) залежить від величини рассинхронизации потоків.
Синхронізація в DAHDI для каналу не настільки важливі тільки в випадках, якщо обраний канал відображений в систему як мережевий пристрій (рядок nethdlc в system.conf), або дані з каналу надходять в Asterisk (не провадиться крос-комутація каналів).
Для коректної роботи, драйверу DAHDI необхідний надійний ( "хороший") джерело синхронізації. Таким джерелом може виступати або апаратний пристрій, якому зіставляється (dynamic) SPAN, або внутрішній таймер PC.
Драйвер dahdi_dummy - це віртуальний адаптер (SPAN), що надає в DAHDI 0 каналів, сінхронізуємий від внутрішнього таймера PC.
Алгоритм вибору джерела синхронізації (майстра) драйвером DAHDI наступний:
1. На кожній ітерації (додавання SPAN, видалення SPAN, зміна стану SPAN) відбувається арбітраж.
Майстром стає перший (в порядку реєстрації) запущений (ініціалізований утилітою dahdi_cfg) SPAN без помилок, з не нульовим кількістю слотів (каналів).
2. Якщо немає SPAN'а, що задовольняє умові 1, майстром стає віртуальний SPAN драйвера dahdi_dummy (внутрішній таймер PC).
Сказане вище, означає, що:
1. Поле timing в рядку span =. не впливає на вибір майстра для DAHDI. Поле timing - рекомендація драйверу адаптера у виборі джерела синхронізації для адаптера.
2. Адаптери мають пріоритет вище, ніж пристрої dahdi_dynamic.
3. Пристрої dahdi_dynamic можуть бути як джерелом синхронізації, так і споживачами.
Тепер перейдемо до синхронізації TDMoE пристроїв (пристроїв, що обслуговуються драйверами dahdi_dynamic і dahdi_dynamic_eth). Драйвер dahdi_dynamic має свою систему таймування.
Вибір джерела синхронізації dahdi_dynamic здійснюється за наступним алгоритмом:
1. При завантаженні dahdi_dynamic, джерелом синхронізації dahdi_dynamic стає драйвер DAHDI.
Тобто синхронізація надходить від SPAN пристроїв (адаптерів) або dahdi_dummy4 (внутрішнього таймера PC).
2. При створенні нового Dynamic SPAN пристрою здійснюється пошук нового джерела синхронізації.
Робоча пристрій Dynamic SPAN (НЕ в статусі ALARM), з найменшим пріоритетом (не рівним 0) стає джерелом синхронізації для
dahdi_dynamic.
Також, цей пристрій (і тільки воно) може стати джерелом синхронізації для DAHDI.
3. Якщо в результаті арбітражу немає джерел синхронізації, джерелом для dahdi_dynamic стає DAHDI.
У идача даних з dahdi_dynamic в Ethernet проводиться по годинах dahdi_dynamic. Зі сказаного ясно, що для початку роботи ELF2-AE (dahdi_dynamic) необхідний "стартовий" імпульс, тобто необхідний драйвер dahdi_dummy або адаптер.
Налаштування синхронізації (таймування) TDMoE пристроїв здійснюється в поле "timing" рядки "dynamic =" конфігураційного файлу (system.conf). Чим нижче цифра - тим вище пріоритет. 0 означає не використовувати пристрій як джерело синхронізації dahdi_dynamic.
При значенні 0 в поле timing, TDMoE пристрій повинен підлаштовувати свій внутрішній годинник (свою синхронізацію) по вхідних TDMoE пакетам.
В разі неправильного встановлення джерел синхронізації (годин), можливі відкидання пакетів TDMoE (SkipErr), повтори пакетів TDMoE (SlipErr).
Загальне правило для синхронізації - в ланцюжку будь-якої довжини має виконуватися правило: ведучий повинен бути з'єднаний з веденим. Якщо це правило не виконується, то будуть відбуватися втрати (skip) або повтори (skip) фреймів / кадрів.