Junos OS 実行デバイスにおける OpenFlow フロー入力タイマーについて
OpenFlow フロー エントリ タイマーの概要
Junos OSを実行しているデバイス上のOpenFlowに参加している論理インターフェイスごとに、1つのフィルターが作成され、入力方向の論理インターフェイスに適用されます。OpenFlow フローは、フィルター項目としてフィルターにマップされます。各フローには多数のタイマーが関連付けられており、OpenFlow コントローラで設定されるタイマーもあれば、Junos OS CLI で設定されるタイマーもあります。OpenFlow フロー エントリ タイマーには、アイドル タイムアウト、ハード タイムアウト、およびパージ フロー タイマーが含まれます。 表 1 は、さまざまな OpenFlow フロー タイマーをまとめたものです。EX4550スイッチは、アイドルタイムアウトをサポートしていません。
タイマー |
構成 |
範囲 (秒) |
---|---|---|
アイドル タイムアウト |
コントローラ |
0、11 から 65,535 |
ハード タイムアウト |
コントローラ |
0 から 65,535 |
パージフロータイマー |
Junos OS CLI ( |
0 から 300 |
アイドル タイムアウトとハード タイムアウト
各フローエントリには、アイドルタイムアウトとハードタイムアウトが関連付けられており、どちらもOpenFlowコントローラを介して設定されます。アイドル タイムアウトは、一致するパケットがないためにフロー エントリーがフローテーブルおよび提供されたハードウェアから削除されるまでの秒数です。ハード タイムアウトは、パケットが一致するかどうかにかかわらず、フロー エントリがフロー テーブルとハードウェアから削除されるまでの秒数です。
フロー エントリーにアイドル タイマーとハード タイマーの両方が関連付けられている場合、最初に期限切れになるタイマーによってフロー エントリーが削除されます。アイドル タイマーが先に期限切れになった場合、一致するパケットがない場合にのみ、その時点でフロー エントリーが削除されます。それ以外の場合、ハードタイマーが期限切れになったときにフローエントリが削除されます。
コントローラがスイッチにフロー エントリ変更メッセージ(OFPT_FLOW_MOD)を送信すると、そのフロー エントリのアイドル タイムアウトとハード タイムアウトが指定されます。Junos OS を実行するデバイスでは、アイドル タイムアウト値は 0 または 11〜 65,535 秒の範囲で設定できます。コントローラーがアイドル タイムアウトを 0 に設定すると、フロー エントリーでアイドル タイムアウトが発生しません。ハード タイムアウト値の範囲は 0 から 65,535 秒です。コントローラーがハード タイムアウトを 0 に設定すると、フロー エントリーでハード タイムアウトは発生しません。コントローラが無効なタイムアウト値を要求すると、スイッチはフロー変更メッセージを拒否し、エラー メッセージをコントローラに送り返します。
パージフロータイマー
Junos OS を実行しているデバイスでは、パージ フロー タイマーを設定できます。これは、無効な OpenFlow フロー エントリがフロー テーブルから削除されるまでの秒数です。 purge-flow-timer
ステートメントは、Junos OS CLI を使用して [edit protocols openflow switch switch-name]
階層レベルで設定されます。 purge-flow-timer
値は、それが設定されているOpenFlow仮想スイッチに固有であり、その仮想スイッチに関連付けられているすべてのフローエントリで同じです。
purge-flow-timer
ステートメントを設定しない場合、デバイスはハードウェアから無効なフロー エントリーを削除しますが、ルーティング エンジンのフロー テーブルに対応するフロー エントリーは無期限に保持します。purge-flow-timer
ステートメントを設定すると、デバイスはハードウェアから無効なフロー エントリーを削除し、指定された秒数が経過すると、フロー テーブルから無効なフロー エントリーを削除します。値を 0 に設定すると、デバイスはフロー テーブルから無効なフロー エントリーを直ちに削除します。
たとえば、OpenFlow 論理インターフェイスが一時的に使用できなくなった場合を考えてみます。インターフェイスが利用できなくなった場合、論理インターフェイスを一致するイングレスインターフェイス、またはアクションセット(OpenFlow v1.0の場合)またはフロー命令(OpenFlow v1.3.1の場合)内の唯一のアクティブなエグレスインターフェイスとして持つフローエントリーは、無効としてマークされます。論理インターフェイスは使用できませんが、フロー エントリは引き続き有効である可能性があります。 purge-flow-timer
設定ステートメントは、フローエントリの処理方法を決定します。
この例では、 purge-flow-timer
ステートメントを設定しない場合、論理インターフェイスが利用できなくなると、デバイスはハードウェアから無効なフロー エントリーを削除しますが、フロー テーブル内のフロー エントリーは無期限に保持します。論理インターフェイスが後で使用可能になると、コントローラの介入なしにフロー エントリがハードウェアに再インストールされます。
一方、 purge-flow-timer
ステートメントを設定すると、論理インターフェイスが利用できなくなると、デバイスはハードウェアからフロー エントリーを削除し、設定された purge-flow-timer
秒間フロー テーブルにフロー エントリーを保持します。インターフェイスが使用可能にならず、タイマーが期限切れになると、デバイスはフロー テーブルからフロー エントリを削除します。インターフェイスが復旧した後、OpenFlow コントローラは、フロー テーブルとハードウェアにフロー エントリを復元するために、新しいフロー エントリ変更メッセージを OpenFlow スイッチに送信する必要があります。
デフォルトでは、既存のOpenFlow設定からアクティブなOpenFlow論理インターフェイスを削除した場合、この論理インターフェイス上でingressインターフェイスとして一致するフローエントリーと、アクションリストまたはフロー命令でこの論理インターフェイスを唯一のアクティブなegressインターフェイスとして含むフローエントリーは無効になり、 purge-flow-timer
ステートメントを設定するかどうかに関係なく、フローテーブルとハードウェアから自動的にパージされます。