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
- QUIC for robotics and other time-sensitive applic… John Wason
- Re: QUIC for robotics and other time-sensitive ap… Ted Hardie
- Re: QUIC for robotics and other time-sensitive ap… John Wason
- RE: QUIC for robotics and other time-sensitive ap… Lubashev, Igor
- Re: QUIC for robotics and other time-sensitive ap… John Wason
- Re: QUIC for robotics and other time-sensitive ap… Mikkel Fahnøe Jørgensen
- Re: QUIC for robotics and other time-sensitive ap… John Wason
- RE: QUIC for robotics and other time-sensitive ap… Lubashev, Igor
- Re: QUIC for robotics and other time-sensitive ap… John Wason
- Re: QUIC for robotics and other time-sensitive ap… Mikkel Fahnøe Jørgensen
- Re: QUIC for robotics and other time-sensitive ap… Lucas Pardue
- Re: QUIC for robotics and other time-sensitive ap… Phillip Hallam-Baker