Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error correction for network packets (proof of concept) #266

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

lrq3000
Copy link

@lrq3000 lrq3000 commented Mar 5, 2017

This implements a proof of concept for #124.

The goal is to protect UDP network packets with error correction code (Reed-Solomon), in order to reduce the number of dropped/incorrect packets. This should significantly enhance long-distance reliability (eg, servers in different countries from clients).

This is not made as a replacement to packets duplication, but rather an additional protection mechanism.

This code is currently untested. Help is welcome, particularly in network packets and messages management (I can fix all issues about Reed-Solomon, but I am inexperienced in ioq3 networking). I commented as much as possible so that the intent should be clear even if some code are wrong.

TODO:

  • Make the PR work (of course).
  • Implement for fragmented packets.
  • Add a cvar to enable/disable.
  • Bonus: allow tweaking of number of ecc symbols with a simple sv* cvar. This cvar would be sent by server in the configstring, so that clients would know what number of ecc symbols to use. Would also need to make rscode lib use a runtime variable instead of a constant (see ecc.h #define NPAR 4, this is the number of ecc symbols).

lrq3000 added 2 commits March 3, 2017 20:01
Signed-off-by: Stephen L. <lrq3000@gmail.com>
Signed-off-by: Stephen L. <lrq3000@gmail.com>
@pbrochart
Copy link

Hi,

Just to say i tested your proof of concept (added changes here and there to make compiler works fine).
But that was several months ago and I can not remember exactly.
I lost the source of the code and i have just the binary.

When client was trying to connect to server, it was disconnected (I don't remember the error message).

Base automatically changed from master to main February 10, 2021 09:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants