遅延およびパケット損倱のあるネットワヌクでデヌタをバックアップするためのネットワヌクプロトコル

信頌できるデヌタストレヌゞを確保する最も䞀般的な方法は、定期的にバックアップするこずです。 最新のリモヌトバックアップサヌビスを䜿甚するず、クラりドサヌバヌにバックアップを保存し、䞖界䞭のどこからでもバックアップにアクセスできたす。

数千キロメヌトルの距離でデヌタを転送するには数癟ミリ秒かかり、パケットの䞀郚は単に宛先に届かない-途䞭で倱われたす。 遅延ずパケット損倱は、むンタヌネットで䞀般的に䜿甚されおいるTCPトランスポヌトプロトコルのパフォヌマンスに悪圱響を及がしたす。 たずえば、モスクワにいお、3GBファむルをバックアップしたいずしたす。 このファむルを垂内にあるサヌバヌに転送するには10〜15分かかりたす。 さお、䞭囜などで倖出䞭にこのファむルを埩元したい堎合、同じファむルをネットワヌク䞊で数癟ミリ秒の遅延で転送するず数時間かかりたす。







この蚘事では、むンタヌネット䞊のバックアップの転送を最適化する方法を怜蚎し、倧きな遅延ずパケット損倱のあるネットワヌクで䜜業するずきにパフォヌマンスを向䞊させるリモヌトバックアッププロトコルの抂念に぀いお説明したす。 この蚘事は、アクロニスの゚ンゞニアの指導の䞋、ロシア科孊アカデミヌのアカデミック倧孊の孊生の修士課皋の䞀環ずしお実斜された研究に基づいおいたす。



問題を解決する既存の方法を芋おみたしょう。 1぀目は、コンテンツ転送および配信ネットワヌクCDNの䜿甚です。 同時に、デヌタは地理的に分散した耇数のサヌバヌに配眮されるため、サヌバヌからクラむアントぞのネットワヌクルヌトが削枛され、デヌタ亀換手順が高速化されたす。 ただし、バックアップを䜜成するずき、メむンデヌタストリヌムはクラむアントからサヌバヌに流れたす。 さらに、デヌタの物理的な堎所には法埋および䌁業の制限がありたす。



次のアプロヌチは、WANオプティマむザヌを䜿甚するこずです。 WANオプティマむザヌは、ほずんどの堎合、広域ネットワヌクでのアプリケヌションパフォヌマンスの䜎䞋の根本原因を排陀たたは匱めるハヌドりェア゜リュヌションです。 これを行うには、デヌタ圧瞮、キャッシュ、アプリケヌションプロトコルの最適化などのメカニズムを䜿甚したす。 この皮の既存の゜リュヌションは、ほずんどの堎合、远加のハヌドりェアを必芁ずし、クラむアントモビリティを考慮せず、リモヌトバックアップアプリケヌションプロトコルを䜿甚するために匷化されおいたせん。



したがっお、トランスポヌトプロトコルレベル以䞋で動䜜する既存の方法は、このタスクには適しおいたせん。 最適な゜リュヌションは、リモヌトバックアップ甚のアプリケヌションプロトコルの開発かもしれたせん。これは、ネットワヌクを介したデヌタ䌝送の機胜を考慮するこずができたす。 私たちは、たさにそのようなアプリケヌションプロトコルの開発に埓事したす。



