4th - Arista DirectFlow

Arista の DirectFlow はなかなか面白い。 SDN はもう「ソフトウェアで制御できればなんでもいいよ」くらいの位置づけになった、と僕は12/1 の投稿で書いた。 その意味でちょっと面白いなと思っていたのが Arista の DirectFlow だったりする。DirectFlow は 以下のような(かなり OpenFlow っぽい)フロー制御を EOS の CLI で直接スイッチに打ち込む、というものだ。(以下は複数の EOS コマンドを組み合わせて一つのフローに対する設定を組み上げ、それを show コマンドで出したもの。中身は説明しなくても分かると思う。)

switch# show directflow flows Flow Test-1:
 priority: 0
 match:
   VLAN ID: 0xa/0x1
   Ethernet type: IPv4
   source IPv4 address: 192.168.100.10
 actions: 
   set destination Ethernet address to: 00:01:40:ef:9a:88
   output interfaces: Port-Channel10
 matched: 0 packets, 0 bytes
switch#
OpenFlow との違いは、コントローラのようなものを必要としない、という点が一番大きい。Arista の Basic OpenFlow 同様、このくらいの処理であればスイッチ ASIC (Trident) をそのままプログラムしてハードウェア処理でこなす。
そして Arista には "ほぼ CLI のコマンドをそのまま JSON RPC over HTTPS に収めて投げつける” eAPI なるインタフェイスがある。これを通せば、はい、簡単お手軽 SDN、というわけ。悪くない。
ただちょっと気になるのは,恐らくはその実装構造上、Arista の一般的なスイッチポートの制御から DirectFlow で扱いたいポートについては完全に隔離する、ということができない点だ。つまり Arista の OpenFlow 実装ではポート番号直接か、あるいは VLAN 指定によって OpenFlow 制御の対象とされたポートは Arista の一般的なスイッチポートの制御対象から完全に外れる。実はこれが結構都合が良い。
しかし DirectFlow はそうならず、DirectFlow の match 指定によって対象とならなかったパケットについては、そのポートの通常の処理(DirectFlow が動いていなかった時のパケット処理)に回されてしまう。
このあたり改善されるともうちょっと使い出があるように思う。
( Trident ベースの Arista をお持ちの方はぜひ一度お試し下さい。)

References