Re: QUIC for robotics and other time-sensitive applications

John Wason <johnwason1@gmail.com> Wed, 01 May 2019 16:22 UTC

Return-Path: <johnwason1@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E08E31200D5 for <quic@ietfa.amsl.com>; Wed, 1 May 2019 09:22:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.25
X-Spam-Level:
X-Spam-Status: No, score=0.25 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=1.989, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3lrG5RJ61DjZ for <quic@ietfa.amsl.com>; Wed, 1 May 2019 09:22:06 -0700 (PDT)
Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 111F212011A for <quic@ietf.org>; Wed, 1 May 2019 09:22:06 -0700 (PDT)
Received: by mail-qt1-x832.google.com with SMTP id b3so20483117qtc.12 for <quic@ietf.org>; Wed, 01 May 2019 09:22:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=90f8YcfhkYOJME9fEKqizFO/dww8Xx3OfSxy/Wgq3K0=; b=D7+rECI9WqJeh7snmrMoBEZJ8EYVpS+G/T+knQ9osAsxwxM+WVQaaEcm6DRY+M0Wrc XPPEWKbZpTCYXIvULXWIEYaXqIwSik7SDYh4CG3MN0S55uAg081LrxdlnrTPe3SvJpWV hSDlvsvJSwt5+LaGJN7QeWathGx1sXfcoyK93DEeAjc/i+ZF5gTsUixaM9+jpJdImjJ8 mp5mO+fSxWHx2uIYMKjVmFZZPvn5NXD/W0aBOr0tfIcVhX3e3s94yftDCAu12IlMYdMP T3Zokygd0XwzbsqdhoCdCq33b23vHJv4so0vf3svuStMNzPz8aiVzIiWJvBOlGLwoFcE CpHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=90f8YcfhkYOJME9fEKqizFO/dww8Xx3OfSxy/Wgq3K0=; b=lrn9Nd/gSPNYshiEdJpF4yu4urq5smfDPaQbXs5FlJnhXbAjSE65A8EmAgjJ31H+S5 k7+VaOoYyLuG7iIYKNrx6kRVgaURMmJNiy2jZrRrE92L0ltG0nroSedhdnkuc63OkrGC rSzUWmqx222mAlWU5CWWE8PunFCFKOw35lu7l2PjXFsfXLy7Il8EDnRhHGqV2VFlZeYW 5rvFbre3eFcqo5YGH8NQI8bEf7SWoZjFO8XPwzrc7AiOmod6stp608vwWbkpEvkzXxsb 3fpAJGIQRmNhx4FVix/Cvo6JP6aS1TAli/YVTQ0Jun3NnGBHJnrEeechb3AWewo7HRUx v4TQ==
X-Gm-Message-State: APjAAAWn0cMY6TuXJwrInGzWoAuNYxNZul7BPSRV1RFvzpWyD08DwAtl EZMhdd6XFNOHfaj3ObT45QDE10Br
X-Google-Smtp-Source: APXvYqyDwUN/aogTVOHWHvGcSGXYWacdlQJlyVO+5/FC0N4NCWLEFtR4fEHEIb7dYbKDOPUR9FrV3g==
X-Received: by 2002:a0c:948e:: with SMTP id j14mr29441719qvj.245.1556727724716; Wed, 01 May 2019 09:22:04 -0700 (PDT)
Received: from [192.168.1.94] (ool-44c6b4b5.dyn.optonline.net. [68.198.180.181]) by smtp.googlemail.com with ESMTPSA id k4sm18935799qki.15.2019.05.01.09.22.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 May 2019 09:22:03 -0700 (PDT)
Subject: Re: QUIC for robotics and other time-sensitive applications
To: "Lubashev, Igor" <ilubashe@akamai.com>, Ted Hardie <ted.ietf@gmail.com>
Cc: IETF QUIC WG <quic@ietf.org>
References: <542b6445-de16-8b13-4ffc-f1ca46c535da@gmail.com> <CA+9kkMDD-DyReh-mCYgF==t8Lcy9tVOrABiWhyMx2VgcwfbOtw@mail.gmail.com> <ae90d734-43f2-412d-123c-03421b44d6c8@gmail.com> <df610cdb89614e459f64292ca02c2041@usma1ex-dag1mb5.msg.corp.akamai.com>
From: John Wason <johnwason1@gmail.com>
Message-ID: <3c34ef0d-40ae-3ec0-6a60-2da4dab1b339@gmail.com>
Date: Wed, 01 May 2019 12:22:02 -0400
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <df610cdb89614e459f64292ca02c2041@usma1ex-dag1mb5.msg.corp.akamai.com>
Content-Type: multipart/alternative; boundary="------------52D9ED9977456621A973D822"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/fgAf-EGKvobHZb60OwnP2LWCyyE>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 01 May 2019 16:22:09 -0000

