年次カンファレンス「IIJ Technical WEEK 2014」セッションレポート
IIJが「10G×10」よりも「100G×1」を選んだ理由
2014年12月04日 06時00分更新
インターネットイニシアティブ(IIJ)は11月26~28日の3日間、インターネット関連の最新技術を紹介する年次カンファレンス「IIJ Technical WEEK 2014」を開催した。その中から、ネットワークインフラに関する2つのセッションレポートをお届けする。
ソフトウェアOpenFlowスイッチ「Lagopus」で高速性能を目指す
26日に行われた「SDNソフトウェアスイッチ Lagopus」と題するセッションでは、ストラトスフィア 研究開発部の沖 勝氏が、オープンソースのSDN対応ソフトウェアスイッチ「Lagopus」が、性能向上を目指しどういった技術的課題に取り組んでいるかを解説した。
Lagopusは、総務省「O3プロジェクト」の一環としてNTTが中心となって開発されたOpenFlowスイッチで、2014年7月にオープンソースソフトウェアとして公開された。Linux上で動作する純粋なOpenFlowスイッチであり、従来のレイヤ2スイッチとしての機能は備えていない。ストラトスフィアでは、Logopusの実装や導入の支援サービスを提供している(関連記事)。
Lagopusの最大の特徴は「高性能処理を目標にしていること」(沖氏)だ。具体的には、10万フローエントリの処理や10Gbpsラインレートのスループットといったレベルの性能が目標となっている。Lagopusではこれを、IntelのDPDK(Data Plane Development Kit)への対応やマルチコアによる並行処理を背景として、OpenFlow 1.3.4をサポートしつつ実現しているという。
Lagopusの高速化のためにまず取り組んだのは、I/O性能の向上だった。I/O低下の要因となるのは、メモリコピーやコンテキストスイッチ、ページフォルトやバスをまたいだI/O、メモリアクセスといった処理である。そこで、これらを減らすためにさまざまな工夫を凝らした。たとえば、メモリコピー処理を発生させないよう、DPDKを用いてカーネルを介さず送受信処理を行うようにしたり、割り込み処理を減らすために、割り込みモードではなくDPDKのポーリングモードドライバで動作させるなど、カーネルの深い部分とDPDKを活用しながら性能向上を図っているという。
もう1つの側面は、OpenFlowの性能向上である。実はかつての試作段階では、ざっと10万フローエントリを流し込んでXeon 2.2GHzのマシンで性能を測定したところ、わずか20Kbpsの性能しか出なかったそうだ。そこで、フローエントリの優先順位を決める「priority」パラメータをはじめとするOpenFlowの仕様を満たしつつ、フローの探索処理を早めるために、複数のテーブルを用意して探索するなどの工夫を行った。マルチコアを生かした分散処理やフローキャッシュなどを採用することで、10万フローエントリで10GbEラインレートを実現したという(CPUはIntel Xeon E5-2695 v2 2.70GHz)。
とはいえ、Lagopusはまだ開発中であり「取り組むべき課題は多い」と沖氏。今後は、VXLANに代表される論理ポートへの対応や設定システムの改良、OF-ConfigやOVSDB対応、レイヤ2スイッチとのハイブリッド化、そして「さらなる処理性能の向上に取り組みたい。今回の検証は2ポート構成だったが、4ポートや8ポート、それ以上のポートを使うときの性能も出していきたい」(沖氏)。同時に、処理時のCPU負荷を減らして、仮想化環境でもより動かしやすくする工夫も進めていきたいと抱負を語った。