2014年2月27日木曜日

SDNの今後の展望!?

興味深い記事がありました。

SDNに関するぶしつけな質問にシスコが本音で答えてくれた
http://ascii.jp/elem/000/000/864/864091/

まだSDNではカバーできない部分がいくらでもあります。
従来のNW技術者も必要ですね。

うまく組み合わせて使うことが重要になるのでしょう。

2014年2月26日水曜日

気になるSDN関連ニュース 東京駅にSDN導入

ソチオリンピックが終わりました。
世界のトップ選手の技術は目を見張るものがあります。
ボブスレー。自分が一生やる事はないかもしれないのに、放送しているとうっかり見てしまう。

閑話休題。
東京駅の駅構内ネットワークにNECのSDN技術が活用されるようです。

今までにも病院やTV局、DCなど、いくつものSDN導入事例がありましたが、今回は東京駅です。
NECはDC以外への展開にも積極的な印象です。

◆報道資料
http://jpn.nec.com/press/201402/20140224_01.html

◆関連トピック
http://ascii.jp/elem/000/000/869/869703/
http://cloud.watch.impress.co.jp/docs/news/20140224_636627.html
http://itpro.nikkeibp.co.jp/article/NEWS/20140224/538604/

2014年2月23日日曜日

Trema Day #5に行ってきました

2月22日(土)に開催されたTrema Day #5に行ってきました。

到着が少し遅れてしまい、初めの方のお話を聞きそびれてしまいました。

Trema Dayって何をやっているのかと言うと(個人的感想)。
 ・Tremaを使ってこんな事やりました
 ・試しにこんなプログラム作っちゃいました
 ・こういうツール使うと便利ですよー

みたいな感じで、スライドを使って発表します。

自分にとっては難しい内容だったりして、結構話についていけてなかったりしています(;^_^A
他の参加者の方が今回の内容をまとめてくださったようなので、リンクをつけておきます。

http://gvtkne.blogspot.jp/2014/02/trema-day-5.html

だいたい、3か月毎に開かれているので、次は5月頃ですかね?

2014年2月21日金曜日

OpenFlow Mininetのバージョンとトポロジー

2月19日に載せたMininetのトポロジーのサンプルですが、最近のバージョンだとエラーになってしまうようですね。

前は動いたのになぜ!?と思ったら、動いたのはUbuntu11.10上(古い!)のMininetでした・・・。
このMininetのバージョンは、mininetディレクトリ内のLICENSEというファイルをみると1.0.0のようです。

最近のMininetでは、以下でバージョンを表示できます。

$ sudo mn --version
2.1.0

2月20日に載せたMininetのトポロジーはバージョン2.1.0で動きました。
ちなみにこのMininetはUbutu13.04上で動いています。

残念ながら新しいバージョンのMininetでは、19日に載せたトポロジーをそのまま動かすことはできませんでしたが、トポロジーの書き方の参考にはなりました。
また、Mininetのトポロジーの書き方を調べてみると、結構いろいろな書き方ができるようです。

また何か良いものを見つけたら載せたいと思います。

OpenFlow Mininetのトポロジーをカスタマイズしてみる

今回はMininetのトポロジーを作ってみます。

Mininetのトポロジーの書き方は、以下も参考にしました。

http://osrg.github.io/ryu-book/ja/html/spanning_tree.html?highlight=mininet


スイッチ1つ、ホスト2つのトポロジーを作ってみます。
ホスト1のIPアドレスは「192.168.100.1」を割り当てます。
ホスト2のIPアドレスは「192.168.100.2」を割り当てます。

スクリプトの名前は「topo_test.py」とします。

#!/usr/bin/env python

from mininet.net import Mininet
from mininet.cli import CLI
from mininet.link import Link

if '__main__' == __name__:

    net = Mininet()

    c1 = net.addController('c1')
    s1 = net.addSwitch('s1')
    h1 = net.addHost('h1', ip='192.168.100.1/24')
    h2 = net.addHost('h2', ip='192.168.100.2/24')

    Link( h1, s1)
    Link( h2, s1)

    net.start()
    CLI(net)
    net.stop()

スクリプトを書いたら、以下のコマンドで実行します。

sudo python ./topo_test.py

実行すると「sudo mn」でMininetを起動したときのように、仮想ネットワークのCLI(コマンドラインインターフェイス)に切り替わります。
いくつかコマンドを打って、仮想環境の状態を確認してみます。

net
dump
pingall

mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
c1
mininet> dump
<host h1-eth0:192.168.100.1="" pid="1649">
<host h2-eth0:192.168.100.2="" pid="1650">
<ovsswitch lo:127.0.0.1="" pid="1642" s1-eth1:none="" s1-eth2:none="">
<controller 127.0.0.1:6633="" pid="1634">
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)

