2014年1月31日金曜日

OpenFlow  UbuntuにTremaをインストールしてみる

今回はUbuntuにtremaをインストールしてみます。

tremaのインストールは以前実施していますが、今回はOS(Ubuntu)のバージョンが12.04から13.10に上がっています。
まずは一度、前回と同じ手順でインストールしてみます。

$ sudo apt-get install gcc make ruby1.8 rubygems1.8 ruby1.8-dev libpcap-dev libsqlite3-dev
$ sudo gem install trema

tremaのインストールでエラーが発生しました。

(省略)
No package 'glib-2.0' found
gcc -I.  -I../../../include -DHAVE_CONFIG_H -I../wireshark-1.0.0-includes -I/usr/local/include -I/usr/local/include -DINET6 -D_U_=__attribute__\(\(unused\)\) -Wall -Wpointer-arith -g -I/usr/local/include -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/X11R6/include -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/usr/local/include/glib-2.0 -I/usr/lib/glib-2.0/include -fPIC -DPIC -D_LITTLE_ENDIAN_ -DOPENFLOW_DST_TCP_PORT=6633   -c -o packet-openflow.o packet-openflow.c
packet-openflow.c:19:18: fatal error: glib.h: そのようなファイルやディレクトリはありません
 #include 
                  ^
compilation terminated.
make: *** [packet-openflow.o] エラー 1
rake aborted!
(省略)

glib.hファイルが見つからないといったが内容のようです。

解決方法をネットで見つけました。
libglibc2.0-devをインストールすればよさそうです。

$ sudo apt-get install libglib2.0-dev

tremaのインストールを再実行してみます。

$ sudo gem install trema
Building native extensions.  This could take a while...
Successfully installed trema-0.4.6
1 gem installed
Installing ri documentation for trema-0.4.6...
Installing RDoc documentation for trema-0.4.6...

インストールが完了しました。
tremaのバージョンを確認します。

$ trema --version
trema version 0.4.6

tremaのバージョン上がってました!
前回は0.3.19でした。

今回は以上になります。

2014年1月29日水曜日

VMware PlayerでゲストOSのバックアップ

今回はVMware PlayerのゲストOSのバックアップについて調べました。

使用するのはVMware Playerのバージョン6です。

VMware Workstationの方は、スナップショットやクローンの作成が出来るようですが、VMware Playerの方はそういった機能はなさそうで、VMイメージがあるフォルダごとバックアップをとってしまうようです。

Windows8の場合、VMのイメージファイルは以下にあります。

C:\Users\<username>\Documents\Virtual Machines
<username>は現在ログインしているユーザーの名前です。

このフォルダの中にゲストOSと同じ名前のフォルダがあるので、それを丸ごとコピーします。

バックアップはこれだけです。
以下はバックアップから戻す方法と、VMイメージを別のゲストOSにする方法です。

【バックアップから戻す】

1.バックアップ元のゲストOSをVMware Playerからファイルごと削除します。

2.コピーしたフォルダを元の場所に戻します。(フォルダ名、ファイル名は以前のままになっている事)

3.VMware Playerを起動し、仮想マシンを開くをクリックします。

4.ファイルの選択ダイアログで、元に戻したフォルダまで移動し「.vmx」ファイルを選択します。


【コピーしたVMイメージを別の名前のゲストOSにする】

1.コピーしたフォルダの名前を新しいゲストOS名にします。

2.そのフォルダ内に、コピー元のゲストOSの名前が付いたファイルあるので、それを新しいゲストOS名に変更します。

3.フォルダ内にある「.vmx」ファイルをテキストエディタで開き、コピー元のゲストOSの名前を新しいゲストOSの名前に置き換えます。

4.VMware Playerを起動し、仮想マシンを開くをクリックします。

5.先ほどコピーした新しいゲストOSのフォルダに移動し、「.vmx」のファイルを開きます。

6.「この仮想マシンは移動またはコピーされた可能性があります・・・」とメッセージが出るので、「コピーしました」をクリックします。

2014年1月28日火曜日

OpenFlow MininetのVMイメージを使う

今回はMininetを使用するもう一つの方法、VMイメージを使うパターンを試してみます。

推奨はVirtualBoxみたいなので、VirtualBoxを使います。

1.VMイメージのダウンロード

http://mininet.org/のページからVMイメージをダウンロードします。
画面左下や右側メニューの「Get Started」や「Download」のリンクからインストール関連のページに移動します。

「Option 1: Mininet VM Installation (easy, recommended)」の下にある「2.1.0」のリンクから以下のダウンロードページに移動します。

https://bitbucket.org/mininet/mininet-vm-images/downloads


今回は「mininet-2.1.0-130919-ubuntu-13.04-server-i386-ovf.zip」をダウンロードします。


2.VirtualBoxの設定

VirtualBoxを起動し、「新規」で仮想環境を作ります。
















名前とオペレーティングシステムはの各項目を入力し、次へをクリックします
 名前   :任意の名前を入力します
 タイプ  :Linuxを選択します
 バージョン:Ubuntu (64bit)を選択します


















