説明

フロースイッチ、フロー制御システムおよびフロー制御方法

【課題】フロー制御システムにおけるフロースイッチのフローエントリ数を低減する。
【解決手段】コアNWにおけるエッジスイッチは、コアNWに流入するフローごとに、このフローの宛先となる外部装置30に接続するエッジスイッチのID(スイッチンスタンスID)を記憶する。また、コアスイッチは、スイッチンスタンスIDをフロー識別情報とするフローのフローエントリを備える。そして、この外部装置30宛のフローを受信すると、このフローの宛先MACアドレスを、この外部装置30に接続するエッジスイッチのスイッチンスタンスIDに書き換える。そして、コアスイッチは、このスイッチンスタンスIDを用いてコアNW内のフローの転送を行い、この外部装置30に接続するエッジスイッチに到達させる。当該エッジスイッチは、このフローを宛先である外部装置30へ出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークのフロー制御技術に関する。
【背景技術】
【0002】
従来から、ネットワークのフローを制御するフロー制御システムがある。フローとは、宛先MACアドレス(Media Access Control address)、IPアドレスおよびポート番号の組み合わせにより定義される一連のパケットのことである。フロー制御システムは、パケットを送受信するフロースイッチと、フロースイッチを制御する制御サーバとで構成され、フロースイッチは、制御サーバから与えられたフローエントリを保持する。フローエントリには、受信したパケットを識別するためのレイヤ2(OSI(Open Systems Interconnection)参照モデルにおけるレイヤ2)〜レイヤ4(同モデルにおけるレイヤ4)の情報と、この情報に合致するパケットに対する処理とが記述される。処理は、例えば、指定の物理ポートから送信する、MACアドレスを書き換える、VLAN(Virtual LAN)タグを書き換える、パケットを廃棄する等がある。フロー制御システムの例としては、OpenFlowネットワークが挙げられる。OpenFlowネットワークにおいて、フロースイッチにはOpenFlowスイッチ、制御サーバにはOpenFlowコントローラを用いる。OpenFlowネットワークにおいてネットワークトポロジを探索する方式として、一般的にLLDP(Link Layer Discovery Protocol、IEEE802.1abにより標準化)が用いられる。
【0003】
また、コンピュータリソースの仮想化技術の進歩により、データセンター間で仮想マシン(Virtual Machine、VM)をリアルタイムで移動させる、データセンター間VMマイグレーションが可能となった。データセンターが実現するサービス(一般的に、クラウドサービスと呼ばれることが多い)の利用者は、ネットワークを経由してVM上で実行中のプログラムにアクセスする。VMマイグレーション実行後も接続性を継続するためには、VMマイグレーションに連動して、このVMへの経路を切り替える必要がある。
【0004】
このような経路切替を実現するためにフロー制御システムを用いる場合を仮定する。ネットワーク経路の切替とVMマイグレーションとの連動を実現するためには、VMマイグレーションを制御するサーバ(一般的にはハイパーバイザ等のVM管理制御用プログラムをインストールした装置)とフロー制御装置との間で通信を行う。そして、フロー制御装置は、VMを識別するID情報と、このVMの移行先のサーバの物理位置情報とを受信すると、これらの情報をもとにフロースイッチに対し、VMの移行先のサーバへフローの経路切替を指示する。これにより、経路切替が可能となる(図1参照)。
【0005】
ここで、フロースイッチのフローエントリに記述されるフロー識別情報は、マイグレーションを行うVMに対し一意なものとする必要がある。従って、各フロースイッチが保持するフローエントリ数は、VMの数が多くなるほど多くなる。また、VMを用いない場合であっても、多数の装置が設置される大規模ネットワーク等、多数のフローが流れるネットワークでは、各フロースイッチが保持するフローエントリ数も多くなる。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】The OpenFlow Consortium、[online]、[平成23年1月21日検索]、インターネット、<URL: http://www.openflowswitch.org/>
【発明の概要】
【発明が解決しようとする課題】
【0007】
ここで、大規模なネットワークでは、図1に例示するように、ネットワークを構成するフロースイッチ間に階梯を設けることが一般的である。よって、上位階梯のフロースイッチは、下位階梯のフロースイッチより多数のフローを中継することになり、より多くのフローエントリを保持する必要が生じる。つまり、下位階梯のフロースイッチ101は、エッジスイッチであり、自身の配下のVMへのフロー識別をすればいいので、保持すべきフローエントリ数は比較的少ない。しかし、上位階梯のフロースイッチ100(コアスイッチ)は、多拠点の全VMのフロー識別をする必要があり、保持すべきフローエントリ数も多くなる。
【0008】
フロースイッチは、フローエントリを高速検索するために、CAM(Content Addressable Memory)等の検索回路を利用することが一般的である。しかし、CAMは、DRAM(Dynamic Random Access Memory)等の一般的なメモリ素子と比較すると高価であるため大容量化が難しい。このため、例えば、多数のVMが存在する大規模ネットワークに対応するフローエントリ数を、フロースイッチが保持することは困難である。そこで、本発明は、前記した課題を解決し、大規模ネットワークにおいて各フロースイッチの保持するフローエントリ数を低減することを目的とする。
【課題を解決するための手段】
【0009】
前記した課題を解決するため、本発明は、ネットワーク内に設置され、ネットワーク内を流れる一連のパケットであるフローに対し、フローエントリ情報に基づきフロー制御を行うフロースイッチであって、記憶部に、以下の3種のフローエントリ情報を記憶することとした。すなわち、記憶部は、エッジNW→コアNWのフローエントリとして、フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローのMACアドレスフィールドの値を、フロースイッチのうち、当該宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDに書き換えることと、当該フローを、所定の転送経路へ転送することとを示した第1のフローエントリ情報を記憶する。また、コアNW内のフローエントリとして、フローに付されるスイッチンスタンスIDごとに、当該フローへの処理内容として、当該フローを、当該スイッチンスタンスIDに対応するエッジノードへの転送経路へ転送することを示した第2のフローエントリ情報を記憶する。さらに、コアNW→エッジNWのフローエントリとして、フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローを、当該宛先IPアドレスの外部装置へ出力することを示した第3のフローエントリ情報を記憶する。そして、このフロースイッチは、(1)入出力部経由で受信したフローが、自身のフロースイッチに接続される外部装置から、ネットワーク内の他のフロースイッチへのフローであるとき、当該フローの宛先IPアドレスと第1のフローエントリ情報とを参照して、当該フローのMACアドレスフィールドの値を、第1のフローエントリ情報に示される当該フローのスイッチンスタンスIDに書き換え、当該フローを、第1のフローエントリ情報に示される当該フローの転送経路に従い転送する。また、(2)受信したフローが、ネットワーク内の他のフロースイッチから、別の他のフロースイッチへのフローであるとき、当該フローのスイッチンスタンスIDと第2のフローエントリ情報とを参照して、当該スイッチンスタンスIDを持つフローの転送経路に従い、当該フローを転送する。さらに、(3)受信したフローが、ネットワーク内の他のフロースイッチから、自身のフロースイッチに接続される外部装置へのフローであるとき、当該フローの宛先IPアドレスと第3のフローエントリ情報とを参照して、当該フローを、入出力部経由で第3のフローエントリ情報に示される当該宛先IPアドレスの外部装置へ出力する。
【0010】
このように、フロースイッチは、ネットワーク内において、フローの宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDをフロー識別情報として用いてフロー制御を行う。つまり、まず、フローを受信したエッジスイッチは、このフローの宛先MACアドレスを、フローの宛先IPアドレスの外部装置に接続するエッジスイッチのID(スイッチンスタンスID)に書き換える。そして、ネットワーク内の各フロースイッチは、このフローのスイッチンスタンスIDとフローエントリ情報とを用いて、フローの宛先IPアドレスの外部装置に接続するエッジスイッチまでフローを到達させる。そして、エッジスイッチは、受信したフローを、自身に接続されるいずれかの外部装置へ転送する。このように、ネットワーク内のフロースイッチは、フローの宛先となる外部装置(またはその外部装置に接続されるネットワーク)ごとのフローエントリを保持すればよくなる。よって、ネットワークの上位階梯のフロースイッチであっても、フローエントリを多数保持する必要がなくなる。
【0011】
また、本発明のフロースイッチの保持する第1のフローエントリ情報は、フローそれぞれの有効期限を示す情報を含み、フロースイッチは、第1のフローエントリ情報から、有効期限の過ぎたフローの情報を削除するフローエントリ更新部を備える。
【0012】
このようにすることで、ネットワーク外部からのフローを受信したフロースイッチ(エッジスイッチ)におけるフローエントリ情報(第1のフローエントリ情報)におけるフローエントリ数を低減できる。
【0013】
また、本発明は、フロースイッチと、フロースイッチの制御を行うフロー制御装置とを含むフロー制御システムであって、フロースイッチは、外部装置から、第1のフローエントリ情報に示されていない宛先IPアドレスのフローを受信したとき、当該宛先IPアドレスのフローのフローエントリの取得要求をフロー制御装置へ送信するフローエントリ取得部を備え、フローエントリ更新部は、フロー制御装置から、取得要求に対する応答を受信したとき、受信した応答に示される当該宛先IPアドレスのフローのフローエントリを、第1のフローエントリ情報に追加する。また、フロー制御装置は、フローの宛先IPアドレスごとに、フロースイッチのうち、当該宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDを示した外部装置情報と、エッジスイッチへの転送経路とを記憶する記憶部を備える。また、このフロー制御装置は、フロースイッチから、フローエントリの取得要求を受け付けたとき、当該フローの宛先IPアドレスおよび外部装置情報を参照して、外部装置情報に示される当該フローのスイッチインスタンスIDを含むフローエントリと、当該宛先IPアドレスの外部装置に接続するエッジスイッチへの転送経路とを、取得要求の応答として、取得要求の送信元のフロースイッチへ送信するフローエントリ情報設定部とを備える。
【0014】
このようにすることで、ネットワーク外部からのフローを受信したフロースイッチ(エッジスイッチ)が、第1のフローエントリ情報に登録されていないフローを受信したときも、このフローのフロー制御を行うことができる。
【0015】
また、本発明のフロー制御システムにおけるフロー制御装置は、外部装置およびネットワークのフロースイッチ同士の接続状態を示すトポロジ情報を収集し、収集したトポロジ情報を用いて外部装置情報を更新し、収集したトポロジ情報に基づき、エッジスイッチ間の転送経路を再計算する情報更新部を備える。また、フロー制御装置のフローエントリ情報設定部は、収集したトポロジ情報に基づき、フロースイッチそれぞれの第1のフローエントリ情報、第2のフローエントリ情報および第3のフローエントリ情報における各フローのスイッチンスタンスIDを更新し、再計算した転送経路により、第1のフローエントリ情報および第2のフローエントリ情報それぞれの各フローの転送経路を更新する。
【0016】
このようにすることで、フロー制御装置は、外部装置やネットワーク内のフロースイッチの追加や削除があった場合でも、各フロースイッチのフローエントリ情報に、その追加や削除を反映させることができる。
【発明の効果】
【0017】
本発明によれば、大規模ネットワークにおいて各フロースイッチの保持するフローエントリ数を低減することができる。
【図面の簡単な説明】
【0018】
【図1】比較例となるフロー制御システムを示した図である。
【図2】本実施の形態のフロー制御システムを例示した図である。
【図3】本実施の形態のフロースイッチおよびフロー制御装置の構成を示した図である。
【図4】本実施の形態のフロー制御システムの処理手順例を示した図である。
【発明を実施するための形態】
【0019】
<概要>
以下、本発明を実施するための形態(以下、実施の形態という)について説明する。まず、図2を用いて、本実施の形態のフロー制御システムの概要を説明する。
【0020】
フロー制御システムは、フロー制御を行う複数のフロースイッチ10(10A〜10H)と、各フロースイッチ10を制御するフロー制御装置20と、フロースイッチ10経由でデータの送受信を行う外部装置30(30A〜30I)とを備える。この外部装置30は、VM(仮想化マシン)やルータ等である。例えば、サービス利用者端末40は、ルータである外部装置30およびフロースイッチ10経由で、VMである外部装置30とデータの送受信を行い、VMによるサービス提供を受ける。
【0021】
なお、以下の説明において、フロースイッチ10同士が接続するネットワークをコアネットワーク(コアNW)と呼び、フロースイッチ10と外部装置30とが接続するネットワークをエッジネットワーク(エッジNW)と呼ぶ。また、フロースイッチ10のうち、外部装置30と直接接続するフロースイッチ10をエッジスイッチと呼び、それ以外のフロースイッチ10をコアスイッチと呼ぶ。なお、コアNWを構成するフロースイッチ10群は、図2に例示するように階梯を設けるものとする。
【0022】
フロースイッチ10はそれぞれ、フローエントリ情報130(後記する図3参照)を備え、このフローエントリ情報130に基づき、フロー制御を行う。フローエントリ情報130は、フローの識別情報(フロー識別情報)ごとに、当該フローへの処理内容を示したフローエントリの集合である。ここで、従来のフロースイッチは、フローを送受信する機器の組み合わせごとのフローエントリを保持していた。しかし、本実施の形態のフロースイッチ10(コアスイッチ)は、宛先の外部装置30と直接接続しているエッジスイッチのID(スイッチンスタンスIDと呼ぶ)ごとのフローエントリを保持する(図2の吹き出し201参照)。そして、フロースイッチ10は、このフローエントリ情報130を用いて、フローの制御を行う。これにより、フロースイッチ10が保持すべきフローエントリ数を低減できる。
【0023】
ここで、フローが外部装置30Iからフロースイッチ10H経由でコアNWに流入し、宛先の外部装置30H(宛先IPアドレス「AA」)に到達するまでの流れを説明する。
【0024】
事前準備として、図2のフロースイッチ10のフローエントリ情報130には、以下の情報を設定しておく。この設定は、フロー制御装置20からの指示に基づき行われる。
【0025】
例えば、図2のフロースイッチ10Hのフローエントリ情報130には、吹き出し202に示すように、外部装置30I側から宛先IPアドレス「AA」のフローを受信したとき、宛先MACアドレスをスイッチンスタンスID「D」(外部装置30Hに接続するフロースイッチ10DのID)に書き換えるという処理内容を設定しておく。また、フロースイッチ10A(コアスイッチ)のフローエントリ情報130には、吹き出し201に示すように、スイッチンスタンスID「D」のフローを受信したときには、フロースイッチ10Dへ到達する転送経路へ出力する(例えば、物理ポート番号「II」から出力する)という処理内容を設定しておく。さらに、フロースイッチ10Dのフローエントリ情報130には、吹き出し203に示すように、コアNWから宛先IPアドレス「AA」のフローを受信したとき、宛先MACアドレスを「30H」(外部装置30HのMACアドレス)に書き換えるという処理内容を設定しておく。
【0026】
このようなフローエントリ情報130に従い、各フロースイッチ10は、以下のようなフロー制御を行う。すなわち、フロースイッチ10Hは、宛先IPアドレス「AA」のフロー(パケット)を受信すると、このフローの宛先MACアドレスを、スイッチンスタンスID「D」に書き換える。そして、コアNW内のフロースイッチ10は、このスイッチンスタンスID「D」をフロー識別情報として、フロー制御を行い、宛先の外部装置30Hに接続するエッジスイッチ(フロースイッチ10D)まで転送する。そして、このフロースイッチ10Dは、受信したフローの宛先MACアドレスを、このフローの宛先の外部装置30HのMACアドレスに書き換えて、外部装置30Hへ出力する。このようにすることで、フローは宛先の外部装置30Hに到達する。
【0027】
<フロースイッチ>
次に、図3を用いて、フロースイッチ10およびフロー制御装置20の構成を説明する。フロースイッチ10は、フローエントリ情報130に従いフロー制御を行うスイッチであり、その機能は、入出力部11、処理部12および記憶部13に分けられる。入出力部11は、他のフロースイッチ10との間でフローのパケットの送受信を行ったり、フロー制御装置20から各種設定指示を受信したりするための通信インタフェースである。処理部12は、記憶部13のフローエントリ情報130を参照して、フロー制御を行う。記憶部13は、フローエントリ情報130を記憶する。
【0028】
処理部12は、CPU(Central Processing Unit)によるプログラム実行処理や、専用回路等により実現される。記憶部13は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶媒体から構成される。なお、フロースイッチ10をプログラム実行処理により実現する場合、記憶部13には、フロースイッチ10の機能を実現するためのプログラムが格納される。
【0029】
記憶部13のフローエントリ情報130は、フロー識別情報ごとに、そのフロー識別情報のフローへの処理内容を示した情報である。このフローエントリ情報130は、エッジNWからコアNWへのフローに関する第1のフローエントリ情報131、コアNW内のフローに関する第2のフローエントリ情報132およびコアNWからエッジNWへのフローに関する第3のフローエントリ情報133からなる。
【0030】
<第1のフローエントリ情報>
第1のフローエントリ情報131は、フロー識別情報としてフローの宛先IPアドレスを用いる。そして、この宛先IPアドレスごとに、当該宛先IPアドレスへのフローに対する処理内容として、当該フローの送信元MACアドレスおよび宛先MACアドレスのフィールドの値を、当該宛先IPアドレスの外部装置30に接続するエッジスイッチのID(スイッチンスタンスID)に書き換えることと、当該フローを、所定の転送経路へ転送することとが設定される。この第1のフローエントリ情報131のフローエントリの内容を、表1を用いて説明する。
【0031】
【表1】

