Mininet + ryu インストールと実行まで

  • 12
    Like
  • 0
    Comment

とりあえず導入と簡単なテストだけしたのでメモ代わりにまとめます。
タイトル通りインストールから実行までです。
細かい操作とかはまた書きます(書けるようになった頃に)。

Mininetとryuのインストール

Mininetのインストールは、VM上に入れる方法とubuntuにネイティブに入れる方法の2通りあるのですが今回は後者の方法で導入しました。

環境

  • Ubuntu 12.04
  • さくらVPSにカスタムOSとしてインストール
  • 14.04だとなぜか失敗しました ( $ sudo apt-get install build-essential し忘れて先にMininetとryuを入れてしまったせいかもしれません )

手順

生まれたばっかり、まっさらなubuntuを想定します。

1. 前準備

gitからcloneするのでgitも入れます。

$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install git

2. Mininetのインストール

作業したいディレクトリで。
どちらにしろmininetというディレクトリができるので自分は$HOMEでそのまま実行しました。

$ git clone git://github.com/mininet/mininet
$ cd mininet
$ git tag    #利用できるバージョンが表示されます
$ git checkout -b 2.2.1 2.2.1  #自分は2.2.1を選択しました
$ cd ../
$ mininet/util/install.sh -nfv #今回はryuを使うのでこのようなoptionsを指定

install.sh[options]で今回は-nfvを指定しましたが、
これは Mininet本体,リファレンススイッチ, OpenvSwitch の3つをインストールするものです。
install.sh -aとかしてやるとwiresharkとかPOX(コントローラ)も一緒にインストールされます。
以下のコマンドで確認できます。

$ mn --version
2.2.1

3. ryuのインストール

$ sudo apt-get -y install python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
$ sudo pip install ryu

こちらも確認。

$ ryu-manager --version
ryu-manager 3.26

実行

* その前に
実行するためのサンプルのファイルなどは以下のディレクトリに入っています。
/usr/local/lib/python2.7/dist-packages/ryu/app/
実行時にこのパスを入力するのは面倒なので自分は$HOMEにシンボリックリンクを作りました。
$ ln -s /usr/local/lib/python2.7/dist-packages/ryu /home/username/ryu

ryu-managerの実行方法

ryu-managerに実行したいファイルを渡せば実行できます。
先ほどの方法でシンボリックリンクを作っていれば
$ ryu-manager ryu/app/simple_switch.py
で実行できます。通信がなければ起動した通知が出て、受け付けている状態で止まります。
(終了はCtrl+Cで切ってますがほかにいい方法あれば教えてください)

Mininet + ryu の動作確認

コンソール2つ開いてMininetとryu-managerを触ります。
まずはryuコントローラで、サンプルとして入っているスイッチを起動し、接続されるのを待ちます。

terminal_1(ryu)
$ ryu-manager ryu/app/simple_switch.py

次にもう1つのコンソールでMininetを起動しネットワークを構成します。

terminal_2(Mininet)
$ sudo mn --controller remote
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Starting CLI:
mininet>

これで、terminal_1(ryu)のほうのコンソールにずらずらとmacアドレスが出てくると思います。

terminal_2(Mininet)
mininet> h1 ifconfig

とすればhost1でifconfigを実行できます。
また、pingなどを試せばterminal_1(ryu)にまたずらずらと出てきます。

terminal_2(Mininet)
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)

Mininetの終了はexitで

terminal_2(Mininet)
mininet> exit

Mininetでネットワークを構成する

pythonでMininetのネットワークを構成するスクリプトを書くことで作成したいネットワークを細かく設定できる。
$ sudo python <script>
で実行。サンプルがmininet/examples/に入っているので試しに実行してみましょう。

$ sudo python mininet/examples/multilink.py

スクリプトの中でMininetについての記載があるので$ mnなどのコマンドは必要ありません。

Mininetの使い方(書き方)とかもっと勉強しておきます。

参考