Monthly Archives: July 2012

Trema T シャツを着よう!

チームワークが良いことで有名な Trema の開発チームですが、その仲の良さの秘密は開発メンバ全員がいつもお揃いの T シャツを着ていることにあります。

Continue reading

Tagged

Flow Mod してみよう 1

Flow Mod はスイッチのフローテーブルを変更する OpenFlow メッセージの総称で、次の 3 種類があります。

  • Add フローエントリを追加する
  • Delete フローエントリを削除する
  • Modify フローエントリを変更する

Trema の Flow Mod API はそれぞれ

というメソッドで定義されています。今回は、この中でもとくによく使う send_flow_mod_add メソッドの API 定義を見ていきましょう。

Continue reading

Packet Out してみよう 1

Packet Out は OpenFlow で定義されたメッセージの 1 つで、スイッチの指定したポートからパケットを送信させるためのものです。送信するときにはパケットを書き換えることもできます。よく使われる用途として、Packet In でコントローラにパケットが上がってきたときに Packet Out でこのパケットを書き換えてスイッチのポートから送り出す場合があります

Trema の Packet Out API は Controller#send_packet_out メソッドで定義されています。なお Controller クラスはすべてのコントローラの親クラスなので、コントローラはこの send_packet_out メソッドをクラス内で直接呼び出すことができます。それでは、API 定義を見ていきましょう。

Continue reading

統計情報を理解する

フローの構成要素の一つに統計情報があります。統計情報はスイッチに実装されたカウンタの一種で、パケットの転送数やエラー数などを数えてくれます。コントローラはこのカウンタの値を使うことによってたとえば、

  • ネットワーク情報の可視化
  • エラーの通知や警告、予測
  • トラフィックの大小に応じたユーザごとの帯域制御
  • トラフィックの傾向に応じた転送パスの切り替えやスイッチの ON/OFF 制御

などを行うことができます。

Continue reading

マッチングルールを理解する

フローの構成要素の一つにマッチングルールがあります。マッチングルールとは、OpenFlow スイッチがパケットを受け取ったときにアクションを起こすかどうか決める条件です。たとえば「パケットの宛先が http サーバだったら」とか「パケットの送信元がローカルネットワークだったら」などという条件に適合したパケットにだけ、スイッチがアクションを起こすというわけです。

Continue reading

アクションを理解する

フローの構成要素の一つにアクションがあります。アクションとは、スイッチに入ってきたパケットをどう料理するか、という動詞にあたる部分です。よく「OpenFlow でパケットを書き換えて曲げる」などと言いますが、これらはすべてこのアクションで実現できることです。それでは、OpenFlow 1.0 ではどんなアクションが定義されているか見てみましょう。

Continue reading

Tagged ,

Trema のコミッタになるには?

あなたも Trema のコミッタに仲間入りしませんか?ふつうコミッタになるには Trema のパッチを書く必要があるわけですが、実はちっともむずかしくありません。ここで説明するのは Trema に詳しくなくてもすぐにできて、しかも貢献度が高く喜ばれるパッチの作りかたです。

Continue reading

API を素早く調べる

Trema でプログラムを書いているとよく API を調べたくなります。Trema のホームページから API リファレンスへのリンクをたどってもいいのですが、ちょっと面倒ですよね。そこで、もっと簡単に開くショートカットがあります。

それが trema ruby コマンドです。ターミナルで trema ruby を実行すると、次のようにデフォルトブラウザで Trema Ruby API のページが開きます。

プログラミング中いつでもコマンド一発でリファレンスを開けるので大変便利です。