[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