Mininet編2015.12.18TweetMininetを使いこなそう!これまでの記事でも、多岐に渡り扱ってきたOpenFlowコントローラの動作確認をするため、Mininetは活躍してきました。その使用方法はデフォルト状態に留まり、限定的であったと思います。そこで今回の記事ではこのMininetを主役に抜擢し、機能について具体的にご紹介できればと思います。vSwitch)・OpenFlowコントローラ(POX)を提供するOpenFlowエミュレータ(emulate:模倣、真似)であり、言語はPythonで記述されています。その他概要についてはコチラもご確認下さい。Mininetをインストールする際、依存関係によりOpenFlowコントローラのPOXも同時にインストールされます(同じくPythonで記述されているため、推奨されているのでしょう)。いえ、ユーザは趣向に合わせてOpenFlowコントローラを選択することが可能ですし、上表のいずれもMininetに対応しています。今回はTrema-edge(Ubuntu14.04上にインストール)を使用している事を前提に、進んでいこうと思います。vSwitchのバージョンを確認しましょう。showこのバージョンで両者が組み合わされていれば、OpenFlow1.0、1.3、1.4を動作させることが可能です。Mininetを起動しようまず、Mininetを起動します。お馴染みのスクリーンショットとなりますが、MininetはデフォルトでOpenFlowスイッチ×1、Host×2というネットワーク構成をエミュレートします。mnMininetでは、構築したネットワーク内の各ノードに対し、様々なコマンドを実行する事ができます。helpコマンドで実行可能なコマンドが表示されますので、その中から代表的なものを実行してみましょう。helpnodesコマンド:トポロジに存在している、全ての仮想ホストと仮想スイッチを表示。nodesintfsコマンド:トポロジに存在している、全てのインターフェースを表示。intfsnetコマンド:トポロジに存在している、全てのインターフェースと、その接続先を表示。netlinksコマンド:トポロジに存在している、全ての接続を表示。downコマンド:仮想ホスト1(h1)と仮想スイッチ(s1)を切断。upコマンド:仮想ホスト1(h1)と仮想スイッチ(s1)の接続。updumpコマンド:トポロジ上に存在する全ての仮想ホストと仮想スイッチについて、各情報を表示。dumpiperfコマンド:TCPプロトコルを使用していた場合、通信帯域幅を測定。h2iperfudpコマンド:UDPプロトコルを使用していた場合、送信トラフィックを指定して、通信帯域幅を測定。h2lでは試しに、linuxのtcコマンドを使用して、通信帯域を1Mに制限してみます。その上でMininetの通信帯域幅を確認してみると、1Mに制限されている事が分かります。h2pingallコマンド:トポロジに存在する全ての仮想ホスト間でpingによる疎通確認を実施。dump-flowsコマンド:トポロジに存在する全てのフローを確認することができます。ちなみにOpenFlowスイッチが複数存在する場合にも、同コマンドにより全てのOpenFlowスイッチ上のフローが表示されました。dump-flowsコマンド:スイッチに存在する全てのフローを確認することができます。s1ただし、OpenFlowプロトコルが1.3の場合は、フローを確認することができませんでした。Systemの標準的な端末エミュレータを起動。h1gtermコマンド:仮想ホストにおいて、デスクトップ環境GNOMEに付属する端末エミュレータを起動。noneコマンド:Mininetを起動してから停止するまでの時間を計測する。noneexitコマンド:Mininetを終了します。exit最後に以下コマンドでは、Mininetが異常終了した場合のMininetに関するデータを全て削除します。-cMininetのプロンプトから各ノードにコマンドを実行Mininetのプロンプトから、エミュレートしたホストやスイッチに対してコマンド(ifconfig、ps、ping等)を実行することができます。h2SimpleHTTPServerを起動し、動作確認や終了することも可能です。-aネットワークトポロジーを構築しようでは、Mininetで以下のトポロジーを持つネットワークを構築してみましょう。~/mininet/customディレクトリーにtopo-3sw-8host.pyというファイルを以下のように作成しました。上記ネットワークを構成するOpenFlowスイッチ×3とホスト×8を作成し、それぞれを紐付けているのがご確認頂けると思います。}では、Trema-edgeとMininetを接続させていきます。mytopo因みに他OpenFlowコントローラを使用する場合は、それぞれ以下コマンドを実行する事により、Mininetと接続させることができます。mytopoOpenDaylightでトポロジー画面を確認してみると、しっかりと表示されています。(※)Tremaで試行した際はpingallコマンドが通らないなど、上手くいきませんでした。互換性が悪いのでしょうか。おわりに全体を通して、Mininetにより構成された仮想ネットワークでどのようなことが実現できるのか、具体的に理解できたのではないでしょうか。柔軟なネットワークの構築や検証もする事ができそうですね。今回構成したネットワークは同一セグメントによるものでした。次は少し発展させ、複数のネットワークセグメントから構成されるネットワーク構築と、ノード間での通信ができる様になれば、と考えています。そのためには別途ソフトウェアルータが必要となることもあり、新しい挑戦として取組み甲斐がありそうです。今回も最後までお付き合いを頂き、ありがとうございました。9新年あけましておめでとうございます。3何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~2013.6.12「何」を知っているかではなく、「誰」が知っているか2013.5.28戦後、人間尊重の信念を貫きとおした1人の経営者がいた!2013.5.24健康な心が、健康な会社を作る。2iPhone5発売!LTE普及には切実な背景が...2012.9.12「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。2012.8.17会社を回すのに大事な3つの感覚。7プロジェクトはたいてい失敗に終わるんです。6月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!2012.1.31【第4回】想いを語る夕べ~フォロー編~2012.1.23タニタの社員食堂は"トップの想い"から生まれた!?2012.1.13【第3回】想いを語る夕べ~実施編~2011.12.27オフィスで簡単エクササイズ!2011.12.13【第2回】想いを語る夕べ~準備編~2011.11.24【第1回】想いを語る夕べ~誕生編~2011.11.17「責任感だけで仕事をしていた・・・。