JP6287443B2 - 制御装置、及びそのテーブル作成方法 - Google Patents

制御装置、及びそのテーブル作成方法 Download PDF

Info

Publication number
JP6287443B2
JP6287443B2 JP2014063728A JP2014063728A JP6287443B2 JP 6287443 B2 JP6287443 B2 JP 6287443B2 JP 2014063728 A JP2014063728 A JP 2014063728A JP 2014063728 A JP2014063728 A JP 2014063728A JP 6287443 B2 JP6287443 B2 JP 6287443B2
Authority
JP
Japan
Prior art keywords
entry
aggregation
entries
flow
switch
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.)
Active
Application number
JP2014063728A
Other languages
English (en)
Other versions
JP2015186213A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014063728A priority Critical patent/JP6287443B2/ja
Priority to US14/666,466 priority patent/US9819571B2/en
Publication of JP2015186213A publication Critical patent/JP2015186213A/ja
Application granted granted Critical
Publication of JP6287443B2 publication Critical patent/JP6287443B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/036Updating the topology between route computation elements, e.g. between OpenFlow controllers
    • 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

Description

本開示は、制御装置、及びそのテーブル作成方法に関する。
近年、ネットワークの分野では、Software Defined Networking(SDN)が注目され
ている。SDNは、ソフトウェアでネットワーク全体の挙動を制御する技術である。SDNを実現する標準として、OpenFlow(オープンフロー)技術が注目されている。
OpenFlowネットワークは、データ転送機能を備える“OpenFlowスイッチ”(OF−SW:以下「スイッチ」と表記することもある)と、経路制御を司る“OpenFlowコントローラ”(OFC:以下「コントローラ」と表記することもある)を備え、コントローラとスイッチとは“OpenFlowプロトコル”に従って、コミュニケーションを図る。
各スイッチは、自身に入力されたパケットに対する動作(アクション)を決定するための情報が記憶されたフローテーブルを備える。OpenFlowでは、“ルール(条件)”,“アクション(Action)”,及び“統計情報(Statistics)”の組が“フロー”と呼ばれる。フローテーブルは、フローに係る情報が格納されたエントリ(以下、「フローエントリ」と呼ぶ)の集合体である。
フローに係る情報(フローエントリ)は、コントローラによって生成され、“OpenFlowプロトコル”を用いて各スイッチに送信される。各スイッチは、コントローラから受信したフローをフローテーブルに記憶する。このように、コントローラは、コントローラ自身の配下にある各スイッチが有するフローテーブルを一元管理する。
特開2008−167340号公報 特開2013−21678号公報 特開平10−290232号公報 特開2000−253058号公報 国際公開2011−132568号
OpenFlowネットワークのスケーラビリティは、コントローラの処理能力や、各スイッチが有するフローテーブルに登録可能なフローエントリ数に依存する。フローテーブルに登録可能なフローエントリ数の上限は、スイッチが備えるメモリの容量によって規定される。
このため、コントローラは、スイッチへ送る複数のフローエントリを生成したときに、以下のようなフローエントリの集約を行っていた。すなわち、コントローラは、各フローエントリに含まれるパラメータを参照し、集約後のフローエントリ数が最少となる集約ルールを作成する。
次に、コントローラは、集約ルールに従って2以上のフローエントリを非可逆的な手法で1つの集約エントリにマージする。そして、コントローラは、集約エントリと未集約のエントリ(存在する場合)とをスイッチへ送っていた。その後、新たな(追加に係る)フ
ローエントリが作成された場合には、コントローラは、追加のフローエントリを集約ルールに従って集約できるか否かを判定し、集約できない場合に限って追加のフローエントリをスイッチに送っていた。
上記のようなコントローラには、以下の問題があった。すなわち、上記集約ルールで用いられるパラメータがパラメータ“A”を含むと仮定する。この仮定において、追加のエントリにおけるパラメータ“A”の値と上記集約エントリにおけるパラメータ“A”の値とが異なる場合には、追加のエントリを集約エントリに集約できない。このため、パラメータ“A”の値が異なる追加のエントリが生成される毎に、スイッチで保持するフローエントリの数が増加することが起こり得る。
上記問題は以下の理由によって生じていた。すなわち、エントリの集約は、テーブルのデータサイズを低減するために行われる。このため、エントリの集約が行われたときは、集約前のエントリは廃棄(消去)される。コントローラはこのような考え方に倣い、集約前のフローエントリを保持しない。このように、集約前のフローエントリが存在しないため、フローエントリ数が増加しても、集約ルールを変更することができなかった。
本開示は、動的な集約ルールの変更を可能としてスイッチ上のエントリ数の増加を抑えることが可能な技術を提供することを目的とする。
本開示は、各エントリがパケットの識別情報と前記識別情報に合致するパケットに対する動作を示す動作情報とを含むエントリ群で形成されたテーブルを有し、入力されたパケットに対応するエントリを前記テーブルから検出し、検出されたエントリ中の動作情報に従って前記入力されたパケットに対する動作を行うスイッチに対して前記エントリ群を供給する制御装置であって、
前記スイッチに対応する複数のエントリを生成する生成部と、
前記複数のエントリの内容に基づき作成された集約ルールを用いて集約された集約エントリ群を前記エントリ群として前記スイッチに送信する送信部と、
前記制御装置の内部又は外部に設けられた前記複数のエントリを記憶する記憶部から前記複数のエントリを取得する取得部と、
前記複数のエントリと前記複数のエントリの生成後に前記生成部で生成された追加のエントリとについて、前記複数のエントリ及び前記追加のエントリの内容に基づき再作成した再集約ルールを用いて前記複数のエントリ及び前記追加のエントリを集約した再集約エントリ群を生成し、当該再集約エントリ群を前記エントリ群として前記送信部に送信させる再集約処理を行う制御部と、
を含む制御装置である。
本開示によれば、動的な集約ルールの変更を可能としてスイッチ上のエントリの増加を抑えることが可能となる。
図1は、関連技術に係るネットワークシステムの構成例を示す。 図2は、フローテーブルの一例を示す。 図3は、関連技術におけるコントローラによるフローエントリの集約手順の例を示す。 図4は、関連技術の問題点の説明図である。 図5は、実施形態1に係るネットワークシステムの構成例を示す。 図6は、ネットワークシステムの動作例を示すシーケンス図である。 図7は、コントローラとして動作可能な情報処理装置のハードウェア構成例を示す図である。 図8は、スイッチとして動作可能な情報処理装置のハードウェア構成例を示す図である。 図9は、図6に示したCPUによる処理例を示すフローチャートである。 図10は、実施形態1の具体例の説明図である。 図11は、実施形態1の具体例の説明図である。 図12は、実施形態1の具体例の説明図である。 図13は、実施形態1の具体例の説明図である。 図14は、実施形態2に係るネットワークシステムの構成例を示す図である。 図15は、実施形態2における動作例を示すシーケンス図である。 図16は、実施形態2におけるCPUの処理を示すフローチャートである。 図17は、図16の12及び14の処理の具体例の説明図である。 図18は、実施形態3に係るネットワークシステムの構成例を示す図である。 図19は、実施形態3における動作例を示すシーケンス図である。 図20は、実施形態3におけるCPUの処理を示すフローチャートである。
以下、図面を参照して本発明の実施形態について説明する。実施形態の構成は例示であり、本発明は、実施形態の構成に限定されない。
〔関連技術〕
最初に、本開示の関連技術について説明する。図1は、関連技術に係るネットワークシステムの構成例を示す。図1において、ネットワークシステムは、クラウドマネージャ1と、コントローラ(OFC)2と、複数のスイッチ(OF−SW)3と、複数のホスト(Host)4を含んでいる。図1では、複数のスイッチ3の例として、スイッチ#1〜#4が図示されている。また、複数のホスト4の例として、ホスト#1〜#4が例示されている。
クラウドマネージャ1は、各ホスト#1〜#4に対して、仮想マシン(VM)の生成・削除、Internet Protocol(IP)アドレスやVirtual Local Area Network(VLAN)−I
D付与等に関する設定要求を行う。VLAN−IDは、仮想LANの識別情報である。クラウドマネージャ1は、各ホスト#1〜#4内で生成された仮想マシンの情報(VM情報)を記憶するデータベース(DB)11を有している。
図1に示す例では、ホスト#1上で、仮想マシン(VM)1−1,VM1−2,及びVM1−2が生成されている。また、ホスト#2上で、VM2−1,及びVM2−2が生成されている。また、ホスト#3上で、VM3−1,及びVM3−2が生成されている。また、ホスト#4上で、VM4−1が生成されている。
各スイッチ3(スイッチ#1〜#4)は、フローテーブル31を含んでいる。フローテーブル31は、個々のフロー(スイッチに入力される個々のパケット)に対するスイッチ3の動作が記述されたエントリ(フローエントリと呼ぶ)の集合体である。
図2は、フローテーブル31の一例を示す。フローテーブル31を形成するフローエントリは、フローの識別情報(フローID)に対応する、“ルール(条件)”,“アクショ
ン(Action)”,及び“統計情報(Statistics)”を含んでいる。
“ルール(条件)”は、スイッチに入力されたパケットの識別条件(フローの定義条件)を示す情報であり、主にパケットのヘッダフィールドに設定されるパラメータの組み合わせで表現される。“ルール”は、“ヘッダフィールド”と呼ばれることもある。OpenFlowで規定されているパラメータには、以下のものがある。“ルール”は、「パケットの識別情報」の一例である。
・“Switch Port (Ingress Port):受信(入力)ポート”,
・“MAC src:送信元MAC(Media Access Control)アドレス”
・“MAC dst:宛先MACアドレス”,
・“Eth type:プロトコル種別”,
・“VLAN−ID”,
・“VLAN Priority: VLAN PCP(Priority Code Point)値”,
・“IP src:IP送信元アドレス”,
・“IP dst:IP宛先アドレス”,
・“IP Protocol number:プロトコル番号”,
・“IP ToS bits:ToS(Type of Service)値”
・“Transport src port:送信元ポート番号”,
・“Transport dst port:宛先ポート番号”
“アクション”は、“ルール”に合致(マッチ)したパケットの処理を指定する情報である。例えば、図2に示すように、以下のようなものがある。“アクション”は「動作情報」の一例である。
・“ALL:他の全ポートへ転送”,
・“CONTROLLER:コントローラへ転送”,
・“LOCAL:特定の1ポートへ転送”
・“TABLE:フローテーブルのアクションを実行”,
・“IN_PORT:受信ポートへ送信(受信ポートから出力)”
“アクション”には、複数のアクションを定義することができる。また、“アクション”の定義がないときには、“Drop:パケットの廃棄”が行われるようにすることができる。統計情報として、或るルールに合致するパケット数やパケット量がカウントされる。このような統計情報は、アクションを実行するための条件として使用することができる。
スイッチ(OF−SW)3は、入力されたパケットのヘッダフィールドと“ルール”とを比較し、合致するルールが発見されると、当該ルールが記憶されたエントリ中の“アクション”を参照し、“アクション”で定義された動作を行う。例えば、スイッチ3に入力されたパケットが図2のフローID“1”のフローエントリに格納された“Rule1”に合致するときには、スイッチ3は、当該パケットを“アクション”の内容に従ってポートp1から送信する。なお、フローID“1”のフローエントリの統計情報は、例えば、“1000byte”のパケットが転送されたことを意味する。
コントローラ(OFC)2は、通信情報取得部21、フローエントリ算出部22、集約ルール作成部23、フロー情報記憶部24を含む。通信情報取得部21は、クラウドマネージャ1内のDB11から仮想マシン(VM)間通信情報(各VMのIPアドレス,VL
AN−ID等)を取得する。VM間通信情報は、当該VM間通信情報に対応するVM間通
信が実際に行われる前にコントローラ2に入力される。
フローエントリ算出部22は、VM間通信情報を用いて、各スイッチ3(各スイッチ#1〜#4)に対応するフローエントリを生成する。集約ルール作成部33は、フローエントリ算出部22にて生成された複数のフローエントリに対する集約ルールを作成し、集約ルールに従って複数のエントリが集約された集約エントリ群をスイッチ3毎に生成する。
各集約エントリ群は、対応するスイッチ3に送信され、各スイッチ3のフローテーブル31に登録される。
また、各スイッチ3に送った集約エントリ群は、フロー情報として、フロー情報記憶部24に記憶される。これによって、コントローラ2は、各スイッチ3のフローテーブル31の登録内容を一元的に管理することができる。
集約エントリ群を受信したスイッチ3は、当該集約エントリ群をフローテーブル31に格納(登録)する。フローテーブル31への登録は、実際のVM間通信が開始される前に行われる。これによって、スイッチ3に未知のフローに係るパケットが入力され、Packet-In処理(未知のフローに対するアクションについてコントローラ2に問い合わせを行う
動作)が発生しないようになっている。
図3は、関連技術におけるコントローラによるフローエントリの集約手順の例を示す。コントローラの通信情報取得部21は、クラウドマネージャ1内のDB11からVM間通信情報を取得する。図3中のテーブル(1)は、DB11から得られたVM間通信情報の一例を示す。VM通信情報として、VM1−1,VM1−2,VM1−3,VM3−1,及びVM3−2のそれぞれに関して、“VM名”,“IPアドレス”,“VLAN−ID”,及び“通信先VM”が得られた例が示されている。
次に、フローエントリ算出部22が、VM間通信情報に基づいて、各スイッチ3(スイッチ#1〜#4)に対応するフローエントリの集合(フローテーブル)を生成する。図3中のテーブル(2)は、フローエントリ算出部22がスイッチ#1用のフローエントリを算出した結果を示す。テーブル(2)の例では、スイッチ#1用の3つのフローエントリが生成されている。
フローエントリは、“ルール”としての“Src-IP:IP送信元アドレス”,“Dst-IP:IP宛先アドレス”及び“VLAN−ID”の組み合わせと、当該ルールに対応する“アクション”とを含んでいる。例えば、テーブル(2)の一番上のフローエントリは、IP送信元アドレス“10.0.0.3”,IP宛先アドレス“10.0.1.2”,VLAN−ID“10”を有するパケットはポートp4から出力(送信)することが定義されている。
集約ルール作成部23は、フローエントリ算出部22によって生成(算出)されたフローエントリの集合に対して集約が可能か否かを判定し、例えば、フローエントリ数が最少となるパラメータに基づいてフローエントリの集約を行う。
テーブル(2)の例では、パラメータ“Action”の内容は共通である。また、上から2番目と3番目のフローエントリは、パラメータ“Dst-IP”の値が共通である。また、上から1番目と3番目のフローエントリは、パラメータ“VLAN-ID”の値が共通である。従っ
て、“Dst-IP”又は“VLAN-ID”を用いてフローエントリを集約可能であることが分かる
。この場合、予め定められた所定ルール(優先順序)に従って、集約に用いるパラメータを決定する。図3の例では、集約ルール作成部23が“Dst-IP”に注目し、“Dst-IP”と“Action”とが共通のフローエントリを集約する集約ルールを作成したと仮定する。
図3中のテーブル(3)は、集約ルールに従ってテーブル(2)のフローエントリ群が集約された例を示す。テーブル(3)において、テーブル(2)の上から2番目と3番目のフローエントリはマージされ、1つの集約エントリに変換されている。集約されたフローエントリにおけるアスタリスク“*”は、“Don't care(何でも良い)”を意味する(“ワイルドカード”とも呼ばれる)。
テーブル(3)の内容(集約エントリ群)は、スイッチ#1へ送信されるとともに、フロー情報記憶部24に記憶される。フロー情報記憶部24は、各スイッチ3におけるフローテーブル31を管理するために使用される。このため、集約前のフローエントリ、すなわち、テーブル(2)の内容は廃棄される。
これまでの説明で分かるように、フローエントリの集約は、集約前のフローエントリの共通部分を残し、共通部分以外の部分は“Don't care”に置き換えることでなされる非可逆的な処理である。このため、集約エントリから集約前のフローエントリを復元することはできない。
このため、コントローラ2は、集約ルール『“Dst-IP”と“Action”とが共通のフローエントリを集約する』を維持する。このように、関連技術では、集約前のフローエントリを復元できないので、集約ルールを変更することはできず、最初に作成された集約ルールが固定的に使用される。
図4は、関連技術の問題点の説明図である。図4に示すテーブル(4)は、通信情報取得部21が、DB11から新たに取得したVM間通信情報の例を示す。テーブル(4)に含まれるエントリは、先に取得されたテーブル(1)との差分を示し、テーブル(4)は、新たに開始される3つのVM間通信を示す。
フローエントリ算出部22は、テーブル(4)の内容に従った新たなフローエントリを生成する。集約ルール作成部23は、フロー情報記憶部24に記憶されたスイッチ#1のフローテーブルの内容(テーブル(3))を読み出し、新たなフローエントリを追加する。
図4中のテーブル(5)は、スイッチ#1用のテーブル(3)に、テーブル(4)に基づき作成した新規のフローエントリが追加された状態を示す。テーブル(5)において、上から1番目および2番目のフローエントリ(破線矩形で囲まれた2つのエントリ)が追加のフローエントリに該当する。
集約ルール作成部23は、テーブル(5)に対して、先に作成した集約ルールに従い、上から2番目のフローエントリと3番目のフローエントリとをマージする。しかし、上から1番目のフローエントリは、“Dst-IP”の値が異なるため、集約できない。従って、テーブル(6)に示すように、スイッチ#1へ送る集約エントリ群の内容は、2つの集約フローエントリと、未集約の1つのフローエントリからなる3つのフローエントリを含む状態となる。このようなテーブル(6)の内容が、スイッチ#1へ送られるとともに、フロー情報記憶部24に記憶される。
従って、関連技術では、“Dst-IP”の値が異なるフローエントリが新たに生成される毎に、スイッチ#1のフローテーブル31におけるフローエントリ数は増加する状態となる。このように、関連技術では、最初に作成された集約ルールが固定的に使用されるため、十分なフローエントリ数の削減効果を得ることができなかった。
上記問題は、以下を理由として生じる。本来的に、エントリの集約は、テーブルを記憶するメモリ容量に上限があるため、テーブルのデータサイズを小さくするために行われる。従って、エントリが集約された場合には、集約前のエントリは無用のものとして廃棄されるのが通常である。既存のL3スイッチ、ルータ等の通信機器では、上記のような集約前のエントリの廃棄は、通常のこととして行われていた。
しかしながら、OpenFlowでは、コントローラ(経路制御機構)とスイッチ(パケット転
送機構)とが分離されており、それぞれを異なる物理装置に実装することができる。この場合、コントローラ側で集約前のフローエントリ群を保存しておいても、スイッチ側のメモリ容量を圧迫することがない。
むしろ、コントローラ側で集約前のフローエントリを保存しておけば、フローエントリが追加されたときに、集約前のフローエントリと追加のフローエントリとについて既存の集約ルールと異なる集約ルールでの再集約を試行することができる。換言すれば、フローエントリが追加された時点でフローエントリ数が最少となる集約ルールでフローエントリを再集約することが可能となる。以下に説明する実施形態は、動的な集約ルールの変更を可能とすることによって、フローエントリ数の増加を抑えることのできるコントローラについて説明する。
〔実施形態1〕
図5は、実施形態1に係るネットワークシステムの構成例を示す。図5において、ネットワークシステムは、クラウドマネージャ1と、コントローラ(OFC)2Aと、コントローラ2Aとネットワークを介して接続された複数のスイッチ(OF−SW)3と、複数のホスト(Host)4とを含んでいる。コントローラ2Aは、「制御装置」の一例であり、スイッチ3は「スイッチ」の一例である。
コントローラ2Aは、ネットワークを介してクラウドマネージャ1及び複数のスイッチ3と接続されている。図5では、複数のスイッチ3の例示として、スイッチ#1〜#4が図示されている。スイッチ#1及びスイッチ#4のそれぞれは、スイッチ#2及びスイッチ#3と接続されている。
また、図5では、複数のホスト4の例として、ホスト#1〜#4が図示されている。ホスト#1及びホスト#2は、スイッチ#1に接続されており、ホスト#3及びホスト#4は、スイッチ#4に接続されている。
クラウドマネージャ1は、ネットワークを介してホスト#1〜#4と接続されており、関連技術と同様の構成を有する。すなわち、各ホスト#1〜#4に対して、仮想マシン(VM)の生成・削除、IPアドレスやVLAN−ID付与等に関する設定要求を行う。また、クラウドマネージャ1は、各ホスト#1〜#4内で生成された仮想マシンの情報(VM情報)を記憶するデータベース(DB)11を備えている。
図5では、ホスト#1上で、VM1−1,VM1−2,及びVM1−3が生成されている。また、ホスト#2上で、VM2−1,及びVM2−2が生成されている。また、ホスト#3上で、VM3−1,及びVM3−2が生成されている。また、ホスト#4上で、VM4−1が生成されている。
但し、仮想マシン(VM)は、通信を行うエンティティ(主体)の例示であり、通信を行うエンティティが仮想マシンであること、ホストが仮想マシンを生成することは必須の要件ではない。ホスト#1〜#4自体(実マシン)が通信エンティティであっても良い。
なお、クラウドマネージャ1は、例えば、ネットワークに接続されたサーバ装置であり、専用又は汎用のコンピュータを用いて実現することができる。また、各ホスト4は、パーソナルコンピュータ(PC),ワークステーション(WS),タブレット端末,スマートフォンのような、プロセッサ,メモリ及び通信インタフェースを有するコンピュータ(情報処理装置)であり、プロセッサがプログラムを実行することによって仮想マシン(VM)を形成することができる。
各スイッチ3(各スイッチ#1〜#4)は、関連技術と同様に、フローテーブル31を含んでいる。フローテーブル31は、フローエントリの集合体である。フローエントリのデータ構造(要素(フィールド)の内容)は、関連技術と同様である(図2参照)。各スイッチ3は、OpenFlowプロトコルに従った通信をコントローラ2Aと行い、フローテーブル31に登録するフローエントリをコントローラ2Aから受け取ることができる。
コントローラ2Aは、通信情報取得部21と、フローエントリ算出部22と、集約ルール作成部23と、フロー情報記憶部24Aと、再集約処理部25と、トポロジデータベース(トポロジDB)26とを含む。
通信情報取得部21は、クラウドマネージャ1内のDB11から仮想マシン(VM)間通信情報(各VMのIPアドレス,VLAN−ID等)を取得する。VM間通信情報は、当該VM間通信情報に対応するVM間通信が実際に行われる前にコントローラ2に入力される。但し、上記したように、実施形態の適用範囲は、VM間通信に限定されない。VM間通信情報は、通信エンティティ(送信ホストと受信ホスト)間の通信情報の例示である。
フローエントリ算出部22は、VM間通信情報を用いて、各スイッチ3用のフローエントリを生成する。フローエントリ算出部22によって生成された各スイッチ3に対応するフローエントリの集合(フローエントリ群)は、集約前フロー情報として、フロー情報記憶部24Aに記憶される。フローエントリ算出部22は、「生成部」の一例である。
集約ルール作成部23は、フローエントリ算出部22で生成された複数のフローエントリの内容を解析し、その時点でフローエントリ数が最少となる集約ルールを作成する。集約ルール作成部23は、作成した集約ルールに従って、フローエントリの集約を行う。なお、集約ルール作成部23は、「集約部」の一例である。
集約ルール作成部23によって集約された後のフローエントリ(集約エントリ群)は、対応するスイッチ3に送られる。本実施形態では、集約後のエントリの内容(スイッチ3が保持するエントリの内容)は、コントローラ2A側で保持しない。すなわち、コントローラ2Aは、必要に応じてフロー情報記憶部24Aに記憶されたフロー情報(集約前のフローエントリの情報)を用いて集約後のエントリ群を生成する。もっとも、各スイッチ3に対応する集約エントリ群は、各スイッチ3におけるフローテーブル31の登録内容を示す情報として、フロー情報記憶部24Aに記憶されることができる。
再集約処理部25は、通信情報取得部21で新たなVM間通信情報が取得され、且つ新たなVM間通信情報に基づくフローエントリがフローエントリ算出部22で生成された場合に、再集約処理を行う。再集約処理部25は、「制御部」の一例である。
トポロジDB26は、スイッチ3間の接続関係に係るトポロジ情報を記憶している。トポロジ情報は、各VM間通信に関して、パケットが通過するスイッチ3,各スイッチ3におけるパケットの受信ポート及び送信ポートを示す情報を含む。このような情報は、例えば、静的に設定されても良く、或いは、コントローラ2Aが各スイッチ3との通信によって取得するようにしても良い。
<動作例>
図6は、ネットワークシステムの動作例を示すシーケンス図である。以下に説明する動作は、各スイッチ3のフローテーブル31に対して実行される。図6において、通信情報取得部21は、クラウドマネージャ1から通信情報を取得する(図6<1>)。通信情報取得部21は、通信情報をフローエントリ算出部22に与える(図6<2>)。
フローエントリ算出部22は、通信情報を用いてフローエントリを算出する(図6<3>)。フローエントリ算出部22は、算出された複数のフローエントリ(フローエントリ群)を、フロー情報として集約ルール作成部23に送るとともに(図6<4>)、フロー情報記憶部24Aに記憶する(図6<5>)。
集約ルール作成部23は、フローエントリ群に対する集約ルールを作成し、作成した集約ルールを用いて集約エントリ群を算出する(図6<6>)。集約エントリ群は、1以上の集約エントリ(複数のフローエントリのマージによって作成されたエントリ)と、1以上の集約できなかったフローエントリ(存在する場合)とを含む。集約エントリ群は、対応するスイッチ3に送信される(図6<7>)。
その後、新規の通信が発生すると(図6<8>)、通信情報取得部21は、新規の通信を含む通信情報を取得し(図6<9>)、フローエントリ算出部22に送る(図6<10>)。フローエントリ算出部22は、新規の通信に係るフローエントリを算出する(図6<11>)。フローエントリ算出部22は、フローエントリ群をフロー情報としてフロー情報記憶部24に記憶する(図6<12>)。
本動作例では、フローエントリの追加を契機として、再集約処理が実行される、このため、フローエントリ算出部22は、フローエントリ集約の解除通知を再集約処理部25に与える(図6<13>)。再集約処理部25は、集約前のフローエントリ群をフロー情報記憶部24から読み出す(図6<14>)。
再集約処理部25は、集約前のフローエントリ群に対する集約ルールを再作成し、再作成した集約ルール(新集約ルール)を用いて再集約エントリ群を生成する(図6<15>)。そして、再集約エントリ群は、対応するスイッチ3に送られる(図6<16>)。なお、図6<7>でスイッチ3に送られる集約エントリ群や図6<16>でスイッチ3に送られる再集約エントリ群は、フロー情報記憶部24Aに記憶されるようにしても良い。
<コントローラのハードウェア構成>
図7は、上述したコントローラ2Aとして動作可能な情報処理装置(コンピュータ)50のハードウェア構成例を示す図である。情報処理装置50は、例えば、PC,WS,サーバマシンのような専用又は汎用のコンピュータを適用することができる。但し、情報処理装置50の種類は、上記の例示に制限されない。
図7において、情報処理装置50は、バスBを介して相互に接続されたCentral Processing Unit(CPU)51,Random Access Memory(RAM)52,及びRead Only Memory(ROM)53を備えている。また、情報処理装置50は、バスBに接続されたハード
ディスクドライブ(HDD)54,ネットワークインタフェース(NWI/F)55,及び入力インタフェース(入力I/F)56を備えている。さらに、情報処理装置50は、バスBに接続された出力インタフェース(出力I/F)57,入出力インタフェース(入出力)58,及びドライブ装置59を備えている。
RAM52は、CPU51の作業領域として使用される。ROM53及びHDD54のそれぞれは、プログラムやプログラムの実行に際して使用されるデータを記憶する。HDD54は、プログラムの実行結果として生成されたデータを記憶することもできる。HDDの代わりに、又はHDD54に加えて、Solid State Drive(SSD)が設けられてい
ても良い。
入出力I/F58には、半導体メモリ60が着脱自在に接続される。半導体メモリ60は、可搬型記憶媒体の一例であり、所望のデータを記憶する。入出力I/F58は、半導
体メモリ60からのデータの読み出し、書き込みを行う。半導体メモリ60は、例えばフラッシュメモリ、SRAM,USBメモリである。但し、半導体メモリ60の種別は、これらに限定されない。ドライブ装置59は、可搬型記憶媒体の一例であるディスク記憶媒体61からのデータの読み出し、或いはデータの書き込みを行う。RAM52,ROM53,HDD54,半導体メモリ60,ディスク記憶媒体61などは、「記憶部」、「記憶媒体」,「メモリ」,或いは「記憶装置」の一例である。
入力I/F56には、入力装置62が接続される。入力装置62は、例えば、ボタン、キー,ポインティングデバイス(マウスなど),タッチパネルの少なくとも1つを含む。入力装置62は、情報やデータの入力に使用される。
出力I/F57には、表示装置(ディスプレイ装置)63が接続される。表示装置63は、各種の情報を表示する。NWI/F55は、通信機能を司るインタフェース回路を含み、スイッチ3やクラウドマネージャ1などとネットワークを介して接続される。NWI/F55は、例えば、LANカードのようなネットワークインタフェースカードを適用することができる。NWI/F55は、各スイッチ3やクラウドマネージャ1とデータを送受信する「送信部」及び「受信部」として動作する。例えば、NWI/F55は、各スイッチ3に対して集約エントリ群や再集約エントリ群のような各スイッチ3のフローテーブル31への登録内容を送信する送信部として動作する。
CPU51は、ROM53,HDD54,半導体メモリ60,ディスク記憶媒体61の少なくとも1つに記憶されたプログラムをRAM52にロードして実行することによって、コントローラ2Aとして動作する。CPU51は、「プロセッサ」或いは「制御装置」の一例である。
プログラムの実行によって、CPU51は、図5に示した通信情報取得部21,フローエントリ算出部22,集約ルール作成部23,再集約処理部25として動作する。フロー情報記憶部24,及びトポロジ27は、例えば、RAM52,HDD54の少なくとも1つに記憶される。
なお、図7に示した通信情報取得部21,フローエントリ算出部22,集約ルール作成部23,再集約処理部25の少なくとも1つは、ハードウェアで形成されていても良い。ハードウェアは、例えば、電気・電子回路、集積回路(IC,LSI,Application Specific Integrated Circuit(ASIC)の少なくとも1つ)の少なくとも1つを適用する
ことができる。また、ハードウェアは、Field Programmable Gate Array(FPGA)の
ようなプログラマブルロジックデバイス(PLD)を含むことができる。
<スイッチのハードウェア構成例>
図8は、スイッチ3として動作可能な情報処理装置(コンピュータ)70のハードウェア構成例を示す図である。情報処理装置70は、PC,WS,サーバマシンのような専用又は汎用のコンピュータや、L3スイッチ,ルータのような通信機器を適用することも可能である。但し、情報処理装置70の種類は、上記の例示に制限されない。
図8において、情報処理装置70は、バスB1を介して相互に接続されたCPU71,RAM72,ROM73,及びNWI/F74を備えている。RAM72は、CPU71の作業領域として使用される。ROM73は、CPU71によって実行されるプログラムや、プログラムの実行に際して使用されるデータを記憶する。
NWI/F74は、ネットワークを介して送信ホスト,受信ホスト,他のスイッチ3,及びコントローラ2Aと接続される。NWI/F74は、通信に係る処理を司る。すなわ
ち、NWI/F74は、送信ホスト又は他のスイッチ3から所定の受信ポートで受信されたパケットを、CPU71からの指示に応じた出力ポートから送信する。これによって、パケットが次のホップに相当する他のスイッチ3又は受信ホストで受信される。
CPU71は、ROM73に記憶されたプログラムをRAM72にロードして実行することによって、スイッチ3として動作する。例えば、RAM72には、フローテーブル31の記憶領域が形成されており、NWI/F74で受信されたフローエントリがRAM72のフローテーブル31に記憶(登録)される。
CPU71は、NWI/F74でパケットが受信されると、フローテーブル31(各フローエントリの“Rule”)を参照し、対応するフローエントリを検出する。続いて、CPU71は、検出したフローエントリに含まれた“Action”の内容に従ってパケットに対する動作(処理)を行う。例えば、CPU71は、パケットを“Action”で規定された出力ポートから送信(転送)する処理を行う。
<コントローラにおける処理>
図9は、図6に示したCPUによる処理例を示すフローチャートである。図6の01において、CPU51は、通信情報取得部21として動作し、クラウドマネージャ1から通信情報を取得する。
次の02において、CPU51は、フローエントリ算出部22として動作し、各スイッチに対するフローエントリを算出する。このとき、CPU51は、算出したフローエントリ(集約前のフローエントリ群)をフロー情報記憶部24Aに記憶する。
次の03において、CPU51は、集約ルール作成部23として動作し、各スイッチ3に登録するフローエントリ数が最少となるパラメータを選択する。この選択が集約ルールの作成に該当する。CPU51は、選択したパラメータの値が共通のフローエントリを1つの集約エントリにマージすることで、フローエントリの集約を行う。
次の04において、CPU51は、フローエントリの集約によって生成された集約エントリ群を各スイッチ3にNWI/F55を介して送信する処理を行う。その後、CPU51は、新規の通信要求(通信情報)を待ち受ける状態になる(05)。
新規の通信情報が取得されると(05,YES)、CPU51は、フローエントリ算出部22として動作し、新規の(追加の)フローエントリを算出する(06)。CPU51は、追加のフローエントリの算出を契機として、フローエントリの集約を解除する(07)。
次の08において、CPU51は、再集約処理部25として動作し、フロー情報記憶部24Aから集約前のフローエントリ群を読み出し、集約前のフローエントリ群と追加のフローエントリとについて、再集約処理を行う。すなわち、CPU51は、集約前のフローエントリ群と追加のフローエントリについて、フローエントリ数が最少となるパラメータを決定する(集約ルール再作成)。続いて、CPU51は、再作成した集約ルールで、集約前のフローエントリ群及び追加のフローエントリを再集約した再集約エントリ群を生成する。07及び08の処理は、追加のフローエントリに係るスイッチ3毎に実行される。
そして、次の09において、CPU51は、再集約処理部25として動作し、各スイッチ3に対してNWI/F55を介して再集約エントリ群を送信する処理を行う。なお、図9では、09の処理後に処理が終了するようになっているが、処理を05に戻しても良い。
<具体例>
次に、実施形態1に係るネットワークシステム(コントローラ2A)での処理の具体例について説明する。図10〜図13は、実施形態1の具体例の説明図である。実施形態1におけるVM間通信の発生状況は、関連技術と同じである。最初に、VM1−1とVM3−1との通信,VM1−2とVM3−1との通信,及びVM1−3とVM3−2との通信が開始されると仮定する。このとき、これらの通信に係る通信情報がコントローラ2Aの通信情報取得部21で取得される。通信情報の内容は、図3のテーブル(1)に示す通りである。
すると、コントローラ2Aのフローエントリ算出部22が各スイッチ3用のフローエントリを作成し、集約ルール作成部23が、集約ルールを作成し、集約ルールに従って、フローエントリ群の集約を行う。図11のテーブル<1>は、スイッチ#1について作成されたフローエントリ群を示し、テーブル<2>は、フローエントリ群の集約結果(集約エントリ群)を示す。集約ルールの作成及び集約の具体的な手法は、関連技術と同様であるので説明を省略する。テーブル<2>において、フローエントリ群は、“Dst-IP”及び“Action”の各値が共通のフローエントリが集約されている。
その後、新規の(追加の)通信情報として、VM2−1とVM3−2との通信,VM2−2とVM4−1の通信とが通信情報取得部21で取得されたと仮定する。通信情報の内容(差分)は、図4のテーブル(4)に示す通りである。
すると、フローエントリ算出部22が、追加のフローエントリとして、図11のテーブル<3>における上から1番目のフローエントリと2番目のフローエントリを作成する。テーブル<3>は、スイッチ#1の集約エントリ群と追加のエントリ(破線矩形で囲まれた2つのフローエントリ)とを合わせた状態を示す。
再集約処理部25は、フローエントリの追加を契機として、集約エントリ群の集約を解除する。図12は、第1の再集約方法の例を示す。再集約処理部25は、フロー情報記憶部24Aから得た集約前のフローエントリ群と追加のフローエントリとを一つにまとめる(図12のテーブル<4>参照)。
次に、再集約処理部25は、テーブル<4>を参照し、集約後のフローエントリ数が最少となるパラメータを選択する。図12に示す例では、VLAN−IDを用いて集約した場合が、フローエントリ数が最少となることが発見される。
すると、再集約処理部25は、“Dst-IP”(既存の集約ルール)の代わりに、“VLAN-ID”の値と“Action”の値が共通のフローエントリを集約エントリにマージする集約ルー
ルへの変更を行う(集約ルールの再作成)。再集約処理部25は、再作成した集約ルールで集約を行う。この結果、図12のテーブル<5>に示すように、2つの集約エントリからなる再集約エントリ群が生成される。
このような第1の再集約方法(パラメータの変更)によって、スイッチ#1に登録するフローエントリ数は2となる。関連技術では、図4のテーブル(6)に示したように、フローエントリ数は3となる。よって、実施形態1によれば、再集約処理によって、フローエントリ数を低減することができる。
図13は、第2の再集約方法の例を示す。集約の解除によって得られたフローエントリ群(追加のフローエントリを含む)が、図13のテーブル<4A>に示すような内容である場合を仮定する。この場合、VLAN−IDに従ってフローエントリが集約しても、フ
ローエントリ数が3となってしまう(前の集約ルールと結果が異ならない)ことがあり得る。
再集約処理部25は、集約ルールの作成に用いるパラメータ候補を追加する。すなわち、第1の再集約方法では、クラウドマネージャ1から取得される通信情報で得られるパラメータが、集約ルールの作成に係るパラメータ候補として用いられている。すなわち、通信情報に含まれた送信元IPアドレス,宛先IPアドレス及びVLAN−IDがパラメータ候補として用いられ、これらのパラメータ候補の中から集約ルールに用いるパラメータが選択されている。
第2の再集約方法では、パラメータ候補を追加する。例えば、図13のテーブル<5A>に示すように、パラメータ“In_Port(受信ポート)”を各フローエントリに追加する
。“In_Port”の情報は、トポロジDB26に予め記憶されており、再集約処理部25は
、“In_Port”の情報を各フローエントリに設定することができる。
再集約処理部25は、追加のパラメータ候補の選択によってフローエントリ数を最少にできるか否かを試行し、最少にできる場合には、当該パラメータ候補を新たな集約ルールに用いることを決定する。図13のテーブル<6>は、“In_Port”に従って再集約され
た再集約エントリ群を示す。再集約によってフローエントリ数を2にすることができる。
なお、図13では、“In_Port”が追加された例を示したが、“In_Port”以外のパラメータ(既にパラメータ候補として使用されていないもの)を追加することも可能である。再集約処理部25は、上記した第1及び第2の再集約方法を用いて、フローエントリ数を最少にできる集約ルールを再作成し、集約前のフローエントリ群を再集約することができる。
<実施形態1の作用効果>
実施形態1によれば、フロー情報記憶部24Aに集約前のフローエントリ群を記憶しておき、フローエントリの追加を契機として、現在の集約ルール(フローエントリの集約)を解除して再集約処理が実行される。これによって、その時点のフローエントリ群の内容に応じてフローエントリ数が最少となる集約ルールでフローエントリ群を再集約することができる。
結果として、各スイッチ3のフローテーブル31には。フローエントリ数が最少となる集約ルールで再集約された集約エントリ群が登録される。これによって、フローテーブル31に登録されるフロー数を実質的に増やすことができる。従って、各スイッチ3に収容されるホスト4の数を増やすことができ、ネットワークシステムのスケーラビリティの向上を図ることができる。
実施形態1では、再集約にあたり、集約前のフローエントリ群はコントローラ2Aで保持され、スイッチ3には保持されない。このため、スイッチ3のメモリ(RAM72)の容量が集約前のフローエントリの情報で圧迫されることがない。
<変形例>
なお、実施形態1では、コントローラ2Aの内部に設けられたフロー情報記憶部24Aに集約前のフローエントリの情報が記憶される例について示した。但し、集約前のフローエントリの情報は、コントローラ側で保存されていれば良い。例えば、集約前のフローエントリの情報がコントローラ2Aの外部に設けられた記憶部に記憶され、コントローラ2Aが必要に応じて外部の記憶部から集約前のフローエントリの情報を取得するようにしても良い。
例えば、集約前のフローエントリの情報が外部装置で保存され、コントローラ2Aが必要に応じて外部装置から集約前のフローエントリの情報を取得するようにしても良い。外部装置は、例えば、コントローラ2Aとネットワークを介して通信可能なコンピュータ(たとえば、サーバ)や、コントローラ2Aに着脱自在な可搬型記憶装置(例えば、半導体メモリ60)を含む。
また、実施形態1では、コントローラ2Aとスイッチ3とが異なる物理装置上に実装される例について説明したが、コントローラ2Aと少なくとも1つのスイッチ3とが同一の物理装置上に実装されても良い。この場合、コントローラ2Aとスイッチ3とは物理装置内に設けられた内部ネットワーク(ネットワークの一例)で接続される。また、スイッチ3は、物理スイッチであっても良く、仮想スイッチであっても良い。
また、実施形態1では、SDNネットワークの一例としてOpenFlowを示したが、スイッチがフローテーブルを持ち、コントローラがフローエントリを生成してスイッチに送る様な機構を持つ通信規格であれば、OpenFlow以外の通信規格であっても良い。例えば、I2RS
(Interface to the Routing System)に準拠するネットワークシステムに実施形態1は適用可能である。
〔実施形態2〕
次に、実施形態2について説明する。実施形態2の構成は、実施形態1と共通部分を含むので、主として相違点について説明し、共通点については説明を省略する。実施形態1では、フローエントリの追加を契機に再集約処理が実行されていた。これに対し、実施形態2では、追加のフローエントリを現集約ルールで集約できない(フローエントリ数が増加する)ときに、再集約処理を実行(開始)する。
図14は、実施形態2に係るネットワークシステムの構成例を示す図である。図14において、コントローラ2Bが、集約ルール判定部27をさらに備える点で、実施形態1のコントローラ2Aと異なっている。その他の構成については、実施形態1と同じであるので説明を省略する。
図15は、実施形態2における動作例を示すシーケンス図である。図15のシーケンスでは、<7A>,<11A>及び<12A>の動作が実施形態1のシーケンス(図6)に追加されている。
実施形態2では、スイッチ3へ送信される集約エントリ群がフロー情報記憶部24Aに記憶される(図15<7A>)。また、実施形態2では、フローエントリ算出部22が、フローエントリ群を集約ルール判定部27に与える(図15<11A>)。
すると、集約ルール判定部27は、既存の集約ルールで追加のフローエントリを集約可能か否かを判定する。例えば、集約ルール判定部27は、フロー情報記憶部24Aから集約エントリ群及び追加のフローエントリを取得し、追加のフローエントリが集約エントリ群中の集約エントリに集約可能か否かを判定する。
このとき、例えば、図4のテーブル(5)及びテーブル(6)に示したように、追加のフローエントリを既存の(現在の)集約ルールで集約エントリに集約できない場合には、フローエントリの集約が解除される(図15<13>)。その後、実施形態1と同様の再集約処理が行われる。再集約エントリ群は、フロー情報記憶部24Aに記憶される。
なお、追加のフローエントリが集約エントリに集約可能である場合には、スイッチ3に
対する処理は行われない。フローテーブル31の登録内容に変動が生じないからである。以上を除き、動作例は、実施形態1と同じであるので説明を省略する。
実施形態2のコントローラ2Bは、例えば、図7に示した情報処理装置50を適用可能である。CPU51は、プログラムの実行によって、集約ルール判定部27として動作することができる。スイッチ3の構成は、実施形態1と同じである。
図16は、実施形態2におけるCPUの処理を示すフローチャートである。図16に示すフローチャートでは、11〜14の処理が実施形態1のフローチャート(図9)に追加されている。
図16の11では、CPU51は、新規の(追加の)フローエントリは現在の集約ルールに包含可能であるか否かを判定する。例えば、CPU51は、フロー情報記憶部24Aから集約エントリ群と追加のフローエントリとを取得し、追加のフローエントリが既存の集約ルールで用いたパラメータの値と同じパラメータの値を有するか否かを判定する。追加エントリを集約ルールに包含できないとき(11,NO)には、07以降の処理が実行され、再集約処理が実行される。
これに対し、CPU51は、追加のフローエントリを集約ルールに包含可能であるとき(11,YES)には、追加のフローエントリの“アクション”が集約エントリの“アクション”と同一か否かを判定する(12)。アクションが同一であれば、CPU51は、追加のフローエントリを現在の集約ルールに従って集約エントリにマージする(13)。これに対し、アクションが同一でなければ、新規フローエントリを高優先度に設定する(14)。
図17は、図16の12及び14の処理の具体例の説明図である。図17におけるテーブルAは、或る集約エントリ群を示す。その後、追加のフローエントリとして、“Src IP=10.0.0.5”,“Dst IP=10.0.0.1”,“VLAN-ID=20”,“Action=Out=p3”のフローエン
トリが追加された場合を仮定する。
追加のフローエントリは、図17のテーブルAにおける上側の集約エントリXのVLAN−IDと同じ値のVLAN−ID“20”を有する。このため、図16の11の処理において、集約ルールに包含可能と判定される。しかし、当該追加のフローエントリにおける“アクション”の値“Out=p3”は、上記集約エントリXの値“Out=p4”と異なる。このため、CPU51は、図17のテーブルBに示すように、追加のフローエントリを、集約エントリXの上段に配置する(テーブルBのフローエントリY参照)。
その後、テーブルBのような集約エントリ群が対応するスイッチ3へ送信され、フローテーブル31に登録される。スイッチ3は、フローテーブル31のフローエントリ群を上から順に参照する。従って、フローエントリYがフローエントリXよりも先に参照される。換言すれば、フローエントリYがフローエントリXよりも優先的に使用される。従って、テーブルBのような集約エントリ群をスイッチ3に送ることで、追加のフローエントリを高優先度に設定したのと同じ効果を得られる。
スイッチ3では、VLAN−IDの値が“20”であるパケットに対して、さらに、送信元IDアドレス及び宛先IPアドレスの参照を行い、フローエントリXに合致する場合には、当該パケットをポート“p3”から出力する。フローエントリXに記憶された送信元IDアドレス及び宛先IPアドレスを有するVLAN−ID=20のパケットについては、スイッチ3は、フローエントリXに従ってポート“p4”から出力する。これによって、“VLAN-ID=20”を持つパケットに対し、適正な転送処理を行うことができる。
実施形態2によれば、実施形態1と同様の作用効果を得ることができる。さらに、実施形態2によれば、追加のフローエントリが現在の集約ルールで集約できないことを条件に、再集約処理が開始される。従って、現在の集約ルールで追加のフローエントリが集約可能であるときには、再集約処理は実行されない。これによって、無駄となる再集約処理を回避することができ、コントローラ2Bの計算資源を有効利用することができる。
なお、実施形態2において、図16の11〜13に示した処理は、08の再集約処理において適用することが可能である。また、実施形態2では、各スイッチ3に送られる集約エントリ群(及び再集約エントリ群)がフロー情報記憶部24Aに記憶される例について説明したが、<12A>の処理で既存の集約ルールに包含可能か否かが判定できる場合には、集約エントリ群及び再集約エントリ群がフロー情報記憶部24Aに記憶されない構成を採用することができる。さらに、図16に示した処理において、09の処理及び13の処理が終了したときには、05に処理が戻るように変形可能である。
〔実施形態3〕
次に、実施形態3について説明する。実施形態3の構成は、実施形態1及び実施形態2と共通部分を含むので、主として相違点について説明し、共通点については説明を省略する。実施形態2では、追加のフローエントリを既存の集約ルールで集約できないことを契機に再集約処理が実行されていた。これに対し、実施形態3では、フローエントリの追加によってフローエントリ数が閾値を超過したことを契機に再集約処理を実行(開始)する。
図18は、実施形態3に係るネットワークシステムの構成例を示す図である。図18において、コントローラ2Cが、エントリ数閾値判定部28をさらに備える点で、実施形態2のコントローラ2Bと異なっている。その他の構成については、実施形態2と同じであるので説明を省略する。
図19は、実施形態3における動作例を示すシーケンス図である。図19のシーケンスは、<12B>及び<12C>の動作が実施形態2のシーケンス(図15)に追加されている点で、実施形態2と異なる。
すなわち、実施形態3では、<12A>において、既存の集約ルールで追加のフローエントリを集約できないと判定したときに、集約エントリ群及び追加のフローエントリに関する現在の集約ルールでの集約結果をエントリ数閾値判定部28に与える(図19<12B>)。例えば、図4のテーブル(6)のような、集約エントリと未集約のフローエントリとの集合がエントリ数閾値判定部28に与えられる。
エントリ数閾値判定部28は、フローテーブル31に関するフローエントリ数の閾値を予め保持している。閾値は、例えばHDD54に予め記憶される。エントリ数閾値判定部28は、フローエントリの集合におけるフローエントリ数を算出し、当該フローエントリ数が閾値を超過するか否かを判定する(図19<12C>)。このとき、フローエントリ数が閾値を超過する場合には、エントリ数閾値判定部28は、フローエントリの集約の解除を再集約処理部25に通知する(図19<13>)。以上を除き、動作例は、実施形態2と同じであるので説明を省略する。
実施形態3に係るコントローラ2Bも、情報処理装置50を適用可能である。CPU51は、プログラムの実行によって、エントリ数閾値判定部28として動作することができる。図20は、実施形態3におけるCPUの処理を示すフローチャートである。図20に示すフローチャートでは、15の処理が実施形態2のフローチャート(図16)に追加さ
れている。
15の処理は、図16における11の処理と07との処理の間に挿入されている。15において、CPU15は、フローエントリ数が閾値を超過するか否かを判定する。フローエントリ数が閾値を超過する場合には(15,YES)、CPU51は、処理を07に進めて再集約処理を実行する。
これに対し、フローエントリ数が閾値を超過しない場合(15,NO)には、処理が09に進み、追加のフローエントリが現在の集約ルールで集約された結果としての集約エントリ群が対応するスイッチ3に送信される。以上の処理を除き、図19に示す処理は図16に示す処理と同じであるので説明を省略する。
実施形態3によれば、実施形態1、実施形態2と同様の作用効果を得ることができる。但し、実施形態3では、フローエントリ数が閾値を超過する場合に限って再集約処理が実行される。このように、再集約処理の頻度が低減されることで、再集約処理の頻繁な実施による計算資源の浪費、及び再集約処理に伴うスイッチ3への再集約エントリ群の送信によるネットワークリソースの浪費を回避することが可能となる。
なお、実施形態3に係る図20から11〜14の処理が省略されても良い。すなわち、フローエントリが追加され、且つフローエントリ数が閾値を超えることを契機として、再集約処理が実行されるようにしても良い。実施形態1〜3に記載の構成は、適宜組み合わせることが可能である。
2A,2B,2C・・・コントローラ
3・・・スイッチ
22・・・フローエントリ算出部
23・・・集約ルール作成部
24A・・・フロー情報記憶部
25・・・再集約処理部
27・・・集約ルール判定部
28・・・エントリ数閾値判定部
51・・・CPU
52・・・RAM
55・・・通信インタフェース

Claims (9)

  1. 各エントリがパケットの識別情報と前記識別情報に合致するパケットに対する動作を示す動作情報とを含むエントリ群で形成されたテーブルを有し、入力されたパケットに対応するエントリを前記テーブルから検出し、検出されたエントリ中の動作情報に従って前記入力されたパケットに対する動作を行うスイッチに対して前記エントリ群を供給する制御装置であって、
    前記スイッチに対応する複数のエントリを生成する生成部と、
    前記複数のエントリの内容に基づき作成された集約ルールを用いて集約された集約エントリ群を前記エントリ群として前記スイッチに送信する送信部と、
    前記制御装置の内部又は外部に設けられた前記複数のエントリを記憶する記憶部から前記複数のエントリを取得する取得部と、
    前記複数のエントリと前記複数のエントリの生成後に前記生成部で生成された追加のエントリとについて、前記複数のエントリ及び前記追加のエントリの内容に基づき再作成した再集約ルールを用いて前記複数のエントリ及び前記追加のエントリを集約した再集約エントリ群を生成し、当該再集約エントリ群を前記エントリ群として前記送信部に送信させる再集約処理を行う制御部と、
    を含む制御装置。
  2. 前記制御部は、前記追加のエントリが生成されたときに前記再集約処理を開始する
    請求項1に記載の制御装置。
  3. 前記集約エントリ群をなす各エントリは、複数のパラメータを含み、
    前記制御部は、前記複数のパラメータのうち前記集約ルールで指定されるパラメータに関して、前記追加のエントリが有する値と前記集約エントリ群の各エントリが有する値とが異なる場合に前記再集約処理を開始する
    請求項1に記載の制御装置。
  4. 前記制御部は、前記集約エントリ群に前記追加のエントリを加えたエントリ数が所定値を超過するときに前記再集約処理を開始する
    請求項1又は3に記載の制御装置。
  5. 前記制御部は、前記パケットの識別情報に含まれた複数のパラメータのうち前記集約ルールで用いられたパラメータと異なるパラメータを用いる前記再集約ルールで前記複数のエントリ及び前記追加のエントリを集約する
    請求項1から4のいずれか1項に記載の制御装置。
  6. 前記制御部は、前記パケットの識別情報に含まれた複数のパラメータからそれぞれ選択された、前記集約ルールで用いられたパラメータと、前記集約ルールで用いられたパラメータ以外のパラメータとから選んだパラメータを用いる前記再集約ルールで前記複数のエントリ及び前記追加のエントリを集約する
    請求項1から5のいずれか1項に記載の制御装置。
  7. 前記制御部は、前記追加のエントリを前記集約ルールを用いて生成された前記集約エントリ群に集約することを試行したときに、前記追加のエントリに含まれるパケットの識別情報の内容が前記集約ルールを用いて2以上のエントリが集約された集約エントリと集約可能な内容であるが、当該追加のエントリに含まれる動作情報の内容が前記集約エントリに含まれる動作情報の内容と異なるときには、前記スイッチにおいて前記追加のエントリが前記集約エントリよりも優先的に使用される形態で前記追加のエントリ及び前記集約エントリ群を前記送信部に送信させる
    請求項1、3から6のいずれか1項に記載の制御装置。
  8. 前記制御装置は、オープンフロースイッチである前記スイッチにオープンフロープロトコルを用いてエントリを供給するオープンフローコントローラである
    請求項1から7のいずれか1項に記載の制御装置。
  9. 各エントリがパケットの識別情報と前記識別情報に合致するパケットに対する動作を示す動作情報とを含むエントリ群で形成されたテーブルを有し、入力されたパケットに対応するエントリを前記テーブルから検出し、検出されたエントリ中の動作情報に従って前記入力されたパケットに対する動作を行うスイッチに対し、前記エントリ群を供給する制御装置のテーブル作成方法であって、
    前記制御装置が、
    前記スイッチに対応する複数のエントリを生成し、
    前記複数のエントリの内容に基づき作成された集約ルールを用いて集約された集約エントリ群を前記エントリ群として前記スイッチに送信し、
    前記制御装置の内部又は外部に設けられた前記複数のエントリを記憶する記憶部から前記複数のエントリを取得し、
    前記複数のエントリ及び前記複数のエントリの生成後に生成された追加のエントリについて、前記複数のエントリ及び前記追加のエントリの内容に基づいて再作成した再集約ルールを用いて前記複数のエントリ及び前記追加のエントリを集約した再集約エントリ群を生成し、当該再集約エントリ群を前記エントリ群として送信する再集約処理を行う、
    ことを含む制御装置のテーブル作成方法。
JP2014063728A 2014-03-26 2014-03-26 制御装置、及びそのテーブル作成方法 Active JP6287443B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014063728A JP6287443B2 (ja) 2014-03-26 2014-03-26 制御装置、及びそのテーブル作成方法
US14/666,466 US9819571B2 (en) 2014-03-26 2015-03-24 Control apparatus and method for supplying switch with entry

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014063728A JP6287443B2 (ja) 2014-03-26 2014-03-26 制御装置、及びそのテーブル作成方法

Publications (2)

Publication Number Publication Date
JP2015186213A JP2015186213A (ja) 2015-10-22
JP6287443B2 true JP6287443B2 (ja) 2018-03-07

Family

ID=54191942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014063728A Active JP6287443B2 (ja) 2014-03-26 2014-03-26 制御装置、及びそのテーブル作成方法

Country Status (2)

Country Link
US (1) US9819571B2 (ja)
JP (1) JP6287443B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6632556B2 (ja) * 2017-01-27 2020-01-22 Kddi株式会社 リンク品質計測装置およびそのフローエントリ決定サーバ装置ならびにスイッチ
CN115244911A (zh) 2020-03-10 2022-10-25 三菱电机株式会社 控制器、网络系统以及流管理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3232023B2 (ja) 1997-04-16 2001-11-26 日本電信電話株式会社 パケット処理方法および装置
JP3409726B2 (ja) 1999-02-26 2003-05-26 日本電気株式会社 転送先決定処理装置
JP4791347B2 (ja) 2006-12-29 2011-10-12 富士通株式会社 エントリの圧縮伸長方法およびエントリの圧縮伸長を行う装置
CN102783097B (zh) * 2010-03-24 2015-04-08 日本电气株式会社 分组转发系统、控制设备、转发设备以及用于准备处理规则的方法
JP5299856B2 (ja) 2010-04-19 2013-09-25 日本電気株式会社 スイッチ、及びフローテーブル制御方法
US8478707B1 (en) * 2010-11-01 2013-07-02 Google Inc. System and method for reducing flow rules in forwarding tables
US9001827B2 (en) * 2010-12-17 2015-04-07 Big Switch Networks, Inc. Methods for configuring network switches
WO2012126488A1 (en) * 2011-03-24 2012-09-27 Nec Europe Ltd. Method for operating a flow-based switching system and switching system
JP2013021678A (ja) 2011-06-15 2013-01-31 Kddi Corp トランスポート回線設計方法およびプログラム
US8762501B2 (en) * 2011-08-29 2014-06-24 Telefonaktiebolaget L M Ericsson (Publ) Implementing a 3G packet core in a cloud computer with openflow data and control planes
US8787388B1 (en) * 2011-08-29 2014-07-22 Big Switch Networks, Inc. System and methods for forwarding packets through a network
US9178833B2 (en) * 2011-10-25 2015-11-03 Nicira, Inc. Chassis controller
US20140040459A1 (en) * 2012-08-01 2014-02-06 Hewlett-Packard Development Company, L.P. System and method for data communication using a classified flow table in openflow networks
JPWO2015136585A1 (ja) * 2014-03-14 2017-04-06 日本電気株式会社 制御装置、制御方法および制御プログラム

Also Published As

Publication number Publication date
US9819571B2 (en) 2017-11-14
JP2015186213A (ja) 2015-10-22
US20150281077A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
US11792046B2 (en) Method for generating forwarding information, controller, and service forwarding entity
US10484266B2 (en) Leveraging multi-stream transport protocol capabilities for routing
US9596173B2 (en) Method and system for traffic pattern generation in a software-defined networking (SDN) system
US9379973B2 (en) Binary compatible extension architecture in an openflow compliant network environment
US8634415B2 (en) Method and system for routing network traffic for a blade server
US8913613B2 (en) Method and system for classification and management of inter-blade network traffic in a blade server
US9548890B2 (en) Flexible remote direct memory access resource configuration in a network environment
JP2019500822A (ja) 仮想マシンパケット制御
JP2017517170A (ja) Nfvシステムにおけるサービス実装のための方法および通信ユニット
JP5993817B2 (ja) キャリア網における経路制御システム及び方法
CN108471383A (zh) 报文转发方法、装置和系统
US20170230284A1 (en) Packet transmission apparatus, controller, and packet transmission control method
JP2015533045A (ja) 通信システム、通信方法、情報処理装置、通信制御方法及びプログラム
US11563698B2 (en) Packet value based packet processing
US20200028779A1 (en) Packet processing method and apparatus
JP6287443B2 (ja) 制御装置、及びそのテーブル作成方法
US10177935B2 (en) Data transfer system, data transfer server, data transfer method, and program recording medium
US11750525B2 (en) Congestion control for low latency datacenter networks
US11509593B2 (en) Congestion control for low latency datacenter networks
Kawashima et al. Implementation and performance analysis of STT tunneling using vNIC offloading framework (CVSW)
US20240015108A1 (en) Method and system for efficient input/output transfer in network devices
KR101707073B1 (ko) Sdn 기반의 에러 탐색 네트워크 시스템
WO2023231438A1 (zh) 报文发送的方法、网络设备及系统
US20230421473A1 (en) Method and system for efficient input/output transfer in network devices
WO2022214854A1 (en) Methods and systems for efficient metadata and data delivery between a network interface and applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170828

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: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180122

R150 Certificate of patent or registration of utility model

Ref document number: 6287443

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150