2015-09-15 2 views
0

У меня есть несколько простых конечных точек SIP, которые могут быть зарегистрированы на бэкэнд-регистраторах SIP. Они могут быть настроены для регистрации только на одном из двигателей прецессии вызова. Я хочу использовать Kamailio для ретрансляции запросов REGISTER (и позже INVITE) на сервер.Как настроить Kamailio как простое реле

До сих пор у меня есть следующий CONFIG

route[REGISTRAR] { 
     if (is_method("REGISTER")){ 
       rewritehost("1.2.3.4"); 
       xlog("Registering $(fu{uri.user}) with 1.2.3.4\n"); 
       $var(frst) = "sip:" + $(fu{uri.user}) +"@1.2.3.4"; 
       $var(scnd) = "sip:" + $(fu{uri.user}) +"@2.3.4.5"; 
       uac_replace_from("$var(frst)"); 
       uac_replace_to("$var(frst)"); 
       if(!t_relay_to_tcp("1.2.3.4","5060")) { 
         rewritehost("2.3.4.5"); 
         uac_replace_from("$var(scnd)"); 
         uac_replace_to("$var(scnd)"); 
         xlog("Registering $(fu{uri.user}) with 2.3.4.5\n"); 
         if(!t_relay_to_tcp("2.3.4.5","5060")) { 
           sl_reply_error(); 
         } 
       } 
       exit; 
     } 
    else return; 
} 

Этот маршрут [REGISTRAR] вызывается из основной маршрутизации запроса SIP. Если 1.2.3.4 является UP моими регистрами конечных точек тестирования и доступны для вызова от других конечных точек (хотя мне также необходимо работать с INVITE из конечной точки тестирования). Но когда 1.2.3.4 не работает, я получаю

ERROR: <core> [tcp_main.c:4249]: tcpconn_main_timeout(): connect 1.2.3.4:5060 failed (timeout) 

в/var/log/syslog. Я думал, что t_relay_to_tcp терпит неудачу, я могу повторить манипуляции с заголовками From и To и передать все на 2.3.4.5, но этого не происходит.

Возможно, из-за асинхронного характера передачи - сценарии kamailio идут дальше, в то время как ретранслированная сессия tcp висит в какой-то обратной линии.

Как отредактировать маршрут [REGISTRAR] для передачи на 2.3.4.5 в случае тайм-аута tcp?

Возможно, вся идея передачи сообщений таким образом неправильная?

На некоторых форумах показаны примеры регистрации конечных точек на самом камалио, но это меня не устраивает. Я считаю, что kamailio достаточно силен, чтобы решить мою проблему.

ответ

0

Похоже, что Kamailio не работает таким образом. Поэтому я изменил свою конфигурацию следующим образом:

route[REGISTRAR] { 
     if (is_method("REGISTER")){ 
       rewritehost("1.2.3.4"); 
       xlog("Registering $(fu{uri.user}) with 1.2.3.4\n"); 
       $var(frst) = "sip:" + $(fu{uri.user}) +"@1.2.3.4"; 
       uac_replace_from("$var(frst)"); 
       uac_replace_to("$var(frst)"); 
       t_on_failure("REGISTERBACKUP");   
       t_relay_to_tcp("1.2.3.4","5060"); 
     } 
     else return; 

failure_route[REGISTERBACKUP] { 
    rewritehost("2.3.4.5"); 
    xlog("Registering $(fu{uri.user}) with 2.3.4.5\n"); 
    #Edited to relay to 2.3.4.5 
    t_relay_to_tcp("2.3.4.5","5060"); 
} 

Когда 1.2.3.4 сбрасывает мои регистры конечных точек на 2.3.4.5. Когда 1.2.3.4 вверх, конечно, регистрируется на нем.

Смежные вопросы