Cisco Nexus 5600 シリーズ NX-OS システム管理設定ガイド リリース 7.x
OpenFlow の設定
OpenFlow の設定

OpenFlow の設定

この章の内容は、次のとおりです。

OpenFlow について

OpenFlow は Open Networking Foundation(ONF)の仕様で、機能を学習し、フロー コントロールのエントリおよび要求の統計情報を追加、削除するための、フローベースの転送インフラストラクチャ(L2-L4 イーサネット スイッチ モデル)および標準化されたアプリケーションのプログラム インターフェイス(プロトコル定義)を定義します。 OpenFlow では、セキュアなチャネルを介して、スイッチのフォワーディング機能を方向付けすることができます。

Cisco ONE Platform Kit を使用すると、シスコのネットワーキング インフラストラクチャ上にある、または隣接しているシスコの内部および外部のサード パーティ アプリケーションをホストすることができます。また、管理された一貫性のある方法で、ネットワーキング サービスへプログラムでアクセスすることができます。 シスコのルータまたはスイッチ上でアプリケーションをホストした場合、アプリケーションは仮想マシンまたはコンテナ内で実行されます。

OpenFlow の制約事項

Cisco Nexus 5500 および Cisco Nexus 6000 スイッチは、レイヤ 2 の宛先 MAC アドレスを書き換えるための OpenFlow アクションをサポートしていません。 したがって、Topology Independent Forwarding や Latency Optimized Forwarding などの XNC コントローラの使用例は、Cisco Nexus 5500 および Cisco Nexus 6000 スイッチでは正しく機能しないことがあります。

サポートされるインターフェイス タイプ

次に、サポートされるインターフェイス タイプの一覧を示します。

  • 通常のレイヤ 2 の物理ポート(switchport)

  • レイヤ 2 ポート チャネル

サポートされないインターフェイス タイプ

次に、サポートされないインターフェイス タイプの一覧を示します。

  • レイヤ 3 ポート(スイッチポートなし)

  • ファブリック エクステンダ ポート

  • 仮想ポート チャネル(VPC)ポート

  • レイヤ 3 ポート チャネル

サポートされるインターフェイス モード

次に、サポートされるインターフェイス モードの一覧を示します。

  • アクセス ポート

  • トランク ポート

サポートされる match フィールド

次に、サポートされる match フィールドの一覧を示します。

  • レイヤ 2 ヘッダー

    • Ethertype

    • VLAN ID

    • VLAN 優先度(PCP)

    • 送信元 MAC アドレス

    • 宛先 MAC アドレス

  • レイヤ 3 ヘッダー

    • 送信元 IP アドレス

    • 宛先 IP アドレス

    • レイヤ 4 プロトコル

    • Diffserv コード ポイント(DSCP)

  • レイヤ 4 ヘッダー

    • 送信元ポート

    • 宛先ポート

  • 受信側インターフェイス

サポートされるアクション

次に、サポートされるアクションの一覧を示します。

  • パケットを 1 つの出力ポートにリダイレクトする

  • パケットを複数の出力ポートにリダイレクトする

  • 出力で VLAN タグ(vlan rewrite)を設定する

  • 出力で VLAN タグを削除する

  • データパス パケットを OpenFlow コントローラへ転換する

  • パケットをドロップする

フロー数の拡張

  • Cisco Nexus デバイスは、合計で最大 65535 のフローをサポートします。 デバイスは、最大 3500 の ACL テーブルのフローと 62K の MAC テーブル フローの組み合わせをサポートします。

  • Cisco Nexus デバイスは、アクションがコントローラへのパントの場合に、最大 64 のフローをサポートします。

パイプラインのサポート

OpenFlow ポリシーは、ACL テーブルと MAC テーブルに適用できます。 OpenFlow は「パイプライン」の概念を利用してテーブルを関連付けます。 Cisco Nexus デバイスは、201 と 202 の 2 つのパイプラインをサポートしています。 openflow エージェントの論理スイッチ設定で pipeline id コマンドを入力して、201 と 202 のパイプラインを切り替えることができます。

  • パイプライン 201

    • すべてのフローが ACL テーブルに追加されます。 例:ACL TCAM。

    • リダイレクトまたはドロップとしてのアクションによる ACL テーブル フローは、ACL-TCAM の IFACL リージョンにインストールされます。

    • コントローラへのパントアクションによる ACL テーブル フローは、ACL-TCAM の SIP リージョンにインストールされます。

  • パイプライン 202

    • フローは ACL テーブル(ACL TCAM)と MAC テーブル(STM テーブル)の両方に追加できます。

    • 一致基準が L2-dest-mac および VLAN のみのフローは、MAC テーブルにインストールされます。 残りのフローは ACL テーブルにインストールされます。

    • MAC テーブルでサポートされるアクションは、ポートへのリダクレクト、およびドロップです。

    • MAC テーブルは、ACL テーブルより高位のスケール番号をサポートします。

