Re: [hybi] Multiplexing: Pre-AddChannelResponse quota

"Arman Djusupov" <arman@noemax.com> Fri, 22 June 2012 08:20 UTC

Return-Path: <arman@noemax.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 C803621F85E0 for <hybi@ietfa.amsl.com>; Fri, 22 Jun 2012 01:20:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.426
X-Spam-Level:
X-Spam-Status: No, score=-2.426 tagged_above=-999 required=5 tests=[AWL=0.172, BAYES_00=-2.599, HTML_MESSAGE=0.001]
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 TVxbbDMcJpXq for <hybi@ietfa.amsl.com>; Fri, 22 Jun 2012 01:20:22 -0700 (PDT)
Received: from mail.noemax.com (mail.noemax.com [64.34.201.8]) by ietfa.amsl.com (Postfix) with ESMTP id 414FB21F8675 for <hybi@ietf.org>; Fri, 22 Jun 2012 01:20:22 -0700 (PDT)
DKIM-Signature: a=rsa-sha1; t=1340353226; x=1340958026; s=m1024; d=noemax.com; c=relaxed/relaxed; v=1; bh=K7AJNy4v11be2EDZcMO4IWZAHX8=; h=From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:In-Reply-To:References; b=sK7//Z3aP1imi3D/Ka34lhD22hg9VfLARTCmF//CsQUXWoilAKHFTPg/ViQTmjXRBgfXBB8oDo6Qv6/9gYHC/hULo1pgzsr4ytlwqmG1mR0W10kjyku+vZKlb+bdMpnO/XDQovx7xCTQA1Gt6xhAFK2iiZ8dumIElPDg7V0lBQs=
Received: from mail.noemax.com by mail.noemax.com (IceWarp 10.4.1) with ASMTP (SSL) id GOQ42024; Fri, 22 Jun 2012 11:20:24 +0300
From: Arman Djusupov <arman@noemax.com>
To: 'Takeshi Yoshino' <tyoshino@google.com>
References: <CAH9hSJZUAHQzDm4ofq6onc620SNretLQDOcjSnr2eQ0YA9yFdQ@mail.gmail.com> <002f01cd3cc4$4791b380$d6b51a80$@noemax.com> <20120607034440.GD26406@jl-vm1.vm.bytemark.co.uk> <CAH9hSJZWMgvQMNLapZAg_CS0vri=jZbfPLpLhfninjzG+JxxmA@mail.gmail.com> <CAH9hSJbChf6NPUqraaeEeLnDO=YyYja4SkwZJsWRfM5VUwZ59Q@mail.gmail.com> <002001cd4a14$53eb66f0$fbc234d0$@noemax.com> <CAH9hSJbz9HQrN67=Jf6bEmJikTGEViNEqjDP8XbHKrPKhYD19Q@mail.gmail.com> <001301cd4acf$d8c5cda0$8a5168e0$@noemax.com> <CAH9hSJYzbfUKMjuV3J1-tdapV59N5aewO-nAMLMexzF2f6KosA@mail.gmail.com> <6A3569A8-C253-4363-B00C-F336B0CA3128@noemax.com> <CAH9hSJayEAqJEE7=KdYuq669HOaG76kS9AVwUMUYaPKLtO=zEw@mail.gmail.com> <000301cd503d$0aff8f00$20fead00$@noemax.com> <CAH9hSJaNpAV2WYqRr7Pf47=auvADPHusx9ipUDLvAZRhRp7iuA@mail.gmail.com>
In-Reply-To: <CAH9hSJaNpAV2WYqRr7Pf47=auvADPHusx9ipUDLvAZRhRp7iuA@mail.gmail.com>
Date: Fri, 22 Jun 2012 11:20:05 +0300
Message-ID: <002101cd504f$d8a20e30$89e62a90$@noemax.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0022_01CD5068.FDEF4630"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQHbEEjWH8q2xL+U7IgUz4ieagM0MAIpCHL8APvLbp8B3rSIHAHfCnvqAiE9EN8B8r7HPACD0WVjAIKfMBgB696tEgIeY34vAi4tHFcCuqrLZJZC/LbQ
Content-Language: en-us
Cc: hybi@ietf.org
Subject: Re: [hybi] Multiplexing: Pre-AddChannelResponse 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:26 -0000

Good idea.

 

Hmm, actually this model can also work without the server assigning channel
IDs. The server simply needs to provide an initial quota to the slot and
then we have to allow the server to send FC frames to the client's logical
channel before the handshake is complete. So as soon as server receives an
AddChannelRequest and learns the channel ID, it would be sending normal FC
frames to the client. This way the FC would also work as usual both before
and after the handshake. The only difference from the current spec is that
the channel should be considered as established once an AddChannelRequest
received by the server. FC for the logical channel should start from the
moment when the server learns channel ID.

 

If the server sends a FC frame as soon as it receives an AddChannelRequest,
it should arrive to the client before the client uses all initial quota, so
the transmission should not stop. If there is a delay in communication it
would happen only due to the initial quota being too small for the
transmission rate. But such delays are inevitable both before and after
handshake. It depends entirely on the link speed and amount of quota
granted.

 

This way the client would be able to transmit as much as the server can
receive without waiting for an AddChannelResponse. I like this idea, it is
simple and would work fine.

 

With best regards,

Arman

 

 

From: Takeshi Yoshino [mailto:tyoshino@google.com] 
Sent: Friday, June 22, 2012 9:18 AM
To: Arman Djusupov
Cc: Jamie Lokier; hybi@ietf.org
Subject: Re: [hybi] Multiplexing: Pre-AddChannelResponse quota

 

As we're going to add, say, NewChannelQuotaUpdate command which replenishes
new channel quota, another idea is assigning a channel ID by the server on
NewChannelQuotaUpdate. This way, the server can give pre-handshake quota to
each potential channel slot by the same manner as post-handshake quota
assignment. Pre-handshake quota can be carried over seamlessly.


Takeshi



On Fri, Jun 22, 2012 at 3:05 PM, Arman Djusupov <arman@noemax.com> wrote:

Hello Takeshi,

 

This will result in the protocol having two different stages of
communication. One stage before the handshake during which flow control
should be based on the common quota, and a second stage after the
end-of-pre-handshake-data frame is received during which flow control is
based on the logical channel quota. I'm ok with this solution, but I have
the impression that this is a bit of overkill.

 

It will be difficult to implement in a high concurrency multithreaded
environment. I can't say if there are any practical problems until I try
implementing it. But there might be difficulties that are not evident now.
In general it's becoming a bit more complex than simply working with a
self-assigned initial quota. 

 

With best regards,

Arman

 

From: Takeshi Yoshino [mailto:tyoshino@google.com] 
Sent: Thursday, June 21, 2012 3:27 PM


To: Arman Djusupov
Cc: Jamie Lokier; hybi@ietf.org
Subject: Re: [hybi] Multiplexing: Pre-AddChannelResponse quota

 

On Tue, Jun 19, 2012 at 4:06 PM, Arman Djusupov <arman@noemax.com> wrote:

For reasons of simplicity and API limitations, browsers may simply always
level the quota along the channels, or they might prefer to slightly delay
sending the AddChannelRequest to check what is the size of the first message
being sent so that the AddChannelRequest with IQ_X = message size is sent
along with the first message, to avoid an extra roundtrip.

 

Considering the concern Jamie showed, how about sending some FlowControl
frame variant indicating the end of pre-handshake data after pre-handshake
frames? The client consumes total pre-handshake data quota it has for the
new channel as it like. And then, sends the end-of-pre-handshake-data frame.
It can be after or before receiving AddChannelResponse for the request. The
server knows how much pre-handshake data quota has been spent for the new
channel attempt by summing the data size of frames before the
end-of-pre-handshake-data frame. Delaying AddChannelRequest is fine but not
so flexible enough to address the concern Jamie showed.