[OpenSER-Users] Openser 1.3 How to rewrite transport protocol from udp to tcp after redirect

Peter P GMX Prometheus001 at gmx.net
Thu Jan 17 18:46:17 CET 2008


When I send an INVITE as follows (with transport=UDP) but sent via TCP: 
(UA=10.5.3.22 internal, 82.135.xx.xxx external)
=====================
T 10.10.2.24:27838 -> 10.10.2.13:5060 [AP]
  INVITE sip:11111 at 10.10.2.13;transport=UDP SIP/2.0..Record-Route: 
<sip:88.217.xxx.x:5060:nat=yes;ftag=4b086b07;lr=on>..Via: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK3
  e88.e9631885.0..Via: SIP/2.0/UDP 
10.5.3.22:5060;received=82.135.xx.xxx;branch=z9hG4bK-d8754z-be756d81d31da419-1---d8754z-;rport=5060..Max-Forwards: 
69..Contact:
  <sip:6005 at 82.135.xx.xxx:5060>..To: 
<sip:11111 at my.openser.de>;transport=UDP..From: 
"6005"<sip:6005 at my.openser.de>;transport=UDP;tag=4b086b07..Call-ID: 
NjQxNjk3Z
  DczZDkzN2ZmMzI5MzdiNzhkMzdmZTg0YzM...CSeq: 2 INVITE..Allow: INVITE, 
ACK, CANCEL, OPTIONS, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, 
INFO..Content-Type: application/s
  dp..User-Agent: Zoiper rev.570..Content-Length: 319..Remote-Party-ID: 
8154711;party=calling;id-type=subscriber;screen=yes....v=0..o=Zoiper_user 
0 0 IN IP4
  10.5.3.22..s=Zoiper_user..c=IN IP4 10.5.3.22..t=0 0..m=audio 12000 
RTP/AVP 110 98 0 3 8 101..a=rtpmap:110 speex/8000..a=rtpmap:98 
iLBC/8000..a=fmtp:98 mode=30..a
  =rtpmap:0 PCMU/8000..a=rtpmap:3 GSM/8000..a=rtpmap:8 
PCMA/8000..a=rtpmap:101 telephone-event/8000..a=fmtp:101 0-15..a=sendrecv..

the 302 message is as follows
=====================
In this case it answers per UPD as I explained before when OpenSER
T 10.10.2.13:5060 -> 10.10.2.24:27838 [AP]
SIP/2.0 302 Moved Temporarily
FROM: "6005"<sip:6005 at my.openser.de>;tag=4b086b07;transport=UDP
TO: <sip:11111 at my.openser.de>;transport=UDP;tag=9cca2fa224
CSEQ: 2 INVITE
CALL-ID: NjQxNjk3ZDczZDkzN2ZmMzI5MzdiNzhkMzdmZTg0YzM
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 10.10.2.24;branch=z9hG4bK3e88.e9631885.0,SIP/2.0/UDP 
10.5.3.22:5060;received=82.135.xx.xxx;branch=z9hG4bK-d8754z-be756d81d31da419-1---d8754z-;rport=5060
CONTENT-LENGTH: 0..
SERVER: RTCC/2.0.6017.0..CONTACT: <sip:11111 at 10.10.2.13:5065;transport=UDP>

So CONTACT: <sip:11111 at 10.10.2.13:5065;transport=UDP> refers to UDP



When I send an INVITe with add_uri_param("transport=tcp");       
(UA=192.168.178.60 local, 217.24.xxx.xxx external)
=====================
T 10.10.2.24:19034 -> 10.10.2.13:5060 [AP]
  INVITE sip:11111 at 10.10.2.13;transport=tcp SIP/2.0..Record-Route: 
<sip:88.217.xxx.x:5060:nat=yes;ftag=60263e79;lr=on>..Via: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK4
  0d3.ce138151.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;received=217.24.xxx.xxx;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060..Max-Forwards: 
69..Cont
  act: <sip:6004 at 217.24.xxx.xxx:5060>..To: 
<sip:11111 at my.openser.de>..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZT
  c5MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 2 INVITE..Allow: INVITE, ACK, 
