OpenFlow実践入門

そろそろ「OpenFlow実践入門」についてステマしないといけないのではと思ったので書いてみる。OpenFlowに関して日本語で書かれた書籍はまだ2冊しか出ていないと思うけど、OpenFlowに興味あるならまずはこれを買っておけと。

OpenFlow本と言いつつ、実質はTrema本である。TremaはRubyで書かれたOpenFlowコントローラフレームワークなので、Rubyに愛のない人は厳しいだけど、Rubyを知らなくてもその都度Rubyの文法に関する補足がなされているので、最後まで読み通すことができる。Trema Dayでも、「Python版Tremaはどうなった?」という話が出てきたが、Pythonで再実装するぐらいなら、Rubyを覚えた方が早い。Python使いならRyuという選択肢もある。

高宮さんの巻頭言に感動しながら読み進めていくと、最初に出てくるhello-trema.rbにtypoが!これではまる人はいないと思うが。。。バカ売れして改訂版で直るといいなぁ。

class HelloTrema  Controller # あれ「<」がない
  def start
    puts "Hello, Trema!"
  end
end

つまらない粗探しはこれぐらいにして、へぇと思った部分をいくつか。

  • Flow ModとPacket Outは一緒にやらない方がよい。
  • 統計情報を取得するには、Flow Removedメッセージを使う。(え、それでいいの?という驚き)
  • OpenFlowに関係ないけど、ルーティングテーブルのロンゲストマッチの実装方法。

また、Trema Dayで鈴木さんが、シンプルルータ(simple-router.rb)について、C言語でパケットを書き換えるのは簡単だけど、Rubyは抽象度が高いので苦労した。パケットの生成や書換えをうまくやる方法は確立できてないと裏話を語っておられた。会場からはRacketというライブラリが使えるのではとの指摘があった。

あとは実際に手を動かしながら、読み深めようと思う。

(追記)高宮さんに正誤表のページを教えてもらった。

クラウド時代のネットワーク技術 OpenFlow実践入門 (Software Design plus)

クラウド時代のネットワーク技術 OpenFlow実践入門 (Software Design plus)