18 October 2014

twhs

mininet + OpenFlowコントローラのフラームワークである Ryu を使用して、Ryuのチュートリアルにあるスイッチングハブの実装・動作を確認してみようと思います。

参考にするURLは以下になります。

mininet と Ryu のインストール

mininet は以下の手順でインストール出来ます。

$ git clone git://github.com/mininet/mininet
$ cd minine
$ ./util/install.sh -nfv

Ryu のインストールは以下です。

$ pip install ryu
$ ryu-manager --version
3.13

mininetのインストールで入る、Open vSwitchのバージョンは1.4.6ということで、OpenFlow1.3に対応しおらず、1.3のOpenFlowなスイッチの動作は確認出来ませんでした。。orz

ソースコード確認

確認したのは、1.3のスイッチハブ実装です。

流れ的には、

  1. SwitchFeatures リクエスト受信
  2. add_flowでデフォルトのflowを追加
    • Datapath.send_msg()が呼ばれて、FlowModメッセージ送信
  3. Packet-inメッセージが来たら、macアドレステーブルを更新
  4. 転送先ポートの判定。対応するポートがあれば5へ。なければフラッディングして、6へ
  5. add_flowで対応するflowを追加
  6. 3に戻る
  • OFP_VERSIONSでOpenFlowのバージョン指定
  • set_ev_clsデコレータで各OpenFlowメッセージごとのイベントハンドラを指定
    • set_ev_clsにはイベントクラスとOpenFlowスイッチのステートを指定
  • DatapathクラスがOFスイッチとの通信を制御している
  • Flowテーブルのマッチ条件は、OFPMatchクラスで指定

参考にしたサイト



blog comments powered by Disqus