(57)【要約】【課題】実装のしやすさや保守性を維持しつつパケット転送装置の高性能化を図る。【解決手段】パケット転送装置１０のカーネルモジュール１１２内のパケット管理情報通知部１１２ａは、カーネル空間に配置された送信用のバッファ１１３に送信パケットが格納された場合、当該送信パケットの管理情報である送信パケット管理情報をユーザモジュール１１４の転送モジュール１１６に通知する。すると転送モジュール１１６の転送指示部１１６ａは、送信パケットを多重化して転送するための複数の転送先を当該送信パケット管理情報に基づいて決定して、当該複数の転送先への送信パケットの転送をカーネルモジュール１１２に指示する。カーネルモジュール１１２の送信部１１２ｂは、バッファ１１３に格納されている送信パケットを、指示された複数の転送先に対応する複数の通信路に多重化して送信する。【選択図】      図２
2011040960.tif 000002
【特許請求の範囲】
【請求項１】
パケットを複数の通信路に多重化して転送するパケット転送装置において、
パケット管理情報通知手段及び送信手段を含み、特権モードで動作するカーネルモジュールと、
転送指示手段を含む転送モジュールを備え、通常モードで動作するユーザモジュールと、
前記カーネルモジュールからアクセス可能なカーネル空間に配置された送信用のバッファであって、複数の通信路に多重化して転送されるべき送信パケットを一時格納するための送信用のバッファと
を具備し、
前記パケット管理情報通知手段は、前記送信用のバッファに前記送信パケットが格納された場合、当該送信パケットの管理情報である送信パケット管理情報を前記転送ジュールに通知し、
前記転送指示手段は、前記送信パケット管理情報が通知された場合、前記送信パケットを多重化して転送するための複数の転送先を当該送信パケット管理情報に基づいて決定して、当該複数の転送先への前記送信パケットの転送を前記カーネルモジュールに指示し、
前記送信手段は、前記転送の指示に応じて、前記送信用のバッファに格納されている前記送信パケットを指示された複数の転送先に対応する複数の通信路に多重化して送信する
ことを特徴とするパケット転送装置。
【請求項２】
前記ユーザモジュールからアクセス可能なユーザ空間に配置され、パケットの送信先となるノード装置毎に、当該ノード装置に送信パケットを多重化して転送するのに必要な複数の通信路に対応する複数の転送先を管理するための転送テーブルを更に具備し、
前記送信パケット管理情報は、当該送信パケット管理情報に対応する前記送信パケットの送信先を示す送信先アドレスを含み、
前記転送指示手段は、前記送信パケット管理情報に基づいて前記転送テーブルを参照することにより、当該送信パケット管理情報に含まれている前記送信先アドレスの示す送信先に対応する複数の転送先を決定する
ことを特徴とする請求項１記載のパケット転送装置。
【請求項３】
前記複数の通信路のそれぞれに対応して前記カーネル空間に配置された複数の受信用のバッファであって、対応する前記通信路を介して転送されて前記パケット転送装置で受信された受信パケットを一時格納するための複数の受信用のバッファを更に具備し、
前記転送モジュールはパケット破棄指示手段を更に含み、
前記パケット管理情報通知手段は、前記複数の受信用のバッファのいずれかに受信パケットが格納された場合、当該受信パケットの管理情報である受信パケット管理情報を前記転送ジュールに通知し、
前記パケット破棄指示手段は、前記受信パケット管理情報が通知された場合、当該受信パケット管理情報に対応する前記受信パケットが後着パケットであるかを当該受信パケット管理情報に基づいて判定し、後着パケットであるならば当該受信パケットの破棄を前記カーネルモジュールに指示する
ことを特徴とする請求項１または２に記載のパケット転送装置。
【請求項４】
前記カーネルモジュールは、前記パケット破棄指示手段による前記破棄の指示に応じて、指示された受信パケットを対応する前記受信用のバッファから破棄するパケット破棄手段を更に含み、
前記転送指示手段は、前記受信パケットが後着パケットでないと前記パケット破棄指示手段によって判定された場合、前記カーネルモジュールに対して当該受信パケットの送信を指示し、
前記送信手段は、前記送信の指示に応じて、指示された受信パケットを予め定められている通信ポートから送信する
ことを特徴とする請求項３記載のパケット転送装置。
【請求項５】
前記ユーザ空間に配置され、前記受信パケット管理情報に対応する前記受信パケットの受信に関する情報を記録するための受信記録テーブルを更に具備し、
前記転送モジュールは、前記受信パケット管理情報が通知された場合、当該受信パケット管理情報に対応する前記受信パケットの受信に関する情報を前記受信記録テーブルに記録する受信記録手段を更に含み、
前記パケット破棄指示手段は、前記受信パケット管理情報に基づいて前記受信記録テーブルを参照することにより、前記受信パケットが後着パケットであるかを判定する
ことを特徴とする請求項３記載のパケット転送装置。
【請求項６】
前記複数の通信路に多重化して送信されるパケットには、当該パケットがそれぞれ転送される通信路に対応する転送先を示す転送先アドレス及び転送元を示す転送元アドレスと、当該パケットに固有の情報とが付加されており、
前記受信パケット管理情報は、当該受信パケット管理情報に対応する前記受信パケットに付加されている、当該受信パケットに固有の情報を含み、
前記受信記録テーブル記録される前記受信パケットを表す情報は、当該受信パケットに付加されている当該受信パケットに固有の情報を含み、
前記パケット破棄指示手段は、前記パケット管理情報通知手段によって通知された受信パケット管理情報に基づいて前記受信記録テーブルを参照し、当該通知された受信パケット管理情報に含まれているのと同一の前記固有の情報を含む他の受信パケットの受信に関する情報の有無に基づいて、当該通知された受信パケット管理情報に対応する受信パケットが後着パケットであるかを判定する
ことを特徴とする請求項５記載のパケット転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを複数の通信路に多重化して転送するパケット転送装置に関する。
【背景技術】
【０００２】
近年、複数の通信路にそれぞれ対応したポートを有し、同一のパケットをそれらのポートを介して複数の通信路に多重化して転送するパケット転送装置が提案されている。例えば特許文献１は、このような同一のパケットを複数の通信路に多重化して転送する基本的な仕組み（つまり通信路多重化の仕組み）を開示している。通信路多重化の仕組みを有するパケット転送装置の導入により、通信路の信頼性を全体として向上させることが可能となる。
【０００３】
ここで、通信路多重化の仕組みを有するパケット転送装置が受信側のパケット転送装置として機能するものとする。受信側のパケット転送装置は、他の送信側のパケット転送装置によって複数の通信路に多重化して転送されたパケットを受信する。受信側のパケット転送装置は、最初に受信したパケットのみを取り込み、後で受信したパケットは破棄する、いわゆる後着破棄を行う。例えば特許文献２は、このような後着破棄の仕組みを開示している。
【０００４】
さて、多重化のための転送先の判断や後着破棄の判断は、実装のしやすさや、製品保守のしやすさを考慮すると、ＯＳのユーザモジュールで実現されることが好ましい。以下、この種の判断がＯＳのユーザモジュールで実現される従来のパケット転送装置におけるパケット送受信処理について、送信側のパケット転送装置の送信処理と、受信側のパケット転送装置の受信処理とに分けて順に説明する。
【０００５】
ここでは、通信路を２重化する場合を想定している。送信側のパケット転送装置は４つのバッファＡ１，Ｂ１，Ｃ１，Ｄ１を有している。バッファＡ１，Ｃ１，Ｄ１の領域は、ＯＳのカーネル空間内に割り当てられ、バッファＢ１の領域はＯＳのユーザ空間内に割り当てられている。バッファＣ１，Ｄ１は２重化された通信路に対応する。送信側のパケット転送装置のユーザ空間内には、通信路の多重化を制御するのに必要な転送テーブルの領域も割り当てられている。
【０００６】
受信側のパケット転送装置は５つのバッファＡ２，Ｂ２，Ｃ２，Ｄ２，Ｅ２を有している。バッファＡ２，Ｂ２，Ｅ２の領域は、ＯＳのカーネル空間内に割り当てられ、バッファＣ２，Ｄ２の領域はＯＳのユーザ空間内に割り当てられている。バッファＡ２，Ｂ２は２重化された通信路に対応する。受信側のパケット転送装置のユーザ空間内には、受信記録テーブルの領域も割り当てられている。
【０００７】
（１）送信処理
１ａ）転送モジュールは、ＯＳの特権モードで動作するカーネルモジュールにバッファ入力システムコールを発行し、バッファＢ１への入力完了待ち状態となる。
【０００８】
１ｂ）この状態で、パケット転送装置の外部、たとえばサーバコンピュータのようなノードから送られたパケットがバッファＡ１に格納されたものとする。
【０００９】
１ｃ）カーネルモジュールはバッファＡ１の内容をバッファＢ１にコピーし、しかる後に転送モジュールに制御を戻す。すると転送モジュールにおけるバッファＢ１への入力完了ち状態が解除される。
【００１０】
１ｄ）転送モジュールは転送テーブルに基づき、バッファＢ１に格納されているパケットの転送先を決定する。
【００１１】
１ｅ）転送モジュールは、カーネルモジュールに対してバッファＢ１に格納されているパケットの転送を、決定された転送先毎に依頼する。
【００１２】
１ｆ）カーネルモジュールは、転送モジュールからの転送依頼に従って、バッファＢ１に格納されているパケットを転送先毎に対応するバッファ、例えばバッファＣ１，Ｄ１にコピーし、当該バッファＣ１，Ｄ１にコピーされたパケットを、対応するポートから対応する通信路に送信する。
【００１３】
（２）受信処理
２ａ）転送モジュールがカーネルモジュールにバッファ入力システムコールを発行し、バッファＣ２への入力完了待ち状態及びバッファＤ２への入力完了待ち状態となる。
【００１４】
２ｂ）この状態で、パケット転送装置の外部、例えば通信路を介して転送されたパケットがバッファＡ２に格納されたものとする。
【００１５】
２ｃ）カーネルモジュールはバッファＡ２の内容をバッファＣ２にコピーし、しかる後に転送モジュールに制御を戻す。すると転送モジュールにおけるバッファＣ２への入力完了待ち状態が解除される。このとき転送モジュールは、受信記録テーブルにパケット受信に関する情報を記録する。
【００１６】
２ｄ）転送モジュールは受信記録テーブルに基づき、バッファＣ２の内容を受け取るか、或いは破棄するかを決定する。この例では、バッファＣ２の内容は先着である。この場合、転送モジュールはバッファＣ２の内容を受け取ることを決定する。
【００１７】
２ｅ）転送モジュールは受け取ることに決定したバッファＣ２の内容を、予め定められた送信先に対して転送するため、カーネルモジュールに対してその旨を指示する。
【００１８】
２ｆ）カーネルモジュールは転送モジュールからの指示に従って、バッファＣ２の内容をバッファＥ２にコピーし、当該バッファＥ２の内容を予め定められた送信先に送信する。
【００１９】
２ｇ）その後、別の通信路を介して転送されたパケットがバッファＢ２に格納されたものとする。
【００２０】
２ｈ）カーネルモジュールはバッファＢ２の内容をバッファＤ２にコピーし、しかる後に転送モジュールに制御を戻す。すると転送モジュールにおけるバッファＤ２への入力完了待ち状態が解除される。このとき転送モジュールは、受信記録テーブルにパケット受信に関する情報を記録する。
【００２１】
２ｉ）転送モジュールは受信記録テーブルに基づき、バッファＤ２の内容を受け取るか、或いは破棄するかを決定する。この例では、バッファＤ２の内容は後着である。この場合、転送モジュールはバッファＤ２の内容を破棄することを決定する。
【００２２】
２ｊ）転送モジュールはバッファＤ２の内容を破棄すると共に、カーネルモジュールに対してバッファＢ２の内容の破棄を指示する。
【００２３】
２ｋ）カーネルモジュールは転送モジュールからの指示に従ってバッファＢ２の内容を破棄する。
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２０００−２６１４７８号公報
【特許文献２】国際公開第０３／０１３１０２号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００２５】
通信路多重化の仕組みを有するパケット転送装置を実現する際には、パケットの転送性能を考慮する必要がある。上述の例のように通信路を２重化するパケット転送装置は、多重化しないパケット転送装置に比べて、性能がほぼ２分の１となる。同様に、通信路を３重化するパケット転送装置は、多重化しないパケット転送装置に比べて、性能がほぼ３分の１となる。
【００２６】
しかも、上述のパケット転送装置のように、多重化のための転送先の判断や後着破棄の判断をＯＳのユーザモジュールで実現する場合、カーネル空間内のバッファとユーザ空間内のバッファとの間で多くのコピー（以下、バッファコピーと称する）が必要となる。このカーネル空間とユーザ空間の間のバッファコピーには通常多大な処理時間を要するため、更に性能が低下する。
【００２７】
その一方、実装のしやすさや、製品保守のしやすさを考慮すると、多重化のための転送先の判断等をＯＳのユーザモジュールで実現することは好ましい。
【００２８】
本発明は上記事情を考慮してなされたものでその目的は、実装のしやすさや保守性を維持しつつ高性能化が図れるパケット転送装置を提供することにある。
【課題を解決するための手段】
【００２９】
本発明の１つの観点によれば、パケットを複数の通信路に多重化して転送するパケット転送装置が提供される。このパケット転送装置は、パケット管理情報通知手段及び送信手段を含み、特権モードで動作するカーネルモジュールと、転送指示手段を含む転送モジュールを備え、通常モードで動作するユーザモジュールと、前記カーネルモジュールからアクセス可能なカーネル空間に配置された送信用のバッファであって、複数の通信路に多重化して転送されるべき送信パケットを一時格納するための送信用のバッファとを具備する。前記パケット管理情報通知手段は、前記送信用のバッファに前記送信パケットが格納された場合、当該送信パケットの管理情報である送信パケット管理情報を前記転送モジュールに通知する。前記転送指示手段は、前記送信パケット管理情報が通知された場合、前記送信パケットを多重化して転送するための複数の転送先を当該送信パケット管理情報に基づいて決定して、当該複数の転送先への前記送信パケットの転送を前記カーネルモジュールに指示し、前記送信手段は、前記転送の指示に応じて、前記送信用のバッファに格納されている前記送信パケットを指示された複数の転送先に対応する複数の通信路に多重化して送信する。
【発明の効果】
【００３０】
本発明によれば、パケット転送装置のユーザモジュールで多重化のための転送先の決定等を実現することにより当該パケット転送装置の実装のしやすさや保守性を維持しつつ、当該パケット転送装置におけるカーネルモジュールとユーザモジュールとの間のバッファコピーを不要とすることができる。これによりパケット転送装置の高性能化が図れる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態に係るパケット転送装置を含む通信システムの構成を示すブロック図。
【図２】同実施形態におけるパケット転送装置の構成のうち、当該パケット転送装置が送信側として機能するのに必要な構成を示すブロック図。
【図３】同実施形態におけるパケット転送装置の構成のうち、当該パケット転送装置が受信側として機能するのに必要な構成を示すブロック図。
【図４】同実施形態で適用される転送テーブルのデータ構造例を示す図。
【図５】同実施形態で適用される受信記録テーブルのデータ構造例を示す図。
【図６】同実施形態において、パケット転送装置が送信側として機能する場合の当該パケット転送装置内のカーネルモジュール及び転送モジュールの動作シーケンスを示す図。
【図７】同実施形態において、パケット転送装置が受信側として機能する場合の当該パケット転送装置内のカーネルモジュール及び転送モジュールの動作シーケンスを示す図。
【図８】同実施形態において、パケット転送装置が受信側として機能する場合の当該パケット転送装置内のカーネルモジュール及び転送モジュールの動作シーケンスを示す図。
【図９】ノード装置から送信される他のノード装置宛てのパケットＰＫのフォーマット例を示す図。
【図１０】図９に示されるパケットＰＫを２つの通信路上に多重化して転送するのに用いられるパケットＰＫＡ，ＰＫＢのフォーマット例を示す図。
【発明を実施するための形態】
【００３２】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るパケット転送装置を含む通信システムの構成を示すブロック図である。
【００３３】
図１において、２つのパケット転送装置１０，２０は、ネットワーク３０に接続されている。ネットワーク３０は、通信路３０１及び３０２を含む複数の通信路から構成される。
【００３４】
パケット転送装置１０，２０は、それぞれ、例えばサーバコンピュータのようなノード装置Ｎ１，Ｎ２と接続されている。パケット転送装置１０は、通信路３０１，３０２とそれぞれ接続される通信ポート１０１（ＰＡ１），１０２（ＰＢ１）、及びノード装置Ｎ１と接続される通信ポート１０３（ＰＣ１）を有している。通信ポート１０１，１０２は、例えばＩＰアドレスＩＰA1，ＩＰB1を持つ。ノード装置Ｎ１は、例えばＩＰアドレスＩＰN1を持つ。
【００３５】
パケット転送装置２０は、通信路３０１，３０２とそれぞれ接続される通信ポート２０１（ＰＡ２），２０２（ＰＢ２）、及びノード装置Ｎ２と接続される通信ポート２０３（ＰＣ２）を有している。通信ポート２０１，２０２は、例えばＩＰアドレスＩＰA2，ＩＰB2を持つ。ノード装置Ｎ２は、例えばＩＰアドレスＩＰN2を持つ。
【００３６】
なお、パケット転送装置１０，２０が、それぞれ、ローカルエリアネットワークのようなネットワークによってノード装置Ｎ１，Ｎ２と接続されていてもよい。この場合、ノード装置Ｎ１はローカルエリアネットワークを介してパケット転送装置１０の通信ポート１０３と接続される。同様に、ノード装置Ｎ２はローカルエリアネットワークを介してパケット転送装置２０の通信ポート１０３と接続される。また、パケット転送装置１０，２０が通信路３０１，３０２以外の通信路と接続される通信ポートを更に含んでいても構わない。
【００３７】
図２は、パケット転送装置１０の構成のうち、当該パケット転送装置１０が送信側として機能するのに必要な構成を示すブロック図である。  
図２において、パケット転送装置１０ではＯＳ（オペレーティングシステム）のカーネル１１１が動作する。カーネル１１１はカーネルモジュール１１２を含む。カーネルモジュール１１２は、例えばカーネル１１１内で動作するカーネルプロセスによって実現されるものとする。
【００３８】
カーネルモジュール１１２からアクセス可能なカーネル空間には送信用のバッファ１１３が配置されている。バッファ１１３は、通信ポート１０３に対応付けられており、外部（例えばノード装置Ｎ１）から送信されて当該通信ポート１０３で受信された送信パケットを一時格納するのに用いられる。バッファ１１３は通信ポート１０１，１０２にも対応付けられている。バッファ１１３に格納された送信パケットは、通信ポート１０１，１０２を介して通信路３０１，３０２に送出されることにより多重化される。即ち送信パケットは、通信路３０１，３０２によって多重化される。
【００３９】
カーネルモジュール１１２は、パケット管理情報通知部１１２ａ及び送信部１１２ｂを含む。パケット管理情報通知部１１２ａは、通信ポート１０３で受信されたパケット（ここでは送信パケット）がバッファ１１３に格納された場合、当該送信パケットの管理情報、つまり当該送信パケットを管理するのに用いられる送信パケット管理情報を、後述する転送モジュール１１６に通知する。この送信パケット管理情報の詳細については後述する。送信部１１２ｂは転送モジュール１１６からの転送指示に応じ、バッファ１１３に格納されている送信パケットを、当該指示によって指定された多重化された転送先に送信するための送信パケットに変換し、その変換された送信パケットを当該多重化された転送先に、対応する通信路を介して送信する。
【００４０】
カーネル１１１の上のユーザ空間では、ユーザモジュール１１４がユーザプロセスとして動作する。ユーザモジュール１１４は、転送テーブル１１５及び転送モジュール１１６を含む。
【００４１】
転送テーブル１１５はユーザ空間に配置され、パケットの送信先となるノード装置毎に、当該ノード装置に送信パケットを多重化して転送するのに必要な複数の通信路に対応する転送先を管理するのに用いられる。転送モジュール１１６は、ユーザプロセスに含まれている転送プロセスによって実現されるものとする。転送モジュール１１６は、転送指示部１１６ａを含む。
【００４２】
転送指示部１１６ａは、パケット管理情報通知部１１２ａから通知される送信パケット管理情報に基づき、送信パケットを多重化して転送するための転送先を決定する。転送指示部１１６ａは、決定した転送先に送信パケットを多重化して転送することをカーネルモジュール１１２に指示する。
【００４３】
図３は、パケット転送装置２０の構成のうち、当該パケット転送装置２０が受信側として機能するのに必要な構成を示すブロック図である。  
図３において、パケット転送装置２０では図２に示されるカーネル１１１に相当するカーネル２１１が動作する。カーネル２１１はカーネルモジュール２１２を含んでいる。カーネルモジュール２１２は、図２に示されるカーネルモジュール１１２に相当する。
【００４４】
カーネルモジュール２１２からアクセス可能なカーネル空間には受信用のバッファ２１３ａ，２１３ｂが配置されている。バッファ２１３ａ，２１３ｂは、通信ポート２０１，２０２に対応付けられており、外部から通信路３０１，３０２を介して送信されて当該通信ポート２０１，２０２で受信されたパケット（つまり受信パケット）を一時格納するのに用いられる。バッファ２１３ａ，２１３ｂは通信ポート２０３にも対応付けられている。
【００４５】
カーネルモジュール２１２は、パケット管理情報通知部２１２ａ及びパケット破棄部２１２ｃを含む。パケット管理情報通知部２１２ａは図２に示されるパケット管理情報通知部１１２ａに相当する。パケット管理情報通知部２１２ａは、通信ポート２０１または２０２で受信された受信パケットが、その通信ポートに対応するバッファ２１３ａまたは２１３ｂに格納された場合、当該受信パケットの管理情報、つまり当該受信パケットを管理するのに用いられる受信パケット管理情報を、後述する転送モジュール２１６に通知する。
【００４６】
パケット破棄部２１２ｃは、転送モジュール２１６から受信パケットを破棄することを指示するためのパケット破棄指示が与えられた場合、指示された受信パケットをバッファ２１３ａ，２１３ｂのうちの対応するバッファから破棄する。
【００４７】
カーネル２１１上のユーザ空間では、図２に示されるユーザモジュール１１４に相当するユーザモジュール２１４が動作する。ユーザモジュール２１４は、転送モジュール２１６及び受信記録テーブル２１７を含む。受信記録テーブル２１７はユーザ空間に配置され、受信パケット管理情報によって管理される受信パケットの受信に関する情報を記録するのに用いられる。転送モジュール２１６は図２に示される転送モジュール１１６に相当する。転送モジュール２１６は、パケット破棄指示部２１６ｂ及び受信記録部２１６ｃを含む。
【００４８】
パケット破棄指示部２１６ｂは、パケット管理情報通知部２１２ａによって受信パケット管理情報が通知された場合、当該受信パケット管理情報によって管理される受信パケットが後着パケットであるかを当該受信パケット管理情報に基づいて判定する。パケット破棄指示部２１６ｂは、受信パケットが後着パケットであると判定した場合、当該受信パケットを破棄することをカーネルモジュール２１２に指示する。
【００４９】
受信記録部２１６ｃは、パケット管理情報通知部２１２ａによって受信パケット管理情報が通知された場合、その際の時刻を受信時刻として示す時刻情報と、当該受信パケット管理情報に含まれている情報とを対応付けて受信記録テーブル２１７に記録する。
【００５０】
なお、図２では省略されているが、カーネルモジュール１１２は、図３に示されるパケット破棄部２１２ｃに相当するパケット破棄部を含み、カーネルモジュール１１２からアクセス可能なカーネル空間には、図３に示されるバッファ２１３ａ，２１３ｂに相当する受信用のバッファが配置されている。一方、転送モジュール１１６は、図３に示されるパケット破棄指示部２１６ｂ及び受信記録部２１６ｃにそれぞれ相当するパケット破棄指示部及び受信記録部を含み、ユーザモジュール１１４からアクセス可能なユーザ空間には、図３に示される受信記録テーブル２１７に相当する受信記録テーブルが配置されている。
【００５１】
同様に、図３では省略されているが、カーネルモジュール２１２は、図２に示される送信部１１２ｂに相当する送信部を含み、ユーザモジュール２１４からアクセス可能なユーザ空間には、図２に示される転送テーブル１１５に相当する転送テーブルが配置されている。一方、転送モジュール２１６は、図２に示される転送指示部１１６ａに相当する転送指示部を含み、ユーザモジュール２１４からアクセス可能なユーザ空間には、図２に示される転送テーブル１１５に相当する転送テーブルが配置されている。
【００５２】
図４は、転送テーブル１１５のデータ構造例を示す。図４の例では、転送テーブル１１５に保持されるエントリ情報の１つとして、パケットの送信先となるノード装置がノード装置Ｎ２である場合のエントリ情報が示されている。このエントリ情報は、ノード装置Ｎ２を示す情報と、ノード装置Ｎ２宛てにパケットを送信する場合の多重化された転送先を示す情報とを含む。ノード装置Ｎ２を示す情報には、当該ノード装置Ｎ２のＩＰアドレスＩＰN2が用いられる。多重化された転送先を示す情報には、ノード装置Ｎ２が接続されているパケット転送装置２０の通信ポートのうち通信路３０１，３０２と接続される通信ポート２０１（ＰＡ２），２０２（ＰＢ２）のＩＰアドレスＩＰA2，ＩＰB2が用いられる。
【００５３】
図５は、受信記録テーブル２１７のデータ構造例を示す。受信記録テーブル２１７に保持されるエントリ情報は、対応する受信パケット管理情報によって管理される受信パケットの受信時刻を示す時刻情報と、当該受信パケットのシーケンス番号と、転送先のパケット転送装置の通信ポートのＩＰアドレス（以下、転送先アドレスと称する）と、転送元のパケット転送装置の通信ポートのＩＰアドレス（以下、転送元アドレスと称する）と、送信先のノード装置のＩＰアドレス（以下、送信先アドレスと称する）と、送信元のノード装置のＩＰアドレス（以下、送信元アドレスと称する）とを含む。本実施形態において、シーケンス番号、転送先アドレス、転送元アドレス、送信先アドレス及び送信元アドレスは、受信パケット管理情報に含まれている。
【００５４】
図５の例では、受信記録テーブル２１７のエントリｉには、時刻Ｔｘを示す時刻情報、シーケンス番号Ｓｎ、転送先アドレスＩＰA2、転送元ＩＰアドレスＩＰA1、送信元アドレスＩＰN2及び送信元アドレスＩＰN1が保持されている。また、受信記録テーブル２１７のエントリｉ＋１には、時刻Ｔｙを示す時刻情報、シーケンス番号Ｓｎ、転送先アドレスＩＰB2、転送元ＩＰアドレスＩＰB1、送信元アドレスＩＰN2及び送信元アドレスＩＰN1が保持されている。ここで、時刻Ｔｙは時刻Ｔｘよりも遅れているものとする。
【００５５】
次に、図１に示される通信システムにおける動作について、図６乃至図１０を参照して説明する。図６は、パケット転送装置１０が送信側として機能する場合の当該パケット転送装置１０内のカーネルモジュール１１２及び転送モジュール１１６の動作シーケンスを示す図、図７及び図８は、パケット転送装置２０が受信側として機能する場合の当該パケット転送装置２０内のカーネルモジュール２１２及び転送モジュール２１６の動作シーケンスを示す図である。図９は、ノード装置Ｎ１から送信される他のノード装置Ｎ２宛てのパケットＰＫのフォーマット例を示し、図１０は、図９に示されるノード装置Ｎ２宛てのパケットＰＫを通信路３０１，３０２上に多重化してパケット転送装置１０からパケット転送装置２０に転送するのに用いられるパケットＰＫＡ，ＰＫＢのフォーマット例を示す。
【００５６】
まず、パケット転送装置１０の転送モジュール１１６がカーネルモジュール１１２にパケット管理情報取得システムコールを発行したものとする（ステップ６０１）。これにより転送モジュール１１６は、パケット管理情報（ここでは送信パケット管理情報）の入力完了待ち状態となる（ステップ６０２）。このような状態で、ノード装置Ｎ１からパケット転送装置１０に、図９に示されるフォーマットのノード装置Ｎ２宛てのパケットＰＫが送信されたものとする。このノード装置Ｎ２宛てのパケットＰＫは、ヘッダ部と、ペイロードと呼ばれるデータ部とから構成される。ヘッダ部は、送信先アドレスとしてノード装置Ｎ２のＩＰアドレスＩＰN2を含み、送信元アドレスとしてノード装置Ｎ１のＩＰアドレスＩＰN1を含むＴＣＰ／ＩＰヘッダ部である。
【００５７】
ノード装置Ｎ１から送信されたパケットＰＫ（つまり送信パケットＰＫ）は、パケット転送装置１０の通信ポート１０３で受信されてバッファ１１３に格納される。カーネルモジュール１１２のパケット管理情報通知部１１２ａは、バッファ１１３にパケットＰＫが格納されると、つまりパケットＰＫが受信されると（ステップ６０３）、当該パケットＰＫに対応する送信パケット管理情報を転送モジュール１１６に通知する（ステップ６０４）。ここでは、パケットＰＫのヘッダ部に含まれている送信先アドレスＩＰN2が送信パケット管理情報として転送モジュール１１６に通知される。すると転送モジュール１１６におけるパケット管理情報の入力完了待ち状態が解除される（ステップ６０５）。
【００５８】
転送モジュール１１６の転送指示部１１６ａは、パケット管理情報通知部１１２ａから通知された送信パケット管理情報に含まれている送信先アドレスＩＰN2に基づいて、図４に示されるデータ構造を有する転送テーブル１１５を参照する（ステップ６０６）。これにより転送指示部１１６ａは、送信先アドレスＩＰN2に対応付けて転送テーブル１１５のエントリに保持されているアドレスＩＰA2，ＩＰB2を、パケットＰＫを多重化して転送するための転送先アドレスとして決定する（ステップ６０７）。このアドレスＩＰA2，ＩＰB2は、送信先アドレスＩＰN2で指定されるノード装置Ｎ２が接続されているパケット転送装置２０の通信ポート２０１，２０２のＩＰアドレスである。
【００５９】
転送指示部１１６ａは、バッファ１１３に格納されているパケットＰＫを、自身が決定した転送先アドレスＩＰA2，ＩＰB2の示すパケット転送装置２０の通信ポート２０１，２０２に多重化して転送することをカーネルモジュール１１２に指示する（ステップ６０８）。カーネルモジュール１１２の送信部１１２ｂは転送指示部１１６ａからの転送指示に応じ、バッファ１１３に格納されているパケットＰＫを、当該転送指示によって指示された転送先アドレスＩＰA2，ＩＰB2の示すパケット転送装置２０の通信ポート２０１，２０２に多重化して転送するための、図１０に示すフォーマットのパケットＰＫＡ，ＰＫＢに変換する（ステップ６０９）。
【００６０】
パケットＰＫＡはヘッダ部とデータ部とから構成される。パケットＰＫＡのヘッダ部は、送信先アドレスとしてパケット転送装置２０の通信ポート２０１のＩＰアドレスＩＰA2を含み、送信元アドレスとしてパケット転送装置１０の通信ポート１０１のＩＰアドレスＩＰA1を含むＴＣＰ／ＩＰヘッダ部である。パケットＰＫＡのヘッダ部は更にシーケンス番号Ｓｎを含む。このシーケンス番号Ｓｎは、例えばシリアル番号である。パケットＰＫＡのデータ部は、パケットＰＫを含む。このようにパケットＰＫＡは、パケットＰＫをカプセル化して含む、パケット転送装置２０の通信ポート２０１宛ての送信パケットである。
【００６１】
同様に、パケットＰＫＢはヘッダ部とデータ部とから構成される。パケットＰＫＢのヘッダ部は、送信先アドレスとしてパケット転送装置２０の通信ポート２０２のＩＰアドレスＩＰB2を含み、送信元アドレスとしてパケット転送装置１０の通信ポート１０２のＩＰアドレスＩＰB1を含むＴＣＰ／ＩＰヘッダ部である。パケットＰＫＢのヘッダ部は、パケットＰＫＡに含まれているのと同一のシーケンス番号Ｓｎを更に含む。パケットＰＫＢのデータ部は、パケットＰＫを含む。このようにパケットＰＫＢは、パケットＰＫをカプセル化して含む、パケット転送装置２０の通信ポート２０２宛ての送信パケットである。
【００６２】
上述のように、パケットＰＫから変換されるパケットＰＫＡ，ＰＫＢのヘッダ部は、同一のシーケンス番号Ｓｎを含む。したがって、シーケンス番号Ｓｎは、パケットＰＫに固有の情報であるといえる。そこで、シーケンス番号Ｓｎに代えてパケットＰＫに固有の識別情報を用いることも可能である。
【００６３】
なお、以降の説明では、パケットＰＫの送信先アドレス及び送信元アドレスと区別するために、パケットＰＫＡ，ＰＫＢのヘッダ部、つまりパケットＰＫに付加されたヘッダ部の送信先アドレス及び送信元アドレスを、それぞれ転送先アドレス及び転送元アドレスと称する。
【００６４】
送信部１１２ｂは、パケットＰＫＡ，ＰＫＢをそれぞれ通信ポート１０１，１０２から通信路３０１，３０２上に送信する（ステップ６１０）。これにより、パケットＰＫが通信路３０１，３０２で多重化されてパケット転送装置２０に転送される。
【００６５】
一方、パケット転送装置２０の転送モジュール２１６がカーネルモジュール２１２にパケット管理情報取得システムコールを発行し（ステップ７０１）、バッファ２１３ａ，２１３ｂにそれぞれ対応する受信パケットの管理情報（受信パケット管理情報）の入力完了待ち状態となったものとする（ステップ７０２）。このような状態で、パケット転送装置１０から通信路３０１，３０２を介して転送されたパケット転送装置２０の通信ポート２０１，２０２宛てのパケットＰＫＡ，ＰＫＢのうちの一方、例えばパケットＰＫＡがパケット転送装置２０に先に到達したものとする。
【００６６】
パケット転送装置２０に到達したパケットＰＫＡは、当該パケット転送装置２０の通信ポート２０１で受信されてバッファ２１３ａに格納される。カーネルモジュール２１２のパケット管理情報通知部２１２ａは、バッファ２１３ａにパケットＰＫＡ（つまり受信パケットＰＫＡ）が格納されると（ステップ７０３）、当該パケットＰＫＡに対応する受信パケット管理情報を転送モジュール２１６に通知する（ステップ７０４）。ここでは、パケットＰＫＡのヘッダ部の情報である、シーケンス番号Ｓｎ、転送先アドレスＩＰA2及び転送元アドレスＩＰA1と、パケットＰＫＡのデータ部にカプセル化されているパケットＰＫのヘッダ部の情報である、送信先アドレスＩＰN2及び送信元アドレスＩＰN1とを含む情報が、受信パケット管理情報として転送モジュール２１６に通知される。すると、転送モジュール２１６におけるバッファ２１３ａに対応するパケット管理情報の入力完了待ち状態が解除される（ステップ７０５）。
【００６７】
転送モジュール２１６の受信記録部２１６ｃは、パケット管理情報通知部２１２ａから通知されたパケットＰＫＡに対応する受信パケット管理情報に含まれている、シーケンス番号Ｓｎ、転送先アドレスＩＰA2、転送元アドレスＩＰA1、送信先アドレスＩＰN2、送信元アドレスＩＰN1を、その際の時刻Ｔｘを受信時刻として示す情報と対応付けて受信記録テーブル２１７に記録する（ステップ７０６）。このように受信記録部２１６ｃは、パケット管理情報通知部２１２ａから通知されたパケットＰＫＡに対応する受信パケット管理情報に基づき、当該パケットＰＫＡの受信に関する情報を受信記録テーブル２１７に記録する。このとき、受信記録テーブル２１７には、パケットＰＫＡと同時にパケット転送装置１０から送信されたパケットＰＫＢの受信に関する情報、つまりパケットＰＫＡに含まれているのと同一のシーケンス番号Ｓｎを含む他のパケットの受信に関する情報は記録されていない。
【００６８】
一方、転送モジュール２１６のパケット破棄指示部２１６ｂは、パケット管理情報通知部２１２ａから通知されたパケットＰＫＡに対応する受信パケット管理情報に基づいて受信記録テーブル２１７を参照する（ステップ７０７）。ここではパケット破棄指示部２１６ｂは、受信パケット管理情報に含まれているシーケンス番号Ｓｎに基づいて受信記録テーブル２１７を参照する。そしてパケット破棄指示部２１６ｂは、パケットＰＫＡに含まれているのと同一のシーケンス番号Ｓｎを含む他のパケットの受信に関する情報が既に記録されているか、つまりをパケットＰＫＡは後着パケットであるかを判定する（ステップ７０８）。なお、ステップ７０７，７０８が、ステップ７０６と並行して、或いはステップ７０６よりも先に実行されても構わない。
【００６９】
この例では、ステップ７０８の判定はＮｏとなる。この場合、パケット破棄指示部２１６ｂは、パケット管理情報通知部２１２ａから通知された送信パケット管理情報によって管理されるパケットＰＫＡは先着パケットであるとして、当該パケットＰＫＡを受け取ることを決定する（ステップ７０９）。すると転送モジュール２１６の図示せぬ転送指示部は、先着のパケットＰＫＡを破棄せずに予め定められた送信先である通信ポート２０３に転送するために、カーネルモジュール２１２に対してバッファ２１３ａに格納されている当該パケットＰＫＡの送信を指示する（ステップ７１０）。
【００７０】
カーネルモジュール２１２の図示せぬ送信部は、転送モジュール２１６の転送指示部からの指示に応じて、バッファ２１３ａに格納されているパケットＰＫＡのデータ部にカプセル化されているパケットＰＫを通信ポート２０３から送信する。パケット転送装置２０の通信ポート２０３から送信されたパケットＰＫは、当該パケットＰＫのヘッダ部に含まれている送信先アドレスＩＰN2で示されるノード装置Ｎ２で受信される。
【００７１】
その後、パケット転送装置１０から通信路３０１，３０２を介して転送されたパケット転送装置２０の通信ポート２０１，２０２宛てのパケットＰＫＡ，ＰＫＢのうちのパケットＰＫＢが、パケットＰＫＡよりも遅れてパケット転送装置２０に到達したものとする。
【００７２】
パケット転送装置２０に到達したパケットＰＫＢは、当該パケット転送装置２０の通信ポート２０２で受信されてバッファ２１３ｂに格納される。カーネルモジュール２１２のパケット管理情報通知部２１２ａは、バッファ２１３ｂにパケットＰＫＢ（つまり受信パケットＰＫＢ）が格納されると（ステップ８０３）、当該パケットＰＫＢに対応する受信パケット管理情報を転送モジュール２１６に通知する（ステップ８０４）。ここでは、パケットＰＫＢのヘッダ部の情報である、シーケンス番号Ｓｎ、転送先アドレスＩＰB2及び転送元アドレスＩＰB1と、パケットＰＫＡのデータ部にカプセル化されているパケットＰＫのヘッダ部の情報である、送信先アドレスＩＰN2及び送信元アドレスＩＰN1とを含む情報が、受信パケット管理情報として転送モジュール２１６に通知される。すると、転送モジュール２１６におけるバッファ２１３ｂに対応するパケット管理情報の入力完了待ち状態が解除される（８０５）。
【００７３】
転送モジュール２１６の受信記録部２１６ｃは、パケット管理情報通知部２１２ａから通知されたパケットＰＫＢに対応する受信パケット管理情報に含まれている、シーケンス番号Ｓｎ、転送先アドレスＩＰB2、転送元アドレスＩＰB1、送信先アドレスＩＰN2、送信元アドレスＩＰN1を、その際の時刻Ｔｙを受信時刻として示す情報と対応付けて受信記録テーブル２１７に記録する（ステップ８０６）。図５は、このときの受信記録テーブル２１７の状態を示す。
【００７４】
一方、転送モジュール２１６のパケット破棄指示部２１６ｂは、パケット管理情報通知部２１２ａから通知されたパケットＰＫＢに対応する受信パケット管理情報に基づいて受信記録テーブル２１７を参照する（ステップ８０７）。そしてパケット破棄指示部２１６ｂは、パケットＰＫＢに含まれているのと同一のシーケンス番号Ｓｎを含む他のパケットの受信に関する情報が既に記録されているかを判定する（ステップ８０８）。上述のステップ８０３〜８０８は、先のステップ７０３〜７０８に相当する。
【００７５】
この例では、ステップ８０８の判定はＹｅｓとなる。この場合、パケット破棄指示部２１６ｂは、パケット管理情報通知部２１２ａから通知された送信パケット管理情報によって管理されるパケットＰＫＢは後着パケットであるとして、当該パケットＰＫＢを破棄することを決定する（ステップ８０９）。そこでパケット破棄指示部２１６ｂは、カーネルモジュール２１２に対してバッファ２１３ｂに格納されている後着のパケットＰＫＢを破棄することをカーネルモジュール２１２に対して指示する（ステップ８１０）。
【００７６】
カーネルモジュール２１２のパケット破棄部２１２ｃは、パケット破棄指示部２１６ｂからの指示に応じて、バッファ２１３ｂに格納されている後着のパケットＰＫＢを破棄する（ステップ８１１）。
【００７７】
このように本実施形態によれば、パケット転送装置１０がパケットの送信側として機能する場合、当該パケット転送装置１０のユーザモジュール１１４（更に詳細には転送モジュール１１６）で多重化のための転送先の決定等を実現しながら、カーネルモジュール１１２とユーザモジュール１１４との間でのバッファ間のコピーを不要とすることができる。このため、パケット転送装置１０の高性能化を図ることができる。パケット転送装置２０がパケットの送信側として機能する場合も同様の効果が得られることは明らかである。
【００７８】
また本実施形態によれば、パケット転送装置２０がパケットの受信側として機能する場合、当該パケット転送装置２０のユーザモジュール２１４（更に詳細には転送モジュール２１６）で後着破棄の決定等を実現しながら、カーネルモジュール２１２とユーザモジュール２１４との間でのバッファ間のコピーを不要とすることができる。このため、パケット転送装置２０の高性能化を図ることができる。パケット転送装置１０がパケットの受信側として機能する場合も同様の効果が得られることは明らかである。
【００７９】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【００８０】
１０，２０…パケット転送装置、３０…ネットワーク、１０１〜１０３，２０１〜２０３…通信ポート、１１１，２１１…カーネル、１１２，２１２…カーネルモジュール、１１２ａ，２１２ａ…パケット管理情報通知部、１１２ｂ…送信部、１１３，２１３ａ，２１３ｂ…バッファ、１１４，２１４…ユーザモジュール、１１５…転送テーブル、１１６，２１６…転送モジュール、１１６ａ…転送指示部、２１２ｃ…パケット破棄部、２１６ｂ…パケット破棄指示部、２１６ｃ…受信記録部、２１７…受信記録テーブル、Ｎ１，Ｎ２…ノード装置。
【図１】
2011040960.tif 000003
【図２】
2011040960.tif 000004
【図３】
2011040960.tif 000005
【図４】
2011040960.tif 000006
【図５】
2011040960.tif 000007
【図６】
2011040960.tif 000008
【図７】
2011040960.tif 000009
【図８】
2011040960.tif 000010
【図９】
2011040960.tif 000011
【図１０】
2011040960.tif 000012