Open vSwitchソースコードリーディングに向けて その2

昨日は、ファイルの行数トップ10などを確認したが、ソースコードツリーの全体をざっくと見てみることにする。

トップディレクト

READMEをはじめとして、まず最初に目を通しておいた方が良さそうなファイルが並んでいる。各種インストール手順はINSTALL.*に書いてある。

DESIGNは、Open vSwitchのアーキテクチャ設計が解説されているのかと思ったが、中を見てみると主にOpenFlow関係の実装方針が書かれているようである。

実は、アーキテクチャ全体の概略はPORTINGを見た方が分かるくさい。"Open vSwitch Architectural Overview"という見出しがある。

NEWSには、これまでのリリースノートと、これからのリリースの載せる機能が書かれている。Version 1.6.0までの機能追加プランとPost 1.6.0のプランが記載されている。

datapath/

名前からしてパケットフォワーディングに関係したソースコードが格納されているくさい場所。vport-*.c, vport.cとdatapath.c, datapath.hあたりが重要そう。子ディレクトリのlinuxの下にはカーネルモジュールに関係したファイルが置かれていると推測。

debian/

Debianのパッケージを作成するのに必要なファイルが格納されていると思われる。

include/

サブディレクトリとして、

  • linux
  • openflow
  • openvswitch
  • sparse

がある。最後のsparseは何に関係しているのかちょっと想像がつかない。

lib/

ファイルが大量にある。基本的なデータ構造に関係しそうな、hmapなどといったものからAES関係くさいaes128.cやら、flow, dpif, vconnなどネットワークに関わるもの、ofp-*などのOpenFlow関係のものなどいろいろ格納されている。

ofproto/

名前からしてOpenFlowプロトコル関係のファイルが格納されていると推測。

ovsdb/

Open vSwitchの制御プロトコル?のOVSDB関係のファイルが格納されていると推測。

python/

Open vSwitchをPythonから使うためのファイルなのか?ほとんど見ていないので詳細不明。

rhel/

おそらく、Red Hat向けのパッケージ作成のためのファイルが格納されている。

test/

その名の通りテスト関連のディレクトリ。格納されているファイルの種類としては、*.pyと*.cと*.atがあるようだ。前者二つは分かるが、*.atが何だか分かっていない。

third-party/

tcpdumpをOpenFlowプロトコルのメッセージに対応させるためのパッチが格納されている。

utilities/

ovs-*という実行ファイルを最終的に作るためのmain関数を含んだソースファイルが格納されている。

xenserver/

中身をほとんど確認していないが、Xenに関係したファイルが格納されていると推測。このディレクトリに含まれているREADMEを読めば概要が分かるような気がする。

今回は中身が非常に薄いエントリになってしまった。次回は、DESIGNとPORTINGあたりの内容を読んでまとめようかと思う。