Re: QUIC for robotics and other time-sensitive applications

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Wed, 01 May 2019 16:38 UTC

Return-Path: <mikkelfj@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 6FCBA12014F for <quic@ietfa.amsl.com>; Wed, 1 May 2019 09:38:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.001
X-Spam-Level: *
X-Spam-Status: No, score=1.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, FREEMAIL_REPLY=1, 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, UNPARSEABLE_RELAY=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 S3wf0ctU8JRM for <quic@ietfa.amsl.com>; Wed, 1 May 2019 09:38:19 -0700 (PDT)
Received: from mail-it1-x134.google.com (mail-it1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) (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 6B934120143 for <quic@ietf.org>; Wed, 1 May 2019 09:38:19 -0700 (PDT)
Received: by mail-it1-x134.google.com with SMTP id r85so10673425itc.2 for <quic@ietf.org>; Wed, 01 May 2019 09:38:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=IRXdFJTCVgu65RWjcknzN7Smfp0fvhd0D4onF5HIxR4=; b=n1TW8Zz0tE+niPfcu9tDfmeTNWXIBKKeZjevPeo6zQlcl8ceB1dWiwt4733wnHxOz+ rUdeWL7fQ0qP3XoNyAi6nZW2/Z91lBZfF99rewTqd4fcmTyGZSpp8ASTrcaBcQXwYgz+ 5UzH4jtSNvpHhOiI/MfO06Z6wFWrvDL76ARxvzGNcw0/pDigAUY9+lU/XLIsbq26wicX CVwjssfjU73aK3AkD21073MXjjnn4MntmWYpJ37GmT71/MtHTjlJg/DFWsclHCLDB+Xf j5D53Ev5UO66TG+eb8hTwNxbn3IJi+xN8lG5Ts96HOOajXkeTJEfyB+rM60sER750D+v oUjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=IRXdFJTCVgu65RWjcknzN7Smfp0fvhd0D4onF5HIxR4=; b=IQ8Mi3A4j3F9qoII5vA90wJZUDc8hTyO7KYIMGV70MoyYpCW8kGHFOZrF9aHCoNnB1 mEterQLL8y/dHjIocE2ji3GexPEZ3CHUEq+49ZiasQKRhO8o93mfg8eIjw3CfLl4zcmn rdT/bE4aodAX/FRvsB4oNqS9FxR3lU+JphUIM2FpKKIuAl9xpdrylcQjMQfsqyt0PTgP rxm5GDf3gd5LmQBuBQ9jBPbYbcWVsm410uMv62BX/5M84ffdmChqMMYDeNXYj/7h0u7f DOVBtUV1Uy4B1wSmm5uUJ6milvZ1Q7YKL+bs/cFhQyYp97rD5Z/zMFjGxEkOmT4qpl/H dv2Q==
X-Gm-Message-State: APjAAAUVVTsmfzzMknb8SYPGmxMmbxItVtlZsi8PIQ1kyL+SIFQ1cN8N IITtNPeQzkbrzvHEk77HefCVSOShJIfqUoqIQWE=
X-Google-Smtp-Source: APXvYqyiLuf9QW+ATmxhh6Fu2s/Ti2hMEzdtkoW3SydnC5ucE3uaNyOO64N6ayb7mPdPyEP+oRPxFg1zZwWGKNhGwj0=
X-Received: by 2002:a24:9d96:: with SMTP id f144mr8170180itd.167.1556728698694; Wed, 01 May 2019 09:38:18 -0700 (PDT)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Wed, 1 May 2019 09:38:17 -0700
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <3c34ef0d-40ae-3ec0-6a60-2da4dab1b339@gmail.com>
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>
X-Mailer: Airmail (420)
MIME-Version: 1.0
Date: Wed, 01 May 2019 09:38:17 -0700
Message-ID: <CAN1APdeq8-tTOki4-KHPLBDxJNupJZK8jePjsfT7XEeJhR7fUA@mail.gmail.com>
Subject: Re: QUIC for robotics and other time-sensitive applications
To: "Lubashev, Igor" <ilubashe@akamai.com>, Ted Hardie <ted.ietf@gmail.com>, John Wason <johnwason1@gmail.com>
Cc: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000018f24d0587d6250d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/7pDPUAlcka8lKHXytT6f41QozSk>
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:38:22 -0000

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) 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.



   1. 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> <johnwason1@gmail.com>
*Sent:* Tuesday, April 30, 2019 5:52 PM
*To:* Ted Hardie <ted.ietf@gmail.com> <ted.ietf@gmail.com>
*Cc:* IETF QUIC WG <quic@ietf.org> <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> 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

-- 

John Wason, Ph.D.

Wason Technology, LLC

16 Sterling Lake Rd

Tuxedo, NY 10987

(518) 279-6234

wason@wasontech.com

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