ラーニングスイッチ作成編2015.5.22Tweet展示会は皆様のおかげで大盛況でした!5/13(水)~5/15(金)に東京ビックサイトで開催された「組込みシステム開発技術展」が閉幕をいたしました。想定どおりに動作するか少し心配だった展示デモでしたが、全日程とも問題なく稼働し、ほっとしております。改めまして、多くの方々に弊社ブースへお越し頂きました事に、深く感謝をいたします。当日は以下の物理ネットワーク構成で動画とiperfトラフィックを流した上で、複数の試験項目を順に実施しました。通信に制御をしない状態で、動画およびiperfトラフィックがOpenFlowスイッチを介して正常に送受信されていることを確認する。2帯域の制御OpenFlowスイッチで通信可能なデータ量を制限し、受信動画の映像品質に影響が及ぼされるかを検証する。3ファイアウォールOpenFlowコントローラからOpenFlowスイッチに対してiperfトラフィック上の通信を遮断するように設定し、実際に検証する。4パケットの書換えOpenFlowコントローラからOpenFlowスイッチ上で動画のUDPポート番号を書換えるように設定し、正常に書換えられているか検証する。今回の記事では、1標準動作で使用したラーニングスイッチについてご紹介をします。ラーニングスイッチを作成してみようラーニングスイッチとは、スイッチが受信したパケットの情報を学習し、自ら宛先を決定して送信するスイッチです。今回はMACアドレスを学習し、ポート番号とMACアドレスの関係を記憶させることで、一般的なL2スイッチを作成しています。それでは、OpenFlowコントローラの動きを記述してみましょう。Viエディタから以下ソースを記述し、learning-switch.rbというファイル名で保存します。endend2~4行目startメソッドで、OpenFlowコントローラが起動時に@fdb変数を初期化しています。ここにL2スイッチのMACアドレステーブルを格納します。5行目OpenFlowスイッチのフローにマッチしないパケットが到着したとき、OpenFlowスイッチはpacket_inメッセージをOpenFlowコントローラに送信します。OpenFlowコントローラでpacket_inメッセージを受信すると、このPacket_inメソッドの処理が実行されます。6行目@fdb変数に、OpenFlowスイッチが受信したパケットの送信元MACアドレスと受信したポート番号を記憶させます。7行目@fdb変数にすでに記憶済みの一覧から、packet_inメッセージの宛先MACアドレスに対応するポート番号を見つけ、port_no変数に代入します。8~10行目port_no(packet_inメッセージの宛先MACアドレスに対応するポート番号)が存在している場合、flow_modメソッドでOpenFlowスイッチに新規フローを登録し、その後packet_outメソッドでPacket_inのパケットを転送させます。11~12行目port_no(packet_inメッセージの宛先MACアドレスに対応するポート番号)が存在していない場合は、floodメソッドで全物理ポートにpacket_outで送信させています。16~21行目flow_modメソッドの動きを記述しています。受信したパケットと同じ条件のときには、対象ポート宛てに通信するようにフローを登録しています。22~28行目packet_outメソッドの動きを記述しています。packet_inで受信したパケットを、対象ポート宛てに送信するように指示しています。29行目~31行目floodメソッドの動きを記述しています。OFPP_FLOODですべてのポート宛てに送信するように指示しています。ラーニングスイッチを動かしてみよう以下のコマンドを打ち、ラーニングスイッチを実行してみました。./learning-switch.rb以下の画面はラーニングスイッチで通信しているデモンストレーションの画面です。受信している動画とその使用帯域を表示しています。受信側で動画が正常に再生され、送信トラフィックがそのまま受信側に届いているのが確認できます。Pi上でフローテーブルを確認してみましょう。上から二つ目に以下のエントリーがあります。actions=output:2以下の条件にマッチしたときにの動作が記述されています。動作としては、action=output:2として、2番の物理ポートから送信するように指示されています。2を用いて、実際にラーニングスイッチを動かしてみました。次回は試験項目2~4について、同様にご紹介していきます。最後までお付き合いを頂き、ありがとうございました。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「責任感だけで仕事をしていた・・・。