OpenFlow の前提条件
デバイスを OpenFlow モードで起動する必要があります。
OpenFlow モードは、スイッチで boot mode openflow コマンドを設定すると有効になります。すべてのポートがこのモードになり、スイッチは通常の Cisco IOS XE 機能をサポートしなくなります。
この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
このモジュールでは、デバイスで OpenFlow を有効化して設定する方法について説明します。
デバイスを OpenFlow モードで起動する必要があります。
OpenFlow モードは、スイッチで boot mode openflow コマンドを設定すると有効になります。すべてのポートがこのモードになり、スイッチは通常の Cisco IOS XE 機能をサポートしなくなります。
OpenFlow は Open Networking Foundation(ONF)の仕様で、フローベースの転送インフラストラクチャと、標準化されたアプリケーション プログラム インターフェイスを定義します。OpenFlow では、セキュアなチャネルを介して、デバイスのフォワーディング機能を方向付けすることができます。
OpenFlow は、コントローラ(コントロール プレーン)とイーサネット スイッチ(データ)プレーン)の間のプロトコルです。スイッチ/デバイスには、パイプラインに配置されたフロー テーブルがあります。フローとは、これらのテーブルに到達するパケットを調べるためのルールです。
スイッチ上の OpenFlow エージェントは、OpenFlow プロトコルを使用してコントローラと通信します。エージェントは、OpenFlow 1.0(有線プロトコル 0x1)と OpenFlow 1.3(有線プロトコル 0x4)の両方をサポートしています。エージェントは最大 8 つのコントローラ接続を持つことができます。これらの接続はスイッチオーバー後は維持されず、コントローラはエージェントに再接続する必要があります。
Cisco Catalyst 9400 シリーズ スイッチでの OpenFlow の実装はステートレスです。ノンストップ フォワーディング(NSF)はサポートされていません。スタンバイのスーパーバイザは、フロー データベースと同期しません。
Openflow コントローラは、Openflow プロトコルを使用して Openflow スイッチとやり取りするエンティティです。ほとんどの場合、コントローラは多数の Openflow 論理スイッチを管理するソフトウェアです。コントローラではネットワークを一元的に表示でき、管理者はこれを使用して、ネットワーク トラフィックの処理方法について基盤となるシステム(スイッチおよびルータ)に指示を出すことができます。通常、コントローラは Linux サーバで実行され、OpenFlow 対応スイッチに IP 接続できる必要があります。
コントローラはスイッチを管理し、スイッチ上でフローを挿入および削除します。これらのフローは、OpenFlow 1.3 および 1.0 の「照合」と「アクション」の基準のサブセットをサポートしています。
スイッチは、管理ポートを使用してコントローラに接続します。管理ポートは管理用の Virtual Routing and Forwarding(VRF)インスタンスの中にあり、そのためコントローラへのセキュアな接続を提供します。コントローラをスイッチに接続するには、コントローラへの到達が可能な IP アドレスとポート番号を設定します。
OpenFlow テーブル機能要求メッセージを使用すると、OpenFlow コントローラから、OpenFlow が管理するデバイスについて既存のフロー テーブルの機能を照会したり、指定した設定と一致するようにこれらのテーブルを設定したりできます。
テーブルはすべて、照合およびアクション機能のサブセットを使用して設定できます。テーブルのサイズを実行時に変更することもできます。新しいフロー テーブル設定が正常に適用されると、古いフロー テーブルのフロー エントリが通知なく削除されます。動的に設定されたフロー テーブルは、再起動後は維持されません。デバイスが起動するとデフォルトのパイプラインが起動します。
OpenFlow コントローラからの要求に基づいて新しいフロー テーブルを設定している間、既存のフローを流れる進行中のトラフィックはすべてドロップされます。
フロー エントリは、パケットの照合と処理に使用されるフロー テーブル内の要素です。これには、照合設定の優先順位、パケットを照合するための一連の照合フィールド、適用する一連の命令、パケット カウンタ、およびバイト カウンタが含まれています。また、フローごとにタイムアウト(ハード タイムアウトまたは非アクティブ タイムアウト)も関連付けられており、フローの自動削除に使用されます。
Cisco Catalyst 9000 シリーズ スイッチは最大 9 個のフロー テーブルをサポートしています。
各フローは次の情報を提供します。
優先順位:優先順位の高いフローが先に照合されます。フローの更新では、設定された優先順位に基づいて、すべてのフローに優先順位を付ける必要があります。
照合フィールド:パケットを照合する際のフロー エントリの一部。照合フィールドは、さまざまなパケット ヘッダー フィールドと照合できます。フィールドに照合情報が指定されていない場合は、ワイルドカードが使用されます。
アクション:パケットに対して作用する操作。
ここでは、フローが OpenFlow デバイスでプログラムされるようにコントローラから送信されるときに実行される操作について説明します。
デバイスには、パイプラインに配置されたフロー テーブルがあります。パイプライン機能情報は、パイプラインの構造を指定します。たとえば、テーブル/ステージの数、各ステージが実行できる機能(照合/アクション)、各テーブルのサイズなどがあります。
コントローラがフロー要求を送信すると、OpenFlow エージェントは、ハードウェアがフローを処理できるかどうかを確認します。エージェントは、スイッチの起動時に定義されるハードウェアの機能とフローとを比較します。フローが有効であれば、該当するフロー テーブルにプログラムされます。
新しいパイプラインが検証された場合(ハードウェアがパイプラインをサポートできるかどうか)、そのパイプラインは、フローをインストールできるかどうかのチェックに使用される新しい機能セットになります。
パイプラインがインスタンス化され、フローがインストールされると、パケットがスイッチから転送されます。優先順位の最も高い、一致するフロー エントリが見つかるまで、入力パケットが各フロー テーブル内のフローと照合されます。パケットの照合は、完全一致の場合もあれば(テーブルのすべてのフィールドが正確に一致する)、部分一致の場合もあります(一部または全部のフィールドに一致し、ビット マスクを持つフィールドが部分的に一致する場合がある)。設定されたアクションに基づいて、パケットが変更されるか転送される場合があります。アクションは、パイプライン内でいつでも適用できます。アクションによって、次の照合対象のフロー テーブル、パケットの出力ポートのセット、およびパケットをコントローラにルーティングするかどうかが決まる場合があります。
OpenFlow 1.3 の次のテーブル、照合、および操作がサポートされています。
テーブル |
テーブル名 |
照合フィールド |
オペレーション |
---|---|---|---|
0 |
PORT_ACL |
該当なし |
ユーザが指定したアクセスコントロールリスト(ACL)をポートに適用し、次のテーブルに送信します。 |
1 |
VLAN |
in_port vlan_vid eth_src eth_dst eth_type |
|
2 |
ACL |
該当なし |
ユーザが指定した ACL をパケットに適用し、次のテーブルに送信します。 |
3 |
ETH_SRC |
in_port vlan_vid eth_src eth_dst eth_type ip_proto icmpv6_type ipv6_nd_target arp_tpa ipv4_src |
|
4 |
IPv4_FIB |
vlan_vid eth_type ip_proto ipv4_src ipv4_dst |
|
5 |
IPv6_FIB |
vlan_vid eth_type ip_proto icmpv6_type ipv6_dst |
|
6 |
ETH_DST |
該当なし |
コントローラにトラフィックを送信します。 |
7 |
ETH_DST |
vlan_vid eth_dst |
|
8 |
FLOOD |
in_port vlan_vid eth_dst |
|
スイッチが通常モードで動作している場合は、以前の設定を削除するように write erase コマンドを設定することをお勧めします。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
特権 EXEC モードをイネーブルにします。
|
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
boot mode openflow 例:
|
OpenFlow 転送モードをイネーブルにします。 |
ステップ 4 |
exit 例:
|
グローバル コンフィギュレーション モードを終了し、特権 EXEC モードを開始します。 |
ステップ 5 |
write erase 例:
|
NVRAM 内のすべてのファイルを消去します。
|
ステップ 6 |
reload 例:
|
スイッチをリロードし、スイッチの OpenFlow フォワーディング モードを有効にします。 |
ステップ 7 |
enable 例:
|
特権 EXEC モードをイネーブルにします。
|
ステップ 8 |
show boot mode 例:
|
デバイスのフォワーディング モードに関する情報を表示します。 |
Device# show boot mode
System initialized in openflow forwarding mode
System configured to boot in openflow forwarding mode
通常モードに戻るには、no boot mode openflow コマンドを設定して、デバイスをリロードします。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
特権 EXEC モードをイネーブルにします。
|
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
feature openflow 例:
|
OpenFlow 機能をイネーブルにします。 |
ステップ 4 |
openflow 例:
|
OpenFlow 設定をイネーブルにし、OpenFlow コンフィギュレーション モードを開始します。 |
ステップ 5 |
switch 1 pipeline 1 例:
|
論理スイッチとパイプラインを設定し、OpenFlow のスイッチ コンフィギュレーション モードを開始します。 |
ステップ 6 |
controller ipv4 ip-address port port-number vrf vrf-name security {none | tls } 例:
|
コントローラに接続します。
|
ステップ 7 |
datapath-id ID 例:
|
(任意)OpenFlow の論理スイッチ ID を設定します。
|
ステップ 8 |
tls trustpoint local name remote name 例:
|
(任意)OpenFlow スイッチの Transport Layer Security(TLS)トラストポイントを設定します。 |
ステップ 9 |
end 例:
|
OpenFlow スイッチのコンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。 |
ステップ 1 |
enable 特権 EXEC モードをイネーブルにします。
例:
|
ステップ 2 |
show openflow hardware capabilities OpenFlow デバイスのハードウェア機能を表示します。 例:
|
ステップ 3 |
show openflow switch 1 controller スイッチに接続されているコントローラに関する情報を表示します。 例:
|
ステップ 4 |
show openflow switch 1 ports OpenFlow スイッチのポートに関する情報を表示します。 例:
|
ステップ 5 |
show openflow switch 1 flows list OpenFlow のエントリを表示します。 次の出力例は、テーブル 0 にインストールされているフローを示しています。match any はテーブル 1 に移動します(「match any」とは、すべてのパケットがテーブル 1 に移動するという意味です)。テーブル 1 では、宛先 MAC アドレス 00:00:01:00:00:01 が照合され、出力ポートが 36 に設定されます。 例:
|
Device# configure terminal
Device(config)# boot mode openflow
Device(config)# exit
Device# write erase
Device# reload
Device> enable
Device# show boot mode
Device# configure terminal
Device(config)# feature openflow
Device(config)# openflow
Device(config-openflow)# switch 1 pipeline 1
Device(config-openflow-switch)# controller ipv4 10.2.2.2 port 6633 vrf Mgmt-vrf security tls
Device(config-openflow-switch)# datapath-id 0x12345678
Device(config-openflow-switch)# tls trustpoint local trustpoint1 remote trustpoint1
Device(config-openflow-switch)# end
関連項目 | マニュアル タイトル |
---|---|
OpenFlow のコマンド |
|
Open Network Foundation |
|
Faucet OpenFlow コントローラ |
MIB | MIB のリンク |
---|---|
選択したプラットフォーム、Cisco IOS リリース、およびフィーチャ セットに関する MIB を探してダウンロードするには、次の URL にある Cisco MIB Locator を使用します。 |
説明 | リンク |
---|---|
シスコのサポート Web サイトでは、シスコの製品やテクノロジーに関するトラブルシューティングにお役立ていただけるように、マニュアルやツールをはじめとする豊富なオンライン リソースを提供しています。 お使いの製品のセキュリティ情報や技術情報を入手するために、Cisco Notification Service(Field Notice からアクセス)、Cisco Technical Services Newsletter、Really Simple Syndication(RSS)フィードなどの各種サービスに加入できます。 シスコのサポート Web サイトのツールにアクセスする際は、Cisco.com のユーザ ID およびパスワードが必要です。 |
次の表に、このモジュールで説明した機能に関するリリース情報を示します。この表は、ソフトウェア リリース トレインで各機能のサポートが導入されたときのソフトウェア リリースだけを示しています。その機能は、特に断りがない限り、それ以降の一連のソフトウェア リリースでもサポートされます。
プラットフォームのサポートおよびシスコ ソフトウェア イメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。Cisco.com のアカウントは必要ありません。
機能名 |
リリース |
機能情報 |
---|---|---|
OpenFlow |
Cisco IOS XE Fuji 16.9.1 |
OpenFlow は Software Defined Networking(SDN)の標準規格であり、SDN 環境での通信プロトコルを定義します。これにより、SDN コントローラは、スイッチやルータなどのネットワーク デバイスのフォワーディング プレーンと直接やり取りできるようになります。 この機能は、次のプラットフォームに実装されていました。
|
Cisco IOS XE ジブラルタル 16.10.1 |
Catalyst 9500 シリーズ ハイ パフォーマンス スイッチでのテーブル機能メッセージのサポートが導入されました。 |