UFlow
UFlow adalah perpustakaan Rust dan protokol jaringan UDP untuk transfer data internet waktu nyata, dengan fokus pada kesederhanaan dan ketahanan. Meskipun telah dirancang dari awal, antarmuka dan fungsionalitas UFlow terinspirasi oleh perpustakaan ENet yang terkemuka.
Fitur
- Transfer data berorientasi paket antara dua host
- Fragmentasi dan perakitan kembali paket otomatis sesuai dengan MTU internet (1500 byte)
- Jabat tangan koneksi 3 arah untuk manajemen koneksi yang tepat
- Hingga 64 aliran paket yang diurutkan secara independen
- 4 mode transfer paket intuitif: Sensitif terhadap Waktu , Tidak Dapat Diandalkan , Persisten , dan Dapat Diandalkan
- Kontrol kemacetan streaming yang ramah TCP diimplementasikan sesuai dengan RFC 5348
- Pengodean bingkai dan protokol transfer yang efisien dengan overhead paket minimal
- Validasi CRC untuk semua frame yang dikirimkan (Polinomial: 0x132c00699)
- Throughput paket 100% dan pesanan pengiriman tidak terpengaruh dalam kondisi jaringan ideal
- Manajemen ID urutan kedap air untuk mitigasi dup maksimum
- Batas memori penerima yang dapat dikonfigurasi aplikasi (untuk mencegah serangan alokasi memori)
- Pengakuan data yang tidak divalidasi (untuk mencegah tingkat kehilangan/spoofing bandwidth)
- Tahan terhadap amplifikasi DDoS (rasio permintaan-balasan ≈ 28:1)
- Dirancang dengan cermat dan diuji unit untuk memastikan perilaku bebas gangguan
- Implementasi tanpa thread dan non-pemblokiran
Dokumentasi
Dokumentasi dapat ditemukan di docs.rs.
Arsitektur
Meskipun versi sebelumnya dijelaskan di whitepaper, sementara itu banyak yang berubah tentang perpustakaan (termasuk namanya!). Versi saat ini memiliki perbaikan sebagai berikut:
- Kontrol kemacetan ramah TCP diterapkan sesuai dengan RFC 5348
- Batas memori penerima (untuk perakitan ulang paket)
- Tidak ada paket atau bingkai penjaga
- Mode pengiriman paket tambahan yang menyebabkan paket dijatuhkan jika tidak dapat segera dikirim (Sensitif Waktu)
- Tidak ada iterasi mengenai jumlah saluran
Desain baru akan segera™ dirangkum dalam whitepaper yang diperbarui.