UDPベースのデータ転送プロトコル(UDT )は、高速広域ネットワーク上で大容量のデータセットを転送するために設計された高性能データ転送プロトコルです。このような環境は、より一般的なTCPプロトコルにとっては通常不利です。
初期バージョンは超高速ネットワーク(1 Gbit/s、10 Gbit/sなど)で開発およびテストされましたが、最近のプロトコルバージョンでは、一般的なインターネットにも対応するように更新されています。例えば、このプロトコルはランデブー接続設定をサポートするようになりました。これは、UDPを使用してNATファイアウォールを通過する際に望ましい機能です。
UDTにはオープンソースの実装があり、 SourceForgeで入手できます。高速データ転送をサポートする最も人気のあるソリューションの1つであり、多くの研究プロジェクトや商用製品に採用されています。
UDTは、ユンホン・グー[ 1 ]がイリノイ大学シカゴ校の国立データマイニングセンター(NCDM)のロバート・グロスマン博士の研究室で博士課程在学中に開発しました。グー博士は卒業後もプロトコルの維持と改良を続けています。
UDTプロジェクトは、安価な光ネットワークが普及し、高速広域ネットワークにおけるTCPの効率性問題への認識が高まった2001年に始まりました。UDTの最初のバージョンは、SABUL(Simple Available Bandwidth Utility Library)としても知られ、プライベートネットワーク上での科学データの大量転送をサポートするように設計されました。SABULは、データ転送にUDPを使用し、制御メッセージには別のTCP接続を使用しました。
2003年10月、NCDMは米国シカゴからオランダの アムステルダムへのデータ転送において、毎秒6.8ギガビットの速度を達成した。30分間のテスト中に、約1.4テラバイトのデータが送信された。
SABULは、2004年にリリースされたバージョン2.0以降、UDTに名称変更されました。UDT2では、SABULにあったTCP制御接続が削除され、データと制御情報の両方にUDPが使用されるようになりました。また、UDT2では、UDTとTCPの同時フローを「公平かつ友好的に」実行できる新しい輻輳制御アルゴリズムが導入されました。
UDT3(2006年)は、このプロトコルの利用範囲を汎用インターネットにまで拡大しました。輻輳制御は、比較的低い帯域幅にも対応できるよう調整されています。また、UDT3はシステムリソース(CPUとメモリ)の使用量を大幅に削減しました。さらに、UDT3ではユーザーが独自の輻輳制御アルゴリズムを簡単に定義してインストールできます。
UDT4 (2007) では、高同時接続とファイアウォール通過をより適切にサポートするための新機能がいくつか導入されました。UDT4 では、複数の UDT 接続を同じ UDP ポートにバインドできるようになり、UDP ホールパンチングを容易にするためのランデブー接続設定もサポートされました。
現在、プロトコルの第5バージョンが計画段階にある。考えられる機能としては、単一の接続上で複数の独立したセッションをサポートする機能などが挙げられる。
さらに、UDTのセキュリティ機能が欠如していることが商用環境での初期実装における問題であったため、ベルナルド(2011)は博士課程の研究の一環としてUDTのセキュリティアーキテクチャを開発しました。ただし、このアーキテクチャは、さまざまなネットワーク環境(例えば、光ネットワーク)でのUDTをサポートするために改良が進められています。
UDTは、ユーザーデータグラムプロトコル(UDP)をベースに構築されており、輻輳制御と信頼性制御のメカニズムが追加されています。UDTは、アプリケーションレベルのコネクション指向型双方向プロトコルであり、信頼性の高いデータストリーミングと部分的な信頼性のあるメッセージングの両方をサポートします。
UDTは、パケットの配信を確認するために定期的な確認応答(ACK)を使用し、パケットの損失を報告するために否定ACK(損失報告)を使用します。定期的なACKは、データ転送速度が高い場合に、逆方向の経路における制御トラフィックを削減するのに役立ちます。これは、このような状況では、ACKの数がデータパケットの数ではなく、時間に比例するためです。
UDTは、AIMD(加算増加乗算減少)方式の輻輳制御アルゴリズムを採用しています。増加パラメータは、利用可能な帯域幅(パケットペア技術を用いて推定)に反比例するため、UDTは高帯域幅を迅速にプローブでき、最大帯域幅に近づくと速度を落として安定性を向上させることができます。減少係数は1/8から1/2の間の乱数です。これにより、同期損失による悪影響を軽減できます。
UDTでは、パケット送信はレート制御とウィンドウ制御の両方によって制限されます。送信レートは、上述のAIMDアルゴリズムによって更新されます。輻輳ウィンドウは、二次的な制御メカニズムとして、受信側のデータ到着レートに応じて設定されます。
UDT実装では、輻輳制御に関連する一連の変数をC++クラスで公開し、ユーザーがこれらの変数を操作するためのコールバック関数を定義できるようにします。これにより、ユーザーはこれらのコールバック関数の一部またはすべてをオーバーライドすることで、制御アルゴリズムを再定義できます。この機能を使用すれば、ほとんどのTCP制御アルゴリズムを100行未満のコードで実装できます。
従来のクライアント/サーバー接続設定(呼び出し元/リスナーとも呼ばれ、リスナーが接続を待ち、複数の呼び出し元からの接続を受け入れる可能性がある)に加えて、UDTは新しいランデブー接続設定モードもサポートしています。このモードでは、両側がそれぞれのポートで待機し、同時にピアに接続します。つまり、両者が互いに接続します。そのため、両者は接続に同じポートを使用する必要があり、両者は役割が同等です(従来の設定におけるリスナー/呼び出し元の役割とは対照的です)。ランデブーは、両方のピアがファイアウォールの内側にいる場合のファイアウォール通過に広く使用されています。
UDTは、光ネットワークを介した高速データ転送をサポートするために、高性能コンピューティングにおいて広く利用されています。例えば、グリッドコンピューティングで広く使われているデータ転送ツールであるGridFTPは、データ転送プロトコルとしてUDTに対応しています。
汎用インターネット上では、UDTは広域ネットワークを介した高速ファイル転送のための多くの商用製品で使用されている。
UDTは完全にUDPに基づいているため、TCPがUDPに比べて不利な多くの状況でも使用されています。こうした状況には、ピアツーピアアプリケーション、ビデオおよびオーディオ通信などが含まれます。
UDTは、高速ネットワークにおけるデータ伝送のインフラ要件に対応する最先端のプロトコルと考えられています。しかし、他の多くのプロトコルと同様に、伝送制御プロトコル(TCP)やUDPといった既存のプロトコルのセキュリティメカニズムのみに依存しているため、その開発は新たな脆弱性を生み出しています。
シドニー工科大学のダニーロ・バレロス・ベルナルド博士(オーストラリア技術ネットワークのメンバー)が行った研究は、提案されたセキュリティメカニズムを用いたUDTの実践的な実験に焦点を当て、TCP/UDPで使用されている他の既存のセキュリティメカニズムをUDTに利用することを探るもので、様々なネットワークおよびセキュリティ科学コミュニティで興味深い評価を得ている。
セキュリティメカニズムを分析するために、プロトコル合成論理(PCL)を用いて、その適用可能性を判断するための形式的な正当性証明を実施しています。このアプローチはモジュール式で、各プロトコルセクションの個別の証明から構成され、各セクションが確実に使用できるネットワーク環境についての洞察を提供します。さらに、この証明は、さまざまな障害回復戦略やその他の実装および構成オプションにも適用可能です。彼らは、文献にあるTLSおよびKerberosのPCLからこの手法を導き出しています。書き換えシステムとオートマタを用いて、セキュリティアーキテクチャの開発と検証に取り組んでいます。
彼らの研究成果は、文献上初めてとなるものであり、UDTのセキュリティアーキテクチャに関する、より堅牢な理論的かつ実践的な表現を提供し、他の高速ネットワークプロトコルとの連携も可能である。
UDTプロジェクトは、公共インターネットを介したライブビデオストリーミングの伝送信頼性を活用するSRTプロジェクトの基盤となっている。
UDT チームは、高性能コンピューティング、ネットワーキング、ストレージ、分析の世界最高峰の会議であるACM/IEEE スーパーコンピューティング会議で、権威ある帯域幅チャレンジを 3 回獲得しました。 [ 2 ] [ 3 ] [ 4 ]
SC06(フロリダ州タンパ)では、チームはUDTを使用して、天文学データセットを イリノイ州シカゴからフロリダ州タンパまで、ディスク間転送で8 Gbit/sの速度で転送しました。SC08(テキサス州オースティン)では、チームはボルチモア、シカゴ(2か所)、サンディエゴの4つのデータセンターにまたがる120ノードシステム上で、さまざまな分散アプリケーションを含む複雑な高速データ転送におけるUDTの使用を実証しました。SC09(オレゴン州ポートランド)では、NCDM、海軍研究所、iCAIRの共同チームが、UDTを搭載した広域データ集約型クラウドコンピューティングアプリケーションを紹介しました。