メモリーサイズは任意のサイズを指定します


















ハードドライブは「仮想ハードドライブを追加しない」を選択し、作成をクリックします。


















VirtualBoxのイメージ保存先(Windows8の場合、C:\Users\<username>\VirtualBox VMs)の下に新規作成したゲストOS名と同じフォルダがあるので、ダウンロードしたMininetのVMイメージファイルを解凍します。


新規作成したVMを選択し、設定をクリックします















画面の左側でストレージを選択し、ハードディスクの追加のアイコン(コントローラーIDEの右側のアイコン)をクリックします















質問ダイアログで「既存のディスクを選択」をクリックし、ファイル選択ダイアログで解凍したVMイメージを選択します













新規作成したゲストOSを選択して起動ボタンをクリックします
















ログイン画面が表示されたら以下のアカウントでログインします。
 ユーザ:mininet
 パスワード:mininet


OpenFlow Mininetの使い方

今回はMininetの使い方を調べてみました。

ただし、もっといろいろオプションの指定が出来そうです。
また新しい発見があったら載せたいと思います。


【Mininetの起動方法】

sudo mn -h
起動オプションを表示します

sudo mn
デフォルトのトポロジと、NOXのコントローラの構成で起動します

sudo mn --controller remote
同一サーバ内の任意のコントローラを使用出来ます。
コントローラの方をあらかじめ起動しておきます。

sudo mn --controller remote, ip=[IPアドレス], port=[ポート番号]
別サーバの任意のコントローラを使用出来ます。
コントローラの方をあらかじめ起動しておきます。

sudo mn --test pingpair
デフォルトの構成で起動し、pingのテストを実施します。

sudo mn --topo=single,3
一つのスイッチに3つのホストがつながった構成で起動します

sudo mn --custom customtopo.py --topo sample
別のトポロジを(ここでは例としてcustomtopo.pyファイルのsample)指定して起動する


【Mininetの終了方法】

MininetのCLIでexitと打つか、Ctl+Dを押します

【MininetのCLIコマンド】

Mininetを起動すると、コマンドラインが表示されます。
コマンドラインで実行出来るコマンドを記します
helpで見ると以下に書かれているコマンド以外にもいくつかあります。

help
コマンドの一覧を表示します

nodes
ノードを表示します

net
リンクを表示します

dump
全てのノードの情報を出力します

pingall
全てのネットワーク接続に対してpingを送ります

他にもMininet内のノードを指定して実行するコマンドがあります
以下のように書きます。

ノード名 コマンド

例えばホストh1からh2にpingを飛ばす場合、以下のように書きます

h1 ping h2
h1 ping 10.0.0.2

その他、Linuxと同じ様なコマンドを実行する事が出来ます。

h1 ifconfig -a
h1 ps -a

今回は以上です。

2014年1月26日日曜日

VMwareにゲストOSをインストールしてみる

今回はVMware PlayerにゲストOSをインストールしてみます。

インストールするのは日本語版のUbuntuで、最新バージョンの13.10です。

まずは、Ubuntu Japanese Team: HomepageよりUbuntuのインストールイメージをダウンロードしてきます。

http://www.ubuntulinux.jp/

このページのUbuntuのダウンロードボタンをクリックします。
次のページでは日本語Remixイメージのダウンロードボタンをクリックします。

ダウンロードサイトの画面が表示されたら、適当なサイトからISOイメージをダウンロードします。
今回は64bit版をインストールするので、以下のISOイメージをダウンロードします。

ubuntu-ja-13.10-desktop-amd64.iso(ISOイメージ)

約1Gバイトありました。

では、インストールを始めます。
途中、細かくダイアログが出てきたりしますが、ここでは割愛します。

VMware Playerを起動し、「新規仮想マシンの作成」をクリックします。


















「後でOSをインストール」を選択し、次へをクリックします



















ゲストOSの選択画面では「Linux」を選択し、バージョンは「Ubuntu 64ビット」を選択して次へをクリックします



















仮想マシン名、イメージファイル保存先の場所を設定し次へをクリックします


















ディスク最大サイズはデフォルトの推奨サイズとし、「仮想ディスクを単一ファイルとして保存」を選択して次へをクリックします


















完了をクリックします



















「仮想マシン設定の編集」をクリックします


















画面左の「CD/DVD(SATA)」をクリックし、右側の「ISOイメージファイルを使用する」を選択します
参照ボタンをクリックし、ダウンロードしたUbuntuのISOイメージを選択してOKをクリックします

















仮想マシンの再生をクリックします


















エラー画面が表示されました・・・
インストール先のPCは、Intel VT-xが有効になっていなかったようです
BIOSの設定を変更して Intel Virtualization Technology を有効にしました
設定後、仮想マシンの再生を再実行しました
(BIOSの変更等は自己責任で行ってください;;BIOSの名称は、使用しているPCによって異なるかもしれません。)



Ubuntuのサンプル画面が表示されます