【0032】
表1に示すように、第1のフローエントリ情報131のフローエントリは、フロー識別情報と、そのフロー識別情報のフローに対する処理内容およびフローの有効期限に関する情報とを含む。フロー識別情報は、フロー(パケット)の宛先IPアドレスフィールドの値を用いる。なお、この宛先IPアドレスは、入力パケットの宛先IPアドレスが外部装置30のアドレスの場合、この外部装置30のIPアドレスとなる。また、この宛先IPアドレスが外部装置30に接続するネットワークのネットワークアドレスの場合、当該ネットワークのネットワークアドレスとなる。なお、フロースイッチ10が、VLAN(Virtual LAN)タグ番号を用いたフロー制御を行う場合、フロー識別情報として、宛先IPアドレスフィールドの値とVLANタグ番号フィールトの値との組み合わせを設定する。フローの処理内容としては、入力パケットの送信元MACアドレスおよび宛先MACアドレスのフィールドの値の書き換えと、この入力パケットの出力とが記載される。つまり、フロースイッチ10は、入力パケットの送信元MACアドレスおよび宛先MACアドレスのフィールドの値を、所定のスイッチンスタンスID(例えば、宛先の外部装置30に接続するエッジスイッチへのデータパスID(DPID))の値に書き換える。そして、このパケットを、予め計算されたコアNWの転送経路(外部装置30に接続するエッジスイッチへの経路)に従い出力する、という処理内容が記載される。さらに、フロータイムの有効期限については、有限の期間を設定しておく。つまり、フロースイッチ10は、当該フローのパケットの無通信時間を監視し、無通信時間が所定の期間を超えると、このフローのフローエントリを削除するよう設定しておく。
【0033】
第1のフローエントリ情報131のフローエントリの例を、表2に示す。表2に例示するフローエントリは、宛先IPアドレス「AA」で、かつ、VLANタグ番号「BB」のフローのパケットに対し、このパケットの宛先MACアドレスを、スイッチンスタンスID「D」に書き換えること。また、このパケットを物理ポート番号「CC」の物理ポート(スイッチインスタンスID「D」のエッジスイッチへの転送経路の物理ポート)から出力することを示す。さらに、このフローの有効期限は「XX」であること、つまり、当該フローのパケットの無通信時間が有効期限「XX」を超えたとき、このフローエントリを削除することを示す。このようにフローエントリの有効期限を設定するのは、第1のフローエントリ情報131のフローエントリ数が、増加し続けるのを防止するためである。フロー制御部122は、この第1のフローエントリ情報131を参照することで、エッジNWから流入したフローのMACアドレスフィールドの値を、このフローの宛先の外部装置30に接続するエッジスイッチのスイッチンスタンスIDに書き換えることができる。つまり、コアNW内において、スイッチインスタンスIDを用いたフロー制御を行うようにできる。なお、ここでは、スイッチインスタンスIDのbit数が、宛先MACアドレスフィールドのbit数(48bit)以下である場合を想定したが、スイッチインスタンスIDのbit数が、48bitを超えるときには、送信元MACアドレスフィールドの値も含めて書き換える。
【0034】
【表2】

