インスタンスの起動と疎通確認
インスタンスの起動
先程作成したtest-netに繋がるVMを2つ起動してみます。なお、VMのイメージとしてubuntu(Trasty TahrのCloud Image)が登録され、testという名前のKeyPair、およびdefaultセキュリティグループにicmp、tcp/22(ssh)の通過ルールの追加が完了している前提とします。
$ nova boot --flavor m1.small --security-groups default --image ubuntu --nic net-id=d4189c26-ad14-42c5-b667-786ae3243318 --key-name test instance1 (省略) | id | f7fdfa97-0b94-4d06-8cd4-1b46db3376cf | (省略) | name | instance1 | (省略) $ nova boot --flavor m1.small --security-groups default --image ubuntu --nic net-id=d4189c26-ad14-42c5-b667-786ae3243318 --key-name test instance2 (省略) | id | a6b3ea37-3744-41df-b56c-001a693dc480 | (省略) | name | instance2 | (省略)
外部からアクセスできるようにするために、まずはinstance1にFloating IPを付与します。
$ neutron floatingip-create ext-net
(省略)
| floating_ip_address | 203.0.113.102 |
| floating_network_id | 500ecc53-db89-4cfb-a063-f4cdd5396bf9 |
| id | bfd6b9a1-9387-40bb-9a04-c473de06c955 |
(省略)
$ neutron port-list
(省略)
| 4d7b91cf-ef13-4bdb-9caf-2d0c497c9711 | | fa:16:3e:12:68:38 | {"subnet_id": "e340bb3f-a122-4f2f-8628-6229a4ea116a", "ip_address": "10.0.0.101"} |
(省略)
$ neutron floatingip-associate bfd6b9a1-9387-40bb-9a04-c473de06c955 4d7b91cf-ef13-4bdb-9caf-2d0c497c9711
Associated floating IP bfd6b9a1-9387-40bb-9a04-c473de06c955
$ nova list
(省略)
| f7fdfa97-0b94-4d06-8cd4-1b46db3376cf | instance1 | ACTIVE | - | Running | test-net=10.0.0.101, 203.0.113.102 |
| a6b3ea37-3744-41df-b56c-001a693dc480 | instance2 | ACTIVE | - | Running | test-net=10.0.0.102 |
(省略)
疎通確認
最後に、起動したVMの疎通確認を行ってみます。まずは、instance1にgatewayホストのexternal namespace(今回の外部ネットワーク相当)からsshでログインできるか確かめてみます。
$ ip netns exec external ssh -i ./test.pem ubuntu@203.0.113.102 (省略) ubuntu@instance1:~$
正常にログインできることが確認できました。次に、同一の内部ネットワークに所属するinstance2にpingができるかを確かめます。
ubuntu@instance1:~$ ping -c 3 10.0.0.102 (省略) --- 10.0.0.102 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 5.487/7.646/11.344/2.627 ms
最後に、内部ネットワークから外部ネットワークにpingができるかを確かめてみましょう。
ubuntu@instance1:~$ ping -c 3 203.0.113.1 (省略) --- 203.0.113.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 9.731/15.535/23.346/5.736 ms
これで、すべての疎通が確認できました。
おわりに
今回の記事では、SDNの歴史に始まり、MidoNetとはどういうものか、どこを守備範囲とするか、OpenStackとはどのような関係なのかを説明しました。そして、実際に1からOpenStackのMidoNetのインストールを行い、基本的な仮想ネットワークの操作を試してみました。今回はmidonet-cliで仮想ネットワーク操作をしましたが、もちろん、SDNの本質通り、プログラムからも直接APIを実行することができます。
インストールは比較的容易で、ノードに対し複雑な操作をすることなく、簡単にネットワークを操作できたのではないかと思います。MidoNetとOpenStackを合わせて試す場合、MidoStackを利用して、環境一式を構築することもできるようなので、こちらを利用してみても良いでしょう。
