(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
  本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係るネットワーク中継装置10の一例は、単数または複数のコンピュータ装置によって実現される。具体的に本実施の形態の一例に係るネットワーク中継装置10は、
図1に例示するように、複数のポート11と、制御部12と、記憶部13と、通信部14とを含んで構成される。
 
【0018】
  ポート11は、本発明の通信ポートの一例であり、例えばパーソナルコンピュータ等の端末装置40に接続され、接続先から受信されるデータを制御部12に出力する。またこのポート11は、制御部12から入力されるデータを、接続先へ送出する。
 
【0019】
  制御部12は、CPU等のプログラム制御デバイスを含んで構成され、記憶部13に格納されたプログラムに従って動作する。本実施の形態の一例では、この制御部12は、機能的にリダイレクト部1と、少なくとも一つ(m個)のスイッチ部2とを含み、それぞれとしての処理を実行する。この制御部12の詳しい処理の内容は後に述べる。
 
【0020】
  記憶部13は、メモリデバイス等であり、制御部12によって実行されるプログラムを保持する。このプログラムは、コンピュータ可読な記録媒体に格納されて提供され、この記憶部13に複写して格納されたものであってもよい。また、この記憶部13に保持されるプログラムのうち、少なくともスイッチ部2としての処理に係るプログラムは、例えば通信部14を介して受信される指示に基づいて新規に作成可能、あるいは書き換え可能となっていてもよい。
 
【0021】
  具体的にスイッチ部2としての処理に係るプログラムは、本実施の形態では、制御部12によって実行されることにより、スイッチ部2を実現するプログラムとなる。またこのスイッチ部2としてのプログラムには、それぞれ固有のスイッチ論理識別情報が関連付けられる。またこのスイッチ部2としてのプログラムには、それぞれスイッチング動作の内容を表す指示情報が含まれる。さらにこのプログラムには、作成者である利用者を特定する情報と、権限の情報(作成者以外の利用者による閲覧可否、書換可否)が関連付けられて記録されてもよい。
 
【0022】
  制御部12は、利用者を認証して、記憶部13へのプログラムの格納、記憶部13内のプログラムの閲覧、または書換えの指示を待機する。ここで記憶部13に新たなスイッチ部2としてのプログラムの格納の要求を受けると、制御部12は、要求に係るプログラムを受け入れて、認証した利用者を作成者として特定する情報として関連付け、記憶部13に格納する。また利用者により指定された権限の情報をこのプログラムに関連付けて記録する。一例として作成者である利用者は、他者に見られたり書込まれたくない場合には閲覧、書換えの双方を禁止するよう設定する。また作成者である利用者が、他者に見られてもよいが書換えられたくない場合は、閲覧を許可するとともに、書換えを禁止する設定を行う。
 
【0023】
  また、本実施の形態の別の態様では、制御部12は、仮想マシンやリソースコンテナ等、互いに独立したプログラム実行環境を提供し、各プログラム実行環境において、各プログラム作成者から提供されたスイッチ部2としてのプログラムを動作させてもよい。この場合、各プログラム実行環境には、それぞれで認証した利用者のみがプログラムを格納し、動作させることが可能となっていてもよい。これによっても、他者から閲覧等されない状態で、各プログラム作成者がスイッチ部2としてのプログラムを試験的に実行できる。
 
【0024】
  さらに、この記憶部13は、制御部12のワークメモリとしても動作する。また通信部14は、一例としては、USB等のシリアル通信装置等であり、受信した情報を制御部12に出力し、また、制御部12から入力される指示に従って、情報を送出する。
 
【0025】
  次に本実施の形態の一例に係る制御部12の動作について説明する。本実施の形態のある例では、既に述べたように、リダイレクト部1と、少なくとも一つ(m個)のスイッチ部2とを機能的に含む。この制御部12は、Linux(登録商標)等のオペレーティングシステムとしての処理を実行しており、リダイレクト部1として機能させるプログラムや、スイッチ部2として機能させるプログラムは、いずれもこのオペレーティングシステム上のプログラムとして実行される。一例として、本実施の形態では、複数の仮想マシンを並列的に実行する環境が導入され、各仮想マシンにおいてもLinux(登録商標)等のオペレーティングシステムが、ゲストOSとして実行されているものとする。そして、各ゲストOS上でそれぞれ少なくとも一つのスイッチ部2としてのプログラムが実行される。
 
【0026】
  リダイレクト部1は、
図2に例示するように、受信部21、転送部22、及び送出部23を含む。ここで受信部21は、端末装置40に接続されたポート11を介して、その接続先である端末装置40からデータを受信する。ここで端末装置40から受信されるデータはパケットであり、スイッチ部2を選択するスイッチ論理識別情報(P)と、伝送の対象となるデータ本体(B)とが含まれる(
図3(a)〜(c))。
 
【0027】
  またデータ本体(B)には、ヘッダ(H)が含まれ、このヘッダ(H)には例えば伝送元を特定する情報(Q)及び伝送先を特定する情報(R)が含まれる。
 
【0028】
  なお、スイッチ論理識別情報(P)は、データ本体(B)に前置されて(つまりデータ本体(B)に対するヘッダとして配されて)もよいし(
図3(a))、データ本体(B)に後置されて(つまりデータ本体(B)に対するトレイラとして配されて)もよい(
図3(b))。さらに、データ本体(B)を第1の部分(B1)と、第2の部分(B2)との2つに分割し、これらの間に配されてもよい(
図3(c))。また、データ本体(B)に対して、いわゆる電子透し技術を用いて、スイッチ論理識別情報を合成してもよい。
 
【0029】
  ここでは伝送元及び伝送先を特定する情報は、例えばMACアドレスでよい。またCCN(Context Centric Network)を実現するプロトコルであれば、ヘッダ(H)は単なるデータ本体の識別情報であってもよい。
 
【0030】
  転送部22は、受信部21が受信したデータから、スイッチ論理識別情報を取り出す。この転送部22は、取り出したスイッチ論理識別情報によって特定されるスイッチ部2を選択する。つまり、取り出したスイッチ論理識別情報に関連付けられたスイッチ部2としてのプログラムを記憶部13から読み出して、制御部12に実行開始(起動)させる。そして転送部22は、受信部21が受信したデータのうちから、スイッチ論理識別情報を除き、少なくともデータ本体を取り出す。
 
【0031】
    なお、データ本体が2つに分割されている場合(
図3(c))、転送部22はこれらを連接して、一体のデータ本体とする。また転送部22は、データ本体に対して、スイッチ論理識別情報がいわゆる電子透し技術により合成されている場合は、当該合成されたスイッチ論理識別情報を抽出するとともに、スイッチ論理識別情報を合成する前のデータ本体の情報を抽出して、スイッチ論理識別情報を除いたデータ本体を取り出すこととする。またこの転送部22は、受信部21がデータを受信したポート11を識別する、ポート識別情報(ポート11に予め設定されたポート番号等)を得る。そして転送部22は、このポート識別情報と、受信部21が受信したデータから取り出したデータ本体とを含むデータを、選択したスイッチ部2に転送する。つまり、実行を開始したスイッチ部2としてのプログラムの処理(プロセス)に、データを受け渡す。
 
【0032】
  なお、この転送部22は、受信部21が受信したデータがブロードキャストである場合は、上記の処理に代えて、当該ブロードキャストのデータを受信したポート11を識別するポート識別情報(ポート11に予め設定されたポート番号等)を得て、このポート識別情報とともに、受信したデータを、各スイッチ部2に対して転送してもよい。この場合は、記憶部13に格納されているスイッチ部2としてのプログラムのそれぞれを起動し、受信したデータをそれぞれのプログラムの処理(プロセス)に受け渡す。
 
【0033】
  送出部23は、転送部22がデータを転送したスイッチ部2から、
図4に例示するように、出力先となるポート11を特定する情報(D)とデータ本体(B)とを含んだデータを受け入れる。このデータ本体(B)には、ヘッダ(H)が含まれる。送出部23は、当該受け入れたデータに含まれるポート11を特定する情報を取り除き、データ本体を取り出す。そして送出部23は、受け入れたデータに含まれる情報で特定される出力先となるポート11を介して、当該取り出したデータ本体を含んだデータを送出する。
 
【0034】
  スイッチ部2は、機能的に、
図5に例示するように、処理内容保持部25、仮想パッチパネル部26、及び処理部27を含んで構成される。ここで処理内容保持部25は、例えば記憶部13の一部を用いて実現される。本実施の形態の一例では、この処理内容を表す情報は、記憶部13に格納された、対応するスイッチ部2としてのプログラムに含まれる指示情報である。この指示情報は例えば、
図6に例示するように、ポート識別情報、またはヘッダH等、データ本体の少なくとも一部に含まれる情報(伝送元を特定する情報や伝送先を特定する情報等)を用いた条件(C)と、行うべき処理を表す情報(S)とを関連付けた情報として規定される。このような指示情報のある例は、オープンフロー(OpenFlow)であり、本実施の形態のスイッチ部2は、オープンフロースイッチとして機能しても構わない。また、この指示情報は、このように条件と処理とを関連付けたテーブル情報ではなく、制御部12によって実行される一連の命令列で記述されてもよい。この場合、命令列の記述次第により、テーブル情報で設定可能なswitch-case型の論理に限られない種々の処理が可能となる。
 
【0035】
  仮想パッチパネル部26は、リダイレクト部1が転送したデータを受け入れて、処理部27に出力する。また、この仮想パッチパネル部26は、処理部27からデータが入力されると、当該入力されたデータをリダイレクト部1へ転送する。
 
【0036】
  本実施の形態では、処理部27は、リダイレクト部1が備えるn個のポート11にそれぞれ対応して設けられたn個の仮想的なポートを備える。仮想パッチパネル部26は、リダイレクト部1が転送したデータに含まれるポート識別情報を参照し、このポート識別情報で識別されるポート11に対応する、処理部27の仮想的なポートに対して、当該リダイレクト部1が転送したデータを転送する。なお、仮想パッチパネル部26は、処理部27に転送するデータから、ポート識別情報を除去しておいてもよい(処理部27のプログラムと、従来のスイッチにおけるプログラムとの互換性を考慮したものである)。
 
【0037】
  また仮想パッチパネル部26は、処理部27の仮想的なポートのいずれかからデータが入力されると、当該入力された仮想的なポートに対応するポート11を特定する情報(ポート識別情報)を、入力されたデータに付加してリダイレクト部1に転送する。
 
【0038】
  処理部27は、仮想パッチパネル部26から仮想的なポートのいずれかを介してデータの転送を受け入れる。この処理部27の具体的な処理は、例えば従来のネットワーク中継装置におけるL2スイッチにおける処理に相当するものであってもよい。すなわち処理部27は、仮想的なポートを介して受け入れたデータから、伝送元または伝送先を特定する情報(MACアドレス)を含んだヘッダHを取り出す。そして処理部27は、予め定められて処理内容保持部25に保持されている、行うべき処理を表す情報を取得する。
 
【0039】
  この処理の一例は、データを受信した仮想的なポートを表す情報(ポート識別情報に相当)、または、取り出したヘッダHに含まれる情報の少なくとも一つ(伝送元を特定する情報や伝送先を特定する情報)に関連した処理である。
 
【0040】
  本実施の形態のある例では、処理部27は、当該取得した情報が表す処理として、リダイレクト部1の特定のポート11を介してデータを送出するユニキャスト、リダイレクト部1の複数のポート11を介してデータを送出するマルチキャスト、データの廃棄、データの暗号化、ヘッダ情報等を付加するカプセル化、データのパケット数や容量等の集計、その他QoS制御やトンネル経由での送信制御などの処理を実行する。
 
【0041】
  処理部27は、取得した情報が表す処理を実行した結果、リダイレクト部1のいずれかのポート11を出力先として、当該出力先となったポート11を介してデータを出力させることとなった場合は、当該出力先のポート11に対応する仮想的なポートを介して、データ本体を含むデータを仮想パッチパネル部26に出力する。
 
【0042】
  本実施の形態のネットワーク中継装置10は以上の構成を有してなり、次の
図7に例示するように動作する。以下の説明では、各スイッチ部2の処理内容保持部25に予め、互いに異なる指示情報が格納されているものとする。
 
【0043】
  またここではデータに含まれる、スイッチ部2を選択するスイッチ論理識別情報が、仮想LAN(VLAN)を識別する情報(スライス識別子)であるものとし、リダイレクト部1においては各スライス識別子の値に関連付けて転送先となるスイッチ部2を特定するスイッチ論理識別情報が関連付けられているものとする。さらに、各端末装置40a,40b…は、それぞれ、リダイレクト部1のポート11a,11b…に接続されているものとする。
 
【0044】
  利用者は、自らが利用したいスイッチングの処理を実行するスイッチ部2を選択するためのスイッチ論理識別情報(スライス識別子)を、送信するデータに含めて、端末装置40から送信する(S1)。このためには、例えば端末装置40に、
図3に例示したパケットを生成するよう、予め通信用のプログラムを生成してインストールしておく。
 
【0045】
  例えば端末装置40aが本実施の形態のネットワーク中継装置10に対して送出するデータは、当該端末装置40aの利用者の指示したスイッチ部2を選択するスイッチ論理識別情報を含む、
図3に例示したようなパケット(
図7のX)となる。
 
【0046】
  ネットワーク中継装置10のリダイレクト部1の受信部21は、ポート11aを介して端末装置40aからこのデータを受け入れる。リダイレクト部1の転送部22は、受信部21が受信したデータから、スイッチ部2を選択するスイッチ論理識別情報を取り出す(S2)。端末装置40aが従来のMACアドレスを利用しているものとし、データにはスイッチ部2aを選択するスイッチ論理識別情報が含まれているものとする。転送部22は、このスイッチ部2aを選択するスイッチ論理識別情報を取り除き、受信したデータの残り(データ本体)を取り出し、ポート11aを特定する情報(ポート識別情報:S)を付加して転送用のデータを生成する(
図8)。そして転送部22は、選択されたスイッチ部2aに、この生成した転送用のデータを転送する(S3)。ここでポート識別情報は、ポート11の番号(VNICタグ)でよい。
 
【0047】
  スイッチ部2aの仮想パッチパネル部26は、リダイレクト部1が転送したデータを受け入れ、ポート識別情報を取り除くとともに、当該取り除いたポート識別情報に対応する処理部27の仮想的なポートに、ポート識別情報を取り除いた後のデータ本体を出力する(S4)。処理部27は、いずれかの仮想的なポートを介して、仮想パッチパネル部26から受け入れたデータ本体に含まれる、ヘッダH(伝送元や伝送先を特定する情報等)を取り出す。そして処理部27は、受信した仮想的なポートを特定する情報(仮想的なポートの番号であり、ポート識別情報そのもの)と、取り出したヘッダHに含まれる情報とを参照して、処理内容保持部25に保持されている条件のうち、参照した情報が満足する条件があるか否かを調べ、満足する条件があれば、当該満足する条件を含む指示情報を取得する(S5)。そして処理部27は、当該取得した指示情報に含まれる情報で特定される処理を実行する(S6)。既に述べたように、処理内容保持部25は、こうした条件と処理とを関連付けた指示情報に限られず、一連の処理命令列として記述されたものであってもよい。
 
【0048】
  一例としてここでは、ポート11aに係るポート識別情報から受信したデータについては、リダイレクト部1の複数のポート11を介してマルチキャストする処理が実行されるとする。この例の場合、処理部27は、リダイレクト部1の各ポート11a,b,…に対応する各仮想的なポートからデータを出力することとなる(S7)。
 
【0049】
  仮想パッチパネル部26は、処理部27の仮想的なポートを介してデータが入力されると、当該データが入力された仮想的なポートに対応するポート識別情報を、入力されたデータに付加して、当該付加後のデータをリダイレクト部1へ転送する(S8)。このデータは
図8に例示したものと同様の構成を備えるものとなる。ここでの例のように、マルチキャストが行われる場合、ポート11の各々に対応するポート識別情報が付加された複数のデータが順次、リダイレクト部1へと転送されることとなる。
 
【0050】
  リダイレクト部1は、スイッチ部2aから、出力先となるポート11を特定する情報としてポート識別情報を含んだデータを受け入れる。このリダイレクト部1の送出部23は、当該受け入れたデータに含まれるデータ本体を取り出し、これに処理S3で取り除いた、スイッチ部2aを選択する情報を再度含めて
図3に例示したパケットを再構成する。そして、送出部23は、このパケットのデータを、スイッチ部2aより指定されたポート11(ここではマルチキャストなので、すべてのポート11)を介して送出する(S9)。
 
【0051】
  またスイッチ部2の処理部27は、一般的なスイッチと同様に、端末装置40の起動時に、当該端末装置40のインタフェースのMACアドレスを含んだデータを、当該端末装置40が接続されているポート11に対応する仮想的なポートを介して受信し、当該仮想的なポートを特定する情報(ポート識別情報)と、受信したデータに含まれるMACアドレスとを対応付けてアドレステーブルとして記憶しておく。
 
【0052】
  そして処理部27は、指示情報に基づく処理により、データを、当該データに含まれる情報で特定される伝送先に送出するべきこととなった場合は、当該伝送先を特定する情報(MACアドレス)に対応するポート識別情報をアドレステーブルから得て、当該ポート識別情報で表されるポート11に対応する仮想的なポートを介してデータを送出する。
 
【0053】
  また本実施の形態の別の例によれば、例えばスイッチ部2aでは従来のMACアドレス(48ビット長)に基づくレイヤー2スイッチング(L2スイッチ)の処理を行っているものとし、スイッチ部2bでは48ビットを超えるビット長の拡張MACアドレスに基づくレイヤー2スイッチング(L2スイッチ)の処理を行っているものとする。
 
【0054】
  この場合、データの送受信に従来のMACアドレスを利用する端末装置40は、スイッチ部2aを選択するスイッチ論理識別情報を付してデータ本体を送出し、データの送受信に拡張MACアドレスを利用する端末装置40は、スイッチ部2bを選択するスイッチ論理識別情報を付してデータ本体を送出すればよい。
 
【0055】
  さらに本実施の形態のまた別の例によれば、例えばスイッチ部2aではレイヤー2スイッチング(L2スイッチ)の処理を行っているものとし、スイッチ部2bではCCN(Content Centric Network:V. Jacobson, D. K. Smetters, J. D. Thornton, M. F. Plass, N. H. Briggs, R. L. Braynard (PARC), Networking Named Content,CoNEXT 2009, Rome, December, 2009)に基づくスイッチングの処理を行っているものとしてもよい。
 
【0056】
  また本実施の形態のネットワーク中継装置10の別の例では、リダイレクト部1とスイッチ部2とは別々の装置で実現されてもよい。このような例に係る本実施の形態のネットワーク中継装置10は、
図9に示すように、リダイレクト部1が、端末装置40に接続され得るn個のポート(本発明の通信ポートに相当する)と、スイッチ部2として動作する少なくとも一つのコンピュータ装置に接続されるk個のポートとの、(n+k)個のポートを備えたスイッチ装置で実現される。
 
【0057】
  この実施形態の一態様では、m個のスイッチ部2がk個(1≦k≦m)のコンピュータ装置で実現される。1つのコンピュータ装置を1つのスイッチ部2として機能させる場合は、当該コンピュータ装置のオペレーティングシステムにスイッチ部2としてのプログラムをインストールし、当該コンピュータ装置1台で1つのスイッチ部2としての処理を実行させる。また、1つのコンピュータ装置を複数p個のスイッチ部2として機能させる場合は、例えば、p個の仮想マシンを並列的に実行する環境をホストとなるオペレーティングシステム上で実行し、各仮想マシン上でゲストとなるオペレーティングシステムを動作させ、各仮想マシン上で動作するオペレーティングシステムにスイッチ部2としての動作を実現するプログラムをインストールし、それぞれのオペレーティングシステム上でスイッチ部2としての処理を実行させることとすればよい。
 
【0058】
  さらに本実施の形態の一態様では、リダイレクト部1として動作するコンピュータ装置も複数あってもよい。この場合も、コンピュータ装置1台につき1つのオペレーティングシステムを動作させて、そのオペレーティングシステム上で、リダイレクト部1としての処理を行うプログラムを実行してもよいし、1台のコンピュータ装置上で仮想的に複数のオペレーティングシステムを動作させて、それぞれのオペレーティングシステム上で、リダイレクト部1としての処理を行うプログラムをそれぞれ実行してもよい。
 
【0059】
  この例において、リダイレクト部1として機能するスイッチ装置は、
図2に例示した例と同様に、機能的には受信部21、転送部22、及び送出部23を含む。ただし、転送部22及び送出部23が、スイッチ部2として機能するコンピュータ装置との間でポート11を介して通信を行う点が異なる。
 
【0060】
  すなわちこの例での転送部22は、受信部21が受信したデータから、スイッチ部2を選択するスイッチ論理識別情報を取り出す。この転送部22は、当該取り出したスイッチ論理識別情報で選択されるスイッチ部2として動作するコンピュータ装置が接続されているポート11を選択する。このポート11の選択は、予めスイッチ部2を選択するスイッチ論理識別情報と、当該スイッチ論理識別情報で選択されるスイッチ部2として機能するコンピュータ装置が接続されたポート11を特定する情報とを関連付けてポート選択テーブルとして記憶させておき、このポート選択テーブルを参照して、取り出したスイッチ部2を選択するスイッチ論理識別情報に関連する情報で特定されるポート11を選択することとすればよい。
 
【0061】
  転送部22は、受信部21が受信したデータのうちから、少なくとも伝送元及び伝送先を特定する情報を含んだデータ本体を取り出す。また転送部22は、受信部21がデータを受信したポート11を識別する、ポート識別情報(ポート11に予め設定されたポート番号等)を得る。そして転送部22は、このポート識別情報と、取り出した伝送元及び伝送先を特定する情報を含んだデータ本体とを、選択したポート11を介して、スイッチ部2として動作するコンピュータ装置のNIC(ネットワークインタフェースカード、物理的なものと仮想的なもの(後述)とを問わない)に転送する。
 
【0062】
  なお、この転送部22は、受信部21が受信したデータがブロードキャストである場合は、上記の処理に代えて、当該ブロードキャストのデータを受信したポート11を識別する、ポート識別情報(ポート11に予め設定されたポート番号等)を得て、このポート識別情報とともに、受信したデータを、各スイッチ部2に対して転送してもよい。
 
【0063】
  またスイッチ部2として機能するコンピュータ装置は、
図5に例示したものと同様に、処理内容保持部25、仮想パッチパネル部26、及び処理部27を含む。ただしこの例では、コンピュータ装置が複数のスイッチ部2として機能する場合に、仮想パッチパネル部26が、ホストオペレーティングシステムを介してデータを受け取ることとなる点が異なる。
 
【0064】
  すなわち、かかる場合はホストオペレーティングシステムが、コンピュータ装置に設けられた物理的なNICに、各ゲストオペレーティングシステムに対応した複数の仮想NICを設定する。そして、各仮想NICを介して、リダイレクト部1からのデータを受け入れる。ホストオペレーティングシステムは、データを受け入れた仮想NICに対応するゲストオペレーティングシステム上で動作するスイッチ部2の仮想パッチパネル部26にデータを転送する。
 
【0065】
  仮想パッチパネル部26は、この転送されたデータを受け入れて、処理部27に出力する。また、この仮想パッチパネル部26は、処理部27からデータが入力されると、当該入力されたデータを、対応するゲストオペレーティングシステムの仮想NICを介してリダイレクト部1へ転送する。
 
【0066】
  さらに一つのスイッチ部2の仮想パッチパネル部26と、処理部27とがそれぞれ個別のオペレーティングシステム上で動作する処理として実現されてもよい。
 
【0067】
  本実施の形態によると、他に制御装置を必要とせずに分散的・自律的に動作し、また、複数のスイッチ部を、利用者が切り替えて利用可能なネットワーク中継装置が提供され、柔軟な運用が可能となる。
 
【0068】
  さらに本実施の形態において、端末装置40からリダイレクト部1が受信するデータは、暗号化されていてもよい。
図10は、本発明の実施の形態に係るネットワーク中継装置が受け入れるデータの別の例を表す説明図である。
図10に例示するように、データの暗号化の方法としては、スイッチ論理識別情報とデータ本体とを含むデータ全体をそのまま暗号化する方法(
図10(a))、スイッチ論理識別情報とデータ本体との他に、ランダム値(R)を付したデータを生成し、これらをまとめて暗号化する方法(
図10(b))などがある。ここで暗号化の方法は、共有鍵暗号や公開鍵暗号など、必要に応じた強度の暗号化方法を採用できる。
 
【0069】
  この場合は、リダイレクト部1が、予め定められた方法により、復号鍵を用いて暗号化されたデータを復号し、復号後のデータを用いてスイッチ部2へ出力するデータを得ることとすればよい。なお、ランダム値(R)が付されている場合は、リダイレクト部1は、復号後のデータからこのランダム値(R)を削除し、スイッチ部2へ出力するデータを得ることとすればよい。
 
【0070】
  このように暗号化しておくことで、スイッチ論理識別情報がデータから抽出されて悪用されることを防止できる。また、
図10(b)に例示したようにランダム値等のナンス(Nonce)を利用することで、特定のスイッチ論理識別情報と特定のデータ本体との組をまるごと悪用される事態も防止できる。なお、このランダム値は
図10(c)に例示するように、データ本体の一部に含まれてもよい(データ本体の一部をナンスとして使用する例)。
 
【0071】
  なお、復号に用いる鍵を特定する情報は、暗号化されたデータ本体とともに送信されていてもよい。また、データ本体に含めて、またはデータ本体とは別に、復号側において既知の値を表す情報(マジックと呼ぶ)をデータ本体とともに暗号化しておき、復号側において復号鍵の候補となる複数の鍵を順次試し、試験的に行った復号結果に含まれるマジックが既知の値に一致するときに、当該試した鍵が復号鍵であると判断する方法を採用してもよい。
 
【0072】
  またここまでの説明において、ポート11を介して制御部12に入力されるデータはそれぞれ、スイッチ論理識別情報によって識別されるスイッチ部2によって処理されるので、全体としては(それぞれにスイッチ論理識別情報が関連付けられている、)種々のフォーマットが混在したデータで構わない。
 
【0073】
  そのフォーマットの一つの例として、データは、イーサネット(登録商標)・フレームの形式のデータであってもよい。この場合において、制御部12は、データを受け入れたときに、例えばイーサネット(登録商標)・フレームに含まれるタイプ(Type)の値を参照し、この値が、所定の予約値(例えば0x00ff)であるか否かを判断し、タイプの値が所定の予約値であれば、受け入れたデータにはスイッチ論理識別情報が含まれるものとしてここまでに説明した処理を行い、そうでなければ、従来のスイッチとしての処理(スイッチ論理識別情報を含まないパケットとして扱う処理)を実行してもよい。
 
【0074】
  さらに本発明のある実施態様に係るリダイレクト部1′は、
図12に例示するように、受信部21、転送部22′、及び送出部23を含む。ここで
図2に示したものと同様の構成となるものについては、同じ符号を付して詳細な説明を省略する。
 
【0075】
  転送部22′は、受信部21が受信したデータから、利用者がプログラム等によって定めた規則に従ってスイッチ論理識別情報を取り出す。この規則は、例えば、スイッチ論理識別情報がそのままデータに含まれている場合は、データのうちスイッチ論理識別情報のある位置までの、データ先頭からのオフセット値であってもよい。なお、この場合の転送部22′のある例では、スイッチ論理識別情報がデータに明示的に含まれていなくてもよい。具体的に転送部22′は、スイッチ論理識別情報ごとに定めたパターンをデータから検索する。そして転送部22′は、検索によってデータから見出したパターンに関連付けて定められたスイッチ論理識別情報を取り出す。この後者の例による場合、利用者は、自らが利用したいスイッチングの処理を実行するスイッチ部2を選択するためのスイッチ論理識別情報(スライス識別子)に関連付けて予め定めたパターンを送信するデータに含めて、端末装置40から送信する。このパターンは例えば特定の文字列であってもよい。
 
【0076】
  この転送部22′もまた、このようにして取り出したスイッチ論理識別情報によって特定されるスイッチ部2を選択する。つまり、取り出したスイッチ論理識別情報に関連付けられたスイッチ部2としてのプログラムを記憶部13から読み出して、制御部12に実行開始(起動)させる。そして転送部22′は、データにスイッチ論理識別情報が明示的に含める場合は、受信部21が受信したデータのうちから、当該明示的に含まれるスイッチ論理識別情報を除き、少なくともデータ本体を取り出す。
 
【0077】
  この転送部22′は、受信部21がデータを受信したポート11を識別する、ポート識別情報(ポート11に予め設定されたポート番号等)を得る。そして転送部22′は、このポート識別情報と、受信部21が受信したデータから取り出したデータ本体とを含むデータを、選択したスイッチ部2に転送する。つまり、実行を開始したスイッチ部2としてのプログラムの処理(プロセス)に、データを受け渡す。
 
【0078】
  またここまでの説明では、各ゲストOS上でそれぞれ少なくとも一つのスイッチ部2としてのプログラムが実行されるものとし、スイッチ部2は、それぞれ
図5に例示したように、処理内容保持部25、仮想パッチパネル部26、及び処理部27を含んで構成されるものとしていた。しかしながらスイッチ部2の処理は、比較的処理負荷が高いものであるため、個々のゲストOS上で動作させると、制御部12の負荷が大きくなってしまう。そこで本実施の形態のある例では、スイッチ部2の制御部27を、スイッチとしての論理的動作を管理するコントロールプレーン(Cプレーン)としての処理を行う部分と、スイッチとしての具体的動作を行うデータプレーン(Dプレーン)としての処理を行う部分とに分け、一部のスイッチ部2′(区別のためダッシュを付す)がCプレーンとDプレーンとを備え、他のスイッチ部2″(区別のため2つのダッシュを付す)はCプレーンのみを備えて、いずれかのスイッチ部2′のDプレーンを共用することとしてもよい。この場合、スイッチ部2″の処理内容保持部25が格納している処理内容を表す情報が、スイッチ部2′を動作させるゲストOS上で動作するプログラムから書換えられることのないよう、この場合、スイッチ部2″の処理内容保持部25はリードオンリーに設定されるなど、他のスイッチ部2′,2″から書き換え不能に設定されてもよい。
 
【0079】
  この例ではCプレーンのみを備えるスイッチ部2″の仮想パッチパネル部26は、いずれかのスイッチ部2′の制御部27を選択する。そしてこの仮想パッチパネル部26は、リダイレクト部1が転送したデータに含まれるポート識別情報を参照し、このポート識別情報で識別されるポート11に対応する、選択した制御部27の仮想的なポートに対して、当該リダイレクト部1が転送したデータを転送する。ここで仮想パッチパネル部26は、処理部27に転送するデータから、ポート識別情報を除去しておいてもよい(処理部27のプログラムと、従来のスイッチにおけるプログラムとの互換性を考慮したものである)。
 
【0080】
  スイッチ部2′の制御部27は、同じスイッチ部2′内にある仮想パッチパネル部26から、またはCプレーンのみを備える他のスイッチ部2″の仮想パッチパネル部26から、仮想的なポートのいずれかを介してデータの転送を受け入れる。この処理部27の具体的な処理は、例えば従来のネットワーク中継装置におけるL2スイッチにおける処理に相当するものであってもよい。すなわち処理部27は、仮想的なポートを介して受け入れたデータから、伝送元または伝送先を特定する情報(MACアドレス)を含んだヘッダHを取り出す。そして処理部27は、データ転送元の仮想パッチパネル部26と同じスイッチ部2′またはスイッチ部2″に含まれる処理内容保持部25から、当該処理内容保持部25に保持されている、行うべき処理を表す情報を取得する。
 
【0081】
  そして処理部27は、当該取得した情報が表す処理として、リダイレクト部1の特定のポート11を介してデータを送出するユニキャスト、リダイレクト部1の複数のポート11を介してデータを送出するマルチキャスト、データの廃棄、データの暗号化、ヘッダ情報等を付加するカプセル化、データのパケット数や容量等の集計、その他QoS制御やトンネル経由での送信制御などの処理を実行する。
 
【0082】
  処理部27は、取得した情報が表す処理を実行した結果、リダイレクト部1のいずれかのポート11を出力先として、当該出力先となったポート11を介してデータを出力させることとなった場合は、当該出力先のポート11に対応する仮想的なポートを介して、データ本体を含むデータを、元のデータ転送元の仮想パッチパネル部26に出力する。
 
【0083】
  また本実施の形態では、端末装置側でも複数の仮想マシンを動作させて、それぞれの仮想マシン上でOS(オペレーティングシステム)を動作させてもよい。このとき、各仮想マシンの仮想的なネットワークインタフェースがそれぞれ個別に設定されたスイッチ論理識別情報を含めたパケットを用いて通信を行うようにしてもよい。具体的にこのような端末装置40″は、
図13に例示するように制御部41,記憶部42,操作部43,表示部44,及びネットワークインタフェース45を備える。
 
【0084】
  ここで制御部41は、CPU等のプログラム制御デバイスであり、記憶部42に格納されたプログラムに従って動作する。この制御部41は複数の仮想マシンを実現するプログラムに従って動作している。また各仮想マシンとしての動作において、ネットワークを介してネットワーク中継装置10との間でデータを送受信する処理を行う。なお、以下の例では、各仮想マシンに含まれる仮想的なネットワークインタフェースが、それぞれ互いに異なるスイッチ論理識別情報を利用するものとする。
 
【0085】
  記憶部42は、メモリデバイス等であり、制御部41によって実行されるプログラムを保持する。このプログラムは、DVD−ROMなどのコンピュータ可読な記録媒体に格納されて提供され、この記憶部42に複写されたものであってもよい。またこの記憶部42は、制御部41のワークメモリとして動作してもよい。
 
【0086】
  操作部43は、キーボードやマウス等であり、利用者の指示操作の入力を受けて、当該入力された指示操作の内容を制御部41に出力する。表示部44は、ディスプレイ等であり、制御部41から入力される指示に従って情報を表示する。
 
【0087】
  ネットワークインタフェース45は、ネットワークカード等であり、制御部41から入力される指示に従い、送信の対象となるデータに対して、制御部41から指定された送信元のアドレス(例えばMACアドレス)と宛先のアドレス(例えばMACアドレス)とスイッチ論理識別情報とを付加してネットワーク中継装置10へ送出する(なお、スイッチ論理識別情報を明示的に含まなくてもよいネットワーク中継装置10であれば、ここでのスイッチ論理識別情報の付加は明示的な付加でなくてもよい)。またこのネットワークインタフェース45は、ネットワーク中継装置10から受信したデータに含まれるスイッチ論理識別情報を検出し、検出したスイッチ論理識別情報を利用する仮想的なネットワークインタフェースを特定する。そしてこのネットワークインタフェース45は、当該特定した仮想的なネットワークインタフェースに対して、この受信したデータを出力する。
 
【0088】
  この例によると、各端末装置40″で動作する各仮想マシンで動作している各OSが、それぞれのOSの管理の下で動作するアプリケーションプログラムからデータ送信の指示を受け入れると、次のように動作する。すなわちOSの仮想的なネットワークインタフェースが、それぞれに割当てられている仮想的なアドレスを送信元のアドレスとし、この送信元のアドレスと、アプリケーションプログラムから指示されたデータの送信先(宛先)のアドレスと、このOSに予め設定されているスイッチ論理識別情報とを、送信対象となったデータとともにネットワークインタフェース45に出力する。そしてネットワークインタフェース45は、制御部41から受け入れたデータに、制御部41から入力された送信元のアドレスと、宛先のアドレスと、スイッチ論理識別情報とを含めて(上述の通りスイッチ論理識別情報は明示的なものでなくてもよい)ネットワーク中継装置10に送出する。
 
【0089】
  この例によると、各仮想マシンのOSがそれぞれ、設定されているスイッチ論理識別情報で識別されるネットワーク中継装置10内のスイッチ部2を利用してデータの送出を行うことになる。
 
【0090】
  またこの例では、ネットワーク中継装置10は、端末装置40″宛(端末装置40″内で動作するいずれかのOSの仮想的なネットワークインタフェース宛)のデータに対して、処理を実行したスイッチ部2に係るスイッチ論理識別情報を含める。
 
【0091】
  端末装置40″のネットワークインタフェース45は、ネットワーク中継装置10から受信したデータに含まれるスイッチ論理識別情報を参照し、当該参照したスイッチ論理識別情報を利用しているOSの仮想的なネットワークインタフェースに対して当該受信したデータを出力する。
 
【0092】
  このようにすることで、例えばアドレスとして、MACアドレスに代えて、MACアドレスよりも長いビット長のアドレス(拡張MACアドレス)を利用するスイッチ部2がネットワーク中継装置10にある場合、端末装置40″の、ある仮想マシン上のOSではこの拡張MACアドレスを利用した通信を行い、また端末装置40″の、別の仮想マシン上のOSでは通常のMACアドレスを利用した通信を行う、といった処理が可能になる。
 
【0093】
[一つのOS内で切替える例]
  さらにここでは端末装置40″の制御部41が複数の仮想マシンを動作させる例について説明したが、本実施の形態はこれに限られない。例えば制御部41が実行するOSが一つだけである場合、このOSとしての処理において、制御部41は次のような処理を実行してもよい。
 
【0094】
  すなわち制御部41は、ネットワーク中継装置10の複数のスイッチ部2に対応する複数のスイッチ論理識別情報のうちから一つのスイッチ論理識別情報を選択する指示を利用者から受け入れておく。
 
【0095】
  そして制御部41は、OSの管理の下で動作するアプリケーションプログラムからデータ送信の指示を受け入れると、予め設定されているアドレスを送信元のアドレスとし、この送信元のアドレスと、アプリケーションプログラムから指示されたデータの送信先(宛先)のアドレスと、選択されたスイッチ論理識別情報とを、送信対象となったデータとともにネットワークインタフェース45に出力する。そしてネットワークインタフェース45は、制御部41から入力されたデータに、制御部41から入力された送信元のアドレスと、宛先のアドレスと、スイッチ論理識別情報とを含めて(すでに記載の通り、スイッチ論理識別情報は明示的に含めなくてもよい)ネットワーク中継装置10に送出する。
 
【0096】
  この例によると、利用者が選択したスイッチ論理識別情報で識別されるネットワーク中継装置10内のスイッチ部2を利用してデータの送出を行うことになる。なお、この例においては、記憶部42に、利用者が選択可能なスイッチ論理識別情報ごとに送信元のアドレスと、宛先のアドレスの取得方法とを関連付けて記憶しておき、制御部41は、送信元のアドレスとして、選択されたスイッチ論理識別情報に関連付けられた送信元のアドレスを利用するとともに、宛先のアドレスを取得するにあたり、選択されたスイッチ論理識別情報に関連付けられた取得方法(取得処理を行うプログラムであってもよい)にて、宛先のアドレスを取得する。
 
【0097】
  またこの例では、ネットワーク中継装置10は、端末装置40″宛(端末装置40″内で動作するいずれかのOSの仮想的なネットワークインタフェース宛)のデータに対して、処理を実行したスイッチ部2に係るスイッチ論理識別情報を含める(すでに述べているように、明示的に含めなくてもよい場合は、このスイッチ論理識別情報は明示的に含められなくてもよい)。
 
【0098】
  端末装置40″のネットワークインタフェース45は、ネットワーク中継装置10から受信したデータに含まれるスイッチ論理識別情報を参照し、当該データから抽出されるスイッチ論理識別情報が、利用者が選択しているスイッチ論理識別情報に一致する場合に、制御部41に対して当該受信したデータを出力する。
 
【0099】
  このようにすることで、例えばキャッシュを利用するスイッチ部2がネットワーク中継装置10にある場合、端末装置40″の利用者は、このキャッシュを利用した通信を行うスイッチ部2を選択するスイッチ論理識別情報を選択すれば、端末装置40″がキャッシュを利用した通信を行うこととなり、キャッシュを利用しないスイッチ部2を選択するスイッチ論理識別情報を利用者が選択すれば、端末装置40″が、キャッシュを利用しない通信を行うこととなる。つまり、利用者はキャッシュの利用の有無を選択できるようになる。
 
【0100】
  さらに別の例として、アプリケーションプログラムごとに、送出するデータに含めるスイッチ論理識別情報を選択可能としてもよい。この場合、アプリケーションプログラムが、予め設定されているアドレスを送信元のアドレスとし、この送信元のアドレスと、データの送信先(宛先)のアドレスと、選択されたスイッチ論理識別情報とを、送信対象となったデータとともにネットワークインタフェース45に出力する(OSはアプリケーションプログラムから入力されるデータをそのままネットワークインタフェース45に出力する)。
 
【0101】
  そしてネットワークインタフェース45は、制御部41から入力されるデータに、制御部41から入力された送信元のアドレスと、宛先のアドレスと、スイッチ論理識別情報(明示的でなくてもよい)とを含めてネットワーク中継装置10に送出する。
 
【0102】
  なお、この例においては、記憶部42に、利用者が選択可能なスイッチ論理識別情報ごとに送信元のアドレスと、宛先のアドレスの取得方法とを関連付けて記憶しておき、制御部41は、アプリケーションプログラムの処理として、送信元のアドレスとして、選択されたスイッチ論理識別情報に関連付けられた送信元のアドレスを利用するとともに、宛先のアドレスを取得するにあたり、選択されたスイッチ論理識別情報に関連付けられた取得方法(取得処理を行うプログラムであってもよい)にて、宛先のアドレスを取得する。
 
【0103】
  また端末装置40″のネットワークインタフェース45は、ネットワーク中継装置10から受信したデータを制御部41に出力する。制御部41は、このデータに含まれるスイッチ論理識別情報を参照し、当該データに含まれるスイッチ論理識別情報が、選択しているスイッチ論理識別情報に一致するアプリケーションプログラムの処理において、当該データを利用した処理を実行する。
 
【0104】
  ネットワーク中継装置10はまた、端末装置40との間の通信を、無線LANを介して行ってもよい。この場合に、ネットワーク中継装置10が無線LANのアクセスポイントとして動作してもよいし、いわゆる3G・4Gなどの広域無線通信のベースステーション等の無線通信のアクセスポイントとして動作してもよい。
 
【0105】
  また、ネットワーク中継装置10は、スイッチ論理識別情報を含めることができない(あるいはスイッチ論理識別情報が無視されたり削除されたりする可能性のある)外部ネットワーク(例えば、従来一般的なネットワーク)に対して、端末装置40から受け入れたデータを送出することもあり得る。この場合、当該送出したデータに対する応答にはスイッチ論理識別情報が含まれない可能性がある。そこで、ネットワーク中継装置10は、いわゆるNAT(ネットワークアドレス変換)技術等を利用し、外部ネットワークから応答を受信したときに、過去に送出したどのデータに対する応答であるかを識別し、識別したデータに係るスイッチ論理識別情報を(明示的または非明示的に)当該受信した応答のデータに付加して処理してもよい。このようにすることで、本実施の形態のネットワーク中継装置10を、一般的なインターネットに接続できるようになり、端末装置40が、インターネットを介してアクセス可能な種々のサイトからの応答を得ることができるようになる。