Package Usage: go: github.com/getlantern/multipath
Package multipath provides a simple way to aggregate multiple network paths
between a pair of hosts to form a single connection from the upper layer
perspective, for throughput and resilience.
The term connection, path and subflow used here are the same as mentioned in
MP-TCP https://www.rfc-editor.org/rfc/rfc8684.html#name-terminology
Each subflow is a bidirectional byte stream each side in the following form
until being disrupted or the connection ends. When establishing the very
first subflow, the client sends an all-zero connnection ID (CID) and the
server sends the assigned CID back. Subsequent subflows use the same CID.
There are two types of frames. Data frame carries application data while ack
frame carries acknowledgement to the frame just received. When one data
frame is not acked in time, it is sent over another subflow, until all
available subflows have been tried. Payload size and frame number uses
variable-length integer encoding as described here:
https://tools.ietf.org/html/draft-ietf-quic-transport-29#section-16
Ack frames with frame number < 10 are reserved for control. For now only 0
and 1 are used, for ping and pong frame respectively. They are for updating
RTT on inactive subflows and detecting recovered subflows.
Ping frame:
Pong frame:
3 versions
Latest release: about 2 years ago
12 dependent packages
View more package details: https://packages.ecosystem.code.gouv.fr/registries/proxy.golang.org/packages/github.com/getlantern/multipath