Discussion:
[xiph-rtp] Section 6, Congestion (Re: xiph-rtp Digest, Vol 3, Issue 9)
Michael Sparks
2005-01-04 11:53:58 UTC
Permalink
On Friday 31 Dec 2004 20:00, xiph-rtp-***@xiph.org wrote:
...
Just reading the draft, and I've come across section 6:

[ If I have specific comments on a section I'll start a separate thread in the
hopes that's easier. I'll try and do them one at a time though :) ]
6. Congestion Control
Vorbis clients SHOULD send regular receiver reports detailing
congestion. A mechanism for dynamically downgrading the stream,
known as bitrate peeling, will allow for a graceful backing off of
the stream bitrate. This feature is not available at present so an
alternative would be to redirect the client to a lower bitrate stream
if one is available.
One issue here is that RRs are supposed to be sent to the session. In a
multicast RTP session for an A/V conference (or similar application) this
makes a lot of sense. In moderate scale unidirectional streaming using
multicast it still makes sense.

In the large scale unidirectional streaming case, this becomes problematic
(unless you either don't implement this SHOULD or you don't send to the
session - I doubt either can be guaranteed by this section).

Consider:

* Reciever report size: 128 bits
* Average dialup user connectivity: 40Kbits/s (40960 bits/s)
* Maximum Reciever Reports per second: 320 (assuming the unrealistic scenario of no __data__)
* Maximum suggested time period between Reciever Reports: 5 minutes - 300 seconds
* Number of Receiver Reports in suggested time period: 96000

That suggests a maximum of 96000 people in a single session (unless you
exclude dialup users). Whilst this may seem a large number this is just a
factor of 2 (ish) away from the number of people who watched the BBC's
online streaming live, concurrently, when Saddam's statue was being toppled.

Given multicast is being deployed by more ISPs in the UK as the BBC makes
more content available via multicast this is a real issue. (From our
perspective multicast is being deployed as a means of making traffic
levels of 96K, 200K, 400K, 500K practical.)

With broadband this becomes less of an issue, HOWEVER...:

Average DSL user connectivity: 512Kbits/s (524288 bits/s)
Assume multicast content bitrate: 370 kbit/s (this is the bit rate we
multicasted at during the olympics)
Remainder: 142 Kbits
Number of Reciever reports: 142/40 * 96000 = 340000 (rounding down)

Again I'm not suggesting this is going to be anywhere near the common case
for Vorbis & RTP, however I would suggest it's worth considering. 340,000 isn't
really such a large number from a large scale media provider.

Currently (obviously) we're using proprietary systems with proprietary
protocols rather than open protocols in online streaming but in order for
this to have the option to change, the protocol does need to scale to these
levels. (Or use a different protocol of course :)

Also, I'm not about to suggest that this section be removed, since receiver
reports are used very effectively in a variety of applications, not just the
specific example provided, (such as group clock sync) however I *would*
suggest we need a way of flagging when such messages _MUST NOT_
be sent.

I'm wary of suggesting any method of flagging this up at this stage however
before hearing other people's opinions...

You could argue that a "SHOULD" theoretically protects you against this, but
personally I doubt this will be the case.
Have a happy New Year and all the best for 2005.
Likewise, and good luck to everyone in their respective projects :)

Regards,


Michael.
--
Michael Sparks, Senior R&D Engineer, Digital Media Group
***@rd.bbc.co.uk, http://kamaelia.sourceforge.net/
British Broadcasting Corporation, Research and Development
Kingswood Warren, Surrey KT20 6NP

This e-mail may contain personal views which are not the views of the BBC.
Phil Kerr
2005-01-04 12:54:43 UTC
Permalink
Hi Michael,
Post by Michael Sparks
...
[ If I have specific comments on a section I'll start a separate thread in the
hopes that's easier. I'll try and do them one at a time though :) ]
No probs :)
Post by Michael Sparks
6. Congestion Control
Vorbis clients SHOULD send regular receiver reports detailing
congestion. A mechanism for dynamically downgrading the stream,
known as bitrate peeling, will allow for a graceful backing off of
the stream bitrate. This feature is not available at present so an
alternative would be to redirect the client to a lower bitrate stream
if one is available.
One issue here is that RRs are supposed to be sent to the session. In a
multicast RTP session for an A/V conference (or similar application) this
makes a lot of sense. In moderate scale unidirectional streaming using
multicast it still makes sense.
In the large scale unidirectional streaming case, this becomes problematic
(unless you either don't implement this SHOULD or you don't send to the
session - I doubt either can be guaranteed by this section).
Although a large-scale unidirectional is more of an edge case for RTP
usage, it's certainly a usage scenario that needs to be considered.
Post by Michael Sparks
* Reciever report size: 128 bits
* Average dialup user connectivity: 40Kbits/s (40960 bits/s)
* Maximum Reciever Reports per second: 320 (assuming the unrealistic scenario of no __data__)
* Maximum suggested time period between Reciever Reports: 5 minutes - 300 seconds
* Number of Receiver Reports in suggested time period: 96000
That suggests a maximum of 96000 people in a single session (unless you
exclude dialup users). Whilst this may seem a large number this is just a
factor of 2 (ish) away from the number of people who watched the BBC's
online streaming live, concurrently, when Saddam's statue was being toppled.
Given multicast is being deployed by more ISPs in the UK as the BBC makes
more content available via multicast this is a real issue. (From our
perspective multicast is being deployed as a means of making traffic
levels of 96K, 200K, 400K, 500K practical.)
Average DSL user connectivity: 512Kbits/s (524288 bits/s)
Assume multicast content bitrate: 370 kbit/s (this is the bit rate we
multicasted at during the olympics)
Remainder: 142 Kbits
Number of Reciever reports: 142/40 * 96000 = 340000 (rounding down)
Again I'm not suggesting this is going to be anywhere near the common case
for Vorbis & RTP, however I would suggest it's worth considering. 340,000 isn't
really such a large number from a large scale media provider.
Currently (obviously) we're using proprietary systems with proprietary
protocols rather than open protocols in online streaming but in order for
this to have the option to change, the protocol does need to scale to these
levels. (Or use a different protocol of course :)
Also, I'm not about to suggest that this section be removed, since receiver
reports are used very effectively in a variety of applications, not just the
specific example provided, (such as group clock sync) however I *would*
suggest we need a way of flagging when such messages _MUST NOT_
be sent.
I'm wary of suggesting any method of flagging this up at this stage however
before hearing other people's opinions...
You could argue that a "SHOULD" theoretically protects you against this, but
personally I doubt this will be the case.
The handling of RR's for a large number of session clients is tricky, as
you rightly point out that you do not want to be swamped with this
return data. Section 6.2 of RFC 3550 covers the details of handling this
data and the SHOULD in the Congestion section of the Vorbis draft is
governed by this (even though it does not explicitly point back to
3550). Something more explicit, or a direct reference to section 6.2 in
3550, can be added. This doesn't provide a guarantee of conformance,
but at least this particular base has been covered.
Post by Michael Sparks
Have a happy New Year and all the best for 2005.
Likewise, and good luck to everyone in their respective projects :)
Regards,
Michael.
Best regards

