Re: [hybi] Multiplexing extension spec draft 03
"Arman Djusupov" <arman@noemax.com> Fri, 23 March 2012 08:14 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 97EE721F8499 for <hybi@ietfa.amsl.com>; Fri, 23 Mar 2012 01:14:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.392
X-Spam-Level:
X-Spam-Status: No, score=-2.392 tagged_above=-999 required=5 tests=[AWL=0.206, 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 wqRDSe6WmYFJ for <hybi@ietfa.amsl.com>; Fri, 23 Mar 2012 01:14:30 -0700 (PDT)
Received: from mail.noemax.com (mail.noemax.com [64.34.201.8]) by ietfa.amsl.com (Postfix) with ESMTP id 78E4221F8458 for <hybi@ietf.org>; Fri, 23 Mar 2012 01:14:29 -0700 (PDT)
Received: from vista1 by mail.noemax.com (IceWarp 9.4.1) with ASMTP (SSL) id HLL98325; Fri, 23 Mar 2012 10:14:25 +0200
From: Arman Djusupov <arman@noemax.com>
To: 'Takeshi Yoshino' <tyoshino@google.com>
References: <CAH9hSJb1ewPO3EBgD78anD+=4XouToGR4X7C1wvWqonc2nYB6g@mail.gmail.com> <000301cd05dd$c8f9fc70$5aedf550$@noemax.com> <CAH9hSJYni6BboWdjkLX9xsguph7wJwjAmTUD1genFzT0ja5Wdw@mail.gmail.com>
In-Reply-To: <CAH9hSJYni6BboWdjkLX9xsguph7wJwjAmTUD1genFzT0ja5Wdw@mail.gmail.com>
Date: Fri, 23 Mar 2012 10:14:33 +0200
Message-ID: <001b01cd08cc$fe9ac980$fbd05c80$@noemax.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_001C_01CD08DD.C224D200"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQJyksDj69tXg0EBn6jyTi4rbdnguwGRJ3ibAhBToZeVD2fj0A==
Content-Language: en-us
Cc: hybi@ietf.org
Subject: Re: [hybi] Multiplexing extension spec draft 03
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, 23 Mar 2012 08:14:36 -0000
Hello Takeshi, Using both a DropChannel and a close frame to close a logical channel seems like overkill. Exchanging DropChannel control messages should be enough for mutual shutdown of a logical channel. A more important issue is that if a close frame is sent through an intermediary that does not understand the mux extension, the intermediary may simply drop the physical channel / connection. It's easy to imagine a frame compression intermediary that would simply stop reading from the network connection once it encounters a close frame (as per WS spec no data is expected to follow the close frame). So probably the sending of a close frame should be avoided (i.e. prohibited) for logical channels. With best regards, Arman From: Takeshi Yoshino [mailto:tyoshino@google.com] Sent: Friday, March 23, 2012 8:22 AM To: Arman Djusupov Cc: hybi@ietf.org Subject: Re: [hybi] Multiplexing extension spec draft 03 The idea in my mind is that the DropChannel command works similar to TCP FIN/RST when no mux is used. I.e., each logical channel still exchanges close frames (with their channel ID in extension data portion) and uses status code in them (e.g. CloseEvent's code attribute), and after handling them, each side issues the DropChannel command as well as TCP shutdown. So, there's no such problem with graceful shutdown for logical channels' traffic. In terms of control traffic, we may receive some mux command for logical channel X after sending DropChannel command for X, but for now we can just ignore any of control commands safely: - FlowControl X -> safe to ignore - DropChannel X -> no problem. it's totally fine that both sides drop the same channel at the same time. - AddChannel X -> if we receive this, it just means the other peer is misbehaving That said, we can't distinguish this from invalid commands sent by broken peers (e.g. logical channel Y never existed but received command for Y). Maybe it's better to have endpoints respond to DropChannel as well as close frame to sync active channel list. Thanks Takeshi On Mon, Mar 19, 2012 at 23:37, Arman Djusupov <arman@noemax.com> wrote: The procedure of closing the logical channel is not detailed enough. Closing the logical channel should be performed in a way similar to closing the websocket connection when no mux extension is used. We need a close control frame to roundtrip in order to ensure the mutual agreement between the two sides when a logical channel is closed. Currently the specification does not require the side that receives a DropChannel control frame to reply to it (unless I missed something), which does not ensure the graceful closure of logical channels. "When an endpoint received DropChannel, the endpoint MUST remove the logical channel and the application instance that used the logical channel MUST treat this as closure of underlying transport." One side could be in the process of sending a message when it receives a DropChannel frame, so it is important to ensure that the logical channel is closed gracefully without dead channel frames left on the wire. The best way to do it is to let the DropChannel frame roundtrip back to its sender. When both sides have received the DropChannel frame they are in mutual agreement to release the channel ID, being sure that no more frames with the same channel ID are expected to arrive from the remote side. With best regards, Arman
- [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Tobias Oberstein
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Tobias Oberstein
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Tobias Oberstein
- Re: [hybi] Multiplexing extension spec draft 03 Julian Reschke
- Re: [hybi] Multiplexing extension spec draft 03 Greg Wilkins
- Re: [hybi] Multiplexing extension spec draft 03 Joakim Erdfelt
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Greg Wilkins
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Greg Wilkins
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 Takeshi Yoshino
- Re: [hybi] Multiplexing extension spec draft 03 John Tamplin
- Re: [hybi] Multiplexing extension spec draft 03 Arman Djusupov