CANCEL, OPTIONS, BYE, NOTIFY, REFER, MESSAGE, OPTIONS..Content-Type: 
application/sdp..User-Agent:
   Zoiper rev.416..Content-Length: 380..Remote-Party-ID: 
8154712;party=calling;id-type=subscriber;screen=yes....v=0..o=Zoiper_user 
484683138 1181609789 IN IP
  4 192.168.178.60..s=Zoiper_user..c=IN IP4 192.168.178.60..t=0 
0..m=audio 12000 RTP/AVP 3 110 97 8 0 98 101..a=fmtp:97 
mode=30..a=fmtp:98 mode=20..a=fmtp:101  0-1
  5..a=rtpmap:3 GSM/8000..a=rtpmap:110 speex/8000..a=rtpmap:97 
iLBC/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:0 PCMU/8000..a=rtpmap:98 
iLBC/8000..a=rtpmap:101 telephone
  -event/8000..

the 302 message is as follows
=====================
T 10.10.2.13:5060 -> 10.10.2.24:19034 [AP]
SIP/2.0 302 Moved Temporarily..
FROM: "6004"<sip:6004 at my.openser.de>;tag=60263e79;transport=UDP
TO: <sip:11111 at my.openser.de>;tag=1013625314
CSEQ: 2 INVITE..
CALL-ID: YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...
MAX-FORWARDS: 70..
VIA: SIP/2.0/TCP 10.10.2.24;branch=z9hG4bK40d3.ce138151.0,SIP/2.0/UDP 
192.168.178.60:5060
;received=217.24.xxx.xxx;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060..
CONTENT-LENGTH: 0
SERVER: RTCC/2.0.6017.0
CONTACT: <sip:11111 at 10.10.2.13:5065;transport=tcp>....
##

So CONTACT: <sip:11111 at 10.10.2.13:5065;transport=tcp> refers to TCP

But then I get an Internal Server error 500 from OpenSER


=======================================================
Here is the complete sequence (ngrep) for the 2nd case
=======================================================
U 217.24.xxx.xxx:5060 -> 88.217.xxx.x:5060
  INVITE sip:11111 at my.openser.de SIP/2.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-272fe27654f4653a-1---d8754z-;rport..Max-Forwards: 
70..Contact
  : <sip:6004 at 192.168.178.60:5060>..To: <sip:11111 at my.openser.de>..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZTc5
  MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 1 INVITE..Allow: INVITE, ACK, CANCEL, 
OPTIONS, BYE, NOTIFY, REFER, MESSAGE, OPTIONS..Content-Type: 
application/sdp..User-Agent: Z
  oiper rev.416..Content-Length: 380....v=0..o=Zoiper_user 484683138 
1181609789 IN IP4 192.168.178.60..s=Zoiper_user..c=IN IP4 
192.168.178.60..t=0 0..m=audio 12000
   RTP/AVP 3 110 97 8 0 98 101..a=fmtp:97 mode=30..a=fmtp:98 
mode=20..a=fmtp:101  0-15..a=rtpmap:3 GSM/8000..a=rtpmap:110 
speex/8000..a=rtpmap:97 iLBC/8000..a=rtpm
  ap:8 PCMA/8000..a=rtpmap:0 PCMU/8000..a=rtpmap:98 
iLBC/8000..a=rtpmap:101 telephone-event/8000..
#
U 88.217.xxx.x:5060 -> 217.24.xxx.xxx:5060
  SIP/2.0 407 Proxy Authentication Required..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-272fe27654f4653a-1---d8754z-;rport=5060;received=217.24.11.
  190..To: 
<sip:11111 at my.openser.de>;tag=92ef15cda537c38acdb588058fd30c38.748e..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: YzZiNmJ
  kNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 1 
INVITE..Proxy-Authenticate: Digest realm="my.openser.de", 
nonce="478e68d5f3ba3bdacad52964091fe4a632835b6c"..Serve
  r: OpenSER (1.3.0-tls (x86_64/linux))..Content-Length: 0....
#
U 217.24.xxx.xxx:5060 -> 88.217.xxx.x:5060
  ACK sip:11111 at my.openser.de SIP/2.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-272fe27654f4653a-1---d8754z-;rport..To: 
