
スイッチがパケットを大量に失うとどうなるのか気になっています。質問する理由は、常に過負荷になるスイッチがあるからです。これは、ネットワーク上で個人が重いファイルをダウンロードすることによって発生します。このスイッチが故障した場合に備えて、バックアップ スイッチを用意しています。
答え1
簡単に答えると、「それほど多くはありません」。スイッチで実際に何が起こるかという点では、パケットが失われるだけです。スイッチは、パケットが失われたという事実を記録する以外は気にしません。
次のセクションでは、パケット損失の正確な原因と、ネットワーク全体がパケット損失に対処するためにどのように設計されているかについて説明します。
もう一度言いますが、簡単に言えば、パケット損失への対応はスイッチではなくクライアントによって行われます。これはクライアントの責任であり、スイッチが制御できるのはキューの設定と、トラフィックの優先順位付けのみを行う QoS などの機能だけです (パケット損失は防止できません)。
スイッチで何が起こっているのですか?
スイッチはキューを使用して、スイッチに出入りするパケット間に少量のバッファを許可します。キューはキャッシュのようなもので、多くの類似した機能があります。通常、パケットはスイッチに入ってすぐに出て行くのが望ましいです。これが最も速い方法ですが、常に可能であるとは限りません。
帯域幅が不足している接続に複数のクライアントが集中している場合、またはより狭い帯域幅で宛先に接続している場合、パケットはデバイスに到着するのと同じ速度で送信できません。
追加のパケットは、パケット バーストであり、キャッシュが完全にいっぱいになって追いつく前にパケットが少なくなることを期待して、スイッチ内で使用されるキューに蓄積されます。
キャッシュがいっぱいになると、入ってくる他のパケットを保存する場所がなくなり、パケットはドロップされます。つまり、キューに十分なスペースができるまで、パケットは単に破棄されます。
例
実際の例としては、オフィスのファイル サーバーが挙げられます。48x100Mbps 接続と 2x 1Gbps 接続があるとします (48 はクライアント用で、2 ギガビットはサーバーに接続されています)。サーバーと通信しようとしている人が他にいなければ、クライアントは 100mbps 接続をフルに活用できます (もちろんオーバーヘッドはありますが)。しかし、20 人以上が既に 2gbit のファイル サーバーにアクセスしようとすると、21 人目はアクセスできなくなります。
パケットは先着順でキューに追加され、スイッチに設定されている優先順位設定を使用して解放されます。QoS などの設定が設定されていない場合は、通常、先入れ先出し (FIFO) が使用されます。このバッファがいっぱいになると (パケットが多すぎると)、パケットは完全にドロップされ、クライアントがそれを認識して対処する必要があります。
典型的な結果は、平均スループットになりますavailable_bandwidth / (number_of_clients * bandwidth_of_clients)
。各クライアントが取得するレートは、スイッチへの接続速度に比例します。これは、決定論的な設計上の決定ではなく、キューのスペースが利用可能になるとすぐにいずれかのポートからパケットが送信される可能性の結果です。
ネットワークトラフィックはどうなりますか?
ソフトウェア/ハードウェア通信では、パケットがドロップされていることを認識して、送信しようとしているデータの量を減らすためにレート制限を実装する必要があります。ただし、データが UDP の場合 (通常はリアルタイム アプリケーション)、ACK メッセージは存在しないため、レート制限を行う必要はありません。
レート制限は、一般的に、すべてのトラフィックが送信できる最速のレートを決定する方法です。たとえば、単純なネットワークでルーターに 1Gbit で接続しているが、アップロード速度が 20Mbit しかない場合、それ以上の速度で送信しようとするとパケットがドロップされ、PC は ACK を受信できず、ネットワーク全体 (インターネットを含む) で送信先まで達成できる最大速度に一致するレート制限が適用されます。
TCPではネーグルのアルゴリズムこのレート制限を課すために使用されますが、UDP 接続では、結果として品質が低下する (ビデオ ストリームなど) か、失敗するだけになる可能性があります。ただし、十分なデータを受信できないことは、確認応答の欠如ではなく、宛先から明示的に発生する必要があります。