|  | 34 |  | 
          
            |  | 35 | === Два режима поиска цели === | 
          
            |  | 36 |  | 
          
            |  | 37 | Существует два режима поиска цели вызова, различающиеся поведением в случае, когда маршрут был найден, но вызов завершился неудачей (типичный пример неудачного вызова - вызываемый абонент занят, и прокси-сервер получил ответ "486 Busy here"). Эти режимы конфигурируются чекбоксом "Прекратить поиск после нахождения маршрутов", расположенным на вкладке "Маршруты SIP" диалога конфигурации платы VE-01. По умолчанию чекбокс не отмечен, и в случае неудачного вызова прокси-сервер продолжает обработку исходного вызова, как если бы никаких совпадений в таблице маршрутов не было найдено. В описанном выше примере при вызове URI `sip:143@10.0.0.3` проски-сервер сначала в соответствии с имеющимся маршрутом отправит INVITE для URI `sip:143@10.0.0.1` в АТС1. Если же абонент 143 в АТС1 занят, и АТС1 вернет ответ "486 Busy here", прокси-сервер отправит INVITE для URI `sip:143@10.0.0.3` в АТС3, как если бы никакого маршрута в таблице маршрутов не было. | 
          
            |  | 38 |  | 
          
            |  | 39 | Обычно такое поведение не представляет собой проблемы, так как коммутатор, получив вызов несуществующего пользователя, вернет ответ с неуспешным кодом, и вызывающий абонент все равно услышит короткие гудки. Тем не менее, если описанное выше поведение по каким-либо причинам неприемлемо, можно отметить чекбокс "Прекратить поиск после нахождения маршрутов". В этом режиме в случае нахождения маршрута дальнейший поиск цели прокси-сервером прекращается независимо от результата вызова указанного в маршруте URI. Так, в приведенном выше примере после отправки INVITE для URI `sip:143@10.0.0.1` и получения ответа "486 Busy here" прокси-сервер сразу вернет ответ "486 Busy here" вызывающему абоненту. | 
          
            |  | 40 |  | 
          
            |  | 41 | == Продвинутое использование маршрутизации == | 
          
            |  | 42 |  | 
          
            |  | 43 | Рассмотренные выше примеры использования маршрутов SIP тривиальны и приведены для простоты понимания функционирования механизма маршрутизации. При этом именно подобные простые примеры наиболее часто встречаются в реальной жизни. Однако возможности использования маршрутов SIP не ограничиваются подобными простыми случаями. Далее рассматривается несколько более продвинутых примеров использования маршрутизации. | 
          
            |  | 44 |  | 
          
            |  | 45 | === Маршрутизация самому себе === | 
          
            |  | 46 |  | 
          
            |  | 47 | Вернемся к рассмотренному ранее случаю подключения к трем IP АТС, но предположим, что в блоке MC04-DSL-3U также имеются и собственные абоненты - несколько телефонных аппаратов, подключенных к шлюзу через канальные окончания FXS. Пусть их номера состоят из трех цифр и начинаются с цифры 2: | 
          
            |  | 48 |  | 
          
            |  | 49 | [[Image(dia3.png)]] | 
          
            |  | 50 |  | 
          
            |  | 51 | Для того чтобы номера вида 2XX обслуживались блоком локально, достаточно создать маршрут, направляющий вызов обратно в шлюз. Для этого в поле "Замена URI" маршрута в качестве домена можно указать собственный IP адрес платы VE-01, в данном примере "10.0.0.10". Также можно использовать loopback-адрес 127.0.0.1. Таким образом, для решения данной задачи добавим маршрут с регулярным выражением `^sip:(2..)@10.0.0.3$` и заменой URI `sip:\1@127.0.0.1`: | 
          
            |  | 52 |  | 
          
            |  | 53 | [[Image(ss2.jpg)]] | 
          
            |  | 54 |  | 
          
            |  | 55 | === Альтернативные маршруты === | 
          
            |  | 56 |  | 
          
            |  | 57 | До сих пор в рассматриваемых нами примерах предполагалось, что вызываемый URI либо совпадает с регулярным выражением одного из маршрутов, либо не совпадает ни с одним из них. Сейчас же мы рассмотрим случай, когда вызываемый URI совпадает с регулярными выражениями нескольких маршрутов. | 
          
            |  | 58 |  | 
          
            |  | 59 | Рассмотрим новый пример. Предположим, что в бухгалтерии предприятия работают главный бухгалтер, имеющий телефон с номером 102, и его заместитель, имеющий телефон с номером 105. Предположим также, что в конфигурации платы VE-01 созданы следующие маршруты: | 
          
            |  | 60 |  | 
          
            |  | 61 | [[Image(ss3.jpg)]] | 
          
            |  | 62 |  | 
          
            |  | 63 | Как нетрудно заметить, с регулярными выражениями обоих маршрутов совпадает один и тот же URI - `sip:111@192.168.1.67`. | 
          
            |  | 64 |  | 
          
            |  | 65 | //Примечание: используемый платой VE-01 прокси-сервер не позволяет создать несколько маршрутов с одним и тем же регулярным выражением. Чтобы обойти это ограничение регулярное выражение второго маршрута было изменено таким образом, чтобы, тем не менее, сохранить его смысл - с регулярным выражением должен совпадать только URI `sip:111@192.168.1.67`.// | 
          
            |  | 66 |  | 
          
            |  | 67 | Изображенная на рисунке конфигурация маршрутов работает следующим образом. При получении вызова URI `sip:111@192.168.1.67` прокси-сервер ищет в таблице маршрутов записи, с регулярными выражениями которых совпадает вызываемый URI. Так как вызываемый URI совпадает с регулярными выражениями обоих маршрутов, прокси-сервер последовательно выполняет вызовы найденных маршрутов, пока вызов не окажется успешным (пока вызываемый абонент не ответит на вызов, и прокси-сервер получит "200 OK") или пока не кончатся найденные маршруты. В данном примере сначала будет сформирован вызов URI `sip:102@127.0.0.1`, который поступит на телефон главного бухгалтера. Если он ответит на вызов, состоится разговор, и обработка вызова на этом завершится. Если же главбух отклонит вызов (например уже занят другим разговором, или включил режим "не беспокоить"), прокси-сервер, получив ответ "486 Busy here", перейдет к следующему маршруту и сформирует вызов URI `sip:105@127.0.0.1`, который поступит на телефон зама. | 
          
            |  | 68 |  | 
          
            |  | 69 | Обратите внимание, что сконфигурированные маршруты имеют разное значение параметра "Порядок", в результате чего вызов поступает сначала на номер 102, а потом - на номер 105. Если в первом маршруте изменить значение параметра "Порядок" с 0 на 2, порядок выполнения вызовов изменится на обратный. | 
          
            |  | 70 |  | 
          
            |  | 71 | === Параллельный вызов === | 
          
            |  | 72 |  | 
          
            |  | 73 | Описанное в предыдущем примере поведение прокси-сервера может быть изменено отметкой чекбокса "Параллельный вызов маршрутов", расположенного на вкладке "Маршруты SIP" диалога конфигурации платы VE-01. При его отметке найденные в таблице маршруты обрабатываются не последовательно, а параллельно (одновременно). Так, при получении вызова URI `sip:111@192.168.1.67` прокси сервер направит INVITE и на URI `sip:102@127.0.0.1`, и на URI `sip:105@127.0.0.1`, в результате чего телефоны главбуха и его зама будут звенеть одновременно. Разговор состоится при снятии трубки любого из телефонов, при этом другой аппарат звенеть перестанет. Данная конфигурация маршрутов работает подобно функции "Группы вызова". |