<sip:11111 at my.openser.d
  e>;tag=92ef15cda537c38acdb588058fd30c38.748e..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0
  MGI...CSeq: 1 ACK..Content-Length: 0....
#
U 217.24.xxx.xxx:5060 -> 88.217.xxx.x:5060
  INVITE sip:11111 at my.openser.de SIP/2.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport..Max-Forwards: 
70..Contact
  : <sip:6004 at 192.168.178.60:5060>..To: <sip:11111 at my.openser.de>..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZTc5
  MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 2 INVITE..Allow: INVITE, ACK, CANCEL, 
OPTIONS, BYE, NOTIFY, REFER, MESSAGE, OPTIONS..Content-Type: 
application/sdp..Proxy-Authori
  zation: Digest 
username="6004",realm="my.openser.de",nonce="478e68d5f3ba3bdacad52964091fe4a632835b6c",uri="sip:11111 at my.openser.de",response="536feade179b4eb35
  f64e1eed75cf3e8",algorithm=MD5..User-Agent: Zoiper 
rev.416..Content-Length: 380....v=0..o=Zoiper_user 484683138 1181609789 
IN IP4 192.168.178.60..s=Zoiper_user..
  c=IN IP4 192.168.178.60..t=0 0..m=audio 12000 RTP/AVP 3 110 97 8 0 98 
101..a=fmtp:97 mode=30..a=fmtp:98 mode=20..a=fmtp:101  0-15..a=rtpmap:3 
GSM/8000..a=rtpmap:
  110 speex/8000..a=rtpmap:97 iLBC/8000..a=rtpmap:8 
PCMA/8000..a=rtpmap:0 PCMU/8000..a=rtpmap:98 iLBC/8000..a=rtpmap:101 
telephone-event/8000..
#interface: eth1 (10.10.0.0/255.255.0.0)
filter: (ip) and ( port 5060 )
####
T 10.10.2.24:19034 -> 10.10.2.13:5060 [AP]
  INVITE sip:11111 at 10.10.2.13;transport=tcp SIP/2.0..Record-Route: 
<sip:88.217.xxx.x:5060:nat=yes;ftag=60263e79;lr=on>..Via: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK4
  0d3.ce138151.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;received=217.24.xxx.xxx;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060..Max-Forwards: 
69..Cont
  act: <sip:6004 at 217.24.xxx.xxx:5060>..To: 
<sip:11111 at my.openser.de>..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZT
  c5MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 2 INVITE..Allow: INVITE, ACK, 
CANCEL, OPTIONS, BYE, NOTIFY, REFER, MESSAGE, OPTIONS..Content-Type: 
application/sdp..User-Agent:
   Zoiper rev.416..Content-Length: 380..Remote-Party-ID: 
8154712;party=calling;id-type=subscriber;screen=yes....v=0..o=Zoiper_user 
484683138 1181609789 IN IP
  4 192.168.178.60..s=Zoiper_user..c=IN IP4 192.168.178.60..t=0 
0..m=audio 12000 RTP/AVP 3 110 97 8 0 98 101..a=fmtp:97 
mode=30..a=fmtp:98 mode=20..a=fmtp:101  0-1
  5..a=rtpmap:3 GSM/8000..a=rtpmap:110 speex/8000..a=rtpmap:97 
iLBC/8000..a=rtpmap:8 PCMA/8000..a=rtpmap:0 PCMU/8000..a=rtpmap:98 
iLBC/8000..a=rtpmap:101 telephone
  -event/8000..
#
T 10.10.2.13:5060 -> 10.10.2.24:19034 [AP]
  SIP/2.0 100 Trying..FROM: 
"6004"<sip:6004 at my.openser.de>;tag=60263e79;transport=UDP..TO: 
<sip:11111 at my.openser.de>..CSEQ: 2 INVITE..CALL-ID: YzZiNmJkNTQ2MjI3ZT
  c5MWQ5Yjk4N2ZkYjg0MDE0MGI...MAX-FORWARDS: 70..VIA: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK40d3.ce138151.0,SIP/2.0/UDP 
192.168.178.60:5060;received=217.24.xxx.xxx;br
  
anch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060..CONTENT-LENGTH: 
0....
##
T 10.10.2.13:5060 -> 10.10.2.24:19034 [AP]
  SIP/2.0 302 Moved Temporarily..FROM: 
