Re: [Fecframe] About the Generic Explicit Source FEC Payload ID

Abhishek ANAND <abhishek.anand-ext@st.com> Mon, 21 February 2011 15:24 UTC

Return-Path: <abhishek.anand-ext@st.com>
X-Original-To: fecframe@core3.amsl.com
Delivered-To: fecframe@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D5E173A7126 for <fecframe@core3.amsl.com>; Mon, 21 Feb 2011 07:24:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.148
X-Spam-Level:
X-Spam-Status: No, score=-6.148 tagged_above=-999 required=5 tests=[AWL=-0.150, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_62=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WajTvE3GUxqG for <fecframe@core3.amsl.com>; Mon, 21 Feb 2011 07:24:09 -0800 (PST)
Received: from eu1sys200aog112.obsmtp.com (eu1sys200aog112.obsmtp.com [207.126.144.133]) by core3.amsl.com (Postfix) with ESMTP id 39C663A7115 for <fecframe@ietf.org>; Mon, 21 Feb 2011 07:24:07 -0800 (PST)
Received: from source ([164.129.1.35]) (using TLSv1) by eu1sys200aob112.postini.com ([207.126.147.11]) with SMTP ID DSNKTWKDuJWhqdGn8N+Rt6uETTyGo4NBY8J7@postini.com; Mon, 21 Feb 2011 15:24:50 UTC
Received: from zeta.dmz-eu.st.com (ns2.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 594FDEB; Mon, 21 Feb 2011 15:24:39 +0000 (GMT)
Received: from Webmail-eu.st.com (safex1hubcas2.st.com [10.75.90.16]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id B4B652B96; Mon, 21 Feb 2011 15:24:38 +0000 (GMT)
Received: from SAFEX1MAIL3.st.com ([10.75.90.7]) by SAFEX1HUBCAS2.st.com ([10.75.90.16]) with mapi; Mon, 21 Feb 2011 16:24:38 +0100
From: Abhishek ANAND <abhishek.anand-ext@st.com>
To: "Ali C. Begen (abegen)" <abegen@cisco.com>
Date: Mon, 21 Feb 2011 16:24:37 +0100
Thread-Topic: [Fecframe] About the Generic Explicit Source FEC Payload ID
Thread-Index: AcvR23NmJLK6x5t0S4CA6wmhltBttw==
Message-ID: <4D6284E7.2040203@st.com>
References: <mailman.2640.1297433699.4701.fecframe@ietf.org> <4D5D0098.1040206@st.com> <04CAD96D4C5A3D48B1919248A8FE0D540E57BA28@xmb-sjc-215.amer.cisco.com> <4D5E4A44.4010206@st.com> <04CAD96D4C5A3D48B1919248A8FE0D540E57BE1D@xmb-sjc-215.amer.cisco.com>
In-Reply-To: <04CAD96D4C5A3D48B1919248A8FE0D540E57BE1D@xmb-sjc-215.amer.cisco.com>
Accept-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: multipart/alternative; boundary="_000_4D6284E72040203stcom_"
MIME-Version: 1.0
Cc: "fecframe@ietf.org" <fecframe@ietf.org>
Subject: Re: [Fecframe] About the Generic Explicit Source FEC Payload ID
X-BeenThere: fecframe@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Discussion of FEC Framework <fecframe.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/fecframe>, <mailto:fecframe-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/fecframe>
List-Post: <mailto:fecframe@ietf.org>
List-Help: <mailto:fecframe-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/fecframe>, <mailto:fecframe-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Feb 2011 15:24:10 -0000

>  > In such cases even when the Source Packet flows are RTP flows we must
> add Source Packet Payload IDs. In addition we can
>  > not use the Generic Explicit Source FEC Payload ID as it is described
> in Section 5.3.1 of the FEC Framework Draft because the
>  > position of a Source Packet in the Source Block will not be unique
> across all FEC Schemes.
>
> abegen: Sorry, I don't understand this. The place of a source packet is
> derived from the information put in the repair packets, not source packets.
>
> anand: I was of the opinion that the Source Packet's place is derived
> from the information put in the Repair Packets only when they belong to
> a single sequenced flow. In this case the Repair FEC Payload ID carries
> the Initial Sequence Number which is used to place the Source Packet in
> its place. In other cases where the Source Packets are not sequenced or
> they belong to multiple arbitrary sequenced flows I believe the Source
> Packet's place is calculated using the information present in the Source
> Payload ID, such as Source Block Number and Encoding Symbol ID(ESI). I

abegen: Note that not every FEC scheme is capable of protecting multiple source flows together since their repair payload IDs are only designed for a single sequenced source flow. If an FEC scheme wants to be able handle such scenarios, it needs to be designed that way.

anand: On the contrary I believe that any FEC Scheme that is capable of protecting multiple source flows together must not rely on sequence numbers (RTP/Self-assigned seq no./Generic Source Payload ID in its current form). It should use Payload IDs containing Source Block Numbers and ESIs so that the Encoding Symbols can be placed correctly at the decoder/reciever.

abegen: One could put the multiple source flows and re-seqnum them outside the fecframe and then feed the resulting stream into the fec encoder. And yes, then the original seqnums (such as RTP seqnums) cannot be used. But, this has nothing to do with fecframe's capability of protecting multiple source flows together. Because, here you are still feeding a single flow into fecframe.

anand: I agrees that re-sequence numbering is possible. But this has limited use as the problems arise at the client. A Source Packet can not have the same sequence number (RTP/Artificial Seq No.) for multiple FECFrameworks simply because the sequence number sequence(assumed to be incremental by 1) will overlap with another such running sequences for other flows.
Example:
Let us assume that we resequence the F1 Source Packets as 1,2,3 and feed them to FEC1 and FEC2. Now, FEC2 resequences the F2 Source Packets as 4,5,6. In this way we have two Source Blocks, one each for FEC1 and FEC2. Now when we get the next set of Source Packets for F1 we can reseqnum them as 4,5,6 for FEC1 but not for FEC2. One can think of using different sequence numbers for the same flow for different frameworks. But then this information (one new sequence number for each framework) must be attached to the Source Packet, otherwise the decoder will not be able to place the Source Packets.

> think that is how the Raptor Schemes for DVB AL-FEC are designed. Also
> "draft-roca-fecframe-simple-rs" defines one such FEC Scheme for Reed
> Solomon codec where a FEC Source Packet MUST contain the specified
> Source FEC payload ID.
>
> abegen: It should be sufficient to have the source packets seqnum'ed.
> And RTP satisfies that requirement nicely.
>
> aanand: When we mix two RTP flows we loose the unique sequence number
> sequences which would have been otherwise used by the FECFrameworks at
> the sender and the receiver to place Source Packets. This problem
> together with my opinion above makes it difficult to use the Generic
> Explicit Source FEC Payload ID which is based on sequence numbers that
> are unique across the FECFrameworks.
> For example:
> Lets continue the example with flows F1, F2 and frameworks FEC1, FEC2.
> We add the following assumptions:
> FEC1 uses Source Blocks of length 3 and FEC2 of length 6.
> RTP sequence numbers for F1: 1,2,3
> RTP sequence numbers for F2: 3,4,5.
> I think RTP sequence numbers or any unique "consecutive/"/ sequence
> numbers across all FECFrameworks can not be used to place the Source
> Packets in the Source Block for FEC2, so we must add Source FEC Payload
> IDs.
>
> Maybe I am missing some points, in that case I apologize for my ignorance.

abegen: You could use an identifier for your source flows and this will allow you to use their original seqnums. And in the repair payload IDs, you could use those identifiers.

anand: I think this will not work as you might attach in the repair payload IDs the (FlowID,ISN) combination for each of the flows. However the information about the position of each Source Packet is still not there as this information only tells the ISN for each flow, but does not tell how the Source Packets from multiple flows have been placed together to form the Source Block at the encoding FECFramework.

>  > Another observation regarding the Generic Explicit Source FEC Payload
> ID, since it does not contain the Source Block Number
>  > and relies solely on consecutive sequence numbers it seems that the
> corresponding Repair FEC Payload IDs must also use the
>  > Initial Sequence Number of each Source Block instead of the Source
> Block Number.

abegen: Yes. However, if the fec scheme used source block number info during encoding, that means it added source fec payload IDs to reflect that number (i.e., it has modified the source packets and it did not use the generic payload id).

anand: My motive behind opening this discussion was to discuss if we can define a generic payload id that can be also used for the cases such as LA-FEC. Such cases are not outside the scope of FECFramework but I think currently we do not have a formally defined way of handling them. I think such a Source FEC Payload ID must combine the Source FEC Payload IDs of the individual FEC schemes that have been used to encode the Source Packet.

> abegen: The generic field cannot carry the source block number as you
> said block sizes can and will vary among fecframe instances. And source
> block number is something used by the decoder but it is derived from the
> seqnum and base seqnum of a block (i.e., its value is not really used in
> an absolute fashion). I am not sure whether you saw something in the
> text that said otherwise.
>
> aanand: It was just an observation because it means that some FEC
> Schemes which explicitly mention a Source FEC Payload ID, Repair FEC
> Payload ID combination not based on sequence numbers will not be usable
> in the use cases of interdependent FECFrameworks. And if my points above
> are correct we might not be able to use unique sequence numbers to place
> Source Packets across all the interdependent FECFrameworks.

-acbegen

Regards,
Abhishek