Internet-Draft QUIC-Perf-Multimedia February 2025
Huitema & Nandakumar Expires 1 September 2025 [Page]
Workgroup:
WG Working Group
Internet-Draft:
draft-huitema-moq-qperfm-latest
Published:
Intended Status:
Informational
Expires:
Authors:
C. Huitema
Private Octopus Inc
S. Nandakumar
Cisco

QUIC Multimedia Performance

Abstract

The QUIC multimedia performance protocol (QPERFM) updates the QUIC performance protocol (QPERF). QPERF provides a simple, general-purpose protocol for testing the performance characteristics of a QUIC implementation. QPERFM updates that protocol to simulate the traffic of multimedia application and measure performance in a multi-media oriented way.

About This Document

This note is to be removed before publishing as an RFC.

Status information for this document may be found at https://datatracker.ietf.org/doc/draft-huitema-moq-qperfm/.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 1 September 2025.

Table of Contents

1. Introduction

The QUIC performance protocol (QUIC Perf) defined in [I-D.banks-quic-performance] provides a simple, general-purpose protocol for testing the performance characteristics of a QUIC implementation. This draft extends QPERF to allow simulation and performance measurement of a variety of multimedia applications.

The original QUIC Perf protocol was very simple. The client opens QUIC connection with the ALPN set to "perf", and then it opens bidirectional streams. The first 8 bytes sent by the client on each stream encode the size of the data that the server will send on the return stream. This can be used to measure batch performance, simply requesting a large amount of data and measuring how long it takes to get the result. It can also be used to measure transactional applications: open a large number of streams, require a small amount of data on each, and measure how long it takes to process that many query-reponse exchanges.

We extended this simple protocol to also test "real time" workloads, such as would be generated by "Media over QUIC" (moq). Instead of using the first 8 bytes of a bidirectional stream to merely specify a number of bytes, we use the first 16 bytes of the stream to specify the characteristics of a media stream. We set the first 4 bytes to a reserved value, so the server can distinguish QPERFM requests from QPERF requests.

2. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

3. QUIC Perf protocol Extensions for Multimedia

The standard QPerf protocol uses bidirectional streams in a very simple way: the client opens a stream and starts sending data; the server reads the number of required bytes in the first 8 bytes of the client stream, and sends that many bytes to the client. We extend this protocol by using unidirectional streams and datagrams.

The extended QPerf protocol also uses bidirectional streams. The first 16 bytes sent by the client encode the type of response expected by the sender. The first 8 bytes use reserved values to differentiate these streams from the standard "batch" stream:

The complete set of 16 bytes is defined as:

media request header {
     media or datagram mark (32),
     frame size (32),
     priority (8),
     frequency (8),
     number of frames (24),
     first frame size (24)
}

Upon receiving a request header, the server will start sending frames as specified by the frequency. If the client requested datagrams, the server will send datagrams as specified by the frequency. The first datagram (frame number 0) will be sent immediately. The other datagrams will be sent at:

datagram_send_time = first_datagram_send_time
                   + frame_number*1_second/frequency

Each datagram will carry a header and a payload, with a combined size set to the requested frame size. (The first frame size parameter is ignored for datagrams.) The first bytes of the datagram contain a header encoded as:

datagram header {
    request stream ID (i),
    frame number (i),
    datagram send time (64)
}

The datagram send time is the local time at the server, encoded in microseconds. When all datagrams have been sent, the server closes the media request stream.

If the client requested a "media" stream, the server will send the requested number of frames on the return side of the bilateral stream that carried the client request. The first frame contains "first frame size" bytes, while the other frames contain "frame size" bytes. The first frame is queued on the stream immediately. The next frames will be queued at:

frame_send_time = first_frame_send_time
                + frame_number*1_second/frequency

The first 8 bytes of each frame carry the frame_send_time, set at the local time at which the server queued the frame, expressed in microseconds and encoded on 64 bits.

The client may issue a stop sending request for a specific media request stream. Upon receiving the request, the server will reset the stream, without sending any additional frame.

3.1. Client side measurements

The client can simulate complex scenarios by opening a series of streams and direct the server to send as many media streams. The client can parse the incoming data and extract statistics such as arrival time of different frames, latencies, etc.

4. Security Considerations

Since the performance protocol allows for a client to trivially request the server to do a significant amount of work, it's generally advisable not to deploy a server running this protocol on the open internet.

One possible mitigation for unauthenticated clients generating an unacceptable amount of work on the server would be to use client certificates to authenticate the client first.

5. IANA Considerations

This document has no IANA actions.

6. References

6.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.

6.2. Informative References

[I-D.banks-quic-performance]
Banks, N., "QUIC Performance", Work in Progress, Internet-Draft, draft-banks-quic-performance-00, , <https://datatracker.ietf.org/doc/html/draft-banks-quic-performance-00>.

Acknowledgments

This draft extends Nick Banks original specification of QUIC Perf, and incorporates some of the text in that original draft.

Authors' Addresses

Christian Huitema
Private Octopus Inc
Suhas Nandakumar
Cisco