= Пример настройки маршрутизации телефонных вызовов через сеть IP с резервированием через канал ТЧ = В этом примере рассмотрено применение маршрутизации вызовов SIP в плате VE-01 для организации телефонной связи через сеть IP с резервированием с помощью одного или нескольких каналов ТЧ. == Постановка задачи == === Дано === Имеется две станции - А и Б. На каждой из станций установлен блок MC04-DSL-3U с платами EM-04, FS-08 и VE-01. Между станциями организована сеть IP, а также один или несколько каналов ТЧ с сигнализацией АДАСЭ. Плата VE-01 станции А имеет адрес 192.168.1.67, плата VE-01 станции Б - 192.168.1.68. К портам плат FS-08 подключены телефонные аппараты абонентов. На станции А абоненты имеют 3-значные номера 1xx, на станции Б - 3-значные номера 5xx. К платам EM-04 подключены межстанционные каналы ТЧ. === Требуется === Необходимо организовать возможность абонентам станции А вызывать абонентов станции Б таким образом, чтобы при работающей сети IP вызовы передавались через сеть IP, а при отсутствии связи в сети IP вызовы передавались через канал(ы) ТЧ. == Конфигурация сети плат VE-01 == Для начала на вкладке "Настройки" диалога конфигурации платы VE-01 устанавливаем параметры сетевого подключения. На станции А устанавливаем IP адрес 192.168.1.67, на станции Б - адрес 192.168.1.68: [[Image(ss1.jpg)]] Здесь же устанавливаем режим канальной платы. == Конфигурация абонентов FXS == На вкладке "SIP окончания" диалога конфигурации плат VE-01 станций А и Б создаем по три канальных окончания FXS с номерами каналов 1, 2 и 3. При этом окончаниям станции А назначаем URI `111@192.168.1.67`, `112@192.168.1.67` и `113@192.168.1.67`, а окончаниям станции Б - `511@192.168.1.68`, `512@192.168.1.68` и `513@192.168.1.68`. В остальных конфигурационных параметрах канальных окончаний можно оставить значения по умолчанию. В результате таблица канальных окончаний SIP должна выглядеть следующим образом: [[Image(ss2.jpg)]] Теперь в таблице коммутации блоков необходимо соединить каналы 1, 2 и 3 плат VE-01 с каналами плат FS-08, используемых для подключения телефонных аппаратов абонентов. == Создание маршрута для вызовов через сеть IP == Настало время дать абонентам станции А возможность вызывать абонентов станции Б. Для начала создаем маршрут, направляющий вызовы абонентов станции Б на станцию Б через сеть IP. Для этого на вкладке "Маршруты SIP" конфигурации платы VE-01 станции А добавляем маршрут с параметрами, показанными на рисунке: [[Image(ss3.jpg)]] После нажатия "OK" и записи конфигурации в плату VE-01 проверим работу созданной нами конфигурации. Для этого на станции А снимем трубку любого телефонного аппарата и наберем номер 511. Телефонный аппарат 511 на станции Б должен зазвенеть. Работает это следующим образом. После набора номера 511 на телефонном аппарате станции А канальное окончание FXS платы VE-01 формирует URI, на который направляет вызов, добавляя к набранному номеру "511" свой собственный домен "192.168.1.67". В результате получается URI `511@192.168.1.67`. Вызов этого URI передается прокси-серверу платы. Прокси-сервер ищет совпадение вызываемого URI с регулярным выражением маршрута в таблице маршрутизации. Так как URI `511@192.168.1.67` совпадает с регулярным выражением созданного нами маршрута, вызываемый URI заменяется значением поля "Замена URI" маршрута, при этом вместо "\1" подставляется значение группы "(5..)" регулярного выражения. В результате замены получается URI `511@192.168.1.68`, и прокси-сервер направляет вызов на адрес станции Б. == Конфигурация канального окончания АДАСЭ как резервного канала == На вкладке "SIP окончания" диалога конфигурации плат VE-01 станций А и Б создаем канальное окончание АДАСЭ. При этом на станции А присваиваем ему SIP URI с доменом 192.168.1.67, на станции Б - с доменом 192.168.1.68. Имя пользователя SIP URI в данном случае значения не имеет, но оно не должно совпадать ни с одним из существующих номеров. На станции А дополнительно устанавливаем конфигурационный параметр "Рег. выражение вызова" в значение "!^5..$", что разрешит канальному окончанию принимать вызовы номеров станции Б. В остальных конфигурационных параметрах можно оставить значения по умолчанию: [[Image(ss4.jpg)]] Если межстанционных каналов больше одного, созданное канальное окончание можно клонировать на другие каналы необходимое число раз. Теперь в таблице коммутации блоков необходимо соединить каналы только что созданных канальных окончаний АДАСЭ плат VE-01 с каналами портов плат EM-04, используемых для подключения межстанционных каналов ТЧ. == Создание маршрута для резервирования через канал ТЧ == Добавим маршрут, благодаря которому будет осуществляться резервная связь через канал ТЧ в случае отсутствия связи через сеть IP. Для этого на вкладке "Маршруты SIP" конфигурации платы VE-01 станции А добавим маршрут с параметрами, изображенными на рисунке: [[Image(ss5.jpg)]] Обратите внимание, что в отличие от маршрута, созданного нами ранее, поле "Порядок" имеет значение 1, так как нам важен порядок, в котором прокси-сервер будет проверять маршруты в таблице. //Примечание: используемый платой VE-01 прокси-сервер не позволяет создать несколько маршрутов с одним и тем же регулярным выражением. Чтобы обойти это ограничение регулярное выражение было изменено таким образом, чтобы, тем не менее, сохранить его смысл - с регулярным выражением должны совпадать вызовы номеров 5XX, принадлежащих станции Б.// В поле "Замена URI" создаваемого маршрута в качестве домена указан адрес loopback-интерфейса 127.0.0.1, в результате чего вызов, совпадающий с регулярным выражением этого маршрута, будет снова направлен в свою собственную плату. После добавления маршрута таблица маршрутов должна выглядеть так: [[Image(ss6.jpg)]] == Проверка работы резервирования связи через канал ТЧ == После добавления второго маршрута и записи конфигурации в плату VE-01 на станции А поставленная задача решена. Теперь осталось проверить работу созданной конфигурации и убедиться, что вызовы проходят как при наличии, так и при отсутствии связи через сеть IP. Для начала еще раз проверим, что при наличии связи в сети IP вызовы выполняются по сети IP. Для этого с любого телефонного аппарата станции А вызовем номер абонента станции Б. После установки соединения откроем вкладку "SIP окончания" конфигурации платы VE-01 любой из станций и убедимся, что канальное окончание АДАСЭ свободно: [[Image(ss7.jpg)]] Теперь положим трубки телефонных аппаратов и имитируем нарушение связи в сети IP. Для этого в веб-интерфейсе любой из станций откроем вкладку "Ethernet", под-вкладку "Порты", найдем строку, соответствующую установленной плате VE-01 и поставим отметку чекбокса в столбце "Блокировка порта", лишив таким образом плату VE-01 связи через сеть IP: [[Image(ss8.jpg)]] Теперь снова выполним вызов абонентом станции А абонента станции Б. Несмотря на отсутствие связи через сеть IP, соединение все равно произойдет, хотя на выполнение вызова потребуется заметно больше времени. Убедимся, что на этот раз в соединении участвует межстанционный канал ТЧ, снова открыв вкладку "SIP окончания" в конфигурации платы VE-01: [[Image(ss9.jpg)]] Как был выполнен вызов в последнем эксперименте? После набора номера 511 абонентом станции А прокси-сервер станции А получил вызов URI `sip:511@192.168.1.67`. Прокси-сервер начал выполнять поиск этого URI в таблице маршрутов. Первым был проверен маршрут с порядком 0, в результате чего был сформирован вызов URI `sip:511@192.168.1.68`. Однако из-за отсутствия связи в сети IP этот вызов был неудачным (прокси-сервер не получил никакого ответа от хоста 192.168.1.68). Поэтому прокси-сервер продолжил поиск совпадений в таблице маршрутов. Регулярное выражение следующего маршрута в таблице также совпало с URI `sip:511@192.168.1.67`, в результате чего был сформирован вызов URI `sip:511@127.0.0.1`. Так как адрес 127.0.0.1 является loopback-адресом, прокси-сервер отправляет вызов сам себе. Однако вновь полученный вызов URI `sip:511@127.0.0.1` уже не совпадает с регулярными выражениями маршрутов, и вызов передается канальным окончаниям SIP-шлюза. Вызываемый номер 511 совпадает с регулярным выражением канального окончания АДАСЭ, в результате канальное окончание АДАСЭ принимает и обслуживает наш вызов. //Примечание: для правильной работы описанной схемы резервирования требуется определенная установка конфигурационных параметров прокси-сервера в файле `/etc/repro.config` платы VE-01 станции А. А именно, параметр `ParallelForkStaticRoutes` должен быть установлен в значение `false`. Именно такое значение установлено по умолчанию в платах VE-01, однако стоит в этом убедиться, если что-то работает неправильно.// == Дальнейшие улучшения == Описанное выше решение поставленной задачи дано как иллюстрация использования маршрутов SIP. В нем намеренно опущены некоторые несущественные для понимания сути решения моменты, которые, однако, в реальной жизни бывают полезны. Поэтому, хотя сделанная конфигурация полностью решает поставленную задачу, она может быть дополнительно улучшена. === Регулярное выражение номера канальных окончаний FXS === Полезно установить канальным окончаниям FXS конфигурационный параметр "Рег. выражение номера" чтобы вызов выполнялся сразу после набора нужного числа цифр. Это сократит ожидание абонентом соединения, которое в случае отсутствия связи по сети IP и без того значительное. В простейшем случае, если все набираемые номера состоят из трех цифр, параметру "Рег. выражение номера" можно установить значение "..." (три точки). === Регулярное выражение набора канального окончания АДАСЭ === Канальное окончание АДАСЭ станции Б принимает из канала номер вызываемого абонента. При этом критерием окончания номера является таймаут, что вносит свой вклад в общую задержку установки соединения. Так как известно, что номера станции Б 3-значные, полезно установить канальному окончанию АДАСЭ станции Б конфигурационный параметр "Рег. выражение набора" в значение "...".