メモ
ゲストOSから本体のWindowsにマウスやキーボードのコントロールを戻すにはCtl+Altを押します

Ubuntuのインストールを開始するには、デスクトップの「Ubuntu 13.10のインストール」アイコンをダブルクリックします

















言語を選ぶ画面では、日本語が選択されている事を確認して続けるをクリックします

















特に問題なさそうなので、続けるをクリックします

















ディスクを削除してUbuntuをインストールが選択されてる事を確認して、インストールをクリックします




 

Ubuntuのインストールが始まります
Tokyoが選ばれている事を確認して、続けるをクリックします

















キーボードは日本語が選ばれている事を確認して、続けるをクリックします

















ログインに使用するユーザ名やパスワード等を入力し、続けるをクリックします

















Ubuntu Oneアカウントの設定画面です
ここではLogin laterをクリックして設定を飛ばしました


















いよいよインストールが始まりました
終わるまで待ちます

















インストールが終了した時の画面がコチラです
今すぐ再起動をクリックします

















これはCDが入りっぱなしの状態だったみたいです
Playerメニューのパワーから、一度ゲストOSの電源切ります

















メイン画面から、作成したゲストOSを選択し、「仮想マシン設定の編集」をクリックします


















画面左の「CD/DVD(SATA)」をクリックし、右側の「物理ドライブを使用する」を選択します
OKボタンを押して、前の画面に戻り「仮想マシンの再生」をクリックします

















ログイン画面が表示されたら、先ほど作ったユーザのパスワード入力してログインします

















デスクトップ画面が表示されます

















無事、インストールできたようです。

今回は以上になります

2014年1月25日土曜日

OpenFlow Mininetをインストールしてみる

今回はMininetのインストールをしてみます。

Mininetを使うには以下の方法があります。
・あらかじめUbuntuにMininetがインストールされたVMイメージを使う
・UbuntuかFedoraにソースを落としてインストールする
・パッケージからインストールする

今回はソースを落としてインストールしてみます。

推奨は最新のUbuntuにインストールするようですが、今回インストールしたUbuntuのバージョンは12.04です。 この記事を書いてる時点のUbuntuの最新バージョンは13.10でした。

インストール先のUbuntuのバージョンを確認してみる。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.2 LTS
Release:        12.04
Codename:       precise

まずはMininetのソースコードをダウンロードします。

git clone git://github.com/mininet/mininet

以下のコマンドでMininetをインストールします

$ sudo mininet/util/install.sh

待つこと約20分
最後に以下のような表示がされて、インストールが完了したようです。

Enjoy Mininet!

上記インストールのコマンド(install.sh)の後にオプションを付ける事で、何をインストールするか決めれるようです。
今回は何もつけなかったので、結構時間がかかってしまったのかもしれません。

バージョンを確認してみます。
$ mn --version
2.1.0+

試しに基本的な機能をテストしてみます。

$ sudo mn --test pingall
[sudo] password for sdn:
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
*** Starting 1 switches
s1
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
*** Stopping 1 switches
s1 ..
*** Stopping 2 hosts
h1 h2
*** Stopping 1 controllers
c0
*** Done
completed in 4.004 seconds

ちゃんと動きそうな予感。

以上です。

OpenFlow Mininetとは何だ!?

Tremaや他のフレームワークでコントローラを作っても、動作確認するにはOpenFlow対応スイッチや、それに接続するホストPCなどが必要になります。
以前紹介しましたが、Tremaには簡易な確認環境が用意されています。

他にもMininetという仮想ネットワーク環境を作るソフトがあるようです。

Mininet
http://mininet.org/

今度はこのMininetを試してみようと思います。
とりあえず今回は、Mininetを使っていろいろ試した方のページを探してみました。

OpenFlow の動作確認に便利な Mininet を OpenFlow 1.3 で使う http://momijiame.tumblr.com/post/73412814308/openflow-mininet-openflow-1-3

OpenFlow/mininet
http://labs.beatcraft.com/ja/index.php?OpenFlow%2Fmininet

OpenFlowを気軽に試せるMininet
http://tech-sketch.jp/2012/07/openflowmininet.html

OpenFlow環境をつくってみた(POX,Mininet編) http://nushu123.blogspot.jp/2012/07/openflowmac.html
OpenFlow環境をつくってみた(NOX,Mininet編) http://nushu123.blogspot.jp/2012/07/openflownoxmininet.html

Mininetの使い方について(1)
http://www.cloudcluster.cloudysunny14.org/show_materials?id=ahBzfm9uY2xvdWRjbHVzdGVyciYLEg9NYXRlcmlhbHNUaGVtZXMY0YwBDAsSCE1lbnRpb25zGOkHDA
Mininetの使い方について(2)
http://www.cloudcluster.cloudysunny14.org/show_article?id=ahBzfm9uY2xvdWRjbHVzdGVyciwLEg9NYXRlcmlhbHNUaGVtZXMY0YwBDAsSCE1lbnRpb25zGICAgICAwK8KDA

これらの内容を参考に実際に使ってみたいと思います。