【0035】
<第2のフローエントリ情報>
第2のフローエントリ情報132は、コアNW内のフローに関するフローエントリを示す情報である。この第2のフローエントリ情報132は、フロー識別情報としてフローに付されるスイッチンスタンスIDを用いる。そして、当該フローへの処理内容として、当該フローを、当該スイッチンスタンスIDに対応するエッジノードへの転送経路へ転送することが設定される。この第2のフローエントリ情報132のフローエントリの内容を、表3を用いて説明する。
【0036】
【表3】

【0037】
表3に示すように、第2のフローエントリ情報のフローエントリは、フロー識別情報として、フロー(パケット)の送信元MACアドレスおよび宛先MACアドレスのフィールドの値を用いる。なお、この値は、各フローのスイッチンスタンスIDとなる。フローの処理内容としては、この入力パケットの出力が記載される。つまり、フロースイッチ10は、予め計算されたコアNWの転送経路(スイッチンスタンスIDに対応するエッジスイッチへの経路)に従い出力する、という処理内容が記載される。なお、フロータイムの有効期限については、無期限としておいてよい。
【0038】
第2のフローエントリ情報132のフローエントリの例を表4に示す。表4に例示するフローエントリは、宛先MACアドレスが「D(スイッチンスタンスID)」のフローのパケットに対し、このパケットを物理ポート番号「II」の物理ポート(スイッチインスタンスID「D」のエッジスイッチへの転送経路の物理ポート)から出力することを示す。フロー制御部122は、この第2のフローエントリ情報132を参照することで、コアNW内のフローに対し、スイッチンスタンスIDを用いたフロー制御を行うことができる。
【0039】
【表4】

