2014年12月16日火曜日

SDNスイッチの開発関連

これは、SDN Advent Calendarの16日目の記事です。

わたしは昨年からSDN関連機器の開発に携わっているエンジニアです。今日はSDNに関連する2つのトピックについてシェアしたいと思います。

各種OpenFlowスイッチのOpenFlow仕様への準拠度の現状

現在、SDNコントローラであるRyuの公式サイト内でRyu Certificationのテスト結果を見ることができます。これは各種OpenFlowスイッチのOpenFlow仕様の準拠度(主にマッチフィールドとアクションへの対応)をスコアにしてまとめたものです。テスト結果は随時、更新されているようです。また、Certificationのテスト自体もRyuのソースコードに含まれているので、自分で試してみることもできます。

これまではOF1.3準拠と謳っている製品でも、実際には部分的にしかサポートしていないといった場合がよくありました。従ってこのテスト結果はOFスイッチ選定の際の参考のひとつにはなると思います。ただし、Ryu Certificationもプロトコルのすべての面を網羅してチェックしているわけではありません。どちらかというとテストしやすい機能に絞って比較しているに過ぎません。また、OpenFlow仕様の準拠度が高いからといって単純に優れているということも言えないでしょう。実際には最大Flow数やレテンシやスループット等の性能面、個々のニーズにあった機能が実装されているかどうかということを総合的に判断して決めるべきでしょう。加えて、OpenFlowだけがSDNではないので、各ベンダはSDNコントローラや連携する上位のアプリケーションを含めた形でのソリューションを提供しているのが現状だと思われます。

Ryu Certificationの結果から、OpenFlow仕様準拠度はやはりOVSのようなソフトウェアベースの実装の方が進んでいるようです。実装のしやすさを考えると当然と言えば当然の結果ですね。現状ではLagopusとTrema Switch、この2つの国産のスイッチはスコアが高いです。

開発の関係でOVSのソースコードは定期的にウオッチしてますが、ここ1年の間にずいぶんOFプロトコル対応が進んだようです。Groupもやっと一部機能が実装されましたし、ソースコードに付属しているTODOリストは着実に消化されつつあるようです。ただし、OFベースのQoS実現の要であるMeter機能は未だに実装されていません。ソフトウェアベースの帯域制御ではやはり実用性に問題があるのでしょうか。しかし、v2.2.0からExperimentalではありますがDPDKもデータパスとしてサポートされるようになったので、今後、DPDKベースの実用的な帯域制御が実装されるのを期待しています。

NetFPGAの新しいボードがリリース

NetFPGAはStanford大学やCambridge大学が中心となって開発された、ネットワークの研究・開発用のプラットフォームです。ボードにはFPGAが搭載されていて、プログラミング次第で様々な用途に応用できます。パケットをPCI Express経由でホストマシンに上げてやればオフロード機能付きのNICを作れますし、ボード内でパケットを転送処理すればプログラマブル・スイッチのようなものを作れますし、ボード内から任意のパケットをラインレートで発生させるようなテスタを作れるといった具合です。ソースコードはユーザ登録すれば、GitHub上にあるものを無料で入手することができます。そもそも研究用途として開発されているため、ポート数も4つと少ないですし、これで実用的なSDNスイッチを作ることはできませんが、大学での研究用途やプロトタイプ開発用といった用途にはこれで十分だと思います。

最近、NetFPGAのWebをのぞいてみたところ、新しいボードが今月末にリリースされるようです。名前はNetFPGA-SUME。これまでにも1G,10G,CMLという3種類のボードがリリースされていますが、SUMEではこれまでのボードに比べて著しい性能のアップが計られています。FPGAにはXilinxのVirtex7-690Tを採用していますし、10G(SFP+)を4ポート、72MbitSRAMを3枚、4GBのDDR3を2枚(メモリモジュールを入れ替えると最大32GB)搭載しています。ちょっとオーバースペックな気もしますが。ただし、NetFPGAにはTCAMは搭載されていないので、パケットのマッチング処理はFPGA内で直接実装するしかありません。大量のマッチング処理が必要な場合は、メモリを使用してハッシュで照合するようなソフトウェア的なアプローチも有効かもしれません。

ところで、SUMEのお値段をDigilentの販売サイトで確認してみたのですが、一般向けはUSD24,500(現在のレートで約288万円!)と馬鹿高いのです。でもアカデミック向けだとUSD1,695と一般向けの1/10以下で購入可能です。1個ウン十万円級のFPGAを乗せてるんだから、原価割れしてんじゃないの?一桁間違っているんじゃないの?と思ってましたが、他のページを見てみるとNetFPGA-10Gの価格帯(~USD1,675)に合わせたいと言っているのでどうやら間違っていないようです。というわけで、アカデミックな用途では結構お買い得なんじゃないかと思いました。