(57)【特許請求の範囲】
【請求項１】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記決定した経路に従って、前記端末のデータが転送され、
前記制御装置が取得する前記サービスファンクションの利用可否を示す情報は、当該サービスファンクションによる前記端末の認証結果、前記端末の当該サービスファンクションの利用量が閾値以上となった場合に送信される切断通知の受信の有無、及び当該サービスファンクションが異常状態である場合に送信される異常通知の受信の有無の少なくとも一つを含むことを特徴とするネットワークシステム。
【請求項２】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用できないサービスファンクションを選択し、
前記端末のデータが前記選択したサービスファンクションを経由しない前記経路を決定し、
前記決定した経路に従って、前記端末のデータが転送されることを特徴とするネットワークシステム。
【請求項３】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記決定した経路に従って、前記端末のデータが転送され、
前記端末は、ネットワークに接続する場合、接続要求を送信し、
前記制御装置は、
前記接続要求を受信した場合、前記端末がネットワークに接続するための認証処理を実行し、
前記接続要求を送信した端末のユーザが加入するサービスを提供するサービスファンクションに、前記端末の認証要求を送信し、
前記サービスファンクションは、
前記制御装置から認証要求を受信した場合、前記端末の当該サービスファンクションの認証処理を実行し、
前記サービスファンクションの認証処理の認証結果を前記制御装置に送信し、
前記制御装置は、
前記認証処理の認証結果を前記サービスファンクションの利用可否を示す情報として取得して、前記サービス状態管理情報を更新し、
前記端末がネットワークに接続するための認証処理の認証結果が成功したことを示す場合、前記端末にＩＰアドレスを割り当て、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ認証が成功したサービスファンクションを経由する前記経路を決定し、
前記端末に割り当てたＩＰアドレスを前記決定した経路上の前記サービスファンクションに通知することを特徴とするネットワークシステム。
【請求項４】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記決定した経路に従って、前記端末のデータが転送され、
前記サービスファンクションは、前記端末による利用量が閾値以上となった場合、切断通知を前記制御装置に送信し、
前記制御装置は、
前記切断通知を受信した場合、前記受信した切断通知を送信したサービスファンクションを前記端末が利用できないこと示すように前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記切断通知を送信したサービスファンクションを経由しないように前記経路を変更することを特徴とするネットワークシステム。
【請求項５】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記決定した経路に従って、前記端末のデータが転送され、
前記端末は、前記ユーザが加入するサービスに変更があった場合、変更後のサービスを通知するための加入サービス変更通知を送信し、
前記制御装置は、
前記加入サービス変更通知を受信した場合、新たに加入したサービスがあるか、削除したサービスがあるかを判定し、
前記新たに加入したサービスがある場合、当該サービスを提供するサービスファンクションの利用可否を示す情報を取得し、
前記新たに加入したサービスと、前記取得した利用可否を示す情報とを前記サービス状態管理情報に登録し、
前記削除したサービスがある場合、前記端末のユーザが当該サービスに加入していないことを示すように、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末の経路を変更することを特徴とするネットワークシステム。
【請求項６】
サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記決定した経路に従って、前記端末のデータが転送され、
前記制御装置が取得する前記サービスファンクションの利用可否を示す情報は、前記サービスファンクションによる前記端末の認証結果を含み、
前記制御装置は、
前記サービスファンクションの認証結果の取得順序が登録されたサービス状態確認手順情報を保持し、
前記サービス状態確認手順情報に基づいて、前記ユーザが加入するサービスを提供するサービスファンクションにおいて、前記認証結果の取得順序を決定し、
前記決定した取得順序に従って、前記サービスファンクションの認証結果を取得することを特徴とするネットワークシステム。
【請求項７】
請求項６に記載のネットワークシステムであって、
前記サービス状態確認手順情報には、前記サービスファンクションが、他のサービスファンクションの認証結果が成功したことを示す場合にのみ認証結果を取得する従属サービスファンクションであるか否かを示す情報が登録され、
前記制御装置は、
前記サービス状態確認手順情報に基づいて、前記ユーザが加入するサービスを提供するサービスファンクションに前記従属サービスファンクションが含まれるか否かを判定し、
前記ユーザが加入するサービスを提供するサービスファンクションに前記従属サービスファンクションが含まれる場合、前記他のサービスファンクションの認証結果を取得し、
前記取得した他のサービスファンクションの認証結果が成功したことを示す場合、前記従属サービスファンクションの認証結果を取得することを特徴とするネットワークシステム。
【請求項８】
請求項７に記載のネットワークシステムであって、
前記制御装置は、前記取得した他のサービスファンクションの認証結果が失敗したことを示す場合、当該他のサービスファンクション及び前記従属サービスファンクションを経由しない経路を設定することを特徴とするネットワークシステム。
【請求項９】
サービスを提供する少なくとも一つのサービスファンクションを制御する制御装置であって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置は、
前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記サービスファンクションから利用可否を示す情報を取得し、
前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用できないサービスファンクションを選択し、
前記端末のデータが前記選択したサービスファンクションを経由しない前記経路を決定し、
前記決定した経路に従って、前記端末のデータが転送されることを特徴とする制御装置。
【請求項１０】
サービスを提供する少なくとも一つのサービスファンクションを制御する処理を、制御装置が有するプロセッサに実行させるプログラムであって、
端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、
前記制御装置が有するメモリは、前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、
前記処理では、
前記プロセッサが、前記サービスファンクションから利用可否を示す情報を取得し、
前記プロセッサが、前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、
前記プロセッサが、前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、
前記プロセッサが、前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用できないサービスファンクションを選択し、
前記プロセッサが、前記端末のデータが前記選択したサービスファンクションを経由しない前記経路を決定し、
前記決定した経路に従って、前記端末のデータが転送されることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末のユーザが加入するサービスに応じて端末のデータがサービスファンクションを経由して転送されるネットワークシステムに関する。
【背景技術】
【０００２】
従来、ルータ及びゲートウェイ等の専用ハードウェアで実現されていたネットワークサービスに関する機能を、汎用サーバ上のソフトウェアとして仮想化させるNFV(Network Functions Virtualization)に注目が集まっており、国際的にもETSI(European Telecommunications Standards Institute)を中心に技術検討が進められている。
【０００３】
仮想化されたサービスを柔軟に組み合わせてユーザが利用できるようにするためには、適切なサービスに適切な順序でトラフィックを転送させるサービスチェイニング技術が必要であり、標準化団体IETF(Internet Engineering Task Force)等で活発な議論がなされている。
【０００４】
サービスチェイニングの経路を設定する技術として、米国特許出願公開第2008/0177896号明細書（特許文献１）がある。この公報では、「ある実施例では、装置は、（ｉ）サービスクラシファイアーを登録し、サービスクラシファイアにコンテキスト情報を提供し、（ii）複数のサービスを登録するサービスブローカーを含む。サービスブローカーは、サービスクラシファイアからケイパビリティー及びサービスリクエストを受信する。さらに、コンテクスト情報は、サービスヘッダ、到達情報、及びカプセル化を含み、サービスヘッダ及びカプセル化は、サービスクラシファイアーでパケットに付加又は関連付けられる。さらに、サービスクラシファイアーはこの情報をパケットを第１サービスノードにリダイレクトするために用いることができる。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第2008/0177896号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サービスチェイニング技術を用いてユーザのユーザ端末にサービスを提供する場合、サービスを提供するサービスファンクションを管理するサービス事業者と、サービスチェイニングの経路を管理するネットワーク事業者とが異なることが想定される。この場合、ユーザ端末のサービスファンクションの利用可否と経路とを一括管理できず、ユーザ端末のサービスファンクションの利用可否を経路に反映することができない。特許文献１に記載された技術では、サービスファンクションの利用可否を考慮して経路が設定されないので、サービスファンクションが利用できない状態で経路が設定されても、当該経路のトラフィックは停止してしまうか、サービスファンクションのリソースを不適切に消費してしまう。
【０００７】
そこで、本発明は、サービスファンクションを管理する事業者とネットワークの経路を管理する事業者とが異なる場合であっても、サービスファンクションの利用可否を反映した経路を設定するネットワークスイッチを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、サービスを提供する少なくとも一つのサービスファンクションと、前記少なくとも一つのサービスファンクションを制御する制御装置とを備えるネットワークシステムであって、端末のデータは、前記端末のユーザが加入するサービスに応じたサービスファンクションを所定の順番で経由する経路に従って転送されることによって、前記ユーザが加入したサービスが当該ユーザの端末に提供され、前記制御装置は、前記ユーザが加入するサービスと、前記サービスを提供するサービスファンクションの利用可否を示す情報とが登録されたサービス状態管理情報を保持し、前記サービスファンクションから利用可否を示す情報を取得し、前記取得した利用可否を示す情報に基づいて、前記サービス状態管理情報を更新し、前記サービス状態管理情報に基づいて、前記端末のユーザが加入するサービスを提供し、かつ前記端末が利用可能なサービスファンクションを前記端末のデータが経由するサービスファンクションの経路を決定し、前記決定した経路に従って、前記端末のデータが転送され、前記制御装置が取得する前記サービスファンクションの利用可否を示す情報は、当該サービスファンクションによる前記端末の認証結果、前記端末の当該サービスファンクションの利用量が閾値以上となった場合に送信される切断通知の受信の有無、及び当該サービスファンクションが異常状態である場合に送信される異常通知の受信の有無の少なくとも一つを含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、サービスファンクションを管理する事業者とネットワークの経路を管理する事業者とが異なる場合であっても、サービスファンクションの利用可否を反映した経路を設定するネットワークスイッチを提供できる。
【００１０】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本実施例のサービスチェイニングシステムのシステム構成図である。
【図２】本実施例のクラシファイアのハードウェア構成図である。
【図３】本実施例のコントローラのハードウェア構成図である。
【図４】本実施例のユーザデータベースの説明図である。
【図５】本実施例のサービス状態管理情報の説明図である。
【図６】本実施例のサービス状態確認手順情報の説明図である。
【図７】本実施例のサービス経路リストの説明図である。
【図８】本実施例のクラシファイアが保持するサービス識別テーブルの説明図である。
【図９】本実施例のフォワーダが保持するサービス転送テーブルの説明図である。
【図１０】本実施例のコントローラが実行する経路設定処理のフローチャートである。
【図１１】本実施例の利用可否取得処理のフローチャートである。
【図１２】本実施例のユーザ端末がネットワークに接続する場合の経路設定処理のシーケンス図である。
【図１３】本実施例のサービスファンクションがともに利用できる場合に適用される経路の説明図である。
【図１４】本実施例の一方のサービスファンクションが利用できない場合に適用される経路の説明図である。
【図１５】本実施例のサービスファンクションの利用可否を逐次的に取得する場合の経路設定処理のシーケンス図である。
【図１６】本実施例の従属サービスファンクションが従属するサービスファンクションが利用できず、いずれのサービスファンクションにも従属しないサービスファンクションが利用できる場合に設定される経路の説明図である。
【図１７】本実施例のユーザが加入するサービスを削除する場合の経路設定処理のシーケンス図である。
【図１８】本実施例の削除時各種情報更新処理のフローチャートである。
【図１９】本実施例のユーザが加入するサービスに新たなサービスを追加する場合の経路設定処理のシーケンス図である。
【図２０】本実施例の削除時各種情報更新処理のフローチャートである。
【図２１】本実施例のユーザ端末のサービスファンクションの利用量が閾値以上となった場合の経路設定処理のシーケンス図である。
【発明を実施するための形態】
【００１２】
本実施例について図１〜図２１を用いて説明する。
【００１３】
図１は、本実施例のサービスチェイニングシステムのシステム構成図である。
【００１４】
サービスチェイニングシステムは、ユーザ端末１０のパケットを適切な順序でサービスファンクション２００を経由させ、ユーザが加入するサービスをユーザに提供するシステムである。
【００１５】
ユーザ端末１０は、アクセス網２０を介して加入者収容ルータ（クラシファイア）１００に接続される。クラシファイア１００は、アクセス網２０とコア網３０とを接続して、ユーザ端末１０のフローを転送するレイヤ３の転送装置である。具体的には、クラシファイア１００は、コントローラ（制御装置）３００が設定したフロー識別情報に基づいて、ユーザ端末１０のフローを識別して、コントローラ３００が設定したコア網３０内の経路を識別するタグ（サービスタグ）をユーザ端末１０のフローに付与して、コア網３０に転送する。
【００１６】
また、クラシファイア１００は、ユーザ端末１０がネットワークに接続する場合に送信する接続要求のパケットをコントローラ３００に転送する。なお、接続要求のパケットは、ユーザ端末１０がネットワークに接続するためのユーザ認証をコントローラ３００に要求するパケットである。コントローラ３００は、クラシファイア１００が転送した接続要求を受信した場合、当該接続要求を送信したユーザ端末１０のユーザ認証を実行する。そして、コントローラ３００は、ユーザ認証が成功した場合、接続要求を送信したユーザ端末１０にＩＰアドレス又はプレフィックスを割り当て、当該ＩＰアドレス又はプレフィックスをユーザ端末１０に通知するＩＰアドレス通知パケットを送信する。クラシファイア１００は、コントローラ３００から送信されたＩＰアドレス通知パケットを中継する。
【００１７】
なお、クラシファイア１００が接続要求を受信した場合、コントローラ３００に転送せずに、クラシファイア１００が、当該接続要求を送信したユーザ端末１０のユーザ認証を実行し、当該ユーザ端末１０にＩＰアドレス又はプレフィックスを割り当ててもよい。
【００１８】
コア網３０は、図示しない少なくとも一つのルータ兼フォワーダ（フォワーダ）によって構築される。フォワーダは、少なくとも一つのサービスファンクション２００に接続される。クラシファイア１００が付与したサービスタグに基づいて、適切なサービスファンクション２００にユーザ端末１０のパケットを転送する。コア網３０はインターネット４０に接続される。
【００１９】
サービスファンクション２００は、フォワーダ又はクラシファイア１００に接続され、各種ネットワークアプライアンスで提供されるようなネットワークのサービスを提供する計算機である。サービスファンクション２００が提供するサービスの例としては、ＴＣＰ高速化、圧縮、映像オプティマイザ、Ｆｉｒｅｗａｌｌ、ＤＰＩ（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ）、及びシェーパ等がある。サービスファンクション２００は、専用のネットワークアプライアンス装置であってもよいし、汎用的なサーバであってもよい。サービスファンクション２００が汎用的なサーバである場合、サービスファンクション２００は、サービスを提供するアプリケーションを実行し、サービスを提供する。また、サービスファンクション２００となる汎用的なサーバ上に少なくとも一つの仮想マシンが構築され、各仮想マシン上でアプリケ−ションが実行され、サービスが提供されてもよい。なお、図１では、サービスファンクション２００Ａ及び２００Ｂの二つのサービスファンクション２００を図示したが、サービスファンクション２００の数はこれに限定されない。例えば、サービスファンクション２００の数は、サービスの種類の数、及びサービスファンクション２００の収容条件に応じて決定される。
【００２０】
コントローラ３００は、汎用的な計算機であり、クラシファイア１００、コア網３０のフォワーダ、及びサービスファンクション２００を制御する。コントローラ３００は、ユーザ端末１０のフローのコア網３０内での経路を決定する。ここで、コア網３０での経路とは、ユーザ端末１０のフローが経由するサービスファンクション２００と当該サービスファンクション２００の経由順序とを含む。
【００２１】
具体的には、コントローラ３００は、サービスファンクション２００の利用可否を示す情報を取得し、取得したサービスファンクション２００の利用可否を示す情報に基づいてユーザ端末１０のフローの経路を決定する。なお、サービスファンクション２００の利用可否を示す情報は、サービスファンクション２００によるユーザ端末１０の認証結果、ユーザ端末１０がサービスファンクション２００の利用量が閾値以上である場合に当該サービスファンクション２００から送信される切断通知の受信の有無、及びサービスファンクション２００に異常が発生した場合に送信される異常通知の受信の有無等である。
【００２２】
図２は、本実施例のクラシファイア１００のハードウェア構成図である。
【００２３】
クラシファイア１００は、制御カード１１０とラインカード１２０とを有する。制御カード１１０はクラシファイア１００を制御し、ユーザ端末１０のパケットのフローを識別して、当該パケットにサービスタグを付与する。
【００２４】
制御カード１１０は、転送に必要な情報を生成し、生成した情報をラインカード１２０に設定して、ラインカード１２０の動作を制御する。制御カード１１０はプロセッサ１１１とメモリ１１２とを有する。
【００２５】
プロセッサ１１１は、各種演算処理を実行する。制御カード１１０が有する図示しない二次記憶装置は非揮発性の非一時的な記憶媒体であり、各種プログラム及び各種データが記憶される。メモリ１１２は揮発性の一時的な記憶媒体であり、メモリ１１２には、二次記憶装置に記憶された各種プログラム（例えば、ラインカード１２０を制御する制御プログラム等）及び各種データがロードされ、プロセッサ１１１がメモリ１１２にロードされた各種プログラムを実行し、メモリ１１２にロードされた各種データを読み書きする。
【００２６】
ラインカード１２０は、転送エンジン１２３と、図示しないネットワークインタフェースとを有する。転送エンジン１２３は、転送テーブル１２１とサービス識別テーブル１２２とを有する。転送テーブル１２１には、受信したパケットの宛先アドレスと当該パケットの出力先となるネットワークインタフェースとの関係が登録される。サービス識別テーブル１２２には、受信したパケットのフローを識別するための条件と、当該フローのパケットに適用される経路の識別子と、当該フローのパケットの経由すべきサービスファンクションの残数を示すサービスインデックスと、出力先となるネットワークインタフェースの識別子との関係が登録される。なお、経路の識別子及びサービスインデックスがサービスタグとなる。サービス識別テーブル１２２の詳細は図８で説明する。
【００２７】
転送エンジン１２３は、他の装置と接続されるネットワークインタフェースが受信したパケットのヘッダから宛先アドレスを取得する。そして、転送エンジン１２３は、転送テーブル１２１において取得した宛先アドレスを検索し、当該宛先アドレスと関連付けられた出力先のネットワークインタフェースを決定する。そして、転送エンジン１２３は、決定した出力先のネットワークインタフェースからパケットを送信する。
【００２８】
また、転送エンジン１２３は、転送テーブル１２１の検索処理と並行して、ネットワークインタフェースが受信したパケットに含まれるフローを識別するための条件を検索キーとしてサービス識別テーブル１２２を検索する。当該条件が登録されたエントリがサービス識別テーブル１２２に登録されている場合、転送エンジン１２３は、当該パケットはサービスファンクション２００を経由するパケットであると判断して、転送テーブル１２１の検索結果を利用せず、サービス識別テーブル１２２のフローを識別するための条件に関連付けられたサービスタグを当該パケットに付与してカプセル化し、サービス識別テーブル１２２のフローを識別するための条件に関連付けられた出力先となるネットワークインタフェースから送信する。なお、フローを識別するための条件は、例えば、パケットのヘッダの５タプルに登録された情報（宛先アドレス、送信元アドレス、宛先ポート番号、送信元ポート番号、及びプロトコル番号）である。
【００２９】
次に、コア網３０を構築する図示しないフォワーダについて説明する。
【００３０】
フォワーダは、クラシファイア１００と同じ装置構成であるが、フォワーダの転送エンジン１２３は、サービス識別テーブル１２２の代わりにサービス転送テーブルを有する。サービス転送テーブルには、パケットに付加されたサービスタグと出力先となるネットワークインタフェースとの関係が登録される。サービス転送テーブルの詳細は図９で説明する。
【００３１】
フォワーダがパケットを受信した場合、転送エンジン１２３は、転送テーブル１２１の検索処理と並行して、サービス転送テーブルを検索する。具体的には、転送エンジン１２３は、受信したパケットに付加されたサービスタグが登録されたエントリがサービス転送テーブルに登録されている場合、当該エントリの出力先となるネットワークインタフェースから受信したパケットを転送する。
【００３２】
一方、受信したパケットに付加されたサービスタグが登録されたエントリがサービス転送テーブルに登録されていない場合、転送エンジン１２３は、転送テーブル１２１の受信したパケットの宛先アドレスが登録されたエントリの出力先となるネットワークインタフェースから受信したパケットを転送する。
【００３３】
なお、フォワーダがパケットをサービスファンクション２００に転送し、サービスファンクション２００が当該パケットを受信した場合、サービスを提供するための処理を当該パケットに対して実行し、当該処理の実行後のパケットを送信元のフォワーダに送信する。フォワーダは、サービスファンクション２００から送信されたパケットが、経由すべき全てのサービスファンクション２００を経由していれば、サービスタグを当該パケットから除去する。そして、フォワーダは、サービスタグが除去されたパケットの宛先アドレスと一致する転送テーブル１２１のエントリの出力先となるネットワークインタフェースから当該パケットを送信する。
【００３４】
パケットが経由すべき全てのサービスファンクション２００を経由しているか否かの判定には、サービスタグに含まれるサービスインデックスが参照される。サービスインデックスは、経由するサービスファンクション２００の残数を示し、サービスファンクション２００を経由するたびに値が１減算される。このため、フォワーダは、サービスファンクション２００から受信したパケットのサービスタグの値が「０」であれば、当該パケットは経由すべき全てのサービスファンクション２００を経由したと判定して、サービスタグを除去する。
【００３５】
なお、フォワーダとサービスファンクション２００とは、図示しないサービスファンクションプロキシを介して接続されてもよい。サービスファンクションプロキシは、フォワーダとサービスファンクション２００との間でパケットを中継し、サービスファンクション２００がパケットに含まれるサービスタグを識別できない場合又はパケットを処理できない場合、サービスタグの除去又は付与、サービスインデックスの値の減算等をサービスファンクション２００に代わりに実行する。
【００３６】
図３は、本実施例のコントローラ３００のハードウェア構成図である。
【００３７】
コントローラ３００は、汎用的な計算機であり、プロセッサ３４０とメモリ３１０と二次記憶装置３２０とを有する。
【００３８】
プロセッサ３４０は、各種演算処理を実行する。二次記憶装置３２０は非揮発性の非一時的な記憶媒体であり、経路設定部３４１に対応するプログラム、サービス状態管理情報３１１、サービス状態確認手順情報３１２、サービス経路リスト３１３、及びユーザデータベース３２１等の各種データが記憶される。メモリ３１０は揮発性の一時的な記憶媒体であり、メモリ３１０には、二次記憶装置３２０に記憶された経路設定部３４１に対応するプログラム、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３がロードされる。プロセッサ３４０は、メモリ３１０にロードされた経路設定部３４１に対応するプログラムを実行し、経路設定部３４１を実現し、メモリ３１０にロードされたサービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３を読み書きする。
【００３９】
図３では、二次記憶装置３２０にユーザデータベース３２１が記憶され、メモリ３１０にサービス状態管理情報３１１、サービス状態確認手順情報３１２、サービス経路リスト３１３がロードされ、プロセッサ３４０が経路設定部３４１に対応するプログラムを実行して、経路設定部３４１がプロセッサ３４０上に実現されている状態を示す。
【００４０】
まず、コントローラ３００が記憶する各種データについて説明する。
【００４１】
ユーザデータベース３２１には、ユーザ端末１０のユーザの識別子とユーザが加入するサービスの識別子との関係が登録される。ユーザデータベース３２１の詳細は図４で説明する。
【００４２】
サービス状態管理情報３１１には、ユーザ端末１０のユーザごとに、サービスの加入の有無、及びサービスを提供するサービスファンクション２００の利用可否を示す情報が登録される。サービス状態管理情報３１１の詳細は図５で説明する。
【００４３】
サービス状態確認手順情報３１２には、ユーザ端末１０が経由するサービスファンクション２００の利用可否の状態の取得順序が登録される。サービス状態確認手順情報３１２の詳細は図６で説明する。
【００４４】
サービス経路リスト３１３には、ユーザ端末１０のユーザ、及びユーザが加入するサービスを提供するサービスファンクション２００の利用可否の組み合わせに応じた経路が登録される。サービス経路リスト３１３の詳細は図７で説明する。
【００４５】
次に、コントローラ３００の動作の概略について説明する。
【００４６】
コントローラ３００は、所定のタイミングで、サービス状態確認手順情報３１２を参照して、サービスファンクション２００の利用可否を示す情報を取得する。そして、コントローラ３００は、取得したサービスファンクション２００の利用可否を示す情報に基づいて、サービス状態管理情報３１１を更新する。そして、コントローラ３００は、更新後のサービス状態管理情報３１１を参照して、ユーザ端末１０のユーザが加入するサービスを提供するサービスファンクション２００の利用可否に応じた経路を決定する。そして、コントローラ３００は、決定した経路をフォワーダ及びクラシファイア１００に通知し、ユーザ端末１０のパケットの経路をコア網３０に設定する。
【００４７】
これによって、コントローラ３００がサービスファンクション２００の利用可否を取得し、取得したサービスファンクション２００の利用可否に応じた経路をコア網３０に設定するので、サービスファンクション２００を管理する事業者とコア網３０を管理する事業者とが異なる場合であっても、サービスファンクション２００の利用可否に応じて経路を設定することができる。したがって、利用できないサービスファンクション２００があっても、ユーザ端末１０のパケットが停止したり、他のサービスファンクション２００のリソースを不適切に消費することを防止できる。
【００４８】
図４は、本実施例のユーザデータベース３２１の説明図である。
【００４９】
ユーザデータベース３２１は、一般にＢＳＳ（Ｂｕｓｉｎｅｓｓ  Ｓｕｐｐｏｒｔ  Ｓｙｓｔｅｍ）の形態で保持される。なお、図３では、ユーザデータベース３２１は、コントローラ３００に記憶される例について説明したが、コントローラ３００の外部の装置に記憶されてもよい。
【００５０】
ユーザデータベース３２１は、ユーザが加入するサービスを管理するためのものであり、ユーザにどのサービスファンクション２００を適用するかを決定するために使用される。
【００５１】
ユーザデータベース３２１は、ユーザＩＤ４０１と加入サービス情報４０２とを含む。ユーザＩＤ４０１には、ユーザの識別子が登録される。加入サービス情報４０２には、ユーザが加入するサービスの識別子が登録される。
【００５２】
図５は、本実施例のサービス状態管理情報３１１の説明図である。
【００５３】
サービス状態管理情報３１１は、ユーザＩＤ５０１、並びにコントローラ３００が制御するサービスごとに加入／未加入５０２及び利用可否５０３を含む。
【００５４】
ユーザＩＤ５０１には、ユーザの識別子が登録される。加入／未加入５０２には、ユーザが各サービスに加入しているか否かを示す情報が登録される。加入／未加入５０２には、コントローラ３００がユーザデータベース３２１を参照して、ユーザが加入するサービスには「加入」が登録され、ユーザが未加入であるサービスには「未加入」が登録される。利用可否５０３には、各サービスを提供するサービスファンクション２００の利用可否を示す情報が登録される。利用可否５０３に登録される情報は、コントローラ３００がサービスファンクション２００から利用可否を示す情報を取得した場合に更新される。
【００５５】
図６は、本実施例のサービス状態確認手順情報３１２の説明図である。
【００５６】
サービス状態確認手順情報３１２は、サービス状態確認契機情報１０００と順序リスト１００１（１００１−１及び１００１−２）とを含む。
【００５７】
サービス状態確認契機情報１０００は、ユーザＩＤ６０１と適用サービス一覧６０２と状態確認契機６０３と順序リストポインタ６０４とを含む。
【００５８】
ユーザＩＤ６０１にはユーザの識別子が登録される。適用サービス一覧６０２には、ユーザが加入するサービスの識別子が登録される。状態確認契機６０３には、適用サービス一覧６０２に登録された識別子によって識別されるサービスを提供するサービスファンクション２００に、他のサービスファンクション２００が利用可能である場合にのみ利用可否を示す情報を取得する従属サービスファンクションが含まれるか否かを示す情報が登録される。状態確認契機６０３には、従属サービスファンクションが含まれない場合、「並列」が登録され、従属サービスファンクションが含まれる場合、「逐次」が登録される。順序リストポインタ６０４には、順序リスト１００１の先頭エントリのポインタが登録される。
【００５９】
順序リスト１００１では、少なくとも一つのエントリがリスト形式で接続される。順序リスト１００１のエントリには、利用可否を示す情報を取得するサービスファンクション２００が提供するサービスの識別子と、当該サービスファンクション２００の利用可否を示す情報に応じた次の動作とが登録される。具体的には、エントリには、次のサービスを提供するサービスファンクション２００の利用可否を示す情報を取得する場合には、当該次のサービスを提供するサービスファンクション２００の次の動作が登録されたエントリのポインタが登録される。また、エントリには、次のサービスファンクション２００の利用可否を示す情報を取得しない場合には、その旨を示す情報（「なし」）が登録される。
【００６０】
コントローラ３００は、サービスファンクション２００の利用可否を示す情報の取得が必要なユーザの識別子と当該ユーザが加入するサービスの識別子とを検索キーとして用いて、サービス状態確認契機情報１０００を検索する。検索キーと一致するサービス状態確認契機情報１０００のエントリがあれば、コントローラ３００は、当該エントリの状態確認契機６０３及び順序リストポインタ６０４に従って、サービスファンクション２００の利用可否を示す情報を取得する。
【００６１】
図６に示す例では、ユーザの識別子「ユーザ１」と当該ユーザが加入するサービスの識別子「サービスＡ」及び「サービスＤ」とを検索キーとした場合、サービス状態確認契機情報１０００の１行目のエントリが検索される。サービス状態確認契機情報１０００の１行目のエントリの状態確認契機６０３には「並列」が登録されているので、「ユーザ１」が加入するサービスＡを提供するサービスファンクション２００及びサービスＤを提供するサービスファンクション２００は従属サービスファンクションを含まない。このため、コントローラ３００は、サービスＡを提供するサービスファンクション２００の利用可否を示す情報の取得と、サービスＤを提供するサービスファンクション２００の利用可否を示す情報の取得とを並列して実行する。
【００６２】
また、ユーザの識別子「ユーザ２」と当該ユーザが加入するサービスの識別子「サービスＡ」及び「サービスＢ」とを検索キーとした場合、サービス状態確認契機情報１０００の２行目のエントリが検索される。サービス状態確認契機情報１０００の２行目のエントリの状態確認契機６０３には「逐次」が登録されているので、「ユーザ２」が加入するサービスＡを提供するサービスファンクション及びサービスＢを提供するサービスファンクション２００は従属サービスファンクションを含む。コントローラ３００は、サービス状態確認契機情報１０００の２行目のエントリの順序リストポインタ６０４に登録されたポインタが示す順序リスト１００１−１のエントリ１０１１−１を参照して、サービスＡを提供するサービスファンクション２００の利用可否を示す情報を取得する。サービスＡを提供するサービスファンクション２００の利用可否を示す情報が利用できないことを示す場合、エントリ１０１１−１の異常時の次エントリには「なし」が登録されているため、コントローラ３００は、サービスＢを提供するサービスファンクション２００の利用可否を示す情報を取得せず、サービスファンクション２００の利用可否を示す情報の取得を終了する。
【００６３】
サービスＡを提供するサービスファンクション２００の利用可否を示す情報が利用できることを示す場合、コントローラ３００は、エントリ１０１１−１の正常時の次エントリに登録されたポインタが示すエントリ１０１１−２を参照し、サービスＢを提供するサービスファンクション２００の利用可否を示す情報を取得する。エントリ１０１１−２の正常時の次エントリ及び異常時の次エントリには「なし」が登録されているので、せービスＢを提供するサービスファンクション２００の利用可否を示す情報が利用できることを示す場合であっても、利用できないことを示す場合であっても、コントローラ３００は、サービスファンクション２００の利用可否を示す情報の取得を終了する。
【００６４】
順序リスト１００１−１には、サービスＢを提供するサービスファンクション２００がサービスＡを提供するサービスファンクション２００の従属サービスファンクションであることが登録されている。このため、サービスＡを提供するサービスファンクション２００の利用可否を示す情報が利用できないことを示す場合、サービスＢは提供され得ないので、サービスＢを提供するサービスファンクション２００の利用可否を示す情報を取得しない。このように、提供され得ないサービスを提供するサービスファンクション２００の利用可否を示す情報を取得しないので、コントローラ３００及び当該サービスファンクション２００の処理負荷を軽減できる。
【００６５】
図７は、本実施例のサービス経路リスト３１３の説明図である。
【００６６】
サービス経路リスト３１３には、各ユーザが加入するサービスを提供するサービスファンクション２００の利用可否の組み合わせに応じた経路がユーザごとに登録される。サービス経路リスト３１３は、ユーザＩＤ７０１、及び少なくとも一つのエントリを含む。サービス経路リスト３１３に含まれるエントリは、条件７０２及びサービス経路情報７０３を含む。
【００６７】
条件７０２には、同じエントリのサービス経路情報７０３に登録された経路情報を適用するための条件が登録される。具体的には、条件７０２には、利用不可であるサービスファンクション２００の組み合わせが登録される。サービス経路情報７０３には、適用する経路情報が登録される。なお、経路情報は、利用不可であるサービスファンクション２００を経由しない経路を含むものとする。経路情報は、例えば、サービスファンクションの経由順序と、クラシファイア１００又はフォワーダに設定されるサービスタグ及び次ホップの情報とを含む。
【００６８】
例えば、ユーザＩＤが「１」であるユーザがサービスＡ及びサービスＢに加入する場合、当該ユーザＩＤのレコードは、エントリ１〜４を含む。エントリ１には、サービスＡを提供するサービスファンクション２００及びサービスＢを提供するサービスファンクション２００が利用可能である場合に適用する経路が登録され、エントリ２には、サービスＡを提供するサービスファンクション２００が利用不可である場合に適用する経路が登録され、エントリ３には、サービスＢを提供するサービスファンクション２００が利用不可である場合に適用する経路が登録され、エントリ４の条件７０２には、サービスＡを提供するサービスファンクション２００及びサービスＢを提供するサービスファンクション２００がともに利用不可である場合に適用する経路情報が登録される。
【００６９】
なお、サービス経路リスト３１３は、ユーザＩＤとサービスファンクション２００の利用可否を示す情報との組み合わせを検索キーとして検索される。
【００７０】
サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３は、運用コマンドが入力された場合に表示され、管理者が確認できるようにしてもよい。また、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３は、管理者によってコンフィグ入力可能な情報であり、ＣＬＩ（Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）又はＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等の設定画面を介して設定可能である。
【００７１】
図８は、本実施例のクラシファイア１００が保持するサービス識別テーブル１２２の説明図である。
【００７２】
サービス識別テーブル１２２は、フロー条件８０１、サービス経路ＩＤ８０２、サービスインデックス８０３、及び次ホップ８０４を含む。
【００７３】
フロー条件８０１には、受信したパケットのフローを識別するための条件が登録される。例えば、フロー条件８０１には、パケットのヘッダの５タプルに登録される情報が条件として登録される。サービス経路ＩＤ８０２には、フロー条件８０１に登録された条件によって識別されたフローのパケットに適用される経路の識別子が登録される。サービスインデックス８０３には、クラシファイア１００にフロー条件８０１に登録された条件によって識別されたフローのパケットに付与するサービスタグに含まれるサービスインデックスが登録される。次ホップ８０４には、フロー条件８０１に登録された条件によって識別されたフローのパケットの出力先となるネットワークインタフェースの識別子が登録される。
【００７４】
クラシファイア１００は、パケットを受信した場合、サービス識別テーブル１２２のフロー条件８０１に、受信したパケットの５タプルに登録される情報が登録されたエントリを取得する。そして、クラシファイア１００は、取得したエントリに含まれるサービス経路ＩＤ８０２に登録された経路の識別子とサービスインデックス８０３に登録されたサービスインデックスとを含むサービスタグを受信したパケットに付与することによって、受信したパケットをカプセル化する。そして、クラシファイア１００は、取得したエントリの次ホップ８０４に登録された識別子によって識別されるネットワークインタフェースから、受信したパケットを出力する。
【００７５】
図９は、本実施例のフォワーダが保持するサービス転送テーブルの説明図である。
【００７６】
サービス転送テーブルは、サービス経路ＩＤ９０１、サービスインデックス９０２、及び次ホップ９０３を含む。
【００７７】
サービス経路ＩＤ９０１には、パケットのサービスタグに含まれる経路の識別子が登録される。サービスインデックス９０２には、パケットのサービスタグに含まれるサービスインデックスが登録される。次ホップ９０３には、パケットの出力先となるネットワークインタフェースの識別子が登録される。
【００７８】
フォワーダは、パケットを受信した場合、サービス転送テーブルのサービス経路ＩＤ９０１に、受信したパケットのサービスタグに含まれる経路の識別子が登録され、サービスインデックス９０２に、受信したパケットのサービスタグに含まれるサービスタグが登録されたエントリを取得する。そして、フォワーダは、取得したエントリの次ホップ９０３に登録された識別子によって識別されるネットワークインタフェースから、受信したパケットを出力する。なお、フォワーダは、パケットを受信してネットワークインタフェースに出力する前に、受信したパケットのサービスインデックスから１を減算する。
【００７９】
また、受信したパケットのサービスタグと一致するエントリがサービス転送テーブルに存在しない場合、フォワーダは、転送テーブル１２１を参照し、受信したパケットの宛先ＩＰアドレスに対応する出力先のネットワークインタフェースの識別子を取得し、取得した識別子によって識別されるネットワークインタフェースから、受信したパケットを出力する。
【００８０】
次に、コントローラ３００の動作について図１０を用いて説明する。図１０は、本実施例のコントローラ３００が実行する経路設定処理のフローチャートである。
【００８１】
コントローラ３００の経路設定部３４１は、ユーザがサービスに新規に加入した場合、ユーザが加入するサービスを変更した場合、前回経路設定処理を実行してから所定時間経過した場合、及びユーザ端末１０からネットワークへの接続要求を受信した場合、経路設定処理を実行する。
【００８２】
まず、経路設定部３４１は、サービス状態確認手順情報３１２を参照して、ユーザ端末１０がサービスファンクション２００の利用可否を示す情報を取得する利用可否取得処理を実行する（１００１）。例えば、コントローラ３００がユーザ端末１０から接続要求を受信した場合、当該ユーザ端末１０のユーザが加入するサービスを提供するサービスファンクション２００に接続要求を転送し、サービスファンクション２００に認証を実行させ、認証結果を、サービスファンクション２００の利用可否を示す情報として取得する。また、コントローラ３００は、あるユーザ端末１０の利用量が閾値以上となったサービスファンクション２００から送信される切断通知を利用可否を示す情報として取得する。ステップ１００１の利用可否取得処理の詳細については、図１１を用いて説明する。
【００８３】
次に、経路設定部３４１は、ステップ１００１の処理で取得したユーザ端末１０のサービスファンクション２００の利用可否を示す情報と、サービス状態管理情報３１１の当該ユーザ端末１０のユーザに対応するエントリとを比較して、今回のステップ１００１の処理で取得した利用可否を示す情報が前回のステップ１００１の処理で取得した利用可否を示す情報と異なるか否かを判定する（１００２）。
【００８４】
ステップ１００２の処理で、今回のステップ１００１の処理で取得した利用可否を示す情報が前回のステップ１００１の処理で取得した利用可否を示す情報と同じであると判定された場合（１００２：Ｎｏ）、経路設定部３４１は、ユーザ端末１０に適用する経路を新たに適用せず、経路設定処理を終了する。
【００８５】
一方、ステップ１００２の処理で、今回のステップ１００１の処理で取得した利用可否を示す情報が前回のステップ１００１の処理で取得した利用可否を示す情報と異なると判定された場合（１００２：Ｎｏ）、経路設定部３４１は、今回のステップ１００１の処理で取得した利用可否を示す情報に基づいて、サービス状態管理情報３１１を更新する（１００３）。
【００８６】
具体的には、経路設定部３４１は、サービス状態管理情報３１１のユーザＩＤ５０１に、今回のステップ１００１の処理でサービスファンクション２００の利用可否を示す情報を取得したユーザ端末１０のユーザの識別子が登録されたエントリを選択する。そして、経路設定部３４１は、選択したエントリに含まれるサービスから、今回のステップ１００１の処理で取得した利用可否を示す情報が前回のステップ１００１の処理で取得した利用可否を示す情報と異なるサービスを選択する。そして、経路設定部３４１は、選択したサービスの利用可否５０３に、今回のステップ１００１の処理で取得した利用可否を示す情報を登録する。
【００８７】
次に、経路設定部３４１は、サービス経路リスト３１３を参照して、ステップ１００３の処理でサービス状態管理情報３１１が更新されたエントリに対応するユーザのユーザ端末１０に適用される経路を決定し、決定した経路をフォワーダ及びクラシファイア１００に通知して、決定した経路をコア網３０に設定して（１００４）、経路適用処理を終了する。
【００８８】
具体的には、経路設定部３４１は、ステップ１００３の処理でサービス状態管理情報３１１が更新されたエントリのユーザＩＤ５０１に登録されたユーザの識別子、及び当該エントリの全てのサービスの利用可否５０３に登録された利用可否を示す情報を取得する。そして、経路設定部３４１は、サービス経路リスト３１３のユーザＩＤ７０１に取得したユーザの識別子が登録されたエントリから、条件７０２に登録された条件が取得した利用可否を示す情報の組み合わせと一致するエントリを選択する。そして、経路設定部３４１は、選択したエントリのサービス経路情報７０３に登録された経路情報によって特定される経路を、ステップ１００３の処理でサービス状態管理情報３１１が更新されたエントリに対応するユーザのユーザ端末１０に適用される経路として決定する。
【００８９】
以上によって、コントローラ３００は、サービスファンクション２００の利用可否を示す情報に基づいてユーザ端末１０に適用する経路をコア網３０に設定することができる。
【００９０】
図１１は、本実施例の利用可否取得処理のフローチャートである。
【００９１】
まず、経路設定部３４１は、サービス状態確認手順情報３１２のサービス状態確認契機情報１０００を参照する（１１０１）。
【００９２】
次に、経路設定部３４１は、サービス状態確認契機情報１０００のユーザＩＤ６０１に処理対象のユーザの識別子が登録され、かつ、適用サービス一覧６０２に当該ユーザが加入するサービスの識別子が登録されたエントリ（処理対象のエントリ）の状態確認契機６０３に並列が登録されているか否かを判定する（１１０２）。
【００９３】
ステップ１１０２の処理で、サービス状態確認契機情報１０００の処理対象のエントリの状態確認契機６０３に並列が登録されていると判定された場合（１１０２：Ｙｅｓ）、経路設定部３４１は、処理対象のユーザが加入する全てのサービスを提供する各サービスファンクション２００の利用可否を示す情報を並列して取得し（１１０３）、利用可否取得処理を終了する。
【００９４】
一方、ステップ１１０２の処理で、サービス状態確認契機情報１０００の処理対象のエントリの状態確認契機６０３に並列が登録されていないと判定された場合（１１０２：Ｎｏ）、すなわち、当該状態確認契機６０３に逐次が登録されている場合、経路設定部３４１は、サービス状態確認契機情報１０００の処理対象のエントリの順序リストポインタ６０４に登録されたポインタが示す順序リスト１００１の先頭エントリ１０１１を参照する（１１０４）。
【００９５】
次に、経路設定部３４１は、当該順序リスト１００１の末尾のエントリ１０１１までステップ１１０５〜１１０８の処理を繰り返し実行する。
【００９６】
まず、経路設定部３４１は、参照したエントリ１０１１が示す利用可否を示す情報を取得するサービスを提供するサービスファンクション２００の利用可否を示す情報を取得する（１１０５）。
【００９７】
次に、経路設定部３４１は、ステップ１１０５の処理で取得したサービスファンクション２００が利用可能であるか否かを判定する（１１０６）。
【００９８】
ステップ１１０６の処理でサービスファンクション２００が利用可能であると判定された場合（１１０６：Ｙｅｓ）、経路設定部３４１は、正常時の次エントリのポインタが示す次のエントリ１０１１を参照し（１１０７）、ステップ１１０５の処理に戻る。一方、ステップ１１０６の処理でサービスファンクション２００が利用可能でないと判定された場合（１１０６：Ｎｏ）、経路設定部３４１は、異常時の次エントリのポインタが示す次のエントリ１０１１を参照し（１１０８）、ステップ１１０５の処理に戻る。
【００９９】
なお、ステップ１１０７又は１１０８の処理で、正常時の次エントリのポインタが「なし」である場合、又は異常時の次エントリのポインタが「なし」である場合、経路設定部３４１は、順序リスト１００１の末尾のエントリ１０１１までステップ１１０５〜１１０８の処理が実行されたと判断し、利用可否取得処理を終了する。
【０１００】
ユーザ端末１０がネットワークに接続する場合の当該ユーザ端末１０の経路設定処理のシーケンスを図１２を用いて説明する。図１２は、本実施例のユーザ端末１０がネットワークに接続する場合の経路設定処理のシーケンス図である。
【０１０１】
ユーザ端末１０のユーザは、サービスファンクション２００Ａが提供するサービスＡ、及びサービスファンクション２００Ｄが提供するサービスＤに予め契約しており、サービスファンクション２００Ａ及び２００Ｄは、ユーザ端末１０の認証に必要な情報（例えば、ユーザＩＤ、及びパスワード等）を保持しているものとする。
【０１０２】
まず、ユーザ端末１０は、ネットワーク（例えば、インターネット４０）に接続する場合、認証要求をコントローラ３００に送信する（１２０１）。認証要求は、例えば、ユーザＩＤ及びパスワードを含むものとする。
【０１０３】
コントローラ３００は、ユーザ端末１０から認証要求を認証すると、ネットワークに接続するための認証処理を実行し、サービス状態確認手順情報３１２を参照して、受信した認証要求をサービスファンクション２００Ａ及び２００Ｄに送信する（１２０２）。図６に示すように、サービスＡ及びＤの状態確認契機６０３には、並列が登録されているので、ステップ１２０２の処理では、コントローラ３００は、いずれかのサービスファンクション２００の利用可否を示す情報の取得を待たずに、サービスファンクション２００Ａ及び２００Ｄに認証要求を送信する。
【０１０４】
なお、コントローラ３００で実行される認証処理は、ユーザ端末１０にＩＰアドレスを割り当てる等のネットワークに接続するための認証処理であり、ユーザ端末１０のサービスファンクション２００Ａ及び２００Ｄに対する認証処理を含まない。
【０１０５】
サービスファンクション２００Ａ及び２００Ｄは、コントローラ３００から認証要求を受信した場合、ユーザ端末１０の認証処理を実行し、認証結果を応答としてコントローラ３００に送信する（１２０３Ａ及び１２０３Ｂ）。
【０１０６】
コントローラ３００は、サービスファンクション２００Ａ及び２００Ｄから認証結果を受信し、受信した認証結果に基づいてサービス状態管理情報３１１を更新する（１２０４）。ユーザ端末１０がネットワークに接続する場合には、コントローラ３００は、サービスファンクション２００からの認証結果を利用可否を示す情報として取得する。
【０１０７】
次に、コントローラ３００は、ステップ１２０２処理の認証処理が成功した場合、認証要求を送信したユーザ端末１０にＩＰアドレスを認証要求の応答として送信し、当該ユーザ端末１０にＩＰアドレスを割り当てる（１２０５）。なお、ステップ１２０２の処理の認証処理が失敗した場合、コントローラ３００は、その旨を認証要求の応答としてユーザ端末１０に送信する。
【０１０８】
また、コントローラ３００は、ユーザ端末１０の認証が成功したサービスファンクション２００に、ステップ１２０５の処理でユーザ端末１０に割り当てたＩＰアドレスをユーザ識別情報として通知する（１２０６）。ユーザ識別情報は、サービスファンクション２００がユーザ端末１０のパケットを識別して、サービスを提供するために用いられる。例えば、ＤＰＩ（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ）を提供するサービスファンクションには、ユーザのＩＰアドレス及びポート番号等の５タプルの情報がユーザ識別情報として通知される。ユーザ識別情報は、サービスファンクション２００の形態によって異なるので、これに限定されない。
【０１０９】
次に、コントローラ３００は、ユーザ端末１０のユーザのユーザＩＤ、及びステップ１２０４の処理で取得したサービスファンクション２００の利用可否を示す情報を検索キーとして、サービス経路リスト３１３を検索し、検索キーと一致するエントリのサービス経路情報７０３に登録された経路情報が示す経路を、当該ユーザ端末１０に適用する経路として決定し、当該経路情報をフォワーダ及びクラシファイア１００に設定する（１２０７）。
【０１１０】
以上によって、サービスファンクション２００の管理者とコア網３０内で適用される経路の管理者とが異なり、コントローラ３００とサービスファンクション２００とで認証処理が実行される場合であっても、サービスファンクション２００の認証結果を反映した経路を適用できる。例えば、ユーザ端末１０が契約違反等の理由によってサービスファンクション２００Ａでの認証が失敗して、サービスファンクション２００Ａを利用できない場合、コントローラ３００は、サービスファンクション２００Ａを経由せず、サービスファンクション２００Ｄのみを経由する経路を適用する。
【０１１１】
なお、図１２では、ユーザ端末１０のネットワークに接続するための認証処理、及びＩＰアドレスをユーザ端末１０に割り当てる処理をコントローラ３００が実行する例について説明したが、例えば外部の図示しない認証サーバが実行してもよいし、クラシファイア１００が実行してもよい。この場合、認証サーバ又はクラシファイア１００は、認証結果をコントローラ３００に通知する必要がある。
【０１１２】
また、コントローラ３００は、ステップ１２０５の処理でＩＰアドレスをユーザ端末１０に送信したが、例えばプレフィックスの情報をユーザ端末１０に送信してもよい。
【０１１３】
また、ステップ１００２、１００３Ａ、及び１００３Ｂの処理における認証処理では、ＲＡＤＩＵＳ（Remote Authentication Dial In User Service）又はＤＩＡＭＥＴＥＲなどの認証機能を有する汎用的なプロトコルを用いてもよい。
【０１１４】
また、ステップ１２０６の処理では、ユーザ端末１０に割り当てたＩＰアドレスをサービスファンクション２００に通知するが、例えば、サービスファンクション２００がプレフィックスの情報を用いてパケットを識別し、ユーザ端末１０に予めプレフィックスの情報が割り当てられている場合、コントローラ３００は、ステップ１２０５の処理の前にプレフィックスの情報をサービスファンクション２００に通知してもよい。
【０１１５】
また、ステップ１２０５の処理で、コントローラ３００は、ＩＰアドレスをユーザ端末１０に送信するが、ステップ１２０２の処理で認証処理が成功してすぐに、ＩＰアドレスをユーザ端末１０に送信してもよい。
【０１１６】
図１２に示す処理で適用される経路の例について図１３及び図１４を用いて説明する。図１３は、本実施例のサービスファンクション２００Ａ及び２００Ｄがともに利用できる場合に適用される経路の説明図である。
【０１１７】
サービスファンクション２００Ａ及び２００Ｄでユーザ端末１０の認証が成功した場合、ユーザ端末１０はサービスファンクション２００Ａ及び２００Ｄを利用できる。このため、コントローラ３００は、図１３に示すように、サービスファンクション２００Ａ及び２００Ｄを経由する経路を、ユーザ端末１０と宛先装置９０との間に適用する。
【０１１８】
図１４は、本実施例の一方のサービスファンクション２００Ａが利用できない場合に適用される経路の説明図である。
【０１１９】
サービスファンクション２００Ｄのみでユーザ端末１０の認証が成功し、サービスファンクション２００Ａでユーザ端末１０の認証が失敗した場合、ユーザ端末１０はサービスファンクション２００Ａを利用できない。このため、コントローラ３００は、図１４に示すように、サービスファンクション２００Ａを経由せず、サービスファンクション２００Ｄを経由する経路を、ユーザ端末１０と宛先装置９０との間に適用する。
【０１２０】
また、サービスファンクション２００Ａで認証が失敗した場合、サービスファンクション２００Ａ及び２００Ｄの両方を経由しない経路を適用する場合、サービス経路リスト３１３の条件７０２に、サービスファンクション２００Ａが提供するサービスＡが利用できない旨の条件を登録し、サービス経路情報７０３に、サービスファンクション２００Ａ及び２００Ｄを経由しない経路に関する情報を登録したエントリをサービス経路リスト３１３に登録すればよい。これによって、例えば、サービスファンクション２００Ａでパケットに付加したメタデータに対してサービスファンクション２００Ｄが処理を実行する場合等のサービスファンクション２００Ｄがサービスファンクション２００Ａに従属している場合において、サービスファンクション２００Ａが利用できず、メタデータを付加できないことが原因で、サービスファンクション２００Ｄが処理を正常に実行できなくなり、パケットが不通となることを防止できる。
【０１２１】
図１５は、本実施例のサービスファンクション２００の利用可否を示す情報を逐次的に取得する場合の経路設定処理のシーケンス図である。なお、図１５では、図１２に示す処理と同じ処理は、同じ符号を付与し、説明を省略する。
【０１２２】
図６に示すように、サービスＡ、サービスＢ及びサービスＣの状態確認契機６０３には、逐次が登録されている。さらに順序リスト１００１−２を参照するに、サービスＢを提供するサービスファンクション２００Ｂの利用可否を示す情報は、サービスＡを提供するサービスファンクション２００Ａが利用できる場合にのみ取得され、サービスＣを提供するサービスファンクション２００Ｃの利用可否を示す情報は、サービスファンクション２００Ａが利用できない場合であっても、サービスファンクション２００Ｂが利用できない場合であっても取得される。すなわち、サービスファンクション２００Ｂがサービスファンクション２００Ａの従属サービスファンクションである。
【０１２３】
なお、ユーザ端末１０のユーザの識別子は「３」であり、当該ユーザの加入するサービスはサービスＡ、サービスＢ、及びサービスＣであるものとする。
【０１２４】
ステップ１２０２Ａの処理では、コントローラ３００は、ユーザ端末１０から接続要求を受信すると、ユーザ端末１０がネットワークに接続するための認証処理を実行して、サービス状態確認手順情報３１２のサービス状態確認契機情報１０００を参照する。サービス状態確認契機情報１０００のユーザＩＤ６０１に「３」が登録され、適用サービス一覧６０２にサービスＡ、サービスＢ、及びサービスＣが登録されたエントリの状態確認契機６０３に逐次が登録されているので、コントローラ３００は、当該エントリの順序リストポインタ６０４に登録されたポインタが示す順序リスト１００１−２の先頭エントリ１０１１−３を参照する。先頭エントリ１０１１−３には状態確認をするサービスとしてサービスＡが登録されているので、コントローラ３００は、サービスＡを提供するサービスファンクション２００Ａに接続要求を送信する。
【０１２５】
ステップ１２０３Ａの処理では、サービスファンクション２００Ａは、接続要求を受信すると、認証処理を実行し、認証処理の結果をコントローラ３００に送信する。ここでは、サービスファンクション２００Ａの認証処理の結果は、認証に失敗したことを示すものとする。
【０１２６】
コントローラ３００は、サービスファンクション２００Ａから認証が失敗したことを示す認証結果を受信すると、順序リスト１００１−２のエントリ１０１１−３の異常時の次エントリにはエントリ１０１１−５を示すポインタが登録されているので、エントリ１０１１−５を参照する。エントリ１０１１−５にには、状態確認をするサービスとしてサービスＣが登録されているので、ステップ１２０２Ｂの処理で、コントローラ３００は、サービスＣを提供するサービスファンクション２００Ｃに接続要求を送信する。
【０１２７】
ステップ１２０３Ｂの処理では、サービスファンクション２００Ｃは、接続要求を受信すると、認証処理を実行し、認証処理の結果をコントローラ３００に送信する。なお、サービスファンクション２００Ｃの認証は成功したものとする。
【０１２８】
コントローラ３００は、サービスファンクション２００Ｃから認証が成功したことを示す認証結果を受信すると、順序リスト１００１−２のエントリ１０１１−５の正常時の次エントリには「なし」が登録されているので、コントローラ３００は、順序リスト１００１−２の末尾のエントリに到達したと判断して、ステップ１２０４の処理に進み、サービス状態管理情報３１１を更新する。
【０１２９】
ステップ１２０５〜１２０７の処理は、図１２と同じであるので、説明を省略する。
【０１３０】
以上によって、サービスファンクション２００Ｂが、サービスファンクション２００Ａによって処理が実行されたパケットに対して処理を実行するような場合、サービスファンクション２００Ａが利用できない場合、コントローラ３００は、サービスファンクション２００Ｂの利用可否を示す情報を取得しないので、コントローラ３００及びサービスファンクション２００Ｂの処理負荷を軽減できる。
【０１３１】
図１５に示す経路設定処理で設定される経路について図１６を用いて説明する。図１６は、本実施例の従属サービスファンクション２００Ｂが従属するサービスファンクション２００Ａが利用できず、いずれのサービスファンクション２００にも従属しないサービスファンクション２００Ｃが利用できる場合に設定される経路の説明図である。
【０１３２】
図１５で説明したように、コントローラ３００は、サービスファンクション２００Ａが利用できない場合、サービスファンクション２００Ｂの利用可否を示す情報を取得しない。これは、サービスファンクション２００Ｂの処理の実行には、サービスファンクション２００Ａで処理が実行済みであることが条件となるからであり、サービスファンクション２００Ａが利用できないのであれば、サービスファンクション２００Ｂの利用可否を示す情報の取得は不要であるためである。
【０１３３】
このため、コントローラ３００は、サービスファンクション２００Ａが利用できない場合、ユーザが加入するサービスファンクション２００Ｃのみを経由する経路をユーザ端末１０と宛先装置９０との間に適用する。
【０１３４】
なお、サービス経路リスト３１３のユーザＩＤ「３」は、条件７０２にサービスファンクション２００Ａが提供するサービスが利用できない旨の条件が登録され、サービス経路情報７０３にはサービスファンクション２００Ｃのみを経由する経路に関する情報が登録されるエントリを含む。
【０１３５】
これによって、サービスファンクション２００Ａの処理を前提とするサービスファンクション２００Ｂに、サービスファンクション２００Ａで処理が実行されないパケットが流入して、パケットが不通となること等を防止できる。
【０１３６】
次に、ユーザが加入するサービスを追加又は削除した場合の経路設定処理について図１７〜図２０を用いて説明する。まず、図１７及び図１８を用いてユーザが加入するサービスを削除する場合の経路設定処理について説明する。
【０１３７】
図１７は、本実施例のユーザが加入するサービスを削除する場合の経路設定処理のシーケンス図である。
【０１３８】
図１７では、サービスＡ、サービスＢ、及びサービスＣに加入するユーザ（ユーザＩＤ「３」）がサービスＡを削除する場合の処理を例に説明する。
【０１３９】
まず、ユーザＩＤ（「３」）のユーザが使用するユーザ端末１０は、サービスＡを削除する入力を受け付けると、その旨を示す削除通知をコントローラ３００に送信する（１７０１）。
【０１４０】
コントローラ３００は、受信した削除通知に基づいて、ユーザデータベース３２１、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３を更新する削除時各種情報更新処理を実行する（１７０２）。削除時各種情報更新処理の詳細は図１８で説明する。
【０１４１】
サービスＡにはサービスＢが従属するので、サービスＡの削除に伴い、サービスＢも削除される必要がある。このため、コントローラ３００は、サービスＡを提供するサービスファンクション２００Ａ及びサービスＢを提供するサービスファンクション２００Ｂに切断通知を送信する（１７０３）。
【０１４２】
サービスファンクション２００Ａは、削除通知を受信すると、受信した削除通知に基づいて応答処理を実行し、受信した削除通知に対する応答を送信する（１７０４Ａ）。サービスファンクション２００Ｂも、同様に、受信した削除通知に基づいて応答処理を実行し、受信した削除通知に対する応答を送信する（１７０４Ｂ）。
【０１４３】
コントローラ３００は、ステップ１７０２の処理で更新されたサービス状態管理情報３１１及びサービス経路リスト３１３に基づいて、経路を決定し、当該経路情報をフォワーダ及びクラシファイア１００に設定する（１７０５）。
【０１４４】
図１８は、本実施例の削除時各種情報更新処理のフローチャートである。
【０１４５】
まず、コントローラ３００は、図示しない従属テーブルを参照し、受信した削除通知が示す削除するサービス（削除指示サービス）に従属する従属サービスが存在するか否かを判定する（１８０１）。従属テーブルには、サービス間の従属関係が登録され、例えば、サービスＢはサービスＡに従属することが登録される。
【０１４６】
ステップ１８０１の処理で、削除指示サービスに従属する従属サービスが存在すると判定された場合（１８０１：ＹＥＳ）、コントローラ３００は、削除するサービス（削除サービス）を、削除指示サービス及び従属サービスに設定し（１８０２）、ステップ１８０４の処理に進む。
【０１４７】
一方、ステップ１８０１の処理で、削除指示サービスに従属する従属サービスが存在しないと判定された場合（１８０１：ＮＯ）、コントローラ３００は、削除サービスを削除指示サービスに設定し（１８０３）、ステップ１８０４の処理に進む。
【０１４８】
次に、コントローラ３００は、ユーザデータベース３２１のユーザＩＤ４０１に、削除指示に含まれるユーザの識別子が登録されたエントリの加入サービス情報４０２から削除サービスの識別子を削除する（１８０４）。
【０１４９】
次に、コントローラ３００は、サービス状態管理情報３１１のユーザＩＤ５０１に、削除指示に含まれるユーザの識別子が登録されたエントリのうち、削除サービスに対応するエントリの加入／未加入５０２に「未加入」を登録し、利用可否５０３に「不可」を登録する（１８０５）。
【０１５０】
次に、コントローラ３００は、サービス状態確認契機情報１０００のユーザＩＤ６０１に、削除指示に含まれるユーザの識別子が登録されたエントリの適用サービス一覧６０２から削除サービスの識別子を削除する（１８０６）。
【０１５１】
次に、コントローラ３００は、ステップ１８０６の処理で削除サービスの識別子が削除された後の適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子があるか否かを判定する（１８０７）。具体的には、コントローラ３００は、従属テーブルに従属関係が登録されたサービスの識別子の組が当該適用サービス一覧６０２に登録されているか否かを判定する。
【０１５２】
ステップ１８０７の処理で、適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子がないと判定された場合（１８０７：ＮＯ）、当該適用サービス一覧６０２に登録されたサービスの識別子によって識別されるサービスを提供するサービスファンクション２００の利用可否を示す情報は並列して取得可能であるので、コントローラ３００は、サービス状態確認契機情報１０００の当該エントリの状態確認契機６０３に「並列」を登録し、当該エントリの順序リストポインタ６０４に登録されたポインタが示す先頭エントリから始まる順序リスト１００１を削除し、当該エントリの順序リストポインタ６０４に「なし」を登録する（１８０８）。
【０１５３】
次に、コントローラ３００は、図示しない経路テンプレートを参照し、サービス経路リスト３１３のユーザＩＤ７０１に削除通知に含まれるユーザの識別子が登録されたレコードに含まれるエントリを更新し（１８０９）、削除時各種情報更新処理を終了する。経路テンプレートには、ユーザが加入し得るサービスの全てのパターンに対する条件と経路情報とが登録されているものとする。ステップ１８０９の処理では、コントローラ３００は、削除サービスを削除した後のユーザが加入するサービスに対する条件と経路情報とを経路テンプレートから取得し、サービス経路リスト３１３のレコードに含まれるエントリに取得した条件と経路情報とを登録する。
【０１５４】
一方、ステップ１８０７の処理で、適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子があると判定された場合（１８０７：ＹＥＳ）、当該適用サービス一覧６０２に登録されたサービスの識別子によって識別されるサービスを提供するサービスファンクション２００の利用可否を示す情報は逐次的に取得される必要がある。このため、コントローラ３００は、サービス状態確認契機情報１０００の当該エントリの状態確認契機６０３に「逐次」を登録し、当該エントリの順序リストポインタ６０４に登録されたポインタが示す先頭エントリから始まる順序リスト１００１に含まれるエントリのうち削除サービスに対応するエントリを削除し、当該順序リスト１００１に含まれる残りのエントリの正常時の次エントリ及び異常時の次エントリを更新する（１８１０）。正常時の次エントリ及び異常時の次エントリの更新は、サービスの従属関係を考慮して、実行される。
【０１５５】
次に、コントローラ３００は、サービス状態確認契機情報１０００のエントリの順序リストポインタ６０４に登録されたポインタが示す先頭エントリが削除されていれば、当該順序リストポインタ６０４に、ステップ１８１０の処理で更新された順序リスト１００１の先頭エントリを示すポインタを登録し（１８１１）、ステップ１８０９の処理に進む。
【０１５６】
以上によって、ユーザの加入するサービスが削除された場合であっても、ユーザデータベース３２１、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３が自動的に更新されるので、管理者が手動でこれらの情報を更新する場合に比べて管理者の手間を低減できる。
【０１５７】
なお、本実施例では、図１７に示すステップ１７０２の処理でコントローラ３００が削除時各種情報更新処理を実行して、ユーザデータベース３２１、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３を更新するものとしたが、管理者がこれらの情報を手動で更新してもよい。
【０１５８】
図１９は、本実施例のユーザが加入するサービスに新たなサービスを追加する場合の経路設定処理のシーケンス図である。
【０１５９】
図１９では、ユーザ（ユーザＩＤ「３」）がサービスＣに加入しており、新たにサービスＢに加入する場合の処理を例に説明する。
【０１６０】
まず、ユーザＩＤ「３」のユーザが使用するユーザ端末１０は、サービスＢを新たに追加する入力を受け付けると、その旨を追加通知をコントローラ３００に送信する（１９０１）。
【０１６１】
コントローラ３００は、受信した追加通知に基づいて、ユーザデータベース３２１、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３を更新する追加時各種情報更新処理を実行する（１９０２）。追加時各種情報更新処理の詳細は図２０で説明する。
【０１６２】
サービスＢはサービスＡに従属するので、サービスＢの追加に伴い、サービスＡも追加される必要がある。このため、コントローラ３００は、サービスＡを提供するサービスファンクション２００Ａ及びサービスＢを提供するサービスファンクション２００Ｂに追加通知を送信する（１９０３）。
【０１６３】
サービスファンクション２００Ａは、追加通知を受信すると、受信した追加通知に基づいて応答処理を実行し、受信した追加通知に対する応答を送信する（１９０４Ａ）。サービスファンクション２００Ｂも、同様に、受信した追加通知に基づいて応答処理を実行し、受信した追加通知に対する応答を送信する（１９０４Ｂ）。
【０１６４】
コントローラ３００は、ステップ１９０２の処理で更新されたサービス状態管理情報３１１及びサービス経路リスト３１３に基づいて、経路を決定し、当該経路情報をフォワーダ及びクラシファイア１００に設定する（１９０５）。
【０１６５】
図２０は、本実施例の削除時各種情報更新処理のフローチャートである。
【０１６６】
まず、コントローラ３００は、図示しない従属テーブルを参照し、受信した追加通知が示す追加するサービス（追加指示サービス）が従属する被従属サービスが存在するか否かを判定する（２００１）。
【０１６７】
ステップ２００１の処理で、追加指示サービスが従属する被従属サービスが存在すると判定された場合（２００１：ＹＥＳ）、コントローラ３００は、ユーザデータベース３２１を参照し、新たにサービスを追加するユーザの加入済みサービスに当該被従属サービスが存在するか否かを判定する（２００２）。具体的には、コントローラ３００は、ユーザデータベース３２１のユーザＩＤ４０１に追加指示に含まれるユーザの識別子が登録されたエントリの加入サービス情報４０２に追加指示サービスの被従属サービスが登録されているか否かを判定する。
【０１６８】
ステップ２００２の処理で、ユーザの加入済みサービスに追加指示サービスが従属する被従属サービスが存在すると判定された場合（２００２：ＹＥＳ）、コントローラ３００は、追加指示サービスを追加サービスに設定し（２００３）、ステップ２００５の処理に進む。また、ステップ２００１の処理で、追加指示サービスが従属する被従属サービスが存在しないと判定された場合（２００１：ＮＯ）、ステップ２００３の処理で、追加指示サービスが追加サービスに設定される。
【０１６９】
一方、ステップ２００２の処理で、ユーザの加入済みサービスに追加指示サービスが従属する被従属サービスが存在しないと判定された場合（２００２：ＮＯ）、コントローラ３００は、追加指示サービス及び被従属サービスを追加サービスに設定し、ステップ２００５の処理に進む。
【０１７０】
次に、コントローラ３００は、ユーザデータベース３２１のユーザＩＤ４０１に、追加指示に含まれるユーザの識別子が登録されたエントリの加入サービス情報４０２に追加サービスの識別子を追加する（２００５）。
【０１７１】
次に、コントローラ３００は、サービス状態管理情報３１１のユーザＩＤ５０１に、追加指示に含まれるユーザの識別子が登録されたエントリのうち、追加サービスに対応するエントリの加入／未加入５０２に「加入」を登録する（２００６）。
【０１７２】
次に、コントローラ３００は、サービス状態確認契機情報１０００のユーザＩＤ６０１に、追加指示に含まれるユーザの識別子が登録されたエントリの適用サービス一覧６０２に追加サービスの識別子を追加する（２００７）。
【０１７３】
次に、コントローラ３００は、ステップ２００７の処理で追加サービスの識別子が追加された後の適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子があるか否かを判定する（２００８）。具体的な処理は、図１８に示すステップ１８０７の処理と同じであるので説明を省略する。
【０１７４】
ステップ２００８の処理で、適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子がないと判定された場合（２００８：ＮＯ）、サービスが追加される前の適用サービス一覧６０２に従属関係となるサービスの識別子が登録されておらず、当該エントリの状態確認契機６０３に「並列」が登録され、順序リストポインタ６０４に「なし」が登録されているので、ステップ２００９の処理に進む。
【０１７５】
ステップ２００９の処理では、コントローラ３００は、図示しない経路テンプレートを参照し、サービス経路リスト３１３のユーザＩＤ７０１に追加通知に含まれるユーザの識別子が登録されたレコードに含まれるエントリを更新し（２００９）、追加時各種情報更新処理を終了する。なお、ステップ２００９の処理の詳細は、図１８に示すステップ１８０９の処理と同じであるので、説明を省略する。
【０１７６】
一方、ステップ２００８の処理で、適用サービス一覧６０２に登録されたサービスの識別子に従属関係となるサービスの識別子があると判定された場合（２００８：ＹＥＳ）、当該適用サービス一覧６０２に登録されたサービスの識別子によって識別されるサービスを提供するサービスファンクション２００の利用可否を示す情報は逐次的に取得される必要がある。このため、コントローラ３００は、サービス状態確認契機情報１０００の当該エントリの状態確認契機６０３に「逐次」を登録し、当該エントリの順序リストポインタ６０４に登録されたポインタが示す先頭エントリから始まる順序リスト１００１に追加サービスのエントリを追加し、追加サービスのエントリに接続されるエントリの正常時の次エントリ及び異常時の次エントリを更新し（２０１０）、ステップ２００９の処理に進む。例えば、追加サービスのエントリは、順序リスト１００１の最後のエントリに接続されるように追加されるものとする。この場合、順序リスト１００１の最後のエントリの正常時の次エントリ及び異常時の次エントリを、追加サービスのエントリに更新する。
【０１７７】
以上によって、ユーザの加入するサービスが追加された場合であっても、ユーザデータベース３２１、サービス状態管理情報３１１、サービス状態確認手順情報３１２、及びサービス経路リスト３１３が自動的に更新されるので、管理者が手動でこれらの情報を更新する場合に比べて管理者の手間を低減できる。
【０１７８】
図２１は、本実施例のユーザ端末１０のサービスファンクション２００の利用量が閾値以上となった場合の経路設定処理のシーケンス図である。
【０１７９】
図２１では、サービスファンクション２００Ａが、ユーザＩＤ「３」のユーザ端末１０の利用量が閾値以上である場合について説明する。例えば、利用量は、サービスファンクション２００Ａとユーザ端末１０との間で通信したパケットの容量の合計であってもよいし、サービスファンクション２００Ａとユーザ端末１０との間で通信したパケットの数等であってもよい。
【０１８０】
サービスファンクション２００Ａは、ユーザ端末１０の利用量が閾値以上となったことを検出すると、切断通知をコントローラ３００に送信する（２１０１）。切断通知は、利用量が閾値以上となったユーザ端末１０のユーザの識別子と、サービスファンクション２００Ａが提供するサービスの識別子を含み、サービスファンクション２００Ａが提供するサービスをユーザ端末１０が利用できないことを示す。
【０１８１】
コントローラ３００は、切断通知を受信すると、受信した切断通知に基づいてサービス状態管理情報３１１の利用可否５０３を更新する（２１０２）。
【０１８２】
具体的には、コントローラ３００は、サービス状態確認手順情報３１２を参照し、受信した切断通知に含まれるサービスの識別子によって識別されるサービスに従属する従属サービスがあるか否かを判定する。従属サービスがある場合、コントローラ３００は、サービス状態管理情報３１１のユーザＩＤ５０１に、切断通知に含まれるユーザの識別子が登録されたエントリの受信した切断通知に含まれるサービスの識別子に対応する利用可否５０３に「不可」を登録し、当該エントリの従属サービスの識別子に対応する利用可否５０３に「不可」を登録する。一方、従属サービスがない場合、コントローラ３００は、サービス状態管理情報３１１のユーザＩＤ６０１に、切断通知に含まれるユーザの識別子が登録されたエントリの受信した切断通知に含まれるサービスの識別子に対応する利用可否５０３に「不可」を登録する。
【０１８３】
なお、サービスファンクション２００Ａが提供するサービスＡにサービスファンクション２００Ｂが提供するサービスＢが従属するので、ユーザＩＤ「３」のサービスＡ及びサービスＢの利用可否５０３に「不可」が登録される。
【０１８４】
次に、コントローラ３００は、受信した切断通知の応答処理を実行し、切断通知に対する応答をサービスファンクション２００Ａに送信する（２１０３）。
【０１８５】
次に、コントローラ３００は、ユーザ端末１０のユーザのユーザＩＤ、及びステップ２１０２の処理で取得したサービスファンクション２００の利用可否を示す情報を検索キーとして、サービス経路リスト３１３を検索し、検索キーと一致するエントリのサービス経路情報７０３に登録された経路情報が示す経路を、当該ユーザ端末１０に適用する経路として決定し、当該経路情報をフォワーダ及びクラシファイア１００に設定する（２１０４）。
【０１８６】
なお、図２１では、切断通知は、サービスファンクション２００がユーザ端末の利用量が閾値以上となった場合に送信される例について説明したが、サービスファンクション２００が異常を検出した場合に送信されてもよい。
【０１８７】
以上によって、サービスファンクション２００の管理者と経路の管理者とが異なる場合であっても、サービスファンクション２００の利用量が閾値以上となったこと、又はサービスファンクション２００で異常が発生したことを経路に反映することができる。
【０１８８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。
【０１８９】
また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
【０１９０】
また、前記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【０１９１】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤカード、ＤＶＤ（Digital Versatile Disc）等の記録媒体に置くことができる。
【０１９２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１９３】
１０    ユーザ端末
２０    アクセス網
３０    コア網
４０    インターネット
９０    宛先装置
１００    加入者収容ルータ（クラシファイア）
１１０    制御カード
１１１    プロセッサ
１１２    メモリ
１２０    ラインカード
１２１    転送テーブル
１２２    サービス識別テーブル
１２３    転送エンジン
２００    サービスファンクション
３００    コントローラ（制御装置）
３１０    メモリ
３１１    サービス状態管理情報
３１２    サービス状態確認手順情報
３１３    サービス経路リスト
３２０    二次記憶装置
３２１    ユーザデータベース
３４０    プロセッサ
３４１    経路設定部
１０００    サービス状態確認契機情報
【図１】
0006522490.tif 000002
【図２】
0006522490.tif 000003
【図３】
0006522490.tif 000004
【図４】
0006522490.tif 000005
【図５】
0006522490.tif 000006
【図６】
0006522490.tif 000007
【図７】
0006522490.tif 000008
【図８】
0006522490.tif 000009
【図９】
0006522490.tif 000010
【図１０】
0006522490.tif 000011
【図１１】
0006522490.tif 000012
【図１２】
0006522490.tif 000013
【図１３】
0006522490.tif 000014
【図１４】
0006522490.tif 000015
【図１５】
0006522490.tif 000016
【図１６】
0006522490.tif 000017
【図１７】
0006522490.tif 000018
【図１８】
0006522490.tif 000019
【図１９】
0006522490.tif 000020
【図２０】
0006522490.tif 000021
【図２１】
0006522490.tif 000022