(57)【要約】      （修正有）【課題】C-Plane（コントロールプレーン）装置とU-Plane（ユーザプレーン）装置に分離したゲートウェイ装置でのプロセス間通信によるユーザデータの転送遅延の発生を抑制する。【解決手段】通信システムは、移動体端末と通信先との間の通信経路に関する制御データを処理する制御用装置２と、移動体端末が、通信先と送受信するユーザデータを転送する転送用装置３−１〜３−３と、を備える。制御用装置は、通信経路の確立を要求する接続要求を通信装置から受信すると、制御用装置が制御データを処理する際に使用するC-Planeに関する制御用情報と転送用装置がユーザデータを転送する際に使用するU-Planeに関する転送用情報とを生成して記憶するとともに、生成した転送用情報を転送用装置へ送信する。転送用装置は、制御用装置から受信した転送用情報を記憶する。【選択図】図１
2017050747.tif 000002
【特許請求の範囲】
【請求項１】
移動体端末を収容する通信装置に接続される第１のネットワークと、前記移動体端末の通信先を含む第２のネットワークと、に接続される通信システムであって、
前記移動体端末と前記通信先との間の通信経路に関する制御データを処理する制御用装置と、
前記移動体端末が、前記通信先と送受信するユーザデータを転送する転送用装置と、
を備え、
前記制御用装置は、
前記制御データの１つである、前記通信経路の確立を要求する接続要求を前記通信装置から受信すると、前記制御用装置が前記制御データを処理する際に使用する第１の通信経路に関する制御用情報と前記転送用装置が前記ユーザデータを転送する際に使用する第２の通信経路に関する転送用情報とを生成して記憶するとともに、生成した前記転送用情報を前記転送用装置へ送信し、
前記転送用装置は、
前記制御用装置から受信した前記転送用情報を記憶する、
通信システム。
【請求項２】
前記転送用装置は、
前記通信装置から前記移動体端末が送信したユーザデータを受信すると、記憶した前記転送用情報を参照し、受信した前記ユーザデータに含まれる転送用情報に対応する通信先へ受信した前記ユーザデータを転送する、
請求項１に記載の通信システム。
【請求項３】
前記転送用情報は、
前記転送用装置が使用する前記第２の通信経路を識別する転送用装置経路識別情報を含み、
前記制御用装置は、
前記制御用情報を記憶する際に、前記制御用情報と前記転送用装置経路識別情報とを対応付けて記憶する、
請求項２に記載の通信システム。
【請求項４】
前記制御用情報は、
前記移動体端末を一意に識別する移動体端末識別情報と、前記制御用装置のIPアドレスと、前記制御用装置が使用する前記第１の通信経路を識別する制御用装置経路識別情報と、を含み、
前記転送用情報は、
前記転送用装置のIPアドレスと、前記移動体端末のIPアドレスと、前記移動体端末の通信先に関する通信先情報と、をさらに含み、
前記制御用装置は、
生成した前記転送用情報を前記転送用装置へ送信すると、前記制御データの１つである、生成した前記制御用情報および前記転送用情報を含む接続応答を前記通信装置へ送信する、
請求項３に記載の通信システム。
【請求項５】
前記転送用装置を複数備え、
前記制御用装置は、
前記制御用情報および前記転送用情報を生成する際に、複数の前記転送用装置のうち前記ユーザデータを転送する転送用装置を選択し、選択した前記転送用装置が使用する通信経路を識別する転送用装置経路識別情報を含む前記転送用情報を生成し、生成した前記転送用装置経路識別情報を含む前記転送用情報を選択した前記転送用装置へ送信し、
複数の前記転送用装置のうち前記転送用装置経路識別情報を含む前記転送用情報を受信した転送用装置は、
前記制御用装置から受信した前記転送用装置経路識別情報を含む前記転送用情報を記憶し、前記通信装置から前記移動体端末が送信したユーザデータを受信すると、受信した前記ユーザデータに含まれる転送用情報を基に記憶した前記転送用情報を参照し、参照した結果に応じて前記ユーザデータを転送する、
請求項１に記載の通信システム。
【請求項６】
前記制御用情報は、
前記移動体端末を一意に識別する移動体端末識別情報と、前記制御用装置のIPアドレスと、前記制御用装置が使用する通信経路を識別する制御用装置経路識別情報と、を含み、
前記転送用情報は、
複数の前記転送用装置のうち選択された前記転送用装置のIPアドレスと、前記移動体端末のIPアドレスと、前記移動体端末の通信先に関する通信先情報と、をさらに含み、
前記制御用装置は、
生成した前記制御用情報および前記転送用情報を含む接続応答を前記通信装置へ送信する、
請求項５に記載の通信システム。
【請求項７】
前記通信システムは、
モバイルコアネットワークにおけるPacket data network Gateway（PGW）であり、
前記制御用装置は、
前記PGWのうち制御プレーンの処理を実行する制御プレーン用PGWであり、
前記転送用装置は、
前記PGWのうちユーザプレーンの処理を実行するユーザプレーン用PGWである、
請求項１ないし請求項６いずれか一項に記載の通信システム。
【請求項８】
移動体端末を収容する通信装置に接続される第１のネットワークに接続される第１のポートと、
前記移動体端末の通信先を含む第２のネットワークに接続される第２のポートと、
前記移動体と前記通信先との間の通信経路に関する制御データを処理する制御用装置に接続される第３のポートと、
前記第３のポートを介して前記制御用装置から、前記移動体端末が前記通信先と送受信するユーザデータの通信経路に関する転送用情報を受信すると、記憶部に格納する制御処理と、前記第１のポートを介して前記通信装置から、前記移動体端末が送信したユーザデータを受信すると、受信した前記ユーザデータに含まれる転送用情報を基に、前記記憶部に格納した前記転送用情報を参照し、参照した結果に応じて前記第２のポートを介して前記ユーザデータを転送する転送処理を実行する制御部と、
を備える転送用装置。
【請求項９】
前記転送用装置は、
前記第３のポートを介して他の転送用装置に接続され、
前記制御部は、
前記制御処理において、前記第３のポートを介して前記制御用装置から、前記制御データの通信経路に関する制御用情報と前記転送用情報とを受信すると、前記記憶部に前記転送用情報を格納するとともに、前記制御用情報を格納し、前記第３のポートを介して前記記憶部に格納した前記制御用情報と前記転送用情報とを前記他の転送用装置へ送信する、
請求項８に記載の転送用装置。
【請求項１０】
前記制御部は、
前記制御処理において、前記記憶部に前記転送用情報および前記制御用情報を格納する際に、前記移動体端末を一意に識別する移動体端末識別情報をKEYとし、前記転送用情報および前記制御用情報をVALUEとして、前記KEYと前記VALUEとを対応付けて格納する、
請求項９に記載の転送用装置。
【請求項１１】
前記転送用装置は、
モバイルコアネットワークにおける、ユーザプレーンの処理を実行するユーザプレーン用Packet data network Gateway（PGW）である、
請求項１０に記載の転送用装置。
【請求項１２】
移動体端末を収容する通信装置に接続される第１のネットワークに接続される第１のポートと、
前記移動体端末が前記移動体端末の通信先と送受信するユーザデータを転送する転送用装置に接続される第２のポートと、
前記第１のポートを介して前記通信装置から、前記移動体端末と前記通信先との間の通信経路に関する制御データの１つである、前記通信経路の確立を要求する接続要求を受信すると、前記制御データを処理する際に使用する第１の通信経路に関する制御用情報と前記転送用装置が前記ユーザデータを転送する際に使用する第２の通信経路に関する転送用情報とを生成し、前記第２のポートを介して生成した前記転送用情報を送信する制御部と、
を備える制御用装置。
【請求項１３】
前記制御用情報は、
前記移動体端末を一意に識別する移動体端末識別情報と、前記制御用装置のIPアドレスと、前記第１の通信経路を識別する制御用装置経路識別情報と、を含み、
前記転送用情報は、
前記第２の通信経路を識別する転送用装置経路識別情報と、前記転送用装置のIPアドレスと、前記移動体端末のIPアドレスと、前記移動体端末の通信先に関する通信先情報と、を含み、
前記制御用情報と前記転送用装置経路識別情報とを対応付けて記憶し、前記転送用情報を記憶する記憶部
を備える、
請求項１２に記載の制御用装置。
【請求項１４】
前記制御用装置は、
モバイルコアネットワークにおける、制御プレーンの処理を実行する制御プレーン用Packet data network Gateway（PGW）である、
請求項１３に記載の制御用装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、転送用装置および制御用装置に関する。
【背景技術】
【０００２】
移動体通信システムにおいては、その処理において制御信号を装置間で送受信するC-Plane(コントロールプレーン)処理とユーザデータを装置間で送受信するU-Plane(ユーザプレーン)処理とに大別される。制御信号およびユーザデータを扱う、特開２０１０−６３０２２号公報（特許文献１）に記載の技術がある。この公報には、C-Plane処理とU-Plane処理を分離するC/U分離に関して「アクセスゲートウェイ装置４は、基地局７ａ〜７ｃとコアネットワーク１との間で制御信号（シグナリング）を処理する複数の制御信号用アクセスゲートウェイ（以下、Ｃ−ＡＧＷまたは制御プレーンとする）５ａ、５ｂと、基地局７ａ〜７ｃとコアネットワーク１のホームエージェント３との間でユーザデータを転送する複数のユーザデータ用アクセスゲートウェイ（以下、Ｕ−ＡＧＷまたはユーザプレーンとする）６ａ、６ｂ、６ｃを分離して備える」という記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−６３０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１において、C-Plane処理を行うC-Plane装置とU-Plane処理を行うU-Plane装置にゲートウェイ装置を分離することにより、U-Plane装置が保持していない転送先情報等に関するデータをU-Plane装置が受信すると、U-Plane装置は、C-Plane装置が保持する転送先情報等をC-Plane装置に対して問い合わせるプロセス間通信が発生し、C-Plane装置から取得した転送先情報等に基づいて受信したデータを転送する。そのため、U-Plane装置においてプロセス間通信による転送遅延が発生するという課題がある。
【０００５】
この課題に対して、U-Plane装置がデータを転送する際に参照する転送先情報等をキャッシュとしてU-Plane装置で保持しておくことが考えられるが、この場合、転送先情報等のキャッシュは、U-Plane装置がデータを一度転送した後に作成されるため、U-Plane装置が初めて受信するデータには効果がないという課題がある。
【０００６】
そこで、本発明では、C-Plane装置とU-Plane装置に分離したゲートウェイ装置でのプロセス間通信によるユーザデータの転送遅延の発生を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
上述の課題を解決するために、本発明の一態様である通信システムは、移動体端末を収容する通信装置に接続される第１のネットワークと、移動体端末の通信先を含む第２のネットワークと、に接続され、移動体端末と通信先との間の通信経路に関する制御データを処理する制御用装置と、移動体端末が、通信先と送受信するユーザデータを転送する転送用装置とを備える。
【０００８】
この通信システムの制御用装置は、制御データの１つである、通信経路の確立を要求する接続要求を通信装置から受信すると、制御用装置が制御データを処理する際に使用する第１の通信経路に関する制御用情報と転送用装置がユーザデータを転送する際に使用する第２の通信経路に関する転送用情報とを生成して記憶するとともに、生成した転送用情報を転送用装置へ送信する。
この通信システムの転送用装置は、制御用装置から受信した転送用情報を記憶する。
【発明の効果】
【０００９】
本発明によれば、プロセス間通信によるユーザデータの転送遅延の発生を抑制する事ができる。前述した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】ネットワークシステム全体の構成図の例である。
【図２】PGWの構成例を説明する図である。
【図３】セッションDB(C)の詳細な構成例を説明する図である。
【図４】セッションDB(U)の詳細な構成例を説明する図である。
【図５】PGWがC-Planeパケットを受信しC-Plane処理を行う際のシーケンスを説明する図の例である。
【図６】PGWがU-Planeパケットを受信しU-Plane処理を行う際のシーケンスを説明する図の例である。
【図７】実施例２におけるネットワークシステム全体の構成図の例である。
【図８Ａ】セッションDB(C)およびセッションDB(U)の詳細な構成例を説明する図である。
【図８Ｂ】セッションDB(C)およびセッションDB(U)の詳細な構成例を説明する図である。
【図８Ｃ】セッションDB(C)およびセッションDB(U)の詳細な構成例を説明する図である。
【図９】実施例２におけるPGWがC-Planeパケットを受信しC-Plane処理を行う際のシーケンスを説明する図の例である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施例を説明する。
（実施例１）
図1は、ネットワークシステム全体の構成図の例である。
本実施例のネットワークシステムは、Serving Gateway （SGW）４、Packet data network Gateway（PGW）１、Packet Data Network （PDN）６、SGW4およびPGW１を介してPDN6とデータを送受信する移動体端末であるUser Equipment（UE）５を有する。SGW4とPGW1でモバイルコアネットワークを構成する。
【００１２】
SGW４は、例えば、Mobility Management Entity(MME)などの図示しない通信装置を介してUE５を収容し、ユーザデータを他の通信システムに接続するノード機能を有する通信装置である。PGW１は、モバイルコアネットワーク外のネットワークであるPDN６との接続点となり、ユーザデータに対して課金やQuality of Service(QoS)制御機能を有する通信装置である。PDN６は、公衆データ網であり、UE5とユーザデータを送受信する通信先の通信装置を含むネットワークである。また、1台のPGW1は、複数のPDN6に接続することができる。PGW1は、UL(Uplink)データ（UE5からPDN6へのデータ）をPDN6側に転送する際、PDN6を識別する情報を使用する。
【００１３】
PGW１は、制御データ（制御信号）を転送する制御プレーン（C-Plane）処理を実行し、C-Planeに関する情報を制御する通信装置である制御用装置のPGW(C)２（制御プレーン用PGW２）と、ユーザデータ（ユーザ信号）を転送するユーザプレーン(U-Plane)処理を実行し、U-Planeに関する情報を制御する通信装置である転送用装置のPGW(U)３（ユーザプレーン用PGW３）とを有し、通信装置単位でC-Plane処理とU-Plane処理を分離する構成（C/U分離構成）のPGWである。本実施例では、PGW(U)３が３台構成である。つまり、PGW１は、物理的に異なる複数の通信装置によって構成される。PGW(C)2と各PGW(U)3とは、通信回線を介して接続される。また、PGW(C)2と各PGW(U)3とは、スイッチやルータなどの通信装置を含むネットワークを介して接続されてもよい。なお、PGW(U)3-1〜3-3の内部構成は同一（ただし、保持するU-Planeに関する情報は異なる）である。
【００１４】
PGW１は、モバイルコアネットワーク内のネットワーク7を介してSGW４との間で、C-Plane処理を行うことでU-Planeの転送路（通信経路）を仮想的に確立し、U-Planeの転送路が確立している間は、UE５とPDN６は、任意のタイミングで、経路について気にすることなくデータの送受信が可能となる。
【００１５】
本実施例に記載する装置構成やテーブルの保持値、装置数は一例であり、本実施例の構成を制限するものではない。また、各構成要素に付される符号において同種の構成要素が複数存在する場合は、たとえば、「PGW(U)3-1、PGW(U)3-2、PGW(U)3-3」のように、枝番を用いて区別するが、説明上区別しない場合は、たとえば、「PGW(U)3」のように、枝番を省略する。また、以下の説明では、データの具体的な形式としてパケットを用いるが、フレームであってもよい。
【００１６】
PGW(C)２は、セッションに関する情報（以下、「セッション情報」と呼ぶ。）を格納（保持、記憶、記録）するセッションData Base(DB)(C)２０と、C-Plane処理を行うプロセス（アプリケーション、ソフトウェア）であるC-Planeプロセス２１を有する。ここで、セッションとは、ユーザ単位の通信情報であり、一連の通信の単位である。また、セッションは、通信経路でもある。C-Planeプロセス２１は、SGW４との間で制御パケットであるC-Planeパケットを送受信することでC-Plane処理を行う。C-Planeプロセス２１は、C-Plane処理を実行する際、セッションDB(C)２０の更新や参照を行う。
【００１７】
セッションDB(C)２０に格納されるセッション情報は、SGW1とPGW(C)２との間で、PGW(C)２がC-Plane処理を行うために必要なC-Planeに関する情報（以下、「C-Plane情報」または「制御用情報」と呼ぶ。）であるC-Plane用のセッション情報（以下、「C-Planeセッション情報」または「制御用経路情報」と呼ぶ。）と、SGW1とPGW(U)３との間で、PGW(U)３がU-Plane処理を行うために必要なU-Planeに関する情報（以下、「U-Plane情報」または「転送用情報」と呼ぶ。）であるU-Plane用のセッション情報(以下、「U-Planeセッション情報」または「転送用経路情報」と呼ぶ。)と、を含む。なお、C-Plane処理で管理、制御するセッションをC-Plane用のセッションと呼び、U-Plane処理で管理、制御するセッションをU-Plane用のセッションと呼ぶ。
【００１８】
C-Plane処理によりU-Plane情報に更新が発生した場合は、C-Planeプロセス２１は、通信回線を介してC/U連携プロセス３０に更新分のU-Plane情報を送信し、C/U連携プロセス３０は、セッションDB(U)３１を更新する。
PGW(U)３は、U-Planeセッション情報を格納するセッションDB(U)３１と、C-Planeプロセス２１と連携動作するC/U連携プロセス３０と、U-Plane処理を行うプロセスであるU-Planeプロセス３２を有する。なお、C-Plane処理とU-Plane処理とをまとめてC/U-Plane処理と記載する。
【００１９】
C/U連携プロセス３０は、C-Planeプロセス２１がC-Plane処理を行った際に送信した更新分のU-Plane情報を受け取り、セッションDB(U)３１を更新する。セッションDB(U)３１に格納されるU-Planeセッション情報は、セッションDB(C)２０に格納されるU-Planeセッション情報である。
【００２０】
U-Planeプロセス３２は、SGW４およびPDN６との間でユーザパケットであるU-Planeパケットを送受信することでU-Plane処理を行う。U-Planeプロセス３２は、U-Plane処理を実行する際、U-Plane処理を実施するために必要となるU-Plane情報をセッションDB(U)３１から取得する。
【００２１】
また、C-Planeプロセス２１とU-Planeプロセス３２とは、データ処理の構造が異なるため、扱うデータ構造が異なる。そのため、セッションDB(C)２０に格納されるU-Plane情報とセッションDB(U)３１に格納されるU-Planeセッション情報とは、それぞれのDBに格納される際のデータ構造が異なる。また、図１のようにC-Planeプロセス２１とU-Planeプロセス３２とは、物理的に異なる複数の通信装置によって実行されるため、セッションDB(C)２０に格納されるU-Plane情報とセッションDB(U)３１に格納されるU-Planeセッション情報とを同じDB、つまり、共有のDBで管理することはできない。
【００２２】
図2は、PGWの構成例を説明する図である。
PGW(C)２は、C-Planeプロセス２１を備えるPGW(C)制御部２２と、セッションDB(C)２０を備えるPGW(C)記憶部２３と、FrontPort２４と、C/U連携用Port２５とを有する。
【００２３】
PGW(C)制御部２２がプロセッサであり、PGW(C)記憶部２３がメモリであり、プロセッサが、メモリに格納されたプログラム（不図示）を実行することによって、C-Planeプロセス２１などの各機能が実現されてもよい。また、PGW(C)制御部２２とPGW(C)記憶部２３は、例えばField-programmable gate array(FPGA)のような集積回路で設計する等によりハードウェアで実現してもよい。
FrontPort２４は、モバイルコアネットワーク内のネットワーク7に接続されるポートである。C/U連携用Port２５は、PGW(U)３に接続されるポートである。
【００２４】
C-Planeプロセス２１は、SGW４よりFrontPort２４を経由してC-Planeパケットを受信し、受信したパケットを解析し、解析したデータに基づき、セッションDB(C)２０の更新を行う。また、C-Planeプロセス２１は、更新分のU-Plane情報をC/U連携用Port２５を経由してPGW(U)３内のC/U連携プロセス３０に向けて送信する。
【００２５】
PGW(U)３は、C/U連携プロセス３０およびU-Planeプロセス３２を備えるPGW(U)制御部３６と、セッションDB(U)３１を備えるPGW(U)記憶部３７と、FrontPort３３と、RearPort３５と、C/U連携用Port３４とを有する。
PGW(U)制御部３６とPGW(U)記憶部３７は、例えばFPGAのような集積回路で設計する等によりハードウェアで実現してもよい。また、PGW(U)制御部３６がプロセッサであり、PGW(U)記憶部３７がメモリであり、プロセッサが、メモリに格納されたプログラム（不図示）を実行することによって、C/U連携プロセス３０およびU-Planeプロセス３２などの各機能が実現されてもよい。
【００２６】
C/U連携プロセス３０は、C/U連携用Port３４を経由しC-Planeプロセス２１から受信したU-Plane情報に基づき、セッションDB(U)３１を更新する。U-Planeプロセス３２は、UL(Uplink)（UE5からPDN6へ）方向のパケット転送の場合は、SGW４からFrontPort３３を経由してユーザパケットを受信し、セッションDB(U)３１のU-Planeセッション情報に基づきRearPort３５を経由してPDN６にユーザデータを転送する。
【００２７】
U-Planeプロセス３２は、DL(Downlink)（PDN6からUE5へ）方向のパケット転送の場合は、PDN６からRearPort３５を経由してユーザデータを受信し、セッションDB(U)３１のU-Planeセッション情報に基づきFrontPort３３を経由してSGW６にユーザデータを転送する。ここで、セッションDB(U)３１のデータ構造は、セッションDB(C)２０に格納されたセッション情報のうち、U-Planeセッション情報の参照に特化したデータ構造である。
【００２８】
図3は、セッションDB(C)の詳細な構成例を説明する図である。
図３では、例として、PGW(U)3-1に関するC-Planeセッション情報およびU-Planeセッション情報を示している。セッションDB(C)２０は、C-Plane情報テーブル４０と、PGW(U)3毎のU-Plane情報テーブル５０を有する。
【００２９】
C-Plane情報テーブル４０は、C-Planeセッション情報を管理するテーブルであり、C-Plane情報フィールド４１、所属U-Plane情報フィールド４２などのフィールドを持つ。C-Plane情報テーブル４０は、C-Plane情報とU-Plane情報とを対応づけるテーブルである。
C-Plane情報フィールド４１は、SGW4-PGW1間のC-Planeセッション情報(International Mobile Subscriber Identity （IMSI）, Evolved Packet System Bearer ID(EBI),SGW-C-IP,SGW-C-TEID(Tunnel Endpoint ID),PGW-C-IP,PGW-C-TEID,etc...)を保持するフィールドである。ここで、IMSIは、携帯電話加入者などのUE5を一意に識別する識別子（識別情報、識別番号）である移動体端末識別子であり、EBIはIMSI内でユニークな識別子である。なお、UE5を一意に識別する識別子であれば、IMSIに限られず、International Mobile Equipment Identity (IMEI)などであってもよい。
【００３０】
SGW-C-IPは、C-Plane処理を実行するSGW4のIPアドレスであり、SGW-C-TEIDは、C-Plane処理を実行するSGW4が使用するセッション（通信経路）を識別する制御用SGW経路識別子であり、PGW-C-IPは、C-Plane処理を実行するPGW（C）2のIPアドレスであり、PGW-C-TEIDは、C-Plane処理を実行するPGW（C）2が使用するセッションを識別するPGW（C）経路識別子（制御用装置経路識別子）である。
【００３１】
所属U-Plane情報フィールド４２は、C-Plane情報に所属（対応）するU-Plane情報を特定する情報を保持するフィールドである。つまり、所属U-Plane情報フィールド４２は、C-Plane情報に対し複数紐付けられるU-Plane情報を特定する情報（以下、「PGW-U-TEID」と表記する。）のリストを保持するフィールドである。
【００３２】
C-Planeプロセス２１は、C-Plane情報フィールド４１と所属U-Plane情報フィールド４２の１つの組（レコード）によってC-Plane情報に所属するU-Plane情報を特定する。また、C-Planeプロセス２１は、U-Plane情報であるPGW-U-TEIDを検索キーにU-Plane情報テーブル５０を検索することで、U-Planeセッション情報を取得する。
【００３３】
U-Plane情報テーブル５０は、U-Planeセッション情報を管理するテーブルであり、U-Plane情報として、PGW-U-TEIDフィールド５１、PGW-U-IPフィールド５２、UEIPフィールド５３、SGW-U-TEIDフィールド５４、SGW-U-IPフィールド５５、PDNフィールド５６などのフィールドを持つ。U-Plane情報の各フィールドの１つ組（エントリ、レコード）が１つのU-Plane用のセッションに対応する。
【００３４】
PGW-U-TEIDフィールド５１は、U-Plane処理を実行するPGW（U）3が使用するセッションを識別するPGW（U）経路識別子（転送用装置経路識別子）であるPGW-U-TEIDを格納する。PGW-U-TEIDフィールド５１は、PGW２の中で重複がなくU-Plane情報テーブル５０で検索キーとして使用することができる。
【００３５】
PGW-U-IPフィールド５２は、U-Plane処理にてPGW１がパケット転送時に用いるPGW(U)3のInternet Protocol(IP)アドレス、つまり、U-Plane処理を実行するPGW（U）3のIPアドレスを格納する。なお、このIPアドレスは、PGW(U)3それぞれに異なるIPアドレスが割り当てられる。UEIPフィールド５３は、PGW1が当該UE5に割り当てたIPアドレス、つまり、UE5のIPアドレスを記憶しておくフィールドである。
【００３６】
SGW-U-TEIDフィールド５４は、U-Plane処理を実行するSGW4が使用するセッションを識別する転送用SGW経路識別子であるSGW-U-TEIDを格納し、SGW-U-IPフィールド５５は、U-Plane処理を実行するSGW4のIPアドレスを格納する。SGW-U-TEIDフィールド５４、SGW-U-IPフィールド５５は、当該セッションで対向となるSGW4でのセッションを特定する情報である。PDNフィールド５６は、UL(Uplink)パケットをPGW1が転送する際に必要となる転送先のPDNに関する情報（以下、「PDN情報」と呼ぶ。）である。また、PDN情報には、UE5とユーザデータを送受信する通信先の通信装置に関する情報が含まれていてもよい。
【００３７】
これらの情報のうち、PGW-U-TEID,PGW-U-IP,UEIPはPGW1にあらかじめ登録された値を、外部からの接続要求メッセージなどに応じて払いだす。SGW-U-TEID,SGW-U-IP,PDNは外部からの接続要求メッセージに含まれる情報を格納したものである。
【００３８】
図4は、セッションDB(U)の詳細な構成例を説明する図である。
図４では、例として、PGW(U)3-1に関するU-Planeセッション情報を示している。セッションDB(U)３１は、U-Plane高速参照テーブル６０を有する。U-Plane高速参照テーブル６０は、前述のようにU-Plane情報テーブル５０が更新される際にC/U連携プロセス３０によって同時に更新されるため、U-Plane情報テーブル５０と常に同一に保たれる。
【００３９】
U-Plane高速参照テーブル60は、U-Plane情報テーブル50と同一の情報を有するため、U-Planeプロセス32は、ユーザデータを転送する際にU-Plane情報テーブル50に格納されたU-Planeセッション情報をプロセス間通信（トランザクション）にてC-Planeプロセス21に問い合わせて取得するより高速にU-Planeセッション情報を取得することができるU-Plane高速参照テーブル60に、アクセス（参照）することが特長である。
【００４０】
PGW(U)3-1は、UL(Uplink)パケットにおいては、受信したULパケットに含まれるPGW-U-TEIDをU-Plane高速参照テーブル60のPGW-U-TEIDフィールド６１で検索し、U-Plane用のセッションを特定する。また、PGW(U)3-1は、DL(Downlink)パケットにおいては、受信したDLパケットに含まれるIPアドレスをU-Plane高速参照テーブル60のUEIPフィールド６３で検索し、U-Plane用のセッションを特定する。また、PGW(U)3-1は、受信したDLパケットをSGW4に転送する際に、U-Plane高速参照テーブル60の情報をDLパケットに設定する。
【００４１】
図5は、PGWがC-Planeパケットを受信しC-Plane処理を行う際のシーケンスを説明する図の例である。
UE5は、PDN6に対してユーザパケットを送信するのに先立って、U-Plane用のセッションを確立する処理、つまり、UE5とPDN6間の通信経路を確立する接続要求処理を実行する。UE５は、PDN6との接続、つまり、PDN6との間の通信経路（セッション）の確立を要求し、制御データの１つである接続要求メッセージをSGW4に向けて送信する（S101）。UE5が送信する接続要求メッセージには、C-Plane情報であるIMSI,EBIとUE５が接続を要求する接続先のPDN情報が含まれる。
【００４２】
SGW４は、UE5からの接続要求メッセージを受信すると、受信した接続要求メッセージにSGW4が保持する情報を追加して、情報を追加した接続要求メッセージをPGW(C)２に送信する（S102）。SGW4が送信する接続要求メッセージには、C-Plane情報であるIMSI,EBI,SGW-C-Plane情報(SGW-C-IP,SGW-C-TEID)と、U-Plane情報であるSGW-U-Plane情報(SGW-U-IP,SGW-U-TEID),PDN情報が含まれる。このメッセージにより、SGW４はC-Plane情報(IMSI,EBI,SGW-C-IP,SGW-C-TEID)およびU-Plane情報(SGW-U-IP,SGW-U-TEID,PDN情報)をPGW１に送信して、送信したC-Plane情報とU-Plane情報に関してSGW4とPGW1との間のセッションの確立を要求する。なお、SGW-C-Plane情報とSGW-U-Plane情報をまとめてSGW-C/U-Plane情報と記載する。
【００４３】
PGW(C)2のC-Planeプロセス２１は、SGW4からの接続要求メッセージを受信すると、受信した接続要求メッセージから、SGW4とのC-Plane処理とU-Plane処理に用いるC-Plane情報(PGW-C−Plane情報(PGW-C-IP,PGW-C-TEID))およびU-Plane情報(PGW-U-Plane情報(PGW-U-IP,PGW-U-TEID))を生成し、また、UE5がPDN6との通信の際に使用するIPアドレス(UEIP)を生成する（S103）。この際、C-Planeプロセス２１は、負荷分散を考慮したアルゴリズムにより、UE5が使用するU-Plane用のセッションを割り当てるPGW(U)３を３台のうちから選択する処理も行う。本実施例において、C-Planeプロセス２１は、PGW(U)３−１を選択したとする。
【００４４】
PGW-U-IPは、選択したPGW(U)３−１のIPアドレスであり、UEIPは、選択したPGW(U)３−１にあらかじめ割り当てられたUEIPのうち、未使用のものが払いだされる。なお、PGW-C-Plane情報とPGW-U-Plane情報をまとめてPGW-C/U-Plane情報と記載する。
【００４５】
C-Planeプロセス２１は、受信した接続要求メッセージに含まれるC-Plane情報(IMSI,EBI,SGW-C-Plane情報)およびU-Plane情報(SGW-U-Plane情報,PDN情報)と、ステップS103で生成したC-Plane情報(PGW-C−Plane情報)、U-Plane情報(PGW-U-Plane情報)およびUEIPをセッションDB(C)２０に格納してセッションDB(C)20の情報を更新する（S１０４）。
【００４６】
具体的には、C-Planeプロセス２１は、セッションDB(C)２０内のC-Plane情報テーブル４０に、C-Plane情報フィールド４１として、受信した接続要求メッセージに含まれるC-Plane情報(IMSI,EBI,SGW-C-Plane情報)と、ステップS103で生成したC-Plane情報(PGW-C-Plane情報)を保存(格納)し、所属U-Plane情報フィールド42として、生成したU-Plane情報(PGW-U-TEID)を保存する（Ｓ１０４）。なお、接続要求処理の後に、ベアラ追加処理を実行することにより確立済みのC-Plane用のセッションに対してU-Plane用のセッションを追加することができる。その結果、図３のようにC-Plane情報フィールド４１の１つのC-Planeセッション情報に対して所属U-Plane情報フィールド42に複数のU-Plane情報(PGW-U-TEID)が格納される。
【００４７】
また、C-Planeプロセス２１は、セッションDB(C)２０内のU-Plane情報テーブル５０に、受信した接続要求メッセージに含まれるU-Plane情報(SGW-U-TEID,SGW-U-IP, PDN情報)と生成したU-Plane(PGW-U-TEID,PGW-U-IP,UEIP)を保存する（Ｓ１０４）。
次に、C-Planeプロセス２１は、U-Plane情報(PGW-U-Plane情報,UEIP,SGW-U-Plane情報,PDN情報)を、ステップS103で選択したPGW(U)３−１内のC/U連携プロセス３０に送信する（S１０５）。
【００４８】
PGW(U)３−１内のC/U連携プロセス３０は、ステップS105で受信したU-Plane情報をPGW(U)３−１内のセッションDB(U)３１のU-Plane高速参照テーブル６０に保存してU-Plane高速参照テーブル６０の情報を更新する。これにより、セッションDB(U)３１内のU-Plane高速参照テーブル６０の内容が、セッションDB(C)２０内のU-Plane情報テーブル５０の内容と同じ状態、つまり、同期した状態が保たれる。
【００４９】
C-Planeプロセス２１は、U-Plane情報を送信すると、ステップS１０２で受信した接続要求メッセージへの応答であり、制御データの１つである接続応答メッセージをSGW４に送信する（S107）。この接続応答メッセージには、ステップS103でPGW(C)２が生成したPGW-C/U-Plane情報(PGW-C-TEID,PGW-C-IP,PGW-U-TEID,PGW-U-IP)とUEIPが含まれる。
【００５０】
SGW４は、接続応答メッセージを受信すると、受信した接続応答メッセージに含まれるPGW-C/U-Plane情報を保存して管理する。SGW４が、受信したPGW-C/U-Plane情報を管理することでPGW１との間でC/U-Plane処理が可能となる。また、SGW４は受信した接続応答メッセージに含まれるUEIPを接続応答メッセージとしてUE5側に送信する（S108）。UE５は、SGW4側の隣接装置(不図示)から接続応答メッセージを受信し、接続応答メッセージに含まれるUEIPをUE５が使用するIPとして用いて、PDN6へのユーザパケットをSGW4に向けて送信して（S109）、PDN6とのユーザパケットの送受信を行う事が出来るようになる。以上のように、接続要求メッセージを送信したUE5が、SGW4から接続応答メッセージを受信することで、U-Plane用のセッションが確立する。なお、セッションDB(C)２０の更新契機は、接続要求メッセージの受信の他にも、セッション情報の更新を要求するセッション情報更新要求メッセージの受信、確立したセッションの開放を要求するセッション解放要求メッセージの受信などがある。
【００５１】
図6は、PGWがU-Planeパケットを受信しU-Plane処理を行う際のシーケンスを説明する図の例である。図６のシーケンスは、図５のステップS１０９以降のシーケンスに対応する。
図5のシーケンスでU-Plane用のセッションが確立した状態にあるとき、PGW(U)３は、任意のタイミングでUL(Uplink)パケットまたはDL(Downlink)パケットを受信する可能性があり、受信したパケットは即時転送することが求められる。ステップS201〜S205は、PGW(U)３でのUL(Uplink)パケット受信時のシーケンスを、ステップS301〜S305は、PGW(U)３でのDL(Downlink)パケット受信時のシーケンスを表す。
【００５２】
UE５は、接続対象のPDN6に対して、接続応答メッセージから取得したUEIPを送信元IPアドレスとするULパケット（ユーザパケット）を送信する（S109）。SGW４は、UE5側の隣接装置からULパケットを受信すると、この隣接装置とSGW４との間に確立済みのU-Plane用のセッションから該当する（使用する）セッションを検索し、該当セッションを特定する。さらに、SGW４は、特定したセッションと紐づけられたセッションをPGW１との間に確立済みのU-Plane用のセッションから検索して取得し、取得した該当セッションのU-Plane情報(PGW-U-TEID,PGW-U-IP)を用いてカプセリングし、PGW-U-IPに対応するPGW(U)３−１に送信する（S202）。
【００５３】
この際、PGW-U-IPは、SGW４が、接続応答メッセージを受信して保存したPGW-U-Plane情報である、PGW(C)２が図５のステップS103にて選択したPGW(U)３−１のIPアドレスであるため、SGW4は、適切なPGW(U)３−１へULパケットを送信することが可能である。
【００５４】
PGW(U)３−１内のU-Planeプロセス３２−１は、ULパケットを受信すると、受信したULパケットに含まれるPGW-U-TEIDを検索キーにPGW(U)３−１内のセッションDB(U)３１−１を検索する（S203）。U-Planeプロセス３２−１は、検索結果として、PDN情報等のU-Plane情報を取得する（S204）。U-Planeプロセス３２−１は、受信したULパケットをデカプセリングし、ULパケットをステップS204で取得したPDN情報に対応するPDN6に送信する（S205）。この際、PGW(U)３は、ステップS204で取得したPDN情報を用いることで、PGW(U)３−１に接続された複数のPDN６-1〜3の中から接続対象のPDN6へ送信することができる。
【００５５】
PDN６は、ULパケットを送信したUE5に対して、UE５のIPアドレス(UEIP)を送信先IPアドレスとするDLパケット（ユーザパケット）を送信する（S301）。このDLパケットの送信先IPアドレスは、UEIPとなっているが、適切なネットワーク設定により、このDLパケットは、複数のPGW(U)３-1〜3のうちステップS205でULパケットを送信したPGW(U)３−１に到達する。これは、UE5に払い出すUEIPのレンジをPGW(U)３-1〜3にあらかじめ割り当てておくことで可能である。
【００５６】
たとえば、UEIP（100〜199）をPGW(U)3-1に、UEIP（200〜299）をPGW(U)3-2に、UEIP（300〜399）をPGW(U)3-3に割り当てておいた場合、PDN6-PGW1間のネットワーク・ルート設定を適切に設定することにより、PDN6がUEIP（150）のUE5宛にDLパケットを送信した場合、そのパケットがPGW(U)3-1に到達するようにすることができる。
【００５７】
PGW(U)３−１内のU-Planeプロセス３２−１は、DLパケットを受信すると受信したDLパケットに含まれるUEIPを検索キーにPGW(U)３−１内のセッションDB(U)３１−１を検索する（S302）。U-Planeプロセス３２−１は、検索結果として、確立されたU-Plane用のセッションのSGW-U-Plane情報(SGW-U-IP,SGW-U-TEID)を取得する（S303）。U-Planeプロセス３２−１は、受信したDLパケットを、ステップS303で取得したSGW-U-Plane情報(SGW-U-IP,SGW-U-TEID)を用いてカプセリングし、SGW-U-IPに対応するSGW４に送信する（S304）。
SGW４は、受信したDLパケットをデカプセリングし、DLパケットをUE5側に送信する(S305)。UE５は、SGW4側の隣接ノード(不図示)からデカプセリング済みのDLパケットを受信する。
【００５８】
ここで、図５のステップS１０２でSGW4が送信した接続要求メッセージを受信した際のPGW1のC-Planeプロセス21が実行するセッション生成処理のフローチャートの例を説明する。
ステップS102でSGW4が送信した接続要求メッセージを受信したC-Planeプロセス21は、受信した接続要求メッセージから、IMSI,EBI,SGW-C-IP,SGW-C-TEID,SGW-U-IP,SGW-U-TEID,PDNを取得し、受信した接続要求メッセージで接続が要求されるセッションに対して、SGW4とのC-Plane処理に用いるC-Plane情報(PGW-C−Plane情報(PGW-C-IP,PGW-C-TEID))を生成し、負荷分散を考慮したアルゴリズムにより、UE5が使用するU-Plane用のセッションを割り当てるPGW(U)３を選択し、選択したPGW(U)３に関する情報としてU-Plane処理に用いるU-Plane情報(PGW-U-Plane情報(PGW-U-IP,PGW-U-TEID))を生成し、UE5がPDN6との通信の際に使用するUEIPとして、選択したPGW(U)３にあらかじめ割り当てられたUEIPのうち、未使用のものを生成して払いだす（S103）。
【００５９】
次にC-Planeプロセス21は、C-Plane情報テーブル40のC-Plane情報フィールド41に、受信した接続要求メッセージから取得したC-Plane情報(IMSI,EBI,SGW-C-IP,SGW-C-TEID)とステップS１０３で生成したPGW-C-IP,PGW-C-TEIDそれぞれを格納し、所属U-Plane情報フィールド42に、ステップS１０３で生成したPGW-U-TEIDを格納し、U-Plane情報テーブル50の各フィールドにステップS１０３で生成したPGW-U-TEID,PGW-U-IP,UEIPと取得したSGW-U-TEID,SGW-U-IP,PDNを格納して、セッションDB(C)20の情報を更新する（S104）。
【００６０】
そしてC-Planeプロセス21は、U-Plane情報テーブル50の情報更新に用いたPGW-U-TEID,PGW-U-IP,UEIP,SGW-U-TEID,SGW-U-IP,PDNをC/U連携プロセス３０に送信する（S105）。
最後にC-Planeプロセス21は、ステップS１０３で生成したPGW-C-IP,PGW-C-TEID,PGW-U-IP,PGW-U-TEID,UEIPを含む接続応答メッセージをSGW4に向けて送信する（S107）。
【００６１】
以上に説明したように、本実施例によると、C-Plane処理とU-Plane処理を分離したC/U分離構成のPGW１において、U-Planeパケットを転送する際にU-Planeプロセス３２からC-Planeプロセス２１にU-Planeセッション情報を取得するプロセス間通信（トランザクション）が発生する事なく、ユーザデータの転送遅延時間を小さくすることができる。また、U-Plane情報テーブル５０を更新する契機でU-Plane高速参照テーブル６０を更新することにより、U-Plane高速参照テーブル６０は常に全ての情報をU-Plane情報テーブル５０の最新の状態に保つことができる。
【００６２】
また、本実施例によれば、U-Plane用のセッションが確立した後にPGW1が最初にU-Planeパケットを受信する場合や、前回のU-Planeパケットの通信から所定の時間が経過している場合、U-Planeセッション情報をキャッシュとして保持する際にキャッシュ容量を超過する場合などでも、転送遅延時間を小さくすることができる。
【００６３】
また、U-Planeパケットの転送時にC-Planeプロセス２１へのプロセス間通信が発生しないことにより、大量のU-Planeパケットの転送処理負荷がある場合においても、PGW1において、安定したC-Plane処理を行うことができる。また、昨今需要が高まっているVoice over Internet Protocol（VoIP）用途では、パケットの転送遅延性能値が音質に大きな影響を及ぼすため、UE5-PDN6間のパケット通信において転送遅延時間を小さくすることで音質の劣化、低下を防ぎ、また、音質を向上して快適な通話が可能となる。
（実施例２）
図7は、実施例２におけるネットワークシステム全体の構成図の例である。なお、実施例１と同一の箇所または同様な機能を有する箇所には同一の参照符号を付し、重複する説明は省略して説明する。
実施例２では、C/U分離構成のPGW1をインメモリ分散Key-Value-Store（以下、「KVS」と呼ぶ。）と呼ばれるフレームワークを用いて装置分散を行う例を説明する。KVSを用いると、複数の装置にデータを分散配置し、アプリケーションであるプロセスからは透過的なデータアクセスを可能とし、また、装置障害時の可用性を保障するなどの装置分散の基本的なメリットを享受しつつ、アプリケーションの実装を簡易に保つことができる。
【００６４】
KVSを用いてPGW1を構成する場合、実施例１の図1のセッションDB(C)２０相当のDBが、複数のU-Plane装置に分散され、かつ、DBのデータ構造はKVS特有のデータ構造となる。
PGW１は、KVSを用いて構成されるPGW(C)２および複数のPGW(U)３を備える(図７においては３台)。PGW(C)２は、KVS Application Programming Interface(KVS API)２６を有するC-Planeプロセス２１を備える。KVS API２６は、PGW(U)3に備わるKVS API７４とデータの送受信を行って、PGW1においてKVSとしての様々な機能を実行する。C-Planeプロセス２１は、このKVS API２６を通じて、C-Planeプロセス２１が管理するデータを、装置を意識することなくPGW(U)３-1〜3内のセッションDB(C)70-1〜3に分散的に格納し、アクセスすることが可能である。
【００６５】
PGW(U)３は、KVSプロセス７１、セッションDB(C)７０、C/U連携プロセス３０、セッションDB(U)７５、U-Planeプロセス３２を有する。
KVSプロセス３３は、KVSを用いた分散装置上で動作するプロセスであり、分散装置上でKVS処理を実行する。
【００６６】
セッションDB(C)７０は、KVSのデータ分散機能を用いて、C-Planeプロセス２１が持つデータをPGW(U)３-1〜3に分散して持たせたものである。C/U連携プロセス３０は、User Function７２、Event Handler７３、KVS API７４を有する。User Function７２、Event Handler７３は、KVSプロセス７１から呼び出す関数を格納する。User Function７２はC/Uセッション情報更新時にセッションDB(C)７０とセッションDB(U)７５の同時更新を可能にする関数であり、Event Handler７３はC/Uセッション情報更新時にセッションDB(C)７０とセッションDB(U)７５の冗長データの同時更新を可能にする関数である。
【００６７】
KVS API７４は、PGW(C)2に備わるKVS API２６とデータの送受信を行って、PGW1においてKVSとしての様々な機能を実行する。C/U連携プロセス７２は、このKVS API７４を通じて、PGW(U)３-1〜3内に分散的に格納されたセッションDB(C)７０に、装置を意識することなくアクセスすることが可能である。
【００６８】
セッションDB(U)７５をあらかじめ更新しておくことで、U-Plane処理を行う際にU-Planeプロセス３２がプロセス間通信の発生を伴わずにU-Plane処理（U-Planeパケットの転送）に必要な情報を取得することができ、U-Planeパケットの転送遅延時間を小さくすることができる。
【００６９】
図8A、図8Bおよび図8Cは、セッションDB(C)およびセッションDB(U)の詳細な構成例を説明する図である。
図８Ａは、PGW(U)3-1が有するセッションDB(C)70-1およびセッションDB(U)75-1のデータ構造であり、図８Bは、PGW(U)3-2が有するセッションDB(C)70-2およびセッションDB(U)75-2のデータ構造であり、図８Cは、PGW(U)3-3が有するセッションDB(C)70-3およびセッションDB(U)75-3のデータ構造である。以下の説明では、PGW(U)をノードと表記し、PGW(U)3-1〜PGW(U)3-3をそれぞれノード１〜ノード３と表記する。
【００７０】
セッションDB(C)７０は、PGW(C)２内のC-Planeプロセス２１が管理するデータである。データは３台のノードに分散して格納される。すなわち、セッションDB(C)７０-1に格納されるノード1のデータ８３-1、セッションDB(C)７０-2に格納されるノード2のデータ８３-2、セッションDB(C)７０-3に格納されるノード3のデータ８３-3である。
【００７１】
また、セッションDB(C)７０では、データの多重化も行われる。すなわち、セッションDB(C)７０は、他のノードのデータを多重化データとして格納する。セッションDB(C)７０-1には、ノード3の多重化データ８４-1が格納され、セッションDB(C)７０-2には、ノード1の多重化データ８４-2が格納され、セッションDB(C)７０-3には、ノード2の多重化データ８４-3が格納される。C-Planeプロセス２１は、KVS API２６が提供するAPIにより、これらのデータの分散化および多重化を意識することなくセッションDB(C)７０にアクセスすることができる。
【００７２】
セッションDB(C)７０は、C-Plane情報テーブル８０を有する。C-Plane情報テーブル８０は、KVSのデータ構造であるKEYフィールド８１とVALUEフィールド８２で構成される。
KEYフィールド８１には、KEYフィールド８１とVALUEフィールド８２の１つの組（エントリ、レコード）のデータを格納する格納先のノードを決定する際に使用されるKEYが格納される。VALUEフィールド８２には、KEYフィールド８１の検索キーに紐づく（対応する）VALUEが格納される。本実施例において、KEYフィールド８１には、IMSIが格納され、VALUEフィールド８２には、当該レコードのKEYフィールド８１に格納されたIMSIに紐づくC-Plane情報および、そのC-Plane情報に紐づくU-Plane情報(PGW-U-TEID,PGW-U-IP,UEIP,SGW-U-TEID,SGW-U-IP,PDN情報)が格納される。
【００７３】
C-Planeプロセス２１は、KEYフィールド８１とVALUEフィールド８２の１つのレコードによってKEYに紐づく（対応する）VALUEを特定する。
KVS API26は、KEYフィールド８１の値を、当該レコードのデータの格納先のノードを決定するための入力値としてハッシュ関数に入力し、その出力値に基づいて格納先のノードを決定する。なお、格納先のノードを決定する方法は、KEYフィールド８１の値を用いて一意のノードを決定することができれば、ハッシュ関数を用いた方法以外の方法であってもよい。
【００７４】
VALUEフィールド８２は、データベース上は１つのフィールドであるが、フィールドの意味的な区切りをカンマで表現して、複数の情報を格納している。また、VALUEフィールド８２は、実装上使用可能なエスケープ文字で連結することで複数の情報を格納してもよい。VALUEフィールド８２に複数の情報を格納する方法は、他の方法であってもよい。
このように、全ての情報をC-Plane情報テーブル８０の１つのレコードに集約する理由は、KVSのデータ分散機能により、同一のIMSIに関するデータの格納先が複数のノードにまたがってしまうことを防ぐためである。
【００７５】
セッションDB(U)７５は、U-Plane高速参照テーブル６０を有する。また、セッションDB(U)７５は、U-Planeプロセス３２がU-Planeパケットを転送する際に参照するU-Plane情報を、高速に参照することを目的として、C-Planeプロセス２１が作成するDBである。U-Planeプロセス３２は、U-Planeパケットを転送する際にノードを跨いだデータにアクセスすることなく、セッションDB(U)７５にアクセスすることで、データを高速に参照することができる。このDBのデータの分散化および多重化は、セッションDB(C)７０と同様に行われる。すなわち、セッションDB(U)75-1には、ノード1のデータ97-1とノード3の多重化データ98-1が格納され、セッションDB(U)75-2には、ノード2のデータ97-2とノード1の多重化データ98-2が格納され、セッションDB(U)75-3には、ノード3のデータ97-3とノード2の多重化データ98-3が格納される。
【００７６】
U-Plane高速参照テーブル６０は、KVSのデータ構造ではないためテーブルの構造やフィールド数に制約がない。U-Planeプロセス32は、ULパケットを転送する場合は、PGW-U-TEIDフィールド91を、DLパケットを転送する場合は、UEIPフィールド93を検索キーとしてU-Plane高速参照テーブル６０を検索する。
【００７７】
図9は、実施例２におけるPGWがC-Planeパケットを受信しC-Plane処理を行う際のシーケンスを説明する図の例である。
図９のシーケンスは、実施例１の図５のステップS102でSGW4が送信した接続要求メッセージをPGW1が受信した後から、図5のステップS107で接続応答メッセージをPGW1が送信するまでのシーケンスを説明するが、図5のUE５、SGW４、PDN６の図示を省略している。また、図９では、PGW(U)3-1とPGW(U)3-2の間での処理について説明するが、PGW(U)3-1とPGW(U)3-3の間およびPGW(U)3-2とPGW(U)3-3の間でも同様な処理を行う。
【００７８】
C-Planeプロセス２１は、SGW4から接続要求メッセージを受信すると、KVS API２６とKVSプロセス71が連携して提供するUser Function呼び出し機能を用いて、C/U連携プロセス30のcplane_put()関数を呼び出す（実行する）（S401,S402）。つまり、KVS API２６は、KVSプロセス７１を介して（S401）、C/U連携プロセス30のcplane_put()関数を呼び出す（S402）。cplane_put()関数は、C-Plane処理に関する引数の値をPGW(U)3が他のプロセスから受信する関数である。
【００７９】
このとき、C-Planeプロセス２１がcplane_put()関数に設定する引数は、KEYがIMSI、VALUEが対応するVALUEフィールド８２の値(C/U-Plane情報（C-Plane情報（EBI,SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID）とU-Plane情報（SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDN）)である。このとき、cplane_put()関数の呼び出し先となるPGW(U)３ノードの選択は、KVS API２６がKEYを元にハッシュ計算を行うことにより決定する。この例では、KVS API２６は、ノード１を選択し、PGW(U)３-1のKVSプロセス７１−１を介してPGW(U)３-1のC/U連携プロセス30のcplane_put()関数を呼び出す(S401,S402)。S402のcplane_put()関数の引数は、S401のcplane_put()関数の引数をそのまま引き継ぐ。この仕組みにより、C-Planeプロセス２１は、ノード選択処理を意識することなく適切なノードが提供するcplane_put()関数を呼び出すことができる。
【００８０】
cplane_put()関数を呼び出されたC/U連携プロセス30-1のUser Function７２-1は、C/U連携プロセスの実装の関数であり、セッションDB(U)を更新するuplane_put()関数と、セッションDB(C)を更新するput()関数を同時に呼び出す役割を持つ。
uplane_put()関数は、cplane_put()関数から受信した情報に含まれていたノード１のデータであるU-Plane情報(PGW-U-TEID,PGW-U-IP,UEIP,SGW-U-TEID,SGW-U-IP,PDN情報)によりセッションDB(U)７５-1のU-Plane高速参照テーブル９０−１を更新する（S403）。つまり、User Function７２-1がuplane_put()関数に設定する引数は、U-Plane情報(PGW-U-TEID,PGW-U-IP,UEIP,SGW-U-TEID,SGW-U-IP,PDN情報)である。uplane_put()関数は、セッションDB(U)７５へのデータ格納を行う関数である。
【００８１】
put()関数は、cplane_put()関数の引数に設定したKEY,VALUEをそのまま用いてput()関数の引数とし、User Function７２-1のput()関数を介して、KVS API７４-1が提供するput()関数を呼び出す（S404）。put()関数は、セッションDB(C)７０へのデータ格納を行う関数である。
【００８２】
User Function７２-1のput()関数を介してUser Function７２-1から呼び出されたKVS API７４-1は、KEYを元にデータ格納先のPGW(U)ノードを決定し、決定したノードのKVSプロセス７１が提供するput()関数を呼び出す（S405）。このKVSプロセス７１のput()関数の引数はS404のput()関数の呼び出し時の引数をそのまま引き継ぐ。KVS API７４-1は、ノード決定の際に、ステップS401と同じKEY=IMSIを用いるため、ステップS401で決定したノードと同一のノード(この例ではノード1)が選択される。
KVS API７４-1のput()関数を介してKVS API７４-1から呼び出されたKVSプロセス７１-1は、セッションDB(C)７０-1のC-Plane情報テーブル８０-1のKEY81およびVALUE82それぞれにKVS API74-1からS405でput()関数の引数として受信したノード１のデータであるKEY,VALUEを格納する（S406）。
【００８３】
ここで、C-Planeプロセス２１がKVSプロセス７１−１を介して直接KVS API74-1のput()関数の呼び出しを行うのでなく、User Function７２−１を介してKVS API74-1のput()関数の呼び出しを行うことで、KVS API74-1のput()関数の呼び出し（S405）によってC-Plane情報テーブル８０−１を更新する(S406)とともに、User Function７２のuplane_put()関数の呼び出しによってU-Plane高速参照テーブル９０−１の更新(S403)を実行することができる。これにより、U-Plane高速参照テーブル９０−１のノード１のデータ９７−１が常にC-Plane情報テーブル８０−１のノード１のデータ８３−１と同期した状態に保たれる。
【００８４】
次に、KVSプロセス７１-1は、KVS API74-1から受信したKEYからノード１のデータの多重化先のPGW(U)３を決定(この例ではノード2)し、KVSプロセス７１-1が提供するduplicate()関数を介してKVSプロセス７１-2にduplicate()関数の引数であるKEY,VALUEを送信する（S407）。duplicate()関数は、KVSが提供する関数であり、多重化データをセッションDB(C)７０に格納する関数である。
【００８５】
ここで、duplicate()関数の引数に設定するKEY,VALUEはステップS401と同様、KEYはIMSI、VALUEは対応するVALUEフィールド８２の値(C/U-Plane情報)である。なお、このステップS407の処理は、KVSプロセス71-1により自動的に行われる処理であり、KVSを使用するC-Planeプロセス２１またはC/U連携プロセス３０側からこの処理を起動する必要はない。
【００８６】
PGW(U)3-2のKVSプロセス7１-2は、duplicate()関数の引数として受信したKEY,VALUEをセッションDB(C)７０-2のC-Plane情報テーブル８０-2のノード１の多重化データ８４−２としてC-Plane情報テーブル８０-2を更新する（S408）。またKVSプロセス７１-2は、KVSが提供するイベントハンドラ機能により、C/U連携プロセス30-2が提供するcplane_duplicate()関数を呼び出す（S409）。
【００８７】
Event Handler７３-2は、cplane_duplicate()関数の引数として受信した情報に含まれていたU-Plane情報(PGW-U-TEID,PGW-U-IP,UEIP,SGW-U-TEID,SGW-U-IP,PDN情報)を引数とするuplane_duplicate()関数によりセッションDB(U)７５-2のU-Plane高速参照テーブル９０−２を更新する(S410)。
【００８８】
このイベントハンドラ機能の実装により、C-Plane情報テーブル８０−２に格納されるノード１の多重化データ更新処理(S408)とともにU-Plane高速参照テーブル９０−２に格納されるノード１の多重化データ更新処理(S410)を実行する。これにより、U-Plane高速参照テーブル９０−２のノード１の多重化データ９８−２が常にC-Plane情報テーブル８０−２のノード１の多重化データ８４−２と同期した状態に保たれる。
PGW1は、UE5とPDN6との間のU-Plane用のセッションを確立すると、UE5からのULパケットまたはPDN6からのDLパケットを受信してU-Plane処理を行う。実施例２において、PGW１が実行するU-Plane処理のシーケンスは、図6で説明した実施例１の場合と同様である。
【００８９】
ノード２のKVSプロセス７１−２もノード１のKVSプロセス７１−１と同様に動作してノード２のデータについて、U-Plane高速参照テーブル９０−２のノード２のデータ９７−２とC-Plane情報テーブル８０−２のノード２のデータ８３−２とを同期した状態に保つため、U-Plane高速参照テーブル９０−２のノード１の多重化データ９８−２およびノード２のデータ９７−２それぞれが常にC-Plane情報テーブル８０−２のノード１の多重化データ８４−２およびノード２のデータ８３−２と同期した状態に保たれる。
【００９０】
次に、図９のステップS401でC-Planeプロセス２１がcplane_put()関数を呼び出した際のPGW(U)３が実行するセッション生成処理のフローチャートの例を説明する。ここでは、PGW(U)3-1での処理について説明するが、PGW(U)3-２とPGW(U)3-3でも同様な処理を行う。
C-Planeプロセス２１によって呼び出されたKVSプロセス７１−１は、cplane_put()関数の引数として、KVS API２６のcplane_put()関数を介してC-Planeプロセス２１から送信されたIMSI,SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを受信し、これらを引数とするKVSプロセス７１−１のcplane_put()関数によってUser Function72-1を呼び出す（S４０２）。
【００９１】
User Function72-1は、KVSプロセス71-1のcplane_put()関数を介してKVSプロセス71-1から送信されたSGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを引数とするUser Function72-1のuplane_put()関数によりセッションDB(U)７５−１のU-Plane高速参照テーブル９０−１の各フィールドにこれらの情報を格納して、U-Plane高速参照テーブル９０−１のノード１のデータ９７−１を更新する（S４０３）。
【００９２】
User Function72-1は、KVSプロセス７１−１がcplane_put()関数の引数に設定したIMSI,SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを引数とするUser Function72-1のput()関数によりKVS API７４−１およびKVSプロセス７１−１それぞれのput()関数を介してセッションDB(C)70-1のC-Plane情報テーブル80-1のKEYフィールド81にIMSIを格納、VALUEフィールド82にIMSI以外の情報(SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDN)を格納してC-Plane情報テーブル８０-1のノード１のデータ８３−１を更新する（S４０４、S４０５、S４０６）。
【００９３】
次に、図９のステップS407でノード１のKVSプロセス７１−１がduplicate()関数を呼び出した際のPGW(U)３が実行するセッション情報多重化処理のフローチャートの例を説明する。ここでは、PGW(U)3-2での処理について説明するが、PGW(U)3-１とPGW(U)3-３でも同様な処理を行う。
【００９４】
KVSプロセス７１−１によって呼び出されたKVSプロセス71-2は、duplicate()関数の引数に設定され、KVSプロセス７１−１のduplicate()関数を介してKVSプロセス７１−１から送信されたIMSI,SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを受信し、これらを引数とするKVSプロセス71-2のduplicate()関数によりセッションDB(C)７０-2のC-Plane情報テーブル80-2のKEYフィールド81にIMSIを格納、VALUEフィールド82にIMSI以外の情報(SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDN)を格納してC-Plane情報テーブル８０-2のノード１の多重化データ８４−２を更新する（S408）。
【００９５】
また、KVSプロセス７１-2は、イベントハンドラ機能により、KVSプロセス７１−１から送信されたIMSI,SGW-C-IP,SGW-C-TEID,PGW-C-IP,PGW-C-TEID,SGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを引数とするKVSプロセス７１−２cplane_duplicate()関数によってEvent Handler73-2を呼び出す（S４０９）。
【００９６】
Event Handler73-2は、KVSプロセス71-2のcplane_duplicate()関数の引数として受信した情報に含まれていたSGW-U-IP,SGW-U-TEID,PGW-U-IP,PGW-U-TEID,UEIP,PDNを引数とするEvent Handler73-2のuplane_duplicate()関数によりセッションDB(U)７５−２のU-Plane高速参照テーブル９０−２のノード１の多重化データ９８−２としてU-Plane高速参照テーブル９０−２の各フィールドに格納してU-Plane高速参照テーブル９０−２を更新する（S４１０）。
【００９７】
以上に説明したように、本実施例によると、KVSを利用したC-Plane処理とU-Plane処理を分離した実装において、U-Planeパケットを転送する際に、U-Planeプロセス３２が直接セッションDB(U)７５を参照するため、U-Planeプロセス３２からのプロセス間通信が発生する事なく、転送遅延時間を小さくすることができる。
【００９８】
KVSは、一般的に通信用途を想定していないため、それに耐えうるデータクエリの応答速度を備えていない。そのため、KVSで構築したDBのデータクエリの応答速度は、利用するKVSの応答速度の制約を受けるが、本実施例によれば、U-Plane高速参照テーブル９０をKVSで構築したDBとは別に構築するため、その制約の影響を受けない。そのため、KVSを利用してユーザデータの転送遅延時間を小さくしつつ、データの装置分散および多重化といったKVSのメリットを享受することができる。
【００９９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、Access Gateway（AGW）とHome Agent(HA)を有するネットワークの場合、AGWがSGW4と、HAがPGW1と同様に動作する。本発明は、C-PlaneとU-Planeの両方を扱う装置であれば適用可能である。
【０１００】
また、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えばＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のような集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD（Solid State Drive）等の記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD等の記録媒体に置くことができる。 
また、「ａａａテーブル」の表現にて各種情報を説明したが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ａａａテーブル」を「ａａａ情報」と呼ぶことができる。また、「格納する」の表現にて各種テーブルに各情報を記録することを説明したが、「登録する」または「設定する」と表現されてもよい。
【０１０１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１０２】
１  PGW
２  PGW(C)
３  PGW(U)
２０、７０  セッションDB(C)
２１  C-Planeプロセス
２６、７４  KVS API
３０  C/U連携プロセス
３１、７５  セッションDB(U)
３２  U-Planeプロセス
４０、８０  C-Plane情報テーブル
５０  U-Plane情報テーブル
６０、９０  U-Plane高速参照テーブル 
７２  User Function
７３  Event Handler
【図１】
2017050747.tif 000003
【図２】
2017050747.tif 000004
【図３】
2017050747.tif 000005
【図４】
2017050747.tif 000006
【図５】
2017050747.tif 000007
【図６】
2017050747.tif 000008
【図７】
2017050747.tif 000009
【図８Ａ】
2017050747.tif 000010
【図８Ｂ】
2017050747.tif 000011
【図８Ｃ】
2017050747.tif 000012
【図９】
2017050747.tif 000013