終了するときは「exit」と打ちます。

簡単ではありますが、仮想環境ができました。
以上になります。

2014年2月19日水曜日

OpenFlow Mininetのトポロジーって何だ!?

今回はMininetのトポロジーについてです。

ここで言うトポロジーとは、ネットワークの接続形態の事を指しています。
Mininetでは、スクリプトを書いてトポロジー作れば、任意の仮想ネットワークを作ることができます。

ただ、トポロジーの書き方をネットで調べていましたが、どう書くのか良くわかりませんでした。
pythonで書けば良いという事は分かったのですが。

ところが先日、分かりやすいスクリプトが見つかりました。
そのスクリプトがこれです。

from mininet.net import Mininet
from mininet.node import Controller, OVSKernelSwitch, RemoteController
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.util import createLink

    # Create an empty network.
    net = Mininet(controller=RemoteController, switch=OVSKernelSwitch)
    net.addController('c0')

    # Creating nodes in the network.
    h0 = net.addHost('h0')
    s0 = net.addSwitch('s0')
    h1 = net.addHost('h1')
    s1 = net.addSwitch('s1')

    # Creating links between nodes in network.
    h0int, s0int = createLink(h0, s0)
    h1int, s1int = createLink(h1, s1)
    s0pint, s1pint = createLink(s0, s1)

    # Configuration of IP addresses in interfaces
    s0.setIP(s0int, '192.168.1.1', 26)
    h0.setIP(h0int, '192.168.1.2', 26)
    s1.setIP(s1int, '192.168.1.65', 26)
    h1.setIP(h1int, '192.168.1.66', 26)
    s0.setIP(s0pint, '192.168.1.129', 26)
    s1.setIP(s1pint, '192.168.1.130', 26)

    # start stuff and present CLI
    net.start()
    CLI(net)
    net.stop()

参考:http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/2012-September/000231.html

このスクリプトでスイッチ2台、ホスト2台の仮想環境が作れます。
また、それぞれのインターフェイスに任意のIPアドレスを振っています。

このスクリプトを参考にして、トポロジーをカスタマイズしてみようと思います。

2014年2月18日火曜日

Trema Day #5が開催されます

こんにちは、鯵王です。

2月22日(土)にTrema Day #5が開催されます。
SDNやOpenFlow開発者のためのイベントです。

詳しくは以下のページを参照してください。

http://atnd.org/event/E0024377

Tremaが中心になりそうですが、Trema以外の話題もあったりします。
興味がある人は参加してみてはどうでしょうか。

SDN Conference 2014 行ってきました

今日はSDNカンファレンスに行ってきました。

テレビ朝日のSDN導入事例や、IBM、マクニカ、NEC、ブロケードなどのベンダーの製品情報などが聞けました。

初めはテレビ朝日の導入事例で、EX THEATERやEX TOWERにSDNを使っているというお話。
こちらはNECのSDN製品を使用したようです。

つないだ機器のMACアドレスで認証し、適切なネットワークに接続する技術が使われいるみたいです。
その他にもネットワークのレイヤー管理など。

他のベンダーは、大体は製品紹介が主でした。
前から言われている事だと思いますが、サーバの仮想化が進んだものの、ネットワークが足かせになっている。
それをどうにかする製品を用意した、といった感じです。
他には大体どの製品も以下の共通点があるようです。

・主なターゲットはデータセンターやクラウド
・GUIでネットワークの設定ができること
・OpenStackなどのオーケストレーターとの連携ができる

NECはデータセンターと、テレビ朝日のようなオフィスLANへの導入が半々ぐらいと聞きました。
いずれにしても、サーバやスイッチの数が数十、数百といった規模でないと、メリットが受けられない可能性があるようです。

あと、今の課題としてはエンジニア不足や監視や管理の方法が不十分、トラブルの原因特定方法、この技術が続くかが不確定といった事があるそうです。

2014年2月17日月曜日

OpenFlow Mininetで別サーバのコントローラに接続する

今回もMininetとTremaを使います。

今回はMininetを動かしているゲストOSとは別のゲストOSで起動しているTrema(コントローラ)に接続してみます。
前に掲載した「Openflow MininetのコントローラをTremaにしてみる その2」と「VirtualBoxのゲストOS同士で通信する」の組み合わせです。

