Subject: [Ice] SDP rtcp attribute with trickle ICE

From: Christer Holmberg <[email-masked]>
Date: Tue, 12 Jan 2016 13:02:15 +0000

Hi,

RFC 5245 says the following:

                               "If the agent is utilizing RTCP, it MUST encode
                              the RTCP candidate using the a=rtcp attribute as defined in RFC 3605
                               [RFC3605]."

There is an ongoing discussion whether the rtcp attribute is required in case of trickle ICE, when an offer is sent without candidate information, the RTP port set to 9, and the RTP IP address set to 0.0.0.0.

Example:

                             a=rtcp: 9 IN IP4 0.0.0.0

In my opinion this is not needed, as there is no candidate to "encode", and it also conflicts with the suggested mechanism for indicating exclusive support of RTP/RTCP multiplexing (draft-holmberg-mmusic-mux-exclusive).

Regards,

Christer

---

From: Roman Shpount <[email-masked]>
Date: Tue, 12 Jan 2016 15:48:00 -0500

H All,

Cross-posting to MMUSIC, since this affects both RFC 5245bis and
draft-ietf-mmusic-ice-sip-sdp

RFC 5245 and draft-ietf-mmusic-ice-sip-sdp currently say the following:

   The default candidates are added to the SDP as the default
   destination for media.  For streams based on RTP, this is done by
   placing the IP address and port of the RTP candidate into the c and m
   lines, respectively.  *If the agent is utilizing RTCP, it MUST encode
   the RTCP candidate using the a=rtcp attribute as defined in RFC
3605 <https://tools.ietf.org/html/rfc3605>
   [RFC3605 <https://tools.ietf.org/html/rfc3605>].*  If RTCP is not
in use, the agent MUST signal that using
   b=RS:0 and b=RR:0 as defined in RFC 3556
<https://tools.ietf.org/html/rfc3556> [RFC3556
<https://tools.ietf.org/html/rfc3556>].

There is an ongoing discussion whether the rtcp attribute is required
in case of trickle ICE, when an offer is sent without candidate
information, the RTP port set to 9, and the RTP IP address set to
0.0.0.0.

Example:

                              a=rtcp: 9 IN IP4 0.0.0.0

According to Christer this is not needed, as there is no candidate to
“encode”, and it also conflicts with the suggested mechanism for
indicating exclusive support of RTP/RTCP multiplexing
(draft-holmberg-mmusic-mux-exclusive).

Furthermore, according to section 2.1 of RFC 3605:

   The RTCP attribute is used to document the RTCP port used for media
   stream, when that port is not the next higher (odd) port number
   following the RTP port described in the media line.

RFC 5245 overwrites the guideline from RFC 3605 and states that SDP rtcp
attribute MUST be present even when RTCP default candidate is not present
or when RTCP candidate is using port rtp+1, which is currently the the most
common scenario since sequential port is typically allocated for RTCP by
TURN.

I suggest changing the language in section 4.2
of draft-ietf-mmusic-ice-sip-sdp to:

   The default candidates are added to the SDP as the default
   destination for media.  For streams based on RTP, this is done by
   placing the IP address and port of the RTP candidate into the c and m
   lines, respectively.  *If the agent is utilizing RTCP and if RTCP *

*   candidate is present and not equal to the same address and *

*   the next higher port number of the RTP candidate, the agent MUST encode
   the RTCP candidate using the a=rtcp attribute as defined in RFC
3605 <https://tools.ietf.org/html/rfc3605>
   [RFC3605 <https://tools.ietf.org/html/rfc3605>].*  If RTCP is not
in use, the agent MUST signal that using
   b=RS:0 and b=RR:0 as defined in RFC 3556
<https://tools.ietf.org/html/rfc3556> [RFC3556
<https://tools.ietf.org/html/rfc3556>].

Regards,
_____________
Roman Shpount

On Tue, Jan 12, 2016 at 8:02 AM, Christer Holmberg <
[email-masked]> wrote:

>                                “If the agent is utilizing RTCP, it MUST
> encode
>
>                                [RFC3605].”
> There is an ongoing discussion whether the rtcp attribute is required in
> case of trickle ICE, when an offer is sent without candidate information,
> the RTP port set to 9, and the RTP IP address set to 0.0.0.0.
>
>
>
> Example:
>
>
>
>                              a=rtcp: 9 IN IP4 0.0.0.0
>
>
>
> In my opinion this is not needed, as there is no candidate to “encode”,
> and it also conflicts with the suggested mechanism for indicating exclusive
> support of RTP/RTCP multiplexing (draft-holmberg-mmusic-mux-exclusive).
>
>
>
> Regards,
>
>
>
> Christer
>
> _______________________________________________
> Ice mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/ice
>
>

---

From: 🔓Dan Wing <[email-masked]>
Date: Wed, 13 Jan 2016 10:52:38 -0500

On 12-Jan-2016 03:48 pm, Roman Shpount <[email-masked]> wrote: 
> H All,
> 
> Cross-posting to MMUSIC, since this affects both RFC 5245bis and draft-ietf-mmusic-ice-sip-sdp
> 
>    lines, respectively.  If the agent is utilizing RTCP, it MUST encode
>    the RTCP candidate using the a=rtcp attribute as defined in RFC 3605 <https://tools.ietf.org/html/rfc3605>
>    [RFC3605 <https://tools.ietf.org/html/rfc3605>].  If RTCP is not in use, the agent MUST signal that using
>    b=RS:0 and b=RR:0 as defined in RFC 3556 <https://tools.ietf.org/html/rfc3556> [RFC3556 <https://tools.ietf.org/html/rfc3556>].
> 
> According to Christer this is not needed, as there is no candidate to “encode”, and it also conflicts with the suggested mechanism for indicating exclusive support of RTP/RTCP multiplexing (draft-holmberg-mmusic-mux-exclusive).
> 
> RFC 5245 overwrites the guideline from RFC 3605 and states that SDP rtcp attribute MUST be present even when RTCP default candidate is not present or when RTCP candidate is using port rtp+1, which is currently the the most common scenario since sequential port is typically allocated for RTCP by TURN.
> 
> I suggest changing the language in section 4.2 of draft-ietf-mmusic-ice-sip-sdp to:
> 
>    lines, respectively.  If the agent is utilizing RTCP and if RTCP 
>    candidate is present and not equal to the same address and 
>    the next higher port number of the RTP candidate, 

One reason for the text in RFC5245 (to require a=rtcp, always) is to destroy the "port + 1" assumption of RTCP; it simply breaks too many times with NAT.  So, I would go for your proposed text if you removed "and not equal to the same address and next-higher port number of the RTP candidate"; that is, if you're using RTCP on any different port, the port number has to be explicitly signaled with a=rtcp.  

-d

> the agent MUST encode
>    the RTCP candidate using the a=rtcp attribute as defined in RFC 3605 <https://tools.ietf.org/html/rfc3605>
>    [RFC3605 <https://tools.ietf.org/html/rfc3605>].  If RTCP is not in use, the agent MUST signal that using
>    b=RS:0 and b=RR:0 as defined in RFC 3556 <https://tools.ietf.org/html/rfc3556> [RFC3556 <https://tools.ietf.org/html/rfc3556>].
> 
> Regards,
> _____________
> Roman Shpount
> 
> On Tue, Jan 12, 2016 at 8:02 AM, Christer Holmberg <[email-masked] <mailto:[email-masked]>> wrote:
> Hi,
> 
>  
> 
>                                “If the agent is utilizing RTCP, it MUST encode
> 
> In my opinion this is not needed, as there is no candidate to “encode”, and it also conflicts with the suggested mechanism for indicating exclusive support of RTP/RTCP multiplexing (draft-holmberg-mmusic-mux-exclusive).
> 
>  
> 
> Regards,
> 
>  
> 
> Christer
> 
> 
> [email-masked] <mailto:[email-masked]>
> https://www.ietf.org/mailman/listinfo/ice <https://www.ietf.org/mailman/listinfo/ice>
> 
> 
> mmusic mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/mmusic

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 13 Jan 2016 16:32:04 +0000

Hi Dan,

The case that raised the issue is when trickle ICE is used – and no ports are signalled to begin with, and the c= line contains port 9 and a 0.0.0.0 address. In my opinion there is no need for the RTCP attribute in that case.

Regards,

Christer

From: 🔓Dan Wing [mailto:[email-masked]]
Sent: 13 January 2016 17:53
To: Roman Shpount <[email-masked]>
Cc: [email-masked]; [email-masked]; Christer Holmberg <[email-masked]>; Marc Petit-Huguenin <[email-masked]>; Ari Keränen <[email-masked]>; [email-masked]
Subject: Re: [MMUSIC] [Ice] SDP rtcp attribute with trickle ICE

On 12-Jan-2016 03:48 pm, Roman Shpount <[email-masked]<mailto:[email-masked]>> wrote:
H All,

   the RTCP candidate using the a=rtcp attribute as defined in RFC 3605<https://tools.ietf.org/html/rfc3605>

   [RFC3605<https://tools.ietf.org/html/rfc3605>].  If RTCP is not in use, the agent MUST signal that using

   b=RS:0 and b=RR:0 as defined in RFC 3556<https://tools.ietf.org/html/rfc3556> [RFC3556<https://tools.ietf.org/html/rfc3556>].

Example:

                              a=rtcp: 9 IN IP4 0.0.0.0

-d

the agent MUST encode

   the RTCP candidate using the a=rtcp attribute as defined in RFC 3605<https://tools.ietf.org/html/rfc3605>

   [RFC3605<https://tools.ietf.org/html/rfc3605>].  If RTCP is not in use, the agent MUST signal that using

   b=RS:0 and b=RR:0 as defined in RFC 3556<https://tools.ietf.org/html/rfc3556> [RFC3556<https://tools.ietf.org/html/rfc3556>].

Regards,
_____________
Roman Shpount

On Tue, Jan 12, 2016 at 8:02 AM, Christer Holmberg <[email-masked]<mailto:[email-masked]>> wrote:
Hi,

Example:

                             a=rtcp: 9 IN IP4 0.0.0.0

Regards,

Christer

_______________________________________________
Ice mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/ice

_______________________________________________
mmusic mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/mmusic

---

From: 🔓Dan Wing <[email-masked]>
Date: Wed, 13 Jan 2016 11:39:32 -0500

> The case that raised the issue is when trickle ICE is used – and no ports are signalled to begin with, and the c= line contains port 9 and a 0.0.0.0 address. In my opinion there is no need for the…

Then you'll need a MUST to indicate "MUST signal using Trickle", right?

-d

>  
> Regards,
>  
> Christer
>   <>
> From: 🔓Dan Wing [mailto:[email-masked] <mailto:[email-masked]>] 
> To: Roman Shpount <[email-masked] <mailto:[email-masked]>>
> Cc: [email-masked] <mailto:[email-masked]>; [email-masked] <mailto:[email-masked]>; Christer Holmberg <[email-masked] <mailto:[email-masked]>>; Marc Petit-Huguenin <[email-masked] <mailto:[email-masked]>>; Ari Keränen <[email-masked] <mailto:[email-masked]>>; [email-masked] <mailto:[email-masked]>
> On 12-Jan-2016 03:48 pm, Roman Shpount <[email-masked] <mailto:[email-masked]>> wrote:
> H All,
>  
> [email-masked] <mailto:[email-masked]>
> https://www.ietf.org/mailman/listinfo/mmusic <https://www.ietf.org/mailman/listinfo/mmusic>

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 13 Jan 2016 16:42:03 +0000

I am not sure I understood you last input :)

From: 🔓Dan Wing [mailto:[email-masked]]
Sent: 13 January 2016 18:40
To: Christer Holmberg <[email-masked]>
Cc: Roman Shpount <[email-masked]>; [email-masked]; [email-masked]; Marc Petit-Huguenin <[email-masked]>; Ari Keränen <[email-masked]>; [email-masked]
Subject: Re: [MMUSIC] [Ice] SDP rtcp attribute with trickle ICE

On 13-Jan-2016 11:32 am, Christer Holmberg <[email-masked]<mailto:[email-masked]>> wrote:
Hi Dan,

-d

Regards,

Christer

From: 🔓Dan Wing [mailto:[email-masked]]
Sent: 13 January 2016 17:53
To: Roman Shpount <[email-masked]<mailto:[email-masked]>>
Cc: [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>; Christer Holmberg <[email-masked]<mailto:[email-masked]>>; Marc Petit-Huguenin <[email-masked]<mailto:[email-masked]>>; Ari Keränen <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>
Subject: Re: [MMUSIC] [Ice] SDP rtcp attribute with trickle ICE

Example:

                              a=rtcp: 9 IN IP4 0.0.0.0

-d

the agent MUST encode

Regards,
_____________
Roman Shpount

Example:

                             a=rtcp: 9 IN IP4 0.0.0.0

Regards,

Christer

---

From: 🔓Dan Wing <[email-masked]>
Date: Wed, 13 Jan 2016 11:50:30 -0500

> I am not sure I understood you last input :)

With existing proposed new text, lack of a=rtcp could be interpreted to mean:

  * RTCP on port+1
  * no RTCP at all

need to differentiate between those.  I like a=rtcp to differentiate between those, I think you're saying existence of a=trickle differentiates (or whatever the trickle SDP, I forget what it's supposed to be right now, sorry).

-d

> To: Christer Holmberg <[email-masked] <mailto:[email-masked]>>
> Cc: Roman Shpount <[email-masked] <mailto:[email-masked]>>; [email-masked] <mailto:[email-masked]>; [email-masked] <mailto:[email-masked]>; Marc Petit-Huguenin <[email-masked] <mailto:[email-masked]>>; Ari Keränen <[email-masked] <mailto:[email-masked]>>; [email-masked] <mailto:[email-masked]>
> On 13-Jan-2016 11:32 am, Christer Holmberg <[email-masked] <mailto:[email-masked]>> wrote:
> Hi Dan,
>

---

From: Roman Shpount <[email-masked]>
Date: Wed, 13 Jan 2016 12:00:52 -0500

On Wed, Jan 13, 2016 at 10:52 AM, 🔓Dan Wing <[email-masked]> wrote:

>
> One reason for the text in RFC5245 (to require a=rtcp, always) is to
> destroy the "port + 1" assumption of RTCP; it simply breaks too many times
> with NAT.  So, I would go for your proposed text if you removed "and not
> equal to the same address and next-higher port number of the RTP
> candidate"; that is, if you're using RTCP on any different port, the port
> number has to be explicitly signaled with a=rtcp.
>
>
I wanted to clarify one thing: if TURN is used in conjunction with ICE then
relay candidate is used as default.  This, I believe is recommended and the
most common ICE use case scenario. TURN server allocates RTCP on the RTP
port + 1. How would this break in case of NAT? On my service, for instance,
since TURN is used all SDP comes with a=rtcp pointing to rtp port+1. The
only time a=rtcp attribute is useful is when reflexive candidates are used
as default which is just the fraction of all the use cases.

Furthermore, presence or absence of a=rtcp attribute cannot be used to
determine if RTCP is present. b=RS:0 and b=RR:0 are supposed to be used for
this.
_____________
Roman Shpount

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 13 Jan 2016 17:01:12 +0000

Hi,

My suggestion of lack of a=rtcp is:

-          If an RTP non-9 port is provided, the RTCP port is RTP+1

-          If an RTP 9 (disabled) port is provided, the RTCP port is implicitly also disabled

There are other mechanisms to indicate that RTCP won’t be used to begin with.

Regards,

Christer

Sent: 13 January 2016 18:51

On 13-Jan-2016 11:42 am, Christer Holmberg <[email-masked]<mailto:[email-masked]>> wrote:
I am not sure I understood you last input :)

  * RTCP on port+1
  * no RTCP at all

-d

From: 🔓Dan Wing [mailto:[email-masked]]
Sent: 13 January 2016 18:40
To: Christer Holmberg <[email-masked]<mailto:[email-masked]>>
Cc: Roman Shpount <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>; [email-masked]<mailto:[email-masked]>; Marc Petit-Huguenin <[email-masked]<mailto:[email-masked]>>; Ari Keränen <[email-masked]<mailto:[email-masked]>>; [email-masked]<mailto:[email-masked]>
Subject: Re: [MMUSIC] [Ice] SDP rtcp attribute with trickle ICE

-d

Regards,

Christer

Example:

                              a=rtcp: 9 IN IP4 0.0.0.0

-d

the agent MUST encode

Regards,
_____________
Roman Shpount

Example:

                             a=rtcp: 9 IN IP4 0.0.0.0

Regards,

Christer

---

From: Ari Keränen <[email-masked]>
Date: Tue, 19 Jan 2016 14:08:21 +0000

Hi,

This seems like a good way forward.

Cheers,
Ari (as individual)

> On 13 Jan 2016, at 19:01, Christer Holmberg <[email-masked]> wrote:
> 
> Hi,
>

---

From: Roman Shpount <[email-masked]>
Date: Tue, 19 Jan 2016 11:02:32 -0500

Hi,

Do you think the text that I have suggested for section 4.2
 of draft-ietf-mmusic-ice-sip-sdp is enough:

Or do you think it need to have the language regarding RTP port 9 added as
well? Based on the language that I am proposing if RTCP ICE candidate is
not present, SDP rtcp attribute should not be present as well. This, of
cause would be further updated by the Christer's draft for RTCP MUX
required, which will state that SDP rtcp attribute can also be present when
RTCP ICE candidate is not present but RTCP MUX is required.

Regards,

_____________
Roman Shpount

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 20 Jan 2016 08:13:24 +0000

Hi Roman,

Your suggested text looks ok, but it does not solve my issue :) I think it should be clear that, if there is no RTCP candidate, the spec does not define usage of the SDP rtcp attribute.

Regards,

Christer

From: Roman Shpount [mailto:[email-masked]]
Sent: 19. tammikuuta 2016 18:03
To: Ari Keränen
Cc: Christer Holmberg; [email-masked]; 🔓Dan Wing; [email-masked]; Marc Petit-Huguenin; [email-masked]
Subject: Re: [MMUSIC] [Ice] SDP rtcp attribute with trickle ICE

Hi,

Do you think the text that I have suggested for section 4.2  of draft-ietf-mmusic-ice-sip-sdp is enough:

   the next higher port number of the RTP candidate, the agent MUST encode

Or do you think it need to have the language regarding RTP port 9 added as well? Based on the language that I am proposing if RTCP ICE candidate is not present, SDP rtcp attribute should not be present as well. This, of cause would be further updated by the Christer's draft for RTCP MUX required, which will state that SDP rtcp attribute can also be present when RTCP ICE candidate is not present but RTCP MUX is required.

Regards,

_____________
Roman Shpount

On Tue, Jan 19, 2016 at 9:08 AM, Ari Keränen <[email-masked]<mailto:[email-masked]>> wrote:
Hi,

Cheers,
Ari (as individual)

> On 13 Jan 2016, at 19:01, Christer Holmberg <[email-masked]<mailto:[email-masked]>> wrote:
>
> Hi,
>

---

From: Roman Shpount <[email-masked]>
Date: Wed, 20 Jan 2016 14:56:17 -0500

On Wed, Jan 20, 2016 at 3:13 AM, Christer Holmberg <
[email-masked]> wrote:

> Your suggested text looks ok, but it does not solve my issue :) I think it
> should be clear that, if there is no RTCP candidate, the spec does not
> define usage of the SDP rtcp attribute.
>
>
>
Well, in my proposed text "*if RTCP candidate is present* and not equal to
the same address and the next higher port number of the RTP candidate, the
agent MUST encode the RTCP candidate using the a=rtcp attribute". Do you
also want text saying that a=rtcp attribute MUST not be present of no RTCP
candidates are present and rtcp-mux is not used?
_____________
Roman Shpount

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 20 Jan 2016 20:09:36 +0000

Hi Roman,

>> Your suggested text looks ok, but it does not solve my issue :) I think it should be clear 
>> that, if there is no RTCP candidate, the spec does not define usage of the SDP rtcp attribute.
>
> Well, in my proposed text "if RTCP candidate is present and not equal to the same address and 
> the next higher port number of the RTP candidate, the agent MUST encode the RTCP candidate using the a=rtcp attribute". 
> Do you also want text saying that a=rtcp attribute MUST not be present of no RTCP candidates are present and rtcp-mux is not used?

I am not sure we need to say anything about mux.

When reading your text again, I now agree that it covers my case. I just hope it is clear enough :)

Perhaps, in the trickle ICE document, we could have a note somewhere clarifying that the RTCP candidate is not used when the RTP port is 9.

Regards,

Christer

---

From: Christer Holmberg <[email-masked]>
Date: Wed, 20 Jan 2016 20:12:02 +0000

Another, more administrative issue, is that we also would need to get this change into JSEP and trickle ICE. Unless I remember wrong, both of those specs currently references RFC 5245.

Regards,

Christer

-----Original Message-----
From: Ice [mailto:[email-masked]] On Behalf Of Christer Holmberg
Sent: 20 January 2016 22:10
To: Roman Shpount <[email-masked]>
Cc: Ari Keränen <[email-masked]>; [email-masked]; Marc Petit-Huguenin <[email-masked]>; [email-masked]; 🔓Dan Wing <[email-masked]>; [email-masked]
Subject: Re: [Ice] [MMUSIC] SDP rtcp attribute with trickle ICE

Hi Roman,

>> Your suggested text looks ok, but it does not solve my issue :) I 
>> think it should be clear that, if there is no RTCP candidate, the spec does not define usage of the SDP rtcp attribute.
>
> Well, in my proposed text "if RTCP candidate is present and not equal 
> to the same address and the next higher port number of the RTP candidate, the agent MUST encode the RTCP candidate using the a=rtcp attribute".

Regards,

Christer