[sr-dev] RTPEngine in reINVITE/on-hold use case

Waite, Hugh hugh.waite at acision.com
Thu Jul 17 18:48:38 CEST 2014


Hi,
I am using rtpengine to convert SRTP to RTP for audio and video and I am also doing this for reINVITEs.
At the moment I am using Chrome on the SRTP side and Linphone on the RTP side. So far, Linphone has been the most stable for sending and receiving VP8 video calls.

Linphone does not do ICE, but Chrome does. I need to force all traffic through rtpengine (to encrypt/decrypt) so I use the "ICE=force" flag in both directions.

I've put the SDP content of an on-hold scenario at the end of this email.

When Linphone puts the call on hold, it sets the connection to "c=0.0.0.0" and the direction to "a=sendonly" in the reINVITE. However, it does keep the same valid port numbers on the m= lines.
RTPEngine processes this and sends SDP to Chrome that has "c=0.0.0.0", "a=ice-lite" and "a=inactive". The port numbers are set to 0 (disabled/rejected)
Chrome does some other interesting stuff with that, so I am investigating.

RFC5245 (ICE) §9 is all about subsequent offer-answer exchanges. In this 'on-hold' scenario, I don't believe there is any need to restart the ICE processing.
>From §9.1.1.1

   These rules imply that setting the IP address in the c line to

   0.0.0.0 will cause an ICE restart.  Consequently, ICE implementations

   MUST NOT utilize this mechanism for call hold, and instead MUST use

   a=inactive and a=sendonly as described in [RFC3264<http://tools.ietf.org/html/rfc3264>].
In a lite implementation, I think that the "a=ice-ufrag" and "a=ice-pwd" attributes need to be included (with the same values) and also the currently selected (active) candidate §9.1.1.1 & §9.1.3.2.

RTPEngine appears to have disabled the two media streams, rather than putting them on hold. Is this a deliberate choice or the best choice given the multiple possibilities of client implementations? And can this behaviour be improved?
If the call is taken off-hold later, I would prefer not to have to do the full ICE restart, including TURN, DTLS handshakes etc. etc. if it can be avoided.

Regards,
Hugh

This is what Linphone sent to rtpengine to put the call on hold.
v=0
o=447707319033 2969 189 IN IP4 10.X.X.X
s=Talk
c=IN IP4 0.0.0.0
t=0 0
m=audio 7078 RTP/AVP 124 111 110 0 8 101
a=rtpmap:124 opus/48000
a=fmtp:124 useinbandfec=1; usedtx=1
a=rtpmap:111 speex/16000
a=fmtp:111 vbr=on
a=rtpmap:110 speex/8000
a=fmtp:110 vbr=on
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendonly
m=video 9078 RTP/AVP 103
a=rtpmap:103 VP8/90000
a=sendonly

This is what rtpengine sent to Chrome
v=0
o=447707319033 2969 189 IN IP4 10.X.X.X
s=Talk
c=IN IP4 0.0.0.0
t=0 0
a=ice-lite
m=audio 0 RTP/SAVPF 124 111 110 0 8 101
a=rtpmap:124 opus/48000
a=fmtp:124 useinbandfec=1; usedtx=1
a=rtpmap:111 speex/16000
a=fmtp:111 vbr=on
a=rtpmap:110 speex/8000
a=fmtp:110 vbr=on
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=inactive
m=video 0 RTP/SAVPF 103
a=rtpmap:103 VP8/90000
a=inactive

This is what Chrome sent back - note the ICE syntax errors!
v=0
o=- 5839956538493318716 3 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS
m=audio 0 RTP/SAVPF 0 8 101
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:
a=ice-pwd:
a=mid:audio
a=inactive
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=ssrc:1220950669 cname:txfWFsmZxl5fElCV
a=ssrc:1220950669 msid:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS 6bcb6a56-c38d-474a-9e1b-372dc4206754
a=ssrc:1220950669 mslabel:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS
a=ssrc:1220950669 label:6bcb6a56-c38d-474a-9e1b-372dc4206754
m=video 0 RTP/SAVPF 103
c=IN IP4 0.0.0.0
a=rtcp:1 IN IP4 0.0.0.0
a=ice-ufrag:
a=ice-pwd:
a=mid:video
a=inactive
a=rtpmap:103 VP8/90000
a=ssrc:2854598716 cname:txfWFsmZxl5fElCV
a=ssrc:2854598716 msid:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS 2f5be791-cf7a-48cf-ac4b-8c060f606f78
a=ssrc:2854598716 mslabel:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS
a=ssrc:2854598716 label:2f5be791-cf7a-48cf-ac4b-8c060f606f78

And this was sent back to Linphone. Linphone didn't like it and cleared the call down.

v=0
o=- 7461781248465050568 3 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc
a=ice-lite
m=audio 0 RTP/AVP 0 8 101
c=IN IP4 0.0.0.0
a=mid:audio
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=ssrc:974659196 cname:YOhAbnOYADFFMGYH
a=ssrc:974659196 msid:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc ad66954d-2fad-4f30-9169-684b95f33abc
a=ssrc:974659196 mslabel:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc
a=ssrc:974659196 label:ad66954d-2fad-4f30-9169-684b95f33abc
a=inactive
m=video 0 RTP/AVP 103
c=IN IP4 0.0.0.0
a=mid:video
a=rtpmap:103 VP8/90000
a=ssrc:2605136941 cname:YOhAbnOYADFFMGYH
a=ssrc:2605136941 msid:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc c759c13f-b992-402c-bf57-00046d1a1008
a=ssrc:2605136941 mslabel:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc
a=ssrc:2605136941 label:c759c13f-b992-402c-bf57-00046d1a1008
a=inactive
________________________________
This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you for understanding.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20140717/cbbecc68/attachment-0001.html>


More information about the sr-dev mailing list