Technical Report: Implementation of Single Packet Number
Space in Multi-Path QUIC
Yingqi Tang, Yunfei Ma, Yanmei Liu
Alibaba Group
ABSTRACT
Over the past few of years, we have witnessed increasing inter-
ests in the use cases of multipath QUIC from both industry and
academia [
1
–
3
]. For example, Alibaba deployed XLINK [
1
], a QoE-
driven multipath QUIC solution, in Taobao short video and showed
benets in both reduced tail latency and video rebuering. For
the time being, the multipath QUIC protocol is in the process of
standardization at the IETF QUIC working group, with the draft re-
cently updated to version 02 [
3
]. The focus of the draft is to provide
basic guidance on the implementation so that we can encourage
more exploration, testing, and nally, an accelerated adoption of
this technology. However, draft-02 has brought up an open issue
on whether the multipath QUIC should be implemented using sin-
gle packet number space (SPNS) or multiple packet number space
(MPNS), as in the current draft, both options co-exist.
Knowing that one cannot draw a solid conclusion without ex-
periments, we implement both SPNS and MPNS at Alibaba and
measured their performance. The goal is to help the community
better understand the implication, and we hope this report can be
a useful resource for engineers and researchers who are interested
in deploying multipath QUIC. We also suggest readers to read [
4
],
which is another comparative study between MPNS and SPNS based
on Picoquic [5].
1 INTRODUCTION
We assume the reader is familar with QUIC. For the backgroud
knowledge, please refer to RFC9000 [
6
]. There is also a fantastic
blog [
7
] by Lucas Pardue on this topic that we encourage readers
to read. Our today’s discussion will be on SPNS vs. MPNS. So what
are they?
SPNS:
Single Packet Number Space (SPNS) means that in multipath
QUIC, packets transmitted on dierent paths will be assigned packet
numbers from the same packet number space. For example, if packet
number #1 is assigned to a packet on the rst path, the same number
(i.e., #1) cannot be assigned to a packet on another path. In other
words, packet number overlapping is not allowed.
MPNS:
Multiple Packet Number Space (MPNS) means that in
multipath QUIC, packet numbers are assigned based on a per-path
manner, and packets on dierent paths use separate packet number
spaces. For example, two paths can both number their packets with
the number #1,#2, and #3. Packet number overlapping is perfectly
ne.
There are pros and cons in each option. For SPNS, the benets
include: (1) it does not require any change in how the nonce is
computed for AEAD; (2) it allows multi-path transport even when
zero-CID is used. The drawbacks of SPNS include: (1) it cannot
straightforwardly use the algorithms in RFC9002 [
8
] for loss detec-
tion, RTT sampling, and recovery; (2) the packet ACK size is larger
due to increased number of holes in the packet range records, and
(3) there is a lack of ECN support.
For MPNS, the benets include: (1) the loss detection and recov-
ery are more straightforward and easy to implement; (2) the ACK
size is not bloated as the packet number is continuous on each path;
(3) supporting ECN is easy with path identiers. The drawbacks of
MPNS are: (1) it requires the change of how we compute the nonce;
(2) it needs the CID to identify each path, and thus, MPNS does not
work with zero-CID cases.
Indeed, the qualitative properties such as the nonce modication,
the support of zero-CID cases, and the support of per-path ECN
are easy to reach concensus among the working group. However,
questions like the implementation complexity and performance
tradeo typically do not have a yes-or-no answer without further
experiments and real-world deployments.
Based on the draft-ietf-quic-multipath-01 [
9
], we implement
multipath QUIC for both SPNS and MPNS. An endpoint can decide
whether to use single path, multipath with MPNS or multipath with
SPNS through the negotiation with a peer. For SPNS, we highlight
the algorithm changes required for both sender and receiver to
maintain performance, including how to obtain accurate and timely
RTT estimations. Our implementation is based on XQUIC [
10
], an
open source QUIC library in C language developed by Alibaba
Group.
Our experiement consists of two parts: (1) controlled experi-
ment with Mahi-mahi mpshell emulation tools and (2) a large-scale
A/B test in Taobao RPC over HTTP scenario with over 1.5 million
request samples. In this typical scenario, our results showed that
SPNS had a slight performance degradation of less than 1% on av-
erage request completion time compared with that of MPNS. We
observed that its impact on the request completion time for small-
sized RPC requests was not signicant. However, SPNS became
slower than MPNS when the request size was large. In terms of the
acknowledgement cost, if not constrained, the average size of ACK
frame of SPNS could go 50% higher than that of MPNS.
We tried to reduce the ACK frame size of SPNS using strategies
discussed on the WG draft’s Github [
11
]. Our results showed that
we were able to bring down average ACK frame size of SPNS by
40%. However, in doing so, we observed decrease in transmission
eciency.
2 SINGLE PACKET NUMBER SPACE
Conceptually, a packet number space is the context in which a
packet can be processed and acknowledged. For single path QUIC,
the packet numbers in one space forms a continuous sequence start-
ing from 0. Such a continuity simplies algorithms like loss recovery
and RTT measurements. However, this assumption is no longer
valid in multipath QUIC using SPNS. Fig. 1 illustrates a possible
scenario. There are two paths in the connection: Path 0 and Path 1.
arXiv:2210.13663v1 [cs.NI] 24 Oct 2022