这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
163 changes: 0 additions & 163 deletions appendix_trema_command_reference.adoc

This file was deleted.

13 changes: 11 additions & 2 deletions appendix_trema_reference.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
[appendix]
= Tremaリファレンス
include::appendix_trema_command_reference.adoc[]
include::appendix_trema_api_reference.adoc[]
== trema コマンド

include::trema_run.adoc[]
include::trema_dump_flows.adoc[]
include::trema_killall.adoc[]
include::trema_netns.adoc[]


== ハンドラ

include::start_handler.adoc[]
2 changes: 0 additions & 2 deletions appendix_trema_api_reference.adoc → start_handler.adoc
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
== ハンドラ

=== start(args)

コントローラの起動イベントを捕捉するハンドラ。引数 `args` は trema run で `--` の後に渡した引数の配列。
Expand Down
39 changes: 39 additions & 0 deletions trema_dump_flows.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
=== trema dump_flows

指定したスイッチのすべてのフローエントリを表示する。

----
$ ./bin/trema dump_flows [コマンドオプション] スイッチ名
----

==== 使い方

仮想ネットワーク設定で `of_switch` という名前のスイッチを定義し、コントローラを実行したとする。

[source,ruby,subs="verbatim,attributes"]
.trema.conf
----
vswitch('of_switch') { datapath_id 0x1 }
----

.コントローラの実行
----
$ ./bin/trema run my_controller.rb -c trema.conf
----

このときコントローラがスイッチ `of_switch` に書き込んだフローエントリを表示するには、次のように `trema dump_flows of_switch` を実行する。

----
$ ./bin/trema dump_flows of_switch
cookie=0x0, duration=10.727s, table=0, n_packets=0, n_bytes=0, priority=0 actions=drop
----

出力フォーマットは Open vSwitch の `ovs-ofctl dump-flows` コマンドと同じ。詳しくは `man ovs-ofctl` の Table Entry Output を参照。

==== コマンドオプション一覧

|===
| コマンドオプション | 説明 | デフォルト値

| `-S`, `--socket_dir` | コントローラプロセスのソケットファイル (`コントローラ名.ctl`) があるディレクトリを指定する。これは `trema run` コマンドの `-S`, `--socket_dir` オプションで指定した値を指定すればよい | `/tmp`
|===
31 changes: 31 additions & 0 deletions trema_killall.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
=== trema killall

コントローラと仮想ネットワークのプロセスを kill する。

----
$ ./bin/trema killall [コマンドオプション] コントローラ名
----

==== 使い方

`trema run` で起動したコントローラと仮想ネットワークプロセスを kill するには、`trema killall` の引数にコントローラ名 (=コントローラのクラス名) を次のように渡す。

----
$ ./bin/trema killall HelloTrema
----

現在起動中のすべてのコントローラプロセスおよび仮想ネットワーク関連プロセスを kill するには、`--all` オプションを指定する。

----
$ ./bin/trema killall --all
----

==== コマンドオプション一覧

|===
| コマンドオプション | 説明 | デフォルト値

| `-S`, `--socket_dir` | コントローラプロセスや vhost プロセスのソケットファイル (`*.ctl`) があるディレクトリを指定する。これは `trema run` コマンドの `-S`, `--socket_dir` オプションで指定した値を指定すればよい | `/tmp`
| `--all` | Trema 関連のすべてのプロセスを kill する |
|===

70 changes: 70 additions & 0 deletions trema_netns.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
=== trema netns

仮想ネットワークに作ったネットワークネームスペース内でシェルまたはコマンドを実行する。

----
$ ./bin/trema netns ネットワークネームスペース名 [コマンド]
----

==== 使い方

仮想ネットワーク設定で `host1`, `host2` という名前の 2 つのネットワークネームスペースをそれぞれ次のように定義し、コントローラを実行したとする。

[source,ruby,subs="verbatim,attributes"]
.trema.conf
----
vswitch { dpid 0x1 }

netns('host1') {
ip '192.168.1.2'
netmask '255.255.255.0'
route net: '0.0.0.0', gateway: '192.168.1.1'
}

netns('host2') {
ip '192.168.1.3'
netmask '255.255.255.0'
route net: '0.0.0.0', gateway: '192.168.1.1'
}

link '0x1', 'host1'
link '0x1', 'host2'
----

.コントローラの実行
----
$ ./bin/trema run my_controller.rb -c trema.conf
----

このときネットワークネームスペース `host1` 内でシェルを起動するには、`trema netns` の引数にネットワークネームスペース名を次のように渡す。実行したシェルは `exit` または `Ctrl + d` で停止できる。

----
$ ./bin/trema netns host1
[sudo] password for yasuhito: (パスワードを入力)
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
23642: host1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 6e:59:cb:51:86:db brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global host1
valid_lft forever preferred_lft forever
inet6 fe80::6c59:cbff:fe51:86db/64 scope link
valid_lft forever preferred_lft forever
$ exit
----

シェルに入らずに直接コマンドを実行したい場合には、次のようにネットワークネームスペース名の後に実行したいコマンドを指定する。

----
$ ./bin/trema netns host1 "ping -c1 192.168.1.3"
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.448 ms

--- 192.168.1.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.448/0.448/0.448/0.000 ms
----
48 changes: 48 additions & 0 deletions trema_run.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
=== trema run

コントローラを実行する。

----
$ ./bin/trema run [コマンドオプション] コントローラファイル
----

==== 使い方

コントローラを実行するには、`trema run` の引数にコントローラのファイル名を次のように渡す。実行したコントローラは `Ctrl + c` で停止できる。

----
$ ./bin/trema run hello_trema.rb
----

デフォルトでは、コントローラは OpenFlow 1.0 モードで起動する。OpenFlow 1.3 を使いたい場合には、`--openflow13` オプションを指定する。

----
$ ./bin/trema run hello_trema.rb --openflow13
----

仮想ネットワーク上でコントローラを動かす場合には、`trema run` の `-c` (`--conf`) オプションに仮想ネットワーク定義ファイルを指定する。

----
$ ./bin/trema run hello_trema.rb -c trema.conf
----

コントローラをデーモンプロセスとして起動する場合には、`-d` (`--daemonize`) オプションを指定する。

----
$ ./bin/trema run hello_trema.rb -c trema.conf -d
----

==== コマンドオプション一覧

|===
| コマンドオプション | 説明 | デフォルト値

| `-c`, `--conf` | 仮想ネットワークの定義ファイルを指定する |
| `-d`, `--daemonize` | コントローラをデーモンプロセスとして起動する |
| `--openflow13` | コントローラを OpenFlow 1.3 モードで起動する |
| `-L`, `--log_dir` | コントローラプロセスのログファイル (`コントローラ名.log`) を生成するディレクトリを指定する。 | `/tmp`
| `-P`, `--pid_dir` | コントローラプロセスの PID ファイル (`コントローラ名.pid`) を生成するディレクトリを指定する。 | `/tmp`
| `-S`, `--socket_dir` | コントローラのソケットファイル (`コントローラ名.ctl`) を生成するディレクトリを指定する。| `/tmp`
| `-l`, `--logging_level` | コントローラプロセスのロギングレベルを指定する。 | `info`
| `-p`, `--port` | コントローラプロセスがスイッチからの接続を待ち受ける TCP ポート番号を指定する | 6653
|===