Re: [AVTCORE] New Version Notification for draft-ietf-avtcore-multi-party-rtt-mix-09.txt

James Hamlin <james.hamlin@purple.us> Thu, 12 November 2020 12:05 UTC

Return-Path: <james.hamlin@purple.us>
X-Original-To: avt@ietfa.amsl.com
Delivered-To: avt@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CE4B33A03FB for <avt@ietfa.amsl.com>; Thu, 12 Nov 2020 04:05:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Level:
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eqilY0curZwT for <avt@ietfa.amsl.com>; Thu, 12 Nov 2020 04:05:30 -0800 (PST)
Received: from outbound-ip25b.ess.barracuda.com (outbound-ip25b.ess.barracuda.com [209.222.82.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 45AF63A0418 for <avtcore@ietf.org>; Thu, 12 Nov 2020 04:05:29 -0800 (PST)
Received: from smtp.purple.us (smtp02.purple.us.91.17.208.in-addr.arpa [208.17.91.144]) by mx10.us-east-2b.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NO); Thu, 12 Nov 2020 12:05:18 +0000
Received: from 1-WP-401-EXCH.purplenetwork.net (10.0.10.143) by 1-wp-402-exch.purplenetwork.net (10.0.10.144) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Thu, 12 Nov 2020 04:05:11 -0800
Received: from 1-WP-401-EXCH.purplenetwork.net ([fe80::e190:fa54:4b11:2dfb]) by 1-wp-401-exch.purplenetwork.net ([fe80::e190:fa54:4b11:2dfb%13]) with mapi id 15.00.1263.000; Thu, 12 Nov 2020 04:05:11 -0800
From: James Hamlin <james.hamlin@purple.us>
To: =?iso-8859-1?Q?Gunnar_Hellstr=F6m?= <gunnar.hellstrom@ghaccess.se>
CC: "avtcore@ietf.org" <avtcore@ietf.org>
Thread-Topic: [AVTCORE] New Version Notification for draft-ietf-avtcore-multi-party-rtt-mix-09.txt
Thread-Index: AQHWuNIqa0fcqmqSBUyhgMbIkJvdpw==
Date: Thu, 12 Nov 2020 12:05:10 +0000
Message-ID: <1605182709686.62555@purple.us>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.0.10.15]
Content-Type: multipart/alternative; boundary="_000_160518270968662555purpleus_"
MIME-Version: 1.0
X-BESS-ID: 1605182718-893019-8132-599-1
X-BESS-VER: 2019.1_20201112.0059
X-BESS-Apparent-Source-IP: 208.17.91.144
X-BESS-Outbound-Spam-Score: 0.20
X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.228141 [from cloudscan22-215.us-east-2b.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_BESS_OUTBOUND META: BESS Outbound 0.20 BSF_SC0_SA953 META: Custom Rule BSF_SC0_SA953
X-BESS-Outbound-Spam-Status: SCORE=0.20 using global scores of KILL_LEVEL=7.0 tests=HTML_MESSAGE, BSF_BESS_OUTBOUND, BSF_SC0_SA953
X-BESS-BRTS-Status: 1
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/2bA4XwGn5ffV6-kEIhRfMGMIKLs>
Subject: Re: [AVTCORE] New Version Notification for draft-ietf-avtcore-multi-party-rtt-mix-09.txt
X-BeenThere: avt@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Audio/Video Transport Core Maintenance <avt.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/avt>, <mailto:avt-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/avt/>
List-Post: <mailto:avt@ietf.org>
List-Help: <mailto:avt-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/avt>, <mailto:avt-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 12:05:32 -0000

Hi Gunnar


I had another look at the recovery text at the end of section 3.23. I think the statement

"If CSRC is different before and after the gap, a gap of 4 can be recovered if the last packet before the gap contained only R2 data" is should read:

"If the CSRC is different before and after the gap, a gap of 4 can be recovered if the last packet before the gap contained primary data and the newly received packet contains R2 data".

I also think the condition for a 'third' CSRC to have been active in the missing packets is more complicated than stated.


To avoid the document getting too complicated, it might be better just to say that receivers should put in a missing text mark against the mixer unless they have implemented an algorithm that determines that loss is limited to a smaller group of participants.


I think the diagram below might help to visualize the conditions where it is possible determine from sequence numbers, where loss has occurred. WARNING: it's upside down with primary at the top and I've used the word "step" instead of "gap" and then used "gap" to refer to the gap that determines whether a 'third' party CSRC could have been active in the missing packets. I've deliberately used more than 3 redundant generations as RFC4103 doesn't set a limit. Colored blocks represent data and white an empty or undetermined block.


A receiver has a newly received packet and a previously received packet, with a lower sequence number.

>From the newly received packet one can draw a square showing the packets that are known to have been from the second participant (in this case the blue participant). The green arrows show data that can be recovered and the yellow show that the two empty redundant generations show where primary blocks must have been empty.

>From the previously received packet one can draw a square (in this case for the red participant), showing the packets that must have been for that participant, to run out remaining redundant generations.


Then, to work out if anything was lost, by any participant, try to draw test squares with primary data in the top left, which reach to the bottom of the diagram. It is only possible for something to be lost, if such a square can be drawn that doesn't overlap a square with a different participant's color.


So, in the diagram, one couldn't draw a 5*5 square in orange without overlapping the blue or red so there was definitely no text from anyone other than blue and red.

It is possible to draw red 5*5 squares starting in the first, or second lost packets, without overlapping the blue and so it is possible that there was unrecoverable loss of the red participant's text. It is also possible to draw a blue square starting at 4th missing packet, without overlapping the red square so it is possible that there was unrecoverable loss of the blue participant's text. It is also possible that there were keep-alive packets meaning that nothing was lost. It is also possible to draw a blue square starting at the fifth missing packet but we know that primary was empty (follow the yellow arrow).




Using this mechanism, I think the algorithm for determining packet loss markers is:-

let step = the difference in the start and end sequence numbers + 1; // When no packets are missing step == 2
let n_gen = number of generations including primary
let block   = depth to last non-empty redundant block in the newly received packet;
let p_block = n_gen - depth to first non-empty redundant block in the previously most recently received packet;
let gap = step - block - p_block;


if (gap >= n_gen) then

    Insert a missing text marker against the mixer;      // missing text could have been from anyone

else

    if (change in participant) then //  CSRC is different before and after the missing packets



        if (step - p_block > n_gen) then

            Insert a missing text marker against the second participant;

        endif


        if (step - block > n_gen) then

            Insert a missing marker against the first participant;

        endif;


    elseif (step >= n_gen) then

            insert a missing marker against the participant;

    endif

endif



[X]


As said above, it probably makes sense to keep this detail out of the document and err on the side of caution by encouraging implementers to mark text missing against the mixer.


I see from previous mails that you are looking at using timestamps to assist recovery; I haven't considered that in the above. Apologies for bringing this analysis a bit late in the day; and I may have made mistakes - happy to be corrected.


Best regards


James



[X][X]

[X]James Hamlin
Contractor
Purple, a Division of ZP Better Together, LLC
purplevrs.com

The information contained in this e-mail message is intended only for the personal and confidential use of the recipient(s) named above. If you have received this communication in error, please notify us immediately by e-mail, and delete the original message.