(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-04
(45)【発行日】2022-01-20
(54)【発明の名称】経路検査装置、経路検査方法および経路検査プログラム
(51)【国際特許分類】
H04L 45/48 20220101AFI20220113BHJP
H04L 45/42 20220101ALI20220113BHJP
H04L 45/50 20220101ALI20220113BHJP
H04L 45/16 20220101ALI20220113BHJP
【FI】
H04L45/48
H04L45/42
H04L45/50
H04L45/16
(21)【出願番号】P 2017151369
(22)【出願日】2017-08-04
【審査請求日】2020-07-27
(73)【特許権者】
【識別番号】000209751
【氏名又は名称】池上通信機株式会社
(74)【代理人】
【識別番号】100083806
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100101247
【氏名又は名称】高橋 俊一
(74)【代理人】
【識別番号】100095500
【氏名又は名称】伊藤 正和
(74)【代理人】
【識別番号】100098327
【氏名又は名称】高松 俊雄
(72)【発明者】
【氏名】時岡 大悟
(72)【発明者】
【氏名】井戸口 勇介
【審査官】大石 博見
(56)【参考文献】
【文献】特開2014-236388(JP,A)
【文献】特開2010-109424(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/753
H04L 12/717
H04L 12/723
H04L 12/761
(57)【特許請求の範囲】
【請求項1】
SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置において、
パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶しておく記憶部と、
前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御部と、
前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信部と、
当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成部と、
前記実ツリーと前記計算ツリーとを比較する比較部と、
を備え、
前記転送装置の識別情報を付与する命令は、
前記検査用のプローブパケットにVLAN(Virtual Local Area Network)タグまたはMPLS(Multi-Protocol Label Switching)ラベルを追加し、前記VLANタグまたは前記MPLSラベルに含まれる情報を前記転送装置の識別情報に変更する命令であることを特徴とする経路検査装置。
【請求項2】
SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置において、
パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶しておく記憶部と、
前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御部と、
前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信部と、
当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成部と、
前記実ツリーと前記計算ツリーとを比較する比較部と、を備え、
前記送信部は、前記検査用のプローブパケットに時刻情報を付与して送信し、
前記生成部は、
前記返信プローブパケットに付与されている時刻情報に基づき、送信した前記検査用のプローブパケットに対応する返信プローブパケットを特定することを特徴とする経路検査装置。
【請求項3】
前記記憶部は、
前記計算ツリーをマルチキャストグループ毎に定めることを特徴とする請求項1又は2に記載の経路検査装置。
【請求項4】
SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置で行う経路検査方法において、
前記経路検査装置は、
パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶部に記憶しておく記憶ステップと、
前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御ステップと、
前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信ステップと、
当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成ステップと、
前記実ツリーと前記計算ツリーとを比較する比較ステップと、を行い、
前記転送装置の識別情報を付与する命令は、
前記検査用のプローブパケットにVLAN(Virtual Local Area Network)タグまたはMPLS(Multi-Protocol Label Switching)ラベルを追加し、前記VLANタグまたは前記MPLSラベルに含まれる情報を前記転送装置の識別情報に変更する命令であることを特徴とする経路検査方法。
【請求項5】
SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置で行う経路検査方法において、
前記経路検査装置は、
パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶部に記憶しておく記憶ステップと、
前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御ステップと、
前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信ステップと、
当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成ステップと、
前記実ツリーと前記計算ツリーとを比較する比較ステップと、
を行い、
前記送信ステップでは、前記検査用のプローブパケットに時刻情報を付与して送信し、
前記生成ステップでは、
前記返信プローブパケットに付与されている時刻情報に基づき、送信した前記検査用のプローブパケットに対応する返信プローブパケットを特定することを特徴とする経路検査方法。
【請求項6】
前記記憶ステップでは、
前記計算ツリーをマルチキャストグループ毎に定めることを特徴とする請求項4又は5に記載の経路検査方法。
【請求項7】
請求項1乃至3のいずれかに記載の経路検査装置としてコンピュータを機能させることを特徴とする経路検査プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク内の経路を検査する技術に関する。
【背景技術】
【0002】
従来、マルチキャスト通信に用いられる経路(ツリー)は、レイヤ2ではIGMP(Internet Group Management Protocol)、レイヤ3ではPIM(Protocol-Independent Multicast)などにより形成されている。マルチキャスト通信のツリーを制御・管理する場合、一般的には、NetFlowやSNMP(Simple Network Management Protocol)を用いてネットワーク内の通信を実際に計測することにより行われている(特許文献1)。
【0003】
また、近年注目されているネットワーク技術として、SDN(Software Defined Networking)がある。SDNは、単一のソフトウェアによりネットワーク機器を集中して制御する技術であり、ネットワーク内の通信機器や通信経路をSDNコントローラで一元的に制御・管理することができる。
【0004】
SDNを用いてもマルチキャスト通信のツリーを制御・管理可能である。例えば、SDNコントローラで経路検索を行うことにより、物理的なネットワーク内に論理的に形成されているマルチキャスト通信のツリーを取得することができる。また、SDNコントローラを用いて、ネットワーク内の各スイッチに所望のマルチキャスト通信のツリーを通るフローエントリを設定することができる。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来のSDNでは、以前に設定していたマルチキャスト通信のツリーを現在も引き続き使用していることが保障されていない。そのため、何らかの原因でフローが想定していたツリーと異なるツリーを通過していたり、スイッチ内の制御プログラムの異常により設定していたツリーの途中でパケットが消失していたりしていることを検知できないという課題があった。また、特許文献1は、実際の通信を計測することで使用中のツリーを特定するため、サーバ側では通信の異常を検知することはできない。
【0007】
本発明は、上記事情を鑑みてなされたものであり、マルチキャスト通信に限らず、SDNにおいてネットワーク内の経路(ツリー)を簡易に検査することを目的とする。
【課題を解決するための手段】
【0008】
以上の課題を解決するため、請求項1に係る経路検査装置は、SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置において、パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶しておく記憶部と、前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御部と、前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信部と、当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成部と、前記実ツリーと前記計算ツリーとを比較する比較部と、を備えることを特徴とする。
【0009】
請求項2に係る経路検査装置は、請求項1に記載の経路検査装置において、前記転送装置の識別情報を付与する命令は、前記検査用のプローブパケットにVLAN(Virtual Local Area Network)タグまたはMPLS(Multi-Protocol Label Switching)ラベルを追加し、前記VLANタグまたは前記MPLSラベルに含まれる情報を前記転送装置の識別情報に変更する命令であることを特徴とする。
【0010】
請求項3に係る経路検査装置は、請求項1または2に記載の経路検査装置において、前記送信部は、前記検査用のプローブパケットに時刻情報を付与して送信し、前記生成部は、前記返信プローブパケットに付与されている時刻情報に基づき、送信した前記検査用のプローブパケットに対応する返信プローブパケットを特定することを特徴とする。
【0011】
請求項4に係る経路検査装置は、請求項1乃至3のいずれかに記載の経路検査装置において、前記記憶部は、前記計算ツリーをマルチキャストグループ毎に定めることを特徴とする。
【0012】
請求項5に係る経路検査方法は、SDN(Software Defined Networking)を用いてネットワーク内の経路を検査する経路検査装置で行う経路検査方法において、前記経路検査装置は、パケットが経由する複数の転送装置と経由順序とを定めた計算ツリーを記憶部に記憶しておく記憶ステップと、前記計算ツリーに従ってパケットを転送する複数の転送装置に対して、検査用のプローブパケットに転送装置の識別情報を付与し、前記識別情報を付与したプローブパケットを返信し、当該プローブパケットを前記計算ツリーに従って転送する命令を定めた命令情報を送信する制御ステップと、前記検査用のプローブパケットを前記計算ツリーの転送装置へ送信する送信ステップと、当該計算ツリーの転送装置から返信された返信プローブパケットに付与されている転送装置の識別情報を用いて、前記検査用のプローブパケットが経由した複数の転送装置と経由順序とを含む実ツリーを生成する生成ステップと、前記実ツリーと前記計算ツリーとを比較する比較ステップと、を行うことを特徴とする。
【0013】
請求項6に係る経路検査方法は、請求項5に記載の経路検査方法において、前記転送装置の識別情報を付与する命令は、前記検査用のプローブパケットにVLAN(Virtual Local Area Network)タグまたはMPLS(Multi-Protocol Label Switching)ラベルを追加し、前記VLANタグまたは前記MPLSラベルに含まれる情報を前記転送装置の識別情報に変更する命令であることを特徴とする。
【0014】
請求項7に係る経路検査方法は、請求項5または6に記載の経路検査方法において、前記送信ステップでは、前記検査用のプローブパケットに時刻情報を付与して送信し、前記生成ステップでは、前記返信プローブパケットに付与されている時刻情報に基づき、送信した前記検査用のプローブパケットに対応する返信プローブパケットを特定することを特徴とする。
【0015】
請求項8に係る経路検査方法は、請求項5乃至7のいずれかに記載の経路検査方法において、前記記憶ステップでは、前記計算ツリーをマルチキャストグループ毎に定めることを特徴とする。
【0016】
請求項9に係る経路検査プログラムは、請求項1乃至4のいずれかに記載の経路検査装置としてコンピュータを機能させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、SDNにおいてネットワーク内の経路(ツリー)を簡易に検査することができる。
【図面の簡単な説明】
【0018】
【
図1】オープンフローシステムの全体構成を示す図である。
【
図2】オープンフローコントローラの機能ブロック構成を示す図である。
【
図7】プローブパケットが返信される様子を示す図である。
【
図8】返信プローブパケットの構造を示す図である。
【発明を実施するための形態】
【0019】
本発明では、対象のマルチキャストグループまたはユニキャストのグループ(複数のユニキャストの組)に対してプローブパケットを送信し、当該プローブパケットのパケットヘッダに印をつけることにより、実際に使用している経路(ツリー)を求める。これにより、一般に広帯域と想定されるマルチキャスト通信またはユニキャスト通信を開始する前に現在のツリーを確認することができる。
【0020】
更に、本発明では、求めたツリーが想定しているツリーであるかを判定し、想定外のツリーを使用している場合やツリー途中でパケットが破棄されている場合、修正・迂回路検索・設定を行う。これにより、ツリー内での通信を保障することができる。
【0021】
以下、本発明を実施する一実施の形態について図面を用いて説明する。
【0022】
なお、本実施の形態では、マルチキャスト通信のツリーを検査する場合について説明する。また、本実施の形態では、SDNの一技術であるオープンフロー(OpenFlow)を用いて説明する。オープンフローでは、オープンフローネットワークOFNを流れるパケットのヘッダと出力ポートの組をフローと呼ぶ。オープンフローコントローラOFCは、パケットのヘッダ情報に基づき、オープンフロースイッチOFSを経由するパケットのフローを識別し、対象フローを制御することができる。オープンフローについては、例えば、“OpenFlow”(一般社団法人日本ネットワークインフォメーションセンター、平成29年8月1日検索、https://www.nic.ad.jp/ja/newsletter/No52/0800.html)に説明されている。
【0023】
図1は、本実施の形態に係るオープンフローシステムの全体構成を示す図である。当該オープンフローシステムは、オープンフローコントローラOFCと、オープンフローネットワークOFNと、を備えて構成される。
【0024】
オープンフローネットワークOFNは、相互通信可能な複数のオープンフロースイッチOFSで構成された物理的なネットワークである。複数のオープンフロースイッチOFSは、それぞれオープンフローコントローラOFCに接続されており、オープンフローコントローラOFCとの間でも相互通信可能である。
【0025】
オープンフローネットワークOFNには、1つ以上のオープンフロースイッチOFSを用いて1つ以上のマルチキャストグループが論理的に形成されている。
図1には、6つのオープンフロースイッチOFS1~OFS6により1つのマルチキャストグループが形成されている。当該マルチキャストグループでは、サーバ側のビデオカメラから当該マルチキャストグループ宛てに配信された映像パケットを、OFS1→OFS5→OFS6→当該マルチキャストグループのメンバ端末1へ転送する経路と、OFS1→OFS2→OFS4→メンバ端末2へ転送する経路と、OFS1→OFS2→OFS3→メンバ端末3へ転送する経路と、からなるツリーを持つ。
【0026】
次に、オープンフローコントローラOFCについて説明する。オープンフローコントローラOFCは、オープンフロースイッチOFSを管理・制御するコントローラであり、本実施の形態において、マルチキャスト通信の経路(ツリー)を検査する経路検査装置を備える。
【0027】
図2は、本実施の形態に係るオープンフローコントローラOFCの機能ブロック構成を示す図である。オープンフローコントローラOFCは、データ情報記憶部11と、スイッチ制御部12と、プローブパケット送信部13と、プローブパケット受信部14と、実ツリー生成部15と、ツリー比較部16と、迂回路検索部17と、を備えて構成される。
【0028】
データ情報記憶部11は、所定のマルチキャストグループでパケットが経由する複数のオープンフロースイッチOFSと当該複数のオープンフロースイッチOFSでのパケットの経由順序とを定めた計算ツリーをマルチキャストグループ毎に記憶しておく機能部である。
【0029】
スイッチ制御部12は、上記計算ツリーに従ってパケットを転送する複数のオープンフロースイッチOFSに対して、検査用のプローブパケットにオープンフロースイッチOFSのdpid(後述する)を付与し、当該dpidを付与したプローブパケットを返信し、当該プローブパケットを上記計算ツリーに従って転送する命令を定めたフローエントリ(命令情報)を送信する機能部である。
【0030】
プローブパケット送信部13は、検査用のプローブパケットをマルチキャストグループのオープンフロースイッチOFSへ送信する機能部である。
【0031】
プローブパケット受信部14は、オープンフロースイッチOFSから返信された返信プローブパケットを受信する機能部である。
【0032】
実ツリー生成部15は、受信した返信プローブパケットに付与されているオープンフロースイッチOFSのdpidを用いて、上記検査用のプローブパケットが経由した複数のオープンフロースイッチOFSと当該複数のオープンフロースイッチOFSでのパケットの経由順序とを含む実ツリーを生成する機能部である。
【0033】
ツリー比較部16は、実ツリーと計算ツリーを比較する機能部である。
【0034】
迂回路検索部17は、実ツリーと計算ツリーの比較結果に基づき迂回路を検索・設定する機能部である。
【0035】
ここで、dpidについて説明する。dpidとは、オープンフローで用いられるDPID(Datapath ID)の上位16ビットの情報である。オープンフローでは、64ビットのDPIDに与えられたフィールドのうち下位48ビットにはオープンフロースイッチOFSのMACアドレスが既に割り当てられているため、本実施の形態では、オープンフローの利用者が自由に使用可能な上位16ビットを用いる。例えば、オープンフロースイッチOFSを識別するためのビット列を16ビットの範囲内で生成し、DPIDの上位16ビットに含めて利用する。
【0036】
次に、上述したオープンフローシステムで行う通信の経路検査方法について説明する。ここでは、所定のマルチキャストグループにおいて、パケットが現在経由しているオープンフロースイッチOFSの経路(実ツリー)が以前に設定していた経路(計算ツリー)に合致するかを検証し、合致しない場合には再び計算ツリーを設定して、それでも合致しない場合には迂回路を設定することにより、ツリー内での通信の保障を実現する。
【0037】
図3は、マルチキャスト通信の経路検査処理手順を示すシーケンスである。データ情報記憶部11には、
図4に例示する計算ツリーが予め登録されているものとする。「No.1」の計算ツリーには、「239.0.0.1」のマルチキャストグループについて、OFS1→OFS2→OFS3の経路と、OFS1→OFS2→OFS4の経路と、OFS1→OFS5→OFS6の経路と、が設定されている。
【0038】
ステップS1;
まず、スイッチ制御部12は、ユーザにより指定されたマルチキャストグループに対応する計算ツリーをデータ情報記憶部11から取得する。
【0039】
ステップS2;
次に、スイッチ制御部12は、取得した計算ツリーに定義されている複数のオープンフロースイッチOFSに対して、当該計算ツリーに従ってパケットを転送する通信用フローエントリをそれぞれ送信する。
図4に示した「No.1」の計算ツリーの場合、スイッチ制御部12は、例えばオープンフロースイッチOFS5に対して、オープンフロースイッチOFS6にパケットを転送する通信用フローエントリを送信する。
【0040】
このとき、スイッチ制御部12は、当該第1のフローエントリをオープンフロースイッチOFS内の「フローテーブル1」に登録することを、フローエントリのパケット内で指示する。オープンフロースイッチOFSのフローテーブル1を
図5(a)に例示する。オープンフロースイッチOFS5の場合、「GroupTable(1)」に「パケットをOFS6へ転送する」ことが設定される。これにより、オープンフロースイッチOFS5は、「239.0.0.1」宛てのパケットをOFS6へ転送することになる。
【0041】
同時に、スイッチ制御部12は、ステップS1で取得した計算ツリーに定義されている複数のオープンフロースイッチOFSに対して、送信元IPアドレスがオープンフローコントローラOFCであるパケット(検査用のプローブパケット)を受信した場合、当該プローブパケットにVLAN(Virtual Local Area Network)タグを追加する命令(PushVLAN)と、当該VLANタグのデフォルト値をオープンフロースイッチOFSのdpidに変更する命令(SetField(VLAN))と、当該dpidを含むプローブパケットをオープンフローコントローラOFCへ返信する命令(Output(Controller))と、フローテーブル1を実行する命令(GoToTable1)と、を含めた検査用フローエントリをそれぞれ送信する。
【0042】
また、スイッチ制御部12は、ステップS1で取得した計算ツリーに定義されている複数のオープンフロースイッチOFSに対して、テーブルミスフローエントリ(table-miss flow entry;フローテーブルの条件に一致しないパケットを処理するためのフローエントリ)として、フローテーブル1を実行する命令(GoToTable1)のみを含めたテーブルミス用フローエントリをそれぞれ送信する。
【0043】
そして、スイッチ制御部12は、検査用フローエントリとテーブルミス用フローエントリをオープンフロースイッチOFS内の「フローテーブル0」に登録することを、それら2つのフローエントリのパケット内でそれぞれ指示する。ただし、プローブパケットはメンバ端末側へ転送する必要がないので、オープンフロースイッチOFS3,4,6に送信する検査用フローエントリには、「フローテーブル1を実行する命令(GoToTable1)」は含めない。
【0044】
オープンフロースイッチOFSのフローテーブル0を
図5(b)に例示する。各オープンフロースイッチOFSは、それぞれ、フローテーブル0に基づき、オープンフローコントローラOFCからプローブパケットを受信すると、PushVLAN Actionに基づきプローブパケットにVLANタグを追加し、SetField(VLAN) Actionに基づき当該VLANタグの値をオープンフロースイッチOFSのdpidに変更し、Output(Controller) Actionに基づき当該VLANタグをオープンフローコントローラOFCへ返信するとともに、フローテーブル1に基づき、「GroupTable(1)」に設定された処理(他のオープンフロースイッチOFSへのパケット転送処理)を行うことになる。
【0045】
ステップS3;
次に、プローブパケット送信部13は、検査するマルチキャストグループの計算ツリーをデータ情報記憶部11から選択した後、オープンフローコントローラOFCのIPアドレスを送信元に設定し、選択したマルチキャストグループのIPアドレスを宛先に設定したRTPパケットを生成し、オープンフローコントローラOFC内の時刻をRTPパケット内のRTPタイムスタンプ(時刻情報)に記述して、当該RTPパケットをプローブパケットとしてサーバ側のオープンフロースイッチOFSに向けて送信する。
【0046】
例えば、「No.1」の計算ツリーが選択された場合、プローブパケット送信部13は、プローブパケットをオープンフロースイッチOFS1に向けて送信する。なお、プローブパケットの送信処理は、オープンフローコントローラOFCが持つフローエントリに従うものとする。
【0047】
このとき、プローブパケット送信部13は、送信したマルチキャストアドレスと、RTPタイムスタンプと、計算ツリーのNoと、実ツリーのNoとを関連付けたツリー管理テーブルを生成してデータ情報記憶部11に記憶する。例えば、
図6に例示するツリー管理テーブルを生成する。
【0048】
ステップS4~S11;
次に、ツリー上の各オープンフロースイッチOFSは、オープンフローコントローラOFCからプローブパケットを受信すると、フローテーブル0,1に登録された処理を行う。具体的には、各オープンフロースイッチOFSは、それぞれ、VLANタグを付与し、当該VLANタグの値を自オープンフロースイッチOFSのdpidに変更し、当該dpidを含むプローブパケットをオープンフローコントローラOFCへ返信するとともに、転送先のオープンフロースイッチOFSへ向けて送信する。
【0049】
例えば、
図7(a),(b)に示すように、オープンフロースイッチOFS1は、プローブパケットにdpid1のVLANタグを追加した「プローブパケット+α」(
図8(a),(b))をオープンフローコントローラOFCへ返信するとともに、オープンフロースイッチOFS2,5へも送信する。また、オープンフロースイッチOFS4は、
図7(c)に示すように、オープンフロースイッチOFS2からのプローブパケットにdpid4のVLANタグを更に追加した「プローブパケット+β」(
図8(c))をオープンフローコントローラOFCへ返信する。同様にオープンフロースイッチOFS6は、
図7(c)に示すように、オープンフロースイッチOFS5からのプローブパケットにdpid6のVLANタグを更に追加した「プローブパケット+γ」(
図8(d))をオープンフローコントローラOFCへ返信する。
【0050】
ステップS12;
次に、プローブパケット受信部14は、オープンフロースイッチOFSから返信されたプローブパケットを受信し、実ツリー生成部15は、受信したプローブパケットに付与されたVLANタグ内のdpidを用いて、サーバ側のオープンフロースイッチOFSから経由した全てのオープンフロースイッチOFSによる実ツリーを生成する。
【0051】
例えば、
図9に示すように、オープンフロースイッチOFS1をツリーの根とし、OFS1→OFS2→OFS4の経路と、OFS1→OFS5→OFS6の経路と、からなる実ツリー(
図10)が生成される。オープンフロースイッチOFS3からプローブパケットが返信されなかったため、オープンフロースイッチOFS3への経路は含まれていない。
【0052】
ステップS13;
次に、ツリー比較部16は、メンバ端末側の全てのオープンフロースイッチOFSからプローブパケットが返信された後、または、規定時間が経過した後、ツリー管理テーブルを用いて比較対象のツリーを特定し、特定した実ツリーと計算ツリーとを比較する。当該比較の結果、実ツリーと計算ツリーが等しければそのまま終了する。
【0053】
ステップS14;
一方、ステップS13での比較の結果、実ツリーと計算ツリーが等しくない場合、スイッチ制御部12は、等しくない箇所のオープンフロースイッチOFSに対して計算ツリーと等しくなるようなフローエントリ(計算ツリーに合致するように転送先のオープンフロースイッチOFSを設定させるフローエントリ)を送信し、ステップS3~S13の検査を再度行う。当該検査の結果、実ツリーと計算ツリーが等しい場合は処理を終了する。
【0054】
ステップS15;
一方、ステップS14での検査の結果、実ツリーと計算ツリーが等しくない場合、スイッチ制御部12は、ステップS14を規定回数繰り返し行い、できる限り元の計算ツリーに合致することを試みる。それでも実ツリーが計算ツリーと等しくならない場合、不一致箇所を故障とみなす。
【0055】
ステップS16;
その後、迂回路検索部17は、故障対象のオープンフロースイッチOFSを経由しない迂回路を検索し、検索した迂回路を用いて計算ツリーを変更する。例えば、オープンフロースイッチOFS5を故障とみなした場合、オープンフロースイッチOFS1とオープンフロースイッチOFS6との間を接続している他のオープンフロースイッチOFSを検索する。また、例えば、パケットがメンバ端末側の全てのオープンフロースイッチOFSに到達していない場合、正常ツリーから当該全てのオープンフロースイッチOFS以外のメンバ端末側のオープンフロースイッチOFSにパケットが到達する迂回路を検索し、検索した迂回路上のオープンフロースイッチOFSに対してステップS1,S2を行う。この場合もプローブパケットによる検査を行う。
【0056】
なお、ステップS3で複数の計算ツリーが選択され、対象となる複数のマルチキャストグループに対して短時間に複数のプローブパケットが連続して送信されると、オープンフローコントローラOFCは、オープンフロースイッチOFSから返信されたプローブパケットが、どの送信プローブパケットに対応するものであるかを特定できない可能性がある。この場合、オープンフローコントローラOFCは、返信されたプローブパケットに含まれるRTPタイムスタンプ(プローブパケット毎に付与されていた時刻)に基づき、所望のプローブパケットに対応する返信プローブパケットを特定する。
【0057】
以上より、本実施の形態によれば、所定のマルチキャストグループでパケットが経由する複数のオープンフロースイッチOFSと当該複数のオープンフロースイッチOFSでのパケットの経由順序とを定めた計算ツリーを記憶しておき、計算ツリーに従ってパケットを転送する複数のオープンフロースイッチOFSに対して、検査用のプローブパケットにオープンフロースイッチOFSの識別情報を付与し、識別情報を付与したプローブパケットを返信し、当該プローブパケットを計算ツリーに従って転送する命令を定めたフローエントリを送信し、検査用のプローブパケットをマルチキャストグループのオープンフロースイッチOFSへ送信し、当該マルチキャストグループのオープンフロースイッチOFSから返信された返信プローブパケットに付与されているオープンフロースイッチOFSの識別情報を用いて、検査用のプローブパケットが経由した複数のオープンフロースイッチOFSと当該複数のオープンフロースイッチOFSでのパケットの経由順序とを含む実ツリーを生成して、実ツリーと計算ツリーとを比較するので、SDNのネットワークに対して意図した経路を使用しているかを簡易に検査することができる。また、当該検査の結果に基づき、自動で異常箇所を判別し、経路の修正を行うことができる。
【0058】
なお、本実施の形態では、ステップS2で3つのフローエントリをそれぞれ送信する場合を例に説明したが、当該3つのフローエントリを1つに纏めて一度に送信してもよい。
【0059】
また、本実施の形態では、VLANタグを用いる場合を例に説明したが、VLANタグに代えて、MPLS(Multi-Protocol Label Switching)ラベルを用いてもよい。具体的には、プローブパケットにMPLSラベルを追加し、当該MPLSラベルに含まれる値をオープンフロースイッチOFSのdpidに変更する。
【0060】
また、本実施の形態では、dpid(DPIDの上位16ビット)を用いる場合を例に説明したが、形成するオープンフローネットワークOFNをプライベートネットワーク(例えば、社内ネットワーク)とする場合には、64ビットのDPIDを自由に決定できるので、DPIDそのものをオープンフロースイッチOFSの識別情報として用いてもよい。
【0061】
また、本実施の形態では、マルチキャストグループを用いる場合を例に説明したが、ユニキャストのグループ(複数のユニキャストの組)にも適用可能である。例えば、対象とする複数のオープンフロースイッチOFSを経由するツリーを定めておき、計算ツリーのグループアドレス欄にサーバ側のオープンフロースイッチOFSのIPアドレスのみを登録しておく。これにより、同様の方法で上記ユニキャストのグループでのツリーも検査することができる。通常の経路検索(tracerouteなど)ではスイッチ毎にパケットをそれぞれ送信してツリーを検査するが、プローブパケットをサーバ側のオープンフロースイッチOFSにのみ送信すればよいので、パケット数を1つに抑えることができる。
【0062】
また、本実施の形態では、マルチキャストIPアドレスを用いた場合を例に説明したが、マルチキャストIPアドレスに代えて、マルチキャストMACアドレスを用いてもよい。これにより、L2のマルチキャストツリーについても検査することができる。
【0063】
また、本実施の形態では、オープンフローを用いる場合を例に説明したが、オープンフロー以外にも適用可能である。すなわち、物理ネットワーク内のネットワーク情報を一元管理し、当該ネットワーク情報を用いて物理ネットワーク全体の経路制御を一括してソフトウェアで行うSDNの技術範囲内であればよい。
【0064】
また、本実施の形態では、スイッチを用いる場合を例に説明したが、ルータなどの転送装置で形成されたネットワークについても適用可能である。
【0065】
最後に、本実施の形態で説明したオープンフローコントローラOFC(経路検査装置)は、CPUおよびメモリなどを備えたコンピュータで実現できる。また、オープンフローコントローラOFCとしてコンピュータを機能させるための経路検査プログラム、当該経路検査プログラムの記憶媒体を作成することも可能である。
【符号の説明】
【0066】
OFC…オープンフローコントローラ
OFN…オープンフローネットワーク
OFS(OFS1~OFS6)…オープンフロースイッチ
11…データ情報記憶部
12…スイッチ制御部
13…プローブパケット送信部
14…プローブパケット受信部
15…実ツリー生成部
16…ツリー比較部
17…迂回路検索部