ネットワーク遅延対策技術
ネットワーク遅延対策技術~消失訂正符号
ネットワーク遅延とパケットロスの両方に対応するため、我々はTCPの代わりにUDP(User Datagram Protocol)に注目しました。UDPとはライブ中継などのストリーミング動画中継に用いられるプロトコルです。UDP通信はACKを待たずに次々とデータを送る方式ですので、データが確実に到達する保証はありませんが、TCP通信と違いネットワーク遅延やパケットロスの影響によるスループットの低下が発生しないという特徴があります。しかし、ストリーミング動画であれば、画面の一部分が一時的に消えてしまっても問題はありませんが、エンジニアリングクラウドでの仮想デスクトップでは、CAD画像が崩れてしまう、操作情報が送られないなどの問題が起きてしまいます。
そこで富士通研究所では独自の消失訂正符号RPS(Random Parity Stream)を新たに開発し、UDP通信とRPSを組み合わせることでネットワーク遅延とパケットロスの影響によるスループットの低下が発生せず、また確実にデータを送受信可能な、高速データ転送技術を開発しました。消失訂正符号とはFEC(Forward Error Correction:前方誤り訂正)の一種であり、送信側であらかじめデータに冗長性を付加しておくことで、送信データの一部が消失した場合でも、受信側では追加の情報を要求せずに、元のデータを復元する技術です。
消失訂正符号の仕組みについて、まずはパリティ符号を例に用いて説明します。送信しようとしているパケットが1、2、3であった場合に、パリティ符号では全てのパケットを加算した6というパケットをパリティパケットとして余分に送信します。途中で2が消えてしまった場合でも、受信側では1と3と6から2というパケットを復元することができます。このようにパリティ符号では1つまでのパケットロスを復元することが可能です。
富士通研究所で開発したRPS符号では、図3のように送信パケットを組み合わせて、全てのパケットをパリティパケットに変換します。例えば、送信するパケットが1、2、3、4であった場合に、1と2を組み合わせたパケットをaとします。同様に2と3を組み合わせたパケットをbとします。この、どのパケットを組み合わせるかというところがRPS符号で最も重要なところであり、長時間に及ぶシミュレーションを行って、パケットロスに対して最も復元できる可能性の高い組み合わせを求めています。
図3のように送信経路でパケットロスが発生しパケットb、e、fの3つがロスしてしまったとしても、受信側では受信することができたパケットdとgを組み合わせてパケット1を復元し、パケットaとdとgからパケット2を復元することができます。このように再送を待たずに受信することができたパケットのみを組み合わせることで元のパケットを復元しています。パケットロスに対してどれくらいのパリティパケットを生成するかを自由に変更できるところがRPS符号の特徴であり、パケットロスの発生確率が大きい回線では余分なパケットを多くすることもできます。
図3:RPS符号とUDPを用いたデータ転送の仕組み(クリックで拡大) |
富士通ではUDP転送とRPS符号を使った高速データ転送をパッケージ化した「BI.DAN-GUN」をご提供しています。往復遅延時間が300ミリ秒である日欧間を想定した疑似環境において500MBのファイル転送にかかる時間を評価したところ、TCPを用いたFTP転送では190分かかりましたが、「BI.DAN-GUN」では10分にまで短縮でき、約20倍の高速化の効果が確認できました。