Category Archives: API

API の設計方針とツール

Trema の API をどのように決めているか、舞台裏を紹介します。Trema API の唯一の設計方針は「短く簡潔に書けるかどうか」ですが、具体的にはこんな方法で設計しています。

API

Continue reading

Tagged , ,

新しいアクション API

最近の Trema ではフローのアクションの API に変更があります。使い勝手は今までとまったく変わりませんが、アクションを表すクラス名が一新されています。

Continue reading

Tagged ,

パケットの VLAN VID とプライオリティを書き換える

Modify-Field アクションの紹介も今日が最後です。今日はパケットの VLAN VID とプライオリティを書き換える方法です。

Continue reading

Tagged , , ,

Trema API のチートシート

Trema Ruby ライブラリのクラスは 100 個以上ありますが、そのうちよく使うものはせいぜい 10 個とかそこらです。そこで今日は、このようなよく使うクラスやメソッドだけを集めた便利な URL を紹介します。

Continue reading

Tagged

パケットの VLAN ヘッダを取り除く

Modify-Field アクションの紹介も大分進んできました。今日はパケットの VLAN ヘッダを取り除く方法です。

Continue reading

Tagged , ,

パケットの送信元・宛先 TCP/UDP ポート番号を書き換える

しばらく Modify-Field アクションでパケットを書き換える記事が続いています。今日はパケットの送信元・宛先 TCP/UDP ポート番号を書き換える方法です。

Continue reading

Tagged , ,

パケットの送信元・宛先 IP アドレスを書き換える

昨日にひきつづき Modify-Field アクションでパケットを書き換えてみましょう。今日はパケットの送信元と宛先 IP アドレスを書き換える方法です。

Continue reading

Tagged , ,

パケットの送信元・宛先 MAC アドレスを書き換える

OpenFlow では Modify-Field アクションを使ってパケットのいろいろな部分を書き換えることができるのでした。今回はこのうち、パケットの送信元と宛先 MAC アドレスを書き換える方法を説明します。

Continue reading

Tagged , ,

Exact Match を楽に作る

マッチングルールの中でもすべての条件が指定されたものを Exact Match と呼びます。たとえばよくある例ですが Packet In としてコントローラに入ってきたパケットと

  • スイッチの物理ポート番号
  • 送信元 MAC アドレス
  • 宛先 MAC アドレス

などなどマッチングルールが定義する 12 個の条件がすべてまったく同じ、というものが Exact Match です。これを普通にコードにするとこうなります。

Continue reading

Flow Mod してみよう 1

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

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

Trema の Flow Mod API はそれぞれ

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

Continue reading