- 書名: クラウド時代のネットワーク技術 OpenFlow実践入門 (SoftwareDesign plusシリーズ)
- 著者: 高宮安仁、鈴木一哉
- 体裁: A5版、336ページ
- 発売日: 2013年1月8日
- 価格: 3,360円 (本体3,200円)
- 発行: 技術評論社
もくじ
完全なもくじはこちら
Part 1:SDN/OpenFlow入門 第1章:OpenFlowって何? 1.1:ソフトウェアで思いどおりにコントロールする 1.2:SDN: ネットワークをソフトウェアで制御しよう 1.3:OpenFlowの仕組み 1.4:OpenFlowのうれしさ 1.5:OpenFlowで気をつけること 1.6:まとめ 第2章:OpenFlowのユースケース 2.1:OpenFlowはアカデミア出身 2.2:なぜOpenFlowが注目されているのか? 2.3:ユースケースあれこれ 2.4:まとめ 第3章:OpenFlowの仕組み 3.1:スイッチとコントローラ間のやりとり 3.2:フローエントリの中身 3.3:まとめ 第4章:OpenFlowの開発フレームワーク 4.1:開発フレームワークを活用しよう 4.2:Trema 4.3:NOX 4.4:POX 4.5:Floodlight 4.6:どれを選べばいい? 4.7:その他のツール(Cbench) 4.8:まとめ Part 2:OpenFlowプログラミング入門 第5章:OpenFlowフレームワークTrema 5.1:作ってわかるOpenFlow 5.2:Tremaとは 5.3:Tremaのセットアップ 5.4:Hello, Trema! 5.5:tremaコマンド 5.6:即席Ruby入門 5.7:Tremaのファイル構成 5.8:サンプルアプリ 5.9:まとめ 第6章:スイッチ監視ツール 6.1:ネットワークを集中管理しよう 6.2:SwitchMonitorコントローラ 6.3:即席Ruby入門 6.4:SwitchMonitorのソースコード 6.5:まとめ 第7章:インテリジェントなパッチパネル 7.1:便利なインテリジェント・パッチパネル 7.2:OpenFlow版インテリンジェント・パッチパネル 7.3:PatchPanelコントローラ 7.4:即席Ruby入門 7.5:PatchPanelのソースコード 7.6:まとめ 第8章:すべての基本、ラーニングスイッチ 8.1:ラーニングスイッチとは何か? 8.2:スイッチの仕組み 8.3:OpenFlow版スイッチ(ラーニングスイッチ)の仕組み 8.4:LearningSwitchコントローラ 8.5:即席Ruby入門 8.6:LearningSwitchのソースコード 8.7:まとめ 第9章:トラフィックモニタ 9.1:トラフィック情報を収集しよう 9.2:TrafficMonitorコントローラ 9.3:実行してみよう 9.4:即席Ruby入門 9.5:TrafficMonitorのソースコード 9.6:まとめ 第10章:シンプルなルータ(前編) 10.1:ルータとスイッチの違いは? 10.2:イーサネットだけならルータは不要? 10.3:ルータの動作 10.4:SimpleRouterのソースコード 10.5:まとめ 第11章:シンプルなルータ(後編) 11.1:宛先ホストをまとめる 11.2:ネットワーク宛てのエントリをまとめる 11.3:RoutingTableのソースコード 11.4:実行してみよう 11.5:まとめ 第12章:Tremaのアーキテクチャ 12.1:OpenFlow先生が家にやってきた 12.2:trema runの裏側 12.3:Switch Manager 12.4:Switch Daemon 12.5:仮想ネットワーク 12.6:Trema Cライブラリ 12.7:低レベルデバッグツールTremashark 12.8:Trema Apps 12.9:まとめ Part 3:ケーススタディ〜本格的なOpenFlowアプリケーション 第13章:生活ネットワークをOpenFlowに移行する 13.1:どんどん規模を広げていこう 13.2:大ケガしないためのヘルメット 13.3:私たちの失敗談 13.4:OpenFlowへの移行パターン 13.5:逆流防止フィルタ 13.6:まとめ 第14章:いくつものスイッチをルーティングスイッチで制御する 14.1:美しい大規模ネットワーク 14.2:複数のスイッチを制御する 14.3:実行してみよう 14.4:OpenFlowを使う利点 14.5:まとめ 第15章:スライス機能付きスイッチでネットワークを仮想化する 15.1:クラウドサービスを作るには 15.2:スライスとは何か? 15.3:スライスによるネットワーク仮想化 15.4:実行してみよう 15.5:REST APIを使う 15.6:OpenStackと連携する 15.7:まとめ 第16章:データセンター基盤をTremaで作る 16.1:フリーソフトウェアでIaaS基盤を作ろう 16.2:Wakame-VDC 16.3:エッジによるネットワーク仮想化 16.4:Wakame-VDCの全体アーキテクチャ 16.5:なぜTremaを選んだのか 16.6:まとめ 第17章:OpenFlowでデータセンターをつなげる 17.1:GoogleはOpenFlowを導入済み! 17.2:WAN 回線を効率的に使うには? 17.3:GoogleのWAN回線のしくみ 17.4:まとめ Appendix: Appendix A:2,000円でOpenFlowスイッチをDIY A.1:一家に1台、OpenFlowスイッチ A.2:OpenFlow化のしくみ A.3:OpenFlow化の手順 A.4:Tremaとつないでみよう A.5:自作OpenFlowスイッチの制限 A.6:まとめ Appendix B:Tremaでテスト駆動開発 B.1:天才プログラマ達の伝説 B.2:奥義、ソフトウェアテスト B.3:リピータハブの動き B.4:どこまでテストするか? B.5:リピータハブのテスト戦略 B.6:最初のテスト B.7:パケット受信をテストする B.8:フローエントリのテスト B.9:再びパケットの受信をテスト B.10:まとめ
はじめまして。hogehogeと申します。
”OPen Flow実践入門”を参照しながら、Ubuntu11.10にてセットアップを行ったのですが、
小生のスキル不足のためうまくいきません。
5.3
% ./build.rb を実施すると以下のような 表示が出てきます。
hogehogei@hogehogei:~/trema$ ./build.rb
gcc -I/home/hogehogei/trema/objects/openflow -g -std=gnu99 -D_GNU_SOURCE -fno-strict-aliasing -Werror -Wa
ll -Wextra -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-ar
ith -fPIC -c -o /home/hogehogei/trema/objects/lib/trema_wrapper.o /home/hogehogei/trema/src/lib/trema_wrappe
r.c
/home/hogehogei/trema/src/lib/trema_wrapper.c:21:21:致命的エラー:sqlite3.h:そのようなファイルやディレ
クトリはありません
コンパイルを停止しました。
rant: [ERROR] in file `/home/hogehogei/trema/Rantfile’, line 397:
rant: [ERROR] Task `default’ fail.
rant aborted!
./build.rb aborted!
→何が足りないのでしょうか??
◆因みに、rubyのVersionは以下のとおりです。
hogehogei@hogehogei:~/trema$ ruby –version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
◆tremaのVersionは以下の通りです。
(以下のような表示になってしまいます)
/trema$ ./trema –version
NAME
trema – Trema command-line tool
SYNOPSIS
trema [global options] command [command options] [arguments…]
VERSION
0.3.1
GLOBAL OPTIONS
–help – Show this message
-v, –verbose – Be verbose
–version – Displays the current runtime version
COMMANDS
dump_flows – Print all flow entries
help – Shows a list of commands or help for one command
kill – Terminates a trema process
killall – Terminates all trema processes
netns – Opens a new shell in the specified network namespace
reset_stats – Resets stats of packets
ruby – Opens in your browser Trema’s Ruby API documentation
run – Runs a trema application
send_packets – Sends UDP packets to destination host
show_stats – Shows stats of packets
up – Starts a killed trema process again
version – Displays the current runtime version
◆上記のような状態で、hello-trema.rbファイルを作成後
trema run を実行しても not faund されてしまいます。
hogehoge@hogehoge:~/trema$ trema run ./hello-trema.rb
trema: command not found
なにがエラーの原因となっているか教えていただけますでしょうか?
お手数ではありますが、ご教授のほどよろしくお願い致します。
エラーメッセージの通り、sqlite3 のヘッダファイル (libsqlite3-dev パッケージ) がインストールされていません。
本のインストール手順にある、apt-get install は実行されましたでしょうか?
はじめまして。 どうしても原因の分からないエラーが出たので質問させてください。
サンプルプログラムのスイッチモニター監視ツールが正常に動作しません。
trema run ./switch-monitor.rb -c ./switch-monitor.conf コマンドで
実行したのですが、実行結果が
All switches =
All switches =
All switches =
All switches =
….
で、Switchがupせず、再度実行すると、
ovs-openflowd: /var/lib/gems/1.8/gems/trema-0.3.19/tmp/pid/open_vswitch.0x1.pid: already running as pid 2276, aborting
error: Command ‘sudo /var/lib/gems/1.8/gems/trema-0.3.19/objects/openvswitch/bin/ovs-openflowd –detach –out-of-band –fail=closed –inactivity-probe=180 –rate-limit=40000 –burst-limit=20000 –pidfile=/var/lib/gems/1.8/gems/trema-0.3.19/tmp/pid/open_vswitch.0x1.pid –verbose=ANY:file:dbg –verbose=ANY:console:err –log-file=/var/lib/gems/1.8/gems/trema-0.3.19/tmp/log/openflowd.0x1.log –datapath-id=0000000000000001 –unixctl=/var/lib/gems/1.8/gems/trema-0.3.19/tmp/sock/ovs-openflowd.0x1.ctl netdev@vsw_0x1 tcp:127.0.0.1:6633’ failed!
というエラーが出てしまい実行できませんでした。
エラーの意味が分からないのでご教授お願いします。
はじめまして。
私もHogeさんとまったくおなじ症状が出ており困っています。
実は最初のhello trema、次のスイッチモニターと連続して試してみたときは上手く動作していて、その後数日あけてさらに先にすすめようとしたところ、上記のような症状が発生しています。
vSwitchが起動していない、というよりはコントローラーに接続できていない(vSwitchの起動がコントローラー側に通知されていない)ように見えるのですが。。。。対処方法などわかりましたらご教授願いますm(_ _)m
念の為起動したときに使用したrbファイル、confファイル、vSwitchのログを添付させていただきます。
———————————————————————————
#switch_monitor$ cat switch-monitor2.rb
class SwitchMonitor < Controller
periodic_timer_event :show_switches, 10
def start
@switches = []
end
def switch_ready datapath_id
@switches </dev/null
Shutting down 0xabc2…
sudo kill 8510 2>/dev/null
Shutting down 0xabc3…
sudo kill 8516 2>/dev/null
#switch_monitor$
#switch_monitor$ cat /home/testuser/trema/trema/tmp/log/openflowd.0xabc3.log
Jun 28 12:54:24|00001|vlog|INFO|opened log file /home/testuser/trema/trema/tmp/log/openflowd.0xabc3.log
Jun 28 12:54:24|00002|openflowd|INFO|Open vSwitch version 1.2.2.trema1
Jun 28 12:54:24|00003|openflowd|INFO|OpenFlow protocol version 0x01
Jun 28 12:54:24|00004|dpif|DBG|netdev@vsw_0xabc3: recv_set_mask success
Jun 28 12:54:24|00005|dpif|DBG|netdev@vsw_0xabc3: flow_flush success
Jun 28 12:54:24|00006|ofproto|INFO|using datapath ID 0000002320ccfe24
Jun 28 12:54:24|00007|dpif|DBG|netdev@vsw_0xabc3: port_dump_start success
Jun 28 12:54:24|00008|dpif|DBG|netdev@vsw_0xabc3: port_dump_next success
Jun 28 12:54:24|00009|dpif|DBG|netdev@vsw_0xabc3: dumped all ports
Jun 28 12:54:24|00010|ofproto|INFO|datapath ID changed to 000000000000abc3
Jun 28 12:54:24|00011|rconn|INFO|vsw_0xabc3tcp:127.0.0.1:6633: connecting…
Jun 28 12:54:24|00012|rconn|WARN|vsw_0xabc3tcp:127.0.0.1:6633: connection failed (Connection refused)
Jun 28 12:54:24|00013|rconn|INFO|vsw_0xabc3tcp:127.0.0.1:6633: waiting 1 seconds before reconnect
Jun 28 12:54:24|00014|rconn|DBG|vsw_0xabc3tcp:127.0.0.1:6633: entering BACKOFF
Jun 28 12:54:24|00015|dpif|DBG|netdev@vsw_0xabc3: flow_flush success
Jun 28 12:54:25|00016|poll_loop|DBG|wakeup due to 987-ms timeout at lib/rconn.c:511
Jun 28 12:54:25|00017|rconn|INFO|vsw_0xabc3tcp:127.0.0.1:6633: connecting…
Jun 28 12:54:25|00018|rconn|WARN|vsw_0xabc3tcp:127.0.0.1:6633: connection failed (Connection refused)
Jun 28 12:54:25|00019|rconn|INFO|vsw_0xabc3tcp:127.0.0.1:6633: waiting 2 seconds before reconnect
Jun 28 12:54:25|00020|rconn|DBG|vsw_0xabc3tcp:127.0.0.1:6633: entering BACKOFF
Jun 28 12:54:25|00021|poll_loop|DBG|wakeup due to 10-ms timeout at ofproto/ofproto-dpif.c:622
Jun 28 12:54:25|00022|dpif|DBG|netdev@vsw_0xabc3: flow_dump_start success
Jun 28 12:54:25|00023|dpif|DBG|netdev@vsw_0xabc3: dumped all flows
Jun 28 12:54:26|00024|poll_loop|DBG|wakeup due to 1000-ms timeout at ofproto/ofproto-dpif.c:622
Jun 28 12:54:26|00025|dpif|DBG|netdev@vsw_0xabc3: flow_dump_start success
Jun 28 12:54:26|00026|dpif|DBG|netdev@vsw_0xabc3: dumped all flows
・・・・・・・
#switch_monitor$
おそらく、trema のプロセスが残っているのだと思います。
trema killall としてもらってから、再び trema run するとどうなるでしょうか?
起動中のプロセスの PID ファイルは [trema]/tmp/pid にあります。
レスありがとうございます!
trema killall後に再起動しても状況変わらず・・・・でしたが、[trema]/tmp/pidにPIDファイルが残ったままになっていたので、それらを全部消して再起動したら、うまく行きました!!!!ありがとうございます。
プロセス残り、というより管理ファイル残り?なんでしょうか・・・・。どういった契機で発生するのかわからないのがたまにきずですが、ひとまずうまく動かなくなったらここを確認するようにします。
↓こんなかんじでうまくいきました。
#~/trema/trema/tmp/pid$ ls -al
合計 20
drwxrwxr-x 2 mamohacy mamohacy 4096 7月 2 10:39 .
drwxrwxr-x 5 mamohacy mamohacy 4096 7月 2 10:39 ..
-rw——- 1 mamohacy mamohacy 6 6月 10 19:25 switch.0x1.pid
-rw——- 1 mamohacy mamohacy 6 6月 10 19:25 switch.0x2.pid
-rw——- 1 mamohacy mamohacy 6 6月 10 19:25 switch_manager.pid
#~/trema/trema/tmp/pid$ rm *
#~/trema/trema/tmp/pid$ ls
#~/trema/trema/tmp/pid$ cd ~/trema/trema/src/examples/switch_monitor/
#~/trema/trema/src/examples/switch_monitor$ trema –verbose run ./switch-monitor2.rb -c ./switch-monitor2.conf
/home/mamohacy/trema/trema/objects/switch_manager/switch_manager –daemonize –port=6633 — port_status::SwitchMonitor packet_in::SwitchMonitor state_notify::SwitchMonitor vendor::SwitchMonitor
sudo /home/mamohacy/trema/trema/objects/openvswitch/bin/ovs-openflowd –detach –out-of-band –fail=closed –inactivity-probe=180 –rate-limit=40000 –burst-limit=20000 –pidfile=/home/mamohacy/trema/trema/tmp/pid/open_vswitch.0xabc1.pid –verbose=ANY:file:dbg –verbose=ANY:console:err –log-file=/home/mamohacy/trema/trema/tmp/log/openflowd.0xabc1.log –datapath-id=000000000000abc1 –unixctl=/home/mamohacy/trema/trema/tmp/sock/ovs-openflowd.0xabc1.ctl netdev@vsw_0xabc1 tcp:127.0.0.1:6633
sudo /home/mamohacy/trema/trema/objects/openvswitch/bin/ovs-openflowd –detach –out-of-band –fail=closed –inactivity-probe=180 –rate-limit=40000 –burst-limit=20000 –pidfile=/home/mamohacy/trema/trema/tmp/pid/open_vswitch.0xabc2.pid –verbose=ANY:file:dbg –verbose=ANY:console:err –log-file=/home/mamohacy/trema/trema/tmp/log/openflowd.0xabc2.log –datapath-id=000000000000abc2 –unixctl=/home/mamohacy/trema/trema/tmp/sock/ovs-openflowd.0xabc2.ctl netdev@vsw_0xabc2 tcp:127.0.0.1:6633
sudo /home/mamohacy/trema/trema/objects/openvswitch/bin/ovs-openflowd –detach –out-of-band –fail=closed –inactivity-probe=180 –rate-limit=40000 –burst-limit=20000 –pidfile=/home/mamohacy/trema/trema/tmp/pid/open_vswitch.0xabc3.pid –verbose=ANY:file:dbg –verbose=ANY:console:err –log-file=/home/mamohacy/trema/trema/tmp/log/openflowd.0xabc3.log –datapath-id=000000000000abc3 –unixctl=/home/mamohacy/trema/trema/tmp/sock/ovs-openflowd.0xabc3.ctl netdev@vsw_0xabc3 tcp:127.0.0.1:6633
Switch 0xabc3 is UP
Switch 0xabc2 is UP
Switch 0xabc1 is UP
All switches = 0xabc1,0xabc2,0xabc3
All switches = 0xabc1,0xabc2,0xabc3
All switches = 0xabc1,0xabc2,0xabc3
All switches = 0xabc1,0xabc2,0xabc3
All switches = 0xabc1,0xabc2,0xabc3
All switches = 0xabc1,0xabc2,0xabc3
^C
terminated
Shutting down switch_manager…
kill 7146 2>/dev/null
Shutting down 0xabc1…
sudo kill 7149 2>/dev/null
Shutting down 0xabc2…
sudo kill 7156 2>/dev/null
Shutting down 0xabc3…
sudo kill 7165 2>/dev/null
#~/trema/trema/src/examples/switch_monitor$