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

http://www.zusaar.com/event/217007
Open vSwitchのソースコードリーディングをやると言い出したからには、そろそろソースコード読まないといけないと思いつつ、まだほとんど手がついていないので自分を奮い立たせるためにも、何らかのアウトプットをと思ってこれから毎日とは言わないがOpen vSwitchネタを書いていこうかと思う。

まずは、レポジトリからソースを取得

git clone git://openvswitch.org/openvswitch

HTTPプロキシの背後にいる場合にはHTTPでも取得が出来る。

git clone http://openvswitch.org/git/openvswitch

Open vSwitchの開発スピードは非常に速いのでどこかで固定しないと話が変わってきてしまったりするので、ここでは、私がレポジトリから最後にPullしたときの最新版である8a5b3cfd91841c97fbc8a003857cacbd602646edの時点のソースコードであるという前提で話を進める。

本日は、コードの中身に入る前にざっくりとした統計などを見てみることにする。

コードの中身はCとPythonで構成されているようなので、*.c, *.h, *.pyのファイルのの行数を"wc -l"で単純に集計したものがhttps://gist.github.com/2111386になる。

テストコードも含んでいるとはいえ全部で164700行ある。テンプレート用なのかよく分からないけど、上記でリストアップした拡張子以外のファイルもあったので、実際はもっと多いということになる。思いの外大きいなという印象。CとJavaという違いがあって比較するのはナンセンスだとは思うが、Cassandraが前に見たときに14万行くらいだったからそれより大きいのか。

行数トップ10を抜き出すと以下の通り

    6494 ./ofproto/ofproto-dpif.c
    4551 ./lib/netdev-linux.c
    4096 ./ofproto/ofproto.c
    3953 ./lib/ofp-util.c
    3924 ./utilities/ovs-vsctl.c
    3749 ./vswitchd/bridge.c
    2461 ./lib/meta-flow.c
    2350 ./python/compat/argparse.py
    2263 ./lib/ovsdb-idl.c
    2241 ./datapath/datapath.c

argparse.pyを除いて重要そうな大物の印象。トップのofproto-dpif.cはOpenFlowのDatapathに関係しそうな雰囲気。datapath.cはフォワーディングに関わるメインのところの雰囲気。このあたりを見ていけば、いいような気がしてくる。

あと、個人的に気になるのはトップ10に入らなかったが1971行のnicira-ext.h。NiciraのOpenFlowベンダ拡張メッセージが沢山詰まっている。ちなみに、OpenFlowの標準メッセージの行数は以下の通り

     716 include/openflow/openflow-1.0.h
     204 include/openflow/openflow-1.1.h
     197 include/openflow/openflow-common.h

いつの間にかにOpenFlow 1.1のメッセージが取り込まれておる!

そして、全ファイル数は837ある。全ファイルをざくっと眺めて分類しようかなと思ったけど厳しいことが判明。

ということでまた次回。