Phil
Ramón García
2005-01-04 13:20:57 UTC
Permalink
Michael,

The sending of scaling the sending of RR already takes into account
the issue of scaling, as Phil Kerr has pointed out. In fact, this was
the only important change in the RTP protocol from RFC 1889 to RFC
3550.

My only disagreement with that paragraph is that it is almost
redundant. The RFC 3550 already says that clients SHOULD send RR (in
section 6). Perhaps it is useful to put a sentence to emphasize the
importance of these records for bitpeeling.

I would write.

"Although clients SHOULD send RR acording to RFC 3550, in the case of
Vorbis packets these records are specially useful, because the Vorbis
codec is designed to allow to change the bitrate easily essentially by
removing some bytes at the end of a packet (bitpeeling). Therefore,
this SHOULD should be stronger for Vorbis packets."

Ramon
Phil Kerr
2005-01-04 13:46:09 UTC
Permalink
Hi Ram?n,

The AVT said that this section had to be included in the draft.

Is there a working implementation of bitrate peeling available? I may
of missed this but when the earlier drafts were written its status was a
little uncertain. Being able to play with this feature means it can be
documented a lot clearer.

Regards

Phil
Post by Phil Kerr
Michael,
The sending of scaling the sending of RR already takes into account
the issue of scaling, as Phil Kerr has pointed out. In fact, this was
the only important change in the RTP protocol from RFC 1889 to RFC
3550.
My only disagreement with that paragraph is that it is almost
redundant. The RFC 3550 already says that clients SHOULD send RR (in
section 6). Perhaps it is useful to put a sentence to emphasize the
importance of these records for bitpeeling.
I would write.
"Although clients SHOULD send RR acording to RFC 3550, in the case of
Vorbis packets these records are specially useful, because the Vorbis
codec is designed to allow to change the bitrate easily essentially by
removing some bytes at the end of a packet (bitpeeling). Therefore,
this SHOULD should be stronger for Vorbis packets."
Ramon
_______________________________________________
xiph-rtp mailing list
http://lists.xiph.org/mailman/listinfo/xiph-rtp
Ramón García
2005-01-04 17:19:29 UTC
Permalink
Post by Phil Kerr
Is there a working implementation of bitrate peeling available?
No. Although the implementation would be trivial, the quality of sound would
be bad because codebooks are not tuned for bitpeeling.
Phil Kerr
2005-01-04 17:30:19 UTC
Permalink
Ok, thanks for the info.

How much work is involved in producing a set of codebooks tuned for
peeling, as well as RTP delivery?
Having a working implementation of peeling would certainly raise the Ogg
codecs above others.

-P
Post by Ramón García
Post by Phil Kerr
Is there a working implementation of bitrate peeling available?
No. Although the implementation would be trivial, the quality of sound would
be bad because codebooks are not tuned for bitpeeling.
_______________________________________________
xiph-rtp mailing list
http://lists.xiph.org/mailman/listinfo/xiph-rtp
Phil Kerr
2005-01-04 18:02:28 UTC
Permalink
[caught out by the reply-to]
Hmmm, tough call.
Do we go with an implementation which highlights a feature that isn't
fully mature, and dashes peoples expectations of it. Or do we skip
implementing this feature and leave the I-D text stating that this
feature is not implemented at this time.
-P
Perhaps I am wrong and bitpeeling is not a trivial operation, and it
would need to add more information to the Vorbis frames.
Searching in google site:lists.xiph.org bitpeeling gave
http://lists.xiph.org/pipermail/vorbis/2003-April/thread.html#10339
However, one can experiment with bitpeeling provided that one puts up
with the horrible quality. If all you want is to have your software
ready for bitpeeling, that should be enough.
Ramon
Ralph Giles
2005-01-05 00:54:38 UTC
Permalink
Post by Ramón García
"Although clients SHOULD send RR acording to RFC 3550, in the case of
Vorbis packets these records are specially useful, because the Vorbis
codec is designed to allow to change the bitrate easily essentially by
removing some bytes at the end of a packet (bitpeeling). Therefore,
this SHOULD should be stronger for Vorbis packets."
I wouldn't put such an expectation on bitrate peeling. At this point,
until someone demonstrates an encoder that produces usefully-peelable
bitstreams I think we should keep the hype machine off on this
particular feature.

-r

Loading...