OpenFlow の前提条件

OpenFlow エージェントでは、トポロジ検出とフローのインストールをサポートするように、OpenFlow 特定のコマンドで Cisco Nexus デバイスを設定する必要があります。 Cisco Nexus デバイスは、startup-config ファイルのデフォルト コマンドが起動時に実行されるように、ハイブリッド モードで動作します。 これにより、望ましくない影響を受けることがあるため、変更する必要があります。


(注)  


これらの必要なコマンドを変更または無効にした場合、予期しないシステム動作が発生することがあります。

VLAN の作成

OpenFlow コントローラのスイッチで必要な VLAN を作成するために、次のコマンドを使用します。 このコマンドにより、VLAN データベースに OpenFlow 特定の VLAN が作成されます。

vlan x[-y]

ハイブリッドな Ships-In-Night モードで動作している場合でも、OpenFlow 制御のポートと通常のポート間では VLAN を分離することをお勧めします。 トラフィックのリークを防ぐために、OpenFlow ポートと非 OpenFlow ポート間で VLAN を共有しないように注意する必要があります。

インターフェイス レベルの設定

他のスイッチに接続しているインターフェイスが、スパンされたトラフィックを受信するようにするために、インターフェイスはアナライザに接続され、OpenFlow をサポートするように設定されます。 interface ethernet コマンドは、パーサーをインターフェイス サブモードに変更します。 インターフェイス上で OpenFlow のサポートを可能にする mode openflow コマンドを入力する前に、次のコマンドが必要です。

  • switchport mode trunk

  • switchport trunk allowed vlan x-y

Cisco Nexus デバイスで strip-vlan 機能を動作させるには、ネイティブ VLAN でトランク ポートを設定する必要があります。

Cisco One コントローラは、OpenFlow 対応ポートのトポロジ検出を実行することができます。 トランク ポートでのトポロジ検出を可能にするには、トランク ポート上でネイティブ VLAN を設定する必要があります。

switchport trunk native vlan z

インターフェイスが OpenFlow 論理スイッチに追加されると、インターフェイスには次のコマンドが暗黙的に適用されます。

  • mode openflow

  • spanning-tree bpdufilter enable

  • no lldp transmit

OpenFlowに対するテンプレート ベースの TCAM カービング

Cisco Nexus デバイスは、テンプレート ベース TCAM カービングをサポートしています。 デバイスで OpenFlow を設定するには、テンプレート ベースの TCAM カービングのコマンドを使用して、TCAM カービングのリージョンに対していくつかの変更を行う必要があります。

OpenFlow ポリシーで高位のスケール番号をサポートするには、TCAM の IFACL リージョンを適宜に再カービングする必要があります。 最大フロー スケールに TCAM カービングを適用するには、次のコマンドを入力します。

switch(config)# hardware profile tcam resource template openflow 
switch(config-tcam-templ)# vacl 64
switch(config-tcam-templ)# ifacl 3520
switch(config-tcam-templ)# qos 128
switch(config-tcam-templ)# rbacl 64
switch(config-tcam-templ)# span 64
switch(config)# hardware profile tcam resource service-template openflow

TCAM カービングを検証するには、次のコマンドを入力します。show hardware profile tcam resource template tmplt-name


(注)  


TCAM カービングの設定では、Cisco Nexus デバイスの再ロードが必要です。

OpenFlow 仮想サービスのセットアップ

仮想サービス マネージャを使用して、OpenFlow エージェント アプリケーションをコンテナ上で仮想サービスとして実行することができます。 OpenFlow の仮想サービスをセットアップするには、次の作業を行います。

  • アプリケーションの OVA パッケージをシステムにダウンロードします。

  • 指定した仮想サービスの OVA パッケージをインストールします。 次にその例を示します。

    switch#virtual-service install name openflow-agent package file-url
  • 仮想サービスを設定し、アクティブにします。 次にその例を示します。

    switch(config)#virtual-service openflow-agent
    switch(config-virt-serv)#activate
仮想サービスにインストールされているソフトウェア パッケージをアップグレードするには、virtual-service upgrade name application-name package file-url コマンドを使用します。

(注)  


アクティブな仮想サービスはアップグレードできません。
仮想サービスにインストールされているソフトウェア パッケージを削除するには、virtual-service uninstall name application-name コマンドを使用します。

