クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Mininetで仮想ネットワークを作る

このレッスンのあとで: 小さな試験用ネットワークを作り、pingall で通信を調べられる。

50分のレッスンコマンド5件SDN のラボ:Open vSwitch、Mininet、OpenFlow コントローラーを1台の VM で

パソコン1台でネットワークを作る

Mininet は、ホスト、スイッチ、リンクをパソコン1台の中に作る、ネットワークの試験用ツールです。本物のケーブルを買わなくても、つなぎ方を何度でも作り直せます。

このレッスンでは、小さなネットワークを作り、pingall ですべての組に通信できるかを調べます。

このレッスンのゴール

メモ

小さな試験用ネットワークを作り、pingall で通信を調べられる。

重要な言葉

ことばいみれい
ホスト試験用の、仮想のコンピュータh1
トポロジー機器のつなぎ方
リンク2つの機器をつなぐ、仮想のケーブル
Mininet仮想のネットワークを1台の中に作るツール
pingallすべてのホストの組に ping を送る試験

学生が入力するセルは、このプレビューでは空白です。

Mininet はホストを名前空間で作る

Mininet のホストは、本物のコンピュータではありません。Linux の1つの OS の中に作る、独立したネットワーク環境です。名前空間と呼びます。

スイッチは Open vSwitch で、コントローラも同じ中で動きます。リンクは、仮想のケーブルです。形は --topo で選びます。

形の指定とホスト、スイッチの数

指定ホストスイッチ形
single,2211台のスイッチに2台
single,4411台のスイッチに4台
linear,333スイッチが一列で、各スイッチに1台
tree,depth=2,fanout=243根のスイッチの下に2台、その下に各2台

学生が入力するセルは、このプレビューでは空白です。

Mininet はラボの br0 を消す

Mininet は、始まるときと終わるときに、Open vSwitch のブリッジをすべて消します。ラボの br0 も消えます。

消えた br0 は、sudo sdnlab flows で作り直せます。このレッスンの Run は、先に Mininet だけをまとめて試し、最後に作り直すのが安全です。

2台のホストで pingall

コマンド
sudo mn --mac --test pingall

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

Mininet の出力は作った順に読む

出力には、まず Adding hosts と Adding switches が出ます。続いて、ホストとスイッチの間のリンクの一覧が出ます。次に Ping の行が、組ごとに並びます。

最後の Results の行が答えです。0% dropped (2/2 received) は、2回送って2回とも届いたという意味です。

pingall は全員から全員へ送る

ホストが n 台なら、各ホストが他の n - 1 台に送ります。だから ping の数は、n 掛ける n - 1 です。自分自身には送りません。

ホストが4台なら 4 掛ける 3 で12です。台数が増えると、組は急に増えます。

例: ホストの数と ping の数

ホストの数1台が送る相手ping の数
212
326
4312
5420

学生が入力するセルは、このプレビューでは空白です。

4台を1台のスイッチに

コマンド
sudo mn --mac --topo single,4 --test pingall 2>&1 | grep Results

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

スイッチを3台、一列に

コマンド
sudo mn --mac --topo linear,3 --test pingall 2>&1 | grep Results

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

木の形にする

コマンド
sudo mn --mac --topo tree,depth=2,fanout=2 --test pingall 2>&1 | grep Results

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

全部届くのは、コントローラが規則を書くから

規則のないスイッチは、何も運びません。それなのに pingall が全部届くのは、Mininet のコントローラが、必要な規則を書くからです。

次の例は、2台のホストの通信のあとに、スイッチの規則表を見たものです。数字や時間は、実行のたびに変わります。

例: コントローラが書いた規則

コード: bash
OFPST_FLOW reply (OF1.3) (xid=0x2):
 priority=1,arp,in_port=2,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01 actions=output:1
 priority=1,icmp,in_port=1,dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02 actions=output:2
 priority=1,icmp,in_port=2,dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01 actions=output:1
 priority=0 actions=CONTROLLER:128

よくある間違い

注意

pingall が全部届いたら、ネットワークの規則は正しい、と思いがちです。実際は、試験用コントローラが「何でも通す」規則を書いているだけかもしれません。届いたかどうかと、意図した規則かどうかは別の確認です。

残ったものを片づける

コマンド
sudo mn -c

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

このラボとソースについて: SDN のラボ:Open vSwitch、Mininet、OpenFlow コントローラーを1台の VM で

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。