【0040】
<第3のフローエントリ情報>
第3のフローエントリ情報133は、コアNWからエッジNWへ流出するフローに関するフローエントリを示す情報である。この第3のフローエントリ情報133は、フロー識別情報としてフローの宛先IPアドレスを用いる。そして、当該フローへの処理内容として、当該フローを、当該宛先IPアドレスの外部装置30へ出力することが設定される。この第3のフローエントリ情報133のフローエントリの内容を、表5を用いて説明する。
【0041】
【表5】

【0042】
第3のフローエントリ情報133は、フロー識別情報として、フロー(パケット)の宛先IPアドレスフィールドの値を用いる。前記したとおり、この宛先IPアドレスは、入力パケットの宛先IPアドレスが外部装置30のアドレスの場合、この外部装置30のIPアドレスを用いる。また、この宛先IPアドレスが外部装置30に接続するネットワークのネットワークアドレスの場合、当該ネットワークのネットワークアドレスとなる。フロー識別情報は、宛先IPアドレスフィールドの値とVLANタグ番号フィールドの値との組み合わせを用いてもよい。
【0043】
フローの処理内容としては、入力パケットの送信元MACアドレスフィールドの値を、事前に設定された固定値に書き換え、また、宛先MACアドレスのフィールドの値を、宛先IPアドレスの外部装置30のMACアドレスに書き換える。そして、このパケットを、宛先の外部装置30の所定の物理ポート番号へ向けて出力する、という処理内容が設定される。なお、フロータイムの有効期限については、無期限としておいてよい。
【0044】
第3のフローエントリ情報133のフローエントリの例を表6に示す。表6に例示するフローエントリは、宛先IPアドレスが「AA」であり、かつ、VLANタグ番号が「BB」のパケットに対し、以下の処理を行うことを示す。すなわち、入力パケットの送信元MACアドレスを予め事前に設定された「EE」に書き換え、宛先MACアドレスを宛先となり外部装置30のMACアドレス「YY」に書き換え、この外部装置30の物理ポート「GG]から出力することを示す。フロー制御部122は、この第3のフローエントリ情報133を参照することで、コアNWから受信したパケットのMACアドレスの書き換えを行い、自身に接続される宛先の外部装置30へ出力することができる。
【0045】
【表6】

