Re: [rtcweb] draft-ibc-rtcweb-sip-websocket -- WebSocket Transport for Session Initiation Protocol (SIP)

Iñaki Baz Castillo <ibc@aliax.net> Wed, 14 September 2011 10:41 UTC

Return-Path: <ibc@aliax.net>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6085A21F8AAA for <rtcweb@ietfa.amsl.com>; Wed, 14 Sep 2011 03:41:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.35
X-Spam-Level:
X-Spam-Status: No, score=-2.35 tagged_above=-999 required=5 tests=[AWL=-0.273, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_44=0.6, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_LOW=-1]
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 95KsHeTuXEGU for <rtcweb@ietfa.amsl.com>; Wed, 14 Sep 2011 03:41:35 -0700 (PDT)
Received: from mail-qy0-f179.google.com (mail-qy0-f179.google.com [209.85.216.179]) by ietfa.amsl.com (Postfix) with ESMTP id 79A9A21F8A95 for <rtcweb@ietf.org>; Wed, 14 Sep 2011 03:41:35 -0700 (PDT)
Received: by qyk33 with SMTP id 33so1369066qyk.10 for <rtcweb@ietf.org>; Wed, 14 Sep 2011 03:43:44 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.229.67.105 with SMTP id q41mr2741418qci.216.1315997023826; Wed, 14 Sep 2011 03:43:43 -0700 (PDT)
Received: by 10.229.79.207 with HTTP; Wed, 14 Sep 2011 03:43:43 -0700 (PDT)
In-Reply-To: <7F2072F1E0DE894DA4B517B93C6A05852233EDB21A@ESESSCMS0356.eemea.ericsson.se>
References: <CALiegfk6BhtzErXOQM8iSV7FC6isYUwOS1KPYCw_M1vEcNP6eQ@mail.gmail.com> <1F2A2C70609D9E41844A2126145FC09802585056@HKGMBOXPRD22.polycom.com> <CALiegfnR=b-9AOBmzytAT-AX9Evr1vegFK-J+MtAhBNWNAAWbA@mail.gmail.com> <7F2072F1E0DE894DA4B517B93C6A05852233EDB21A@ESESSCMS0356.eemea.ericsson.se>
Date: Wed, 14 Sep 2011 12:43:43 +0200
Message-ID: <CALiegf=fOcGYKuwabmeHDbkFY4ywrFsPjb9q0uXbTh_K6W4nSw@mail.gmail.com>
From: Iñaki Baz Castillo <ibc@aliax.net>
To: Christer Holmberg <christer.holmberg@ericsson.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] draft-ibc-rtcweb-sip-websocket -- WebSocket Transport for Session Initiation Protocol (SIP)
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 14 Sep 2011 10:41:36 -0000

2011/9/14 Christer Holmberg <christer.holmberg@ericsson.com>:
> I have a comment, related to this.
>
> The text says:
>
>   "Even more, the WebSocket protocol is not symmetric since
>   just a WebSocket client can open a connection to a WebSocket server
>   (a WebSocket client does not listen for incoming connections)."
>
> But, this is of course also true when you DO use a browser, but it's not really addressed in the draft. You need to describe that it is assumed that the WebSocket connection has been established at the point when the browser is supposed to be able to receive incoming SIP calls.

Hi Christer. IMHO that is already addressed in the draft:

----------------------------------------------------
6.  WebSocket Client Usage

   As stated in [I-D.ietf-hybi-thewebsocketprotocol], a WebSocket URI
   [RFC3986] is given to the WebSocket client (typically within a web-
   based application) who resolves the URI destination and establishes a
   WebSocket connection with the corresponding server (by performing the
   handshake and negotiation procedures described in
   [I-D.ietf-hybi-thewebsocketprotocol]).
-----------------------------------------------------


> For example, the WebSocket could be established once the JS app is downloaded,

But that is obvious given the WebSocket protocol nature. The client
MUST establish a WebSocket connection with the server before
attempting to send or receive WebSocket messages.

Could you please point to the exact section in the draft in which you
miss such explanation? We'll be very glad to improve it.


> or when the JS SIP client registers (similar to how SIP Outbound works).

In normal scenarios the client must register in order to receive
incoming SIP calls, but that is not a MUST. For example a WebSocket
server could route INVITE requests to connected WebSocket clients
without previous SIP registration made by the clients. It would be up
to the provider local policy. I don't think the draft should mandate
SIP registration in order to receive calls (neither RFC 3261 mandates
it), as registration is just one of the existing ways for receiving
incoming calls, but not the unique. Am I wrong?



>> The keep-alive mechanism is needed for cases in which there
>> is a NAT router in the path. Those routers usually close a
>> TCP connection after some minutes of inactivity. This happens
>> in any TCP connection from client to server through a NAT box.
>
> Since WebSocket provides a keep-alive function, you can of course use that.

Current limitation exists in WebSocket API since it does not provide a
way for the client to send Ping frames to the server. Please check the
open request in the W3C tracker about this topic:

  http://www.w3.org/Bugs/Public/show_bug.cgi?id=13104#c3


> I guess it could still be mentioned that a SIP level mechanism exists.

I assume you mean the CRLF+CRLF mechanism defined in RFC 5626
"Managing Client-Initiated Connections in SIP" which is a technique
for SIP clients to keep the connection open by sending CRLF+CRLF and
receiving CRLF reply from the proxy/server.

RFC 5626 says:

---------------------------------
3.5.1.  CRLF Keep-Alive Technique

   This approach can only be used with connection-oriented transports
   such as TCP or SCTP.  The client periodically sends a double-CRLF
   (the "ping") then waits to receive a single CRLF (the "pong").  If
   the client does not receive a "pong" within an appropriate amount of
   time, it considers the flow failed.
-------------------------------


Since SIP WebSocket transport (as defined in the draft) is also a
reliable transport, we could mention the usage of this keepalive
technique in the draft, is it ok?


Thanks a lot for your input.
Best regards.

-- 
Iñaki Baz Castillo
<ibc@aliax.net>