ネットワークのスループットは、さまざまなプラットフォームで利用可能な各種ツールを使用して測定できます。このページでは、これらのツールが測定しようとしているものの理論的背景と、測定に関する問題点について説明します。
ネットワークのスループットを測定する理由。通信リンクやネットワークアクセスにおける最大データスループット(ビット/秒)の測定は、しばしば重要な課題となります。一般的な測定方法は、あるシステムから別のシステムに「大きな」ファイルを転送し、その転送またはコピーにかかる時間を測定することです。スループットは、ファイルサイズを時間で割ることによって計算され、メガビット、キロビット、またはビット/秒単位で表されます。
残念ながら、このようなテストの結果は、多くの場合、理論上の最大データスループットよりも低いグッドプットとなり、通信リンクが正しく動作していないと人々が考える原因となります。実際には、スループットには伝送オーバーヘッドに加えて、遅延、TCP受信ウィンドウサイズ、システム制限など、多くのオーバーヘッドが考慮されているため、計算されたグッドプットは達成可能な最大スループットを反映していません。[ 1 ]
最大帯域幅は次のように計算できます。
ここで、RWIN は TCP 受信ウィンドウ、RTT はパスの往復時間です。TCPウィンドウ スケール オプションがない場合の最大 TCP ウィンドウ サイズは65,535バイトです。例: 最大帯域幅 =65,535バイト/ 0.220秒 =297,886.36 B/s × 8 = 2.383 Mbit /s。これらのエンドポイント間の単一のTCP接続では、契約帯域幅がこれより大きい場合でも、テストされた帯域幅は2.376 Mbit/sに制限されます。
帯域幅テストソフトウェアは、ネットワークまたはインターネット接続の最大帯域幅を測定するために使用されます。通常、一定時間内に最大量のデータをダウンロードまたはアップロードするか、または一定量のデータを最短時間でダウンロードまたはアップロードすることで行われます。そのため、帯域幅テストはインターネット接続を介した通信を遅延させ、データ料金が高額になる原因となる可能性があります。
通信リンクのスループットは、ビット/秒 ( bit/s )、キロビット/秒 ( kbit/s )、メガビット/秒 ( Mbit/s )、ギガビット/秒 ( Gbit/s ) で測定されます。このアプリケーションでは、キロ、メガ、ギガは、1000 倍 (キロ)を示す標準SI 接頭辞です。1,000,000(メガ)1,000,000,000 (ギガ)。
ファイルサイズは通常バイト単位で測定され、キロバイト、メガバイト、ギガバイトが一般的で、1バイトは8ビットです。現代の教科書では、1キロバイトは次のように定義されています。1000バイト、1メガバイト1,000,000バイトなどは、1998年の国際電気標準会議(IEC)規格に準拠しています。しかし、Windowsシステムで採用されている慣例では、1 キロバイトは1024(または2× 10)バイトと定義されており、これは1キビバイトに相当します。同様に、 1メガバイトのファイルサイズは1024 ×1024バイトで、1メビバイトに相当し、1ギガバイトは1024 ×1024 ×1024バイトで、1ギビバイトに相当します。
一般的に使われる表現を略すのはよくあることです。ファイルサイズについて言えば、64 kファイル(64 キロバイト)や100 megファイル(100 メガバイト)と言うのが一般的です。回線のビットレートについて話す場合、スループット、帯域幅、速度といった用語が interchangeably(互換的に)使われ、回線を64 k回線、または2 meg回線(64 kbit/sまたは2 Mbit/sを意味します)と呼ぶことがあります(接続帯域幅の一覧も参照)。しかし、64 k回線では64 kファイルを 1 秒で送信することはできません。これは、電気通信やコンピューティングに詳しくない人には分かりにくい場合があり、誤解が生じることがあります。実際には、64キロバイトのファイルは64 ×1024 ×8ビットのサイズであり、64k回線は64 × 1000ビット/秒の速度でビットを送信するため、64キロバイトのファイルを64k回線で送信するのにかかる時間は 少なくとも(64 ×1024 ×8) /(64 ×1000)秒となり、計算すると8.192秒になります。
一部の機器は、送信時にデータを圧縮することでパフォーマンスを向上させることができます。これは、ほとんどのアナログモデムやいくつかの一般的なオペレーティングシステムに搭載されている機能です。64KBのファイルを圧縮 によって縮小できれば、送信にかかる時間を短縮できます。この圧縮はユーザーには見えない形で行われるため、圧縮率の高いファイルは予想よりもかなり速く送信できる可能性があります。この目に見えない圧縮は簡単に無効にできないため、ファイルを使用してスループットを測定し、送信時間を計測する場合は、圧縮できないファイルを使用する必要があります。通常、これはランダムデータのファイルを使用して行われます。ランダム性が高ければ高いほど、圧縮は難しくなります。
データが圧縮できないと仮定した場合、64キロバイトのファイルを64キロビット/秒の通信回線で送信するのにかかる8.192秒は理論上の最小時間であり、実際には達成されません。これは、接続の両端でデータの一貫した表示ができるように、データを合意された形式でフォーマットするために使用されるオーバーヘッドの影響によるものです。
圧縮ファイルの送信には、すぐには明らかにならない少なくとも2つの問題点がある。
多くの人が使用する一般的な通信リンクは、非同期スタートストップ、または単に非同期シリアルリンクです。自宅やオフィスのコンピュータに外部モデムが接続されている場合は、接続が非同期シリアル接続を介している可能性が高いです。その利点はシンプルであることで、送信、受信、信号グランド(または信号コモン)の 3 本のワイヤのみを使用して実装できます。RS -232インターフェースでは、アイドル接続には継続的に負の電圧が印加されます。ゼロビットは信号グランドに対する正の電圧差として表され、1ビットは信号グランドに対する負の電圧であるため、アイドル状態と区別できません。つまり、アイドル状態と区別するために、 1ビットがいつ開始されるかを知る必要があります。これは、リンクを介してデータが送信される速度を事前に合意し、スタートビットを使用してバイトの開始を通知することによって行われます。このスタートビットはゼロビットになります。ストップビットは1ビット、つまり負の電圧です。
実際には、ビット伝送速度、1文字あたりのビット数、パリティ、ストップビット数(文字の終わりを示すビット)など、より多くの事項が事前に合意されています。したがって、9600-8-E-2という表記は、1秒あたり9600ビット、1文字あたり8ビット、偶数パリティ、ストップビット2ビットを意味します。
非同期シリアル接続の一般的な設定は、9600-8-N-1 ( 9600 bps、1文字あたり 8 ビット、パリティなし、1 ストップ ビット) です。これは、1 つの 8 ビット文字を送信するために合計 10 ビットが送信されることを意味します (1 つのスタート ビット、送信されるバイトを構成する 8 ビット、および 1 つのストップ ビット)。これは 20% のオーバーヘッドであるため、9600 bps の非同期シリアル リンクでは、9600/8 バイト/秒 (1200 バイト/秒) でデータが送信されるのではなく、実際には、この場合 9600/10 バイト/秒 (960 バイト/秒) となり、予想よりもかなり遅くなります。
さらに悪化する可能性もあります。パリティが指定され、2 ストップ ビットを使用する場合、1 つの 8 ビット文字を伝送するためのオーバーヘッドは 4 ビット (1 つのスタート ビット、1 つのパリティ ビット、および 2 つのストップ ビット) で、50% になります。この場合、9600 ビット/秒の接続では 9600/12 バイト/秒 (800 バイト/秒) が伝送されます。非同期シリアル インターフェイスは、通常、最大230.4 kbit/sのビット伝送速度をサポートします。パリティなしで 1 つのストップ ビットを設定すると、バイト伝送速度は23.04 kbyte/sになります。
非同期シリアル接続の利点はそのシンプルさです。欠点の1つは、データ伝送効率が低いことです。これは同期インターフェースを使用することで克服できます。このタイプのインターフェースでは、クロック信号が別のワイヤに追加され、ビットはクロックと同期して送信されます。つまり、インターフェースは個々の文字の開始ビットと停止ビットを探す必要がなくなります。ただし、送信クロックと受信クロックが同期していることを保証するメカニズムが必要なので、データは既知の区切り文字で区切られた複数の文字のフレームに分割されます。フレーム通信には、HDLC、PPP、イーサネットという3つの一般的な符号化方式があります。
HDLCを使用する場合、各バイトに開始ビット、オプションのパリティビット、および1つまたは2つのストップビットがあるのではなく、バイトはフレームにまとめられます。フレームの開始と終了は「フラグ」によって通知され、エラー検出はフレームチェックシーケンスによって実行されます。フレームの最大アドレスサイズが32ビット、最大制御部サイズが16ビット、最大フレームチェックシーケンスサイズが16ビットの場合、フレームあたりのオーバーヘッドは最大64ビットになる可能性があります。各フレームが1バイトしか伝送しない場合、データスループット効率は非常に低くなります。しかし、バイトは通常まとめられるため、最大オーバーヘッドが64ビットであっても、24バイトを超えるフレームは非同期シリアル接続よりも効率的です。フレームはデータとして伝送されるバイト数が異なる可能性があるため、サイズが変化する可能性があり、これはHDLC接続のオーバーヘッドが固定されていないことを意味します。[ 4 ]
ポイントツーポイントプロトコル(PPP)は、インターネットリクエストフォーコメント文書RFC 1570、RFC 1661、RFC 1662で定義されています。パケットのフレーミングに関しては、PPPはHDLCと非常によく似ていますが、データの透過性を維持しながら、ビット指向とバイト指向(「オクテットスタッフィング」)の両方のフレーム区切り方式をサポートしています。[ 5 ]
イーサネットは「ローカルエリアネットワーク」(LAN)技術であり、フレーム化されています。2 つのシステム間の接続でフレームが電気的に定義される方法は、HDLC や PPP が実装されている一般的な広域ネットワーク技術とは異なりますが、これらの詳細はスループットの計算には重要ではありません。イーサネットは共有媒体であるため、ファイルを転送している 2 つのシステムだけが接続に排他的にアクセスできるとは限りません。複数のシステムが同時に通信しようとすると、任意のペア間のスループットは、利用可能な公称帯域幅よりも大幅に低くなる可能性があります。[ 6 ]
専用のポイントツーポイントリンクは、多くのシステム間の接続において唯一の選択肢ではありません。フレームリレー、ATM、およびMPLSベースのサービスも使用できます。データスループットを計算または推定する際には、フレーム/セル/パケットフォーマットの詳細と、テクノロジーの詳細な実装を理解する必要があります。[ 7 ]
Frame Relayは、データを伝送するフレームフォーマットを定義するために、修正されたHDLCフォーマットを使用します。[ 8 ]
非同期転送モード(ATM) は、従来とは全く異なるデータ伝送方式を採用しています。可変長のフレームやパケットを使用する代わりに、データは固定サイズのセルで伝送されます。各セルは 53 バイト長で、最初の 5 バイトがヘッダー、続く 48 バイトがペイロードとして定義されています。データネットワークでは、通常 48 バイトを超えるデータパケットが必要となるため、より大きなデータパケットを標準的な方法で分割してより小さなセルで伝送する方法を規定する適応プロセスが定義されています。このプロセスは伝送されるデータによって異なるため、ATM の用語では、異なるATM 適応レイヤが存在します。ほとんどのデータに対して定義されているプロセスは、ATM 適応レイヤ No. 5 またはAAL5と呼ばれます。
ATMリンクのスループットを理解するには、伝送されるデータにどのATM適応レイヤが使用されているかを知る必要がある。[ 9 ]
マルチプロトコルラベルスイッチング(MPLS)は、既存のデータパケットに「ラベル」と呼ばれる標準タグまたはヘッダーを追加します。特定の状況では、MPLSを「スタック」方式で使用して、既にラベル付けされているパケットにラベルを追加することができます。MPLSシステム間の接続は、基盤となるトランスポートプロトコルを持たない「ネイティブ」にすることも、MPLSラベル付きパケットをフレームリレーまたはHDLCパケットのペイロードとして伝送することもできます。正確なスループット計算では、このような構成を考慮する必要があります。たとえば、データパケットに「ラベルスタッキング」によって2つのMPLSラベルが付加され、HDLCフレーム内のペイロードとして配置される場合があります。これは、受信システムに基盤となるプロトコルなしで「ネイティブ」に送信されるパケットに単一のMPLSラベルが付加される場合よりも、考慮しなければならないオーバーヘッドが増加します。[ 10 ]
ファイルやデータを転送するシステムで、ファイルの内容をHDLCまたはPPPフレームの「データ」フィールドに単純にコピーするだけのものはほとんどありません。HDLCまたはPPPフレームの「データ」フィールド内のデータをフォーマットするために、別のプロトコル層が使用されます。このようなプロトコルとして最も一般的に使用されているのは、RFC 791で定義されているインターネットプロトコル(IP)です。ただし、これには独自のオーバーヘッドが発生します。
繰り返しになりますが、ファイルの内容を単純にIPパケットにコピーするシステムはほとんどなく、2つのシステム間の接続を管理する別のプロトコル、 RFC 1812で定義されているTCP(伝送制御プロトコル)を使用しています。これには独自のオーバーヘッドが発生します。
最後に、最終プロトコル層が実際のデータ転送プロセスを管理します。このためによく使用されるプロトコルはファイル転送プロトコルです。[ 11 ]