L3スイッチは専用の処理ICを搭載しており、ルーティングをハードウェアで行うことで高速な処理が可能だ。その一方で、ハードウェア処理能力の限界を超えた場合の挙動については未知数である。そこで今回は、L3スイッチのハードウェア限界とその限界を超えた時の挙動を調査する。
ネットワークスイッチのスループットを調査せよ【前編】【後編】で行ったL3スイッチ*やPCルータ*の性能測定では、L3スイッチが理論値どおりのスループット*を出していたのに対し、PCルータのスループットは特に負荷の高い状況において、理論値を大きく下回るという結果となった(コラム参照)。
また、フレーム転送処理*におけるレイテンシ*についても、やはりPCルータはL3スイッチと比較して大きく劣っているという結果となった。これは、L3スイッチがフレーム処理をASIC*と呼ばれる専用ハードウェアで行っているのに対し、PCルータはソフトウェアでその処理を行っているためであり、当然の結果といえよう。
しかし、L3スイッチのすべての処理をASICが行っているわけではない。実はL3スイッチにもCPUが搭載されており、一部の機能はこのCPUによるソフトウェア処理で実現されている。
そこで、今回はまずPCルータとL3スイッチのソフトウェア処理能力から比較してみよう。使用したPCルータは前回と同様、PCに2枚のNIC(Network Interface Card)を装着してルーティング設定を行ったものだ。そのスペックは以下のとおりである。
構成要素 | 内容 |
---|---|
CPU | Pentium 4/3GHz、HT対応 |
チップセット | Intel 865G |
メモリ | 512Mバイト |
NIC | Intel PRO/100 S(10/100BASE-TX)×2 |
OS | Linuxカーネル2.4.27 (Debian GNU/Linux 3.1 "sarge") Linuxカーネル2.6.8 (Debian GNU/Linux 3.1 "sarge") FreeBSD(5.4-RELEASE) Windows XP Professional(SP2) |
ネットワークの疎通確認を行う場合に、よく利用されているものがpingコマンドだろう。pingコマンドを実行すると、送信元ホストはICMP*と呼ばれるプロトコルに従ってEcho要求パケットと呼ばれるパケットを送信先ホストに送信する。一方、送信先ホストはEcho要求パケットを受け取ると、受け取ったパケットをEcho応答パケットとして送信元ホストにそのまま返送する*。
よって、送信元ホストがpingコマンドのあて先ホストから正常にEcho応答を受け取ることができれば、ネットワークは正常に導通していることになる。また、それぞれのパケットには認識情報が含まれているため、どのパケットが正しく届き、どのパケットが届かなかったかの判断も可能だ。
さて、このEcho要求パケットを受け取った場合の処理はL3スイッチに搭載されたASICによってハードウェアで行われるのではなく、CPUを使用してソフトウェアで行われることが一般的だ。そのため、IPフォワーディングとは異なった処理が行われる可能性がある。
そこで、L3スイッチ/ルータの1ポートに対して大量のpingを送信し、正しく応答できる1秒当たりの最大パケット数を測定することでそのCPU処理能力を調べてみよう。
測定器の1ポートから、測定対象の1ポート宛てに大量のEcho要求パケットを送信する。なお、このときの送信元アドレスは1ホストとする。測定器から送信されたEcho要求パケット数と受信できたEcho応答パケット数を比較し、パケットロスが発生しない最大のppsレート*を求める。なお、使用したパケット長は78バイトである。
テスト結果は表1のようになった。L3スイッチのping応答性能はPCに比べて低い傾向があることが分かる。この理由は設計ポリシーの違いだろう。
機器/OS | ping応答(pps) | スループット(フレームサイズ64バイト、pps) |
---|---|---|
CentreCOM 8624EL | 6642 | 148809.5 |
Apresia 3124GT | 388 | 148809.5 |
SF-4024FL | 224 | 148809.5 |
Linuxカーネル2.4.27 | 46382 | 46369.0 |
Linuxカーネル2.6.8 | 51230 | 50980.7 |
FreeBSD 5.4 | 40193 | 36109.1 |
Windows XP | 36928 | 36785.7 |
一般にL3スイッチでは、ASICとメモリ上のフォワーディングテーブルを使用することで高速なパケット転送を実現している。また、ソフトウェアでの処理についても、マルチキャストなどのさまざまな機能をサポートする必要があるため、ICMP関連の処理だけに注力するわけにはいかない。
一方、PCでのパケット処理ではNICドライバによってパケット受信とバッファリングが行われ、その後の処理はOSへと委ねられる。つまり、もともとすべてのパケットがOSで処理されるため、その処理に必要な負荷はIPフォワーディングのものとそれほど変わらないのである。実際、表1ではping応答性能の結果と、今回のpingパケットサイズに近い、パケットサイズ64バイト時のスループットは同程度となっている。
前回行った実験では、PCルータはL3スイッチと比べ、パケットサイズが小さい場合に著しく処理能力が劣る、という結果となった。これは、パケットサイズが小さい場合単位時間当たりに処理すべきフレームの数が増加し、そのために負荷が大きくなるためと予想できる。そこで、パケットフォワーディング時のCPU稼働率を調べてみた。
下の2つのグラフはWindows XPにおけるパケットフォワーディング時のCPU稼働率である。図Aはパケットサイズ64バイト、図Bはパケットサイズ1518バイトのもので、各パケット長におけるスループット付近の回線負荷を与え、CPU稼働率を測定した。
この結果から、CPU負荷はパケット処理数が多いほど増大する傾向があることが分かる。しかし、Windows XPではパケット処理数が少なく、CPU負荷が小さいはずの1518バイトパケットにおいて大きなレイテンシが発生していた。そのため、Windows XPでのパケット転送遅延はCPU負荷とは別のところに原因があることが分かる。
OSがボトルネックでないとすると、その原因としてはNIC上でのバッファリング、割り込み処理、PCIバスの伝送速度が考えられるが、パケット長にその相関があることから、その原因としてNIC上でのバッファリング時における遅延がかかわっていると思われる。
単純にいえばあるポートに入力フレーム*を、その内容に応じて適切なポートに転送する機器。
ネットワークでデータをやり取りするする単位。パケットとほぼ同義語で、レイヤ2にかかわる記述はフレーム、レイヤ3にかかわる記述ではパケットと呼ば呼ばれる。
PCに複数のネットワークインタフェースを装着させてルータの役割をさせたもの。
そのスイッチやルータが一定時間に処理できる限界のフレーム数。
あるポートに入力されたフレームを別の適切なポートに転送する処理処理。
スイッチやルータの内部処理処理によって発生する遅延時間。簡単にいえば機機器にフレームが入力されてから出力されるまでの時間。
Application Specific Integrated Circuit(エーシック)。特定目的のために作られたIC。ここではパケット処理のために作られたICを指す。
Internet Control Message Protocol。IPネットワーク上でエラーメッセージや制御情報などをやり取りする場合に使われるプロトコル。
実際にはICMPヘッダと呼ば呼ばれる部分のみ一部書き換えられるが、パケット内の識別情報やデータはそのまま返送される。
ping per secondレート。1秒間に反応できる最大のpingパケット数。
Copyright © ITmedia, Inc. All Rights Reserved.