Categorygithub.com/getlantern/multipath
modulepackage
0.0.0-20230510135141-717ed305ef50
Repository: https://github.com/getlantern/multipath.git
Documentation: pkg.go.dev

# README

Multipath aggregates ordered and reliable connections over multiple paths together for throughput and resilience. It relies on existing dialers and listeners to create net.Conns and wrap them as subflows on which it basically does two things:

  1. On the sender side, transmits data over the subflow with the lowest roundtrip time, and if it takes long to get an acknowledgement, retransmits data over other subflows one by one.
  2. On the receiver side, reorders the data received from all subflows and delivers ordered byte stream (net.Conn) to the upper layer.

See docs in multipath.go for details.

This code is used in https://github.com/benjojo/bondcat, and hat's off to @benjojo for implementing many fixes.

At a high level, this concept is built on a similar notion as MultiPath TCP, but our "multipath" works at a higher level in the stack where it implements different protocols that each have their own subflow but are all running on their own TCP or reliable UDP transports underneath.

# Functions

No description provided by the author
No description provided by the author
ReadVarInt reads a number in the QUIC varint format.
VarIntLen determines the number of bytes that will be needed to write a number.
WriteVarInt writes a number in the QUIC varint format.

# Variables

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author

# Interfaces

Dialer is the interface each subflow dialer needs to satisify.
Stats is also provided by the multipath dialer so the caller can get and print the status of each path.
StatsTracker allows getting a sense of how the paths perform.