<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        mso-fareast-language:EN-GB;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal">I am using rtpengine to convert SRTP to RTP for audio and video and I am also doing this for reINVITEs.<o:p></o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve put the SDP content of an on-hold scenario at the end of this email.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal">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)<o:p></o:p></p>
<p class="MsoNormal">Chrome does some other interesting stuff with that, so I am investigating.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal">From §9.1.1.1<o:p></o:p></p>
<pre style="page-break-before:always"><span style="color:black">   These rules imply that setting the IP address in the c line to<o:p></o:p></span></pre>
<pre style="page-break-before:always"><span style="color:black">   0.0.0.0 will cause an ICE restart.  Consequently, ICE implementations<o:p></o:p></span></pre>
<pre style="page-break-before:always"><span style="color:black">   MUST NOT utilize this mechanism for call hold, and instead MUST use<o:p></o:p></span></pre>
<pre style="page-break-before:always"><span style="color:black">   a=inactive and a=sendonly as described in [<a href="http://tools.ietf.org/html/rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>].<o:p></o:p></span></pre>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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?<o:p></o:p></p>
<p class="MsoNormal">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.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Hugh<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what Linphone sent to rtpengine to put the call on hold.<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">v=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">o=447707319033 2969 189 IN IP4 10.X.X.X<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">s=Talk<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">t=0 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=audio 7078 RTP/AVP 124 111 110 0 8 101<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:124 opus/48000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:124 useinbandfec=1; usedtx=1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:111 speex/16000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:111 vbr=on<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:110 speex/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:110 vbr=on<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:101 telephone-event/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:101 0-15<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=sendonly<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=video 9078 RTP/AVP 103<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:103 VP8/90000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=sendonly<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what rtpengine sent to Chrome<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">v=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">o=447707319033 2969 189 IN IP4 10.X.X.X<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">s=Talk<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">t=0 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-lite<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=audio 0 RTP/SAVPF 124 111 110 0 8 101<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:124 opus/48000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:124 useinbandfec=1; usedtx=1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:111 speex/16000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:111 vbr=on<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:110 speex/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:110 vbr=on<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:101 telephone-event/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=fmtp:101 0-15<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=video 0 RTP/SAVPF 103<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:103 VP8/90000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what Chrome sent back – note the ICE syntax errors!<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">v=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">o=- 5839956538493318716 3 IN IP4 127.0.0.1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">s=-<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">t=0 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=msid-semantic: WMS FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=audio 0 RTP/SAVPF 0 8 101<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtcp:1 IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-ufrag:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-pwd:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=mid:audio<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:0 PCMU/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:8 PCMA/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:101 telephone-event/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:1220950669 cname:txfWFsmZxl5fElCV<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:1220950669 msid:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS 6bcb6a56-c38d-474a-9e1b-372dc4206754<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:1220950669 mslabel:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:1220950669 label:6bcb6a56-c38d-474a-9e1b-372dc4206754<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=video 0 RTP/SAVPF 103<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtcp:1 IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-ufrag:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-pwd:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=mid:video<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:103 VP8/90000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2854598716 cname:txfWFsmZxl5fElCV<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2854598716 msid:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS 2f5be791-cf7a-48cf-ac4b-8c060f606f78<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2854598716 mslabel:FS1XDFSCVuztEO87Lm7NEzuFX2EVnOYDP8VS<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2854598716 label:2f5be791-cf7a-48cf-ac4b-8c060f606f78<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">And this was sent back to Linphone. Linphone didn’t like it and cleared the call down.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">v=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">o=- 7461781248465050568 3 IN IP4 127.0.0.1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">s=-<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">t=0 0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=msid-semantic: WMS iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ice-lite<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=audio 0 RTP/AVP 0 8 101<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=mid:audio<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:0 PCMU/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:8 PCMA/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:101 telephone-event/8000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:974659196 cname:YOhAbnOYADFFMGYH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:974659196 msid:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc ad66954d-2fad-4f30-9169-684b95f33abc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:974659196 mslabel:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:974659196 label:ad66954d-2fad-4f30-9169-684b95f33abc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">m=video 0 RTP/AVP 103<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">c=IN IP4 0.0.0.0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=mid:video<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=rtpmap:103 VP8/90000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2605136941 cname:YOhAbnOYADFFMGYH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2605136941 msid:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc c759c13f-b992-402c-bf57-00046d1a1008<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2605136941 mslabel:iOUm0bgDPsb5B2riIq3JB1X3xkpkPhPgSRFc<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=ssrc:2605136941 label:c759c13f-b992-402c-bf57-00046d1a1008<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">a=inactive<o:p></o:p></span></p>
</div>
<hr>
<p class="MsoNormal"><span style="font-size:7.5pt;line-height:115%;font-family:
"Arial","sans-serif";mso-fareast-font-family:"Times New Roman";color:gray">This e-mail and any attachment
<span class="GramE">is</span> for <span class="SpellE">authorised</span> 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.</span></p>
</body>
</html>