(注)  


アクティブな仮想サービスは削除できません。

OpenFlow のイネーブル化

OpenFlow の機能をイネーブルにするには、hardware profile openflow コマンドを入力し、OpenFlow エージェントに必要なハードウェア リソースを割り当てます。 スイッチのリロード後に hardware profile コマンドを使用して、OpenFlow 機能に対して ACL Feature Manager(AFM)および Forwarding Manager(FWM)モジュールを設定します。

手順
     コマンドまたはアクション目的
    ステップ 1switch# configure terminal  

    グローバル コンフィギュレーション モードを開始します。

     
    ステップ 2 switch(config)# hardware profile openflow  

    OpenFlow エージェントに必要なハードウェア リソースを割り当てます。

     
    ステップ 3 switch(config)# copy running-config startup-config 

    実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーして、リブートおよびリスタート後も変更が永続的に保存されるようにします。

     
    ステップ 4switch#reload 

    スイッチにオペレーティング システムをリロードします。

     

    OpenFlow スイッチの設定

    設定を有効にするには、スイッチで OpenFlow をイネーブルにする必要があります。

    手順
       コマンドまたはアクション目的
      ステップ 1switch# configure terminal  

      グローバル コンフィギュレーション モードを開始します。

       
      ステップ 2 OpenFlow


      例:
      switch(config)# openflow
       

      OpenFlow コンフィギュレーション モードを開始します。

       
      ステップ 3 switch switch-number


      例:
      switch(config-ofa)# switch 1
       

      OpenFlow の論理スイッチを指定し、OpenFlow のスイッチ コンフィギュレーション モードを開始します。

       
      ステップ 4 pipeline {201|202}


      例:
      switch(config-ofa-switch)# pipeline 201
       

      パイプライン モードを指定します。

      OpenFlow ポリシーは、ACL テーブルと MAC テーブルに適用できます。 Cisco Nexus デバイスは、201 と 202 の 2 つのパイプラインをサポートします。 このコマンドにより、サポートされているパイプライン モードを切り替えることができます。

       
      ステップ 5 controller ipv4 ipv4-address port port-numbervrf vrf-name security {none | tls}


      例:
      switch(config-ofa-switch)# controller ipv4 192.0.2.10 port 6653 vrf mnagement security none
       

      指定された VRF を介してコントローラとの接続を確立します。

      TLS をディセーブルまたはイネーブルにできます。

       
      ステップ 6 of-port interface interface-type slot / port


      例:
      switch(config-ofa-switch)# interface ethernet 2/5
       

      OpenFlow の論理スイッチへインターフェイスを追加します。

       
      ステップ 7default-miss cascade {drop | controller | normal}


      例:
      switch(config-ofa-switch)# default-miss cascade normal
       
      スイッチの hybrid-normal モードをイネーブルにします。 OpenFlow エージェントを hybrid-normal モードから punt-to-controller モードに変更するには、default-miss cascade controller コマンドを使用します。 OpenFlow エージェントを hybrid-normal モードから default-drop モードに変更するには、default-miss cascade drop コマンドを使用します。  
      ステップ 8 max-backoff back-off-time


      例:
      switch(config-ofa-switch)# max-backoff 7
       

      OpenFlow コントローラの最大バックオフ タイマーを設定します。 デフォルト値は 8 秒です。

       
      ステップ 9 probe-internal interval-time


      例:
      switch(config-ofa-switch)# probe-interval 6
       

      OpenFlow コントローラ プローブのインターバル タイマーを設定します。 デフォルト値は 5 秒です。

       
      ステップ 10 exit


      例:
      switch(config-ofa-switch)# exit
       

      OpenFlow スイッチ コンフィギュレーション モードを終了します。

       
      ステップ 11 exit


      例:
      switch(config-ofa)# exit
       

      OpenFlow コンフィギュレーション モードを終了します。

       

      OpenFlow の確認

      設定を確認するには、次のいずれかのコマンドを使用します。

      コマンド

      目的

      show running-config | section openflow

      OpenFlow 実行コンフィギュレーション情報を表示します。

      show running-config interface ethernet slot/port

      特定のイーサネット インターフェイスの実行コンフィギュレーションを表示します。

      show openflow openflow-agent switch number controllers

      コントローラへの OpenFlow エージェントの接続情報を表示します。

      show openflow openflow-agent switch number flows

      OpenFlow エージェント フローに関する情報を表示します。

      show openflow openflow-agent switch number ports

      OpenFlow エージェント ポートのステータスに関する情報を表示します。