[AsteriskBrasil] Duvida na implementação do SIP do Asterisk

Roniton Rezende Oliveira roniton em gmail.com
Quarta Dezembro 2 16:01:33 BRST 2009


Pessoal,



A RFC 3261 descreve o seguinte cenário para sinalização entre proxy´s:



Alice ---> Alice proxy (atlanta.com) ---> Bob proxy (biloxi.com) ---> Bob



Eliminando as mensagens '100 Trying' que não acrescentam nada e alguns
headers que também não são importantes temos:



1) INVITE Alice -> atlanta.com proxy



INVITE sip:bob em biloxi.com <sip%3Abob em biloxi.com> SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

To: Bob <sip:bob em biloxi.com <sip%3Abob em biloxi.com>>

From: Alice <sip:alice em atlanta.com <sip%3Aalice em atlanta.com>>;tag=1928301774


Contact: <sip:alice em pc33.atlanta.com <sip%3Aalice em pc33.atlanta.com>>



2) INVITE atlanta.com proxy -> biloxi.com proxy



INVITE sip:bob em biloxi.com <sip%3Abob em biloxi.com> SIP/2.0

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 ;received=192.0.2.1

To: Bob <sip:bob em biloxi.com <sip%3Abob em biloxi.com>>

From: Alice <sip:alice em atlanta.com <sip%3Aalice em atlanta.com>>;tag=1928301774


Contact: <sip:alice em pc33.atlanta.com <sip%3Aalice em pc33.atlanta.com>>



3) INVITE biloxi.com proxy -> Bob



Aqui o proxy do Bob consulta o registrar e determina que o Bob está em
bob em 192.0.2.4, mudando o Request-URI apropriadamente (mas mantendo o To:
original)



INVITE sip:bob em 192.0.2.4 <sip%3Abob em 192.0.2.4> SIP/2.0

Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1
;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 ;received=192.0.2.1

To: Bob <sip:bob em biloxi.com <sip%3Abob em biloxi.com>>

From: Alice <sip:alice em atlanta.com <sip%3Aalice em atlanta.com>>;tag=1928301774


Contact: <sip:alice em pc33.atlanta.com <sip%3Aalice em pc33.atlanta.com>>



O exemplo completo está no RFC. (http://www.faqs.org/rfcs/rfc3261.html) -
seção 24.2



É possível simular este comportamento no asterisk? É possível utilizar o
campo Contact do REGISTER como Request-URI para chamadas de um determinado
assinante?



Segue abaixo um exemplo ilustrando a situação:



1) Registro: Os headers To e From contém o 'public user id', que é o nome do
usuário, enquanto o Contact identifica efetivamente a localização do
usuário:



REGISTER sip:10.31.1.194 SIP/2.0

To: Rota_Oi <sip:rota_oi em 10.31.1.194 <sip%3Arota_oi em 10.31.1.194>>

From: Rota_Oi <sip:rota_oi em 10.31.1.194 <sip%3Arota_oi em 10.31.1.194>>;tag=456248


Contact: <sip:_trkgrp_1 em 192.168.10.4 <sip%3A_trkgrp_1 em 192.168.10.4>>
Expires: 7200



SIP/2.0 200 OK

To: Rota_Oi <sip:rota_oi em 10.31.1.194 <sip%3Arota_oi em 10.31.1.194>>;tag=2493k59kd


From: Rota_Oi <sip:rota_oi em 10.31.1.194 <sip%3Arota_oi em 10.31.1.194>>;tag=456248


Contact: <sip:_trkgrp_1 em 192.168.10.4 <sip%3A_trkgrp_1 em 192.168.10.4>>
Expires: 3600



- O IP 10.31.1.194 é o IP do Asterisk;

- O IP 192.168.10.4 é o IP do UA que controla o usuário 'rota_oi';



- Após o registro, o Asterisk sabe que as sequências discadas direcionadas
ao UA "Rota_Oi" devem ser encaminhadas para o endereço
sip:_trkgrp_1 em 192.168.10.4 <sip%3A_trkgrp_1 em 192.168.10.4>



2) Chamada originada em uma interface FXS (ex. usuário 1000 conectado à
interface FXS_5 com endereço IP 192.168.10.5), destinada para um número
externo (ex. +553121215252), acessível via rota_oi :



A) A placa FXS encaminha chamada para Asterisk:



INVITE sip:+553121215252 em 10.31.1.194 <sip%3A%2B553121215252 em 10.31.1.194>SIP/2.0

To: <sip:+553121215252 em 10.31.1.194
<sip%3A%2B553121215252 em 10.31.1.194>;user=phone>


From: <sip:1000 em 10.31.1.194 <sip%3A1000 em 10.31.1.194>;user=phone>;tag=1928301774


Contact: <sip:_fxs_5 em 192.168.10.5 <sip%3A_fxs_5 em 192.168.10.5>>



B) O Asterisk faz análise da sequência e determina que a chamada deve ser
encaminhada via Rota Oi. Consultando o registrar, determina o endereço do UA
que controla a rota_oi "_trkgrp_1 em 192.168.10.4 - Contact do Registro" e
encaminha a chamada:



INVITE sip:_trkgrp_1 em 192.168.10.4 <sip%3A_trkgrp_1 em 192.168.10.4> SIP/2.0

To: <sip:+553121215252 em 10.31.1.194
<sip%3A%2B553121215252 em 10.31.1.194>;user=phone>


From: <sip:1000 em 10.31.1.194 <sip%3A1000 em 10.31.1.194>>;tag=1928301774

Contact: <sip:_fxs_5 em 192.168.10.5 <sip%3A_fxs_5 em 192.168.10.5>>



Repare que o Request-URI contém o contact que identifica o UA "_trkgrp_1"
previamente registrado e o To: continua tendo o número de destino no formato
E.164, de maneira que a chamada continuaria sendo encaminhada normalmente.



É possível simular este comportamento no asterisk?


Obrigado,

Roniton Oliveira
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091202/a68e147a/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil