18th - SDN と GPL

Google の B4 はルーティングプロトコル処理のために Quagga を使っている。Quagga はよく使われるルーティング処理の実装らしいが、GNU Project のソフトウェアでもある。B4 はこれに手を加えて使っているが、そのままいじると B4 のシステム全体を GPL にしなければならない可能性がある。どうしているんだろうと思ったら、Google は proxy を用意して Quagga から情報を取得していた。
具体的には彼らは Quagga を改造して、コントロールする(はずの)物理スイッチの各ポートに対応する tuntap インタフェイスを作らせるようにした。これによって Quagga のインタフェイスに対する振る舞いを監視しよう、というわけだ。
Quagga を使ったもう一つの OpenFlow アプリとして QuagFlow について調べてみた。Quagga を使ってルーティング処理をさばかせ、それに合わせて OpenFlow スイッチの転送テーブルを設定させようとするものだ。こちらは Google と違い、Quagga のコードに一切手を入れないで Quagga の挙動を把握することを実現している。つまり Quagga が走っているホストの上でもう一つ、Quagga を監視するためのデーモンを走らせ、これがそのホストのルーティングテーブルの更新をポーリングして見張るのだ。
QuagFlow 論文には Quagga のコードに手を入れないことで「 Quagga の発展と独立性を保てる」というような記述があるし、Google の方法にしてもある程度疎な結合にしておく方がソフトウェア・コンポーネントの柔軟な配置が可能、ということもあるだろう。更に QuagFlow の場合はコントローラである NOX 自体が GPL だったりするので、あまり関係無いような気もするが、やはりこの先ネットワーク関連技術のソフトウェア部分が GPL とどう付き合うか、ちょっと考えてしまう。
特に SDN アプリケーションは、今のところアプリのロジックをコントローラに組み込んで作る格好になる場合が多いだろうから、自社で開発した SDN アプリを GPL で外に出さざるを得なくなる、というのはちょっと避けたがるところが出てきそうだなあ。
そろそろこのあたりも気にしながら見ておこうと思う。
[ 根拠が薄いというか、私個人のバイアスが強そうな話をしています。ご容赦ください。 ]

References