xtaci / kcptun

A Quantum-Safe Secure Tunnel based on QPP, KCP, FEC, and N:M multiplexing.
MIT License
13.81k stars 2.53k forks source link

Yet another TCP performance enhancing proxy based on UDP and FEC #920

Open yeliqseu opened 1 year ago

yeliqseu commented 1 year ago

Hi all,

Recently, our research group has implemented a novel TCP PEP based on UDP and FEC. To some extent, this work is inspired by kcptun. Therefore, we think it might be appropriate to post here and would like to see if you are interested.

Our target scenario is the non-terrestrial networks (NTNs), where the links are often lossy and has long propagation delay. Different from kcptun which uses Reed-Solomon code, which is a block code, we have investigated the usage of another type of FEC called streaming code (SC), which may be viewed as a convolutional counterpart of block codes. We have found that the SC-enhanced PEP can be retransmission-free, which is very attractive for NTN scenarios where retransmission would cause long head-of-line (HoL) blocking delay and hence cause fluctuating goodput at the application layer. The PEP is named as PEPesc (PEP Enhanced by SC).

The PEPesc work has been published at IEEE Transactions on Mobile Computing (https://ieeexplore.ieee.org/document/10107444), where we present the design and the analysis in detail, and have also included a comparison with kcptun in certain scenarios (we do not claim that PEPesc would beat kcptun in all cases, but just in certain lossy long-distance NTN scenarios). The source codes have been open-sourced at https://github.com/yeliqseu/pepesc. Please note that the current implementation is only a prototype for research verification, and is far from a matured (and deploy-able) product as kcptun.

We are interested in introducing the SC to kcptun, and to see whether it would help in other (terrestrial) Internet scenarios. It would be great to hear suggestions and comments from kcptun users.

Shilyx commented 5 months ago

I don't like python

xtaci commented 5 months ago

Nice one, expecting for comparsions.