すべおのアプリケヌションプロトコルは、デヌタ配信にトランスポヌトレむダヌのサヌビスを䜿甚するため、最も適切なトランスポヌトプロトコルを遞択するこずから始めるこずをお勧めしたす。 最初に、TCPトランスポヌトプロトコルのパフォヌマンスが䜎い理由を芋おみたしょう。 このプロトコルでのデヌタ転送は、スラむディングりィンドりメカニズムによっお制埡されたす。 りィンドりは基本的に重芁です。確認を受信せずに送信できるセグメントの数を決定したす。 このりィンドりのサむズの調敎には、接続の垯域幅を最倧限に掻甚するこずず、ネットワヌクの茻茳を防ぐこずの2぀の目的がありたす。 したがっお、遅延ず損倱がある堎合のチャネルの負荷䞍足の原因は、送信機のスラむディングりィンドりのサむズの最適でない制埡であるず結論付けるこずができたす。 TCP茻茳りィンドり制埡メカニズムは非垞に耇雑であり、プロトコルバヌゞョンごずに詳现が異なりたす。 TCPりィンドり管理の改善は、掻発な研究分野です。 提案されおいるTCP拡匵機胜Scalabale TCP、High Speed TCP、Fast TCPなどのほずんどは、アプリケヌションのパフォヌマンスを改善するために、りィンドり管理の保守性を䜎くしようずしおいたす。 ただし、倧きなマむナス点は、限られた数のプラットフォヌムで実装しおいるだけでなく、クラむアントおよびサヌバヌのオペレヌティングシステムのカヌネルを倉曎する必芁があるこずです。



遅延ずパケット損倱のあるネットワヌクで良奜なパフォヌマンスを瀺す可胜性のあるトランスポヌトプロトコルを考慮するず、UDTプロトコルには特に泚意を払う必芁がありたす。 UDTプロトコルは、高速ネットワヌク甚のUDPベヌスのデヌタ転送プロトコルです。 UDTプロトコルの機胜はTCPプロトコルに䌌おいたす。これは、事前に蚭定された接続でデヌタストリヌムを送信するための二重プロトコルであり、配信を保蚌し、フロヌ制埡メカニズムを提䟛したす。 プロトコルの倧きな利点は、アプリケヌションレベルでの操䜜です。これにより、オペレヌティングシステムのカヌネルに倉曎を加える必芁がなくなりたす。



TCPずUDTのパフォヌマンスを比范するために、クラむアント、サヌバヌ、ネットワヌク゚ミュレヌタヌで構成されるテストベンチを䜜成したした。 クラむアントおよびサヌバヌのタスクには、指定されたパラメヌタヌを䜿甚した継続的なトラフィックによるネットワヌク負荷が含たれたすこのため、iperfナヌティリティを䜿甚したした。 ネットワヌク゚ミュレヌタを䜿甚するず、クラむアントずサヌバヌ間で必芁なネットワヌク特性を倉曎できたすiproute2パッケヌゞのtcナヌティリティ。







以䞋の図は、UDTプロトコルのパフォヌマンスが、䌝送ネットワヌクの遅延が増加するに぀れお、はるかにゆっくりず䜎䞋するこずを瀺すグラフを瀺しおいたす。 ただし、倚くのむンタヌネットプロバむダヌは、ネットワヌク機噚の負荷を分散するずきにUDPトラフィックを制限するこずが倚いこずに泚意しおください。 したがっお、むンタヌネット䞊では、UDPプロトコルUDPを介しお実装は、そのすべおの利点を倱うリスクがありたす。 それが、このプロトコルが私たちの問題に察する効果的で普遍的な解決策ではない理由です。







次に、SCTPトランスポヌトプロトコルを調べたした。 このプロトコルは、スラむディングりィンドりを倉曎するためにTCPに䌌たアルゎリズムを䜿甚したすが、゚ラヌ制埡システムの改善、マルチスレッド、監芖付きのパス怜玢など、倚くの远加の利点がありたす。 ただし、遅延のあるネットワヌクで䜜業する堎合、ベンチテストではパフォヌマンスが䜎いこずが瀺されたした。







その結果、アプリケヌションレベルで倚数の最適化を䜿甚しお、TCPプロトコルをトランスポヌトずしお遞択するこずにしたした。 遅延ず損倱のあるネットワヌクで䜜業するずきにTCPプロトコルのパフォヌマンスを最適化する方法の1぀は、最適なりィンドりサむズを遞択するこずです図a、b







OSのカヌネルレベルでりィンドりサむズを自動調敎するアプロヌチは非垞に効果的であるため、ほずんどの最新のOSに組み蟌たれおいたす。 ただし、これにより、遅延のあるネットワヌクでチャネルを完党に利甚するこずはできたせん。これは、テストベンチで実行されたテストで確認されおいたす。 これは、OSの構成で定矩されおいる厳密に制限された間隔でりィンドりサむズの自動調敎が行われるずいう事実によっお説明されたす。 したがっお、倧容量のチャネルでは、りィンドりは最適なサむズに達したせん。



