Re: QUIC for robotics and other time-sensitive applications

John Wason <johnwason1@gmail.com> Wed, 01 May 2019 17:33 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 C11E61200A2 for <quic@ietfa.amsl.com>; Wed, 1 May 2019 10:33:31 -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 lPcPLJScJ4IY for <quic@ietfa.amsl.com>; Wed, 1 May 2019 10:33:29 -0700 (PDT)
Received: from mail-yw1-xc36.google.com (mail-yw1-xc36.google.com [IPv6:2607:f8b0:4864:20::c36]) (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 D4D311200B6 for <quic@ietf.org>; Wed, 1 May 2019 10:33:28 -0700 (PDT)
Received: by mail-yw1-xc36.google.com with SMTP id a62so8828424ywa.4 for <quic@ietf.org>; Wed, 01 May 2019 10:33:28 -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=QTV0/M1eGqNO7iHkw1J/1MdOSv2uJi57RNi0OUngzLE=; b=sUs2F+XVVlDeY9SxpgrM74XYmJUYPM03ATN4tzYiH29tTEu9f1ouJvi1AwnP5w+0OU xHofLTl6WfOH2Kid8cHwCzMcAQXQ43ly+6f4ZXUYkzmjlPQ0Xb/WmSZrQTFQlNyR/sDb sEAhHl/ueKiH9CW+yK6sGY1YZuTkxZcJqR9Gm7FVkYMrzuFDXAl5gKSyTz3ryL0D6uSm HfTM9zjbTKjOxdGDFYWClrDflBV53qHFimhKXmeBG3CEfASZML9HNLqvwsGC2VPrtXPH M7xZuqQjIEQ4S8edKQnyHzS5h9Ofevcf9RJQm+OvBf9fqEdpV7o4SbjMegbk7+8dIIgQ 8zOg==
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=QTV0/M1eGqNO7iHkw1J/1MdOSv2uJi57RNi0OUngzLE=; b=Y303hxq6CZK1jnBhe4L2G736yWYVycEKTBaAXIJSFYxGM3crdw5q/LzshYXeOAGL5h qp/L7NCeHgd7llVVXxJqdlSyJjGe9HuYeHr7unOLN0JZ6a6cFFwn8Ioh8P42NehPn9cw OYWaT82bjw89fD+Qltwjgt5VXYz1wm1aWOnfCZ61HsuKhhRiMz0R4naplL3u15esdvwX /MeP2gYzCu73dDdEo5ncerX1mZhDz+eK8gwy+7UZS+HEhi++JmW/P8Ny+LFuShIGFY6A ws80gnp6kJBMnO5HErcStvbvuPIKz3XfZB5K+KiNvfbwqpyuKFskNBqLlK2rmaru+UZv ap+Q==
X-Gm-Message-State: APjAAAVw1v4Fp5p3vz9NYiMvpKIUzfm64Y5eV4DyN2s6kANOVRr/rJez /Q8ragBGXtnnzparhGMgc2HH4xJC
X-Google-Smtp-Source: APXvYqxhhdUJ2nQemc2gz2uZZL/uZZrwq7bjMoexlKtVDWdrqdYbdKcsx5+y+30ObU37Zyyu6rOXrA==
X-Received: by 2002:a81:65d6:: with SMTP id z205mr47956445ywb.313.1556732007617; Wed, 01 May 2019 10:33:27 -0700 (PDT)
Received: from [192.168.11.58] (D8FF7f43.cst.lightpath.net. [216.255.127.67]) by smtp.gmail.com with ESMTPSA id h204sm38639098ywh.110.2019.05.01.10.33.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 May 2019 10:33:26 -0700 (PDT)
Subject: Re: QUIC for robotics and other time-sensitive applications
To: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, "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> <3c34ef0d-40ae-3ec0-6a60-2da4dab1b339@gmail.com> <CAN1APdeq8-tTOki4-KHPLBDxJNupJZK8jePjsfT7XEeJhR7fUA@mail.gmail.com>
From: John Wason <johnwason1@gmail.com>
Message-ID: <1bb52999-d020-422e-db87-733fbc7b0cae@gmail.com>
Date: Wed, 01 May 2019 13:33:25 -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: <CAN1APdeq8-tTOki4-KHPLBDxJNupJZK8jePjsfT7XEeJhR7fUA@mail.gmail.com>
Content-Type: multipart/alternative; boundary="------------AFF208F7D84D084CE1D8D71B"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/nesCJCGMq8RFxBVJmP7PSySJ3AA>
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 17:33:32 -0000

Mikkel,

That makes sense, the order of streams sent shouldn't affect the wire 
protocol. For the flow control, does the protocol provide information 
about how much headroom is left? For instance, it may be very important 
that small, time sensitive streams reach their destination quickly, 
while there may be larger, slower streams that can wait. If the flow 
control is not handled correctly, the slower stream could block the fast 
streams by filling the available bandwidth and buffers.

I am not sure what you mean by "layer on top of H3".

     -John

On 5/1/2019 12:38 PM, Mikkel Fahnøe Jørgensen wrote:
> 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>
>>> *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

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