Re: Last Call: draft-ietf-rmt-bb-fec-rs (Reed-Solomon Forward Error Correction (FEC) Schemes) to Experimental RFC

Igor Slepchin <[email protected]>
Newsgroups gmane.ietf.rmt
Message-ID <[email protected]>
Vincent,

I don't think the proposed change completely solves the problem, it only
lets us pass the sanity check.

As I briefly mentioned in my previous email, taking the two floors in
the n-algorithm will not produce the required number of repair symbols
in some situations. For example, let's say the code rate is 0.9, m=8,
and B=229 (e.g., max1_B=floor(255*0.9)=229, or max2_B=229 for whatever
reason). Let's assume that the block partitioning algorithm produced a
source block of 180 symbols, i.e., k=180. Then we have:

max_n=floor(B/rate)=floor(229/0.9)=254.
n=floor(k * max_n / B)=floor(180*254/229)=199.

Thus, the n-algorithm generated 199-180=19 repair symbols. However, the
requested code rate requires 180/0.9=200 encoding symbols, i.e., 20
repair symbols. So the n-algorithm causes us to generate fewer repair
symbols than requested by the code rate.

More comments below.

Vincent Roca wrote:
> <...>
> Concerning the need to calculate max_n first and then n, instead of calculating
> just n = ceil(k/rate) (what you suggested), the motivation is that the _target_
> rate parameter (a floating point value) is not communicated to the receiver.
> Instead the receiver knows B and max_n, i.e. a _rounded_ rate: B/max_n. That's
> enough.

Right, I understand that we cannot communicate the floating point code
rate to the client. However, since knowing the rate is not required for
decoding of Reed-Solomon codes, knowing the exact number of repair
symbols is not really required for decoding either. I understand that
having a reasonable estimate for that number may make memory management
on some implementations easier, but I don't think that knowing the 
precise value is critical. For example, if the server sets max_n to
the maximum number of encoding symbols generated for any of the source
blocks, it gives the client a reasonable estimate for pre-allocating its
memory structures. The estimate may be off (on the plus side) by up to 2
encoding symbols for A_small source blocks, but that doesn't sound too
bad for me.

That said, I've nothing against determining the exact number of encoding
symbols for each source block on the client based on just max_n and B, I
just could not come up with a way to do that without running into the
issue I described above.

Thank you,
Igor Slepchin


CONFIDENTIALITY NOTICE:  This email message and any attachments contain proprietary and privileged information of Roundbox, Inc., which are provided for the sole and confidential use of the intended recipients.  Any review, use, disclosure or distribution of this information is restricted and must comply with the nondisclosure agreement between Roundbox, Inc. and you (or your company).  All other uses are prohibited.  If you are not an intended recipient, please contact the sender by reply email and promptly delete and otherwise destroy all copies of the message and its attachments.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.