【0046】
なお、このフローエントリ情報130は、ネットワークのトポロジの変化やVMマイグレーション等が発生した場合、フロー制御装置20からの指示に基づき更新される。
【0047】
処理部12は、フローエントリ更新部121、フロー制御部122およびフローエントリ取得部123を備える。
【0048】
フローエントリ更新部121は、フローエントリ情報130の更新を行う。例えば、フロー制御装置20からの指示に従い、第1のフローエントリ情報131における、宛先IPアドレスに対するスイッチンスタンスIDを変更したり、新たなフローエントリを追加したりする。また、第1のフローエントリ情報131から、有効期限の過ぎたフローエントリを削除する。
【0049】
フロー制御部122は、フローエントリ情報130を参照して、フロー制御を行う。具体的には、受信したフローが、(1)エッジNWからコアNWへのフローであるとき、当該フローの宛先IPアドレスと第1のフローエントリ情報131とを参照して、フロー制御を行う。つまり、第1のフローエントリ情報131に従い、当該フローのMACアドレスフィールドの値を当該フローのスイッチンスタンスIDに書き換え、当該フローの転送経路へ転送する。また、受信したフローが、(2)コアNW内で転送するフローであるとき、フロー制御部122は、当該フローのスイッチンスタンスIDと第2のフローエントリ情報132とを参照して、当該スイッチンスタンスIDを持つフローの転送経路に従い、当該フローを転送する。さらに、受信したフローが、(3)コアNWからエッジNWへのフローであるとき、当該フローの宛先IPアドレスと第3のフローエントリ情報133とを参照して、当該フローの宛先MACアドレスを書き換えた後、当該宛先IPアドレスの外部装置30へ出力する。
【0050】
なお、受信したフローがエッジNWからコアNWへのフローか、コアNW内で転送するフローか、コアNWからエッジNWへのフローであるかは、フロー制御部122が、受信したフローのパケットのヘッダ情報を参照することで判断する。
【0051】
フローエントリ取得部123は、外部装置30から、第1のフローエントリ情報131に示されていない宛先IPアドレスのフローを受信したとき、当該宛先IPアドレスのフローのフローエントリの取得要求をフロー制御装置20へ送信する。そして、この要求に対する応答(宛先IPアドレスのフローのスイッチンスタンスIDを含む)を受信すると、この応答をフローエントリ更新部121へ出力し、フローエントリ更新部121に、第1のフローエントリ情報131へのフローエントリ追加を依頼する。
【0052】
このようなフロースイッチ10によれば、エッジスイッチの保持するフローエントリ情報130のフローエントリ数の最大値は、(第1のフローエントリ情報131:フローの有効期限内に存在するフロー数)+(第2のフローエントリ情報132:エッジスイッチの台数)+(第3のフローエントリ情報133:自身のフロースイッチに接続する外部装置の台数)となる。また、コアスイッチの保持するフローエントリ情報130のフローエントリ数の最大値は、コアNWのエッジスイッチの台数となる。よって、コアNW内の上位階梯のフロースイッチ10であっても、宛先となる外部装置30ごとのフローエントリを保持する必要がなくなるので、フローエントリ数を低減することができる。
【0053】
<フロー制御装置>
フロー制御装置20は、フロースイッチ10を制御する装置であり、その機能は、入出力部21、処理部22および記憶部23に分けられる。入出力部21は、各フロースイッチ10へ各種設定指示を送信したり、各フロースイッチ10からトポロジ情報230の元となる情報を受信したりするためのインタフェースである。処理部22は、主に、各フロースイッチ10へ各種設定指示を送信する。また、記憶部23は、外部装置情報231を含むトポロジ情報230を記憶する。
【0054】
この処理部22もCPUによるプログラム実行処理や、専用回路等により実現される。さらに、記憶部23は、RAM、ROM、HDD、フラッシュメモリ等の記憶媒体から構成される。なお、フロー制御装置20をプログラム実行処理により実現する場合、記憶部23には、フロー制御装置20の機能を実現するためのプログラムが格納される。
【0055】
記憶部23のトポロジ情報230は、各フロースイッチ10や外部装置30がどのようにリンク接続されているかを示した情報である。このトポロジ情報230は、例えば、各リンクのリンクコストの情報も含む。また、このトポロジ情報230は、外部装置情報231を含む。この外部装置情報231は、表7に例示するように、外部装置30の接続物理位置(この外部装置30に接続されるエッジスイッチのID(スイッチンスタンスID)および物理ポート番号)、この外部装置30のIPアドレス、MACアドレス等を示したものである。この外部装置情報231は、VLANタグ番号を含んでいてもよい。この外部装置情報231は、各フロースイッチ10のフローエントリ情報130に用いられる。
【0056】
【表7】

