ユーフロー
UFlow は、シンプルさと堅牢性に重点を置いた、リアルタイムのインターネット データ転送のための Rust ライブラリおよび UDP ネットワーク プロトコルです。 UFlow はゼロから設計されましたが、インターフェイスと機能は由緒ある ENet ライブラリからインスピレーションを得ています。
特徴
- 2 つのホスト間のパケット指向のデータ転送
- インターネット MTU (1500 バイト) に従った自動パケットの断片化と再構成
- 適切な接続管理のための 3 ウェイ接続ハンドシェイク
- 最大 64 個の独立してシーケンスされたパケット ストリーム
- 4 つの直感的なパケット転送モード: Time-Sensitive 、 Unreliable 、 Persistent 、 Reliable
- RFC 5348 に従って実装された TCP フレンドリーなストリーミング輻輳制御
- パケットオーバーヘッドを最小限に抑えた効率的なフレームエンコーディングと転送プロトコル
- すべての送信フレームの CRC 検証 (多項式: 0x132c00699)
- 理想的なネットワーク条件下で 100% のパケット スループットと影響を受けない配信順序
- 重複を最大限に軽減するための防水シーケンス ID 管理
- アプリケーションで構成可能な受信機メモリ制限 (メモリ割り当て攻撃を防ぐため)
- 検証されていないデータ確認応答 (損失率/帯域幅のスプーフィングを防止するため)
- DDoS 増幅に対する耐性 (リクエストと応答の比率 ≈ 28:1)
- 失速のない動作を保証するために、綿密に設計され、単体テストが行われています
- スレッドレス、ノンブロッキング実装
ドキュメント
ドキュメントは docs.rs にあります。
建築
以前のバージョンについてはホワイトペーパーで説明されていますが、その間にライブラリに関して多くの変更が加えられました (名前も含めて!)。現在のバージョンには次の改良点があります。
- RFC 5348に従って実装されたTCPフレンドリーな輻輳制御
- 受信機のメモリ制限 (パケット再構成用)
- センチネルパケットまたはフレームなし
- パケットをすぐに送信できない場合にパケットをドロップする追加のパケット送信モード (時間依存)
- チャネル数を繰り返す必要はありません
新しいデザインは、間もなく更新されたホワイトペーパーにまとめられる予定です。