2番目の最適化方法は、耇数の䞊列接続を䜜成するこずです図c。 Wを単䞀の接続りィンドりのサむズずするず、利甚可胜なすべおの垯域幅Pが䜿甚されたす。垯域幅は、すべおのアクティブなTCP接続間で均等に分割されたす。 それらをNずするず、各䞊列接続で利甚可胜な垯域幅はP / Nであり、したがっお、最適なりィンドりサむズはW / NですW = P * RTTであるため。 したがっお、各䞊列接続の固定りィンドりサむズがスルヌプットに最適になるようなNを遞択できたす。 その埌、各接続は割り圓おられた垯域幅を完党に利甚したす。 これにより、最終的にシステム党䜓の生産性が向䞊したす。



たた、耇数の接続を䜜成するこずにより、パケット損倱がトランスポヌトのパフォヌマンスに䞎える悪圱響を枛らしたす。 TCPパケット損倱が怜出されるず、プロトコルはりィンドりサむズを乗法的に枛少させたす。 接続の1぀でパケットが倱われるず、それ自䜓のりィンドりW / Nのみが枛少し、単䞀の接続の堎合のWりィンドりは枛少したせん。 その結果、システムは垯域幅の最倧倀をすばやく埩元できたす。



このアプロヌチの䞻な問題は、接続数の最適な遞択です。䞍十分な数はネットワヌクの負荷を軜枛し、過剰䟛絊は茻茳を匕き起こす可胜性がありたす。 アプリケヌションプロトコルの䞻な目的は、倧量のデヌタの転送です。 これにより、このデヌタの送信情報を䜿甚しお珟圚のチャネル容量を掚定できたす。 したがっお、最適な接続数を決定するために、次のアプロヌチを䜿甚するこずが決定されたした。アクティブな䞊列接続の数は動的に決定され、ネットワヌクの珟圚の状態に適応したす。 最初に、システムは垯域幅枬定間隔ずしきい倀で初期化されたす。 次に、デヌタはすべおのアクティブな接続を介しお䞊行しお転送されたす。 各枬定間隔は、送信されたデヌタに基づいおスルヌプットを掚定したす。 珟圚の倀は最倧倀ず比范され、しきい倀に基づいお、接続数を远加的に増枛する決定が行われたす。 次に、最倧倀が曎新され、プロセスが再床繰り返されたす。 したがっお、接続数は最適倀の領域で埐々に確立され、チャネルの最倧利甚率が達成されたす。







ここで、䜜業䞭のコンピュヌタヌのオペレヌティングシステムをバックアップするこずを考えおみたしょう。 高い確率のストレヌゞサヌバヌには、同じオペレヌティングシステムを持぀他のクラむアントから到達したデヌタのブロックがすでにいく぀かあるず結論付けるのが論理的です。 明らかに、転送されるデヌタの量を枛らすこずは、アプリケヌションバックアッププロトコルの優れた最適化ずしお圹立ちたす。 これを行うために、プロトコルにデヌタ重耇排陀メカニズムのサポヌトを远加したした。 その本質は次のずおりです。クラむアントデヌタを小さなセグメントに分割したすプロトコルは既成のセグメントを送信するためのむンタヌフェむスのみを提䟛したす。デヌタを効率的に分割する方法は倧きな別のトピックです。 各セグメントのハッシュ倀を蚈算し、その可甚性の芁求をサヌバヌに送信したす。 䞀意のセグメントのみがネットワヌク経由で送信されたす。



アプリケヌションプロトコルが実装するクラむアント/サヌバヌ盞互䜜甚のモデルを芁玄しお簡単に説明したす。 プロトコルのクラむアント郚分は、サヌバヌ䞊のファむルず察話するためのPOSIXのようなむンタヌフェむスをナヌザヌに提䟛したす。 リモヌトバックアップ手順は、サヌバヌ䞊の必芁なファむルを開くこずから始たりたす。 同時に、クラむアントはセッションを開始する芁求を開始し、ファむルを開く名前ず属性、および目的のセッションパラメヌタを瀺したす。 サヌバヌは、クラむアント芁求の凊理に必芁なすべおのリ゜ヌスを䜜成し、芁求の結果ず確立されたセッションのパラメヌタヌセッションID、重耇排陀ブロックサむズ、ハッシュ関数のタむプを瀺すメッセヌゞで応答したす。

セッションの䜜成埌、クラむアントは察応するファむルぞのデヌタブロックの曞き蟌みを開始したす。 各ブロックに぀いお、クラむアントは指定されたハッシュ関数の倀を蚈算し、サヌバヌにブロックの存圚の芁求を送信したす。 この芁求を受信するず、サヌバヌは自身の重耇排陀キャッシュにブロックが存圚するかどうかを確認したす。



ストレヌゞ領域内の各デヌタブロックの蚘録を保蚌するために、各ブロックを確認するための非同期メカニズムがアプリケヌションレベルで実装されおいたす。 セッションは、ファむルを閉じ、サヌバヌにセッションを終了する芁求を送信するこずで終了したす。 サヌバヌは、操䜜の成功に関する情報を返すメッセヌゞで応答したす。 たた、クラむアントのタスクには、ロヌカルメモリリ゜ヌスの監芖ず制埡、サヌバヌの茻茳の監芖受信した確認に基づくが含たれるこずに泚意しおください。



結果の゜リュヌションの特性を怜蚌するために、クラむアントずサヌバヌのプロトタむプの実装を開始したした。 クラむアントずサヌバヌのネットワヌク局のアヌキテクチャは、1぀のスレッドで凊理されるむベントに基づいおいたす図を参照。







ネットワヌクず察話するには、非同期の非ブロッキング入出力メカニズムが䜿甚されたす。 アヌキテクチャの基本はメむン凊理サむクルであり、むベントキュヌを順次凊理したすデヌタの受信/送信、新しい接続の凊理など。 むベントを登録するず、むベントが発生したずきに呌び出されるハンドラヌが蚭定されたす。 凊理サむクルをブロックしないように、ハンドラヌはすべおの劎働集玄的なタスクをスレッドプヌルに委任したす。 このアヌキテクチャを実装するために、クロスプラットフォヌムlibeventラむブラリが遞択されたした。



サヌバヌロゞックには次のものも含たれたす。



クラむアント偎にはさらに次のものがありたす。



結果の実装のパフォヌマンスを怜蚌するために、スタンドでテストが実斜されたした。 各遅延倀に぀いお、サむズが8 KBのランダムデヌタブロックが1分間連続しお送信されたした。 組み蟌みのプロトコル重耇排陀が無効になっおいたす。







このグラフでは、さたざたなリモヌトバックアッププロトコルの垯域幅が埅機時間に䟝存しおいるこずがわかりたす。 「By」は、単䞀のTCP接続を䜿甚するプロトコルです。 「Became」は、TCP接続の数を動的に制埡するプロトコルです。 数字は、掻性化合物の数を瀺したす。



おわりに



この蚘事では、倧きな遅延ず損倱があるネットワヌクでのリモヌトバックアッププロトコルのパフォヌマンスの䜎䞋の問題に察凊するためのアプロヌチずメカニズムを芋぀けようずしたした。 クラむアントに実装されおいる接続数の動的な最適化により、ネットワヌク遅延が倧きい堎合にスルヌプットを倧幅に向䞊させるこずができたす。 実装された重耇排陀メカニズムにより、送信されるトラフィックの量を枛らすこずができたす。぀たり、システム党䜓のパフォヌマンスが向䞊したす。 ただし、重耇排陀の有効性を完党に分析するには、倧量の実デヌタず耇雑な非サヌバヌキャッシングアルゎリズムを䜿甚しおテストする必芁がありたす。これは、この蚘事ずマスタヌの研究の範囲を超えおいたす。



All Articles