【解決手段】ネットワークシステムは、複数の中継装置と、複数の終端装置と、制御装置と、含む。複数の中継装置は、アンダーレイネットワークを形成する。複数の終端装置は、トンネル接続することでアンダーレイネットワーク上にオーバーレイネットワークを形成する。制御装置は、複数の中継装置及及び複数の終端装置を制御する。制御装置は、複数の中継装置及び複数の終端装置から、第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得する。制御装置は、取得した入力ポート、出力ポートのパケット通過数に基づき、第1のフローの送信元から宛先までの複数の中継装置を含む通信経路を特定する。
アンダーレイネットワークを形成する、複数の中継装置と、トンネル接続することで前記アンダーレイネットワーク上にオーバーレイネットワークを形成する、複数の終端装置と、に接続され、
前記複数の中継装置及び前記複数の終端装置から、第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得し、
前記取得した入力ポート、出力ポートのパケット通過数に基づき、前記第1のフローの送信元から宛先までの前記複数の中継装置を含む通信経路を特定する、制御装置。
アンダーレイネットワークを形成する、複数の中継装置と、トンネル接続することで前記アンダーレイネットワーク上にオーバーレイネットワークを形成する、複数の終端装置と、に接続された制御装置において、
前記複数の中継装置及び前記複数の終端装置から、第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得するステップと、
前記取得した入力ポート、出力ポートのパケット通過数に基づき、前記第1のフローの送信元から宛先までの前記複数の中継装置を含む通信経路を特定するステップと、
を含む、通信経路特定方法。
アンダーレイネットワークを形成する、複数の中継装置と、トンネル接続することで前記アンダーレイネットワーク上にオーバーレイネットワークを形成する、複数の終端装置と、に接続された制御装置に搭載されたコンピュータに、
前記複数の中継装置及び前記複数の終端装置から、第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得するステップと、
前記取得した入力ポート、出力ポートのパケット通過数に基づき、前記第1のフローの送信元から宛先までの前記複数の中継装置を含む通信経路を特定するステップと、
を実行させるプログラム。
【発明を実施するための形態】
【0015】
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
【0016】
一実施形態に係るネットワークシステムは、複数の中継装置101と、複数の終端装置102と、制御装置103と、含む(
図1参照)。複数の中継装置101は、アンダーレイネットワークを形成する。複数の終端装置102は、トンネル接続することでアンダーレイネットワーク上にオーバーレイネットワークを形成する。制御装置103は、複数の中継装置101及び複数の終端装置102を制御する。制御装置103は、複数の中継装置101及び複数の終端装置102から、第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得する。制御装置103は、取得した入力ポート、出力ポートのパケット通過数に基づき、第1のフローの送信元から宛先までの複数の中継装置101を含む通信経路を特定する。
【0017】
上記制御装置103は、中継装置101及び終端装置102の各ポートからパケットが転送される際に、各ポートにて処理したパケット数に基づき特定フローに属するパケットの転送経路を特定する。具体的には、制御装置103は、同一フローに属するパケットを処理した場合に、入力ポートと出力ポートにて同じパケット処理数(カウント数)となることを利用し、通信フローにおけるエンドツーエンドでの通信経路を特定する。
【0018】
その結果、オーバーレイネットワークにおいてもエンドツーエンドで必要最低限(特定通信)の通信確認、通信監視が実現できる。つまり、トンネル技術を用いたオーバーレイネットワークにおいて、制御対象外であるアンダーレイネットワークの通信確認、通信監視が実現される。
【0019】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
【0020】
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
【0021】
図2は、第1の実施形態に係るネットワークシステムの概略構成の一例を示す図である。
図2を参照すると、ネットワークシステムには、中継装置10−1〜10−9と、トンネル終端装置20−1〜20−4と、制御装置30と、端末40−1〜40−4と、が含まれる。
【0022】
なお、以降の説明において、中継装置10−1〜10−9を区別する特段の理由がない場合には、単に「中継装置10」と表記する。他の構成についても同様に、ハイフンより左側の数字にて各構成を代表して表記する。
【0023】
中継装置10は、その内部に設定された内容(L2/L3プロトコルの設定等)に従って、自律分散によりパケットを転送する装置(例えば、スイッチ、ルータ等の装置)である。複数の中継装置10は、アンダーレイネットワークを形成する。
【0024】
トンネル終端装置20は、VXLAN等の仮想トンネルを終端する装置(トンネルエンドポイント)である。トンネル終端装置20は、他のトンネル終端装置20との間に形成される仮想トンネルを終端する。トンネル終端装置20は、対になる装置とトンネル接続することで仮想ネットワーク(オーバレイネットワーク)を構築する。このように、複数のトンネル終端装置20は、トンネル接続することでアンダーレイネットワーク上にオーバーレイネットワークを形成する。
【0025】
制御装置30は、ネットワークシステムに含まれる通信装置(中継装置10、トンネル終端装置20)を制御するコントローラである。制御装置30と通信装置群は、専用の制御線(制御コネクション)により接続されている。
【0026】
端末40は、トンネル終端装置20に接続された情報処理装置(例えば、パーソナルコンピュータ、サーバ)である。
図2では、一台のトンネル終端装置20に一台の端末40が接続される様子を図示しているが、実際には複数の端末40が各トンネル終端装置20に接続される。
【0027】
なお、
図2に示す構成は例示であって、中継装置10やトンネル終端装置20の数等を限定する趣旨ではないことは勿論である。また、
図2において、端末40は、物理的に独立した装置として記載されているが、必ずしもその必要はなく、仮想的な装置であってもよい。また、トンネル終端装置20に関しても同様であり、物理的な装置でなくとも仮想的な装置であってもよい。
【0028】
制御装置30は、トンネル終端装置20に対して通信制御のための設定を行う。また、制御装置30は、各トンネル終端装置20に、トラフィックカウンタを取得するための設定を行う。具体的には、制御装置30は、トンネル終端装置20のポート(受信ポート、送信ポート)に対してACL(Access Control List)を設定し、トンネル終端装置20が処理したパケットの数をフローごとに取得する。
【0029】
一方、制御装置30は、中継装置(アンダーレイ装置)10に対しては、基本的には通信制御のための設定を行わず、中継装置を通過する通信経路形成は中継装置10(中継装置群)に委ねる。但し、制御装置30は、中継装置10に対してもACLを設定し、各中継装置10が処理したパケットの数をフローごとに取得する。
【0030】
このように、制御装置30は、中継装置10及びトンネル終端装置20から、特定のフロー(第1のフロー)に属するパケットが各装置の入力ポート、出力ポートを通過した数を取得する。制御装置30は、各装置における取得した入力ポート、出力ポートのパケット通過数に基づき、特定フロー(第1のフロー)の送信元から宛先までの複数の中継装置10を含む通信経路をエンドツーエンドで特定する。
【0031】
続いて、第1の実施形態をなす各装置の処理構成について説明する。
【0032】
[中継装置]
図3は、中継装置10の処理構成(処理モジュール)の一例を示す図である。
図3を参照すると、中継装置10は、制御装置通信部201と、中継装置通信部202と、ACL処理部203と、パケット転送部204と、を含む。
【0033】
制御装置通信部201は、制御装置30との間の通信を制御する手段(インターフェイス)である。
【0034】
中継装置通信部202は、他の中継装置10との間のデータ転送用の通信を制御する手段(インターフェイス)である。
【0035】
ACL処理部203は、制御装置30から設定されるACLに関する処理を実行する手段である。ACL処理部203は、制御装置30から設定された識別条件に合致するパケットを転送すると、当該識別条件に対応するカウンタ(トラフィックカウント値)をインクリメントする。なお、ACL処理部203は、パケット転送部204から処理対象のパケットを受信し、当該パケットのヘッダ等を参照することで、対応するトラフィックカウント値を変更する。
【0036】
パケット転送部204は、VXLANプロトコルに従って受信したパケットを他の中継装置10に転送する。
【0037】
[トンネル終端装置]
図4は、トンネル終端装置20の処理構成(処理モジュール)の一例を示す図である。
図4を参照すると、トンネル終端装置20は、制御装置通信部301と、ACL処理部302と、パケット送受信部303と、カプセル化部304と、記憶部305と、パケット転送部306と、を含む。
【0038】
制御装置通信部301は、制御装置30との間の通信を制御する手段(インターフェイス)である。
【0039】
ACL処理部302は、制御装置30から設定されるACLに関する処理を実行する手段である。ACL処理部302は、中継装置10のACL処理部203と同等の動作を行う。
【0040】
パケット送受信部303は、端末40とデータ転送用の通信を行う手段(インターフェイス)である。
【0041】
カプセル化部304は、端末40から受信したパケットのカプセル化(VXLANカプセル化)と、中継装置10から受信したパケットのカプセル化解除(VXLANカプセル化解除)と、を行う手段である。
【0042】
記憶部305は、トンネル終端装置20の動作に必要な情報を記憶する。例えば、記憶部305は、送信先の端末情報とトンネル終端装置20の情報を記憶する手段である。
【0043】
図5は、記憶部305が記憶する情報の一例を示す図である。記憶部305は、
図5(a)に示すように、端末40をパケットの宛先とする場合に、対応するトンネル終端装置20との関係を規定する情報(送信先端末情報)を記憶する。例えば、
図5(a)を参照すると、端末40−1に向けて送信するパケットは、トンネル終端装置20−1を宛先としてVXLANパケットを送信すれば良いことが分かる。
【0044】
また、記憶部305は、
図5(b)に示すように、トンネル終端装置20のアドレスとVXLANによる仮想ネットワークを識別するための識別子VNI(VXLAN Network Identifier)を対応付けた情報(トンネル終端装置情報)を記憶する。
図5(b)を参照することで、VNIが「1」であり、トンネル終端装置20−1との間に形成されるVXLANにパケットを収容するための情報(VXLANカプセル化のために必要な情報;宛先のアドレス)が得られる。
【0045】
制御装置30は、
図5に示すような送信先端末情報やトンネル終端装置情報をトンネル終端装置20に設定する。
【0046】
カプセル化部304は、記憶部305に送信先端末情報が存在する場合に、該当する情報によりVXLANカプセル化を行って(受信パケットにVXLANヘッダを付与して)、当該カプセル化されたパケットをパケット転送部306から送出する。あるいは、カプセル化部304は、パケット転送部306からVXLANカプセル化されたパケットを受信した場合に、当該受信パケットのVXLANカプセル化を解除し、パケット送受信部303から端末40に向けて送信する。
【0047】
パケット転送部306は、中継装置10と通信し、端末40からのパケットを中継装置10に転送する手段である。あるいは、パケット転送部306は、中継装置10からパケットを受信し、受信パケットをカプセル化部304に引き渡す。
【0048】
[制御装置]
図6は、制御装置30の処理構成(処理モジュール)の一例を示す図である。
図6を参照すると、制御装置30は、通信部401と、ACL設定部402と、経路特定部403と、記憶部404と、を含んで構成される。なお、
図6において、制御装置30からトンネル終端装置20に制御情報を設定する手段の図示を省略している。
【0049】
通信部401は、中継装置10、トンネル終端装置20との間の通信を制御する手段(インターフェイス)である。
【0050】
記憶部404は、制御装置30の動作に必要な情報を記憶する。例えば、記憶部404は、ネットワークトポロジを記憶する。システムの管理者等は、例えば、
図2に示すようなネットワークトポロジ(物理トポロジ)を制御装置30に入力する。あるいは、制御装置30が、LLDP(Link Layer Discovery Protocol)等を用いてネットワークトポロジを生成してもよい。
【0051】
ACL設定部402は、中継装置10及びトンネル終端装置20にACLを設定する手段である。ACL設定部402は、トラフィックカウンタ取得手段として、通信装置群(中継装置10、トンネル終端装置20)への設定/情報取得にACLを用いる。
【0052】
ACL設定部402は、特定すべき通信のフロー条件により、ネットワークシステムに含まれる制御対象である全ての通信装置(中継装置10、トンネル終端装置20)が有する全てのポートに対し、トラフィックカウンタ取得のためのACLを設定する。トンネル終端装置20に指定するフロー条件(トンネリングによるカプセリング前)と、中継装置10に指定するフロー条件(トンネリングによるカプセリング後)では、設定する条件(内容)が異なる。
【0053】
ACL設定部402は、トンネル終端装置20のトンネル設定に基づき、カプセリング前後で通信(フロー)の同一性のマッピングが得られるようにフロー条件を設定する。ACL設定部402は、ネットワークシステムの各通信装置のフロー(レイヤ1〜レイヤ7の特定keyの組み合わせにより一意に特定される通信フロー)のトラフィックカウンタ値をACLを使って取得する。
【0054】
初めに、トンネル終端装置20に設定するACLについて説明する。
【0055】
ACL設定部402は、トンネル終端装置20の入力ポート用に「入力ACL(Ingress ACL)」をトンネル終端装置20に設定する。入力ACLは、入力ポート及びトラフィックを識別する識別条件(Key)と、アクションと、を含む。
【0056】
入力ACLの識別条件には、例えば、端末40の送信元MAC(Media Access Control)アドレス、端末40の宛先MACアドレス、VLAN ID等が用いられる。
【0057】
アクションには、トラフィックカウンタの取得が目的(ポートを通過したパケットのカウントが目的)であるため、許可(Permit)が設定される。
【0058】
ACL設定部402は、各トンネル終端装置20について、入力ポートの条件を変え、全ての入力ポート用のエントリ(識別条件とアクションの組み)を設定する。
【0059】
ACL設定部402は、例えば、トンネル終端装置20−1用の入力ACLとして、
図7に示すようなACLを生成する。
【0060】
ACL設定部402は、トンネル終端装置20の出力ポート用に「出力ACL(Egress ACL)」をトンネル終端装置20に設定する。出力ACLも入力ACLと同様に、入力ポート及びトラフィックを識別する識別条件(Key)と、アクションと、を含む。
【0061】
出力ACLの識別条件には、例えば、端末40の送信元MACアドレス、端末40の宛先MACアドレス、VLAN ID等が用いられる。アクションには、許可(Permit)が設定される。
【0062】
ACL設定部402は、各トンネル終端装置20について、出力ポートの条件を変え、全ての出力ポート用のエントリ(識別条件とアクションの組み)を設定する。
【0063】
ACL設定部402は、例えば、トンネル終端装置20−1用の出力ACLとして、
図8に示すようなACLを生成する。
【0064】
次に、中継装置10に設定するACLについて説明する。
【0065】
ACL設定部402は、中継装置10の入力ポート用に「入力ACL(Ingress ACL)」を中継装置10に設定する。入力ACLは、入力ポート及びトラフィックを識別する識別条件(Key)と、アクションと、を含む。
【0066】
入力ACLの識別条件には、例えば、トンネル終端装置20の送信元MACアドレス、トンネル終端装置20の宛先MACアドレス、VNI等が用いられる。アクションには、トラフィックカウンタの取得が目的であるため、許可(Permit)が設定される。
【0067】
ACL設定部402は、各中継装置10について、入力ポートの条件を変え、全ての入力ポート用のエントリ(識別条件とアクションの組み)を設定する。ACL設定部402は、例えば、中継装置10−3用の入力ACLとして、
図9に示すようなACLを生成する。
【0068】
ACL設定部402は、中継装置10の出力ポート用に「出力ACL(Egress ACL)」を中継装置10に設定する。出力ACLも入力ACLと同様に、入力ポート及びトラフィックを識別する識別条件(Key)と、アクションと、を含む。
【0069】
出力ACLの識別条件には、例えば、トンネル終端装置20の送信元MACアドレス、トンネル終端装置20の宛先MACアドレス、VNI等が用いられる。アクションには、許可(Permit)が設定される。
【0070】
ACL設定部402は、各中継装置10について、出力ポートの条件を変え、全ての出力ポート用のエントリ(識別条件とアクションの組み)を設定する。ACL設定部402は、例えば、中継装置10−3用の出力ACLとして、
図10に示すようなACLを生成する。
【0071】
記憶部404には、トンネル終端装置20におけるカプセリング前後のトラフィック(フロー)を一意に識別するための関係性が記憶されている。ACL設定部402は、上記関係性を考慮して、各ACLに設定する識別条件を決定する。とりわけ、ACL設定部402は、上記関係性を考慮して、中継装置10に設定するACLの識別条件(Key)を決定する。
【0072】
具体的には、端末40−1と端末40−4間のVLAN IDが「a」であるトラフィックは、トンネル終端装置20−1とトンネル終端装置20−4間のVNIが「A」のトラフィックに対応する(マッピングされる)という関係性が記憶されている。つまり、あるL2面に所属する端末情報{端末40−1、40−4、VLAN ID=a}は、{トンネル終端装置20−1、20−4、VNI=A}というL2面に対応するトンネル面にマッピングされるという関係性が記憶部404に格納されている。このように、記憶部404は、各端末情報とトンネル面のマッピングの関係をトラフィックごとに記憶する。ACL設定部402は、このような関係性を用いて各通信装置に設定するACLを生成する。
【0073】
なお、トンネル終端装置20−1は、端末40−1が所属するトンネル終端装置20であり、トンネル終端装置20−4は、端末40−4が所属するトンネル終端装置20である。このように、制御装置40は、マッピングに関する情報を有し、トンネルによるカプセリング前後の関係性を踏まえて、識別条件(Key)を決定する。
【0074】
このように、制御装置30は、特定フローを識別するための識別条件を、複数の中継装置10及び複数のトンネル終端装置20に設定する。各中継装置10は、設定された識別条件に合致して処理したパケットを入力ポート、出力ポートごとにカウントする。同様に、各トンネル終端装置20は、設定された識別条件に合致して処理したパケットを入力ポート、出力ポートごとにカウントする。その際、制御装置30は、少なくともトンネル終端装置20に設定する識別条件を、トンネル接続に伴うパケットのカプセリング前後における特定フローを一意に識別するための情報に基づき決定する。
【0075】
経路特定部403は、端末40間のエンドツーエンドでのパケット転送経路を特定する手段である。より具体的には、経路特定部403は、複数の通信装置を含むネットワークシステムにおいて、パケット通過数が同じ入力ポート、出力ポートを接続することで、特定フローの通信経路を特定する。また、経路特定部403は、複数の中継装置10及び複数のトンネル終端装置20に関するネットワークトポロジに、特定フローの通信経路をマッピングする。
【0076】
経路特定部403の動作を図面を参照しつつ説明する。
図11は、経路特定部403の動作の一例を示すフローチャートである。
【0077】
経路特定部403は、ACLの設定から所定期間経過した後に、ネットワークシステム上の全ての通信装置(中継装置10、トンネル終端装置20)からトラフィックカウンタ値を取得する(ステップS101)。
【0078】
次に、経路特定部403は、取得したトラフィックカウンタのうち、値が増加(変化)しているトラフィックカウンタの値を用いて、トラフィックを物理トポロジにマッピングする(マッピング情報の生成;ステップS102)。
【0079】
経路特定部403が生成する上記マッピング情報には、特定すべき通信(トラフィック)のエンドツーエンドでの経路に関する情報が含まれる。また、経路特定部403は、ネットワークトポロジ及び特定したエンドツーエンドでの通信経路に関する情報を外部に出力してもよい。例えば、経路特定部403は、上記情報を液晶パネル等に表示する、印刷する、外部にメールを出力する、といった対応を行う。
【0080】
続いて、図面を参照しつつ第1の実施形態に係るネットワークシステムの動作を説明する。
【0081】
図12には、ACLを各装置に設定してから一定時間経過した後のトラフィックカウンタ値を表記している。なお、
図12を含む図面において、各装置の近傍にてシャープ(#)と共に記載した数字はポート番号を示す。また、
図12に表記するトラフィックカウンタ値は、
図7〜
図10に記載した端末40−1から端末40−4までのトラフィックに対応するものである。
【0082】
各装置には、入力ポート及び出力ポートごとにトラフィックを識別(特定)する識別条件が設定されており、該当トラフィックに属するパケットが各ポートを通過するたびにトラフィックカウント値はインクリメントされる。そのため、各装置において、トラフィックカウント値が同じ入力ポートと出力ポートがパケットが通過したポートとなる。
【0083】
図12の例では、中継装置10−3において、ポート1にて受信したパケットはポート3から出力されていることがわかる。つまり、
図12に示すように、実際にトラフィックを入力したポートに関連する入力ACLのカウンタ、及び実際にトラフィックを出力したポートに関連する出力ACLのカウンタがインクリメントされることになる。
【0084】
経路特定部403は、取得したカウンタ情報のうち、トラフィックカウンタが同じポートを物理トポロジにマッピングし、特定すべき通信のエンドツーエンドの経路を特定する。例えば、上述の
図12の例では、
図13にて太い実線で示す経路が特定される。
【0085】
このように、制御装置30は、通信装置群から取得したACLのカウンタ情報と予め有しているネットワークシステムのトポロジ(物理トポロジ)をマッピングしてアンダーレイネットワークを含むエンドツーエンドの通信経路を特定する。
【0086】
次に、第1の実施形態に係るネットワークシステムを構成する各装置のハードウェア構成を説明する。
【0087】
図14は、第1の実施形態に係る制御装置30のハードウェア構成の一例を示すブロック図である。
【0088】
制御装置30は、情報処理装置(コンピュータ)により構成可能であり、
図14に例示する構成を備える。例えば、制御装置30は、内部バスにより相互に接続される、CPU(Central Processing Unit)51、メモリ52、入出力インターフェイス53及び通信手段であるNIC(Network Interface Card)54等を備える。
【0089】
但し、
図14に示す構成は、制御装置30のハードウェア構成を限定する趣旨ではない。制御装置30は、図示しないハードウェアを含んでもよいし、必要に応じて入出力インターフェイス53を備えていなくともよい。また、制御装置30に含まれるCPU等の数も
図14の例示に限定する趣旨ではなく、例えば、複数のCPU51が制御装置30に含まれていてもよい。
【0090】
メモリ52は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
【0091】
入出力インターフェイス53は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
【0092】
制御装置30の機能は、上述の各種処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ52に格納されたプログラムをCPU51が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能を何らかのハードウェア、及び/又は、ソフトウェアで実行する手段があればよい。
【0093】
なお、中継装置10やトンネル終端装置20の基本的なハードウェア構成は制御装置30と同様とすることができるので説明を省略する。
【0094】
以上のように、第1の実施形態に係る制御装置30は、各通信装置に確認したい通信のトラフィックカウンタ取得のためのACLを設定する。制御装置30は、経路の特定対象となるトラフィックに対応するトラフィックカウント値であって、値が同じトラフィックカウント値のポートを接続していく(繋ぎ合わせていく)ことで、実通信の通信経路、通信状況が確認できる。即ち、第1の実施形態に係るネットワークシステムは、特定の端末間の通信経路を、エンドツーエンドで確認することができる。
【0095】
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
【0096】
第2の実施形態では、制御装置30にオープンフローコントローラとしての機能を追加し、中継装置10及びトンネル終端装置20にオープンフロースイッチとしての機能を追加する。これらの機能追加により、制御装置30は、特定通信のエンドツーエンドの通信経路を制御する。つまり、ネットワークシステムを構成する各通信装置は、外部から設定された処理規則に基づいてパケットを処理し、制御装置30は、各通信装置に処理規則を設定することで、特定通信の通信経路を制御する。
【0097】
制御装置30は、フロー(受信パケット)を識別するための条件(マッチ条件)とパケットを転送するための指示(インストラクション)からなるフローエントリを通信装置に設定し、特定通信のエンドツーエンドの通信経路を制御する。つまり、制御装置30は、オープンフローのマッチ条件でフロー条件を指定し、outputアクションで出力先を指定する。
【0098】
[中継装置]
図15は、第2の実施形態に係る中継装置10の処理構成の一例を示す図である。
図3及び
図15を参照すると、第2の実施形態に係る中継装置10には、テーブル管理部205と、記憶部206と、転送処理部207と、が追加されている。当該処理ブロックにより、オープンフロースイッチとしての機能が実現される。
【0099】
テーブル管理部205は、記憶部206に保持されているフローテーブルを管理する手段である。より具体的には、テーブル管理部205は、制御装置30から指示された処理規則(フローエントリ)を記憶部206に登録する。また、テーブル管理部205は、転送処理部207から新規パケットを受信したことを通知されると、制御装置30に対し、処理規則の設定を要求する。
【0100】
記憶部206には、転送処理部207が受信パケットの処理を行う際に参照するフローテーブルを1つ以上格納可能なデータベースが構成される。
【0101】
転送処理部207は、テーブル検索部211と、アクション実行部212と、を含んで構成される。
【0102】
テーブル検索部211は、記憶部206に格納されたテーブルから、受信パケットに適合するマッチフィールドを持つエントリを検索する手段である。
【0103】
アクション実行部212は、テーブル検索部211にて検索されたエントリのインストラクションフィールドに示す処理内容に従ってパケット処理を行う手段である。
【0104】
転送処理部207は、受信パケットに適合するマッチフィールドを持つエントリが見つからなかった場合は、その旨をテーブル管理部205に通知する。
【0105】
なお、中継装置10は、基本的には、第1の実施形態と同様、制御装置30から制御情報を必要とせず、自律的にパケットを転送するものとする。但し、記憶部206に1以上のフローエントリが設定されている場合には、中継装置10は、当該フローエントリによる動作を優先し、パケットを転送するものとする。
【0106】
[トンネル終端装置]
図16は、第2の実施形態に係るトンネル終端装置20の処理構成の一例を示す図である。
図4と
図16を参照すると、第1の実施形態に係るトンネリング機能(パケット送受信部303、カプセル化部304、パケット転送部306)はオープンフロースイッチの機能に置き替えられている。
【0107】
具体的には、第2の実施形態に係るトンネル終端装置20は、テーブル管理部307及び転送処理部308を備えている。なお、これらの処理モジュールは、中継装置10の対応する処理モジュールと同様の動作とすることができるので説明を省略する。
【0108】
[制御装置]
図17は、第2の実施形態に係る制御装置30の処理構成の一例を示す図である。
図6と
図17を参照すると、第2の実施形態に係る制御装置30は、処理規則設定部405をさらに備える。
【0109】
処理規則設定部405は、記憶部404に格納された情報に基づき、中継装置10上の特定経路によるパケット転送を実現する処理規則を生成し、中継装置10及びトンネル終端装置20に設定する。
【0110】
なお、記憶部404には、管理者(ユーザ)により指定されたパケット転送経路に関する情報が格納される。例えば、端末40−1と端末40−4の間の転送経路に関し、何らの設定を行わない場合には、{トンネル終端装置20−1、中継装置10−1、10−2、10−3、10−6、10−9、トンネル終端装置20−4}という経路でパケットは転送される。
【0111】
管理者は、制御装置30に、希望するパケット転送経路を設定することで、上記転送経路とは異なるパケット転送を実現する。例えば、{トンネル終端装置20−1、中継装置10−1、10−4、10−5、10−8、10−9、トンネル終端装置20−4}といったパケット転送経路が設定される。
【0112】
処理規則設定部405は、指定されたパケット転送経路を実現する処理規則を中継装置10及びトンネル終端装置20に設定する。
【0113】
処理規則設定部405は、制御すべき特定通信のフロー条件で、ネットワークシステム上の対象装置(指定した通信経路上の装置)に対して経路指定の設定を行う。
【0114】
なお、その際、処理規則設定部405は、トンネル終端装置20で指定するフロー条件(トンネルによるカプセリング前)とアンダーレイの各中継装置10(トンネリングによるカプセリング後)では、指定すべき条件が異なる。処理規則設定部405は、トンネル終端装置20のトンネル設定に基づき、カプセルリングの前後で通信の同一性のマッピングが取れるように、フロー条件(識別条件、マッチ条件)を指定する必要がある。
【0115】
ここでは、上記経路{トンネル終端装置20−1、中継装置10−1、10−4、10−5、10−8、10−9、トンネル終端装置20−4}の実現を例にとり、処理規則設定部405が生成する処理規則を説明する。
【0116】
処理規則設定部405は、
図18に示すような処理規則を生成し、トンネル終端装置20−1に設定する。
図18を参照すると、当該処理規則(オープンフローエントリ)のマッチ条件には、入力ポート条件及び識別すべきトラフィックのkeyが指定されている。
【0117】
なお、
図18の例では、トラフィックのkeyとして、端末40−1の送信元MACアドレス、端末40−4の宛先MACアドレス、値が「a」であるVLAN IDがL2トラフィック識別用のkeyとして指定されている。また、
図18の例では、マッチ条件にヒットしたパケットは、VXLANによるカプセル化の後、ポート2から出力することがインストラクションフィールドに指定されている。
【0118】
さらに、中継装置10に関しては、処理規則設定部405は、
図19に示すような処理規則を生成し、中継装置10−1に設定する。
図19を参照すると、当該処理規則(オープンフローエントリ)のマッチ条件には、入力ポート条件及び識別すべきトラフィックのkeyが指定されている。
【0119】
なお、
図19の例では、トラフィックのkeyとして、トンネル終端装置20−1の送信元MACアドレス、トンネル終端装置20−4の宛先MACアドレス、値が「A」であるVINがL2トラフィック識別用のkeyとして指定されている。
【0120】
なお、第1の実施形態と同様に、記憶部404には、トンネル終端装置20におけるカプセリング前後のトラフィック(フロー)を一意に識別するための関係性が記憶されている。処理規則設定部405は、当該関係性を用いて、各装置に設定する処理規則を生成する。
【0121】
このように、制御装置30は、特定フロー(第2のフロー)に関するパケット転送経路上の中継装置10及びトンネル終端装置20に対し、当該パケット転送経路によるパケット転送を実現するための処理規則を設定する。その際、制御装置30は、特定フローに属するパケットを識別するための識別条件を、トンネル接続に伴うパケットのカプセリング前後における特定フローを一意に識別するための情報に基づき決定する。
【0122】
制御装置30が、中継装置10及びトンネル終端装置20に処理規則を設定することで、
図20の太い実線で示すパケット転送経路が実現できる。つまり、処理規則が設定されなければ、中継装置10の自律的なパケット転送により
図20の点線で示す経路にてパケットは転送される。しかし、中継装置10等に処理規則を設定することで、管理者が意図したとおりの他のオーバーレイ通信とは異なる通信経路により特定のトラフィックに属するパケットを転送することができる。
【0123】
以上のように、第2の実施形態に係る制御装置30は、ネットワークシステムの(特定通信の)対象となる通信装置に通信制御のための設定(処理規則)を設定することにより、対象となる特定通信の通信経路を制御できる。その結果、特定の端末間の通信がエンドツーエンドで制御可能となる。
【0124】
なお、第2の実施形態に係るネットワークシステムのようにオープンフローの仕組みを使わなければ、アンダーレイヤーを含むパケット転送経路を自由に設定することはできない。つまり、既存のオーバーレイネットワークでは、アンダーレイネットワークの制御ができず、特定の通信(例えば重要な特定通信)のために専用のルート(例えば、高帯域、低遅延及び高度なセキュリティにより保護されたルート)を設定することはできない。つまり、レガシープロトコルの範囲で特定通信を優先する程度の対応しか行えない。このために、緊急時のための専用経路や高価格プランに入っている特定ユーザを優遇するようなサービスなどを実現することが難しい。対して、第2の実施形態では、緊急時の専用経路の設定等が可能である。
【0125】
[変形例]
上記実施形態にて説明したネットワークシステムの構成及び動作は例示であって、種々の変形が可能である。例えば、中継装置10のパケット転送部204がACL処理を実行しても良い。この点、トンネル終端装置20に関しても同様である。
【0126】
また、第1の実施形態では、制御装置30が、ACLを用いて、特定フローに属するパケットが各通信装置の入力ポート、出力ポートを通過した数を取得している。しかし、制御装置30は、各通信装置(中継装置10、トンネル終端装置20)に対し、特定フローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得するためのオープンフローエントリを設定しても良い。
【0127】
例えば、
図21に示すように、中継装置10、トンネル終端装置20のそれぞれに対して、入力ポートでのパケット処理数をカウントする入力ポート用エントリと、出力ポートでのパケット処理数をカウントする出力ポート用エントリと、を設定する。
図21(a)に示す入力ポート用エントリでは、マッチ条件にヒットすれば統計情報のカウント値がインクリメントされると共に、出力ポート用エントリを格納する出力ポートテーブルの参照が指示される。
図21(b)に示す出力ポート用エントリでは、マッチ条件にヒットすれば統計情報のカウント値がインクリメントされ、所定のポートからパケットが送出される。このように、制御装置30は、オープンフローを用いてトラフィックカウント値を取得してもよい。より具体的には、制御装置30は、オープンフローのマッチ条件でフロー条件を指定し、統計情報であるカウント値を取得すればよい。
【0128】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
上述の第1の視点に係るネットワークシステムのとおりである。
[付記2]
前記制御装置は、
前記パケット通過数が同じ入力ポート、出力ポートを接続することで、前記第1のフローの通信経路を特定する、好ましくは付記1のネットワークシステム。
[付記3]
前記制御装置は、
前記複数の中継装置及び前記複数の終端装置に関するネットワークトポロジに、前記第1のフローの通信経路をマッピングする、好ましくは付記2のネットワークシステム。
[付記4]
前記制御装置は、
前記第1のフローを識別するための識別条件を、前記複数の中継装置及び前記複数の終端装置に設定し、
前記複数の中継装置は、前記設定された識別条件に合致して処理したパケットを入力ポート、出力ポートごとにカウントし、
前記複数の終端装置は、前記設定された識別条件に合致して処理したパケットを入力ポート、出力ポートごとにカウントする、好ましくは付記1乃至3のいずれか一に記載のネットワークシステム。
[付記5]
前記制御装置は、
前記終端装置に設定する識別条件を、前記トンネル接続に伴うパケットのカプセリング前後における前記第1のフローを一意に識別するための情報に基づき決定する、好ましくは付記4のネットワークシステム。
[付記6]
前記複数の中継装置のそれぞれは、外部から設定された処理規則に基づいてパケットを処理し、
前記複数の終端装置のそれぞれは、外部から設定された処理規則に基づいてパケットを処理し、
前記制御装置は、
第2のフローに関するパケット転送経路上の前記中継装置及び前記終端装置に対し、前記パケット転送経路によるパケット転送を実現するための処理規則を設定する、好ましくは付記1乃至5のいずれか一に記載のネットワークシステム。
[付記7]
前記制御装置は、
前記第2のフローに属するパケットを識別するための識別条件を、前記トンネル接続に伴うパケットのカプセリング前後における前記第2のフローを一意に識別するための情報に基づき決定する、好ましくは付記6のネットワークシステム。
[付記8]
前記制御装置は、
ACL(Access Control List)を用いて、前記第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得する、好ましくは付記1乃至7のいずれか一に記載のネットワークシステム。
[付記9]
前記制御装置は、
前記第1のフローに属するパケットが各装置の入力ポート、出力ポートを通過した数を取得するためのオープンフローエントリを、前記中継装置及び前記終端装置に設定する、好ましくは付記1乃至7のいずれか一に記載のネットワークシステム。
[付記10]
上述の第2の視点に係る制御装置のとおりである。
[付記11]
上述の第3の視点に係る通信経路特定方法のとおりである。
[付記12]
上述の第4の視点に係るプログラムのとおりである。
なお、付記10〜付記12の形態は、付記1の形態と同様に、付記2の形態〜付記9の形態に展開することが可能である。
【0129】
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。