私は SDX (Software Defined Exchange) に関する研究プロジェクトに取り組んでいます。現在の SDX の実装は、 https://github.com/sdn-ixp/sdxで提供 されており、パケット転送のために単一のコントローラーに接続された単一のスイッチのみを使用しています。
私の研究目標は、このセットアップをスケーラブルにすることです。最初に頭に浮かぶのは、明らかに SDX を複数のスイッチで動作させ、フロー テーブルを分割することです。私が考えたアプローチは、大まかにこのトポロジを設定することです:
http://i.stack.imgur.com/yXKQp.png
ここで、図に示す 3 つのスイッチ (この例では) に分散することにより、1 つのスイッチのフロー テーブル エントリを減らしたいと考えています。
ノード A がノード B にパケットを送信したいとします。A が最初に SDX に参加したとき、コントローラーは、この場合はインターフェイスとして使用するスイッチ (S1) と、それがアナウンスする IP プレフィックスを認識しました。B もスイッチ S1 とインターフェースしているとします。A が特定の IP から発信されたすべてのトラフィックを B に転送するポリシーを指定すると、コントローラーは両方の AS が同じスイッチに接続されていることに注意し、スイッチ S1 に対応するエントリを追加します。
私が望むのは、各スイッチに一致しないポリシーがあることです。つまり、パケットがエントリに一致しない場合、次のスイッチに転送されます。たとえば、エントリに一致しない A からパケットを取得した場合、S1 は S2 に転送されます。フローテーブルにあります。これは、A が特定のアドレスから発信されたすべてのトラフィックを D に転送したい場合に発生します。コントローラは、D がスイッチ S2 に接続されていることを認識しているため、対応するエントリをスイッチ S2 に追加するだけで、S1 で一致しないパケットはすべて転送されることを認識しています。デフォルトでは S2 に転送されます。
現在、OpenFlow コントローラーは接続されているすべてのスイッチにルールを設定しているため、Open Flow でこれを行う方法を知りたいです。ここからどの方向に行けばいいですか?独自のコントローラーを作成しようとする必要がありますか?
アドバイスをいただければ幸いです。ありがとうございました