"6004"<sip:6004 at my.openser.de>;tag=60263e79;transport=UDP..TO: 
<sip:11111 at my.openser.de>;tag=1013625314..CSEQ: 2 INVITE..C
  ALL-ID: YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...MAX-FORWARDS: 
70..VIA: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK40d3.ce138151.0,SIP/2.0/UDP 192.168.178.60:5060
  
;received=217.24.xxx.xxx;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060..CONTENT-LENGTH: 
0..SERVER: RTCC/2.0.6017.0..CONTACT: <sip:11111 at 10.10.2.13
  :5065;transport=tcp>....
##
U 88.217.xxx.x:5060 -> 217.24.xxx.xxx:5060
  SIP/2.0 100 Giving a try..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport=5060;received=217.24.xxx.xxx..To: 
<sip:111
  11 at my.openser.de>..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 2 INVITE..Serv
  er: OpenSER (1.3.0-tls (x86_64/linux))..Content-Length: 0....
#
U 88.217.xxx.x:5060 -> 217.24.xxx.xxx:5060
  SIP/2.0 500 Internal Server Error..FROM: 
"6004"<sip:6004 at my.openser.de>;tag=60263e79;transport=UDP..TO: 
<sip:11111 at my.openser.de>;tag=78445986d6..CSEQ: 2 INVIT
  E..CALL-ID: 
YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...MAX-FORWARDS: 70..VIA: 
SIP/2.0/UDP 
192.168.178.60:5060;received=217.24.xxx.xxx;branch=z9hG4bK-d8754z-834
  61a97f67a9e27-1---d8754z-;rport=5060..CONTENT-LENGTH: 0..SERVER: 
RTCC/2.0.6017.0....
#
T 10.10.2.24:19034 -> 10.10.2.13:5060 [AP]
  ACK sip:11111 at 10.10.2.13;transport=tcp SIP/2.0..Via: SIP/2.0/TCP 
10.10.2.24;branch=z9hG4bK40d3.ce138151.0..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;ta
  g=60263e79..Call-ID: YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...TO: 
<sip:11111 at my.openser.de>;tag=1013625314..CSeq: 2 ACK..Max-Forwards: 
70..User-Agent: Open
  SER (1.3.0-tls (x86_64/linux))..Content-Length: 0....
#
U 217.24.xxx.xxx:5060 -> 88.217.xxx.x:5060
  ACK sip:11111 at my.openser.de SIP/2.0..Via: SIP/2.0/UDP 
192.168.178.60:5060;branch=z9hG4bK-d8754z-83461a97f67a9e27-1---d8754z-;rport..To: 
<sip:11111 at my.openser.d
  e>;tag=78445986d6..From: 
"6004"<sip:6004 at my.openser.de>;transport=UDP;tag=60263e79..Call-ID: 
YzZiNmJkNTQ2MjI3ZTc5MWQ5Yjk4N2ZkYjg0MDE0MGI...CSeq: 2 ACK..Content-
  Length: 0....





Iñaki Baz Castillo schrieb:
> On Thursday 17 January 2008 10:11:48 Peter P GMX wrote:
>
>   
>> As UM requests a different port (5065) in the 302 message, I cannot use
>> t_relay with TCP in the failure_route. With t_relay I have to submit the
>> whole address like
>> t_relay(tcp: dest_ip:port) and I cannot always predict the port in this
>> case.
>>     
>
> Could you show the received 302 from UM?
>
> I understand that it's something as:
>
>   SIP/2.0 302 Redirection
>   ...
>   Contact: <sip:other_user at 10.10.2.13:5065>;transport=TCP
>
> Is it?
>   
> And you say that sometime the "Contact" port is 5065 and sometimes 5060? or 
> there are more possible values?
> In case they are a fixed number of values you can do a very dirty trick:
>   
>   if ( $(ct{uri.port}) == "5065" )
>     t_relay("tcp:10.10.2.13:5065"
>   else if ( $(ct{uri.port}) == "5060" )
>     t_relay("tcp:10.10.2.13:5060"
>   
>
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kamailio.org/pipermail/users/attachments/20080117/fd9b4e2b/attachment.htm 


More information about the Users mailing list