Skip to content

A UDP protocol offering multiplexing and optional reliability for games and other interactive applications.

License

Notifications You must be signed in to change notification settings

ahicks92/fastnet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Fastnet#

Fastnet aims to be a multiplexed, message-based protocol over UDP. It splits a physical connection into 32768 streams, each of which guarantees in-order delivery of messages. Every message may be sent either reliably or unreliably. In addition, Fastnet aims to support P2P connections via UDP hole punching, the ability to efficiently distribute large assets and other data to clients, and efficient TCP fallback. Finally, Fastnet will be fully specified.

This repository includes the specificationn and a reference implementation in Rust.

Unlike my other projects, Fastnet is primarily aimed at teaching me things (namely rust and the design of reliable protocols over unreliable transports). I anticipate that Fastnet will be useful, but other libraries already implement much of this functionality. That said and in so far as I know, you have to go to C++ or one of the big game engine/distribution platforms to find everything here with a convenient interface.

The biggest advantage of this protocol, however, is that it is fully and formally specified. Consequently, others may learn from and maintain it without having to read the code from top to bottom. A not insignificant part of my motivation for this project is the documentation: finding good resources on the designs of such protocols as offered here is surprisingly difficult, and source code for libraries providing them is often large, cumbersome, and uncommented. Furthermore, having a specification makes it easier for third parties to identify possible security issues and evaluate Fastnet as compared to other alternatives.

The license of this project is MPL2.

About

A UDP protocol offering multiplexing and optional reliability for games and other interactive applications.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages