イーサネットはデータを有線で高速伝送する手段として古くから使われており、今ではほとんどのパソコンで利用できる。インターネットの黎明期から現在まで、一番使われてきたLAN技術だ。

速くなっても変わらない部分

 イーサネットは米ゼロックスのパロアルト研究所(PARC)に所属していたロバート・メトカーフ氏によって発明された。初期の3Mビット/秒の時代から、インターネットの拡大とともに現在は最大400Gビット/秒の規格が登場している。

 筆者が初めてイーサネットに触れたのは10BASE-Tが登場した1990年ごろで、パソコンをインターネットに接続するのに利用していた。10Mビット/秒程度の帯域でも十分楽しめていた。今ではパソコンのNICが1Gビット/秒に対応しているのは当たり前になった。当時からたった30数年で一気にギガの帯域を超えるとは、当時は全く想像できなかった。

 大量のデータを扱ったり膨大な計算処理を実行したりするデータセンターでは、10G~40Gビット/秒がもはや当たり前になっている。さらにインターネット接続事業者のコアネットワークでは400Gビット/秒に達しているところもある。

 イーサネットの最大伝送速度は大きく変わったが、変わっていないものがある。それはイーサネットのフレーム構造だ。最初のオープン規格だった「DIX」と、現在の主流でIEEEが標準化した「IEEE 802.3」の仕様を比べてみると、ほぼ同じである(図3-1)。異なるのは、プリアンブルの末尾に1バイトのSFDが付け加えられたくらいだ。今から40年も昔に作られた仕様が、そのまま脈々と使われて続けているのは感慨深い。

図3-1●主なイーサネットフレームのフォーマット
広く使われている2種類のフレームフォーマットを示した。この他、「802.3 with SNAP」などのフォーマットもある。
[画像のクリックで拡大表示]

カーネルを飛ばして高速処理

 ここからは実際のNICと高速化技術の「DPDK」を例に、イーサネットの仕組みを見ていこう。NICには米インテル製でギガビットイーサネット対応の「Pro/1000 MT Server」を使った。といっても実際のハードウエアを使ったわけではない。「Oracle VirtualBox」という仮想環境で動く仮想NICを利用した。

 まずはDPDKとは何かについて簡単に説明しよう。

 プロローグで前述したように、アプリの通信データは送受信の前にいろいろな処理がカーネル空間で行われ、その後に物理的なNICとLANケーブルを通じて送受信される。このとき、カーネル空間とアプリでのパケットのコピーなどにCPUの処理時間が取られてしまう。

 DPDKはアプリがカーネル空間を介さずに、直接NIC(ハードウエア)を制御してパケットの送受信を高速化する技術である(図3-2)。カーネル空間での待ち時間がゼロになり、超高速なパケット送受信が可能になる。

図3-2●DPDKによる通信の高速化
DPDK(Data Plane Development Kit)はイーサネットフレーム/IPパケットの入出力処理を高速化する技術。カーネル空間を介さずにアプリとNICが直接やりとりすることで、パケットの処理を高速化している。
[画像のクリックで拡大表示]

 現在のサーバーやルーターのプロセッサーは複数のコアを持つマルチコア構成で、搭載するメモリー容量も大きい。DPDKは、カーネル空間での処理を避けてユーザー空間で処理をすることで、マルチコアの利点を生かしている。一方で、既存のシステムコール(Socket API)は利用できなくなるため、DPDKに特化したアプリケーションの実装が必要になる。

 DPDKはOpenFlowのような仮想ネットワーク技術を使った環境、ソフトウエアベースのルーターやスイッチ、大量のパケットを処理するロードバランサーなどで性能を発揮する。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。今なら有料会員(月額プラン)が12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら