OpenFlow の前提条件
デバイスを OpenFlow モードで起動する必要があります。(OpenFlow モードは、デバイスで boot mode openflow コマンドを設定すると有効になります。すべてのポートがこのモードになり、デバイスは通常の Cisco IOS XE 機能をサポートしなくなります)。
この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
このモジュールでは、デバイスで OpenFlow を有効化して設定する方法について説明します。
デバイスを OpenFlow モードで起動する必要があります。(OpenFlow モードは、デバイスで boot mode openflow コマンドを設定すると有効になります。すべてのポートがこのモードになり、デバイスは通常の Cisco IOS XE 機能をサポートしなくなります)。
デバイスで OpenFlow モードを有効にする場合は、以前の設定をすべて消去し、フラッシュファイルシステムから vlan.dat ファイルと stby-vlan.dat ファイルを削除します。
デバイスが Openflow モードの場合、デバイスが通常モードのときに機能する他のコントロール プレーン プロトコル、ボーダー ゲートウェイ プロトコル(BGP)、スパニングツリープロトコル(STP)、ポートチャネル、StackWise Virtual などを有効にしないでください。
機能に関する詳細については、次の各項を参照してください。
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 アドレスとポート番号を設定します。
フロー エントリは、パケットの照合と処理に使用されるフロー テーブル内の要素です。これには、照合設定の優先順位レベル、パケットを照合するための一連の照合フィールド、適用する一連の命令、パケット カウンタ、およびバイト カウンタが含まれています。また、フローごとにタイムアウト(ハード タイムアウトまたは非アクティブ タイムアウト)も関連付けられており、フローの自動削除に使用されます。
サポートされるフローテーブルは、最大 32 です。
各フローは次の情報を提供します。
優先順位:優先順位の高いフローが先に照合されます。フローの更新では、設定された優先順位に基づいて、すべてのフローに優先順位を付ける必要があります。
照合フィールド:パケットを照合する際のフロー エントリの一部。照合フィールドは、さまざまなパケット ヘッダー フィールドと照合できます。フィールドに照合情報が指定されていない場合は、ワイルドカードが使用されます。
アクション:パケットに対して作用する操作。
OpenFlow パイプラインは、リンクされたフローテーブルのセットで、OpenFlow スイッチでの照合、転送、およびパケット変更を提供します。ポートは、パケットがパイプラインに出入りする場所です。
パケットは入力ポートで受信され、出力ポートに転送される OpenFlow パイプラインによって処理されます。パケット入力ポートは、パイプライン全体でパケットによって所有され、パケットがスイッチに受信されたポートを表します。入力ポートは、フローの一致フィールドとしても使用できることに注意してください。
フローアクションを使用すると、パケットをパイプライン内の後続のテーブルに送信して処理したり、テーブル間で情報をやり取りしたりすることができます。一致するフローエントリに関連付けられたアクションが次のテーブルを指定しない場合、パイプライン処理は停止します。この時点で、パケットは通常変更され、転送されます。パケットはドロップすることもできます。
OpenFlow スイッチのフローテーブルには、0 から順に番号が付けられます。パイプライン処理は常に、フローテーブル 0 のフローエントリに対してパケットを照合することから始まります。最初のテーブルの一致とアクションの結果に応じて、他のフローテーブルを使用できます。その結果、後続のテーブルのフローエントリとパケットが一致する可能性があります。
Match フィールドは、パケットヘッダーと入力ポートを含む、パケットが照合されるフィールドです。Match フィールドは、ワイルドカード(任意の値に一致)にすることができ、フィールドの選択されたビットに一致するビットマスクを指定できます。
アクションは、パケットをポートまたは後続のテーブルに転送する操作、またはパケットフィールドを変更する操作です。アクションは、フローエントリに関連付けられた命令の一部、またはグループエントリに関連付けられたアクションバケットとして指定できます。グループエントリは、複数のフローで共有できるアクションの集合です。
1 つ以上のフローエントリで指定されたアクションは、グループアクションと呼ばれる基本アクションにパケットを転送できます。グループアクションの目的は、複数のフロー間で一連のアクションを共有することです。グループは 1 つ以上のバケットで構成され、バケットは一連のアクション(set、pop、または output)を持つことができます。Cisco Catalyst 9000 シリーズ スイッチは、グループタイプ all および indirect をサポートします。
次に、サポートされる match フィールドとアクションの一覧を示します。
ヘッダー フィールド |
前提条件 |
マスク可能なエントリ |
値の例 |
---|---|---|---|
イーサネットの宛先 MAC アドレス |
— |
対応 |
01:80:c2:00:00:00/ ff:ff:ff:00:00:00(マスクあり) de:f3:50:c7:e2:b2 (マスクなし) |
イーサネットの送信元 MAC アドレス |
— |
対応 |
0e:00:00:00:00:019(マスクなし) |
イーサネットの種類 |
— |
— |
ARP(0x0806)、IPv4(0x0800)、IPv6(0x86dd)など |
VLAN ID |
— |
0x13f |
|
ARP ターゲット プロトコル アドレス |
イーサネットタイプは 0x0806 に設定する必要があります |
対応 |
— |
IP プロトコル |
イーサネットタイプは 0x0800 または 0x86dd に設定する必要があります |
— |
ICMP(0x01)、TCP(0x06)、UDP(0x11)など |
IPv4 発信元アドレス |
イーサネットタイプは 0x0800 に設定する必要があります |
あり |
10.0.0.0/24(マスクあり) |
IPv4 宛先アドレス |
イーサネットタイプは 0x0800 に設定する必要があります |
あり |
10.0.0.254(マスクなし) |
IPv6 送信元アドレス |
イーサネットタイプは 0x08dd に設定する必要があります |
あり |
2001:DB8::1(マスクなし) |
IPv6 宛先アドレス |
イーサネットタイプは 0x08dd に設定する必要があります |
あり |
2001:DB8:0:ABCD::1/48(マスクあり) |
ネイバー探索ターゲット |
イーサネットタイプは 0x08dd に設定し、IP プロトコルは 0x01 に設定する必要があります |
— |
ND ターゲット |
ICMPv6 タイプ |
イーサネットタイプは 0x08dd に設定し、IP プロトコルは 0x01 に設定する必要があります |
— |
— |
UDP/TCP 送信元ポート |
イーサネットタイプは 0x0800 または 0x86dd に設定し、プロトコルは 0x06 または 0x11 に設定する必要があります |
— |
— |
UDP/TCP 宛て先ポート |
イーサネットタイプは 0x0800 または 0x86dd に設定し、プロトコルは 0x06 または 0x11 に設定する必要があります |
— |
— |
着信インターフェイス |
— |
— |
— |
フローは次の宛先にパケットを送信できます。
コントローラ
スイッチの任意のインターフェイス(着信インターフェイスを含む)。
別のルックアップ用の後続のフローテーブル(テーブル 0 の後)。
グループ。
ローカル処理用のスイッチ CPU。ローカル処理のために送信できるのは、Cisco Discovery Protocol および Link Layer Discovery Protocol(LLDP)パケットのみです。
フローによって VLAN タグを追加(push)または削除(pop)できます。パケットが IP パケットの場合は、フローによって存続可能時間(TTL)ヘッダーフィールドの値を減らすことができます。
この機能は、パケットフィールドが Set-Field アクションとして定義されるように変更します。フローは、パケットの次のヘッダーフィールドも変更できます。
ヘッダー フィールド |
スケール |
---|---|
イーサネットの宛先 MAC アドレス |
1k |
イーサネットの送信元 MAC アドレス |
256 |
VLAN ID |
4k |
Cisco IOS XE Bengaluru 17.4.1 では、次のフィールドを書き換えるサポートが追加されました。
フィールド |
スケール |
---|---|
ipv4_src |
4k |
ipv4_dst |
4k |
icmpv4_type |
256 |
tcp_src/udp_src |
4k(両方のフィールドで共有) |
tcp_dst/udp_dst |
4k(両方のフィールドで共有) |
ip_dscp |
64 |
IP_DSCP フィールドは、IPv4 タイプオブサービス(ToS)フィールドと IPv6 トラフィック クラス フィールドの一部です。
Cisco Catalyst 9300 シリーズ スイッチ |
Cisco Catalyst 9400 シリーズ スイッチ、および Cisco Catalyst 9500 シリーズ スイッチ |
Cisco Catalyst 9500 ハイパフォーマンス シリーズ スイッチ |
|
---|---|---|---|
フローの合計数 |
18K/9K |
54K/27K |
54K/27K |
ここでは、フローが OpenFlow デバイスでプログラムされるようにコントローラから送信されるときに実行される操作について説明します。
通常デバイスには、パイプラインに配置されたフローテーブルがあります。パイプライン機能情報は、パイプラインの構造を指定します。たとえば、テーブルまたはステージの数、各ステージが実行できる機能(照合またはアクション)、各テーブルのサイズなどがあります。
コントローラがフロー要求を送信すると、OpenFlow エージェントは、ハードウェアがフローを処理できるかどうかを確認します。エージェントは、スイッチの起動時に定義されるハードウェアの機能とフローとを比較します。フローが有効であれば、該当するフロー テーブルにプログラムされます。
新しいパイプラインが検証された場合(ハードウェアがパイプラインをサポートできるかどうか)、そのパイプラインは、フローをインストールできるかどうかのチェックに使用される新しい機能セットになります。
パイプラインがインスタンス化され、フローがインストールされると、パケットがスイッチから転送されます。優先順位の最も高い、一致するフローエントリが見つかるまで、入力パケットが各フローテーブル内のフローと照合されます。パケットの照合は、完全一致の場合もあれば(テーブルのすべてのフィールドが正確に一致する)、部分一致の場合もあります(一部または全部のフィールドに一致し、ビット マスクを持つフィールドが部分的に一致する場合がある)。設定されたアクションに基づいて、パケットが変更されるか転送される場合があります。アクションは、パイプライン内でいつでも適用できます。アクションによって、次の照合対象のフローテーブル、パケットの出力ポートのセット、およびパケットをコントローラにルーティングするかどうかが決まる場合があります。
OpenFlow テーブル機能要求メッセージを使用すると、OpenFlow コントローラから、OpenFlow が管理するデバイスについて既存のフロー テーブルの機能を照会したり、指定した設定と一致するようにこれらのテーブルを設定したりできます。
テーブルはすべて、照合およびアクション機能のサブセットを使用して設定できます。テーブルのサイズを実行時に変更することもできます。新しいフロー テーブル設定が正常に適用されると、古いフロー テーブルのフロー エントリが通知なく削除されます。動的に設定されたフロー テーブルは、再起動後は維持されません。デバイスが起動するとデフォルトのパイプラインが起動します。
OpenFlow コントローラからの要求に基づいて新しいフローテーブルを設定している間は、既存のフローの中を流れる進行中のトラフィックがあると、いずれもドロップされます。
ブレークアウトポートは、単一の 40G Quad Small Form-Factor Pluggable+(QSFP+)インターフェイスを 4 つの 10G SFP+ インターフェイスに分割し、単一の 100G QSFP28 インターフェイスを 4 つの 25G SFP28 インターフェイスに分割できます。ブレークアウトポートのサポートは、通常モードのブレークアウトポートをサポートするプラットフォームの OpenFlow モードで使用できます。Cisco IOS XE Bengaluru 17.5.1 では、ブレークアウトポートのサポートは、Cisco Catalyst 9500 および9500 ハイパフォーマンス シリーズ スイッチで使用できます。
ブレークアウトポートに関連付けられている OpenFlow ポート番号を表示するには、show openflow switch 1 ports コマンドを使用します。ブレークアウト インターフェイス名から OpenFlow ポート番号を計算するための特定のルールはありません。
OpenFlow は Power Over Ethernet(PoE)をサポートします。PoE を機能させるには、デバイスで Cisco Discovery Protocol または LLDP を設定し、Cisco Discovery Protocol パケットまたは LLDP パケットがデバイスによって処理(および送信)されるようにします。PoE を OpenFlow で機能させるために、OpenFlow 固有の設定は必要ありません。
OpenFlow コントローラで、output-to-local アクションを使用してフローを設定し、パケットがローカル処理のためにデバイス CPU に送信されるようにします。
PoE の詳細については、「POE の設定」の章を参照してください。
ここでは、OpenFlow のさまざまな設定作業について説明します。
スイッチが通常モードで動作している場合は、以前の設定を削除するように write erase コマンドを設定することをお勧めします。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
特権 EXEC モードを有効にします。
|
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
boot mode openflow 例:
|
OpenFlow 転送モードをイネーブルにします。 |
ステップ 4 |
exit 例:
|
グローバル コンフィギュレーション モードを終了し、特権 EXEC モードを開始します。 |
ステップ 5 |
write erase 例:
|
NVRAM 内のすべてのファイルを消去します。
|
ステップ 6 |
例:
|
|
ステップ 7 |
reload 例:
|
スイッチをリロードし、スイッチの OpenFlow フォワーディング モードを有効にします。 |
ステップ 8 |
enable 例:
|
特権 EXEC モードを有効にします。
|
ステップ 9 |
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 モードに戻ります。 |
OpenFlow モードでは、レイヤ 2 またはレイヤ 3 インターフェイスを設定できます。レイヤ 3 インターフェイスを使用する場合は、インターフェイス コンフィギュレーション モードで no switchport コマンドを設定します。レイヤ 2 インターフェイスを使用する場合は、次の作業を実行します。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
特権 EXEC モードをイネーブルにします。
|
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
feature openflow 例:
|
OpenFlow 機能をイネーブルにします。 |
ステップ 4 |
interface type number 例:
|
インターフェイスを設定し、インターフェイス コンフィギュレーション モードを開始します。 |
ステップ 5 |
switchport mode trunk 例:
|
レイヤ 2 スイッチドインターフェイスのトランキングモードをトランクに設定します。 |
ステップ 6 |
switchport nonnegotiate 例:
|
装置がこのインターフェイスのネゴシエーション プロトコルに関係しないように指定します。 |
ステップ 7 |
no keepalive 例:
|
キープアライブ パケットをディセーブルにします。 |
ステップ 8 |
spanning-tree bpdufilter enable 例:
|
インターフェイスでブリッジ プロトコル データ ユニット(BPDU)フィルタリングをイネーブルにします。 |
ステップ 9 |
end 例:
|
インターフェイス コンフィギュレーション モードを終了し、特権 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 に設定されます。 例:
|
次に、OpenFlow を有効にする例を示します。
Device> enable
Device# configure terminal
Device(config)# boot mode openflow
Device(config)# exit
Device# write erase
Device# delete flash:vlan.dat
Device# reload
Device> enable
Device# show boot mode
次に、OpenFlow を設定する例を示します。
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 コントローラ |
|
PoE |
|
説明 | リンク |
---|---|
シスコのサポート 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 Gibraltar 16.10.1 |
Catalyst 9500 シリーズ ハイ パフォーマンス スイッチでのテーブル機能メッセージのサポートが実装されました。 |
|
OpenFlow Power over Ethernet |
Cisco IOS XE Gibraltar 16.12.1 |
PoE は OpenFlow ポートでサポートされます。 この機能は、次のプラットフォームに実装されていました。
|
OpenFlow ブレークアウトポートのサポート |
Cisco IOS XE Bengaluru 17.5.1 |
ブレークアウトケーブルは、単一の 40G Quad Small Form-Factor Pluggable+(QSFP+)インターフェイスを 4 つの 10G SFP+ インターフェイスに分割し、単一の 100G QSFP28 インターフェイスを 4 つの 25G SFP28 インターフェイスに分割できます。 この機能が次のプラットフォームで追加されました。
|