Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS 実行デバイスにおける OpenFlow フロー入力タイマーについて

OpenFlow フロー エントリ タイマーの概要

Junos OSを実行しているデバイス上のOpenFlowに参加している論理インターフェイスごとに、1つのフィルターが作成され、入力方向の論理インターフェイスに適用されます。OpenFlow フローは、フィルター項目としてフィルターにマップされます。各フローには多数のタイマーが関連付けられており、OpenFlow コントローラで設定されるタイマーもあれば、Junos OS CLI で設定されるタイマーもあります。OpenFlow フロー エントリ タイマーには、アイドル タイムアウト、ハード タイムアウト、およびパージ フロー タイマーが含まれます。 表 1 は、さまざまな OpenFlow フロー タイマーをまとめたものです。EX4550スイッチは、アイドルタイムアウトをサポートしていません。

表 1: OpenFlow フロー エントリ タイマー

タイマー

構成

範囲 (秒)

アイドル タイムアウト

コントローラ

0、11 から 65,535

ハード タイムアウト

コントローラ

0 から 65,535

パージフロータイマー

Junos OS CLI ( purge-flow-timer 設定ステートメントを使用)

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 ステートメントを設定するかどうかに関係なく、フローテーブルとハードウェアから自動的にパージされます。