Hello,
I've been experimenting with Kamailio with ws and sip clients and could need a hand in getting a call between those two to work.
I have Kamailio 4.1.2 (using rtpproxy-ng instead of rtpproxy) on a CentOS 6.5 and a mediaproxy-ng running. I have clients wsclient@testers.com and gsclient@testers.com and I try to make call from wsclient to gsclient. The wsclient is a jssip client running on chrome and gsclient is a grandstream desk phone. My config file is the default one enhanced by online examples.
I use a html5 <audio> element for the media streams, and configured my jssip phone to accept audio options like this: var options = { 'eventHandlers': eventHandlers, 'mediaConstraints': {'audio': true, 'video': false } }; sipUA.call(callto, options);
I used the instructions from here: http://www.slideshare.net/crocodilertc/webrtc-websockets
What I get is gsclient ringing, and as I answer there is no audio and call hangs up in a few seconds. I guess this is a SDP problem, something between Kamailio and Mediaproxy-ng but SDP is not my strong point so I'd appreciate advice.
Question is where's my misconfiguration/problem? I would like to learn why this problem occurs and how to fix it rather than getting a solution right away, but please bear in mind I don't know much about SDP.
In Kamailio log I see: kamailio[27059]: ERROR: rtpproxy-ng [rtpproxy.c:1346]: rtpp_function_call(): proxy replied with error: Error rewriting SDP kamailio[27058]: ERROR: rtpproxy-ng [rtpproxy.c:1346]: rtpp_function_call(): proxy replied with error: Unknown call-id kamailio[27057]: ERROR: rtpproxy-ng [rtpproxy.c:1346]: rtpp_function_call(): proxy replied with error: Unknown call-id
Following are the INVITEs and 200 OKs from my SIP trace (1.1.1.1 is the ip of my Kamailio & mediaproxy-ng box and 2.2.2.2 is the public ip behind which both my clients are). The gsclient has port 5066.
******************************************************************************
U 2014/04/01 20:03:41.060009 1.1.1.1:5060 -> 2.2.2.2:5066 INVITE sip:gsclient@192.168.0.106:5066;transport=udp SIP/2.0. Record-Route: sip:1.1.1.1;r2=on;lr=on;nat=yes. Record-Route: sip:1.1.1.1;transport=ws;r2=on;lr=on;nat=yes. Via: SIP/2.0/UDP 1.1.1.1;branch=z9hG4bKb703.fbb259c1d8c17e163876ec760e086145.0. Via: SIP/2.0/WS kj59uak271em.invalid;rport=38986;received=2.2.2.2;branch=z9hG4bK9891267. Max-Forwards: 16. To: sip:gsclient@testers.com. From: sip:wsclient@testers.com;tag=hhcd99tmvm. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 INVITE. Contact: sip:wsclient@testers.com ;gr=urn:uuid:f6014564-88cb-4f57-9ae5-3b4336ef9db8;ob;alias=2.2.2.2~38986~5;alias=2.2.2.2~38986~5. Allow: ACK,CANCEL,BYE,OPTIONS,INVITE. Content-Type: application/sdp. Supported: path, outbound, gruu. User-Agent: JsSIP 0.3.0. Content-Length: 2211. . v=0. o=- 4897716268503406223 2 IN IP4 1.1.1.1. s=-. t=0 0. a=group:BUNDLE audio. a=msid-semantic: WMS vMh5vhUEQzvVKJYdqRkAuCcXVa2blgbEXARZ. m=audio 30028 RTP/SAVPF 111 103 104 0 8 106 105 13 126. c=IN IP4 1.1.1.1. a=candidate:2999745851 1 udp 2113937151 192.168.56.1 63341 typ host generation 0. a=candidate:2999745851 2 udp 2113937151 192.168.56.1 63341 typ host generation 0. a=candidate:3350409123 1 udp 2113937151 192.168.0.101 63342 typ host generation 0. a=candidate:3350409123 2 udp 2113937151 192.168.0.101 63342 typ host generation 0. a=candidate:4233069003 1 tcp 1509957375 192.168.56.1 0 typ host generation 0. a=candidate:4233069003 2 tcp 150995
T 2014/04/01 20:03:41.119806 2.2.2.2:38986 -> 1.1.1.1:5060 [A] ......
U 2014/04/01 20:03:41.159086 2.2.2.2:5066 -> 1.1.1.1:5060 SIP/2.0 488 Not Acceptable Here. Via: SIP/2.0/UDP 1.1.1.1;branch=z9hG4bKb703.fbb259c1d8c17e163876ec760e086145.0. Via: SIP/2.0/WS kj59uak271em.invalid;rport=38986;received=2.2.2.2;branch=z9hG4bK9891267. Record-Route: sip:1.1.1.1;r2=on;lr=on;nat=yes. Record-Route: sip:1.1.1.1;transport=ws;r2=on;lr=on;nat=yes. From: sip:wsclient@testers.com;tag=hhcd99tmvm. To: sip:gsclient@testers.com;tag=7875f08763872c34. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 INVITE. User-Agent: Grandstream GXP2000 1.2.2.26. Warning: 304 GS "Media type not available". Content-Length: 0. .
U 2014/04/01 20:03:41.159392 1.1.1.1:5060 -> 2.2.2.2:5066 ACK sip:gsclient@192.168.0.106:5066;transport=udp SIP/2.0. Via: SIP/2.0/UDP 1.1.1.1;branch=z9hG4bKb703.fbb259c1d8c17e163876ec760e086145.0. Max-Forwards: 16. To: sip:gsclient@testers.com;tag=7875f08763872c34. From: sip:wsclient@testers.com;tag=hhcd99tmvm. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 ACK. Content-Length: 0. .
U 2014/04/01 20:03:41.161085 1.1.1.1:5060 -> 2.2.2.2:5066 INVITE sip:gsclient@192.168.0.106:5066;transport=udp SIP/2.0. Record-Route: sip:1.1.1.1;r2=on;lr=on;nat=yes. Record-Route: sip:1.1.1.1;transport=ws;r2=on;lr=on;nat=yes. Via: SIP/2.0/UDP 1.1.1.1;branch=z9hG4bKb703.fbb259c1d8c17e163876ec760e086145.1. Via: SIP/2.0/WS kj59uak271em.invalid;rport=38986;received=2.2.2.2;branch=z9hG4bK9891267. Max-Forwards: 16. To: sip:gsclient@testers.com. From: sip:wsclient@testers.com;tag=hhcd99tmvm. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 INVITE. Contact: sip:wsclient@testers.com ;gr=urn:uuid:f6014564-88cb-4f57-9ae5-3b4336ef9db8;ob;alias=2.2.2.2~38986~5;alias=2.2.2.2~38986~5. Allow: ACK,CANCEL,BYE,OPTIONS,INVITE. Content-Type: application/sdp. Supported: path, outbound, gruu. User-Agent: JsSIP 0.3.0. Content-Length: 3136. . v=0. o=- 4897716268503406223 2 IN IP4 1.1.1.1. s=-. t=0 0. a=group:BUNDLE audio. a=msid-semantic: WMS vMh5vhUEQzvVKJYdqRkAuCcXVa2blgbEXARZ. m=audio 30028 RTP/AVP 111 103 104 0 8 106 105 13 126. c=IN IP4 1.1.1.1. a=fingerprint:sha-256 72:54:87:EC:D2:4C:D1:70:C2:FE:69:08:20:5C:92:1D:E0:EA:BD:45:09:E0:90:62:27:B6:34:60:54:E2:99:28. a=setup:actpass. a=mid:audio. a=sendrecv. a=rtpmap:111 opus/48000/2. a=fmtp:111 minptime=10. a=rtpmap:103 ISAC/16000. a=rtpmap:104 ISAC/32000. a=rtpmap:0 PCMU/8000. a=rtpmap:8 PCMA/8000. a=rtpmap:106 CN/32000. a=rtpmap:105 CN/16000. a=rtpmap:13 CN/8000. a=rtpmap:126 telephone-event/8000. a=maxptime:60. a=ssrc:3298511848 cnam
And here are the 200 OK messages when answering the call:
U 2014/04/01 20:03:46.049711 2.2.2.2:5066 -> 1.1.1.1:5060 SIP/2.0 200 OK. Via: SIP/2.0/UDP 1.1.1.1;branch=z9hG4bKb703.fbb259c1d8c17e163876ec760e086145.1. Via: SIP/2.0/WS kj59uak271em.invalid;rport=38986;received=2.2.2.2;branch=z9hG4bK9891267. Record-Route: sip:1.1.1.1;r2=on;lr=on;nat=yes. Record-Route: sip:1.1.1.1;transport=ws;r2=on;lr=on;nat=yes. From: sip:wsclient@testers.com;tag=hhcd99tmvm. To: sip:gsclient@testers.com;tag=fb215901a251c9a0. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 INVITE. User-Agent: Grandstream GXP2000 1.2.2.26. Contact: sip:gsclient@192.168.0.106:5066;transport=udp. Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK,MESSAGE. Content-Type: application/sdp. Supported: replaces, timer. Content-Length: 216. . v=0. o=gsclient 8000 8000 IN IP4 192.168.0.106. s=SIP Call. c=IN IP4 192.168.0.106. t=0 0. m=audio 5026 RTP/AVP 0 13. a=sendrecv. a=rtpmap:0 PCMU/8000. a=ptime:20. m=audio 0 RTP/SAVPF 111 103 104 0 8 106 105 13 126.
T 2014/04/01 20:03:46.051127 1.1.1.1:5060 -> 2.2.2.2:38986 [AP] .~.dSIP/2.0 200 OK. Via: SIP/2.0/WS kj59uak271em.invalid;rport=38986;received=2.2.2.2;branch=z9hG4bK9891267. Record-Route: sip:1.1.1.1;r2=on;lr=on;nat=yes. Record-Route: sip:1.1.1.1;transport=ws;r2=on;lr=on;nat=yes. From: sip:wsclient@testers.com;tag=hhcd99tmvm. To: sip:gsclient@testers.com;tag=fb215901a251c9a0. Call-ID: 1dluvk38g1j22fn96t4b. CSeq: 7237 INVITE. User-Agent: Grandstream GXP2000 1.2.2.26. Contact: sip:gsclient@192.168.0.106:5066;transport=udp. Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK,MESSAGE. Content-Type: application/sdp. Supported: replaces, timer. Content-Length: 216. . v=0. o=gsclient 8000 8000 IN IP4 192.168.0.106. s=SIP Call. c=IN IP4 192.168.0.106. t=0 0. m=audio 5026 RTP/AVP 0 13. a=sendrecv. a=rtpmap:0 PCMU/8000. a=ptime:20. m=audio 0 RTP/SAVPF 111 103 104 0 8 106 105 13 126.
******************************************************************************
cheers, Olli