決める仕事と運ぶ仕事を分ける
ソフトウェア定義ネットワーク(SDN)は、ネットワーク機器の「決める仕事」と「運ぶ仕事」を分け、決める仕事をプログラムに任せる考え方です。
規則を1か所で書けば、何百台のスイッチにも同じ規則を配れます。大学のキャンパスでも、手作業の設定ミスを減らせます。
このレッスンのゴール
メモ
コントローラが決めることと、スイッチがすることを分けて説明できる。
重要な言葉
| ことば | いみ | れい |
|---|---|---|
| コントロールプレーン | 転送の規則を決める部分 | |
| データプレーン | パケットを実際に運ぶ部分 | |
| スイッチ | 受け取った枠を、決められたポートから出す機器 | |
| コントローラ | スイッチの規則を書くプログラム | |
| OpenFlow | スイッチとコントローラが話す約束事 | |
| フェイルモード | コントローラと切れたときのスイッチの振る舞い | secure |
学生が入力するセルは、このプレビューでは空白です。
1台のスイッチには2つの仕事がある
普通のスイッチは、2つの仕事を1台の中でこなします。1つ目は、どの宛先をどのポートへ出すかを決めることです。2つ目は、枠が届くたびに、その決まりどおりに運ぶことです。
前者をコントロールプレーン、後者をデータプレーンと呼びます。運ぶ仕事は1秒に何百万回も起きるので、速さが大事です。決める仕事は、たまにしか起きません。
仕事をどちらのプレーンが受け持つか
| 仕事 | プレーン | 起きる頻度 |
|---|---|---|
| 宛先と出力ポートの対応を作る | コントロール | 機器が増えたとき |
| ネットワーク全体の地図を持つ | コントロール | 配線が変わったとき |
| 枠を受け取り、規則表を引く | データ | 枠が届くたび |
| 決まったポートへ枠を出す | データ | 枠が届くたび |
| 規則に合わない枠を捨てる | データ | 枠が届くたび |
学生が入力するセルは、このプレビューでは空白です。
SDN は決める仕事をコントローラに移す
SDN では、決める仕事をスイッチの外のコントローラに移します。スイッチには、規則を並べた表だけが残り、枠を表のとおりに運びます。
コントローラとスイッチは、OpenFlow という約束事で話します。コントローラが「この条件の枠は、このポートへ」と伝え、スイッチが表に書き込みます。
なぜ分けるのか
分ける理由は3つあります。コントローラはネットワーク全体を見て決められます。規則を1か所で変えれば、すべてのスイッチに行き渡ります。そして、決める仕事を普通のサーバで動かせます。
たとえばゲスト用 Wi-Fi を経理のパソコンから切り離す規則も、コントローラに1回書けば足ります。
ラボのスイッチを見てみる
ラボの VM には、Open vSwitch という本物のソフトウェアスイッチがあります。名前は br0 で、ポートが3つです。
まず、ポートの一覧を見ます。続いて、運ぶ仕事をするプログラムと、設定を持つプログラムを数えます。最後に、コントローラと切れたときの振る舞いを聞きます。
スイッチのポートを並べる
sudo ovs-vsctl list-ports br0ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
運ぶプログラムの数
pgrep -c ovs-vswitchdここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
設定を持つプログラムの数
pgrep -c ovsdb-serverここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
フェイルモードを聞く
sudo ovs-vsctl get-fail-mode br0ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
フェイルモードはコントローラが消えたときの決まり
ポートの一覧は、s-h1、s-h2、s-h3 の3行です。ovs-vswitchd が枠を運び、ovsdb-server が設定を覚えます。どちらも1つずつ動いています。
フェイルモードが secure なら、スイッチは表にある規則だけで動きます。表が空なら、何も運びません。
よくある間違い
注意
SDN では、コントローラがすべてのパケットを運ぶと思いがちです。それでは遅すぎます。コントローラは規則を書くだけで、運ぶのはスイッチです。規則のない枠だけが、コントローラに相談されます。
さらに挑戦: 自分の学校の仕事を分ける
自分の学校のネットワークで、スイッチがする仕事を5つ書き出します。そして、それぞれが「枠が届くたび」の仕事か、「たまにしか起きない」仕事かを考えます。
前者がデータプレーン、後者がコントロールプレーンです。課題の JOBS に、その5つを足して試しましょう。