JP5842933B2 - ネットワークシステム、及び経路情報同期方法 - Google Patents

ネットワークシステム、及び経路情報同期方法 Download PDF

Info

Publication number
JP5842933B2
JP5842933B2 JP2013554296A JP2013554296A JP5842933B2 JP 5842933 B2 JP5842933 B2 JP 5842933B2 JP 2013554296 A JP2013554296 A JP 2013554296A JP 2013554296 A JP2013554296 A JP 2013554296A JP 5842933 B2 JP5842933 B2 JP 5842933B2
Authority
JP
Japan
Prior art keywords
entry
flow
switch
controller
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013554296A
Other languages
English (en)
Other versions
JPWO2013108761A1 (ja
Inventor
英輝 小川
英輝 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2013554296A priority Critical patent/JP5842933B2/ja
Publication of JPWO2013108761A1 publication Critical patent/JPWO2013108761A1/ja
Application granted granted Critical
Publication of JP5842933B2 publication Critical patent/JP5842933B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/34Signalling channels for network management communication
    • H04L41/342Signalling channels for network management communication between virtual entities, e.g. orchestrators, SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0866Checking the configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/021Ensuring consistency of routing table updates, e.g. by using epoch numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ネットワークシステムに関し、特に経路情報のエントリを同期するネットワークシステムに関する。
[CU分離型ネットワークシステムの説明]
ネットワークシステムの制御方式の1つとして、外部の制御装置(コントロールプレーン)からノード装置(ユーザプレーン)を制御するCU(C:コントロールプレーン/U:ユーザプレーン)分離型ネットワークシステムが提案されている。
CU分離型ネットワークシステムの一例として、コントローラからスイッチを制御してネットワークシステムの経路制御を行うオープンフロー(OpenFlow)技術を利用したオープンフローネットワークシステムが挙げられる。オープンフロー技術の詳細については、非特許文献1に記載されている。なお、オープンフローネットワークシステムは一例に過ぎない。
[オープンフローネットワークシステムの説明]
オープンフローネットワークシステムでは、従来のスイッチの機構が、経路の決定処理を外部からプログラミングすることで変更可能としたモジュールであるオープンフローコントローラ(OpenFlow Controller:OFC)と、パケット転送処理のみを行うモジュールであるオープンフロースイッチ(OpenFlow Switch:OFS)とに分離されている。
以下、記載の簡略化のため、オープンフローコントローラを「コントローラ(OFC)」と表記し、オープンフロースイッチを「スイッチ(OFS)」と表記する。
オープンフローネットワークシステムでは、コントローラ(OFC)が、スイッチ(OFS)のフローテーブルを操作することによりスイッチ(OFS)の挙動を制御する。
コントローラ(OFC)とスイッチ(OFS)の間は、コントローラ(OFC)がオープンフロープロトコルに準拠した制御メッセージを用いてスイッチ(OFS)を制御するためのセキュアチャネル(Secure Channel)により接続されている。
オープンフローネットワークシステムにおけるスイッチ(OFS)とは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケット(packet)の受信から出力側エッジスイッチでの送信までのパケットの一連の流れをフロー(Flow)と呼ぶ。
パケットは、フレーム(frame)と読み替えても良い。パケットとフレームの違いは、プロトコルが扱うデータの単位(PDU:Protocol Data Unit)の違いに過ぎない。パケットは、「TCP/IP」(Transmission Control Protocol/Internet Protocol)のPDUである。一方、フレームは、「Ethernet(登録商標)」のPDUである。
フローテーブルとは、所定の条件(ルール)に適合(マッチ)するパケット(通信データ)に対して行うべき所定の動作(アクション)を定義したフローエントリ(Flow entry)が登録されたテーブルである。
フローエントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる送信先アドレス(Destination Address)、送信元アドレス(Source Address)、送信先ポート(Destination Port)、送信元ポート(Source Port)のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、MACアドレス(Media Access Control Address)やIPアドレス(Internet Protocol Address)を含むものとする。また、上記に加えて、入口ポート(Ingress Port)の情報も、フローエントリのルールとして使用可能である。また、フローエントリのルールとして、フローを示すパケットのヘッダ領域の値の一部(又は全部)を、正規表現やワイルドカード「*」等で表現したものを設定することもできる。
フローエントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、フローエントリのアクションに出力ポートの識別情報(出力ポート番号等)が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、フローエントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。
オープンフローネットワークシステムにおけるスイッチ(OFS)は、フローエントリのルールに適合するパケット群(パケット系列)に対して、フローエントリのアクションを実行する。
現在のところ、オープンフロー技術は、研究段階から実用段階への過渡期にある。実用化に向けて、データセンター等の大規模ネットワークにおける運用試験等が実施されている。この中で、スケーラビリティに関わる問題が顕在化しており、フローエントリの同期に関する問題もその1つである。例えば、全スイッチ・全フローエントリの同期を行えば、障害発生時やクラスタスイッチ時に発生するサービス縮退時間が非常に長くなるという問題がある。そのため、このような問題を改善するための技術が望まれている。
"OpenFlow Switch Specification Version 1.1.0 Implemented",[online],February 28, 2011,インターネット(URL:http://www.openflowswitch.org/documents/openflow−spec−v1.1.0.pdf)
本発明の目的は、オープンフローネットワークシステム等のCU分離型ネットワークシステムにおいて、フローテーブルを構成するフローエントリ一つ一つの同期状態を管理し、フローエントリ毎に同期(フローテーブルの部分的同期)を行うネットワークシステムを提供することである。
本発明に係るネットワークシステムは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチと、スイッチに対して制御メッセージを送信し、フローエントリの設定を行うコントローラとを含む。コントローラは、スイッチに設定したフローエントリと同一のフローエントリを保持し、フローエントリ単位で同期状態を管理し、フローエントリが非同期の場合、スイッチとの間で、特定のフローエントリを優先して同期する。
本発明に係る経路情報同期方法では、スイッチは、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行う。また、コントローラは、スイッチに対して制御メッセージを送信し、フローエントリの設定を行う。このとき、コントローラは、スイッチに設定したフローエントリと同一のフローエントリを保持し、フローエントリ単位で同期状態を管理し、フローエントリが非同期の場合、スイッチとの間で、特定のフローエントリを優先して同期する。
本発明に係るプログラムは、上記の経路情報同期方法におけるコントローラ又はスイッチの処理を、計算機等の電子機器に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
これにより、オープンフローネットワークシステム等のCU分離型ネットワークシステムにおいて、障害発生時やクラスタスイッチ時に発生するサービス縮退時間を減少させる。
基本的なオープンフローネットワークシステムの構成例を示す図である。 フローエントリの仕様(形式)について説明するための図である。 フローエントリ追加登録時の手順について説明するための図である。 フローエントリ削除時の手順について説明するための図である。 コントローラ(OFC)のクラスタスイッチ処理について説明するための図である。 「audit処理」(同期処理)の実装例について説明するための図である。 本発明に係るフローテーブルの仕様(形式)について説明するための図である。 本発明に係るネットワークシステムの構成例を示す図である。 セキュアチャネル監視部の動作を示すフローチャートである。 部分同期処理部の動作を示すフローチャートである。 パケット処理部の動作を示すフローチャートである。 経路計算部の動作を示すフローチャートである。 パケット到達時の実際の動作について説明するための図である。 他のスイッチ(OFS)のフローエントリを収集する動作の詳細について説明するための図である。 サービス縮退時間を短縮できる理由について説明するための図である。
<前提>
本発明は、CU分離型ネットワークシステムを対象としている。ここでは、CU分離型ネットワークシステムの1つであるオープンフローネットワークシステムを例に説明する。但し、実際には、オープンフローネットワークシステムに限定されない。
[オープンフローネットワークシステムの構成]
図1を参照して、基本的なオープンフローネットワークシステムの構成例について説明する。
基本的なオープンフローネットワークシステムは、コントローラ(OFC)10と、スイッチ(OFS)20と、ホスト30を含む。
コントローラ(OFC)10、スイッチ(OFS)20、及びホスト30は、それぞれ複数台でも良い。例えば、複数のスイッチ(OFS)20の各々は、スイッチ(OFS)20−1、スイッチ(OFS)20−2、・・・、のように表記する。
コントローラ(OFC)10は、スイッチ(OFS)を管理する。
スイッチ(OFS)20は、ネットワークを構成する。
ホスト30は、スイッチ(OFS)20に接続され、スイッチ(OFS)20を介してネットワーク通信を行う。
コントローラ(OFC)10とスイッチ(OFS)20の間は、SSL(SecureSocketLayer)により保護された通信路である「セキュアチャネル」で接続されている。コントローラ(OFC)10とスイッチ(OFS)20は、セキュアチャネルを経由し、オープンフロープロトコルに則った通信を行う。
コントローラ(OFC)10は、スイッチ(OFS)20に到着するパケットをスイッチ(OFS)20がどのように処理するかについて、フローエントリを操作することにより制御する。
コントローラ(OFC)10は、スイッチ(OFS)20に、多数のフローエントリを登録することになる。
フローエントリの集合は、「フローテーブル」と呼ばれる表形式で管理されている。
各スイッチ(OFS)20は、フローテーブルを少なくとも1つ保持している。コントローラ(OFC)10は、配下の各スイッチ(OFS)20のフローテーブルと同じ内容のフローテーブルを全て保持している。すなわち、コントローラ(OFC)10は、各スイッチ(OFS)20のフローテーブルのマスターテーブルを保持している。
なお、「フローテーブルを保持している」とは、そのフローテーブルを管理していることを意味する。そのフローテーブルをネットワーク経由等で管理可能であれば、実際には、そのフローテーブルが自身の内部に存在していなくても良い。すなわち、フローテーブルの保管場所は、そのフローテーブルを管理する装置の内部に限らず、外部でも良い。例えば、コントローラ(OFC)10とスイッチ(OFS)20が、ネットワーク上にある同一のフローテーブルを共有することも考えられる。
フローエントリの仕様(形式)は、オープンフロー規約により定められている。
[フローエントリの仕様(形式)]
図2を参照して、フローエントリの仕様(形式)について説明する。
フローエントリは、ルールの欄と、統計情報の欄と、アクションの欄を含む。
ルールの欄には、フローエントリのルールとして、OSI参照モデルのL1(レイヤ1:物理層)からL4(レイヤ4:トランスポート層)までの情報(属性値)を任意に組み合わせて指定することができる。なお、ルールの欄には、ブロードキャストアドレスやマルチキャストアドレスを指定することができる。また、「*」や「?」といったワイルドカードを使用することもできる。
統計情報の欄には、「当該エントリにマッチしたパケットの総数」や、「最後にマッチしてから経過した時間」等の統計情報が格納されている。
アクションの欄には、フローエントリのアクションとして、「パケットをスイッチAに転送する」、「パケットをホストBに転送する」、或いは「パケットを廃棄する」等の処理の内容を指定することができる。
スイッチ(OFS)20は、ルールの欄に記述された内容にマッチするパケットを、アクションの欄に記述された内容に従って処理する。
コントローラ(OFC)10は、このようなフローエントリをスイッチ(OFS)20に登録することで、マッチするパケットに対する処理を制御できるのである。
単純な例を示せば、コントローラ(OFC)10は、「10.34.76.131のアドレスを持つホストから、10.34.81.100のアドレスを持つホストのポート22宛に送出されたパケットについては、廃棄する」といった内容を、フローエントリとしてスイッチ(OFS)20に登録することができる。この場合、フローエントリのルールは、「送信元IPアドレス=10.34.76.131」、「送信先IPアドレス=10.34.81.100」、及び「送信先ポート番号=22」となる。また、フローエントリのアクションは、「廃棄」となる。
スイッチ(OFS)20は、パケットが到着した時、当該パケットのヘッダ情報(送信元情報や送信先情報等)を読み取り、自身のフローテーブルの中から、マッチするルールを持つフローエントリ(以下、マッチするフローエントリと呼ぶ)を検索する。
検索の結果、マッチするフローエントリが見つかった場合、スイッチ(OFS)20は、そのフローエントリのアクションに記載されている通りにパケットを処理する。なお、複数のフローエントリが見つかった場合、見つかったフローエントリのうち、最も優先度が高いフローエントリに従い、パケットを処理する。
また、検索の結果、マッチするフローエントリが見つからなかった場合、スイッチ(OFS)20は、当該パケットを「ファーストパケット」と判断し、当該パケットのコピー(複製)をコントローラ(OFC)10に転送することで、当該パケットをどのように処理すべきかについてコントローラ(OFC)10に問い合わせる。
なお、「ファーストパケット」とは、初めてスイッチ(OFS)20に到着したパケット(新規パケット)であり、既存のフローエントリに適合しないパケット(未登録パケット)のことである。
コントローラ(OFC)10は、スイッチ(OFS)20から問い合わせを受けた場合、経路計算を行い、問い合わせを受けたパケットを送信先まで転送するための最適な経路を導出する。
また、コントローラ(OFC)10は、スイッチ(OFS)20のフローテーブルに、導出した経路を構成するためのフローエントリを新規に追加登録する。このとき、コントローラ(OFC)10は、自身のフローテーブルにも同じフローエントリを新規に追加登録する。
スイッチ(OFS)20は、コントローラ(OFC)10から新規に追加登録されたフローエントリに従って、当該パケット及び以降の同一フローのパケットを処理する。
オープンフローネットワークにおいて、送信元ホストから送信先ホストに到達するための経路は、公知となっている「ダイクストラのアルゴリズム」(ダイクストラ法に基づく経路探索アルゴリズム)により求めることができる。
このとき、経路計算の入力として、以下の(1)、(2)に示す2つの情報が与えられる必要がある。
(1)トポロジー情報
トポロジー情報は、当該ネットワークを構成するホストやスイッチ等の接続情報であり、ネットワーク管理者等により事前に登録されている情報である。
(2)フローエントリ情報
フローエントリ情報は、各スイッチに既に登録されているフローエントリ全般の情報である。
フローエントリ情報が入力として与えられないまま経路計算した場合や、入力として与えられた情報が誤っていた場合、経路計算の結果として導出した経路に基づくフローエントリと、既存のフローエントリとの組み合わせにより、ループ経路が形成される危険性がある。
従って、コントローラ(OFC)10は、配下のスイッチ(OFS)20のフローテーブルと同一の内容のフローテーブルを保持し、経路計算を実行する毎に必要な情報を参照できるようにしている。
図1の例では、コントローラ(OFC)10は、自身のフローテーブルを保持しているが、それぞれスイッチ(OFS)20のフローテーブルと同一の内容のものである。
コントローラ(OFC)10が常に正しい計算を行うことができるためには、自身のフローテーブルの内容と、スイッチ(OFS)20のフローテーブルの内容が、常に同じ内容になっている必要がある。
従って、いずれかのフローテーブルが更新される場合には、両方の同期状態が保たれるように更新する必要がある。
フローテーブルの更新の例として、フローエントリの「追加登録」と「削除」が挙げられる。
[フローエントリ追加登録時の手順]
図3を参照して、フローエントリ追加登録時の手順について説明する。
フローエントリが追加登録されるのは、スイッチ(OFS)20がファーストパケットを受け取り、コントローラ(OFC)10に経路を問い合わせ、コントローラ(OFC)10がスイッチ(OFS)20に新規フローエントリを追加登録する場合である。
(1)ステップS11
例えば、ホストAからホストB宛のパケットがスイッチ(OFS)20に到着する。スイッチ(OFS)20は、当該パケットを受信する。
(2)ステップS12
スイッチ(OFS)20は、自身のフローテーブルから、当該パケットにマッチするフローエントリを検索する。当該パケットがファーストパケットである場合、マッチするフローエントリが見つからないため、コントローラ(OFC)10に当該パケットの転送経路を問い合わせる。
(3)ステップS13
コントローラ(OFC)10は、スイッチ(OFS)20からの問い合わせに応じて、当該パケットの転送経路を計算する。
(4)ステップS14
コントローラ(OFC)10は、計算結果として導き出したフローエントリを、自身のフローテーブルに追加登録する。
(5)ステップS15
コントローラ(OFC)10は、スイッチ(OFS)20に対して、フローエントリの追加登録を指示する制御メッセージを送信する。
(6)ステップS16
スイッチ(OFS)20は、フローエントリの追加登録を指示する制御メッセージに基づいて、自身のフローテーブルにフローエントリを新規に追加登録する。
(7)ステップS17
スイッチ(OFS)20は、新規に追加登録されたフローエントリ内に記載された内容に従い、当該パケットの転送処理を行う。
以上から、コントローラ(OFC)10側で保持するフローテーブルと、スイッチ(OFS)20側で保持するフローテーブルとに対して、同期して追加登録処理が行われることがわかる。
しかし、(4)ステップS14が完了してから(6)ステップS16が完了するまでの間に、セキュアチャネルが切断される等の障害が発生した場合には、同期が不可能となるため、コントローラ(OFC)10とスイッチ(OFS)20の両者のフローテーブルに差異が生じる。
[フローエントリ削除時の手順]
図4を参照して、フローエントリ削除時の手順について説明する。
上記の「フローエントリ追加登録時の手順」に示したように、スイッチ(OFS)20にファーストパケットが到着するたびに、フローエントリが新規に追加登録される。
しかし、フローテーブルの格納領域は有限であることから、際限なく追加登録することはできない。
従って、ある一定時間以上マッチしなかったフローエントリを削除する処理を行うことで、フローエントリ数を一定数以下に収めるようにする。
(1)ステップS21
スイッチ(OFS)20は、自身のフローテーブルから、一定時間以上マッチしなかったフローエントリを検索し、そのフローエントリを削除する。
(2)ステップS22
スイッチ(OFS)20は、そのフローエントリを削除したという旨の通知を、コントローラ(OFC)10に送信する。
(3)ステップS23
コントローラ(OFC)10は、スイッチ(OFS)20からの通知に基づいて、自身のフローテーブルから、そのフローエントリに対応するフローエントリを削除する。
以上から、コントローラ(OFC)10側で保持するフローテーブルと、スイッチ(OFS)20側で保持するフローテーブルとに対して、同期して削除処理が行われることがわかる。
しかし、(1)ステップS21が完了してから(3)ステップS23が完了するまでの間に、セキュアチャネルが切断される等の障害が発生した場合、両者のフローテーブルに差異が生じる。
なお、(2)ステップS22では、非同期のメッセージが送信されることが、オープンフローの規約により定められている。
以上説明したように、コントローラ(OFC)10及びスイッチ(OFS)20のそれぞれで保持されるフローテーブルは、基本的には同期状態を保ちながら更新されるが、セキュアチャネルが切断された場合には差異が生じ得ることがわかる。
従って、正確な経路計算を行うためには、生じた差異を修正する処理が必要となる。生じた差異を修正する処理を、ここでは「audit処理」(同期処理)と呼ぶ。
「audit処理」では、コントローラ(OFC)10側で保持するフローテーブルを正確な情報(真の情報)とし、スイッチ(OFS)20側で保持するフローテーブルに生じた差異を修正する(同期する)。
「audit処理」には、以下の(1)〜(3)のような困難さが伴う。
(1)「audit処理」自体が負荷の高い処理であること。
(2)「audit処理」が完了するまで、正確な経路計算を行うことができないこと。
(3)「audit処理」の完了/未完了に関わらず、スイッチ(OFS)20にパケットが到着し続けるため、差分の修正前にファーストパケットが到着する可能性があること。
「audit処理」では、管理するスイッチ(OFS)20の台数分のフローテーブルについて差分を修正する必要がある。
そもそも、各スイッチ(OFS)20のフローテーブルに含まれるフローエントリの数が膨大であり、差分を照合・修正する処理には相応の時間を要する。
従って、大規模ネットワークになればなるほど、「audit処理」の処理量は大きくなる。
また、一般的に、一対のフローテーブルにおいて発生する差異の量は、セキュアチャネルが切断されている時間間隔が長ければ長いほど大きくなる。
以上の理由より、大規模ネットワークにおいて、コントローラ(OFC)10がクラスタスイッチ処理を行う場合等は、高負荷な「audit処理」が必要となる典型的な例となる。
なお、クラスタスイッチ処理とは、クラスタシステム(Cluster system)やフォールトトレラントシステム(Fault tolerant system)等のように、運用系(Active)と待機系(Standby)のノードにより構成されたシステムで、ノードの役割を切り替える処理である。
[コントローラ(OFC)のクラスタスイッチ処理]
図5を参照して、コントローラ(OFC)10がクラスタスイッチ処理を行う場合について説明する。
図5に示すように、コントローラ(OFC)10を運用系(Active)から待機系(Standby)へ切り替える場合、高負荷な「audit処理」が必要となる。
このような場合に、上記の(1)〜(3)のような「audit処理」の困難さが、実際の問題現象として顕在化することがある。
従来の「audit処理」は、基本的にフローテーブル単位で同期処理を行うものであり、フローエントリ単位で同期処理を行う仕組みや手法については提案されていなかった。
[audit処理の実装例]
図6を参照して、フローテーブル単位で同期させる「audit処理」のいくつかの実装例(実装例A、B、C)と、それぞれの場合に発生し得る問題点について説明する。
[実装例A]
全フローテーブルの「audit処理」が完了するまでファーストパケットをペンディング(保留)させる。
例えば、セキュアチャネル切断後、コントローラ(OFC)10は、「audit処理」をスイッチ(OFS)20一台分ずつ行い、N台分が完了してから経路計算を開始する。「audit処理」の途中にスイッチ(OFS)20にファーストパケットが到着した場合、経路計算処理が必要となる。しかし、「audit処理」の途中であるため、即座に経路計算すると、計算結果が不正確となる可能性がある。従って、「audit処理」が完了するまで経路計算をペンディング(保留)にする。そうして「audit処理」が完了したら、到着順に経路計算し、パケットを処理してゆく。ペンディング(保留)中のファーストパケットはスイッチ(OFS)20内のキュー(queue)に貯めておくことになる。
この実装例Aでは、ネットワーク規模が小さく「audit処理」に掛かる時間が十分短い場合や、トラフィック量が少なく到着するファーストパケットの数が少数である場合には致命的な問題はおきない。経路計算ペンディング(保留)に由来するネットワーク遅延のみが発生する(図6の実装例Aの成功ケース)。
しかし、ネットワーク規模が大きくて「audit処理」に長い時間を要する場合や、トラフィック量が多くて多数のファーストパケットがスイッチ(OFS)20に到着する場合には、スイッチ(OFS)20内のキューが溢れてしまう。こうなった場合、スイッチ(OFS)20がダウン(停止)し、ユーザからはネットワークがダウンした状態となる。また、装置復旧の手間が発生し、復旧するまでユーザはネットワークを使用できなくなる(図6の実装例Aの失敗ケース)。
[実装例B]
全フローテーブルの「audit処理」が完了するまでファーストパケットを受け付けない。
実装例Bは、実装例Aを改良したものである。
例えば、セキュアチャネル切断後、コントローラ(OFC)10は、フローテーブルの差分を修正する処理を、スイッチ(OFS)20毎に(一台分ずつ)行い、N台分が完了してから経路計算を開始する。これは、実装例Aと同じである。
また、「audit処理」の途中にファーストパケットが到着した場合、即座に経路計算すると、結果が不正確となる可能性がある。しかし、ペンディング(保留)にしておき、スイッチ(OFS)20内のキューに貯めておくと、キューが溢れてスイッチ(OFS)20がダウンする可能性がある。よって、「audit処理」中は、スイッチ(OFS)20は、到着したファーストパケットを破棄するものとする。こうすることで、スイッチ(OFS)20がダウンすることはなくなる。
しかし、「audit処理」中、スイッチ(OFS)20がファーストパケットを破棄してしまい、パケットが送信先に到達しないため、ユーザからはネットワークがダウンした状態に見える(図6の実装例B)。
[実装例C]
最低限の「audit処理」が完了するまではファーストパケットを受け付けない。
なお、最低限の「audit処理」の完了後はファーストパケットを受け付けて経路計算を実行する。
実装例Cは、実装例A、実装例Bを更に改良したものであり、ネットワークダウンの時間を短縮できる。
例えば、セキュアチャネル切断後、コントローラ(OFC)10は、フローテーブル内のフローエントリのうち、ブロードキャスト(BC)/マルチキャスト(MC)のフローエントリのみを他のフローエントリに先んじて同期する。
ブロードキャスト(BC)のフローエントリ(以下、BCエントリ)とは、フローエントリのルールにおいて、送信先アドレスにブロードキャストアドレスが指定されているフローエントリである。
マルチキャスト(MC)のフローエントリ(以下、MCエントリ)とは、フローエントリのルールにおいて、送信先アドレスにマルチキャストアドレスが指定されているフローエントリである。
最初に、コントローラ(OFC)10は、自身のフローテーブルと、スイッチ(OFS)20のフローテーブルとの間で、BCエントリ/MCエントリを同期することで、最低限のパケット転送を可能にする。
また、BCエントリ/MCエントリ同期処理中には、スイッチ(OFS)20は、到着したファーストパケットを破棄する。
コントローラ(OFC)10は、BCエントリ/MCエントリ同期処理が完了した後、スイッチ(OFS)20から、スイッチ(OFS)20に到着したファーストパケットの問い合わせを受け入れ、順次処理してゆく。
この時点では、全フローエントリが同期した訳ではないため、経路計算が不正確である可能性があるが、ペンディング(保留)にしておくことで、スイッチ(OFS)20がダウンする可能性があるため、スイッチ(OFS)20に到着したファーストパケットの問い合わせを受け入れ、順次、経路計算を実行する。また、経路計算と平行して、残りのフローエントリの同期処理を進める。
結果的に、実装例Bに比べて、(障害レベルの高い)ネットワークダウンの期間を短縮できるが、一方で、経路計算が不正確となる期間が発生してしまう可能性がある(図6の実装例C)。
また、実装例Cでは、経路計算と平行して「audit処理」を行うため、「audit処理」に掛かる時間の総計が増加する。従って、実装例Bに比べて、サービスの縮退時間が増加する可能性がある(図6の実装例Cの「増加」部分)。
以上のように、上記の(1)〜(3)のような「audit処理」の困難さのため、特に大規模なネットワーク構成で、クラスタスイッチ処理を行う場合や、セキュアチャネルが切断するような障害が発生した場合に、サービス縮退時間が発生する。従って、このような状況において、サービス縮退時間を短縮する手法が求められる。
<実施形態>
以下に、本発明の実施形態について添付図面を参照して説明する。
ファーストパケットがスイッチ(OFS)に到着し、その経路を計算するに当たって、必要となるフローエントリは限られている。
当該パケットの送信元・送信先にマッチするフローエントリだけが必要であり、マッチしないものは計算結果に何ら影響を及ぼすことがない。
従って、あるファーストパケットに対する経路計算において、全てのフローテーブル・全てのフローエントリが同期されている必要はない。当該ファーストパケットにマッチするエントリだけが事前に同期されていれば十分である。すなわち、完全なaudit処理ではなく、部分的なaudit処理(部分audit処理)を実行するだけで十分である。
上記の実装例A、実装例Bでは、コントローラ(OFC)は、N台分の全フローテーブルの同期が完了したか、或いは、完了していないかの2状態のみを管理していた。
上記の実装例Cにおいて、コントローラ(OFC)は、フローテーブルの内のBCエントリ/MCエントリについて、N台分が全て同期完了したか、或いはしていないかの2状態のみを管理していた。
従って、実際には経路計算に必要とはならないフローエントリまで同期させた上で、経路計算を行っていたことになる。
本発明では、図7のように、フローエントリ毎に、そのフローエントリの同期状態を示す「同期フラグ」の欄をフローテーブルに設ける。
[本発明に係るフローテーブルの仕様(形式)]
図7を参照して、本発明に係るフローテーブルの仕様(形式)について説明する。
本発明に係るフローテーブルは、ルールの欄と、統計情報の欄と、アクションの欄と、同期フラグの欄を含む。
ルールの欄には、フローエントリのルールとして、OSI参照モデルのL1(レイヤ1:物理層)からL4(レイヤ4:トランスポート層)までの情報(属性値)を任意に組み合わせて指定することができる。なお、ルールの欄には、ブロードキャストアドレスやマルチキャストアドレスを指定することができる。また、「*」や「?」といったワイルドカードを使用することもできる。
統計情報の欄には、「当該エントリにマッチしたパケットの総数」や、「最後にマッチしてから経過した時間」等の統計情報を格納することができる。
アクションの欄には、フローエントリのアクションとして、「パケットをスイッチAに転送する」、「パケットをホストBに転送する」、或いは「パケットを廃棄する」等の処理の内容を指定することができる。
同期フラグの欄には、「真」(true)/「偽」(false)のいずれかの値が入力されるものとする。
「真」(true)は、そのフローエントリが既に同期済みであると保証できることを示す値である。
「偽」(false)は、そのフローエントリが同期済みであると保証できないことを示す値である。
このフローテーブルの内容は、コントローラ(OFC)及びスイッチ(OFS)の両方に共通である。
また、コントローラ(OFC)及びスイッチ(OFS)の両方に、この同期フラグの値を操作するための「同期フラグ変更部」を設ける。これにより、コントローラ(OFC)及びスイッチ(OFS)のそれぞれのフローエントリの同期状態を管理できるようにする。
また、コントローラ(OFC)に、特定のパケットにマッチするフローエントリだけを同期するための「部分同期処理部」を設ける。これにより、ファーストパケット到着時に、必要な分だけフローエントリを同期することを可能にし、不要なペンディング(保留)時間を発生させず、正確に経路計算を行うことができるようにする。
結果として、実装例Cで発生していた経路計算が不正確となる期間がなくなり、サービス縮退時間の総量を短縮させることが可能となる。
上記の実装例Cでは、BCエントリ/MCエントリを最初に同期させた。
本発明では、BCエントリ/MCエントリに加え、ワイルドカードエントリも最初に同期させる。
ワイルドカードエントリとは、フローエントリのルールにおいて、送信先MACアドレス(dst MAC)、送信元MACアドレス(src MAC)、送信先IPアドレス(dst IP)、及び送信元IPアドレス(src IP)の4つの欄(特定4欄)のうち少なくとも1つでワイルドカードが使用されているフローエントリを指すものとする。
ここでは、BCエントリ/MCエントリ/ワイルドカードエントリを、「特殊エントリ」と呼ぶ。
また、特殊エントリではないフローエントリを、「通常エントリ」と呼ぶ。
通常エントリは、特定4欄で1つもワイルドカードが使用されずに具体的な値が入力されているものであり、アドレス記入欄にブロードキャストアドレスやマルチキャストアドレスが入力されていないものである。
また、スイッチ(OFS)は、特殊エントリ全同期フラグを持つ。
特殊エントリ全同期フラグは、設定済みのBCエントリ/MCエントリ/ワイルドカードエントリが、全て同期している場合に「真」(true)となり、そうでない場合に「偽」(false)となるものである。
あるパケットがスイッチ(OFS)に到着した場合に、当該パケットに特定4欄がマッチする通常エントリをフローテーブルから検索した場合、当該パケットに特定4欄がマッチする通常エントリを0個以上検出する。
[ネットワーク構成]
図8を参照して、本発明に係るネットワークシステムの構成例について詳細に説明する。
本発明に係るネットワークシステムは、コントローラ(OFC)10と、スイッチ(OFS)20と、ホスト30を含む。
コントローラ(OFC)10は、スイッチ(OFS)を管理する。
スイッチ(OFS)20は、ネットワークを構成する。
ホスト30は、スイッチ(OFS)20に接続され、スイッチ(OFS)20を介してネットワーク通信を行う。
コントローラ(OFC)10とスイッチ(OFS)20の間は、セキュアチャネルで接続されている。コントローラ(OFC)10とスイッチ(OFS)20は、セキュアチャネルを経由し、オープンフロープロトコルに則った通信を行う。
コントローラ(OFC)10は、スイッチ(OFS)20に到着するパケットをスイッチ(OFS)20がどのように処理するかについて、フローエントリを操作することにより制御する。
スイッチ(OFS)20は、フローテーブルを少なくとも1つ保持している。コントローラ(OFC)10は、配下の全てのスイッチ(OFS)20のフローテーブルと同じ内容のフローテーブルを保持している。すなわち、コントローラ(OFC)10は、配下のスイッチ(OFS)20毎のフローテーブルのマスターテーブルを保持している。スイッチ(OFS)20のフローテーブルは、コントローラ(OFC)10のフローテーブルのコピー(複製)である。
また、コントローラ(OFC)10は、管理するスイッチ(OFS)毎に、特殊エントリ全同期フラグを持つ。
[コントローラ(OFC)の構成]
次に、コントローラ(OFC)10の構成例について説明する。
コントローラ(OFC)10は、セキュアチャネル監視部11と、フローテーブル管理部12と、部分同期処理部13と、経路計算部14を備える。
セキュアチャネル監視部11は、コントローラ(OFC)10とスイッチ(OFS)20との間で通信を行うためのセキュアチャネルを監視し、通信が途絶えた場合にそれを検出する。
フローテーブル管理部12は、コントローラ(OFC)10のフローテーブルを管理する。
なお、フローテーブル管理部12は、同期フラグ変更部121を含む。
同期フラグ変更部121は、コントローラ(OFC)10のフローテーブル内の同期フラグの値を変更する。
部分同期処理部13は、コントローラ(OFC)10のフローテーブルと、スイッチ(OFS)20のフローテーブルとの間で、特殊エントリであるBCエントリ/MCエントリ/ワイルドカードエントリを同期する。すなわち、部分同期処理部13は、全てのフローエントリを同期させる処理(完全audit処理)ではなく、特殊エントリのみ先に同期させる処理(部分audit処理)を行う。
経路計算部14は、スイッチ(OFS)にファーストパケットが到着した際に、スイッチ(OFS)からの経路計算要求を受けて、当該パケットに対するフローエントリを導出する。このとき、経路計算の入力として、コントローラ(OFC)10のフローテーブルを参照する。
[スイッチ(OFS)の構成]
次に、スイッチ(OFS)20の構成例について説明する。
スイッチ(OFS)20は、セキュアチャネル監視部21と、フローテーブル管理部22と、部分同期処理部23と、パケット処理部24を備える。
セキュアチャネル監視部21は、コントローラ(OFC)10とスイッチ(OFS)20との間で通信を行うためのセキュアチャネルを監視し、通信が途絶えた場合にそれを検出する。
フローテーブル管理部22は、スイッチ(OFS)20のフローテーブルを更新する。
なお、フローテーブル管理部22は、同期フラグ変更部221を含む。
同期フラグ変更部221は、スイッチ(OFS)20のフローテーブルの同期フラグの値を変更する。
部分同期処理部23は、コントローラ(OFC)10のフローテーブルと、スイッチ(OFS)20のフローテーブルとの間で、特殊エントリであるBCエントリ/MCエントリ/ワイルドカードエントリを同期する。
パケット処理部24は、ホストやスイッチから受けたパケットについて、スイッチ(OFS)20のフローテーブルから、マッチするフローエントリを検索し、マッチするフローエントリが検出された場合、マッチするフローエントリのアクションに記載された内容に従ってパケットを処理する。例えば、ホストや他のスイッチへのパケットの転送や、パケットの破棄等の処理を行う。また、マッチするフローエントリが検出されなかった場合(ファーストパケットの場合)、コントローラ(OFC)10に、ファーストパケットのコピーを転送することで経路計算を依頼し、コントローラ(OFC)10からのフローエントリの追加登録を待ち、フローエントリの追加登録があれば、追加登録されたフローエントリのアクションに記載された内容に従って適宜パケットを処理する。
[セキュアチャネル監視部の動作]
図9を参照して、コントローラ(OFC)10のセキュアチャネル監視部11、及び、スイッチ(OFS)20のセキュアチャネル監視部21の動作について説明する。
なお、セキュアチャネル監視部11及びセキュアチャネル監視部21は、コントローラ(OFC)10及びスイッチ(OFS)20のそれぞれの装置が起動し、セキュアチャネルの通信が開始してから、動作を開始する。
(1)ステップA1
セキュアチャネル監視部11及びセキュアチャネル監視部21は、セキュアチャネルを監視する。
(2)ステップA2
次に、セキュアチャネル監視部11及びセキュアチャネル監視部21は、通信が途絶えたか否かの判断を行う。通信が正常に行われている場合は、監視を継続する。
(3)ステップA3
セキュアチャネル監視部11及びセキュアチャネル監視部21は、通信の切断を検知した場合、フローテーブルに含まれる全フローエントリ(特殊エントリ及び通常エントリの全て)の同期フラグの値を「偽」(false)に更新する。
例えば、コントローラ(OFC)10のセキュアチャネル監視部11は、セキュアチャネルの通信切断を検知した場合、フローテーブル管理部12に、コントローラ(OFC)10のフローテーブルの同期フラグの欄を全て「偽」(false)に更新する旨を指示する。フローテーブル管理部12の同期フラグ変更部121は、指示に応じて、コントローラ(OFC)10のフローテーブルの同期フラグの欄を全て「偽」(false)に更新する。このフローテーブルは、当該セキュアチャネルで接続されていたスイッチ(OFS)20のフローテーブルに対応する。
また、スイッチ(OFS)20のセキュアチャネル監視部21は、セキュアチャネルの通信切断を検知した場合、フローテーブル管理部22に、スイッチ(OFS)20のフローテーブルの同期フラグの欄を全て「偽」(false)に更新する旨を指示する。フローテーブル管理部22の同期フラグ変更部221は、指示に応じて、スイッチ(OFS)20のフローテーブルの同期フラグの欄を全て「偽」(false)に更新する。
(4)ステップA4
次に、セキュアチャネル監視部11及びセキュアチャネル監視部21は、特殊エントリ全同期フラグの値を「偽」(false)に更新する。
例えば、コントローラ(OFC)10のセキュアチャネル監視部11は、セキュアチャネルの通信切断を検知した場合、コントローラ(OFC)10の特殊エントリ全同期フラグの値を「偽」(false)に更新する。この特殊エントリ全同期フラグは、当該セキュアチャネルで接続されていたスイッチ(OFS)20の特殊エントリ全同期フラグに対応する。
また、スイッチ(OFS)20のセキュアチャネル監視部21は、セキュアチャネルの通信切断を検知した場合、スイッチ(OFS)20の特殊エントリ全同期フラグの値を「偽」(false)に更新する。
(5)ステップA5
その後、セキュアチャネル監視部11及びセキュアチャネル監視部21は、セキュアチャネル通信の再開を待ち合わせてから、通信の監視を再開する。
[部分同期処理部の動作]
図10を参照して、コントローラ(OFC)10の部分同期処理部13、及び、スイッチ(OFS)20の部分同期処理部23の動作について説明する。
ここでは、コントローラ(OFC)10及びスイッチ(OFS)20のそれぞれの特殊エントリ全同期フラグの値が「真」(true)から「偽」(false)に更新されたものとする。
(1)ステップB1
コントローラ(OFC)10の部分同期処理部13は、特殊エントリ全同期フラグの更新を検知して動作(部分audit処理)を開始する。例えば、部分同期処理部13は、特殊エントリ全同期フラグの値が「真」(true)から「偽」(false)に更新された場合に動作するイベントハンドラのような形式で実装される。まず、部分同期処理部13は、コントローラ(OFC)10のフローテーブルを参照し、全ての特殊エントリを検索する。特殊エントリとは、BCエントリ/MCエントリ/ワイルドカードエントリを指す。BCエントリは、ルールにブロードキャストアドレスが記載されたものである。MCエントリは、ルールにマルチキャストアドレスが記載されたものである。ワイルドカードエントリは、ルールの特定4欄で、「*」か「?」が、1つ以上記載されているものである。従って、単純な検索となる。
(2)ステップB2
次に、部分同期処理部13は、検索して見つかった全ての特殊エントリの同期フラグの値を「真」(true)に更新する。
(3)ステップB3
次に、部分同期処理部13は、検索して見つかった全ての特殊エントリの情報を特殊エントリ同期要求に付与してスイッチ(OFS)20に通知することで、スイッチ(OFS)20に特殊エントリの同期を要求し、スイッチ(OFS)20からの同期完了の応答の待ち合わせをする。
(4)ステップB4
スイッチ(OFS)20の部分同期処理部23は、コントローラ(OFC)10の部分同期処理部13から、特殊エントリの情報が付与された特殊エントリ同期要求(特殊エントリの情報の通知)を受けて、特殊エントリ同期処理を開始する。
(5)ステップB5
部分同期処理部23は、スイッチ(OFS)20のフローテーブルから、特殊エントリ同期要求に付与されていた全ての特殊エントリを検索し、検索して見つかった全ての特殊エントリを削除する。
(6)ステップB6
次に、部分同期処理部23は、特殊エントリ同期要求に付与されていた全ての特殊エントリを、スイッチ(OFS)20のフローテーブルに追加登録し、追加登録された特殊エントリの同期フラグの値を「真」(true)に更新する。
(7)ステップB7
次に、部分同期処理部23は、スイッチ(OFS)20の特殊エントリ全同期フラグの値を「真」(true)に更新する。
(8)ステップB8
次に、部分同期処理部23は、コントローラ(OFC)10に対し、特殊エントリ同期処理の完了を通知する。
(9)ステップB9
コントローラ(OFC)10の部分同期処理部13は、スイッチ(OFS)20の部分同期処理部23から特殊エントリ同期処理完了の通知を受けて、コントローラ(OFC)10の特殊エントリ全同期フラグの値を「真」(true)に更新する。
[パケット処理部の動作]
図11を参照して、スイッチ(OFS)20のパケット処理部24の動作について説明する。
(1)ステップC1
スイッチ(OFS)20のパケット処理部24は、ホストや他のスイッチから転送されたパケットを受信した場合、動作を開始し、特殊エントリ全同期フラグの値が「真」(true)であるか確認する。
(2)ステップC2
パケット処理部24は、特殊エントリ全同期フラグの値が「偽」(false)の場合、当該パケットを破棄する。
(3)ステップC3
パケット処理部24は、特殊エントリ全同期フラグの値が「真」(true)の場合、当該パケットのヘッダ情報等を参照し、当該パケットのL1〜L4の情報(属性値)を調べ、スイッチ(OFS)20のフローテーブルからマッチするフローエントリを検索する。この検索では、特殊エントリ及び通常エントリの全てが検索の対象となる。
(4)ステップC4
パケット処理部24は、検索の結果、当該パケットに(ルール全体が)マッチする特殊エントリが見つかったか確認する。
(5)ステップC5
パケット処理部24は、当該パケットに(ルール全体が)マッチする特殊エントリが見つからない場合、当該パケットに特定4欄がマッチする通常エントリが見つかったか確認する。
(6)ステップC6
パケット処理部24は、当該パケットに特定4欄がマッチする通常エントリが見つかった場合、見つかった通常エントリの同期フラグの値が「真」(true)であるか確認する。
(7)ステップC7
パケット処理部24は、検索の結果、当該パケットに特定4欄がマッチする通常エントリが見つからなかった場合、或いは、見つかった通常エントリの同期フラグの値が「真」(true)でなく「偽」(false)である場合、コントローラ(OFC)10に経路計算要求を送信し、その経路計算の完了を待ち合わせる。コントローラ(OFC)10の経路計算部14は、経路計算要求に応じて、経路計算を行い、経路計算の結果として、スイッチ(OFS)20のフローテーブルに、同期フラグの値が「真」(true)である通常エントリを1つ追加登録する。或いは、経路計算部14は、同期フラグの値が「偽」(false)となっている通常エントリに対して、同期フラグの値を「偽」(false)から「真」(true)に更新する。また、コントローラ(OFC)10の部分同期処理部13は、経路計算の過程で、必要に応じて、部分同期処理を実行する。なお、スイッチ(OFS)20側での通常エントリの追加登録は、コントローラ(OFC)10からの指示に応じて、スイッチ(OFS)20のフローテーブル管理部22が行う。また、スイッチ(OFS)20側での同期フラグの値の更新は、コントローラ(OFC)10からの指示に応じて、フローテーブル管理部22の同期フラグ変更部221が行う。
(8)ステップC8
パケット処理部24は、マッチするフローエントリのうち、最も優先度の高いフローエントリを選択し、選択されたフローエントリのアクションを参照し、記載されている内容に従ってパケットを処理する。例えば、パケット処理部24は、「パケットをホストや他のスイッチに転送する」、或いは、「パケットを廃棄する」といった処理を行う。
[経路計算部の動作]
図12を参照して、コントローラ(OFC)10の経路計算部14の動作について説明する。
(1)ステップD1
コントローラ(OFC)10の経路計算部14は、スイッチ(OFS)20から発行された経路計算要求を受信する(ステップC7参照)。経路計算部14は、この経路計算要求に応じて、動作を開始する。なお、この経路計算要求には、少なくとも、元々スイッチ(OFS)20が受信して目下の経路計算の対象となっているパケット(ファーストパケット)の送信先・送信元のL1〜L4の情報(属性値)が格納されているものとする。実際には、経路計算要求には、ファーストパケットのコピー(複製)を格納しても良い。
(2)ステップD2
経路計算部14は、受信した経路計算要求から、ファーストパケットのL1〜L4の送信元・送信先のL1〜L4の情報(属性値)を取り出す(抽出する)。
(3)ステップD3
経路計算部14は、同期フラグの値が「真」(true)であり、取り出したL1〜L4の情報(属性値)に特定4欄がマッチする通常エントリを、コントローラ(OFC)10のフローテーブルから検索する。
(4)ステップD4
経路計算部14は、検索の結果、同期フラグの値が「真」(true)であり、取り出したL1〜L4の情報(属性値)に特定4欄がマッチする通常エントリが1つ以上見つかったか確認する。
(5)ステップD5
経路計算部14は、同期フラグの値が「真」(true)であり、取り出したL1〜L4の情報(属性値)に特定4欄がマッチする通常エントリが1つ以上見つかった場合、見つかった通常エントリのうち、当該ファーストパケットに特定4欄だけでなくルール全てがマッチする通常エントリがあるか否か確認する。
(6)ステップD6
経路計算部14は、ルール全てがマッチする通常エントリが1つ以上見つかった場合、見つかった全ての通常エントリの同期フラグの欄を「真」(true)に更新する。
(7)ステップD7
経路計算部14は、見つかった全ての通常エントリを、スイッチ(OFS)20に通知する。例えば、経路計算部14は、見つかった全ての通常エントリをスイッチ(OFS)20のフローテーブルに登録するための制御メッセージを、スイッチ(OFS)20に送信する。
(8)ステップD8
経路計算部14は、マッチする通常エントリが検索されない場合は、ファーストパケットの転送先を記述した通常エントリを新たにスイッチ(OFS)20に登録する必要があり、経路計算が必要となる。このとき、経路計算部14は、経路計算に先立って、コントローラ(OFC)10が持つ全てのフローテーブル(配下の全てのスイッチ(OFS)のフローテーブル)から、ファーストパケットに関連する全ての通常エントリを収集する。すなわち、経路計算部14は、同期済み/未同期の状態や、特殊エントリ/通常エントリの区別なく、ファーストパケットに特定4欄がマッチする全ての通常エントリを、コントローラ(OFC)10が持つ全てのフローテーブルから検索し、同期する。
(9)ステップD9
経路計算部14は、経路計算を実行する。ここでは、経路計算部14は、ダイクストラのアルゴリズムにより経路を計算する。経路計算の入力として、「トポロジー情報」及び「通常エントリ情報」の2つが揃っている必要がある。トポロジー情報は、当該ネットワークを構成するホストやスイッチ等の接続情報であり、ネットワーク管理者等により事前にコントローラ(OFC)10に登録されている。通常エントリ情報は、各スイッチに既に登録された通常エントリのうち、当該パケットがマッチする全ての通常エントリの情報であり、経路計算の際に収集したものである。従って、この時点で経路の計算が可能となっている。経路計算部14は、経路計算の結果として、配下のスイッチ(OFS)20に登録する通常エントリを得る。
(10)ステップD10
経路計算部14は、経路計算の結果として得られた通常エントリを、コントローラ(OFC)10のフローテーブルに追加登録する。例えば、経路計算部14は、コントローラ(OFC)10のフローテーブル管理部12に、当該通常エントリをコントローラ(OFC)10のフローテーブルに追加登録する旨を指示する。このとき、コントローラ(OFC)10のフローテーブル管理部12の同期フラグ変更部121は、コントローラ(OFC)10のフローテーブルに追加登録された通常エントリの同期フラグの値を「真」(true)に更新しておく。
(11)ステップD11
次に、経路計算部14は、コントローラ(OFC)10のフローテーブルに対して追加登録した通常エントリを、スイッチ(OFS)20のフローテーブルに反映する。例えば、経路計算部14は、スイッチ(OFS)20に対して制御メッセージを送信し、スイッチ(OFS)20のフローテーブル管理部22に、当該通常エントリをスイッチ(OFS)20のフローテーブルに追加登録する旨を指示する。スイッチ(OFS)20のフローテーブル管理部22は、指示に応じて、当該通常エントリをスイッチ(OFS)20のフローテーブルに追加登録する。このとき、スイッチ(OFS)20のフローテーブル管理部22の同期フラグ変更部221は、スイッチ(OFS)20のフローテーブルに追加登録された通常エントリの同期フラグの値を「真」(true)に更新しておく。
以上の処理より、コントローラ(OFC)10は、パケット転送に必要となる通常エントリの追加登録・同期を完了し、スイッチ(OFS)20は、ステップC8でのパケット転送の実行が可能となる。
[パケット到達時の実際の動作]
図13、図14を参照して、スイッチ(OFS)20にパケットが到達した時の実際の動作について説明する。
コントローラ(OFC)10は、スイッチ(OFS)20を管理しているものとする。任意のタイミングでスイッチ(OFS)20にパケットが到着したとする。この場合に、当該パケットにマッチするフローエントリが、どのような状態になっているかについて一覧を示したのが、図13に示す「パターン1」から「パターン5」である。
図13、図14の中央の横線(区切り線)より上部(コントローラ(OFC)側)には、コントローラ(OFC)10のフローテーブル内のフローエントリの中で、当該パケットに関連するフローエントリを示している。
図13、図14の中央の横線(区切り線)より下部(スイッチ(OFS)側)には、スイッチ(OFS)20のフローテーブル内のフローエントリの中で、当該パケットに関連するフローエントリを示している。
ここで、当該パケットに関連するフローエントリとは、パケットに(ルール全体が)マッチする特殊エントリ一式と、パケットに特定4欄がマッチする通常エントリ一式を指す。
なお、「グレー」(塗り潰し)のフローエントリは、ファーストパケットに(ルール全体が)マッチする特殊エントリを示している。
また、「白色」(無色)のフローエントリは、同期フラグの値が「真」(true)の通常エントリを示している。
また、「斜線」が引かれているフローエントリは、同期フラグの値が「偽」(false)の通常エントリを示している。
また、「★印」がついているフローエントリは、ファーストパケットに特定4欄がマッチする通常エントリを示している。
図13に示した例において、コントローラ(OFC)10が自身のフローテーブルからファーストパケットがマッチするフローエントリを検索した場合、各々のフローテーブルにおいて、0個以上の「特殊エントリ」を検出する。このとき、検出された特殊エントリは必ず同期状態となっており、同期フラグの値は「真」(true)となっている。
スイッチ(OFS)20は、これらの特殊エントリと全く同じ内容のエントリを保持している。それらのエントリは同期状態となっており、同期フラグの値は「真」(true)となっている。
一方で、コントローラ(OFC)10/スイッチ(OFS)20が各々のフローテーブルからファーストパケットがマッチするフローエントリを検索した場合、各々のフローテーブルにおいて、0個以上の「特定4欄がマッチする通常エントリ」を検出する。このとき、検出された通常エントリの同期状態(及び同期フラグの値)は様々である。検出された通常エントリの同期状態として、パターン1からパターン5の組み合わせが考えられる。
[パターン1]
パターン1は、通常エントリが同期済みで、特定4欄がマッチするケースを示す。すなわち、スイッチ(OFS)20のフローテーブルに、コントローラ(OFC)10のフローテーブル内の通常エントリと対応する同期済みの通常エントリが存在し、それらの同期済みの通常エントリの中に、受信パケットに特定4欄がマッチする通常エントリが存在する場合である。
この場合は、経路計算が不要である。
例えば、図11のステップC8に示したように、スイッチ(OFS)20は、マッチするフローエントリのうち、最も優先度の高いフローエントリを選択し、選択されたフローエントリのアクションを参照し、記載されている内容に従ってパケットを処理する。
[パターン2]
パターン2は、通常エントリが同期済みであるが、特定4欄がマッチしないケースを示す。すなわち、スイッチ(OFS)20のフローテーブルに、コントローラ(OFC)10のフローテーブル内の通常エントリと対応する同期済みの通常エントリが存在するが、それらの同期済みの通常エントリの中に、受信パケットに特定4欄がマッチする通常エントリが存在しない場合である。
この場合は、経路計算が必要となる。
例えば、図12のステップD8〜ステップD11に示したように、コントローラ(OFC)10は、経路計算の結果として得られた通常エントリを、自身のフローテーブルに登録し、スイッチ(OFS)20のフローテーブルに反映する。
このとき、図12のステップD8に示したように、コントローラ(OFC)10は、ネットワークを構成する他のスイッチ(OFS)に対しても、ファーストパケットにマッチするフローエントリを収集する必要がある。また、コントローラ(OFC)10は、他のスイッチ(OFS)に対する同期処理において、未同期のフローエントリを収集した場合は、他のスイッチ(OFS)の未同期のフローエントリも同時に同期することになる。
他のスイッチ(OFS)のフローエントリを収集する動作の詳細については、図14を用いて後に説明する。
[パターン3]
パターン3は、通常エントリが未同期であるが、特定4欄がマッチするケースを示す。すなわち、スイッチ(OFS)20のフローテーブルに、コントローラ(OFC)10のフローテーブル内の通常エントリと対応する未同期の通常エントリが存在し、それらの未同期の通常エントリの中に、受信パケットに特定4欄がマッチする通常エントリが存在する場合である。
この場合も、経路計算は必要ではない。
例えば、図11のステップC6において、スイッチ(OFS)20は、見つかった通常エントリの同期フラグの値が「真」(true)でなく「偽」(false)であるため、図11のステップC7に示したように、コントローラ(OFC)10に経路計算要求を送信し、その経路計算の完了を待ち合わせる。
ところが、コントローラ(OFC)10側では、改めて計算するまでもなく、未同期のフローエントリが見つかることになる。
この場合、コントローラ(OFC)10は、見つかった未同期の通常エントリの同期フラグの値を「偽」(false)から「真」(true)に更新する。そして、その通常エントリを、同期フラグの値を「真」(true)としてスイッチ(OFS)20に反映する。このとき、コントローラ(OFC)10は、スイッチ(OFS)20に既に登録されている未同期の通常エントリを上書きする形で更新し、この通常エントリの同期フラグの値を「偽」(false)から「真」(true)に更新する。これにより、スイッチ(OFS)20に既に登録されている未同期の通常エントリは、同期済みの通常エントリとなる。
スイッチ(OFS)20は、同期済みとなった通常エントリに従って、パケット転送が可能となる。
[パターン4]
パターン4は、通常エントリが未同期で、特定4欄がマッチしないケースを示す。すなわち、スイッチ(OFS)20のフローテーブルに、コントローラ(OFC)10のフローテーブル内の通常エントリと対応する未同期の通常エントリが存在するが、未同期の通常エントリの中に、受信パケットに特定4欄がマッチする通常エントリが存在しない場合である。
この場合は、経路計算が必要となる。
例えば、図11のステップC5において、検索の結果、当該パケットに特定4欄がマッチする通常エントリが見つからない場合、或いは、当該パケットに特定4欄がマッチする通常エントリが見つかったとしても、図11のステップC6において、見つかった通常エントリの同期フラグの値が「真」(true)でなく「偽」(false)である場合、図11のステップC7に示したように、コントローラ(OFC)10に経路計算要求を送信し、その経路計算の完了を待ち合わせる。
コントローラ(OFC)10は、経路計算要求に応じて、経路計算を行い、経路計算の結果として、スイッチ(OFS)20のフローテーブルに、同期フラグの値が「真」(true)である通常エントリを1つ追加登録する。
このとき、図12のステップD8に示したように、コントローラ(OFC)10は、ネットワークを構成する他のスイッチ(OFS)に対しても、ファーストパケットにマッチするフローエントリを収集する必要がある。また、コントローラ(OFC)10は、他のスイッチ(OFS)に対する同期処理において、未同期のフローエントリを収集した場合は、他のスイッチ(OFS)の未同期のフローエントリも同時に同期することになる。
他のスイッチ(OFS)のフローエントリを収集する動作の詳細については、図14を用いて後に説明する。
[パターン5]
パターン5は、通常エントリ自体が存在しないケースを示す。すなわち、同期状態に関係なく、スイッチ(OFS)20のフローテーブルに、コントローラ(OFC)10のフローテーブル内の通常エントリと対応する通常エントリが存在しない場合である。
この場合は、経路計算が必要となる。
例えば、図11のステップC5において、検索の結果、当該パケットに特定4欄がマッチする通常エントリが見つからない場合、図11のステップC7に示したように、コントローラ(OFC)10に経路計算要求を送信し、その経路計算の完了を待ち合わせる。
コントローラ(OFC)10は、経路計算要求に応じて、経路計算を行い、経路計算の結果として、スイッチ(OFS)20のフローテーブルに、同期フラグの値が「真」(true)である通常エントリを1つ追加登録する。
このとき、図12のステップD8に示したように、コントローラ(OFC)10は、ネットワークを構成する他のスイッチ(OFS)に対しても、ファーストパケットにマッチするフローエントリを収集する必要がある。また、コントローラ(OFC)10は、他のスイッチ(OFS)に対する同期処理において、未同期のフローエントリを収集した場合は、他のスイッチ(OFS)の未同期のフローエントリも同時に同期することになる。
他のスイッチ(OFS)のフローエントリを収集する動作の詳細については、図14を用いて後に説明する。
[他のスイッチ(OFS)のフローエントリを収集する動作の詳細]
次に、図14を参照して、他のスイッチ(OFS)のフローエントリを収集する動作の詳細について説明する。なお、この動作は、図12のステップD8の動作に相当する。
ここでは、コントローラ(OFC)10は、スイッチ(OFS)20から受け取ったパケットに対して、経路を計算しようとしているものとする。また、コントローラ(OFC)10は、ネットワークを構成する他のスイッチ(OFS)として、スイッチ(OFS)20−1、スイッチ(OFS)20−2、スイッチ(OFS)20−3の3台のスイッチを管理しているものとする。
コントローラ(OFC)10は、経路を計算するに当たって、既にスイッチ(OFS)20−1〜スイッチ(OFS)20−3に登録されていてファーストパケットに関連するフローエントリを収集する。
図14は、その際のスイッチ(OFS)20−1〜スイッチ(OFS)20−3のフローエントリの状態を図示したものである。
(1)スイッチ(OFS)20−1のフローエントリの状態
スイッチ(OFS)20−1は、ファーストパケットに関連するフローエントリの全てが既に登録され、同期されている。
この場合、コントローラ(OFC)10は、単にコントローラ(OFC)10のフローテーブルから、同じファーストパケットに関連するフローエントリを収集するだけで良い。
(2)スイッチ(OFS)20−2のフローエントリの状態
スイッチ(OFS)20−2は、ファーストパケットに関連するフローエントリの一部が未だ登録されていない。ここでは、コントローラ(OFC)10のフローテーブルにおいて、同期フラグの値が「偽」(false)の通常エントリが1つ余分に存在する。
この場合、コントローラ(OFC)10は、この通常エントリの同期フラグの値を「偽」(false)から「真」(true)に更新し、その同期フラグの値が「真」(true)に更新された通常エントリをスイッチ(OFS)20−2に追加登録する。
なお、コントローラ(OFC)10は、この通常エントリがスイッチ(OFS)20−2に既に登録されており、単に同期されていないだけである場合、この通常エントリの同期フラグの値を「偽」(false)から「真」(true)に更新し、スイッチ(OFS)20−2に既に登録されている通常エントリを上書きする形でスイッチ(OFS)20−2に追加登録する。これにより、スイッチ(OFS)20−2に既に登録されている通常エントリの同期フラグの値を「偽」(false)から「真」(true)に更新する。
(3)スイッチ(OFS)20−3のフローエントリの状態
スイッチ(OFS)20−3は、ファーストパケットに関連するフローエントリの一部が未だ同期されていない。ここでは、スイッチ(OFS)20−3のフローテーブルにのみ、同期フラグの値が「偽」(false)の通常エントリが1つ存在する。
この場合、コントローラ(OFC)10は、この通常エントリがスイッチ(OFS)20−3に登録されていないものと判断し、この通常エントリをスイッチ(OFS)20−3から削除する。
このように、コントローラ(OFC)10は、元々スイッチ(OFS)に登録されていた未同期のフローエントリが存在する場合は、それらを削除する。
これにより、必要となるフローエントリ情報が同期した状態で揃い、コントローラ(OFC)10は経路計算可能となる。
経路計算の結果として得られたフローエントリを、図12のステップD10、D11に示すように、コントローラ(OFC)10/各スイッチ(OFS)のそれぞれのフローテーブルに登録する。
このとき、コントローラ(OFC)10/各スイッチ(OFS)の状態は、図13に示した「パターン2」、「パターン4」、或いは「パターン5」の状態になっている。
まず、コントローラ(OFC)10は、自身のフローエントリに、経路計算の結果として得られたフローエントリを、同期フラグの値を「真」(true)にして登録する。
次に、コントローラ(OFC)10は、各スイッチ(OFS)のフローエントリにも、経路計算の結果として得られたフローエントリを、同期フラグの値を「真」(true)として登録する。
このとき、経路計算の結果として得られたフローエントリが、既に登録済みの特殊エントリに包含されるような内容である場合がある。この場合は、当該フローエントリを、その登録済みの特殊エントリより優先度を高くして登録するものとする。これは、スイッチ(OFS)に同じパケットが再度到着した場合に、到着したパケットが、登録済みの特殊エントリよりも先に、経路計算の結果として得られたフローエントリにマッチするようにするために必要となる工夫である。
<本発明による効果>
以下に、本発明による効果について説明する。
本発明では、「エントリ同期フラグ変更処理」、及び、「部分同期処理」により、フローエントリ単位で同期状態を管理することが可能となるため、フローエントリ単位で同期することが可能になる。
また、本発明では、「エントリ同期フラグ変更処理」、及び、「部分同期処理」により、経路計算に必要なフローエントリだけを選択して同期することが可能になる。これにより、計算に不必要なエントリの同期を待ち合わせる必要がなくなるため、経路計算に当たって不要な待ち時間がなくなる。
また、本発明では、従来発生していた計算結果が不正確となる期間を無くすことが可能になったため、クラスタスイッチ時等セキュアチャネルが切断するような場合に発生するサービス縮退時間を短縮できる。
[サービス縮退時間の短縮の理由]
図15を参照して、サービス縮退時間を短縮できる理由について説明する。
本発明では、コントローラ(OFC)は、「audit処理」(同期処理)の最初に、BCエントリ/MCエントリに加えて、ワイルドカードエントリを同期する。スイッチ(OFS)は、「audit処理」の間に到着したファーストパケットを破棄する。
従って、上記の実装例Cに比べ、ワイルドカードエントリの同期処理の分だけ、パケットを破棄するまでの期間が少し長くなる。
しかし、一方で、経路計算が不正確となる期間がなくなるため、結果として、サービス縮退時間の総量が大幅に減少する。
<ハードウェアの例示>
以下に、本発明に係るネットワークシステムを実現するための具体的なハードウェアの例について説明する。
コントローラ(OFC)10及びホスト30の例として、PC(パソコン)、アプライアンス(appliance)、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、ホスト30の例として、携帯電話機、スマートフォン、スマートブック、カーナビ(カーナビゲーションシステム)、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット(電子機器)、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電(information home appliance)、OA(Office Automation)機器、店頭端末・高機能コピー機、デジタルサイネージ(Digital Signage:電子看板)等も考えられる。なお、コントローラ(OFC)10及びホスト30は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、コントローラ(OFC)10及びホスト30は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン(VM:Virtual Machine)でも良い。
スイッチ(OFS)20の例として、ネットワークスイッチ(network switch)、ルータ(router)、プロキシ(proxy)、ゲートウェイ(gateway)、ファイアウォール(firewall)、ロードバランサ(load balancer:負荷分散装置)、帯域制御装置(packet shaper)、セキュリティ監視制御装置(SCADA:Supervisory Control And Data Acquisition)、ゲートキーパー(gatekeeper)、基地局(base station)、アクセスポイント(AP:Access Point)、通信衛星(CS:Communication Satellite)、或いは、複数の通信ポートを有する計算機等が考えられる。また、物理マシン上に構築された仮想マシン(VM)により実現される仮想スイッチでも良い。
コントローラ(OFC)10、スイッチ(OFS)20、及びホスト30は、車両や船舶、航空機等の移動体に搭載されていても良い。
図示しないが、コントローラ(OFC)10及びスイッチ(OFS)20の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
上記のプロセッサの例として、CPU(Central Processing Unit)、ネットワークプロセッサ(NP:Network Processor)、マイクロプロセッサ(microprocessor)、マイクロコントローラ(microcontroller)、或いは、専用の機能を有する半導体集積回路(LSI:Large Scale Integration)等が考えられる。
上記のメモリの例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクや、SDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。また、バッファ(buffer)やレジスタ(register)等でも良い。或いは、DAS(Direct Attached Storage)、FC−SAN(Fibre Channel − Storage Area Network)、NAS(Network Attached Storage)、IP−SAN(IP − Storage Area Network)等を用いたストレージ装置でも良い。
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、電子機器等に搭載される1チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例も考えられる。
上記のインターフェースの例として、ネットワーク通信に対応した基板(マザーボード、I/Oボード)やチップ等の半導体集積回路、NIC(Network Interface Card)等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口(コネクタ)等の通信ポート等が考えられる。
また、ネットワークの例として、インターネット、LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)、バックボーン(Backbone)、ケーブルテレビ(CATV)回線、固定電話網、携帯電話網、WiMAX(IEEE 802.16a)、3G(3rd Generation)、専用線(lease line)、IrDA(Infrared Data Association)、Bluetooth(登録商標)、シリアル通信回線、データバス等が考えられる。
なお、コントローラ(OFC)10及びスイッチ(OFS)20の各々の内部の構成要素は、モジュール(module)、コンポーネント(component)、或いは専用デバイス、又はこれらの起動(呼出)プログラムでも良い。
但し、実際には、これらの例に限定されない。
<本発明の特徴>
本発明では、オープンフローネットワークにおいて、コントローラ(OFC)とスイッチ(OFS)とのフローテーブルの同期処理を改善する。具体的には、コントローラ(OFC)が、それぞれのフローテーブルを構成するフローエントリの同期状態を、フローエントリ単位で管理し、特定のフローエントリのみ先にスイッチ(OFS)側と同期できるようにした。これにより、障害発生時やクラスタスイッチ時に発生するサービス縮退時間を減少させる効果が得られる。
本発明は、オープンフローネットワークにおけるフローテーブルの同期処理の用途に適用できる。すなわち、CU分離型ネットワークシステムにおいて、制御装置とノード装置との間での経路情報の同期処理の用途に適用できる。
<付記>
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
[付記1]
パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチと、
当該スイッチに対して制御メッセージを送信し、当該フローエントリの設定を行うコントローラと
を含み、
当該コントローラは、当該スイッチに設定したフローエントリと同一のフローエントリを保持し、フローエントリ単位で同期状態を管理し、フローエントリが非同期の場合、当該スイッチとの間で、特定のフローエントリを優先して同期する
ネットワークシステム。
[付記2]
付記1に記載のネットワークシステムであって、
当該コントローラ及び当該スイッチの各々は、
フローエントリの集合であり、フローエントリ毎に、当該フローエントリの同期状態を示す同期フラグの欄が設けられたフローテーブルを保持する機能部と、
一部のフローエントリ(ブロードキャスト/マルチキャストのフローエントリ、及びワールドカードを含むフローエントリ等)を特殊エントリとし、特殊エントリの同期状態を示す特殊エントリ同期フラグを保持する機能部と、
セキュアチャネルの通信切断を検知した場合、全フローエントリの同期フラグ及び特殊エントリ同期フラグの値を偽(false)に更新する機能部と
を具備する
ネットワークシステム。
[付記3]
付記2に記載のネットワークシステムであって、
当該コントローラは、
特殊エントリ同期フラグの値が偽(false)であることを検知した際、特殊エントリを同期して、当該コントローラ自身及び当該スイッチの各々に対して、同期した特殊エントリの同期フラグ及び特殊エントリ同期フラグの値を真(true)に更新する機能部と、
特殊エントリ同期フラグの値が真(true)であるが、当該スイッチが受信したパケットと特殊エントリがマッチしない場合、受信パケットと送信元・送信先がマッチするフローエントリを同期して、当該コントローラ自身及び当該スイッチの各々に対して、同期したフローエントリの同期フラグを真(true)に更新する機能部と
を更に具備する
ネットワークシステム。
[付記4]
付記2又は3に記載のネットワークシステムであって、
当該スイッチは、
特殊エントリ同期フラグの値が偽(false)である場合、受信パケットを破棄する機能部と、
特殊エントリ同期フラグの値が真(true)である場合、当該スイッチのフローテーブルから、受信パケットがマッチするフローエントリを検索する機能部と、
検索の結果、受信パケットにマッチする特殊エントリが見つかったか確認する機能部と、
受信パケットにマッチする特殊エントリが見つからない場合、受信パケットに送信元・送信先がマッチするフローエントリが見つかったか確認する機能部と、
受信パケットに送信元・送信先がマッチするフローエントリが見つかった場合、見つかったフローエントリの同期フラグの値が「真」(true)であるか確認する機能部と、
受信パケットに送信元・送信先がマッチするフローエントリが見つからなかった場合、或いは、見つかったフローエントリの同期フラグの値が「真」(true)でなく「偽」(false)である場合、受信パケットに関係するフローエントリを当該コントローラに問い合わせ、応答を待つ機能部と、
受信パケットにマッチするフローエントリのうち、最も優先度の高いフローエントリを選択し、選択されたフローエントリのアクションを参照し、記載されている内容に従ってパケットを処理する機能部と
を更に具備する
ネットワークシステム。
<備考>
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
なお、本出願は、日本出願番号2012−006105に基づく優先権を主張するものであり、日本出願番号2012−006105における開示内容は引用により本出願に組み込まれる。

Claims (13)

  1. パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うスイッチと、
    前記スイッチに対して制御メッセージを送信して前記フローエントリの設定を行い、前記スイッチに設定した前記フローエントリと同一のフローエントリを保持し、フローエントリ単位で同期状態を管理し、フローエントリが非同期の場合、前記スイッチとの間で、特定のフローエントリを優先して同期するコントローラとを含み、
    前記スイッチが前記特定のフローエントリの同期後に、パケットを処理する
    ネットワークシステム。
  2. 請求項1に記載のネットワークシステムであって、
    前記特定のフローエントリは、フローエントリのルールに、ブロードキャストアドレス、マルチアドレス、又は、ワイルドカードを含む
    ネットワークシステム。
  3. 請求項1又は2に記載のネットワークシステムであって、
    前記コントローラ及び前記スイッチの各々は、
    フローエントリの集合であり、フローエントリ毎に、該フローエントリの同期状態を示す同期フラグの欄が設けられたフローテーブルを保持する手段と、
    一部のフローエントリを特殊エントリとし、特殊エントリの同期状態を示す特殊エントリ同期フラグを保持する手段と、
    セキュアチャネルの通信切断を検知した場合、全フローエントリの同期フラグ及び特殊エントリ同期フラグの値を偽(false)に更新する手段と
    を具備する
    ネットワークシステム。
  4. 請求項に記載のネットワークシステムであって、
    前記コントローラは、
    特殊エントリ同期フラグの値が偽(false)であることを検知した際、特殊エントリを同期して、前記コントローラ自身及び前記スイッチの各々に対して、同期した特殊エントリの同期フラグ及び特殊エントリ同期フラグの値を真(true)に更新する手段と、
    特殊エントリ同期フラグの値が真(true)であるが、前記スイッチが受信したパケットと特殊エントリがマッチしない場合、受信パケットと送信元・送信先がマッチするフローエントリを同期して、前記コントローラ自身及び前記スイッチの各々に対して、同期したフローエントリの同期フラグを真(true)に更新する手段と
    を更に具備する
    ネットワークシステム。
  5. 請求項又はに記載のネットワークシステムであって、
    前記スイッチは、
    特殊エントリ同期フラグの値が偽(false)である場合、受信パケットを破棄する手段と、
    特殊エントリ同期フラグの値が真(true)である場合、前記スイッチのフローテーブルから、受信パケットがマッチするフローエントリを検索する手段と、
    検索の結果、受信パケットにマッチする特殊エントリが見つかったか確認する手段と、
    受信パケットにマッチする特殊エントリが見つからない場合、受信パケットに送信元・送信先がマッチするフローエントリが見つかったか確認する手段と、
    受信パケットに送信元・送信先がマッチするフローエントリが見つかった場合、見つかったフローエントリの同期フラグの値が「真」(true)であるか確認する手段と、
    受信パケットに送信元・送信先がマッチするフローエントリが見つからなかった場合、或いは、見つかったフローエントリの同期フラグの値が「真」(true)でなく「偽」(false)である場合、受信パケットに関係するフローエントリを前記コントローラに問い合わせ、応答を待つ手段と、
    受信パケットにマッチするフローエントリのうち、最も優先度の高いフローエントリを選択し、選択されたフローエントリのアクションを参照し、記載されている内容に従ってパケットを処理する手段と
    を更に具備する
    ネットワークシステム。
  6. 請求項1乃至のいずれか一項に記載のネットワークシステムで使用されるコントローラ。
  7. 請求項1乃至のいずれか一項に記載のネットワークシステムで使用されるスイッチ。
  8. スイッチが、パケットをフローとして一律に制御するためのルールとアクションとが定義されたフローエントリに従って、受信したパケットの処理を行うことと、
    コントローラが、前記スイッチに対して制御メッセージを送信して前記フローエントリの設定を行うことと
    前記コントローラが、前記スイッチに設定したフローエントリと同一のフローエントリを保持し、フローエントリ単位で同期状態を管理し、フローエントリが非同期の場合、前記スイッチとの間で、特定のフローエントリを優先して同期することと
    前記スイッチが前記特定のフローエントリの同期後に、パケットを処理することと
    を含む
    経路情報同期方法。
  9. 請求項に記載の経路情報同期方法であって、
    前記コントローラ及び前記スイッチの各々が、
    フローエントリの集合でありフローエントリ毎に該フローエントリの同期状態を示す同期フラグの欄が設けられたフローテーブルを保持するステップと、
    一部のフローエントリを特殊エントリとし、特殊エントリの同期状態を示す特殊エントリ同期フラグを保持するステップと、
    セキュアチャネルの通信切断を検知した場合、全フローエントリの同期フラグ及び特殊エントリ同期フラグの値を(false)に更新するステップと
    を含む
    経路情報同期方法。
  10. 請求項に記載の経路情報同期方法であって、
    前記コントローラが、
    特殊エントリ同期フラグの値が偽(false)であることを検知した際、特殊エントリを同期して、前記コントローラ自身及び前記スイッチの各々に対して、同期した特殊エントリの同期フラグ及び特殊エントリ同期フラグの値を真(true)に更新するステップと、
    特殊エントリ同期フラグの値が真(true)であるが、前記スイッチが受信したパケットと特殊エントリがマッチしない場合、受信パケットと送信元・送信先がマッチするフローエントリを同期して、前記コントローラ自身及び前記スイッチの各々に対して、同期したフローエントリの同期フラグを真(true)に更新するステップと
    を更に含む
    経路情報同期方法。
  11. 請求項又は10に記載の経路情報同期方法であって、
    前記スイッチが、
    特殊エントリ同期フラグの値が偽(false)である場合、受信パケットを破棄するステップと、
    特殊エントリ同期フラグの値が真(true)である場合、前記スイッチのフローテーブルから、受信パケットがマッチするフローエントリを検索するステップと、
    検索の結果、受信パケットにマッチする特殊エントリが見つかったか確認するステップと、
    受信パケットにマッチする特殊エントリが見つからない場合、受信パケットに送信元・送信先がマッチするフローエントリが見つかったか確認するステップと、
    受信パケットに送信元・送信先がマッチするフローエントリが見つかった場合、見つかったフローエントリの同期フラグの値が「真」(true)であるか確認するステップと、
    受信パケットに送信元・送信先がマッチするフローエントリが見つからなかった場合、或い、見つかったフローエントリの同期フラグの値が「真」(true)でなく「偽」(false)である場合、受信パケットに関係するフローエントリを前記コントローラに問い合わせ、応答を待つステップと、
    受信パケットにマッチするフローエントリのうち、最も優先度の高いフローエントリを選択し、選択されたフローエントリのアクションを参照し、記載されている内容に従ってパケットを処理するステップと
    を更に含む
    経路情報同期方法。
  12. 請求項乃至11のいずれか一項に記載の経路情報同期方法におけるコントローラの処理を、電子機器に実行させるためのプログラムを格納した記憶媒体。
  13. 請求項乃至11のいずれか一項に記載の経路情報同期方法におけるスイッチの処理を、電子機器に実行させるためのプログラムを格納した記憶媒体。
JP2013554296A 2012-01-16 2013-01-15 ネットワークシステム、及び経路情報同期方法 Expired - Fee Related JP5842933B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013554296A JP5842933B2 (ja) 2012-01-16 2013-01-15 ネットワークシステム、及び経路情報同期方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012006105 2012-01-16
JP2012006105 2012-01-16
JP2013554296A JP5842933B2 (ja) 2012-01-16 2013-01-15 ネットワークシステム、及び経路情報同期方法
PCT/JP2013/050596 WO2013108761A1 (ja) 2012-01-16 2013-01-15 ネットワークシステム、及び経路情報同期方法

Publications (2)

Publication Number Publication Date
JPWO2013108761A1 JPWO2013108761A1 (ja) 2015-05-11
JP5842933B2 true JP5842933B2 (ja) 2016-01-13

Family

ID=48799186

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013554296A Expired - Fee Related JP5842933B2 (ja) 2012-01-16 2013-01-15 ネットワークシステム、及び経路情報同期方法

Country Status (5)

Country Link
US (1) US9444611B2 (ja)
EP (1) EP2806603A4 (ja)
JP (1) JP5842933B2 (ja)
CN (1) CN104067572A (ja)
WO (1) WO2013108761A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9401772B2 (en) * 2011-01-28 2016-07-26 Nec Corporation Communication system, control device, forwarding node, communication control method, and program
US9106515B2 (en) * 2012-10-22 2015-08-11 Futurewei Technologies, Inc. System and apparatus of a software-service-defined-network (SSDN)
EP3018867B1 (en) * 2013-08-20 2020-01-08 Huawei Technologies Co., Ltd. Method for processing user message and forwarding plane device
JP6311265B2 (ja) * 2013-10-17 2018-04-18 日本電気株式会社 通信中継装置、通信中継システム、中継定義情報の更新方法及び更新プログラム
JP6127900B2 (ja) * 2013-10-18 2017-05-17 富士通株式会社 パケット処理装置、パケット処理方法、パケット処理プログラム
US20160277488A1 (en) * 2013-10-23 2016-09-22 Telefonaktiebolaget Lm Ericsson (Publ) Load Balancing in a Distributed Network Management Architecture
CN108183861B (zh) * 2013-10-26 2021-09-07 华为技术有限公司 Sdn交换机获取精确流表项方法及sdn交换机、控制器、系统
FI20136138L (fi) * 2013-11-18 2015-05-19 Tellabs Oy Verkkoelementti ja kontrolleri verkkoelementin hallitsemiseksi
CN104683243B (zh) * 2013-11-26 2019-02-01 华为技术有限公司 一种数据处理方法、装置及系统
CN104734988B (zh) * 2013-12-23 2018-10-30 杭州华为数字技术有限公司 软件定义网络中路由控制的方法和开放流控制器
JP2015142344A (ja) * 2014-01-30 2015-08-03 日本電気株式会社 通信システム、制御装置、通信ノード、制御情報の設定方法及びプログラム
CN104869057B (zh) 2014-02-21 2019-03-01 中兴通讯股份有限公司 开放流交换机优雅重启处理方法、装置及开放流控制器
TWI531908B (zh) * 2014-04-24 2016-05-01 A method of supporting virtual machine migration with Software Defined Network (SDN)
JP2016034117A (ja) * 2014-07-31 2016-03-10 Kddi株式会社 経路設定装置、経路設定方法、経路設定プログラムおよび通信システム
JP2016034116A (ja) * 2014-07-31 2016-03-10 Kddi株式会社 経路設定装置、経路設定方法、経路設定プログラムおよび通信システム
JP6266484B2 (ja) * 2014-09-26 2018-01-24 アラクサラネットワークス株式会社 通信装置及び、通信装置の制御方法
JP6458534B2 (ja) * 2015-02-18 2019-01-30 日本電気株式会社 移動通信システムおよび経路選択方法
US9521071B2 (en) * 2015-03-22 2016-12-13 Freescale Semiconductor, Inc. Federation of controllers management using packet context
US10505834B2 (en) * 2015-03-27 2019-12-10 Gigamon Inc. Session aware adaptive packet filtering
US9742657B2 (en) * 2015-05-29 2017-08-22 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for resynchronization of forwarding states in a network forwarding device
CN106302265B (zh) * 2016-07-21 2019-08-06 新华三技术有限公司 报文转发方法及装置
US11349702B2 (en) 2016-07-21 2022-05-31 Nec Corporation Communication apparatus, system, rollback method, and non-transitory medium
CN108234422B (zh) * 2016-12-21 2020-03-06 新华三技术有限公司 资源调度方法及装置
CN111316606A (zh) * 2017-11-17 2020-06-19 瑞典爱立信有限公司 控制器-交换机网络中的优化调和

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003025766A1 (en) * 2001-09-14 2003-03-27 Nokia Inc. System and method for packet forwarding
US7660239B2 (en) * 2003-04-25 2010-02-09 Alcatel-Lucent Usa Inc. Network data re-routing
GB2420043B (en) * 2004-11-03 2006-11-22 3Com Corp Rules engine for access control lists in network units
RU2431921C2 (ru) * 2006-06-19 2011-10-20 Нтт Досомо, Инк. Базовая станция, мобильная станция, способ управления синхронизацией и интегральная схема
KR20080018148A (ko) * 2006-08-23 2008-02-27 한국전자통신연구원 패킷 기반 셀룰라 시스템에서 방송 및 멀티캐스트 서비스데이터의 전송 및 수신 방법
CN100531146C (zh) 2007-01-25 2009-08-19 华为技术有限公司 基于流转发的更新流转发表项内容的方法及设备
US7903665B2 (en) 2007-08-24 2011-03-08 Fujitsu Limited System and method for synchronizing packet forwarding information
JP5488980B2 (ja) 2010-02-08 2014-05-14 日本電気株式会社 コンピュータシステム、及び通信方法
JP5742834B2 (ja) 2010-03-05 2015-07-01 日本電気株式会社 通信システム、経路制御装置、パケット転送装置および経路制御方法
JP5495269B2 (ja) 2010-06-24 2014-05-21 株式会社明治機械製作所 ショットブラスタの噴出構造
US8897134B2 (en) * 2010-06-25 2014-11-25 Telefonaktiebolaget L M Ericsson (Publ) Notifying a controller of a change to a packet forwarding configuration of a network element over a communication channel
US9680750B2 (en) * 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US8958292B2 (en) * 2010-07-06 2015-02-17 Nicira, Inc. Network control apparatus and method with port security controls
US8964563B2 (en) * 2011-07-08 2015-02-24 Telefonaktiebolaget L M Ericsson (Publ) Controller driven OAM for OpenFlow

Also Published As

Publication number Publication date
EP2806603A1 (en) 2014-11-26
US20150016477A1 (en) 2015-01-15
US9444611B2 (en) 2016-09-13
EP2806603A4 (en) 2015-09-30
CN104067572A (zh) 2014-09-24
WO2013108761A1 (ja) 2013-07-25
JPWO2013108761A1 (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
JP5842933B2 (ja) ネットワークシステム、及び経路情報同期方法
JP5935873B2 (ja) ネットワークシステム、スイッチ、及びネットワーク構築方法
JP5660211B2 (ja) 通信経路制御システム、及び通信経路制御方法
JP5652630B2 (ja) ネットワークシステム、スイッチ、及び接続端末検知方法
JP5610247B2 (ja) ネットワークシステム、及びポリシー経路設定方法
JP5846221B2 (ja) ネットワークシステム、及びトポロジー管理方法
JP5811253B2 (ja) ネットワークシステム、及びネットワーク管理方法
EP2562970B1 (en) Switch, and flow table control method
JP5488979B2 (ja) コンピュータシステム、コントローラ、スイッチ、及び通信方法
JPWO2013147193A1 (ja) ネットワークアプライアンス冗長化システム、制御装置、ネットワークアプライアンス冗長化方法及びプログラム
WO2014175423A1 (ja) 通信ノード、通信システム、パケット処理方法及びプログラム
JP5966488B2 (ja) ネットワークシステム、スイッチ、及び通信遅延短縮方法
JP5495150B2 (ja) ネットワークシステム、ネットワーク機器、及び経路制御方法
JP5821641B2 (ja) ネットワークシステム、スイッチ、及びスイッチ間設定通知方法
JP2013115733A (ja) ネットワークシステム、及びネットワーク制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151102

R150 Certificate of patent or registration of utility model

Ref document number: 5842933

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees