Re: [hybi] Send quota value before receiving AddChannelResponse (was: Re: MUC: channel ID semantics)

"Arman Djusupov" <arman@noemax.com> Thu, 19 April 2012 10:13 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 BD83B21F8594 for <hybi@ietfa.amsl.com>; Thu, 19 Apr 2012 03:13:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.165
X-Spam-Level:
X-Spam-Status: No, score=-2.165 tagged_above=-999 required=5 tests=[AWL=0.433, 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 MmfkJ+Dut7mo for <hybi@ietfa.amsl.com>; Thu, 19 Apr 2012 03:13:25 -0700 (PDT)
Received: from mail.noemax.com (mail.noemax.com [64.34.201.8]) by ietfa.amsl.com (Postfix) with ESMTP id 8178F21F858A for <hybi@ietf.org>; Thu, 19 Apr 2012 03:13:25 -0700 (PDT)
Received: from ArmanPC1 by mail.noemax.com (IceWarp 9.4.1) with ASMTP (SSL) id DOG18328; Thu, 19 Apr 2012 13:13:28 +0300
From: Arman Djusupov <arman@noemax.com>
To: 'Gabriel Montenegro' <Gabriel.Montenegro@microsoft.com>, 'Takeshi Yoshino' <tyoshino@google.com>, 'John Tamplin' <jat@google.com>
References: <CAH9hSJZP8FhAGANSwPfvdMCQPyfRhG7tqPT68e6VY5ZCAEROTw@mail.gmail.com> <CABLsOLBsHXsj_A2sWa+b8KaFJBEFMHk0W268RyKzh7J0Y+ZxVQ@mail.gmail.com> <CAH9hSJZMrqDLJLr6RNLk84o1B2i3AVezUeGF9mWZ2Yu2Uv-feA@mail.gmail.com> <CA566BAEAD6B3F4E8B5C5C4F61710C1147FA4EA0@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com>
In-Reply-To: <CA566BAEAD6B3F4E8B5C5C4F61710C1147FA4EA0@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com>
Date: Thu, 19 Apr 2012 13:13:14 +0300
Message-ID: <002501cd1e15$0c8d8480$25a88d80$@noemax.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0026_01CD1E2E.31DD0670"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQFDpAB3Ba5pDAvrAhMo3RFqWK7Q0QGeXeAIAYMcRbwA5LM+P5eUrvRQ
Content-Language: en-us
Cc: hybi@ietf.org
Subject: Re: [hybi] Send quota value before receiving AddChannelResponse (was: Re: MUC: channel ID semantics)
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: Thu, 19 Apr 2012 10:13:28 -0000

We are simply considering whether letting the client to send frames before
the logical channel is accepted is worth it in order to remove this short
RTT. This feature would also require that the sever buffers the frames of
the logical channel until it is accepted. On the server side the procedure
of adding logical channels is not certain to be fast. It may involve
querying the database or establishing a new physical connection. For the
duration of this operation the server would have to spend some amount of its
resources despite it would be unclear whether the new logical channel is
accepted or not.

 

The best solution would be to have the server control this by using a
default value for the initial quota during the physical channel handshake.
For example, the server could set the quota explicitly to "0" during the
physical channel handshake, in which case all logical channels (including
first one) would be prohibited from sending any data until the channel is
accepted and so all clients would have to wait for the first flow control
message to arrive from the server side. Note that this flow control message
may arrive in the same frame as the AddChannelResponse without any
additional RTT.

 

Practically we don't need to change much in the spec, we just need to be
able to negotiate the default quotas during the physical channel handshake.
Any additional quotas can be easily granted using the flow control messages
that may arrive in the same frame as AddChannelRequest or
AddChannelResponse.

 

With best regards,

Arman

 

From: Gabriel Montenegro [mailto:Gabriel.Montenegro@microsoft.com] 
Sent: Thursday, April 19, 2012 8:41 AM
To: Takeshi Yoshino; John Tamplin
Cc: Arman Djusupov; hybi@ietf.org
Subject: RE: Send quota value before receiving AddChannelResponse (was: Re:
[hybi] MUC: channel ID semantics)

 

In all previous discussions in this WG there has been relentless push to
optimize any RTTs out of the protocol. Consistent with this is being able to
use the lightweight channel setup (as is possible in SPDY) in which data
transmission is possible without requiring the ack. If I'm the only one
asking about this, perhaps the WG is no longer interested in such
optimizations, but I'd still be interested in understanding the change of
heart.

 

From: Takeshi Yoshino [mailto:tyoshino@google.com] 
Sent: Wednesday, 18 April, 2012 9:50
To: John Tamplin; Gabriel Montenegro
Cc: Arman Djusupov; hybi@ietf.org
Subject: Re: Send quota value before receiving AddChannelResponse (was: Re:
[hybi] MUC: channel ID semantics)

 

On Wed, Apr 18, 2012 at 21:01, John Tamplin <jat@google.com> wrote:

On Wed, Apr 18, 2012 at 4:15 AM, Takeshi Yoshino <tyoshino@google.com>
wrote:

You're right. In the latest spec, it's not explicitly specified what the
value of send quota is until AddChannelResponse is received.

 

There're several options we can take.

 

a) specify the fixed value of send quota before AddChannelResponse in the
spec

b) add a new parameter "pre_handshake_quota" to multiplexing extension to
negotiate the value of send quota before AddChannelResponse

c) drop the feature to configure initial quota for each logical channel, and
redefine the quota parameter as pre-handshake send quota for all logical
channels

 

Until we know the AddChannel was accepted, how can we send data anyway?
This seems just like the initial handshake on a new connection -- you
wouldn't consider sending that data until you knew the connection was
accepted.  Since we are avoiding TCP setup requirements, this will be much
less latency than if the connection were created without multiplexing.

 

I suppose it would be possible to send the data while keeping it buffered as
an optimization, but since adding a channel should be infrequent compared to
sending data on it, I don't see it as that important to optimize for.

 

Yes. It's infrequent.

 

If the information the impatient client want to send is small, it can also
be just embeded into URL or subprotocol to avoid the additional RTT.

 

If no one really needs this feature and has justification, I'm fine with
keeping the same restriction (no transmission until AddChannelResponse) as
no-mux connection.

 

IIRC, Gabriel was interested in this optimization. Gabriel, do you have any
comment about this?