(57)【要約】【課題】従来と比してセッションテーブルの操作を行う際のロック獲得の回数を削減するとともに、処理コストの削減を可能にする。【解決手段】情報処理装置１０は、セッションテーブルを実装する情報処理装置であって、セッション内容と該セッションの保持時刻とを有するセッション情報が記録されるセッションテーブルを記憶する記憶部１２と、セッション情報に対する処理の間、セッションテーブルの少なくとも処理対象領域をロックするロック部１３３と、ロック後にセッションテーブルのセッション情報を走査し、処理対象のセッション情報を探索する探索部１３４と、探索部１３４による走査の際に保持時刻を超過したセッション情報が発見された場合には、前記保持時刻を超過したセッション情報をセッションテーブルから削除する削除部１３５と、を有する。【選択図】図１
2019175244.tif 000002
【特許請求の範囲】
【請求項１】
セッションテーブルを実装する情報処理装置であって、
セッション内容と該セッションの保持時刻とを有するセッション情報が記録されるセッションテーブルを記憶する記憶部と、
前記セッション情報に対する処理の間、前記セッションテーブルの少なくとも処理対象領域をロックするロック部と、
前記ロック部によるロック後に、前記セッションテーブルのセッション情報を走査し、処理対象のセッション情報を探索する探索部と、
前記探索部による走査の際に前記保持時刻を超過した前記セッション情報が発見された場合には、前記保持時刻を超過したセッション情報を前記セッションテーブルから削除する削除部と、
を有することを特徴とする情報処理装置。
【請求項２】
パケットを処理するパケット処理部と、
前記パケット処理部が新たに受信したパケットのセッション情報を前記探索部が前記セッションテーブルから探索できなかった場合、前記新たに受信したパケットのセッション情報を前記セッションテーブルに追加する追加部と、
をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記パケット処理部が受信したパケットのセッション情報の保持時刻を延長して更新する延長部をさらに有し、
前記探索部は、前記受信したパケットのセッション情報を前記セッションテーブルから探索し、
前記延長部は、前記探索部が探索したセッション情報の保持時刻を延長して更新することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
セッションテーブルを実装する情報処理装置が実行する情報処理方法であって、
前記情報処理装置は、セッション内容と該セッションの保持時刻とを有するセッション情報が記録されるセッションテーブルを記憶する記憶部を有し、
前記セッション情報に対する処理の間、前記セッションテーブルの少なくとも処理対象領域をロックするロック工程と、
前記ロック工程におけるロック後に、前記セッションテーブルのセッション情報を走査し、処理対象のセッション情報を探索する探索工程と、
前記探索工程における走査の際に前記保持時刻を超過した前記セッション情報が発見された場合には、前記保持時刻を超過したセッション情報を前記セッションテーブルから削除する削除工程と、
を含んだことを特徴とする情報処理方法。
【請求項５】
コンピュータを、請求項１〜３のいずれか一つに記載の情報処理装置として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
セッションを処理する情報処理装置は、セッションテーブルと、タイマーリストとを有する。この情報処理装置は、セッションテーブルにセッションを追加すると、タイマーリストに、その情報をタイマーとして追加する。そして、情報処理装置は、セッションの保持時刻が満了したことをタイマーが認識すると、そのセッションを解除し、タイマーリストからそのタイマーを削除する。ここで、情報処理装置は、セッションの追加削除、及び、タイマーの追加削除の際には、セッションテーブル及びタイマーリストをそれぞれロックして、互いに不整合が生じないように管理している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】How  to  implement  Session  timeout  in  Web  Server  Side?、［online］、［平成３０年３月１３日検索］、インターネット＜ＵＲＬ：https://stackoverflow.com/questions/2574929/how-to-implement-session-timeout-in-web-server-side＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の情報処理装置では、セッションの追加削除及びタイマーの追加削除の際には、セッションテーブル及びタイマーリストをそれぞれロックするため、セッションテーブルの操作を行う際のロック獲得の回数が多く、ロックの競合が発生する頻度が高くなる場合があった。また、従来の管理装置では、タイマーを管理するデータ構造の操作にかかる処理コストも必要であるという問題があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、従来と比してセッションテーブルの操作を行う際のロック獲得の回数を削減するとともに、処理コストの削減を可能にする情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明に係る情報処理装置は、セッションテーブルを実装する情報処理装置であって、セッション内容と該セッションの保持時刻とを有するセッション情報が記録されるセッションテーブルを記憶する記憶部と、セッション情報に対する処理の間、セッションテーブルの少なくとも処理対象領域をロックするロック部と、ロック部によるロック後に、セッションテーブルのセッション情報を走査し、処理対象のセッション情報を探索する探索部と、探索部による走査の際に保持時刻を超過したセッション情報が発見された場合には、保持時刻を超過したセッション情報をセッションテーブルから削除する削除部と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、従来と比してセッションテーブルの操作を行う際のロック獲得の回数を削減するとともに、処理コストの削減を可能にする。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態における通信システムの構成の一例を示す図である。
【図２】図２は、図１に示す情報処理装置がセッションテーブルへのセッション情報を追加する処理の流れを説明する図である。
【図３】図３は、図１に示す情報処理装置がセッションテーブルへのセッション情報を追加する処理の流れを説明する図である。
【図４】図４は、図１に示す情報処理装置がセッションテーブルへのセッション情報の保持時刻を延長する処理の流れを説明する図である。
【図５】図５は、図１に示す情報処理装置がセッションテーブルのセッション情報を探索する処理の処理手順の一例を示すフローチャートである。
【図６】図６は、図１に示す情報処理装置がセッションテーブルへセッション情報を追加する処理の処理手順の一例を示すフローチャートである。
【図７】図７は、図１に示す情報処理装置がセッションテーブルのセッション情報の保持時刻を延長する処理の処理手順の一例を示すフローチャートである。
【図８】図８は、従来技術におけるセッション情報の追加処理の流れを説明する図である。
【図９】図９は、従来技術におけるセッション情報の追加処理の流れを説明する図である。
【図１０】図１０は、従来技術におけるセッション情報の追加処理の流れを説明する図である。
【図１１】図１１は、従来技術におけるセッション情報の保持時刻延長処理の流れを説明する図である。
【図１２】図１２は、従来技術におけるセッション情報の保持時刻延長処理の流れを説明する図である。
【図１３】図１３は、従来技術におけるセッション情報の保持時刻延長処理の流れを説明する図である。
【図１４】図１４は、従来技術におけるセッション情報の削除処理の流れを説明する図である。
【図１５】図１５は、従来技術におけるセッション情報の削除処理の流れを説明する図である。
【図１６】図１６は、プログラムが実行されることにより、情報処理装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１０】
［実施の形態］
本発明の実施の形態について説明する。図１は、実施の形態における通信システムの構成の一例を示す図である。
【００１１】
図１に示すように、実施の形態に係る通信システムは、例えば、複数のクライアント１と、情報処理装置１０とを有する。各クライアント１と情報処理装置１０とは、ネットワーク２等を介して接続される。
【００１２】
クライアント１は、情報処理装置１０との通信を行う装置である。
【００１３】
情報処理装置１０は、クライアント１との間で通信を行う。情報処理装置１０は、例えば、クライアント１からの受信パケットに基づき種々の処理を行った後、当該受信パケットの返信パケットを、当該クライアント１へ送信する。
【００１４】
情報処理装置１０は、各パケットのセッションに関するセッション情報が記録されるセッションテーブルを実装して、セッションを管理する。ここで、情報処理装置１０は、セッションテーブルのセッション情報内に、該セッションの保持時刻を埋め込み、セッションの保持時刻を、それぞれのセッション情報を走査するだけで認識することができるようにしている。言い換えると、情報処理装置１０は、セッション情報の探索の過程で、走査したセッション情報の保持時刻を確認する。そして、情報処理装置１０は、保持時刻を超過していた場合には、そのタイミングでセッション情報の削除を行う。なお、情報処理装置１０は、探索等のセッション情報に対する処理の間、セッションテーブルの処理対象の領域をロックする。
【００１５】
［情報処理装置の構成］
次に、図１を参照して、情報処理装置１０の構成について説明する。図１に示すように、情報処理装置１０は、通信部１１、記憶部１２及び制御部１３を有する。
【００１６】
通信部１１は、ネットワーク２等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースである。通信部１１は、ＮＩＣ（Network  Interface  Card）等で実現され、ＬＡＮ（Local  Area  Network）やインターネットなどの電気通信回線を介した他の装置と制御部１３（後述）との間の通信を行う。
【００１７】
記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、情報処理装置１０を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部１２は、セッションテーブル記憶部１２１を有する。
【００１８】
セッションテーブル記憶部１２１は、セッションテーブルを記憶する。セッションテーブルは、各パケットのセッション内容と該セッションの保持時刻とを有するセッション情報が記録される。本実施の形態では、セッションテーブルとして、チェイン構造のセッションテーブルを採用し、ハッシュ関数を用いてセッション情報を格納するセッションテーブルのチェインを決めるハッシュ法を採用した場合について説明する。このため、セッションテーブルにおいて、各セッション情報は、該セッション情報のハッシュ値に応じたチェインにそれぞれ属する。
【００１９】
制御部１３は、情報処理装置１０全体を制御する。制御部１３は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部１３は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。また、制御部１３は、各種のプログラムが動作することにより各種の処理部として機能する。制御部１３は、パケット処理部１３１、ハッシュ計算部１３２、ロック部１３３、探索部１３４、削除部１３５、追加部１３６及び延長部１３７を有する。
【００２０】
パケット処理部１３１は、例えば、クライアント１との間の通信によるパケットを処理する。パケット処理部１３１は、クライアント１からの受信パケットに基づき種々の処理を行った後、当該受信パケットの返信パケットを、当該クライアント１へ送信する。
【００２１】
ハッシュ計算部１３２は、セッションテーブルに対するセッション情報の探索が行なわれる際に、探索対象のセッション情報のハッシュ値を計算する。
【００２２】
ロック部１３３は、セッション情報に対する処理の間、セッションテーブルの少なくとも処理対象領域をロックする。具体的には、ロック部１３３は、ハッシュ計算部１３２が計算したハッシュ値に対応するチェインをロックする。そして、ロック部１３３は、セッション情報に対する処理が終了すると、ロックを解除（アンロック）する。
【００２３】
探索部１３４は、ロック部１３３によるロック後に、セッションテーブルのセッション情報を走査する。探索部１３４は、処理対象のセッション情報のキーを取得する。そして、探索部１３４は、ロックされたチェインの各セッション情報を走査し、取得したキーと一致するキーを有するセッション情報を探索する。探索部１３４は、このセッション情報の探索の過程でセッション情報の保持時刻を確認する。なお、キーの一致は、完全一致の他、一部一致でもよい。
【００２４】
削除部１３５は、探索部１３４による走査の際に保持時刻を超過したセッション情報が発見された場合には、この保持時刻を超過したセッション情報をセッションテーブルから削除する。したがって、削除部１３５は、セッション情報をセッションテーブルから削除するだけで、保持時刻を超過したセッション内容と該セッションの保持時刻との双方を削除する。
【００２５】
追加部１３６は、新たに受信したパケットのセッション情報（追加対象のセッション情報）を探索部１３４がセッションテーブルから探索できなかった場合、追加対象のパケットのセッション情報をセッションテーブルに追加する。この際、追加部１３６は、セッション情報のハッシュ値に対応するチェインの所定位置（例えば、末尾）に、新たに受信したパケットのセッション情報を追加する。
【００２６】
また、追加部１３６は、追加対象のセッション情報を探索部１３４がセッションテーブルから探索した場合には、そのセッション情報を、追加対象のセッションに対応させて上書きする。この際、追加部１３６は、セッション情報のセッション内容に加え、保持時刻についても延長して更新する。
【００２７】
延長部１３７は、パケット処理部１３１が受信したパケットのセッション情報の保持時刻を延長して更新する。延長部１３７は、受信したパケットのセッション情報を探索部がセッションテーブルから探索した場合には、この探索部１３４が探索したセッション情報の保持時刻を延長して更新する。
【００２８】
［セッションテーブルへのセッション情報の追加処理の流れ］
次に、情報処理装置１０がセッションテーブルへのセッション情報を追加する処理について説明する。図２及び図３は、図１に示す情報処理装置１０がセッションテーブルへのセッション情報を追加する処理の流れを説明する図である。図２及び図３では、情報処理装置１０が実装するセッションテーブル（ハッシュテーブル）の一例を示し、セッションテーブルへのセッション情報の追加処理の流れを説明する。
【００２９】
図２及び図３に示すように、情報処理装置１０は、「０」〜「５」のハッシュ値にそれぞれ対応する「bucket0」〜「bucket5」のチェインを有する。各「bucket0」〜「bucket  5」には、session  record（セッション情報）が連結される。セッション情報は、このセッション情報のハッシュ値に対応するチェインに連結される。
【００３０】
まず、ハッシュ計算部１３２は、追加するセッション情報のハッシュセッション情報のハッシュ値を計算する（図２の（１）参照）。今回の例では、追加するセッション情報のハッシュ値が「４」と計算された。
【００３１】
そして、ロック部１３３は、追加するセッション情報のハッシュ値「４」に対応する「bucket4」のチェインをロックする（図２の（２）参照）。続いて、探索部１３４は、ロックされたチェイン「bucket4」の各セッション情報を順次走査し、追加するセッション情報のキーと一致するキーを有するセッション情報を探索する。そして、探索部１３４が、チェイン「bucket4」の走査中に、保持時刻を超過しているセッション情報Ｒ４１を発見した場合、削除部１３５は、このセッション情報Ｒ４１をチェイン「bucket4」から削除する（図２の（３）参照）。
【００３２】
そして、追加部１３６は、追加対象のパケットのセッション情報を、探索部１３４がチェイン「bucket4」から探索できなかった場合、追加対象のパケットのセッション情報Ｒ４３を、チェイン「bucket4」の末尾に追加する（図３の（４）参照）。ここで、追加部１３６は、追加するセッション情報について、保持時刻を、保持時刻＝現在時刻＋タイムアウト時間、と演算して設定する（図３の（Ａ）参照）。このように、追加部１３６は、セッション情報にセッションの保持時刻を埋め込む。
【００３３】
続いて、追加部１３６の処理が終了すると、ロック部１３３は、チェイン「bucket4」をアンロックし（図３の（５）参照）、セッション情報の追加処理を終了する。なお、セッションの参照（探索）については、チェインへのセッション情報の追加（図３の（４）参照）処理がない以外、図２及び図３に示す処理と同様の流れで実行される。
【００３４】
［セッション情報の保持時刻延長処理の流れ］
次に、情報処理装置１０がセッションテーブルのセッション情報の保持時刻を延長する処理について説明する。図４は、図１に示す情報処理装置１０がセッションテーブルへのセッション情報の保持時刻を延長する処理の流れを説明する図である。
【００３５】
まず、ハッシュ計算部１３２は、受信したパケットのセッション情報（延長対象のセッション情報）のハッシュ値「４」を計算する（図４の（１）参照）。そして、ロック部１３３は、このセッション情報のハッシュ値「４」に対応する「bucket4」のチェインをロックする（図４の（２）参照）。
【００３６】
続いて、探索部１３４は、ロックされたチェイン「bucket4」の各セッション情報を順次走査し、受信したパケットのセッション情報のキーと一致するキーを有するセッション情報を探索する。延長部１３７は、探索部１３４の探索の結果、該当したセッション情報Ｒ４１の保持時刻を延長する（図４の（Ｂ）参照）。この際、追加部１３６は、該当するセッション情報Ｒ４１について、保持時刻を、保持時刻＝現在時刻＋タイムアウト時間、と演算して更新する（図４の（３）参照）。なお、探索部１３４が、チェイン「bucket4」の走査中に、保持時刻を超過しているセッション情報を発見した場合、削除部１３５は、このセッション情報をセッションテーブルＴ１から削除する。
【００３７】
続いて、延長部１３７の処理が終了すると、ロック部１３３は、チェイン「bucket4」をアンロックし（図４の（４）参照）、セッション情報の保持時刻延長処理を終了する。
【００３８】
［セッションテーブルのセッション情報の探索処理の処理手順］
次に、情報処理装置１０がセッションテーブルのセッション情報を探索する処理の処理手順について説明する。図５は、図１に示す情報処理装置１０がセッションテーブルのセッション情報を探索する処理の処理手順の一例を示すフローチャートである。
【００３９】
図５に示すように、セッション情報の探索指示を受けると（ステップＳ１）は、ハッシュ計算部１３２は、探索対象であるセッション情報のハッシュ値を計算する（ステップＳ２）。ロック部１３３は、探索対象のセッション情報が属するチェインをロックする（ステップＳ３）。
【００４０】
探索部１３４は、ロックされたチェインのセッション情報を順次走査する。具体的には、探索部１４３は、走査したセッション情報のキーが、探索対象のセッション情報のキーと一致するか否かを判定する（ステップＳ４）。
【００４１】
探索部１３４は、走査したセッション情報のキーが、探索対象のセッション情報のキーと一致しないと判定した場合（ステップＳ４：Ｎｏ）、このセッション情報が保持時刻を超過しているか否かを判定する（ステップＳ５）。セッション情報が保持時刻を超過していると探索部１３４が判定した場合（ステップＳ５：Ｙｅｓ）、削除部１３５は、このセッション情報をセッションテーブルから削除する（ステップＳ６）。
【００４２】
そして、探索部１３４は、次のセッション情報が有るか否かを判定する（ステップＳ７）。探索部１３４は、次のセッション情報があると判定した場合（ステップＳ７：Ｙｅｓ）、次のセッション情報に進み（ステップＳ８）、ステップＳ４に戻り、次のセッション情報のキーが、探索対象のセッション情報のキーと一致するか否かを判定する。
【００４３】
また、探索部１３４は、走査したセッション情報のキーが、探索対象のセッション情報のキーと一致すると判定した場合（ステップＳ４：Ｙｅｓ）、このセッション情報が保持時刻を超過しているか否かを判定する（ステップＳ９）。セッション情報が保持時刻を超過していないと探索部１３４が判定した場合（ステップＳ９：Ｎｏ）、このセッション情報が探索対象のセッション情報であると判定し、該セッション情報を読み出す（ステップＳ１０）。
【００４４】
一方、セッション情報が保持時刻を超過していると探索部１３４が判定した場合（ステップＳ９：Ｙｅｓ）、削除部１３５は、このセッション情報をセッションテーブルから削除する（ステップＳ１１）。
【００４５】
そして、次のセッション情報がないと探索部１３４が判定した場合（ステップＳ７：Ｎｏ）、ステップＳ１０処理後、または、ステップＳ１１処理後、ロック部１３３は、ロックしていたチェインをアンロックし（ステップＳ１２）、セッション情報の探索処理を終了する。このように、情報処理装置１０では、セッション情報の探索タイミングで、保持時刻を超過しているセッション情報が発見された場合に、このセッション情報をセッションテーブルから削除する。
【００４６】
［セッションテーブルへのセッション情報の追加処理の処理手順］
次に、情報処理装置１０がセッションテーブルへセッション情報を追加する処理の処理手順について説明する。図６は、図１に示す情報処理装置１０がセッションテーブルへセッション情報を追加する処理の処理手順の一例を示すフローチャートである。
【００４７】
図６に示すように、パケット処理部１３１のパケット処理等によって、セッション情報の追加指示を受けると（ステップＳ２１）、ハッシュ計算部１３２は、追加対象であるセッション情報のハッシュ値を計算する（ステップＳ２２）。ロック部１３３は、追加対象のセッション情報が属するチェインをロックする（ステップＳ２３）。
【００４８】
探索部１３４は、ロックされたチェインのうち、走査したセッション情報に対し、セッション情報のキーが、追加対象のセッション情報のキーと一致するか否かを判定する（ステップＳ２４）。
【００４９】
探索部１３４は、走査したセッション情報のキーが、追加対象のセッション情報のキーと一致すると判定した場合（ステップＳ２４：Ｙｅｓ）、このセッション情報が追加対象のセッション情報であると判定する。そして、追加部１３６は、そのセッション情報を、追加対象のセッションに対応させて上書きする（ステップＳ２５）。この際、追加部１３６は、セッション情報のセッション内容に加え、保持時刻についても延長して更新する。
【００５０】
一方、探索部１３４は、走査したセッション情報のキーが、追加対象のセッション情報のキーと一致しないと判定した場合（ステップＳ２４：Ｎｏ）、ステップＳ２６〜ステップＳ２９を行う。ステップＳ２６〜ステップＳ２９は、図５に示すステップＳ５〜ステップＳ８と同じ処理である。
【００５１】
そして、次のセッション情報がないと探索部１３４が判定した場合（ステップＳ２８：Ｎｏ）、追加部１３６は、追加対象のセッション情報をセッションテーブルに追加する（ステップＳ３０）。この際、追加部１３６は、セッション情報のハッシュ値に対応するチェインの所定位置（例えば、末尾）に、追加対象のセッション情報を追加する。
【００５２】
ステップＳ２５処理後、または、ステップＳ３０処理後、ロック部１３３は、ロックしていたチェインをアンロックし（ステップＳ３１）、セッション情報の追加処理を終了する。
【００５３】
［セッション情報の保持時刻延長処理の処理手順］
次に、情報処理装置１０がセッションテーブルのセッション情報の保持時刻を延長する処理の処理手順について説明する。図７は、図１に示す情報処理装置１０がセッションテーブルのセッション情報の保持時刻を延長する処理の処理手順の一例を示すフローチャートである。
【００５４】
図７に示すように、パケット処理部１３１のパケット処理等によって、セッション情報の保持時刻延長指示を受けると（ステップＳ４１）、ハッシュ計算部１３２は、延長対象のセッション情報のハッシュ値を計算する（ステップＳ４２）。ロック部１３３は、延長対象のセッション情報が属するチェインをロックする（ステップＳ４３）。
【００５５】
探索部１３４は、ロックされたチェインのうち、走査したセッション情報に対し、セッション情報のキーが、延長対象のセッション情報のキーと一致するか否かを判定する（ステップＳ４４）。
【００５６】
探索部１３４は、セッション情報のキーが、延長対象のセッション情報のキーと一致しないと判定した場合（ステップＳ４４：Ｎｏ）、ステップＳ４５〜ステップＳ４８を行う。ステップＳ４５〜ステップＳ４８は、図５に示すステップＳ５〜ステップＳ８と同じ処理である。
【００５７】
また、探索部１３４は、走査したセッション情報のキーが、延長対象のセッション情報のキーと一致すると判定した場合（ステップＳ４４：Ｙｅｓ）、このセッション情報が保持時刻を超過しているか否かを判定する（ステップＳ４９）。セッション情報が保持時刻を超過していないと探索部１３４が判定した場合（ステップＳ４９：Ｎｏ）、このセッション情報が延長対象のセッション情報であると判定し、延長部１３７は、そのセッション情報の保持時刻を延長して更新する（ステップＳ５０）。
【００５８】
一方、セッション情報が保持時刻を超過していると探索部１３４が判定した場合（ステップＳ４９：Ｙｅｓ）、削除部１３５は、このセッション情報をセッションテーブルから削除する（ステップＳ５１）。
【００５９】
そして、次のセッション情報がないと探索部１３４が判定した場合（ステップＳ４７：Ｎｏ）、または、ステップＳ５０処理後、または、ステップＳ５１処理後、ロック部１３３は、ロックしていたチェインをアンロックし（ステップＳ５２）、セッション情報の保持時刻延長処理を終了する。
【００６０】
［従来技術の説明］
ここで、従来技術におけるセッション情報の追加処理について説明する。図８〜図１０は、従来技術におけるセッション情報の追加処理の流れを説明する図である。図８〜図１０に示すように、従来では、セッションテーブル（ハッシュテーブル）Ｔ１ｐに加えて、各セッション情報のタイマー情報を有するタイマーリストＬ１ｐを備える。このタイマーリストＬ１ｐは、クライアント１の予期せぬ切断（ＦＩＮ／ＲＳＴなしでの切断）によりセッション情報が残存し続けることを防ぐため、タイマーによる一定時間通信が行われなかったセッション情報の削除を行う場合に必要となる。
【００６１】
図８〜図１０に示すように、従来技術では、追加するセッション情報のハッシュ値「４」を計算し（図８の（１）参照）、セッションテーブルＴ１ｐのうち、ハッシュ値「４」に対応する「bucket4」のチェインをロックする（図８の（２）参照）。従来技術では、追加対象のパケットのセッション情報Ｒ４３´を「bucket4」の末尾に追加し（図９の（３）参照）、チェイン「bucket4」をアンロックする（図９の（４）参照）。
【００６２】
さらに、従来技術では、タイマーリストＬ１ｐをロックし（図９の（５）参照）、追加したセッション情報Ｒ４３´の削除用タイマーＣ４３´を追加する（図９の（６）参照）。そして、従来技術では、タイマーリストＬ１ｐをアンロックして（図１０の（７）参照）、処理を終了する。このように、従来技術では、セッションテーブルとは別個に有するタイマーリストに対しても、ロック及びタイマーの追加を行なう必要がある。
【００６３】
また、従来技術におけるセッション情報の保持時刻延長処理について説明する。図１１〜図１３は、従来技術におけるセッション情報の保持時刻延長処理の流れを説明する図である。
【００６４】
図１１〜図１３に示すように、従来技術では、受信したパケットのセッション情報のハッシュ値「４」を計算し（図１１の（１）参照）、セッションテーブルＴ１ｐの「bucket4」のチェインをロックする（図１１の（２）参照）。そして、従来技術では、該当するセッション情報Ｒ４１´の保持時刻を延長するために（図１１の（Ｃ）参照）、このセッション情報のＲ４１´のタイマーのキーを取得する（図１１の（３）参照）。
【００６５】
続いて、従来技術では、タイマーリストＬ１ｐをロックし（図１２の（４）参照）、取得したキーに該当するタイマーＣ４１´をタイマーリストＬ１ｐから削除する（図１２の（５）参照）。そして、従来技術では、保持時刻の延長のための新しいタイマーＣ４１″を追加する（図１３の（６）参照）後、タイマーリストＬ１ｐをアンロックして（図１３の（７）参照）、処理を終了する。
【００６６】
また、従来技術におけるセッション情報の削除処理について説明する。図１４及び図１５は、従来技術におけるセッション情報の削除処理の流れを説明する図である。
【００６７】
図１４及び図１５に示すように、従来技術では、保持時刻を超過しているセッション情報Ｒ４１´（図１４の（Ｄ）参照）をセッションテーブルＴ１ｐから削除する場合、まず、タイマーリストＬ１ｐをロックし（図１４の（１）参照）、保持時刻を過ぎているタイマーＣ４１´から、キー情報を取得して、タイマーＣ４１´をタイマーリストＬ１ｐから削除する（図１４の（２）参照）。
【００６８】
従来技術では、タイマーリストＬ１ｐをアンロックし（図１５の（３）参照）、セッションテーブルＴ１ｐの、削除対象のセッション情報が属するチェイン「bucket4」をロックする（図１５の（４）参照）。その後、従来技術では、取得したキーが一致するセッション情報のＣ４１´をセッションテーブルＴ１ｐから削除する。
【００６９】
このように、従来技術では、セッション情報の追加及びセッション情報の保持時刻の延長を行うために、セッションテーブルＴ１ｐに加えて、タイマーリストＬ１ｐに対するロックが必要となる。また、従来技術では、セッション情報の削除を行うため、タイマーリストのロック後に、セッションテーブルのロックが必要になる。このように、従来技術では、セッション情報を処理する際のロック獲得の回数が多く、ロックの競合が発生する頻度が高くなっていた。
【００７０】
［本実施の形態の効果］
これに対し、本実施の形態に係る情報処理装置１０は、セッション内容と該セッションの保持時刻とを有するセッション情報が記録されるセッションテーブルを記憶する。言い換えると、情報処理装置１０は、セッションテーブルに記録されるセッション情報にセッション内容とセッションの保持時刻との双方を埋め込んでいる。
【００７１】
このため、情報処理装置１０によれば、従来技術においてセッションテーブルとは別に保持していたタイマーリスト自体が不要となる。この結果、情報処理装置１０によれば、従来技術と比して、タイマーを管理するデータ構造の操作に関する処理コストを削減することができる。
【００７２】
また、情報処理装置１０は、セッション情報に対する処理の間、セッションテーブルの少なくとも処理対象領域のみをロックし、ロック後に、セッションテーブルのセッション情報を走査し、処理対象のセッション情報を探索する。
【００７３】
上述したように、情報処理装置１０は、従来技術と比して、タイマーリスト自体が不要となるため、タイマーリストに対するロック自体が不要となる。このため、情報処理装置１０によれば、セッションテーブルの操作を行う際、従来必要であったタイマーリストに対するロックが不要となることから、従来と比して、ロック回数を削減することができる。
【００７４】
また、情報処理装置１０は、セッションテーブルに対する走査の際に保持時刻を超過したセッション情報が発見された場合には、この保持時刻を超過したセッション情報を削除している。言い換えると、情報処理装置１０では、セッション情報の探索タイミングで、保持時刻を超過しているセッション情報が発見された場合には、このセッション情報を削除している。したがって、情報処理装置１０では、検索または追加の際に取得したロックの中で、保持時刻を超過しているセッション情報を削除するため、従来必要であったセッション情報の削除処理を別個に行う必要がない。
【００７５】
このように、情報処理装置１０によれば、従来と比して、ロック獲得の回数を削減することができる。したがって、情報処理装置１０では、ロックの競合削減頻度も削減することができる。
【００７６】
なお、本実施の形態では、チェイン構造のセッションテーブルを採用したが、もちろん、オープンアドレス（開番地法）構造のセッションテーブルを採用することも可能である。この場合、ロック部１３３は、セッション情報に対する処理の間、セッションテーブル全体をロックし、その後、探索部１３４は、セッションテーブルのセッション情報を走査すればよい。
【００７７】
また、本実施の形態は、ＴＣＰセッション、ＮＡＴセッション、ＨＴＴＰセッションなど、各種プロトコルに応用が可能であり、特定のプロトコルに限ることはない。
【００７８】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７９】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行なうこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的に行なうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８０】
［プログラム］
図１６は、プログラムが実行されることにより、情報処理装置１０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００８１】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００８２】
ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、情報処理装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、情報処理装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【００８３】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００８４】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００８５】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００８６】
１  クライアント
１０  情報処理装置
１１  通信部
１２  記憶部
１３  制御部
１２１  セッションテーブル記憶部
１３１  パケット処理部
１３２  ハッシュ計算部
１３３  ロック部
１３４  探索部
１３５  削除部
１３６  追加部
１３７  延長部
【図１】
2019175244.tif 000003
【図２】
2019175244.tif 000004
【図３】
2019175244.tif 000005
【図４】
2019175244.tif 000006
【図５】
2019175244.tif 000007
【図６】
2019175244.tif 000008
【図７】
2019175244.tif 000009
【図８】
2019175244.tif 000010
【図９】
2019175244.tif 000011
【図１０】
2019175244.tif 000012
【図１１】
2019175244.tif 000013
【図１２】
2019175244.tif 000014
【図１３】
2019175244.tif 000015
【図１４】
2019175244.tif 000016
【図１５】
2019175244.tif 000017
【図１６】
2019175244.tif 000018