ゲストOS #1
・Trema(コントローラ)を動かしているゲストOS
・IPアドレスは192.168.56.10

ゲストOS #2
・Mininetを動かしているゲストOS
・IPアドレスは192.168.56.20

まずはゲストOS #1でTremaを起動します。
コントローラのプログラムは、例によってhello-tremaです。

trema run hello-trema.rb

次にゲストOS #2でMininetを起動します。
以前と違うのは、コントローラが起動しているサーバのIPを指定することです。

sudo mn --controller remote,ip=192.168.56.10,port=6653

Mininetを起動するとゲストOS #1のTremaを起動した画面に以下のようなメッセージが表示されました。

$ trema run hello-trema.rb
Hello 0x1!

今後は、この環境を使っていろいろ試してみたいと思います。

2014年2月15日土曜日

VirtualBoxのゲストOS同士で通信する

今回はVirtualBoxの中のゲストOS同士で通信をします。

VirtualBoxのバージョンは4.3.6です。

1.VirtualBoxの設定

ホストOS側の仮想環境とのインターフェイスの設定をします。
メニューから、ファイル>環境設定で設定画面を開きます。

ネットワークをクリックし、ホストオンリーネットワークのタブを開きます。
「VirtualBox Host-Only Ethernet Adapter」をダブルクリック(もしくは選択して画面右側にあるドライバーのアイコンをクリック)します。


IPV4アドレスを入力します。
今回はデフォルト値(192.168.56.1)を使います。


次にゲストOSのネットワーク設定を行います。

メイン画面で、変更するゲストOSをクリックし、上部の「設定」アイコンをクリックします。

設定画面左側のネットワークをクリックします。
続いて画面右側のアダプタータブで設定を変更します。


【アダプター1のタブ】
 ・「ネットワークアダプターを有効化」にチェック入れます。
 ・割り当ては「NAT」を選択します

【アダプター2のタブ】
 ・「ネットワークアダプターを有効化」にチェック入れます
 ・割り当ては「ホストオンリーアダプター」を選択します
 ・名前は「VirtualBox Host-Only Ethernet Adapter」を選択します

アダプター1はインターネットなどができるように、NATにしておきます。
ホストOSからゲストOSにsshでログインできるように、アダプター2はホストオンリーアダプターにします。
ホストオンリーアダプターでもゲストOS同士の通信ができるようです。

今回使用するゲストOS(ゲストOS #1、ゲストOS #2とします)に同じ設定をします。


2.ゲストOSのネットワーク設定

ゲストOSを起動し、固定IPアドレスを変更します。
今回は以下のように設定します。

【ゲストOS #1】
 eth0 IPアドレス:DHCP
 eth1 IPアドレス:192.168.56.10

【ゲストOS #2】
 eth0 IPアドレス:DHCP
 eth1 IPアドレス:192.168.56.20

変更をする前に、ifconfigコマンドで変更前の情報を表示しておくと良いと思います。

vi等で設定ファイルを書き換えます。ゲストOS #1の場合は以下のようにします。

設定ファイル:/etc/network/interfaces

auto eth0
iface eth0 dhcp

auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0

↓この設定は残しておきます。

auto lo
iface lo inet loopback

設定を変更したら、有効にするためインターフェースの再起動をします。
再起動しても変わらなかったり、画面がちゃんと表示されなくなるようだったらOSを再起動した方がよさそうです。

sudo service networking restart

もしくは

sudo /etc/init.d/networking restart

ゲストOS #2も同様に(IPはゲストOS #2にIPで)設定します。


3.通信してみる

ゲストOS #1からpingを3回送ります。

ping -c3 192.168.56.10

$ ping -c3 192.168.56.20
PING 192.168.56.20 (192.168.56.20) 56(84) bytes of data.
64 bytes from 192.168.56.20: icmp_seq=1 ttl=64 time=0.395 ms
64 bytes from 192.168.56.20: icmp_seq=2 ttl=64 time=0.764 ms
64 bytes from 192.168.56.20: icmp_seq=3 ttl=64 time=0.775 ms

--- 192.168.56.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.395/0.644/0.775/0.179 ms

ゲストOS #2からpingを送ります。

ping -c3 192.168.56.20

$ ping -c3 192.168.56.10
PING 192.168.56.10 (192.168.56.10) 56(84) bytes of data.
64 bytes from 192.168.56.10: icmp_req=1 ttl=64 time=0.335 ms
64 bytes from 192.168.56.10: icmp_req=2 ttl=64 time=1.05 ms
64 bytes from 192.168.56.10: icmp_req=3 ttl=64 time=0.844 ms

--- 192.168.56.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.335/0.746/1.059/0.303 ms

ゲストOS同士で通信出来ました。
後はホストOSからゲストOSにログインしてみます。

teratermなどでゲストOSのeth1に設定したIPアドレスで接続して、ログインできればOKです。

今回は以上になります。

2014年2月12日水曜日

Openflow MininetのコントローラをTremaにしてみる その2

以前「Openflow MininetのコントローラをTremaにしてみる」の中で一部うまくいかなかった所が解決しました。

内容は、Mininetで使用するコントローラをTremaにしてみましたが、vmwareに作ったUbuntu13.10、Trema0.4.6では接続できなかった件です。

原因はTremaの待ち受けポートが6633から6653に変わっていたためです。
以下のリンクからその事がわかりました。

https://github.com/trema/trema/commit/0699ffd3a73f56e810096a9ce3c5ea9781596783
http://trema.hatenablog.jp/entry/20120312/1331548450

うまく動いた環境のTremaは、バージョンが少し古く、まだポート番号が6633だったのでしょう。

以下ではMininet側の接続ポートを6653にして試してみます。
前回同様、端末を2つ用意し、まずはTremaを起動します。

trema run hello-trema.rb

続いてMininetを起動します。
今回は「port=6653」を追加します。

sudo mn --controller remote,port=6653

Mininetが起動するとTremaを起動した端末に以下のメッセージが表示されました。

$ trema run hello-trema.rb
Hello 0x1!

コントローラのプログラムがhello-tremaなので通信は出来ませんが、Mininetのスイッチと接続出来ました!

2014年2月7日金曜日

気になるSDN関連ニュース OpenDaylightを使った新製品

IBMからSDNの新製品である「IBM SDN VE OpenFlow Edition」と「IBM SDN VE KVM Edition」が発表されました。

 「SDN VE OpenFlow Edition」はOpenDaylightをベースにした初の商品という事です。
OpenDaylightは先日書きましたが、2月4日にリリースされたばかりですね。
この商品はOpenFlow1.0に準拠した仮想、物理スイッチを管理できるようです。

「IBM SDN VE KVM Edition」はKVMの仮想環境でのオーバーレイネットワークの構築や、VMwareと混在したネットワークの構築、管理が可能という事です。

◆報道資料
http://www-06.ibm.com/jp/press/2014/02/0501.html

◆関連トピック
http://itpro.nikkeibp.co.jp/article/NEWS/20140205/534922/?ST=openflow
http://cloud.watch.impress.co.jp/docs/news/20140206_634108.html
http://enterprisezine.jp/article/detail/5581

◆OpenDaylightについてはこちら
http://www.opendaylight.org/

2014年2月6日木曜日

SDN OpenDaylightリリース

当初2013年12月に最初のリリースされる予定だったOpenDaylightですが、米国時間の2月4日にとうとうリリースされました。
そういえばリリースされてなかったですね、忘れていました。

OpenDaylightと言えばSDNのオープンソースのプロジェクトで、多数の企業がそのプロジェクトに参加しています。

今回のリリースされたのは「Hydrogen」と言うらしいです。
個人でダウンロードして試す事も出来るようです。

コチラからダウンロードできます。
http://www.opendaylight.org/software/downloads

◆OpenDaylightプロジェクト
http://www.opendaylight.org/

◆関連ニュース
http://www.atmarkit.co.jp/ait/articles/1402/05/news050.html
http://sourceforge.jp/magazine/14/02/06/144500
http://news.mynavi.jp/news/2014/02/05/304/
http://www.publickey1.jp/blog/14/sdnopendaylighthydrogen.html

2014年2月5日水曜日

Openflow MininetのコントローラをTremaにしてみる

今回はMininetのコントローラにTremaを使ってみます。

まずTremaを起動します。
今回は試しにhello_trema.rbで。

trema run ./hello-trema.rb

次に、別の端末でMininetを起動します。

sudo mn --controller remote

Mininetを起動するとTremaを起動した端末にメッセージが表示されます

$ trema run ./hello-trema.rb
hello 0x1!

Mininetが起動したら、pingを投げてみます。

h1 ping -c2 h2

hello-tremaはパケットを処理する機能が実装されていないので、当然pingは通りません。
しかし、コントローラがTremaになったことは確認できました。
ここまではVirtualBoxに作ったUbuntu12.04、Tremaのバージョン0.3.20の話。

vmwareに作ったUbuntu13.10、Trema0.4.6では上手くいきませんでした。

何かわかったらまたお知らせします。