【0057】
なお、フロー制御装置20は、外部装置30の先にIPネットワークが存在する場合、そのIPネットワークのネットワークアドレスと、外部装置30のIPアドレスとの関係を示す情報(図示省略)を記憶部23に保持するものとする。そして、フロー制御装置20のトポロジ情報更新部222(後記)は、この情報を参照することで、あるIPネットワークへのパケットについては、当該外部装置30をネクストホップとして解決する。つまり、この外部装置情報231において、あるIPアドレスが、外部装置30の先にあるIPネットワークのアドレスである場合、スイッチンスタンスIDとして、そのIPネットワークへの外部装置30に接続するエッジスイッチのIDを設定しておく。
【0058】
処理部22は、フローエントリ情報設定部221と、トポロジ情報更新部(情報更新部)222とを備える。
【0059】
フローエントリ情報設定部221は、フロースイッチ10から、フローエントリの取得要求を受け付けたとき、当該フローのスイッチインスタンスIDを含むフローエントリを、この取得要求の送信元のフロースイッチ10へ送信する。つまり、フローエントリ情報設定部221は、フロースイッチ10からフローエントリの取得要求を受信すると、この取得要求に含まれる当該フローの宛先IPアドレスと外部装置情報231とを参照して、このフローのスイッチンスタンスIDおよび物理ポート番号を検索する。そして、検索したスイッチンスタンスIDおよび物理ポート番号を含むフローエントリを作成し、フロースイッチ10へ送信する。また、このフローエントリ情報設定部221は、ネットワークのトポロジ変化等によりトポロジ情報230が更新されたとき、更新されたトポロジ情報230に基づき、各フロースイッチ10へフローエントリ情報130の更新指示を送信するものとする。
【0060】
トポロジ情報更新部222は、外部装置30およびフロースイッチ10からトポロジ情報230の元となる情報を収集し、トポロジ情報230を更新する。トポロジ情報230の元となる情報は、例えば、LLDP(Link Layer Discovery Protocol、IEEE802.1abにより標準化)等を利用して収集する。そして、トポロジ情報更新部222は、トポロジ情報230を用いて、各フロースイッチ10で用いる経路情報を作成し、記憶部23の所定領域に記憶しておく。この経路情報は、トポロジ情報230に示されるネットワークコストや総リンク数等に基づき計算される最短経路とする。計算した各フローの経路情報は、フローエントリ情報設定部221が、各フロースイッチ10へ送信する。
【0061】
なお、このトポロジ情報更新部222は、所定期間ごとにトポロジ情報230の元となる情報を収集し、トポロジ情報230を更新するものとする。そして、フローエントリ情報設定部221は、更新されたトポロジ情報230に基づき、各フロースイッチ10にフローエントリを送信する。よって、ネットワークトポロジの変化に追従し、各フロースイッチ10のフローエントリ情報130を更新できる。なお、外部装置30がVMである場合、この外部装置30に関する外部装置情報231は、例えば、ハイパーバイザ等のVM管理制御用プログラムにより取得する。これにより、VMマイグレーションが発生した場合も、VMマイグレーションに連動した外部装置情報231の更新を行うことができる。
【0062】
<処理手順>
図4を用いて、図3のフロー制御システムの処理手順を説明する。ここでは、OpenFlowネットワークにおけるフロー制御を例として説明する。フロースイッチ10には、OFS(Open Flow Switch)を用い、フロー制御装置20には、OFC(Open Flow Controller)を用いる。なお、スイッチンスタンスIDとして、DPID(データパスID。64bit)を用いる。このDPIDは、OpenFlowにおいてOFSの識別情報としてを用いられるIDである。このDPIDは、例えば、パケットの送信元MACアドレスおよび宛先MACアドレスのフィールドの96bit中、先頭の64bitに格納し、残りの32bitには「0」を格納する。さらに、このフロースイッチ10には、ARP(Address Resolution Protocol)の代理機能を設ける。つまり、外部装置30からのARP要求を受信したフロースイッチ10は、このARP要求をフロー制御装置20に転送し、フロー制御装置20は、ARP要求に対する応答を、送信元の外部装置30に返す。
【0063】
エッジスイッチ(DPID=H)に接続しているサービス利用者端末40が、外部装置30I(ルータ)経由で、外部装置30H(VM)への通信を開始する場合の処理手順例を示す。
【0064】
まず、S101において、フロー制御装置20は、事前処理として以下の処理を行う。すなわち、フロー制御装置20のトポロジ情報更新部222(図3参照)は、LLDPによりopenflowネットワークトポロジの収集を行う。つまり、トポロジ情報更新部222は、各フロースイッチ10および外部装置30からトポロジ情報230の元となる情報を収集する。そして、トポロジ情報更新部222は、この収集した情報に基づきトポロジ情報230を更新し、更新したトポロジ情報230に基づき全DPIDフルメッシュの最適経路を計算する。つまり、トポロジ情報更新部222は、コアNW内の全エッジスイッチ同士の組み合わせについて、そのエッジスイッチ間の最適経路(最短経路)を計算する。そして、計算した最適経路を、フロー制御装置20の記憶部23の所定領域に記憶しておく。さらに、トポロジ情報更新部222は、ハイパーバイザと連携し、各VM(外部装置30)の物理ポート番号、IPアドレスおよびMACアドレスを収集する。そして、これらの情報を、外部装置情報231に書き込む。
【0065】
フロー制御装置20は、フローの事前設定を行う(S102)。つまり、フロー制御装置20のフローエントリ情報設定部221は、制御対象となるフローのフロー識別情報と、そのフローに対しどのような処理を行うかの設定入力を受け付ける。また、フロー制御の有効期限の設定入力を受け付けてもよい。この入力を受け付けたフローエントリ情報設定部221は、この制御対象となるフローに関するフローエントリ(フロー識別情報、処理内容、有効期限)の設定指示を、各フロースイッチ10へ送信する。つまり、フロースイッチ10それぞれに対し、フローエントリ情報130に登録するフローエントリを送信する。
【0066】
例えば、フロー制御装置20は、エッジスイッチであるフロースイッチ10H,10Dに対し、コアNW→エッジNWへのフロー定義のためのフローエントリを送信する(S103,S104)。そして、このフローエントリを受信したフロースイッチ10H,10Dのフローエントリ更新部121は、第3のフローエントリ情報133を設定する。なお、このフロー制御装置20は、フロースイッチ10Dにおける第3のフローエントリ情報133に、外部装置30Hへのフローのパケットを受信したとき、このフローのパケットの宛先MACアドレスを、外部装置30HのMACアドレスに書き換えて、外部装置30Hへ送信する、というフローエントリを設定するものとする。
【0067】
また、フロー制御装置20は、エッジスイッチを含む各フロースイッチ10に対し、コアNW内のフローの転送定義のためのフローエントリを送信する(S105)。そして、このフローエントリを受信した各フロースイッチ10のフローエントリ更新部121は、第2のフローエントリ情報132を設定する。
【0068】
以上のような処理を行った後、サービス利用者端末40は、VM(外部装置30H)への通信を開始する(S1)。まず、外部装置30Iは、サービス利用者端末40から、外部装置30IのIPアドレスに対するARP要求を受信すると(S2)、サービス利用者端末40へ、このARP要求に対する応答(ARP応答)を返す(S3)。続いて、外部装置30Iが、サービス利用者端末40から、外部装置30HのIPアドレスを含むTCP SYN(TCP(Transmission Control Protocol)での接続開始時に送信するパケット)を受信すると(S4)、外部装置30Iは、この外部装置30HのIPアドレスに対するARP要求を、フロースイッチ10Hへ送信する(S5)。
【0069】
フロースイッチ10Hは、受信したARP要求に示されるIPアドレスを宛先とするフローに関するフローエントリがないと判断すると、このARP要求をフロー制御装置20へ送信する(S6)。このARP要求を受信したフロー制御装置20は、まず、フロー制御装置20(OFC)のMACアドレスを代理応答する。つまり、フロー制御装置20は、フロースイッチ10Hへ、フロー制御装置20のMACアドレスを含むARP応答を送信する(S11)。そして、フロースイッチ10は、このARP応答を外部装置30Iへ転送する(S12)。
【0070】
次に、外部装置30Iは、S4で受信したTCP SYNを、フロースイッチ10Hへ送信する(S13)。このTCP SYNには、送信元MACアドレス=ルータ(外部装置30I)、宛先MACアドレス=OFC(フロー制御装置20)を設定する。
【0071】
フロースイッチ10Hは、受信したTCP SYNをフロー制御装置20へ送信し(S14)。フロー制御装置20のフローエントリ情報設定部221は、このTCP SYNに含まれるIPアドレス(宛先IPアドレス)をキーに、外部装置情報231を検索し、VM(外部装置30H)の収容OFS(フロースイッチ10)がDPID(D)のフロースイッチ10Dであることを割り出す(S15)。つまり、外部装置30Hに接続するエッジスイッチが、DPID(D)のフロースイッチ10Dであることを割り出す。そして、フロー制御装置20は、フロースイッチ10Hに対し、このTCP SYNにおける送信元MACアドレスおよび宛先MACアドレスのフィールド(全長96bit)の値をDPID(D)に書き換え、このフロースイッチ10Dへの最適経路へのネクストホップであるDPID(A)のフロースイッチ10Aへ送信するよう指示する(S16:Flow_mod(MACアドレスをDPID(D)に書き換えて、DPID(A)に送信))。このような指示を受信したフロースイッチ10Hは、外部装置30Hを宛先とするフローについては、送信元MACアドレスおよび宛先MACアドレスのフィールドの値をDPID(D)に書き換えて、フロースイッチ10Aへ送信(出力)する、というフローエントリを第1のフローエントリ情報131に追加する。
【0072】
S16の後、フロースイッチ10Hは、S13で受信したTCP SYNの送信元MACアドレスおよび宛先MACアドレスのフィールド(全長96bit)の値をDPID(A)に書き換え、フロースイッチ10Aへ送信する。そして、フロースイッチ10A,10Bは、TCP SYNの宛先MACアドレスフィールドに記載されたDPID(A)と、自身の保持する第2のフローエントリ情報132とを参照して、TCP SYNの転送処理を行い、このTCP SYNは、フロースイッチ10Dに到達する(S17)。
【0073】
フロースイッチ10Dは、第3のフローエントリ情報133に基づき、S17で転送されたTCP SYNの送信元MACアドレスに、例えば、OFC(フロー制御装置20)のMACアドレスを設定し、宛先MACアドレスに外部装置30HのMACアドレスを設定して、外部装置30Hへ送信する(S18)。このようにすることで、外部装置30IからのTCP SYNは、外部装置30Hに到達し、サービス利用者端末40は、外部装置30I経由で外部装置30Hとの間でデータ送受信が可能になる。
【0074】
以上説明したフロー制御システムによれば、フロースイッチ10の保持するフローエントリ数を低減することができる。特に、各エッジスイッチの配下に多数の外部装置30が接続される場合、コアNW内のコアスイッチの保持するフローエントリ数は最大でコアNW内のエッジスイッチの台数とすればよいので、フローエントリ数を大幅に低減できる。
【0075】
なお、前記した実施の形態において、スイッチンスタンスIDとして、DPIDを用いる場合を例に説明したが、フロースイッチ10が識別できれば他のIDを用いるようにしてもよい。
【符号の説明】
【0076】
10 フロースイッチ
11,21 入出力部
12,22 処理部
13,23 記憶部
20 フロー制御装置
30 外部装置
40 サービス利用者端末
121 フローエントリ更新部
122 フロー制御部
123 フローエントリ取得部
130 フローエントリ情報
131 第1のフローエントリ情報
132 第2のフローエントリ情報
133 第3のフローエントリ情報
221 フローエントリ情報設定部
222 トポロジ情報更新部
230 トポロジ情報
231 外部装置情報

【特許請求の範囲】
【請求項1】
ネットワーク内に設置され、前記ネットワーク内を流れる一連のパケットであるフローに対し、フローエントリ情報に基づきフロー制御を行うフロースイッチであって、
前記フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローのMACアドレスフィールドの値を、前記フロースイッチのうち、当該宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDに書き換えることと、当該フローを、所定の転送経路へ転送することとを示した第1のフローエントリ情報、
前記フローに付されるスイッチンスタンスIDごとに、当該フローへの処理内容として、当該フローを、当該スイッチンスタンスIDに対応するエッジノードへの転送経路へ転送することを示した第2のフローエントリ情報、
および、
前記フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローを、当該宛先IPアドレスの外部装置へ出力することを示した第3のフローエントリ情報、を記憶する記憶部と、
前記フローの送信および受信を行う入出力部と、
(1)前記入出力部経由で受信したフローが、自身のフロースイッチに接続される外部装置から、前記ネットワーク内の他のフロースイッチへのフローであるとき、当該フローの宛先IPアドレスと前記第1のフローエントリ情報とを参照して、当該フローのMACアドレスフィールドの値を、前記第1のフローエントリ情報に示される当該フローのスイッチンスタンスIDに書き換え、当該フローを、前記第1のフローエントリ情報に示される当該フローの転送経路に従い転送し、
(2)前記受信したフローが、前記ネットワーク内の他のフロースイッチから、別の他のフロースイッチへのフローであるとき、当該フローのスイッチンスタンスIDと前記第2のフローエントリ情報とを参照して、当該スイッチンスタンスIDを持つフローの転送経路に従い、当該フローを転送し、
(3)前記受信したフローが、前記ネットワーク内の他のフロースイッチから、自身のフロースイッチに接続される外部装置へのフローであるとき、当該フローの宛先IPアドレスと前記第3のフローエントリ情報とを参照して、当該フローを、前記入出力部経由で前記第3のフローエントリ情報に示される当該宛先IPアドレスの外部装置へ出力する、フロー制御部とを備えることを特徴とするフロースイッチ。
【請求項2】
前記第1のフローエントリ情報は、
前記フローそれぞれの有効期限を示す情報を含み、
前記フロースイッチは、
前記第1のフローエントリ情報から、前記有効期限の過ぎたフローの情報を削除するフローエントリ更新部を備えることを特徴とする請求項1に記載のフロースイッチ。
【請求項3】
請求項2に記載のフロースイッチと、前記フロースイッチの制御を行うフロー制御装置とを含むフロー制御システムであって、
前記フロースイッチは、
前記外部装置から、前記第1のフローエントリ情報に示されていない宛先IPアドレスのフローを受信したとき、当該宛先IPアドレスのフローのフローエントリの取得要求を前記フロー制御装置へ送信するフローエントリ取得部を備え、
前記フローエントリ更新部は、
前記フロー制御装置から、前記取得要求に対する応答を受信したとき、前記受信した応答に示される当該宛先IPアドレスのフローのフローエントリを、前記第1のフローエントリ情報に追加し、
前記フロー制御装置は、
前記フローの宛先IPアドレスごとに、前記フロースイッチのうち、当該宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDを示した外部装置情報と、前記エッジスイッチへの転送経路とを記憶する記憶部と、
前記フロースイッチから、前記フローエントリの取得要求を受け付けたとき、当該フローの宛先IPアドレスおよび前記外部装置情報を参照して、前記外部装置情報に示される当該フローのスイッチインスタンスIDを含むフローエントリと、当該宛先IPアドレスの外部装置に接続するエッジスイッチへの転送経路とを、前記取得要求の応答として、前記取得要求の送信元のフロースイッチへ送信するフローエントリ情報設定部とを備えることを特徴とするフロー制御システム。
【請求項4】
前記フロー制御装置は、
前記外部装置および前記ネットワークのフロースイッチ同士の接続状態を示すトポロジ情報を収集し、前記収集したトポロジ情報を用いて前記外部装置情報を更新し、前記収集したトポロジ情報に基づき、前記エッジスイッチ間の転送経路を再計算する情報更新部を備え、
前記フローエントリ情報設定部は、
前記収集したトポロジ情報に基づき、前記フロースイッチそれぞれの前記第1のフローエントリ情報、第2のフローエントリ情報および第3のフローエントリ情報における各フローのスイッチンスタンスIDを更新し、前記再計算した転送経路により、前記第1のフローエントリ情報および第2のフローエントリ情報それぞれの各フローの転送経路を更新することを特徴とする請求項3に記載のフロー制御システム。
【請求項5】
ネットワーク内を流れる一連のパケットであるフローに対するフロー制御方法であって、
前記フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローのMACアドレスフィールドの値を、フロースイッチのうち、当該宛先IPアドレスの外部装置に接続するエッジスイッチのIDであるスイッチンスタンスIDに書き換えることと、当該フローを、所定の転送経路へ転送することとを示した第1のフローエントリ情報、前記フローに付されるスイッチンスタンスIDごとに、当該フローへの処理内容として、当該フローを、当該スイッチンスタンスIDに対応するエッジノードへの転送経路へ転送することを示した第2のフローエントリ情報、および、前記フローの宛先IPアドレスごとに、当該フローへの処理内容として、当該フローを、当該宛先IPアドレスの外部装置へ出力することを示した第3のフローエントリ情報、を記憶する記憶部を備える前記フロースイッチが、
(1)入出力部経由で受信したフローが、自身のフロースイッチに接続される外部装置から、前記ネットワーク内の他のフロースイッチへのフローであるとき、当該フローの宛先IPアドレスと前記第1のフローエントリ情報とを参照して、当該フローのMACアドレスフィールドの値を、前記第1のフローエントリ情報に示される当該フローのスイッチンスタンスIDに書き換え、当該フローを、前記第1のフローエントリ情報に示される当該フローの転送経路に従い転送し、
(2)前記受信したフローが、前記ネットワーク内の他のフロースイッチから、別の他のフロースイッチへのフローであるとき、当該フローのスイッチンスタンスIDと前記第2のフローエントリ情報とを参照して、当該スイッチンスタンスIDを持つフローの転送経路に従い、当該フローを転送し、
(3)前記受信したフローが、前記ネットワーク内の他のフロースイッチから、自身のフロースイッチに接続される外部装置へのフローであるとき、当該フローの宛先IPアドレスと前記第3のフローエントリ情報とを参照して、当該フローを、前記第3のフローエントリ情報に示される当該宛先IPアドレスの外部装置へ出力することを特徴とするフロー制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate