UFlow
UFlow ist eine Rust-Bibliothek und ein UDP-Netzwerkprotokoll für die Echtzeit-Datenübertragung im Internet, wobei der Schwerpunkt auf Einfachheit und Robustheit liegt. Obwohl es von Grund auf neu entwickelt wurde, sind UFlows Benutzeroberfläche und Funktionalität von der ehrwürdigen ENet-Bibliothek inspiriert.
Merkmale
- Paketorientierte Datenübertragung zwischen zwei Hosts
- Automatische Paketfragmentierung und -zusammenfügung gemäß der Internet-MTU (1500 Bytes)
- 3-Wege-Verbindungs-Handshake für eine ordnungsgemäße Verbindungsverwaltung
- Bis zu 64 unabhängig sequenzierte Paketströme
- 4 intuitive Paketübertragungsmodi: zeitkritisch , unzuverlässig , dauerhaft und zuverlässig
- TCP-freundliche Streaming-Überlastungskontrolle gemäß RFC 5348 implementiert
- Effizientes Frame-Kodierungs- und Übertragungsprotokoll mit minimalem Paket-Overhead
- CRC-Validierung für alle übertragenen Frames (Polynom: 0x132c00699)
- 100 % Paketdurchsatz und eine unbeeinflusste Zustellungsreihenfolge unter idealen Netzwerkbedingungen
- Wasserdichte Sequenz-ID-Verwaltung für maximale Dup-Abwehr
- Von der Anwendung konfigurierbare Empfängerspeichergrenzen (zur Verhinderung von Speicherzuweisungsangriffen)
- Nicht validierte Datenbestätigungen (um Verlustraten-/Bandbreiten-Spoofing zu verhindern)
- Resistent gegenüber DDoS-Verstärkung (Anfrage-Antwort-Verhältnis ≈ 28:1)
- Sorgfältig entworfen und getestet, um ein störungsfreies Verhalten zu gewährleisten
- Threadlose, nicht blockierende Implementierung
Dokumentation
Die Dokumentation finden Sie unter docs.rs.
Architektur
Obwohl im Whitepaper eine Vorgängerversion beschrieben wird, hat sich inzwischen viel an der Bibliothek geändert (einschließlich des Namens!). Die aktuelle Version weist folgende Verbesserungen auf:
- TCP-freundliche Überlastungskontrolle gemäß RFC 5348 implementiert
- Speichergrenzen des Empfängers (für die Paketzusammenstellung)
- Keine Sentinel-Pakete oder Frames
- Ein zusätzlicher Paketsendemodus, der dazu führt, dass Pakete verworfen werden, wenn sie nicht sofort gesendet werden können (zeitkritisch)
- Keine Iteration über die Anzahl der Kanäle
Das neue Design wird bald™ in einem aktualisierten Whitepaper zusammengefasst.