Skip to content

Yggdrasil and head of line blocking #44

@yoonsikp

Description

@yoonsikp

Hello,

From analyzing the yggdrasil protocol - I believe that the program does the following, please correct me if I am wrong.

For each peer connection, it uses a single stream that is ordered and reliable -- TCP, TLS etc. When forwarding traffic, it will choose an idle peer connection to send the traffic data. If there is any back-pressure from the operating system buffers, it will begin to drop the first HEAD packet that is at least >25ms old from the largest destination queue.

Interestingly, I noticed that QUIC support was added, but ygg is not using the main benefit of QUIC - multiple streams that are independent of one another.

I am wondering two things:

  1. Is there benefit to having multiple connections to the same peer, since ygg will send traffic over the first idle connection? Will this help prevent head-of-line blocking? (I ask because on the public peers website it states: There is no benefit whatsoever from adding the same peer multiple times using different protocols.)

  2. Would creating many (for example 3 or more) streams per QUIC connection also help prevent head-of-line blocking? For example, if destination queues are randomly assigned to the first open QUIC stream, then the L2 network layer will be able to drop packets proportional to the usage of the link, (i.e if DEST A on QUIC stream "1" is hogging bandwidth it will be more likely to be dropped) less likely to affect other streams (streams "2" and "3").

Thanks so much.

Yoon
[email protected]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions