タグ : sdn

SDN解説記事まとめ

mac-glasses

SDN(Software-Defined Network)の解説記事がだいぶ溜まってきたので、解説記事まとめをエントリーしておきます。
記事が追加される度にこちらの記事も更新していく所存。

SDNベンダーのBig Switch Networksがオンラインラボを無料で公開したので早速試してみた。

Big Switch Networks, Inc. | The Leader in Open Software Defined Networking 2015-02-20 13-24-05

SDNベンダーのBig Switch NetworksがオンラインでBSN製品を操作可能なラボを無料で一般公開したようです。

Big Switch Labs

ということで早速試してみました。

登録

まずハンズオンを体験するために、メンバー登録が必要です。
Big Switch Labsのサインアップのページから、必要事項を記入して登録します。

Big Switch Labs 2015-02-20 09-54-37

しばらくすると、登録したメールアドレスに登録完了のメールが届きますので、メール内にあるリンクをクリックするとログインが可能になります。

ハンズオンを試してみた

現時点でハンズオン可能なケースは以下の3つでした。

  • Big Cloud Fabricを使ったケースが2つ
  • Big Tap Monitoring Fabricのケースが1つ

Big Switch Labs 2015-02-20 09-34-31

とりあえず、Big Cloud Fabricの基本的なアーキテクチャを学ぶことが出来る「Introduction to Big Cloud Fabric」を試してみました。

ハンズオンを進めていくためのDirectionsを見ながら実際に操作していくイメージです。

Big Cloud Fabric Hands-On Lab 2015-02-20 09-38-10

Big Cloud Fabric Hands-On Lab 2015-02-20 09-38-49

トポロジーを右クリック => CLIやGUIでのログインで実際にログインが可能です。

Shell In A Box 2015-02-20 09-39-33

上記がCUIでにログインで、以下がGUIでログインした画面です。

Big Cloud Fabric™ Dashboard 2015-02-20 09-40-48

レスポンスも良好です。

Ciscoも仮想化製品のオンラインラボを提供していますし、さらに仮想化製品が普及すればオンラインラボが普通なるんでしょうね。

Cisco onePKで遊ぶ(実行編2)

前回に続いてもう少しサンプルプログラムで遊んでみます。

様々なイベント情報の取得

「events」フォルダには、様々なイベント情報を取得できるサンプルプログラムが用意されています。

$ cd events/
events$ ll
total 44
drwxr-xr-x 2 cisco cisco 4096 Mar 26 22:01 ./
drwxr-xr-x 13 cisco cisco 4096 Apr 28 18:03 ../
-rwxr-xr-x 1 cisco cisco 4360 Mar 26 22:01 CDPEventTutorial.py*
-rwxr-xr-x 1 cisco cisco 5445 Mar 26 22:01 CliEventTutorial.py*
-rwxr-xr-x 1 cisco cisco 93 Mar 26 22:01 __init__.py*
-rwxr-xr-x 1 cisco cisco 4146 Mar 26 22:01 README*
-rwxr-xr-x 1 cisco cisco 4711 Mar 26 22:01 SyslogEventTutorial.py*

いくつか実行してみます。

CDPイベント情報の取得

CDPを使って隣接ルータの情報を取得するプログラムです。

/events$ ./CDPEventTutorial.py -a 10.10.10.110
Enter Username : xxxxx
Enter Password : xxxxx
INFO:onep:BaseTutorial:We have a NetworkElement :
NetworkElement [ 10.10.10.110 ]

WARNING: Certificate presented by remote host '10.10.10.110' is not verified.

The SHA-1 fingerprint sent by the remote host(10.10.10.110) is:
78:81:91:DA:17:58:42:04:B8:D7:CC:9A:54:C6:84:05:31:D3:32:A9

You MUST verify the certificate on remote host before proceeding!

Choose from following options:
Accept Once (o), Reject (r) (default) :o
INFO:onep:BaseTutorial:Successful connection to NetworkElement -
Connected to Network Element 10.10.10.110

接続に成功すると、CDPを使って隣接ルータの情報を返してくれます。

Adding CDP listener to network element
Waiting for a CDP event to occur
---------------------------
ONEP_CDP_UPDATE
---------------------------
NetworkInterface = GigabitEthernet0/1
neighbor = Router3
platform = Cisco IOSv
version = Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.4(1.24)T0.9, MAINTENANCE INTERIM SOFTWARE
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Fri 21-Mar-14 00:59 by prod_rel_team
capabilitites = Router Source-Route-Br
---------------------------

---------------------------
ONEP_CDP_UPDATE
---------------------------
NetworkInterface = GigabitEthernet0/3
neighbor = Router2
platform = Cisco IOSv
version = Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.4(1.24)T0.9, MAINTENANCE INTERIM SOFTWARE
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Fri 21-Mar-14 00:59 by prod_rel_team
capabilitites = Router Source-Route-Br
---------------------------

CLIのコマンド入力情報の取得

プログラム実行中に、「show clock」コマンドを入力した場合に結果を返すプログラムです。

プログラム実行中にRouter1のCLIにて、「show clock」を実行してみます。

/events$ ./CliEventTutorial.py -a 10.10.10.110
Enter Username : xxxxx
Enter Password : xxxxx
INFO:onep:BaseTutorial:We have a NetworkElement :
NetworkElement [ 10.10.10.110 ]

WARNING: Certificate presented by remote host '10.10.10.110' is not verified.

The SHA-1 fingerprint sent by the remote host(10.10.10.110) is:
78:81:91:DA:17:58:42:04:B8:D7:CC:9A:54:C6:84:05:31:D3:32:A9

You MUST verify the certificate on remote host before proceeding!

Choose from following options:
Accept Once (o), Reject (r) (default) :o
INFO:onep:BaseTutorial:Successful connection to NetworkElement -
Connected to Network Element 10.10.10.110
Adding a CLI event listener'
To verify please enter 'show clock' command on the connected device

ここで、Router1にて、「show clock」コマンドを実行すると、イベントとして結果が返ってきます。

---------------------------
CLI Event: handle_event

eventHandle1006
msgCount = 1
sync = 0
sync = 1
message = show clock
---------------------------

CliEventTutorial.pyのソースを見ると、「clock」という文字列でフィルタしているようです。

cliFilter = CLIFilter('clock')

この文字列を変更すれば色々と遊べそう。

インタフェース情報の取得

「interfaces」フォルダには、インタフェース情報の取得や制御を行うサンプルプログラムがあります。

インタフェースをDownさせるプログラム

onePKはルータの情報を取得するだけでなく、制御を行うこともできます。
InterfaceStateChangeTutorial.pyはインタフェースをダウンさせてから、再度UPさせるプログラムです。

interfaces$ ./InterfaceStateChangeTutorial.py -a 10.10.10.110
Enter Username : cisco
Enter Password :
INFO:onep:BaseTutorial:We have a NetworkElement :
NetworkElement [ 10.10.10.110 ]

WARNING: Certificate presented by remote host '10.10.10.110' is not verified.

The SHA-1 fingerprint sent by the remote host(10.10.10.110) is:
78:81:91:DA:17:58:42:04:B8:D7:CC:9A:54:C6:84:05:31:D3:32:A9

You MUST verify the certificate on remote host before proceeding!

Choose from following options:
Accept Once (o), Reject (r) (default) :o
INFO:onep:BaseTutorial:Successful connection to NetworkElement -
Connected to Network Element 10.10.10.110
Adding Interface State Change event listener on network element 10.10.10.110
Adding State Change event listener on interface GigabitEthernet0/1

接続が完了すると、GigabitEthernet0/1をDownさせてからUpさせて、その結果を表示します。

shutting down interface GigabitEthernet0/1
Network Element State Change has received state change event - from Event Handler
Interface has state ONEP_IF_STATE_ADMIN_DOWN

Interface State Change has received state change event - from Event Handler
Interface has state ONEP_IF_STATE_ADMIN_DOWN

bring up interface GigabitEthernet0/1
Network Element State Change has received state change event - from Event Handler
Interface State Change has received state change event - from Event Handler
Interface has state ONEP_IF_STATE_OPER_UP

Interface has state ONEP_IF_STATE_OPER_UP

Removing the registered state change listeners
Disconnecting from the Network Element

まとめ

ここでは紹介しなかったけど、他にもRIB情報を参照したり、経路を注入したりするプログラムもあったりと、サンプルプログラムだけでもかなり遊べますね。

今までもonePKを使わなくても、Expect等を使えば同じようなことは出来たのですが、より汎用的に開発が出来るようになるという意味ではonePKの活用もありな気がしました。

今後は自分でプログラム書いてみるのと、実機で動作を見てみたい。

Cisco onePKで遊ぶ(実行編)

前回は、onePKを使うまでの準備まで行いましたので、今回は実際にonePKを動かしてみます。

Cisco onePK

VMを起動して事前準備が終了すると上図のように、デスクトップに最初からいくつかのアイコンが準備されています。

Firefoxアイコンの「onePK Tutorials」をクリックすると詳細なチュートリアルの説明を見ることが出来ますが、ここでは事前に準備されている「Start 3node」と書かれたアイコンをクリックしてデモ構成を起動してみます。

Cisco onePK

作成完了のメッセージが出てOKを押すと、ターミナルが3つ起動します。

Cisco onePK

これで、VM上にCisco IOSvルータが3台起動しました。

3node構成

準備されている3node構成のネットワーク構成は以下の通りです。

Untitled

各ルータのバージョンは以下の通り、15.4でした。

Cisco onePK

各ルータへのログインは以下の通り。

  • Router1
    Console:telnet 127.0.0.1 3533
    Aux:telnet 127.0.0.1 3534
  • Router2
    Console:telnet 127.0.0.1 3535
    Aux:telnet 127.0.0.1 3536
  • Router3
    Console:telnet 127.0.0.1 3537
    Aux:telnet 127.0.0.1 3538

onePKを動かしてみる

今回は最初から用意されているサンプルプログラムを実行してみます。
プログラムはC言語、Java、Pythonが用意されていて、今回はPythonを使ってみます。

Pythonのサンプルプログラムは以下フォルダにあります。

/home/cisco/onePK-sdk-1.2.0.173/python/tutorials

ネットワーク情報を取得するプログラム

ネットワーク情報を取得するプログラムは「element」フォルダにあります。

$ cd element/
$ ll
total 36
drwxr-xr-x 2 cisco cisco 4096 Mar 26 22:01 ./
drwxr-xr-x 13 cisco cisco 4096 Apr 28 18:03 ../
-rwxr-xr-x 1 cisco cisco 4032 Mar 26 22:01 ElementProcessTutorial.py*
-rwxr-xr-x 1 cisco cisco 3875 Mar 26 22:01 ElementPropertyTutorial.py*
-rwxr-xr-x 1 cisco cisco 3863 Mar 26 22:01 FRUTutorial.py*
-rwxr-xr-x 1 cisco cisco 159 Mar 26 22:01 __init__.py*
-rwxr-xr-x 1 cisco cisco 4699 Mar 26 22:01 NetworkElementTutorial.py*
-rwxr-xr-x 1 cisco cisco 1761 Mar 26 22:01 README*

NetworkElementTutorial.pyをRouter1に対して実行してみます。

$ ./NetworkElementTutorial.py -a 10.10.10.110
INFO:onep:NetworkElementTutorial:Reading arguments...
Enter Username : xxxxx ←事前に設定したUsernameを入力
Enter Password : xxxxx ←事前に設定したPasswordを入力
INFO:onep:NetworkElementTutorial:Connecting to Network Element...
INFO:onep:BaseTutorial:We have a NetworkElement :
NetworkElement [ 10.10.10.110 ]

WARNING: Certificate presented by remote host '10.10.10.110' is not verified.

The SHA-1 fingerprint sent by the remote host(10.10.10.110) is:
78:81:91:DA:17:58:42:04:B8:D7:CC:9A:54:C6:84:05:31:D3:32:A9

You MUST verify the certificate on remote host before proceeding!

Choose from following options:
Accept Once (o), Reject (r) (default) : o ←oを入力
INFO:onep:BaseTutorial:Successful connection to NetworkElement -
INFO:onep:NetworkElementTutorial:Done
INFO:onep:NetworkElementTutorial:NetworkElement parent - NetworkElementTutorial

接続が成功すると以下のように、ルータのハードウェア情報やメモリ、CPU情報が返ってきます。

NetworkElement [ 10.10.10.110 ]
Product ID : IOSv
Processor : IOSv Chassis
Serial No : xxxxxxxxxxxxxxxxxxxxx
sysName : Router1
sysUpTime : 5111
sysDescr : Cisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.4(1.24)T0.9, MAINTENANCE INTERIM SOFTWARE
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Fri 21-Mar-14 00:59 by prod_rel_team

INFO:onep:NetworkElementTutorial:NetworkElement is connected - True
INFO:onep:NetworkElementTutorial:Free System Memory - 70262552
INFO:onep:NetworkElementTutorial:Total System Memory - 128176032
INFO:onep:NetworkElementTutorial:Total System CPU Utilization - 43
$

Cisco onePKで遊ぶ(準備編)

Cisco onePK

Cisco版SDNともいうべき、Cisco oneの開発キットであるCisco onePKですが、All-in-one VMというonePKが導入されたVMが公開されていたので早速試してみましたよと。

Cisco Japan Blog » onePK を使ってアプリケーションを作る – All-in-one VMのご紹介

All-in-one VMのダウンロード

All-in-One VM – Cisco Developer Communityからダウンロードします。(要Cisco.com ID)

Cisco onePK

容量は2Gある上にダウンロードめっちゃ遅いので、終わるまで気長に待ちましょう。

インストール

Virtual Boxを起動して、「ファイル」→「仮想アプライアンスのインポート」を選択。

Virtual Box

インポートしたいアプライアンスを入力するボックスがでるので、先ほどダウンロードしたファイルを選択して「続ける」を押します。

Virtual Box

そのまま「インポート」を押します。

Virtual Box

VMが出来たら早速起動してみます。

初期設定

Virtual Box

ubuntuが起動するとパスワードを聞いてきますので、初期パスワード「cisco123」を入力します。

vm [Running] 2014-04-28 15-48-19 2014-04-28 15-48-36

続いて新しいパスワードを聞いてきますので好きなパスワードを入力します。

vm [Running] 2014-04-28 15-51-02 2014-04-28 15-51-04

何か聞いてくるので、acceptにチェックを入れて、Proceedをクリック。

Virtual Box

Network Simulatorのユーザ名とパスワードの入力を求めてきますので好きに決めて入力します。

Cisco onePK

Wellcomeメッセージが出てくればOK。

次回は、予め用意してあるノードを起動してonePKを動かしてみます。