Open vSwitchのソースコードを読む(5) ovs-vswitchd の main loop

2013-05-17 by Daisuke Kotani

前回はovs-vswitchdのmain関数のloopの前まで見たので、今回はloopの中を見ていきます。

main loopの中身

existing という変数でループを抜けるかどうか判定しています。existingの変数はunixctlでexitコマンドが送られてきたときにtrueにセットされます。 あとは初期化していたいろんなものを順次走らせています。

exiting = false;
while (!exiting) {
    worker_run();
    if (signal_poll(sighup)) {
        vlog_reopen_log_file();
    }
    memory_run();
    if …
read more

Open vSwitchのソースコードを読む(4) ovs-vswitchdの初期化

2013-05-17 by Daisuke Kotani

前回までは、Kernel moduleの処理を読んでいました。今回はkernel moduleを直接管理しているuserlandのプロセスovs-vswitchdを見ていきます。主なソースコードはvswitchd/以下にあります。

ドキュメント

vswitchd/INTERNALSというファイルがありますが、これにはBondingに関する記述しかないので、今回は無視します。

初期化

vswitchd/ovs-vswitchd.cにmain関数があります。初期化の部分はwhile (!existing) {のループの前までです …

read more

Open vSwitchのソースコードを読む(3) Kernel ModuleのFlow Table

2013-05-16 by Daisuke Kotani

前回はKernel moduleのパケットの入力から出力までの流れを追いました。今回はflow tableに関する処理を見ていきます。主な対象はdatapath/flow.h、datapath/flow.cです。

flow関連の構造体

flow関連と思われる構造体(flow_table, sw_flow, sw_flow_key, sw_flow_actions)がdatapath/flow.hにあります …

read more

Open vSwitchのソースコードを読む(2) Kernel Module

2013-05-14 by Daisuke Kotani

最初にKernel moduleを読んでいきます。パケットの転送をするのですから、パケットの入力の部分、転送ルールを検索し適用する部分、パケットの出力をする部分があるはずです。また、ovs-vswitchdと通信している部分もあるはずです。それらがどのように処理されているのかを探していくところから始めます。

ソースコードを読む前に

datapath/READMEがあるので、これを一通り読みます。datapathはbridgeのようなもの、vportsはdatapathにつながるポート(たぶんインターフェイスと対応付けられるんだと思います)で、それぞれのdatapathにはflow tableがあって、flow …

read more

Open vSwitchのソースコードを読む(1) 読み始める

2013-05-14 by Daisuke Kotani

最近、Open vSwitchのソースコードを読んで処理を追っているので、そのメモを書いていこうと思います。転送するパケットとOpenFlowプロトコルがどう処理されるのかを知りたくて読んでいるので、そのあたりが中心です。細かいところを追うときに、いちいち最初から読むのではなく、どこらへんから追えばよいのか分かる、程度を目指しています。

対象は現段階で最新版の1.10.0です。

Open vSwitchとは

Open vSwitchはソフトウェアスイッチの一つで、サーバ仮想化環境のHypervisorで動くソフトウェアスイッチとしてよく使われているのではないかと思います。CitrixのXenServerはOpen …

read more

Blogを書くことにしました

2013-05-14 by Daisuke Kotani

blogを書くことにしました。 研究を進める上でいろんなことを調べるんですが、調べたものを自分やごく限られた人にしか公開しないのはもったいないなぁと感じていました。研究に問題ない範囲で公開できればよいなぁと思っています。

最近は、自分でblogを管理するツールを入れるならWordpressを使うのが主流だと思うんですが(独断と偏見に基づいてます)、今回は静的にページを生成するPelicanを使ってみることにしました。コメントとトラックバックのような機能をTwitterやその他のサービスに任せると割り切れば、生成されるhtmlが変化するタイミングは自分がコンテンツを更新したときだけです。それなら静的にページを生成してくれたほうがサーバの負荷に優しいですし、脆弱性が出たときのツールのアップデートもしばらく放置できるはずです^^;

PelicanはPythonで作られている静的サイト生成ツールです。Rubyで書かれたものだと …

read more