Re: QUIC for robotics and other time-sensitive applications

John Wason <johnwason1@gmail.com> Wed, 01 May 2019 18:28 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 102BC120143 for <quic@ietfa.amsl.com>; Wed, 1 May 2019 11:28:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.24
X-Spam-Level:
X-Spam-Status: No, score=0.24 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] 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 o-LCuFp_i6YG for <quic@ietfa.amsl.com>; Wed, 1 May 2019 11:28:15 -0700 (PDT)
Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) (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 E653B120136 for <quic@ietf.org>; Wed, 1 May 2019 11:28:14 -0700 (PDT)
Received: by mail-qk1-x736.google.com with SMTP id b7so1349817qkl.2 for <quic@ietf.org>; Wed, 01 May 2019 11:28:14 -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=DhzSbUqBDrdPOKML1awNvLC6PJcGcNyd80Ki7FiTEig=; b=MjOoeSxG/j3Iiza8ggJv9SsHRUX6NH4WlMtmfJ3xevfXfkj7EFxzD1MhBXcSedjDwe nBAaS1FjP5X4av0mwZLl+iBTw0jDna1GbRmEC+BYJ9OGK2B/vgadA4K3Dk6GK3q2UIUW M6ETsm4IfwuYcoPdyco0Fbd29NOFKUSxrdmomeaByiHm9+T8cbfQvcIOtC/tKnk8DlgH oa9WkYIyDD2jiMO7w9a2AxQGCWSULvXqKy+lnmshESMJ+YYGx4Jrm7F2YjZQ8kgvQvii ZzhuqOHUX8V9tsJ+FnDJcIFs4MDq4mF5TgG6I68jqCxKxC/KJeyCSqzTz8Tz1FNcO/KL Dhyw==
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=DhzSbUqBDrdPOKML1awNvLC6PJcGcNyd80Ki7FiTEig=; b=GFjIuApXDu4OvLtSWPGC9+SFPC9pjTnOmAZCJtLyty5pMWL7ExsNP5+0htxM/0JpRE yP9xdrsh+Oqj0DL/SE04f/6D3cKEqqohi5WKgGV9Xr4VHYip7OVvqt0m9bQehODXoCWx dHGCTY9GAIqiWcBg0+BuXBxNHbMM2wPhfXQ2uDgEVi1D9NcdQ6eM7oLdCvs9LmCPwTxW Hh7ld+Uo/VwZYlURU5ZhHum94MYXkl42uVItCbR4mFpUTAH2SKI4q0OAK1jqMgbsyGYa +hQ2HzSEqcBwvgd9VIWGiJQqXVi4gTBnHCq9Q9rJegHrnHecGgxbORjhoNTNHZUpsBBx S0QQ==
X-Gm-Message-State: APjAAAUDTw+xhFYpoV9PDjf1EBqrLz8B1epD6YmBEE1CWYIF0kpNeEDr rc0yCxGJ2I9g1kaE5RRGeHv91ADg
X-Google-Smtp-Source: APXvYqysFd/txr6yI+F3nJrdOJFwx35rC5YXXdS3Kzo94xS9k7sR8zFO0VUlu1+LN76fcea/+bpbIg==
X-Received: by 2002:a37:b683:: with SMTP id g125mr6165597qkf.249.1556735293588; Wed, 01 May 2019 11:28:13 -0700 (PDT)
Received: from [192.168.1.94] (ool-44c6b4b5.dyn.optonline.net. [68.198.180.181]) by smtp.googlemail.com with ESMTPSA id 4sm1067662qtt.90.2019.05.01.11.28.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 May 2019 11:28:12 -0700 (PDT)
Subject: Re: QUIC for robotics and other time-sensitive applications
To: "Lubashev, Igor" <ilubashe@akamai.com>, Mikkel Fahnøe Jørgensen <mikkelfj@gmail.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> <3c34ef0d-40ae-3ec0-6a60-2da4dab1b339@gmail.com> <CAN1APdeq8-tTOki4-KHPLBDxJNupJZK8jePjsfT7XEeJhR7fUA@mail.gmail.com> <fc0a9e35393a435a9b6f5662aef866e2@usma1ex-dag1mb5.msg.corp.akamai.com>
From: John Wason <johnwason1@gmail.com>
Message-ID: <fd72610b-c4af-3134-34c1-f13cabcfc5a8@gmail.com>
Date: Wed, 01 May 2019 14:28:11 -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: <fc0a9e35393a435a9b6f5662aef866e2@usma1ex-dag1mb5.msg.corp.akamai.com>
Content-Type: multipart/alternative; boundary="------------6C42F9741C3DBC5079F09753"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/iJ5dSwxqErHpE1HWTnLlXgIqR-8>
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 18:28:18 -0000

Would it make sense to add support for isochronous data directly to the 
QUIC protocol? DDS has the ability to set the requested update rate and 
QoS of different topics. My plan has been to emulate this functionality 
using streams at the application layer, but I am thinking now that there 
may be some benefit to having specialized flow control and QoS 
capabilities for this type of data. Besides robotics, this type of data 
is used extensively for applications like online gaming and high 
frequency trading so I think there is a large user base that would 
benefit from the extra capabilities.

On 5/1/2019 1:33 PM, Lubashev, Igor wrote:
>
> The QUIC library API may include a facility to set/update stream 
> priorities for the sender of data. Webrtc-quic may include the same 
> w/o any change to the underlying QUIC protocol.
>
> However, if a request for a priority change of a stream is originating 
> from the receiver of the data, QUIC transport has no facility to relay 
> this information to the sender.  An application protocol would need to 
> handle this.  I think it is a useful extension for QUIC v2 to push 
> stream priority to the transport, since the transport can manage this 
> control signal more efficiently.
>
> *From:* Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
> *Sent:* Wednesday, May 01, 2019 12:38 PM
> *To:* Lubashev, Igor <ilubashe@akamai.com>; Ted Hardie 
> <ted.ietf@gmail.com>; John Wason <johnwason1@gmail.com>
> *Cc:* IETF QUIC WG <quic@ietf.org>
> *Subject:* Re: QUIC for robotics and other time-sensitive applications
>
> QUIC does not prioritise streams at the transport layer, that is an 
> implementation detail although pacing is recommended. If you bring you 
> own application layer protocol you can decide how to schedule data 
> across streams within the flow control constraints. You could add 
> priorities to your application level custom API. If you layer a 
> protocol on top of H3 you are more constrained since you must assume 
> other implementations that won’t necessarily do what you want them to do.
>
> On 1 May 2019 at 18.22.22, John Wason (johnwason1@gmail.com 
> <mailto:johnwason1@gmail.com>) wrote:
>
>     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>
>         <mailto:johnwason1@gmail.com>
>         *Sent:* Tuesday, April 30, 2019 5:52 PM
>         *To:* Ted Hardie <ted.ietf@gmail.com> <mailto:ted.ietf@gmail.com>
>         *Cc:* IETF QUIC WG <quic@ietf.org> <mailto: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  <mailto:wason@wasontech.com>
>
-- 
John Wason, Ph.D.
Wason Technology, LLC
16 Sterling Lake Rd
Tuxedo, NY 10987
(518) 279-6234
wason@wasontech.com