OpenFlow/OpenFlow Tutorial 1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
]
開始行:
[[labs.beatcraft.com]] ~
[[OpenFlow]]
#contents
* OpenFlow/OpenFlow Tutorial 1[#f81effc5]
OpenFlow の概要を把握するために、以下のチュートリアルのよ...
[[mininet>OpenFlow/mininet]]で作成した環境を使用し仮想ネ...
~
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial#St...
** 仮想ネットワーク環境作成 [#n0f81c92]
mininetを用いて下図のような仮想ネットワーク環境を作成しま...
#ref(mininet.jpg,,55%)~
~
以下のコマンドで仮想ネットワークを開始します。~
$ sudo mn --topo single,3 --mac --switch ovsk --controll...
*** Creating network
*** Adding controller
Unable to contact the remote controller at 127.0.0.1:6633
*** Adding hosts:
h1 h2 h3
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1) (h3, s1)
*** Configuring hosts
h1 h2 h3
*** Starting controller
*** Starting 1 switches
s1
*** Starting CLI:
mininet>
上記のコマンドにより、~
各自異なったIPアドレスを振られた3つの仮想ホスト(h1、h2...
3ポートを持つ open vSwitch ベースのソフトウェアスイッチ...
各仮想ホストが仮想イーサケーブルでスイッチに接続され、~
各ホストにそれぞれ別のIPアドレス、IPアドレスと同じMACアド...
OpenFlow スイッチはリンクローカル経由でリモートのコントロ...
mn コマンドで仮想ネットワークが作られたあと、mininet プロ...
~
どのようなノードがあるかは以下のように mininet の内部コマ...
mininet> nodes
available nodes are:
h2 h3 h1 s1 c0
各ホストとスイッチは以下のようになっています。~
h1
mininet> h1 ifconfig
h1-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.1 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
h2
mininet> h2 ifconfig
h2-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.2 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
h3
mininet> h3 ifconfig
h3-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.3 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1
mininet> s1 ifconfig
eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:192.168.0.146 ブロードキャスト:1...
inet6アドレス: 2001:268:321:8000:223:8bff:fe56...
inet6アドレス: fe80::223:8bff:fe56:f9ed/64 範...
inet6アドレス: 2001:268:321:8000:4c96:18c9:b0b...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:4906 エラー:0 損失:0 オーバラン:0 ...
TXパケット:670 エラー:0 損失:0 オーバラン:0 キ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:589463 (589.4 KB) TXバイト:78711 (78...
割り込み:16
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:876 エラー:0 損失:0 オーバラン:0 フ...
TXパケット:876 エラー:0 損失:0 オーバラン:0 キ...
衝突(Collisions):0 TXキュー長:0
RXバイト:58056 (58.0 KB) TXバイト:58056 (58.0...
s1-eth1 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1-eth2 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1-eth3 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
** dpctl使用例 [#fd50f034]
mininet が起動したら別の Shell で dpctl を実行します。~
dpctl は OpenFlow リファレンス実装に含まれているユーティ...
OpenFlow datapath をモニターしたり管理することができるコ...
~
show を実行すると OpenFlow スイッチに接続して状態を出力し...
$ dpctl show tcp:127.0.0.1:6634
features_reply (xid=0x77393f77): ver:0x1, dpid:1
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
1(s1-eth1): addr:d6:7e:38:49:0f:3d, config: 0, state:0
current: 10GB-FD COPPER
2(s1-eth2): addr:9e:62:1c:ea:62:0e, config: 0, state:0
current: 10GB-FD COPPER
3(s1-eth3): addr:da:ab:31:04:07:d6, config: 0, state:0
current: 10GB-FD COPPER
LOCAL(s1): addr:de:5f:fc:4b:49:4a, config: 0x1, state:0x1
get_config_reply (xid=0x85b71d0d): miss_send_len=0
dump-flows でフローテーブルの状態を表示します。
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x265ded5c): flags=none type=1(flow)
まだ OpenFlow コントローラーを動かしていないので、当然フ...
~
mininet コンソールで h1 から h2 へ ping を打ってみます。~
mininet> h1 ping -c3 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packe...
pipe 3
まだスイッチのフローテーブルが空で、コントローラーもスイ...
スイッチはトラフィックをどう処理すればいいかわからず ping...
~
そこで dpctl コマンドでフローを追加します。~
$ dpctl add-flow tcp:127.0.0.1:6634 in_port=1,actions=ou...
$ dpctl add-flow tcp:127.0.0.1:6634 in_port=2,actions=ou...
フローテーブルを確認します。~
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x2fbc71b7): flags=none type=1(flow)
cookie=0, duration_sec=14s, duration_nsec=964000000s, ...
cookie=0, duration_sec=8s, duration_nsec=934000000s, t...
再度 ping を打ってみます。~
mininet> h1 ping -c3 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=1.39 ms
64 bytes from 10.0.0.2: icmp_req=2 ttl=64 time=0.132 ms
64 bytes from 10.0.0.2: icmp_req=3 ttl=64 time=0.140 ms
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time ...
rtt min/avg/max/mdev = 0.132/0.557/1.399/0.595 ms
add-flow で port1 から port2 とその反対方向のパケット転送...
反対方向にも打ってみます。~
mininet> h2 ping -c3 h1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_req=1 ttl=64 time=0.711 ms
64 bytes from 10.0.0.1: icmp_req=2 ttl=64 time=0.128 ms
64 bytes from 10.0.0.1: icmp_req=3 ttl=64 time=0.135 ms
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time ...
rtt min/avg/max/mdev = 0.128/0.324/0.711/0.273 ms
ping の後にフローテーブルの状況を確認すると
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x35d81496): flags=none type=1(flow)
cookie=0, duration_sec=21s, duration_nsec=123000000s, ...
cookie=0, duration_sec=19s, duration_nsec=312000000s, ...
持続時間、通過パケット、通過バイト数、が増えているのがわ...
~
終了行:
[[labs.beatcraft.com]] ~
[[OpenFlow]]
#contents
* OpenFlow/OpenFlow Tutorial 1[#f81effc5]
OpenFlow の概要を把握するために、以下のチュートリアルのよ...
[[mininet>OpenFlow/mininet]]で作成した環境を使用し仮想ネ...
~
http://www.openflow.org/wk/index.php/OpenFlow_Tutorial#St...
** 仮想ネットワーク環境作成 [#n0f81c92]
mininetを用いて下図のような仮想ネットワーク環境を作成しま...
#ref(mininet.jpg,,55%)~
~
以下のコマンドで仮想ネットワークを開始します。~
$ sudo mn --topo single,3 --mac --switch ovsk --controll...
*** Creating network
*** Adding controller
Unable to contact the remote controller at 127.0.0.1:6633
*** Adding hosts:
h1 h2 h3
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1) (h3, s1)
*** Configuring hosts
h1 h2 h3
*** Starting controller
*** Starting 1 switches
s1
*** Starting CLI:
mininet>
上記のコマンドにより、~
各自異なったIPアドレスを振られた3つの仮想ホスト(h1、h2...
3ポートを持つ open vSwitch ベースのソフトウェアスイッチ...
各仮想ホストが仮想イーサケーブルでスイッチに接続され、~
各ホストにそれぞれ別のIPアドレス、IPアドレスと同じMACアド...
OpenFlow スイッチはリンクローカル経由でリモートのコントロ...
mn コマンドで仮想ネットワークが作られたあと、mininet プロ...
~
どのようなノードがあるかは以下のように mininet の内部コマ...
mininet> nodes
available nodes are:
h2 h3 h1 s1 c0
各ホストとスイッチは以下のようになっています。~
h1
mininet> h1 ifconfig
h1-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.1 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
h2
mininet> h2 ifconfig
h2-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.2 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
h3
mininet> h3 ifconfig
h3-eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:10.0.0.3 ブロードキャスト:10.255...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1
mininet> s1 ifconfig
eth0 Link encap:イーサネット ハードウェアアドレス ...
inetアドレス:192.168.0.146 ブロードキャスト:1...
inet6アドレス: 2001:268:321:8000:223:8bff:fe56...
inet6アドレス: fe80::223:8bff:fe56:f9ed/64 範...
inet6アドレス: 2001:268:321:8000:4c96:18c9:b0b...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:4906 エラー:0 損失:0 オーバラン:0 ...
TXパケット:670 エラー:0 損失:0 オーバラン:0 キ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:589463 (589.4 KB) TXバイト:78711 (78...
割り込み:16
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:876 エラー:0 損失:0 オーバラン:0 フ...
TXパケット:876 エラー:0 損失:0 オーバラン:0 キ...
衝突(Collisions):0 TXキュー長:0
RXバイト:58056 (58.0 KB) TXバイト:58056 (58.0...
s1-eth1 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1-eth2 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
s1-eth3 Link encap:イーサネット ハードウェアアドレス ...
UP BROADCAST RUNNING MULTICAST MTU:1500 メト...
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレ...
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャ...
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
** dpctl使用例 [#fd50f034]
mininet が起動したら別の Shell で dpctl を実行します。~
dpctl は OpenFlow リファレンス実装に含まれているユーティ...
OpenFlow datapath をモニターしたり管理することができるコ...
~
show を実行すると OpenFlow スイッチに接続して状態を出力し...
$ dpctl show tcp:127.0.0.1:6634
features_reply (xid=0x77393f77): ver:0x1, dpid:1
n_tables:255, n_buffers:256
features: capabilities:0xc7, actions:0xfff
1(s1-eth1): addr:d6:7e:38:49:0f:3d, config: 0, state:0
current: 10GB-FD COPPER
2(s1-eth2): addr:9e:62:1c:ea:62:0e, config: 0, state:0
current: 10GB-FD COPPER
3(s1-eth3): addr:da:ab:31:04:07:d6, config: 0, state:0
current: 10GB-FD COPPER
LOCAL(s1): addr:de:5f:fc:4b:49:4a, config: 0x1, state:0x1
get_config_reply (xid=0x85b71d0d): miss_send_len=0
dump-flows でフローテーブルの状態を表示します。
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x265ded5c): flags=none type=1(flow)
まだ OpenFlow コントローラーを動かしていないので、当然フ...
~
mininet コンソールで h1 から h2 へ ping を打ってみます。~
mininet> h1 ping -c3 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packe...
pipe 3
まだスイッチのフローテーブルが空で、コントローラーもスイ...
スイッチはトラフィックをどう処理すればいいかわからず ping...
~
そこで dpctl コマンドでフローを追加します。~
$ dpctl add-flow tcp:127.0.0.1:6634 in_port=1,actions=ou...
$ dpctl add-flow tcp:127.0.0.1:6634 in_port=2,actions=ou...
フローテーブルを確認します。~
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x2fbc71b7): flags=none type=1(flow)
cookie=0, duration_sec=14s, duration_nsec=964000000s, ...
cookie=0, duration_sec=8s, duration_nsec=934000000s, t...
再度 ping を打ってみます。~
mininet> h1 ping -c3 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_req=1 ttl=64 time=1.39 ms
64 bytes from 10.0.0.2: icmp_req=2 ttl=64 time=0.132 ms
64 bytes from 10.0.0.2: icmp_req=3 ttl=64 time=0.140 ms
--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time ...
rtt min/avg/max/mdev = 0.132/0.557/1.399/0.595 ms
add-flow で port1 から port2 とその反対方向のパケット転送...
反対方向にも打ってみます。~
mininet> h2 ping -c3 h1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_req=1 ttl=64 time=0.711 ms
64 bytes from 10.0.0.1: icmp_req=2 ttl=64 time=0.128 ms
64 bytes from 10.0.0.1: icmp_req=3 ttl=64 time=0.135 ms
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time ...
rtt min/avg/max/mdev = 0.128/0.324/0.711/0.273 ms
ping の後にフローテーブルの状況を確認すると
$ dpctl dump-flows tcp:127.0.0.1:6634
stats_reply (xid=0x35d81496): flags=none type=1(flow)
cookie=0, duration_sec=21s, duration_nsec=123000000s, ...
cookie=0, duration_sec=19s, duration_nsec=312000000s, ...
持続時間、通過パケット、通過バイト数、が増えているのがわ...
~
ページ名:
BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。