Re: [AVTCORE] Benjamin Kaduk's Discuss on draft-ietf-avtcore-multi-party-rtt-mix-18: (with DISCUSS and COMMENT)

Gunnar Hellström <gunnar.hellstrom@ghaccess.se> Sun, 23 May 2021 20:21 UTC

Return-Path: <gunnar.hellstrom@ghaccess.se>
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 784773A24DE; Sun, 23 May 2021 13:21:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Level:
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=egensajt.se
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 kYzSbYDHuhfD; Sun, 23 May 2021 13:21:43 -0700 (PDT)
Received: from smtp.egensajt.se (smtp.egensajt.se [194.68.80.251]) (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 729A53A24E0; Sun, 23 May 2021 13:21:42 -0700 (PDT)
Received: from [192.168.2.137] (h77-53-37-81.cust.a3fiber.se [77.53.37.81]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: gunnar.hellstrom@ghaccess.se) by smtp.egensajt.se (Postfix) with ESMTPSA id 8DEEF20C81; Sun, 23 May 2021 22:21:38 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=egensajt.se; s=dkim; t=1621801298; bh=BzOE5tOfEP/lgx6YloWilQbGfb34TRl9JEPp5hizM3o=; h=Subject:From:To:Cc:References:Date:In-Reply-To:From; b=NiznL8jOx8CtLh+4SDaOFoshW4VkW2CZIpUHTR+1TcSFBxosOycURp2Gmpk4HWclI hcsKGindYBO93rtO2a5nNDB1RadiYxPA1r+GVcEn5zhMgpqysGU5rhiUWBZY/ecmuS MBKB9OlE1zbCpUUCRW4f9JLalMmbeDlK4Nm+DUPg=
From: Gunnar Hellström <gunnar.hellstrom@ghaccess.se>
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
Cc: avtcore-chairs@ietf.org, draft-ietf-avtcore-multi-party-rtt-mix@ietf.org, avt@ietf.org
References: <162139279927.706.12647899386073526674@ietfa.amsl.com> <0f0350e8-231d-8d1b-d561-a172d68ac4a3@ghaccess.se>
Message-ID: <9d6ab9e2-66ab-a075-1573-7a123416f7d7@ghaccess.se>
Date: Sun, 23 May 2021 22:21:36 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2
MIME-Version: 1.0
In-Reply-To: <0f0350e8-231d-8d1b-d561-a172d68ac4a3@ghaccess.se>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Content-Language: sv
Archived-At: <https://mailarchive.ietf.org/arch/msg/avt/rK8ZBnoF6uWSWMJycxczC2ljFfc>
Subject: Re: [AVTCORE] Benjamin Kaduk's Discuss on draft-ietf-avtcore-multi-party-rtt-mix-18: (with DISCUSS and COMMENT)
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: Sun, 23 May 2021 20:21:49 -0000

Benjamin,

This is a more complete answer on your DISCUSS

I think the description of the procedure was too much spread out in 
section 3. So, I propose to delete section 3.9, and change 3.4 to become:

--------------------------------------------------------------------------------------------

3.4.  Transmission interval

    A "text/red" or "text/t140" transmitter in a mixer SHALL send packets
    distributed in time as long as there is something (new or redundant
    T140blocks) to transmit.  The maximum transmission interval between
    text from the same source SHALL then be 330 ms, when no other
    limitations cause a longer interval to be temporarily used.
    It is RECOMMENDED to send the next packet to a
    receiver as soon as new text to that receiver is available, as long
    as the maximum character rate ("CPS") to the receiver is not exceeded
    during any 10-second interval.  The intention is to keep the latency
    low and network load limited while keeping good protection against
    text loss in bursty packet loss conditions.
    The main purpose of the 330 ms interval is for timing of redundant
    transmission, when no new text from the same source is available.

    The reason for the value 330 ms is that many sources of text will
    transmit new text with 300 ms intervals during periods of
    continuous user typing, and then reception in the mixer of such new
    text will cause a combined transmission of the new text and the
    unsent redundancy from the previous transmission. Only when the user
    stops typing, the 330 ms interval will be applied to send the
    redundancy.

    If the "CPS" value is reached, a longer transmission interval SHALL be
    applied for text from all sources as specified in [RFC 4103] and only
    as much of the text queued for transmission SHALL be sent at the end
    of each transmission interval that can be allowed without exceeding
    the "CPS" value. Division of text for partial transmission MUST
    then be made at T140block borders.
    When the transmission rate falls under the "CPS" value again,
    the transmission intervals SHALL be returned to 330 ms and
    transmission of new text SHALL return to be made as soon as new
    text is available.

    NOTE: that extending the transmission intervals during high load
    periods does not change the number of characters to be conveyed.
    It just evens out the load in time and reduces the number of packets
    per second. With human created conversational text, the sending
    user will eventually take a pause letting transmission catch up.

    See also Section 8

    For a transmitter not acting as a mixer, the transmission interval
    principles from [RFC4103] apply, and the normal transmission 
interval SHALL
    be 300 ms.

----------------------------------------------------------------------

Section 3.10 also needs a few changes, to read:

3.10.  Text placement in packets

    The mixer SHALL compose and transmit an RTP packet to a receiver when
    one of the following conditions has occurred:

    *  There is unsent text available for transmission to that receiver.

|   *  The current transmission interval ( normally 330 ms) has passed
|     since already transmitted text was queued for
|      transmission as redundant text.

    At the time of transmission, the mixer SHALL populate the RTP packet
    with all T140blocks queued for transmission originating from the
    source in turn for transmission as long as this is not in conflict
    with the allowed number of characters per second ("CPS") or the
    maximum packet size.  In this way, the latency of the latest received
    text is kept low even in moments of simultaneous transmission from
    many sources.

    Redundant text SHALL also be included, and the assessment of how much
    new text can be included within the maximum packet size MUST take
    into account that the redundancy has priority to be transmitted in
|   its entirety.  See Section 3.4

    The SSRC of the source SHALL be placed as the only member in the
    CSRC-list.

    Note: The CSRC-list in an RTP packet only includes the participant
    whose text is included in text blocks.  It is not the same as the
    total list of participants in a conference.  With audio and video
    media, the CSRC-list would often contain all participants who are not
    muted whereas text participants that don't type are completely silent
    and thus are not represented in RTP packet CSRC-lists.

.........................................................................................

The examples in section 3.21 needs some small adjustments:

in packet 104, the timer should be 20 800,

The text above and in packet 106 should be as you also discovered:

  B1 and B2 still need to be transmitted as redundancy.
|     This is planned 330 ms after packet 104. That
|    would be at 21130.

       |-----------------------|
|     |Seq no 106, Timer=21130|
       |CC=1                   |
       |CSRC list B            |
       | R2: B1, Offset=660    |
       | R1: B2, Offset=330    |
       | P:  Empty             |
       |-----------------------|

-----------------------------------------------------------------


Regards

Gunnar



.

Den 2021-05-19 kl. 23:25, skrev Gunnar Hellström:
> Benjamin,
>
> Thanks for the thorough review.
>
> I will respond in multiple pieces, starting with the first parts of 
> the DISCUSS.
>
> Den 2021-05-19 kl. 04:53, skrev Benjamin Kaduk via Datatracker:
>> Benjamin Kaduk has entered the following ballot position for
>> draft-ietf-avtcore-multi-party-rtt-mix-18: Discuss
>>
>> The document, along with other ballot positions, can be found here:
>> https://datatracker.ietf.org/doc/draft-ietf-avtcore-multi-party-rtt-mix/
>>
>>
>>
>> ----------------------------------------------------------------------
>> DISCUSS:
>> ----------------------------------------------------------------------
>>
>> I'm not sure I understand how the examples are consistent with the main
>> specification, so let's please discuss it to either un-confuse me or fix
>> the document.
>>
>> Section 3.9 seems to say that the oldest (source or redundant) text at
>> the mixer takes priority when there is text from more than one source
>> waiting to be sent, but the examples in Section 3.21 seem to show (e.g.)
>> text received from A at time 20400 that is to be sent as redundancy,
>> being sent after text from B received at time 20500 (sent as primary).
>> Is the intent that if there is any primary text, the oldest primary text
>> is sent first, and only if there is no outstanding primary text do we
>> consider the redundant text?
>
> [GH] You are right. The text in 3.9 i not clear enough. If there is no 
> new text from A, the redundancy of A shall not be sent until 330 ms 
> after the primary text from A was sent.
>
> Only if new text arrives from A before 330 ms after the previous text 
> was sent, then both that new text and the redundancy shall be sent, 
> when the new text is the oldest available.
>
> So in the example, it is correct to send text from B first.
>
> One way to say it is that redundant text shall not participate in the 
> age assessment until it is 330 ms older than when it was last sent. 
> But it shall be included if new text is available and decided to be sent.
>
> When composing suitable text from this, we also need to consider that 
> the "CPS" value may puts a limit to how much new text may be sent.
>
> We also have the following words last in 3.12:
>
> "   The T140blocks saved for transmission as redundant data are assigned
>    a planned transmission time 330 ms after the current time, but SHOULD
>    be transmitted earlier if new text for the same source gets in turn
>    for transmission before that time."
>
>
> So, 3.9 is about interleaving new text and not about making sure that 
> redundancy is sent even when there is no new text.  The text in 3.9 
> may become correct by deleting the redundancy from the age assessment, 
> and include "CPS" consideration, to result in:
>
> "The source with the oldest text received in the mixer  SHALL be next 
> in turn to get all its available unsent text transmitted, as long as 
> it is allowed considering the "CPS" value of the receiver.  Any 
> redundant repetitions of earlier transmitted  text not yet sent the 
> intended number of times SHALL be included as redundant retransmission 
> in the transmission."
>
>
>
>>
>> In a related vein, Section 3.10 says that a packet is sent when (among
>> other things) "330 ms has passed since already transmitted text was
>> queued for transmission as redundant text".  But that doesn't say
>> anything about the timer being reset by subsequent transmission or
>> queuing of redundant text, so I'm not sure how in the Section 3.21
>> example, we say that transmitting B1 and B2 as redundancy was planned as
>> 330 ms after packet 105 -- the original B2 was sent in packet 104, so
>> shouldn't the 330ms start from packet 104's transmission?  (The stated
>> time for this seems to match 330ms after 104, so maybe the "105" is just
>> a typo?)
>>
>>
>> I also left a note in the comment that there's a remark about "lower
>> security level" in Section 3.19 that's not really accurate; we should
>> resolve that in some manner before the document proceeds.
>>
>>
> [GH]
>
> -Answers to be continued,
>
> Gunnar
>>
>> _______________________________________________
>> Audio/Video Transport Core Maintenance
>> avt@ietf.org
>> https://www.ietf.org/mailman/listinfo/avt
>
-- 
Gunnar Hellström
GHAccess
gunnar.hellstrom@ghaccess.se