Go implementation of uTP (micro transport protocol) used with BitTorrent, prioritizing simplicity and reliability.
utp is a Go implementation of uTP (micro transport protocol), a UDP-based transport protocol commonly used with BitTorrent. It provides congestion-controlled, reliable communication over UDP as an alternative to TCP, focusing on simplicity and practical reliability rather than strict specification compliance.
Go developers building P2P applications, BitTorrent clients, or networking tools that require efficient UDP-based transport with congestion control.
Developers choose utp for its straightforward, reliable implementation of uTP optimized for real-world use, with features like multiple connection support on a single PacketConn and raw access for protocol sharing.
Use anacrolix/go-libutp instead
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports multiple uTP connections on a single PacketConn, enabling efficient handling for BitTorrent clients and P2P applications, as stated in the README.
Provides raw access to the underlying PacketConn for non-uTP usage, allowing it to be shared with protocols like DHT, which is highlighted as a key feature.
Prioritizes straightforward implementation and practical reliability over complex specification adherence, making it robust for real-world use cases like BitTorrent.
Lacks MTU path discovery, as admitted in the README, which could impact performance in networks with varying MTUs due to simplified design choices.
Uses a fixed 64-slot selective acknowledgment window, limiting flexibility for advanced networking scenarios or dynamic adjustments, as per implementation characteristics.
The README is minimal and relies on GoDoc for detailed API, requiring additional effort for developers to understand setup and advanced usage.