Subject: [AVTCORE] Update to RFC5285 allowing both one and two bytes header extensions in the same RTP packet

From: "Roni Even" <[email-masked]>
Date: Fri, 11 Sep 2015 11:13:02 +0300

Hi,

At IETF94 there was a consensus to allow mixing of one byte and two bytes
header extensions in the same RTP packet.  I volunteered to do the update to
RFC5285.

The issue I have s how to pack both one and two bytes in the same RTP
packet.

Currently the extension header (as specified by the profile) is 0xBEDE for
one byte only headed extension and 0x100 followed by 4 bits called appbits
for the two bytes header extension 

"The appbits field is 4 bits that are application-dependent and may be

   defined to be any value or meaning, and are outside the scope of this

   specification.  For the purposes of signaling, this field is treated

   as a special extension value assigned to the local identifier 256.

   If no extension has been specified through configuration or signaling

   for this local identifier value 256, the appbits field SHOULD be set

   to all 0s by the sender and MUST be ignored by the receiver."

My proposal is to keep this two options and add a new extension header 0x200
followed by the 4 bits appbits (using the same semantics) and mandate having
first one byte header extensions terminated by a one byte header extension
with ID 15 which in this case will not terminate the header extensions but
signal the start of the two bytes header extension part.

Does this looks reasonable

Thanks

Roni Even

As individual

---

From: Magnus Westerlund <[email-masked]>
Date: Fri, 11 Sep 2015 10:36:06 +0200

Den 2015-09-11 kl. 10:13, skrev Roni Even:
> Hi,
>
> At IETF94 there was a consensus to allow mixing of one byte and two
> bytes header extensions in the same RTP packet.  I volunteered to do the
> update to RFC5285.
>

No, I don't agree with that classification of the issue. What was 
discussed was that RFC 5285 does not allow to use both one and two byte 
headers in the same RTP stream.

To my understanding the suggestion for fixing this issue was to allow an 
RTP sender to switch between RTP packets between using one or two bytes 
headers depending on need.

I think that has much less impact on deployed scenarios than the more 
extensive change below.

Further I think Mo was suggesting that the signalling was tweaked such 
that any header extension that requires two byte headers only should 
request ID values of 16 and larger to indicate that need. That still 
leaves some uncertainty for header extensions that have changing context 
and may go back and forth between needing one or two byte headers.

Cheers

Magnus Westerlund
(As individual)

>
> Currently the extension header (as specified by the profile) is 0xBEDE
> for one byte only headed extension and 0x100 followed by 4 bits called
> appbits for the two bytes header extension
>
> “The appbits field is 4 bits that are application-dependent and may be
>
>     to all 0s by the sender and MUST be ignored by the receiver.”
>
> My proposal is to keep this two options and add a new extension header
> 0x200 followed by the 4 bits appbits (using the same semantics) and
> mandate having first one byte header extensions terminated by a one byte
> header extension with ID 15 which in this case will not terminate the
> header extensions but signal the start of the two bytes header extension
> part.
>
> _______________________________________________
> Audio/Video Transport Core Maintenance
> [email-masked]
> https://www.ietf.org/mailman/listinfo/avt
>

-- 

Magnus Westerlund

----------------------------------------------------------------------
Services, Media and Network features, Ericsson Research EAB/TXM
----------------------------------------------------------------------
Ericsson AB                 | Phone  +46 10 7148287
Färögatan 6                 | Mobile +46 73 0949079
SE-164 80 Stockholm, Sweden | mailto: [email-masked]
----------------------------------------------------------------------

---

From: "Roni Even" <[email-masked]>
Date: Fri, 11 Sep 2015 13:47:46 +0300

Hi Magnus,
Inline
Roni

-----Original Message-----
From: Magnus Westerlund [mailto:[email-masked]] 
Sent: Friday, September 11, 2015 11:36 AM
To: Roni Even; [email-masked]
Subject: Re: [AVTCORE] Update to RFC5285 allowing both one and two bytes
header extensions in the same RTP packet

Den 2015-09-11 kl. 10:13, skrev Roni Even:
> bytes header extensions in the same RTP packet.  I volunteered to do 
> the update to RFC5285.
>

No, I don't agree with that classification of the issue. What was discussed
was that RFC 5285 does not allow to use both one and two byte headers in the
same RTP stream.

RE: OK , so I had a wring understanding. But I am not sure it is simpler
except using the current extension headers in the RTP packets. But if this
is what was the agreement I will propose text accordingly.

To my understanding the suggestion for fixing this issue was to allow an RTP
sender to switch between RTP packets between using one or two bytes headers
depending on need.

RE: that will be a limitation if at a certain point of time you may need to
send at the same time a one byte and two bytes header extension even though
initially it was not required. 

Further I think Mo was suggesting that the signalling was tweaked such that
any header extension that requires two byte headers only should request ID
values of 16 and larger to indicate that need. That still leaves some
uncertainty for header extensions that have changing context and may go back
and forth between needing one or two byte headers. 

RE: I am not sure I understand, are you saying that currently you can use
only ID value of 16 and higher for two bytes header extensions, or is the
proposal, this can allow mixing in the same packet but may have backward
interoperability issues.  I am ot sue we need this limitation since the
extension header will distinguish between one byte and two bytes RTP packets
I think my proposal will address backward interoperability since a new
extension header will be used for the mixing case, but any solution whether
it is only in the same RTP stream or packet will need to be negotiated. 

Cheers

Magnus Westerlund
(As individual)

> mandate having first one byte header extensions terminated by a one 
> byte header extension with ID 15 which in this case will not terminate 
> the header extensions but signal the start of the two bytes header 
> extension part.
>
> Audio/Video Transport Core Maintenance [email-masked] 

-- 

Magnus Westerlund

---

From: Magnus Westerlund <[email-masked]>
Date: Fri, 11 Sep 2015 13:27:28 +0200

Hi,

Please see inline.

> initially it was not required.

My understanding is that header extensions in general is not one or two 
byte specific. Header extensions that are longer than 15 bytes are 
required to use two-byte from the fact that one-byte can't indicate the 
necessary length. The other reason that can force use of two byte 
extensions is if the total number of negotiated extensions are more than 
15, then the ID values would force use of two byte.

However, among a set of header extension that are not forced by either 
of the above restrictions, payload length or ID > 15, these extensions 
is able to use either one or two byte extension headers. Which is used 
depends on the mix of other. So, if all header extensions that are to be 
added to a particular packet are such that one can use one-byte, then 
use one byte for all. If the next packet then contain one or more header 
extension requiring two-byte, then one uses two byte for all of the 
header extensions present in this packet.

> it is only in the same RTP stream or packet will need to be negotiated.

Currently there are clarifications. But, I think Mo's proposal was to 
recommend/force header extensions that know they need to use two-byte 
header to indicate that in setup signalling by using ID values > 15. 
That way one can detect some implementations that fails to support 
two-byte.

Cheers

Magnus Westerlund
(As individual)

-- 

Magnus Westerlund