今日も秋田で IoT

旧 Trema 日記

2012-02-01から1ヶ月間の記事一覧

LLDP でトポロジー検出

topology_discovery が LLDP でトポロジー検出を行う仕組みをみてみます。topology_discovery は LLDP メッセージを作り、packet_out でスイッチへと送ります。スイッチから出力された LLDP は隣接するスイッチに届き、packet_in でコントローラへと戻ってき…

show_description でスイッチの情報を取得する

前回の flow_dumper に似たアプリとして show_description があります。さっそく起動してみましょう。 $ ./trema run -c ../apps/routing_switch/routing_switch.conf -d $ TREMA_HOME=`pwd` ../apps/show_description/show_description Manufacturer descri…

flow_dumper を使ってフローエントリを取得する

Trema を使ってコントローラの開発をしていると、OpenFlow スイッチにちゃんとフローが設定できているのか気になります。OpenFlow の仕様では、OpenFlow スイッチに設定されているフローを取得するために、stats_request メッセージの OFPST_FLOW タイプが用…

セキュアチャネルのポート番号を変える

作成した OpenFlow コントローラを trema 上で起動すると、セキュアチャネル用にデフォルトで tcp/6633 ポートを Listen します。このポート番号を変えるためには、コンフィグファイルに以下のような 1 行を付け加えます。 config.port = 6644 ネットワーク…

Trema アプリを複数同時に起動する方法

前回の記事で用いた topology_fullmesh.conf には run で始まる箇所が三つあり、それぞれ topology, topology_discovery, dumper という3つのアプリケーションを起動しています。このように trema では複数のアプリを同時に立ち上げることができます。しかし…

Topology を動かしてみよう

前回紹介した topology モジュールを動かしてみましょう。 ビルドと実行 trema 本体と topology のビルドを行ってください。 $ (cd trema/; ./build.rb) $ (cd apps/topology/; make) ビルドができたら、以下のように実行してみてください。 $ (cd trema/; .…

Topology の紹介

github 上の以下のリポジトリに、Trema を使ったアプリケーションがいくつか登録されています。https://github.com/trema/appsこの中にある topology について紹介します。 Topology とは? 複数の OpenFlow スイッチから構成されるネットワークを、コントロ…

cruise.rb 失敗への対策

./cruise.rb が最近失敗するようになった。こんな感じに。 kazuya@ubuntu0:~/proj/trema$ ./cruise.rb /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- bundler/setup (LoadError) from /…

ネットワークエミュレーション機能 (openvswitch の起動)

質問を頂いたので、Trema のネットワークエミュレーション機能において、openvswitch がどのように起動されるかを解説します。 openvswitch の起動 openvswitch は、Trema 内の Ruby において、OpenVswitch クラスとして表現されています(ソース)。このクラ…

ネットワークエミュレーション機能の中身

Trema のネットワークエミュレーション機能の中身を見てみたいと思います。例えば、以下のようなコンフィグファイルを Trema から起動したとします。 vswitch ( "vsw" ) { datapath_id "0xabc" } vhost ( "host1" ) vhost ( "host2" ) link "host1", "vsw" l…