超流
UFlow 是一個 Rust 庫和 UDP 網路協議,用於即時互聯網資料傳輸,重點是簡單性和穩健性。儘管它是從頭開始設計的,但 UFlow 的介面和功能的靈感來自於古老的 ENet 庫。
特徵
- 兩台主機之間面向資料包的資料傳輸
- 依照互聯網MTU(1500位元組)自動進行封包分段與重組
- 用於正確連接管理的 3 路連接握手
- 多達 64 個獨立排序的資料包流
- 4 種直覺的資料包傳輸模式:時間敏感、不可靠、持久且可靠
- TCP 友善的串流擁塞控制是根據 RFC 5348 實施
- 高效的幀編碼和傳輸協議,資料包開銷最小
- 所有傳輸訊框的 CRC 驗證(多項式:0x132c00699)
- 理想網路條件下封包吞吐率100%,投遞順序不受影響
- 無懈可擊的序列 ID 管理可最大程度地減少重複
- 應用程式可設定的接收器記憶體限制(以防止記憶體分配攻擊)
- 經過隨機數驗證的資料確認(以防止遺失率/頻寬欺騙)
- 能夠抵禦 DDoS 放大(請求-答覆比率 ≈ 28:1)
- 精心設計和單元測試,確保無失速行為
- 無線程、非阻塞實現
文件
文件可以在 docs.rs 中找到。
建築學
儘管白皮書中描述了先前的版本,但同時該庫發生了許多變化(包括名稱!)。目前版本有以下改進:
- 根據 RFC 5348 實作 TCP 友善的擁塞控制
- 接收器記憶體限制(用於資料包重組)
- 無哨兵資料包或幀
- 額外的資料包發送模式,如果無法立即發送資料包,則會導致資料包被丟棄(時間敏感)
- 通道數量無需迭代
新設計將很快™在更新的白皮書中進行總結。