図面 (/)
課題・解決手段
本発明は、一般にネットワーキングおよびコンピュータアーキテクチャの技術分野に関し、より詳細には、ソフトウェア定義ネットワーク(SDN)ボックスと、少なくとも1つの上流ノードと、複数の下流ノードとを含むシステムを構成する手法に関するものである。ノードはいくつかのグループに分割され得る。各グループに、単一の上流ノードと、少なくとも1つの下流ノードとがある。上流ノードと下流ノードの間のすべてのパケットはSDNボックスによって転送される。SDNボックスは「PCI-Eスイッチ」として働き、上流ノードを各下流ノードと相互接続して、カプセル化されたパケット(内部はPCI-Eパケットである)を転送する。全体の通信プロセスを通じて、上流ノードは下流ノードを通常のローカルPCI-Eデバイスとして扱う。
概要
背景
PCI-E(周辺装置相互接続エクスプレス)は、コンピュータシステムにおいて周辺デバイスを相互接続するのに用いられる第3世代の高性能I/Oバスである。PCI-Eは、PCIと称される前世代のI/Oバスと同一の用法モデルを採用する。PCI-Eは、メモリのリード/ライト、I/Oのリード/ライトおよびコンフィギュレーションのリード/ライトのトランザクションなどのよく知られているトランザクションをサポートする。既存のOSおよびデバイスドライバは、PCI-Eシステムにおいて変更なしで動作することができる(PCI-Eに関する詳細は、Ravi Budruk、Don Anderson、Tom Shanleyによる、Addison- Wesley Professional、2004年の「PCI Express system architecture」を参照されたい)。
サーバの中にそれほどスペースがないので、PCI-Eスロットの数は通常制限されている。上記の問題に取り組むためにExpEther(Express Ethernet、http://www.expether.org/を参照されたい)が提案されている。ExpEtherは、PCI-Eをイーサネットにわたって拡張する。PCI-Eパケットは、PCI-Eパケットの送り手側においてPCI-E-over-Ethernetパケットにカプセル化され、次いで、イーサネットスイッチによって転送されて、送付先へ転送されたときPCI-Eパケットへとデカプセル化(カプセル開放)される(特開(Japanese Unexamined Patent Application)公開公報(First Publication)第2007-219873A号を参照されたい)。
特定のタイプのパケットが、ExpEtherにおけるキープアライブメッセージとして働くようにブロードキャストされる。それに関連したタイムアウト値がある。タイムアウトが期限切れになり、依然として、そのような受信したキープアライブパケットがなければ、上流のノードが既に運転停止していると推断される。一旦、障害が検知されると、接続されている下流のノードは、できるだけ早く別の利用可能な上流のノードに移管されるべきである。
概要
本発明は、一般にネットワーキングおよびコンピュータアーキテクチャの技術分野に関し、より詳細には、ソフトウェア定義ネットワーク(SDN)ボックスと、少なくとも1つの上流ノードと、複数の下流ノードとを含むシステムを構成する手法に関するものである。ノードはいくつかのグループに分割され得る。各グループに、単一の上流ノードと、少なくとも1つの下流ノードとがある。上流ノードと下流ノードの間のすべてのパケットはSDNボックスによって転送される。SDNボックスは「PCI-Eスイッチ」として働き、上流ノードを各下流ノードと相互接続して、カプセル化されたパケット(内部はPCI-Eパケットである)を転送する。全体の通信プロセスを通じて、上流ノードは下流ノードを通常のローカルPCI-Eデバイスとして扱う。
目的
本発明は、PCI-E、イーサネットおよびSDNに基づくシステムを構成する方法を提供する
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
(分野番号表示ON)※整理標準化データをもとに当社作成
請求項1
少なくとも1つの上流ノード、少なくとも1つの下流ノードおよびSDNボックスを含んでいるネットワークにわたる周辺装置相互接続エクスプレス(PCI-E)スイッチとしてソフトウェア定義ネットワーク(SDN)ボックスを用いる方法であって、前記SDNボックスによって、前記ネットワークを介して、前記上流ノードと前記下流ノードを相互に接続するステップと、前記上流ノードと前記下流ノードの一方の側においてPCI-Eパケットを送信するステップと、前記PCI-Eパケットを特定のパケットヘッダとともにカプセル化するステップと、前記SDNボックスによって、内部PCI-Eパケットとともに搬送されたトランザクションレイヤパケット(TLP)ルーティング識別子(ID)に基づいて、前記カプセル化されたパケットを前記ネットワークへ送信するステップと、前記上流ノードと前記下流ノードの他方の側において、前記カプセル化されたパケットを受信するステップと、受信したパケットから前記特定のパケットヘッダを除去するステップと、前記受信したパケットを前記PCI-Eパケットへとデカプセル化するステップとを含む方法。
請求項2
前記上流ノードが、演算装置(CPU)、ネットワークインターフェースカード(NIC)およびカプセル化/デカプセル化モジュールを含み、前記下流ノードが、I/Oデバイス、ネットワークインターフェースカード(NIC)およびカプセル化/デカプセル化モジュールを含む請求項1に記載の方法。
請求項3
前記上流ノードおよび前記下流ノードが、単一上流ノードおよび少なくとも1つの下流ノードを含む少なくとも1つのグループに属する請求項1に記載の方法。
請求項4
前記TLPルーティングIDが、アドレスルーティング、IDルーティングおよび暗示的ルーティングを含む、前記PCI-EにおけるTLPルーティング方法の前記識別子である請求項1に記載の方法。
請求項5
前記SDNボックスが、ソフトウェア定義(SD)スイッチおよび前記SDスイッチに対応するソフトウェア定義スイッチ(SDSW)コントローラのフォーマットとして実施され、前記SDスイッチがスレーブTLPルーティング表を含み、前記SDSWコントローラがマスタTLPルーティング表を含む請求項1に記載の方法。
請求項6
SDスイッチを用いて、前記上流ノードと前記下流ノードの一方からの前記受信したパケットをデカプセル化し、前記TLPルーティングIDを抽出し、前記TLPルーティングIDに基づいて前記スレーブTLPルーティング表を回復するステップであって、前記TLPルーティング表の中に送付先アドレスが見つかった場合、前記パケットをパケットヘッダとともにカプセル化し、前記送付先アドレスを満たして送出し、前記TLPルーティング表の中に送付先アドレスが見つからない場合、前記パケットをバッファリングして、前記SDSWコントローラに対してクエリを送出するステップと、前記SDSWコントローラを用いて、前記SDスイッチからの前記クエリ要求を解析し、TLPルーティング情報を抽出し、前記TLPルーティング情報を新規の表項目として前記マスタTLPルーティング表に追加して、前記SDスイッチに、前記スレーブTLPルーティング表を更新するように通知するステップとを含む請求項5に記載の方法。
請求項7
前記SDスイッチと、前記SDスイッチに対応する前記SDSWコントローラとが、通信チャネルを用いて接続されており、それによってクエリおよび通知メッセージが転送され、前記通信チャネルが、イーサネットを含む遠隔通信チャネルまたはUNIXドメインソケットを含むローカル通信チャネルのいずれかである請求項5に記載の方法。
請求項8
PCI-Eパケットをカプセル化するステップにおいて、前記送付先アドレスが、前記SDNボックスによって認識され得る所定のフォーマットに保たれる請求項1において定義された方法。
請求項9
技術分野
0001
本発明は、一般にネットワーキングおよびコンピュータアーキテクチャの技術分野に関し、より詳細には、ソフトウェア定義ネットワーク(SDN)ボックス、上流ノードおよび下流ノードから成るシステムを構成する手法に関するものである。
背景技術
0002
PCI-E(周辺装置相互接続エクスプレス)は、コンピュータシステムにおいて周辺デバイスを相互接続するのに用いられる第3世代の高性能I/Oバスである。PCI-Eは、PCIと称される前世代のI/Oバスと同一の用法モデルを採用する。PCI-Eは、メモリのリード/ライト、I/Oのリード/ライトおよびコンフィギュレーションのリード/ライトのトランザクションなどのよく知られているトランザクションをサポートする。既存のOSおよびデバイスドライバは、PCI-Eシステムにおいて変更なしで動作することができる(PCI-Eに関する詳細は、Ravi Budruk、Don Anderson、Tom Shanleyによる、Addison- Wesley Professional、2004年の「PCI Express system architecture」を参照されたい)。
0003
サーバの中にそれほどスペースがないので、PCI-Eスロットの数は通常制限されている。上記の問題に取り組むためにExpEther(Express Ethernet、http://www.expether.org/を参照されたい)が提案されている。ExpEtherは、PCI-Eをイーサネットにわたって拡張する。PCI-Eパケットは、PCI-Eパケットの送り手側においてPCI-E-over-Ethernetパケットにカプセル化され、次いで、イーサネットスイッチによって転送されて、送付先へ転送されたときPCI-Eパケットへとデカプセル化(カプセル開放)される(特開(Japanese Unexamined Patent Application)公開公報(First Publication)第2007-219873A号を参照されたい)。
0004
特定のタイプのパケットが、ExpEtherにおけるキープアライブメッセージとして働くようにブロードキャストされる。それに関連したタイムアウト値がある。タイムアウトが期限切れになり、依然として、そのような受信したキープアライブパケットがなければ、上流のノードが既に運転停止していると推断される。一旦、障害が検知されると、接続されている下流のノードは、できるだけ早く別の利用可能な上流のノードに移管されるべきである。
0005
特開2007-219873号公報
先行技術
0006
「PCIExpress system architecture」、by Ravi Budruk、Don Anderson、Tom Shanley、Addison- Wesley Professional、2004年
Express Ethernet、http://www.expether.org/
OpenFlow、https://www.opennetworking.org/sdn-resources/onf-specifications/openflow
発明が解決しようとする課題
0007
現在のExpEtherでは、高速の故障検知を達成するのは困難である。故障検知がより高速になればキープアライブパケットのタイムアウト値がより短くなるので、ブロードキャストのトラフィックがより多くなる。ブロードキャストのトラフィックがより多くなれば、ネットワークデバイスの処理量が増加する。
0008
本発明は、上記の高速の障害検知およびExpEtherのハンドオーバの問題を解決するために提案されるものである。本発明は、PCI-E、イーサネットおよびSDNに基づくシステムを構成する方法を提供する。提案されるシステムは、上流ノード、下流ノードおよびSDNボックスから成るものである。
課題を解決するための手段
0009
提案される本発明のシステムでは、上流ノードと下流ノードの両方にカプセル化/デカプセル化モジュールがある。上流ノード(CPU、メモリ、ハードディスクおよび様々なI/Oデバイスから成り得る)はコンピュータシステムとして作用し、下流ノードはPCI-Eデバイスとして作用し、これらはSDNボックスによって接続されている。上流ノードはPCI-Eパケットによって下流ノードにアクセスする。上流ノードと下流ノードの両方にとって、通信プロセスは以下の通りである。PCI-Eパケットを送信するときは、PCI-Eパケットを特定のパケットヘッダとともにカプセル化して、ネットワーク(たとえば、それだけではないがイーサネット)によって送信する。カプセル化されたパケットを受信するときは、特定のパケットヘッダを除去し、それをPCI-Eパケットへとデカプセル化する。SDNボックスは「PCI-Eスイッチ」として働き、特定のネットワークを介して上流ノードと下流ノードを相互接続して、カプセル化されたパケットを転送する。
0010
提案される本発明のシステムでは、上流ノードが運転停止したとき、SDNボックスに対して通知が配送されることになる(SDNボックスはOpenFlow(https://www.opennetworking.org/sdn-resources/onf-specifications/openflowを参照されたい)によって実施され得るが、それだけではない。OpenFlowが用いられると、上流ノードが運転停止したとき、OFPPS_LINK_DOWNメッセージがOpenFlowスイッチからOpenFlowコントローラへ送信されることになる)。その上、SDNボックス上にPCI-Eのルーティング表が維持され、接続されている下流ノードのグループIDを変更することにより、ハンドオーバも達成され得る。
0011
前述の、また他の、例示の目的、態様、および利点を説明するために、図面を参照しながら本発明の例示的実施形態の以下の詳細な説明を用いることにする。
図面の簡単な説明
0012
SDNボックス、少なくとも1つの上流ノードおよび少なくとも1つの下流ノードを有するコンピュータシステムのシステムアーキテクチャの一実施形態を示すブロック図である。
少なくとも1つのソフトウェア定義スイッチ(SDスイッチ)と少なくとも1つのソフトウェア定義スイッチのコントローラ(SDSWコントローラ)とから成るSDNボックスに基づく、可能な実装形態のうちの1つのシステムアーキテクチャの一実施形態を示すブロック図である。
少なくとも1つのソフトウェア定義スイッチ(SDスイッチ)と少なくとも1つのソフトウェア定義スイッチのコントローラ(SDSWコントローラ)とから成るSDNボックスに基づく、可能な実装形態のうちの1つのシステムアーキテクチャの一実施形態を示すブロック図である。
上流ノードのシステムアーキテクチャの一実施形態を示すブロック図である。
下流ノードのシステムアーキテクチャの一実施形態を示すブロック図である。
ソフトウェア定義(SD)スイッチのシステムアーキテクチャの一実施形態を示すブロック図である。
ソフトウェア定義スイッチのコントローラ(SDSWコントローラ)のシステムアーキテクチャの一実施形態を示すブロック図である。
DEVINFOパケットの可能なパケットフォーマットの一実施形態を示す表である。
上流ノード、SDNボックスおよび下流ノードの間のメモリのリード/ライトのシーケンス図である。
上流ノードまたは下流ノードがPCI-Eパケットを送出するやり方の一実施形態を示す流れ図である。
上流ノードまたは下流ノードがPCI-Eパケットを受信するやり方の一実施形態を示す流れ図である。
SDスイッチがイーサネットパケットを処理するやり方の一実施形態を示す流れ図である。
SDSWコントローラが、システムの起動中にマスタトランザクションレイヤパケット(TLP)のルーティング表をセットアップするやり方、およびパケット転送のプロセス中にSDスイッチと通信するやり方の一実施形態を示す流れ図である。
基礎をなすネットワークがイーサネットであるとき、SDスイッチに対するスレーブTLPルーティング表およびSDSWコントローラに対するマスタTLPルーティング表として用いられるTLPルーティング表の可能なデータ構造の一実施形態を示す表である。
上流ノード、SDNボックスおよび下流ノードの間の障害検知およびハンドオーバのシーケンス図である。
実施例
0013
以下の説明では、本発明の好ましい一実施形態が、好ましい処理ステップおよびデータ構造に関して説明される。
0014
<システムの構成要素>
図1は、ソフトウェア定義ネットワーク(SDN)ボックス106、上流ノード101および104ならびに下流ノード102、103および105を有するコンピュータシステムのシステムアーキテクチャの一実施形態を示すブロック図である。各構成要素は、ネットワーク(それだけではないが、たとえばイーサネット)によって接続されている。一般に、システムには少なくとも1つのグループがある。図1には2つのグループがある。1つのグループは、上流ノード101および下流ノード102および下流ノード103から成る。他のグループは上流ノード104および下流ノード105から成る。各グループに、単一の上流ノードと、少なくとも1つの下流ノードとがある。上流ノードと下流ノードの間のすべてのパケットはSDNボックスによって転送される。
0015
<可能な実装形態のシステムアーキテクチャ>
図2Aおよび図2Bは、SDNボックスが少なくとも1つのソフトウェア定義スイッチ(SDスイッチ)と少なくとも1つのソフトウェア定義スイッチのコントローラ(SDSWコントローラ)とから成る、1つの可能な実装形態のシステムアーキテクチャの一実施形態を示すブロック図である。
0016
図2Aにおいて、SDNボックス206はSDスイッチ208およびSDSWコントローラ207から成る。SDスイッチ208とSDSWコントローラ207の間に通信チャネルがある。上流ノードと下流ノードは2つのグループに分割され得て、各グループは単一の上流ノードおよび少なくとも1つの下流ノードから成る。上流ノード201ならびに2つの下流ノード202および203は、それぞれSDスイッチ208の第1のポート(#1)、第2のポート(#2)および第3のポート(#3)に接続されている。上流ノード204および下流ノード205は、それぞれSDスイッチ208の第4のポート(#4)および第5のポート(#5)に接続されている。
0017
図2Bにおいて、SDNボックス206は、SDスイッチ208、209、211および212、ならびにSDSWコントローラ207および210から成る。SDSWコントローラ207とSDスイッチ208の間、およびSDSWコントローラ207とSDスイッチ209の間にそれぞれ通信チャネルがある。さらに、SDSWコントローラ210とSDスイッチ211の間、およびSDSWコントローラ210とSDスイッチ212の間にもそれぞれ通信チャネルがある。上流ノードと下流ノードは2つのグループに分割され得て、各グループは単一の上流ノードおよび少なくとも1つの下流ノードから成る。上流ノード201ならびに2つの下流ノード202および203が1つのグループに属し、上流ノード204および下流ノード205が別のグループに属する。
0018
図2Aおよび図2Bにおいて、すべてのSDスイッチが、(それだけではないが)たとえばイーサネットといった特定のネットワークによって接続されている。SDSWコントローラとSDスイッチの間の通信は、(それだけではないが)たとえばOpenFlowといった特定のプロトコルにおけるものである。
0019
図3は、上流ノードのシステムアーキテクチャの一実施形態を示すブロック図である。一般に、コンピュータシステムは、CPU、メモリ、ハードディスクおよび様々なI/Oデバイスから成る。システムアーキテクチャについてより明瞭に説明するために、ここではその他の構成要素が省略されている。上流ノード301は、少なくとも中央処理装置(CPU)302、カプセル化/デカプセル化(ENCAP/DECAP)モジュール303およびネットワークインターフェースカード(NIC)304から成る。CPU 302は、基本的動作、算術演算、論理演算、およびシステムの入出力動作を遂行することにより、コンピュータプログラムの命令を実行するハードウェア構成要素である。NIC 304は、上流ノード301を、SDNボックスが配置されているネットワークに接続するハードウェア構成要素である。カプセル化/デカプセル化モジュール303は、通信プロセス中の、PCI-Eパケットのカプセル化と、受信したカプセル化されたパケットのデカプセル化とを担当している。CPU 302とカプセル化/デカプセル化モジュール303は論理的に接続されており、カプセル化/デカプセル化モジュール303とNIC 304はそれぞれ接続されている。言い換えれば、接続するやり方は制限されず、(それだけではないが)たとえばPCI-Eバスプロトコルといったハードウェアのやり方、または任意のソフトウェアのやり方のいずれかでよい。
0020
図4は、下流ノードのシステムアーキテクチャの一実施形態を示すブロック図である。下流ノードはCPU、メモリ、ハードディスクおよび様々なデバイスから成り得る。システムアーキテクチャについてより明瞭に説明するために、ここではその他の構成要素が省略されている。下流ノード401は、少なくともメモリ402、カプセル化/デカプセル化(ENCAP/DECAP)モジュール403およびネットワークインターフェースカード(NIC)404から成る。NIC 404は、下流ノード401を、SDNボックスが配置されているネットワークに接続するハードウェア構成要素である。カプセル化/デカプセル化モジュール403は、通信プロセス中の、PCI-Eパケットのカプセル化と、受信したカプセル化されたパケットのデカプセル化とを担当している。メモリ402とカプセル化/デカプセル化モジュール403は接続されており、カプセル化/デカプセル化モジュール403とNIC 404は、それぞれ論理的に接続されている。言い換えれば、接続するやり方は制限されず、(それだけではないが)たとえばPCI-Eバスプロトコルといったハードウェアのやり方、または任意のソフトウェアのやり方のいずれかでよい。
0021
<SDNボックス内のパケット処理>
図5は、ソフトウェア定義(SD)スイッチのシステムアーキテクチャの一実施形態を示すブロック図である。SDスイッチ501は、少なくともRecvDモジュール502、SendDモジュール503、SendC(制御プレーンに送信する)モジュール504、RecvC(制御プレーンから受信する)モジュール509、デカプセル化(DECAP)モジュール505、カプセル化(ENCAP)モジュール506、パケットバッファ(PKT BUFFER)モジュール507およびスレーブトランザクションレイヤパケット(TLP)ルーティング表操作モジュール508から成る。RecvDモジュール502は、上流ノードおよび下流ノードからの受信を担当している。SendDモジュール503は上流ノードおよび下流ノードへの送信を担当している。RecvCモジュール509はSDSWコントローラからの受信を担当している。SendCモジュール504はSDSWコントローラへの送信を担当している。デカプセル化モジュール505は、カプセル化されたパケットをPCI-Eパケットへとデカプセル化する。カプセル化モジュール506はPCI-Eパケットをカプセル化する。パケットバッファモジュール507はパケットのバッファリングを担当している。TLPルーティング表操作モジュール508は、新規のスレーブTLPルーティング表の項目を生成して挿入することができ、スレーブTLPルーティング表の検索機能をサポートする。
0022
図6は、ソフトウェア定義スイッチのコントローラ(SDSWコントローラ)のシステムアーキテクチャの一実施形態を示すブロック図である。SDSWコントローラは、少なくともRecvSWモジュール602、SendSWモジュール603、マスタTLPルーティング表操作モジュール604、およびmsgパーサモジュール605から成る。RecvSWモジュール602はSDスイッチからの受信を担当している。SendSWモジュール603はSDスイッチへの送信を担当している。マスタTLPルーティング表操作モジュール604は、新規のマスタTLPルーティング表の項目を生成して挿入することができ、マスタTLPルーティング表の検索機能をサポートする。msgパーサモジュール605が抽出する情報は、1)ノードID(ノードの固有のID)と、2)ノードのタイプ(上流ノードまたは下流ノード)と、3)各ノードの(上流または下流の)送付先アドレスと、4)ノードに接続されているSDスイッチの(上流または下流の)ポート番号と、5)グループに対して用いられるVLANタグ(基礎をなすネットワークがイーサネットであるときのみ必要)と、6)図13に示される、受信したパケットからのTLPルーティングID(TLPルーティングの固有のID)とを含む。
0023
SDNボックスは、少なくとも1つのSDSWコントローラおよび少なくとも1つのSDスイッチから成る。全体の処理プロセスは以下の通りである。カプセル化されたパケット(その内部のパケットはPCI-Eパケットである)がSDスイッチ501のRcevDモジュール502によって受信されると、デカプセル化モジュール505によってPCI-Eパケットへとデカプセル化され、それからTLPルーティングIDが抽出される。次いで、スレーブTLPルーティング表操作モジュール508が、抽出されたTLPルーティングIDに基づいてスレーブTLPルーティング表を回復することになる。
> 見つからない場合には、パケットはパケットバッファモジュール507においてバッファリングされ、次いで、クエリパケット(TLPルーティングID、ノードタイプ、ノードID、ならびに図13に示されるような他の関連情報を含有している)が、クエリ(SendC)モジュール504によってSDSWコントローラ601へ送信されることになる。SDSWコントローラ601の側において、クエリが、受信(RecvSW)モジュール602によって受信される。SDSWコントローラ601のマスタTLPルーティング表は、マスタTLPルーティング表操作モジュール604によって、TLPルーティングIDに基づいてさらに回復されることになる。
◇ 見つからない場合には、SDSWコントローラ601のマスタTLPルーティング表操作モジュール604は、msgパーサモジュール605によって抽出された情報に基づいて、1)ノードID(ノードの固有のID)と、2)ノードのタイプ(上流ノードまたは下流ノード)と、3)各ノードの(上流または下流の)送付先アドレスと、4)ノードに接続されているSDスイッチの(上流または下流の)ポート番号と、5)グループに対して用いられるVLANタグ(基礎をなすネットワークがイーサネットであるときのみ必要)と、6)図13に示されるTLPルーティングID(TLPルーティングの固有のID)とを含む新規の表項目を生成することになる。次いで、それがマスタTLPルーティング表に挿入される。SDSWコントローラ601の送信(SendSW)モジュール603は、PCI-E-over-EthernetパケットをブロードキャストするようにSDスイッチ501に通知することになる。
◇ 見つかった場合には、SDSWコントローラ601の送信(SendSW)モジュール603は、カプセル化されたPCI-Eパケットを、回復された送付先アドレスに従って転送するようにSDスイッチ501に通知することになる。この通知はRecvCモジュール509において処理され、同一の新規の表項目が、SDスイッチ501のスレーブTLPルーティング表操作モジュール508によって、スレーブTLPルーティング表に挿入される。
> 見つかった場合には、PCI-Eパケットは、カプセル化モジュール506によってカプセル化パケットヘッダとともにカプセル化されることになり、カプセル化パケットヘッダは、スレーブTLPルーティング表操作モジュール508によって戻される送付先アドレスとして回復されたアドレスで満たされている。
0024
EVINFOパケットフォーマット>
上流ノードと下流ノードの間の全体の通信プロセス中、2種類のパケットが用いられる。一方はPCI-Eパケットであり、メモリのリード/ライト、I/Oのリード/ライト、コンフィグのリード/ライトの動作中に用いられる。他方は、本発明において新しく定義された、DEVINFOパケットと称されるものである。DEVINFOパケットは、1)上流ノードと下流ノードの間の通信を開始すること、および、2)一定間隔で周期的に、上流ノードと下流ノードに互いの存続を気付かせること、のために用いられる。DEVINFOのパケットフォーマットは、(それだけではないが)少なくとも、1)ノードID(ノードの固有のID)と、2)ノードのタイプ(上流ノードまたは下流ノード)と、3)(上流または下流の)ノードのソースアドレスと、4)TLPルーティングID(TLPルーティングにおいて用いられる固有のID)とのデータフィールドを含有している。図7は、DEVINFOパケットのパケットフォーマットの可能な定義の一実施形態を示す表である。
0025
<上流ノードと下流ノードの間の通信>
図8は、上流ノード801、SDNボックス802および下流ノード803の間のメモリのリード/ライトのシーケンス図である(I/Oのリード/ライトおよびコンフィグのリード/ライトのプロセスは同一のシーケンスを辿るので省略されている)。通信プロセスは以下の通りである。
(1)上流ノード801は、下流ノード803のメモリにアクセスするとき(たとえばメモリのリード/ライト動作)、PCI-Eパケットを送信する。ステップ804において、PCI-Eパケットは、カプセル化/デカプセル化モジュール303によってパケットヘッダとともにカプセル化されて、NIC 304から送出される。
(2)カプセル化されたパケットが、SDNボックス802におけるSDスイッチの特定のポートに到達する。ステップ805において、カプセル化されたパケットがデカプセル化され、次いで、ステップ806においてそれらの内部情報が抽出される。次いで、ステップ807において、デカプセル化されたパケットがカプセル化されて下流ノード803へ転送される。
(3)カプセル化されたパケットは、下流ノード803において受信されると、ステップ808においてPCI-Eパケットへとデカプセル化される。
0027
図9は、上流ノードまたは下流ノードがPCI-Eパケットを送出するやり方の一実施形態を示す流れ図である。
(1)ノード(上流ノードまたは下流ノードのいずれか)がステップ901においてパケットを送出しようとするとき、ステップ902においてそれがDEVINFOパケットであれば、ステップ903において、(カプセル化パケットヘッダの)送付先アドレスはブロードキャストアドレスでなければならない。
(2)送付先アドレスがブロードキャストアドレスでなければ、それは必ずPCI-Eパケットであり、(カプセル化パケットヘッダにおける)送付先アドレスは所定のフォーマットでなければならず、ステップ904においてSDスイッチによって認識され得る。
(3)最終的に、パケットは外側のパケットヘッダとともにカプセル化され、送付先アドレスはステップ903およびステップ904から生じる。外側のパケットヘッダのタイプは、基礎をなすネットワークに依拠するものである。たとえば基礎をなすネットワークがイーサネットであれば、イーサネットのパケットヘッダが外側のパケットヘッダとして追加されてステップ905で送出される。
0028
図10は、上流ノードまたは下流ノードがカプセル化されたパケットを受信するやり方の一実施形態を示す流れ図である。
(1)ステップ1001において、カプセル化されたパケットを受信すると、ステップ1002において、パケットがPCI-Eパケットへとデカプセル化されることになる。
0029
図11は、SDスイッチが、カプセル化されたパケットを処理するやり方の一実施形態を示す流れ図である。SDスイッチのプロセスは以下の通りである。
(1)ステップ1101において、SDSWコントローラからのパケットがなければ、ステップ1104において、パケットが特定のカプセル化されたパケットに属するものであるかどうかチェックされる。パケットが特定のカプセル化されたパケットに属するものでなければ、ステップ1105において、パケットは他のパケットのルーチンにおいてさらに処理されることになる。
(2)パケットが上流ノードまたは下流ノードからのカプセル化されたパケットであれば、ステップ1106において、そのTLPルーティングIDが抽出され、それに基づいてスレーブTLPルーティング表が回復されることになる。見つからない場合には、ステップ1108においてパケットがバッファリングされ、SDSWコントローラに対してクエリ要求が送信される。見つかった場合には、ステップ1107において、パケットが、回復されたアドレスを送付先アドレスとして満たされたカプセル化ヘッダとともにカプセル化されて送出されることになる。
(3)ステップ1101において、SDSWコントローラから受信したパケットがある場合、ステップ1102において、搬送されるTLPルーティング情報が抽出され、ステップ1103において、スレーブルーティング表に新規の表項目を追加する。次いで、ステップ1107において、以前のバッファリングされたパケットがさらに処理されることになる(パケットをカプセル化し、回復された送付先アドレスを満たして、それを送信する)。
0030
図12は、SDSWコントローラが、SDスイッチからのクエリ要求を処理し、TLP情報を抽出してマスタTLPルーティング表を更新し、最終的に、スレーブTLPルーティング表を更新するようにSDスイッチに通知するやり方の一実施形態を示す流れ図である。プロセスは以下の通りである。
(1)ステップ1201において、SDスイッチからのクエリ要求パケットが受信されている場合、ステップ1202においてTLPルーティング情報が抽出されることになる。
(2)ステップ1203において、TLPルーティング情報に基づいてマスタTLPルーティング表が回復されることになる。何も見つからなければ、ステップ1204において、マスタTLPルーティング表に新規の項目が追加されることになる。
(3)最終的に、ステップ1205において、SDスイッチに通知するために回復の結果が送出される。
0031
図13は、TLPルーティング表の可能なデータ構造であり、これは、基礎をなすネットワークがイーサネットであるとき、SDスイッチとSDSWコントローラの両方に対して用いられる。表は、1)ノードID(ノードの固有のID)の列と、2)ノードのタイプ(上流ノードまたは下流ノード)の列と、3)各ノードの(上流または下流の)送付先アドレスの列と、4)ノードに接続されているSDスイッチの(上流または下流の)ポート番号の列と、5)グループに対して用いられるVLANタグ(基礎をなすネットワークがイーサネットであるときのみ必要)の列と、6)TLPルーティングID(TLPルーティングの固有のID)の列とから成る。図13は、VLAN IDが1または2であるノードの2つのグループを示す。最初の3つの項目は、同一のVLAN ID 1を共有するので1つのグループに属する。ノードIDが1であるノードは上流ノードであり、そのMACアドレスはMAC_00である。ノードIDが1であるノードは、SDスイッチの第1のポートに接続され、TLP IDはbusO/devO/funcOである。ノードIDが2であるノードは下流ノードであり、そのMACアドレスはMAC_01である。ノードIDが2であるノードは、SDスイッチの第2のポートに接続され、TLP IDはbusl/devl/funclである。
0032
<障害検知およびハンドオーバ>
図14は、上流ノード1401、SDスイッチ(たとえば、それだけではないがOpenFlowスイッチ)1402、SDSWコントローラ(たとえば、それだけではないがOpenFlowコントローラ)1403および下流ノード(明瞭な説明のために省略されている)の間の障害検知およびハンドオーバのシーケンス図である。障害検知およびハンドオーバのプロセスは以下の通りである。
(1)一旦、ステップ1404において上流ノード1401に障害があると、リンクダウンネットワーク信号がSDスイッチ1402に送信されることになる。
(2)SDスイッチ1402は、リンクダウンネットワーク信号を受信すると、ステップ1405においてSDSWコントローラ1403に通知することになる。例のために、OpenFlowにおいて、OpenFlowスイッチはOpenFlowコントローラへOFPPS_LINK_DOWNメッセージを送信することになる。
(3)SDSWコントローラ1403は、SDスイッチ1402から通知を受信すると、ステップ1406において、ハンドオーバのための別の有効な上流ノードを見つけ、ステップ1407において、接続されている下流ノードのマスタTLPルーティング表を変更し、次いで、ステップ1408においてSDスイッチに通知することになる。
(4)SDスイッチ1402は、SDSWコントローラ1403から通知を受信すると、ステップ1409においてスレーブTLPルーティング表を変更することになる。その結果、接続されている下流ノードは、新規のグループIDとともに上流ノードにハンドオーバされる。
0033
本発明の好ましい実施形態が上記で説明され、図示されてきたが、これらは本発明の例示であり、限定するものと見なされるべきではないことを理解されたい。本発明の範囲から逸脱することなく、追加、省略、置換、および他の変更が可能である。したがって、本発明は前述の説明によって限定されるものと見なされるべきではなく、添付の特許請求の範囲の有効範囲によってのみ限定されるものである。
0034
101上流ノード
102下流ノード
103 下流ノード
104 上流ノード
105 下流ノード
106ソフトウェア定義ネットワーク(SDN)ボックス
201 上流ノード
202 下流ノード
203 下流ノード
204 上流ノード
205 下流ノード
206 SDNボックス
207 SDSWコントローラ
208 SDスイッチ
209 SDスイッチ
210 SDSWコントローラ
211 SDスイッチ
212 SDスイッチ
301 上流ノード
302中央処理装置(CPU)
303カプセル化/デカプセル化(ENCAP/DECAP)モジュール
304ネットワークインターフェースカード(NIC)
401 下流ノード
402メモリ
403 カプセル化/デカプセル化(ENCAP/DECAP)モジュール
404 ネットワークインターフェースカード(NIC)
501 SDスイッチ
502 RecvDモジュール
503 SendDモジュール
504 SendC(制御プレーンに送信する)モジュール
505 デカプセル化(DECAP)モジュール
506 カプセル化(ENCAP)モジュール
507パケットバッファ(PKT BUFFER)モジュール
508スレーブトランザクションレイヤパケット(TLP)ルーティング表操作モジュール
509 RecvC(制御プレーンから受信する)モジュール
601 ソフトウェア定義スイッチのコントローラ(SDSWコントローラ)
602 RecvSWモジュール
603 SendSWモジュール
604マスタTLPルーティング表操作モジュール
801 上流ノード
802 SDNボックス
803 下流ノード
1401 上流ノード
1402 SDスイッチ
1403 SDSWコントローラ