NetFPGAでOpenFlowを柔軟に活用するShowNetデモ [Interop Tokyo 2016]


SDN/NFVサービスチェイニングのデモの中で、OpenFlowを今よりもさらに柔軟に使うコンセプトデモも含まれていました。

数年前と比べると、OpenFlowの仕様や実装が進化しているので、OpenFlowでできることは増えています。しかし、現在のOpenFlowは主にマッチと書き換えを行うものなので、直接計算は行えません(コントローラに判断を仰ぐ方法はありますが、それだとリアルタイムな処理は困難です)。

そこで、今年のShowNetではNetFPGA-SUMEとOpenFlowを使ってハッシュ計算を伴うロードバランシングを実現しています。

7

デモの内容としては、以下のようなものです。

  • イーサネットフレームは、NetFPGAを通過してからLagopusへとパケットが転送される。
  • OpenFlowで負荷分散をするための例として、送信元IPアドレスと宛先IPアドレスでハッシュして、イーサネットフレームに含まれる送信元イーサネットアドレスを書き換える。
  • NetFPGAは、ハッシュ結果を送信元イーサネットアドレス下位8ビットにマーキングをしていって、OpenFlowは送信元イーサネットアドレスの48ビットをマッチして使って転送。
  • NetFPGAに入ってくるイーサネットフレームは、上位のルータからなので、そもそも入力は毎回同じ送信元イーサネットアドレスだけど、NetFPGAが下位8ビットを変更する。

この他に、OpenFlowのフローエントリ数を減らす工夫(微調整)も行われています。

今回サーバ上で動いているVMは8台なので、3bitで全てのVMを指定できます。NetFPGAはそのまま8bitに埋め込み、Lagopusのルールは送信元MACアドレスのうちマスクを使って下位3bitのみを見ています。

8bitでは全てのパターンを指定するのに256個のフローエントリが必要になりますが、下位3bitを見るだけであれば8エントリのみで全てのVMにトラフィックを転送することができます。これによって、OpenFlowでIPアドレスをマッチして転送するのと同じことを、8個のフローエントリで実現しています。

L3な機能(VirNOS含む)が使われるときは、ARP解決のために、OpenFlowで宛先イーサネットアドレスを宛先とするL3デバイスのMACアドレスに書き換えています。

NetFPGAを使ったデモは、NOCメンバーがShowNet 2016のために独自開発されたものです。なかなかマニアックですが、こういうの大好きです。


LagopusとNetFPGA(上に基盤むき出しで乗っているのがPCIカード用給電されたNetFPGA)

«
»

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Optionally add an image (JPEG only)