Igor,

It appears I misunderstood the distinction between per-stream partial 
reliability and intra-stream partial reliability. If I send one 
partial-reliability message per stream, using RESET frames should be 
sufficient. How this is exposed as an API is important, since I am not 
sure the webrtc-quic team has considered this yet. In response to your 
questions 1) Each message contains a header that should be sufficient 
for the receiver to understand the incoming stream 2) Does QUIC provide 
the type of priority that you suggest? My understanding is that QUIC 
multiplexes streams using a priority based ordering.

If I can emulate partial-reliability using RESET frames to cancel entire 
streams, that should be sufficient for my needs.

     -John

On 5/1/2019 10:33 AM, Lubashev, Igor wrote:
>
> John,
>
> I am happy to resurrect that draft-lubashev-quic-partial-reliability 
> for QUIC v2 (some people preferred version 02, which actually gets you 
> a bit more features at the cost of a bit more complexity).
>
> I would like to first understand what partially reliable streams give 
> you that is not available with regular streams.  I.e. what are you 
> missing if you use STREAM (with a possible subsequent RESET) for 
> messages?  (You cannot use DATAGRAM for messages, since you would like 
> the transport to facilitate retransmission until expiration.)
>
> My draft-lubashev-quic-partial-reliability lists a few things that 
> stream-per-message does not get you:
>
>  1. If you have multiple application message streams, you would need a
>     header for each QUIC stream to identify the application stream. 
>     This seems like a small burden, except for very short messages.
>      1. If the order of messages in an application stream matters, you
>         would need to reorder them yourself.  This cannot be very
>         complicated for the application.
>
>  2. QUIC per-application-stream flow control is rendered ineffective. 
>     I am actually not a huge fan of QUIC per-stream flow control, as I
>     strongly prefer stream priorities as a signal.  But I now know of
>     a case when per-stream flow control is, indeed useful (when there
>     is only one slow draining stream that uses up the entire
>     connection buffer before a higher-priority stream shows up).
>
> Are there any other benefits you see in partially reliable streams?
>
>   * Igor
>
> *From:*John Wason <johnwason1@gmail.com>
> *Sent:* Tuesday, April 30, 2019 5:52 PM
> *To:* Ted Hardie <ted.ietf@gmail.com>
> *Cc:* IETF QUIC WG <quic@ietf.org>
> *Subject:* Re: QUIC for robotics and other time-sensitive applications
>
> Thanks Ted, this looks very interesting. Based on these documents the 
> DETNET sits below the level of QUIC that we are currently discussing 
> and would mainly affect the IP header format of the resulting UDP 
> packets. The QUIC protocol will still require some form of partial 
> reliability to function on a DETNET network.
>
>     -John Wason
>
> On 4/30/2019 5:37 PM, Ted Hardie wrote:
>
>     Hi John,
>
>     Thanks for the message.  If you have not already reviewed the work
>     of DETNET (https://datatracker.ietf.org/wg/detnet/about/
>     <https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_wg_detnet_about_&d=DwMDaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=ueq3YmF7UajwgCbtLSplbhn7Ip05wFBM20Kbujzjih0&s=xLXCzRykwXzX7bQ_EfAh4Rea2sEzel9wgnprQAuwPwc&e=>)
>     here in the IETF, it might be useful to do so, as there are a
>     number of elements of your use case which appeared to be shared
>     with their work.  In particular, it might be useful to consider
>     whether the integration of their proposed IP data plane
>     (https://datatracker.ietf.org/doc/draft-ietf-detnet-dp-sol-ip/?include_text=1
>     <https://urldefense.proofpoint.com/v2/url?u=https-3A__datatracker.ietf.org_doc_draft-2Dietf-2Ddetnet-2Ddp-2Dsol-2Dip_-3Finclude-5Ftext-3D1&d=DwMDaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=ueq3YmF7UajwgCbtLSplbhn7Ip05wFBM20Kbujzjih0&s=TIzKr-IO44yjBfPhhPp5mldz8QENRQGE-4WD7bbdn5k&e=>)
>     with QUIC would be valuable in achieving your timing goals.
>
>     best regard,
>
>     Ted Hardie
>
>     On Tue, Apr 30, 2019 at 12:15 PM John Wason <johnwason1@gmail.com
>     <mailto:johnwason1@gmail.com>> wrote:
>
>         Greetings QUIC WG,
>
>         The discussion on Issue #92 of webrtc-quic suggested that I
>         post my
>         requirements to this list.
>
>         I am a robotics engineer and the developer of Robot Raconteur, a
>         communication framework for robotics and automation systems
>         (https://github.com/robotraconteur/robotraconteur
>         <https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_robotraconteur_robotraconteur&d=DwMDaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=ueq3YmF7UajwgCbtLSplbhn7Ip05wFBM20Kbujzjih0&s=VIzDVXjr63UwHbT0rvYCzS91VAZarySeWftFNCsC2hE&e=>).
>         Robotics
>         applications require different data types and QoS when
>         compared to
>         business or web applications. Robotics applications need
>         real-time
>         communication of isochronous data, for instance constant
>         updates on the
>         position of the joints of the robot, alongside generic
>         non-time-sensitive data. Currently most robotics applications
>         are using
>         TCP (Robot Raconteur, ROS*, OPC/UA), UDP (DDS, ROS2, ROS*), or
>         some form
>         of custom Ethernet protocol (Ethernet/IP, EtherCAT,
>         PowerLink). To add
>         more confusion to the situation, there is the recent
>         introduction of
>         IEEE 802.1Q Time Sensitive Networking (TSN) which claims to
>         allow TCP
>         and UDP to achieve hard real-time performance.
>
>         While there are many robotics protocols out there, only Robot
>         Raconteur
>         and OPC/UA are compatible with existing web and cloud
>         infrastructure.
>         (Some limited support for ROS/ROS2 has become available on
>         AWS, but the
>         design of ROS does not play very well outside of local
>         networks.*) Robot
>         Raconteur implements web browser and web server support by
>         allowing the
>         websocket protocol to be used. Clients can use a URL that
>         specifies that
>         the connection is a websocket, and incoming TCP connections
>         can detect
>         if the connection is the Robot Raconteur protocol or an incoming
>         websocket connection. Robot Raconteur running inside an
>         ASP.NET
>         <https://urldefense.proofpoint.com/v2/url?u=http-3A__ASP.NET&d=DwMDaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=Djn3bQ5uNJDPM_2skfL3rW1tzcIxyjUZdn_m55KPmlo&m=ueq3YmF7UajwgCbtLSplbhn7Ip05wFBM20Kbujzjih0&s=9uchBdRzcuqtIB6lZuT0wlGoelFWgIzMVT4hTBGEVxc&e=>
>         web
>         server has been demonstrated, and there is no technical reason
>         that
>         other server technologies cannot accept Robot Raconteur
>         connections
>         through websockets. (OPC/UA uses SOAP for its web based
>         transport, but
>         support is very poor and only available in a few implementations.)
>
>         The main issue limiting Robot Raconteur for more demanding
>         applications
>         is the use of TCP for data transport. TCP suffers from
>         "head-of-line"
>         blocking, which means that if stale data encounters an error
>         it can stop
>         fresh data from reaching the other peer. There is also the
>         problem of
>         large messages blocking the transmission of smaller, more time
>         sensitive
>         messages on the connection. QUIC appears to solve most of these
>         problems, and the webrtc-quic support under development
>         provides a lot
>         of new and interesting opportunities for integrating robotics
>         applications with web technology. By adopting QUIC, the resulting
>         software will remain completely compatible with web
>         infrastructure.
>
>         Transmitting time-sensitive data requires the ability to
>         multiplex (and
>         prioritize) messages and drop messages if the data contained
>         becomes
>         stale. The multiplexing issue is solved using the "streams as
>         messages"
>         concept in QUIC, with built in priority handling. This design
>         looks very
>         promising, and considerably simpler to use compared to SCTP
>         streams. The
>         current issue that is somewhat questionable is the
>         implementation of
>         partial reliability. The discussion right now is focused on
>         DATAGRAM
>         extensions (draft-pauly-quic-datagram-02), which allow for
>         "raw" access
>         to the socket so protocols such as RTP can tunnel through
>         QUIC. This
>         requirement is quite a bit different than what is required for an
>         application like Robot Raconteur. Robot Raconteur is based on
>         message
>         passing, where either the entire message is received or the
>         entire
>         message is cancelled because the data contained is stale. The
>         message
>         may be considerably larger than MTU, and the QoS may be
>         "partial,"
>         meaning that a set number of attempts may be made to resend,
>         and/or
>         there is an expiration time on the message. This capability is
>         discussed
>         in draft-lubashev-quic-partial-reliability-03, and is similar
>         to how
>         SCTP handles partial reliability. If only a raw DATAGRAM
>         capability is
>         provided, then partial reliability will need to be built on
>         top of QUIC,
>         defeating the purpose of using QUIC for this application. Other
>         applications such as online gaming have very similar performance
>         requirements, so I think that the partial reliability
>         capability will be
>         important to many future users.
>
>         The complexity and required effort to add the partial reliability
>         capability to QUIC is low, so I hope that this capability is
>         not abandoned.
>
>         Robot Raconteur has received a grant from the United States ARM
>         Institute and New York State to begin commercializing the
>         technology.
>         This project will be done in partnership with Wason
>         Technology, LLC,
>         Rensselaer Polytechnic Institute, Southwest Research
>         Institute, and
>         United Technologies Research Center. The project starts soon, and
>         considerable development effort will be invested in the Robot
>         Raconteur
>         technology starting early summer. Integrating QUIC is one of
>         the tasks
>         that I hope to undertake during this project.
>
>         Please let me know if you have any questions about Robot
>         Raconteur or
>         the requirements for QUIC in robotics applications.
>
>              -John Wason
>
>         (* I am aware that there are some caveats to how ROS/ROS2
>         interact with
>         the wider world, but the technologies are not built on or
>         compatible
>         with web standards so an in depth discussion is not relevant
>         for the
>         current topic. ROS does have a UDP transport, but it is not
>         commonly used.)
>
>         -- 
>         John Wason, Ph.D.
>         Wason Technology, LLC
>         16 Sterling Lake Rd
>         Tuxedo, NY 10987
>         (518) 279-6234
>         wason@wasontech.com <mailto:wason@wasontech.com>
>
> -- 
> John Wason, Ph.D.
> Wason Technology, LLC
> 16 Sterling Lake Rd
> Tuxedo, NY 10987
> (518) 279-6234
> wason@wasontech.com  <mailto:wason@wasontech.com>

-- 
John Wason, Ph.D.
Wason Technology, LLC
16 Sterling Lake Rd
Tuxedo, NY 10987
(518) 279-6234
wason@wasontech.com