Re: [hybi] Flow control quota

Takeshi Yoshino <tyoshino@google.com> Fri, 22 June 2012 08:20 UTC

Return-Path: <tyoshino@google.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8AABC21F85EA for <hybi@ietfa.amsl.com>; Fri, 22 Jun 2012 01:20:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.976
X-Spam-Level:
X-Spam-Status: No, score=-102.976 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SwCfw7-Dh6UU for <hybi@ietfa.amsl.com>; Fri, 22 Jun 2012 01:20:03 -0700 (PDT)
Received: from mail-gg0-f172.google.com (mail-gg0-f172.google.com [209.85.161.172]) by ietfa.amsl.com (Postfix) with ESMTP id 4770B21F85E0 for <hybi@ietf.org>; Fri, 22 Jun 2012 01:20:03 -0700 (PDT)
Received: by ggnc4 with SMTP id c4so1435644ggn.31 for <hybi@ietf.org>; Fri, 22 Jun 2012 01:20:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-system-of-record; bh=yo6uls8ihstNUd1JtJAvACa9pEdnp6J/MPO63ktfJgk=; b=QTQTb0SPii6jCaqVfG38uWMNxFrzfhgaeB0lhJTH4OvaHlDaUEeJnFgG+C49cuuZsD D3OQQKJjMyzIVESE2QSwB2Q+ubAZrGc1qbPgTR7ptcho+WWQDIY6uPvvn3d3+u/KOzyT g6f58NMn78L1ETCETS/DDR+8vqJ7MXtNZZz675gNiAQDl0m8THkPWn5zOts7s12esTi0 ADxcJMMMFESJFxc31lXWAoOpDpeSBCeUj6bm8viRgd5A59oXTmCtIQjtP+cPCZQjm9t6 k40+RQTnP+ii+QSYP4FZarhEHV0lRPZo6PT5qfHyauCRxGLNcPFz+RoAWNtz5ZwU/sIq mvag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=yo6uls8ihstNUd1JtJAvACa9pEdnp6J/MPO63ktfJgk=; b=frrjrZ/csNjFSKtlkJ6FfAjSj/AYBObEClG6Y3cjHKoAy0o02IUoaGvlHB3qrJYYcx wooVn8XuojVO4cUm61eEnztR1wXfBSTk9OqNkI4udeMBfv9j/qAS3lF8FsYVStJ+tNmJ 1VzzMgJxI+nf4Ke/wgSnbzeBSlygjWThPpHGBeIAkNgtLYvraPZv+baQvo86mRoVmaw1 H9goHu4q7CbwJ76uT1wLUgzqR8ziWJ1gzXybr8atTsC8C8tWC21dwHxu9+24pQbBB94F 8Wbidc0b3T05vuFMZwhFTZdzn4nr36JDYCyt00mr1h6j0qxx6L273ONVjvVMo5eqNRzF N57g==
Received: by 10.50.179.74 with SMTP id de10mr682916igc.61.1340353201441; Fri, 22 Jun 2012 01:20:01 -0700 (PDT)
Received: by 10.50.179.74 with SMTP id de10mr682909igc.61.1340353201322; Fri, 22 Jun 2012 01:20:01 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.231.66.7 with HTTP; Fri, 22 Jun 2012 01:19:41 -0700 (PDT)
In-Reply-To: <000c01cd495e$751e5cd0$5f5b1670$@noemax.com>
References: <001a01cd3e69$4a221c10$de665430$@noemax.com> <4FC732DC.3000308@250bpm.com> <000e01cd3f1c$af15ad40$0d4107c0$@noemax.com> <4FC880A7.9070007@250bpm.com> <CAH9hSJaWrUX6gFNLT4xkXLYKHSUH5+Y7AvqN9cD_CwekvsNu3A@mail.gmail.com> <001001cd4000$fe2c82c0$fa858840$@noemax.com> <4FCCAE6B.1010306@250bpm.com> <002d01cd4262$747957b0$5d6c0710$@noemax.com> <20120607022312.GA26406@jl-vm1.vm.bytemark.co.uk> <000e01cd449d$1c0ed220$542c7660$@noemax.com> <CAH_y2NE6+3r_9pkYXhMOiRWfGJXGauEYCqg-8GvtOoCT9Ch0mA@mail.gmail.com> <000401cd4566$d5f6bb70$81e43250$@noemax.com> <CAH9hSJY9d3dS_2vTZ-AXwuX0WnJuwZXrFyJtWik5SoKnQ3kWmw@mail.gmail.com> <4FD85D7C.3000902@250bpm.com> <000c01cd495e$751e5cd0$5f5b1670$@noemax.com>
From: Takeshi Yoshino <tyoshino@google.com>
Date: Fri, 22 Jun 2012 17:19:41 +0900
Message-ID: <CAH9hSJYpus9kUtevSZSfORgfwPkdcPZfqLAz2XTykUkSMgNMoA@mail.gmail.com>
To: Arman Djusupov <arman@noemax.com>
Content-Type: multipart/alternative; boundary="14dae934041b703a4604c30b4cc5"
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQnmDsiurA5lBFnyxe5jlLS9gelx4qevAHdfQCTUzCAPgG+QYsrGTiRycnLOqxM30PV3/VCWv8ElU31S/z6UPLzZ+DKX+enodv7mS5BeWOhwPqYHKQWFojezcWQg+ZZcL0RyqPNsWkMobfeF0U+6c03wzerkJ15E0CXjUaGCmrFe3S5xWnk=
Cc: hybi@ietf.org
Subject: Re: [hybi] Flow control quota
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Jun 2012 08:20:05 -0000

On Wed, Jun 13, 2012 at 9:17 PM, Arman Djusupov <arman@noemax.com> wrote:

> But by doing so we dodge the problem with non fragmentable frames that
> might
> be produced by any future extension that is unknown to the intermediary.
> For
> example we may need a reliable streaming extension that numbers all the
> frames and adds the frame number in the extension data so that it can
> resume
> sending the message if the connection fails. Such an extension would not
>

This implies that frame boundary is preserved end-to-end (or we may say
it's preserved extension-to-extension).

Some extensions may just require per-message signaling. Some may require
signaling not aligned to message boundary. Your example might be in the
latter group. Boundaries each extension want to place and use may differ.
Now I think that sharing WebSocket fragmentation defined in RFC 6455
between such extensions is not realistic. But we do have it. For what we
can utilize it?
- partial flush
or
- partial flush and multiplexing

Regardless if we use fragmentation for mux or not, I'd suggest that we stop
using the frame boundary signal for compression, and refrain from using the
boundary of fragmentation and RSV bits and extension data field as
per-frame (per-processing-unit) signaling for future extensions, too.

Extension data is not the only place extensions may touch. Extensions may
transform application data. Per-frame compression does it. No worry.
"reliable streaming extension" may embed sequence and the size of the chunk
in application data. We tend to miss the frame boundary information, but
let's accept new overhead for extensions to represent their processing unit.


> support fragmentation so it would set the RSV bit of each frame to prevent
> it from being fragmented by intermediaries. As long as the parent
> specification allows extensions to place their data at the beginning of the
> frame payload, this extension's data would not be recoverable if the frame
> is fragmented, so such an extensions would be incompatible with mux.
>

> It's ok if some extensions are not compatible with mux intermediaries,
> since
> the WebSocket specification allows intermediaries to refuse extensions that
> are not known to them. But ideally mux should be transparent to all
> extensions, so that mux intermediaries can be unobtrusively introduced at
> any point of the communication path without placing any restrictions on the
> extensions that may be used and the type of payload being exchanged.
>

The ideal mux does require encapsulation (#2). As John said, it was hard to
sell. Maybe, we can call for opinions again.

I'm ok with full encapsulation though I doubt refragmentability (without
parsing mux) after mux is really important.


>
> So I think we should take a bit more time to think on how we can resolve
> the
> problem with mux without changing per-frame compression. The second problem
> is that changing per-frame compression so that it is applied on the message
> boundaries would create an issue if it is applied after mux. Since after
> mux
> there are no message boundaries any more as message frames are intermixed,
> the compression would have to be applied on each frame separately. So
>
effectively per-frame compression extensions would have two modes of
> operation, which would be very hard to define in a specification. It would
> practically make it a requirement that this per-frame compression extension
> be aware that mux is being used. IMO having such coupling between
> extensions
> would be a bad design.
>

Hmm...