(57)【要約】【課題】  プログラマブルなネットワーク・ノードによって構成されるネットワークにおいて、パケットの同定を可能にして QoS 保証や通信の信頼性、スループット制御などのネットワーク基盤サービス提供を可能にする。【解決手段】  ゲートウェイ H131 は、パケット送信時にタイムスタンプなどの計測情報をふくむ付加情報をそのパケットに挿入し、ネットワーク・ノード内のプログラム 121、122 への入力時にパケットの同定情報、付加情報、ヘッダ情報をテーブル141、142に登録し、上記のプログラムからの出力時にそのパケットの同定情報をキーとしてテーブル141、142を検索し、同定されたらテーブルの要素から付加情報およびヘッダ情報とを回復し、ゲートウェイ H132 は、パケット受信時に付加情報をパケットからとりだして計測等の操作をおこなう。【選択図】図１
2014036289.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを含むネットワーク・ノードであって、
外部から第 1 のパケットを受信すると、前記プログラムに対応する同定指示情報によって指示される前記第 1 のパケット上のパケット同定情報をキーとして前記第 1 のパケットの第 1 のヘッダ情報をテーブルに登録するとともに、前記第 1 のパケットから前記第 1 のヘッダ情報を削除してえられた第 2 のパケットを前記プログラムに入力し、
前記プログラムから第 3 のパケットを受信すると、前記第 3 のパケット上の前記パケット同定情報をキーとして前記テーブルを検索し、
当該キーが登録されていたときは、検索された第 2 のヘッダ情報を前記第 3 のパケットに付加した第 4 のパケットを外部に転送する
ことを特徴とするネットワーク・ノード。
【請求項２】
請求項１に記載のネットワーク・ノードであって、
前記テーブルは、前記パケット同定情報と、パケットの入力時刻と、前記ヘッダ情報を、登録情報として記憶する
ことを特徴とするネットワーク・ノード。
【請求項３】
請求項１に記載のネットワーク・ノードであって、
前記ヘッダ情報は、パケットを生成したノードの識別子、パケット同定情報、生成された時刻を示すタイムスタンプを含む
ことを特徴とするネットワーク・ノード。
【請求項４】
請求項１に記載のネットワーク・ノードであって、
前記プログラムから前記第 3 のパケットを受信した際に、前記テーブルに前記キーであるパケット同定情報が登録されていたときは、登録されていた情報を削除する
ことを特徴とするネットワーク・ノード。
【請求項５】
請求項１に記載のネットワーク・ノードであって、
前記テーブルに登録された前記パケット同定情報が一定時間内に削除されなかったとき、当該パケット同定情報を削除する
ことを特徴とするネットワーク・ノード。
【請求項６】
プログラムを含むネットワーク・ノードにおける通信方法であって、
前記ネットワーク・ノードは、
外部から第 1 のパケットを受信すると、前記プログラムに対応する同定指示情報によって指示される前記第 1 のパケット上のパケット同定情報をキーとして前記第 1 のパケットの第 1 のヘッダ情報をテーブルに登録し、
前記第 1 のパケットから前記第 1 のヘッダ情報を削除してえられた第 2 のパケットを前記プログラムに入力し、
前記プログラムから処理後の第 3 のパケットを受信すると、前記第 3 のパケット上の前記パケット同定情報をキーとして前記テーブルを検索し、
当該キーが登録されていたときは、検索された第 2 のヘッダ情報を前記第 3 のパケットに付加した第 4 のパケットを外部に転送する
ことを特徴とする通信方法。
【請求項７】
請求項６に記載の通信方法であって、
前記ネットワーク・ノードは、
前記テーブルに、前記パケット同定情報と、パケットの入力時刻と、前記ヘッダ情報を、登録情報として記憶する
ことを特徴とする通信方法。
【請求項８】
請求項６に記載の通信方法であって、
前記ネットワーク・ノードは、
前記テーブルに、前記ヘッダ情報として、パケットを生成したノードの識別子、パケット同定情報、生成された時刻を示すタイムスタンプを記憶する
ことを特徴とする通信方法。
【請求項９】
請求項６に記載の通信方法であって、
前記ネットワーク・ノードは、
前記プログラムから前記第 3 のパケットを受信した際に、前記テーブルに前記キーであるパケット同定情報が登録されていたときは、登録されていた情報を削除する
ことを特徴とする通信方法。
【請求項１０】
請求項７に記載の通信方法であって、
前記ネットワーク・ノードは、
前記テーブルの前記パケット同定情報が一定時間内に削除されなかったとき、当該パケット同定情報を削除する
ことを特徴とする通信方法。
【請求項１１】
プログラマブルな第 1 のネットワーク・ノードと、第 1 のゲートウェイと、第 2 のゲートウェイとを含むネットワークシステムであって、
前記第 1 のネットワーク・ノードは、
外部から第 1 のパケットを受信すると、プログラムに対応する同定指示情報によって指示される前記第 1 のパケット上のパケット同定情報をキーとして前記第 1 のパケットの第 1 のヘッダ情報をテーブルに登録し、
前記第 1 のパケットから前記第 1 のヘッダ情報を削除して得られた第 2 のパケットを前記プログラムに入力し、
前記プログラムから処理後の第 3 のパケットを受信すると、前記第 3 のパケット上の前記パケット同定情報をキーとして前記テーブルを検索し、
当該キーが登録されていたときは、検索された第 2 のヘッダ情報を前記第 3 のパケットに付加した第 4 のパケットを転送する
ことを特徴とするネットワークシステム。
【請求項１２】
請求項１１に記載のネットワークシステムであって、
前記第 1 のネットワーク・ノードは、
前記プログラムから前記第 3 のパケットを受信した際であって、前記テーブルに前記キーであるパケット同定情報が登録されていたとき、又は、前記テーブルに登録された前記パケット同定情報が一定時間内に削除されなかったとき、
当該パケット同定情報を削除する
ことを特徴とするネットワークシステム。
【請求項１３】
請求項１１に記載のネットワークシステムであって、
前記第 1 のパケットが、前記第 1 のゲートウェイがネットワークの外部から受信した第 5 のパケットに第 1 の付加情報を付加したものであり、
前記第 1 のネットワーク・ノードが、前記テーブルへの登録の際に前記第 1 の付加情報をあわせて登録し、
前記第１のネットワーク・ノードは、前記テーブルに前記キーが登録されていたときは、検索された第 2 の付加情報を前記第 4 のパケットに付加し、
前記第 2 のゲートウェイが前記第 4 のパケットを受信すると、前記第 2 の付加情報を削除した第 6 のパケットをネットワークの外部に転送する
ことを特徴とするネットワークシステム。
【請求項１４】
請求項１３に記載のネットワークシステムであって、
前記第 1 のゲートウェイと前記第 2 のゲートウェイとが時刻同期し、
前記第 1 のゲートウェイが前記第 1 の付加情報の一部として前記第 5 のパケットの通過時のタイムスタンプを使用し、
前記第 2 のゲートウェイが前記第 4 のパケットの通過時の時刻を求めるとともに、前記第 2 の付加情報からタイムスタンプを抽出してそれらの差を求めることにより、ネットワークにおけるパケットの遅延時間を計算する
ことを特徴とするネットワークシステム。
【請求項１５】
請求項１３に記載のネットワークシステムであって、
前記第 1 のゲートウェイが、前記第 5 のパケットがサンプリング条件に合致するときだけ特定のデータを前記第 1 の付加情報に取り入れ、
前記第 2 のゲートウェイが、前記第 4 のパケットが前記特定のデータを含むとき、前記特定のデータを抽出して計算する
ことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラマブルなネットワーク・ノードを使用するネットワークに関係し、特にそこでの通信の QoS 保証のために必要なネットワークの入口−出口間での遅延計測等の基盤サービス提供技術に関する。 
【背景技術】
【０００２】
背景技術として、ネットワーク上の複数の点においてパケットの同定を必要とする QoS（Quality of Service） 保証や通信の信頼性、スループット制御などに関する技術と、プログラマブルなネットワーク・ノードを使用する技術の 2 つをあげることができる。
【０００３】
まず前者に関して記述する。ネットワークにおいては、端点間 （end−to−end） またはそのネットワークの入口、出口を通過するパケットの同定が必要なサービスの提供が必要になる。このようなサービスとして、たとえばつぎの 2 つがある。
【０００４】
第 1 のサービスは QoS 保証である。シーケンス番号などの挿入によってパケットの同定ができ、かつそのパケットにタイムスタンプなどの計測情報をいれることができれば、そのパケットが通過する 2 点間での遅延等の計測をおこなうことができる。このような計測のために、従来はつぎの 2 つの方法があった。ひとつの方法はアプリケーション・パケットを利用して計測する方法である。この方法においてはアプリケーションがパケットに識別および計測に必要な情報をいれるか、またはネットワークの入口においてそれらに必要な情報を挿入できるフィールドがパケットに確保されていることが必要である。もうひとつの方法はプローブ・パケットを利用して計測する方法である。この方法においてはアプリケーションとは無関係な計測専用のパケットをアプリケーション・パケットと同一の経路にながして計測する。特許文献１はこれら 2 つの方法を記述している。
【０００５】
第 2 のサービスは通信の信頼性とスループットの制御である。これらを提供する有名なプロトコルとして非特許文献１の TCP （Transmission Control Protocol） がある。TCP においてはシーケンス番号の挿入によってパケットの同定を可能にするとともに、パケットの紛失が検出できるようにし、紛失したパケットの再送によって通信の信頼性を確保するとともに、パケットが紛失しなければスループットを増加させ、紛失が発生すればそれを減少させるというレート制御をおこなうことによって、通信路を有効利用するとともに複数の TCP 通信間で公平性がたもたれるようにスループットを制御している。特許文献２、特許文献３においては WAN において TCP 通信のスループットが低下するのを防止するため、WAN 高速化装置を導入して LAN 内と WAN 内とでことなるフロー制御をおこなっている。また、特許文献４においては同様の構成において WAN においてはフロー制御をおこなわないことでスループットが低下するのを防止している。特許文献２、特許文献３、特許文献４のいずれにおいても、WAN においては TCP を他のプロトコルに変換することにより、TCP が原因となるスループットの低下を防止している。レート制御としては TCP におけるようなフィードバック制御法が使用されるのが一般的だが、非特許文献４においてはフィードバック制御法とともにフィードフォワード制御法が記述されている。
【０００６】
つぎに、プログラマブルなネットワーク・ノードを使用する技術について記述する。あたらしいプロトコルや他のネットワーク機能の実験を可能にするため、プログラマブルなネットワーク・ノードが開発されている。もっとも有名なものは非特許文献２に記述された PlanetLab である。PlanetLab においては同時にネットワーク・ノードを仮想化（ネットワーク仮想化）し、1 個のネットワーク・ノードが複数の仮想ネットワーク（スライス）ごとにことなる機能を実現する方法も実現されている。ほかにも、非特許文献３に紹介されている Tempest、Genesis、Cabo などにおいてもプログラマブルかつ仮想化可能なネットワーク・ノードが提供されている。PlanetLab においてはノード内で計測をおこなうためのツールが提供されているが、これはノード内にとじた機能である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−４４１２５号公報
【特許文献２】特開平７−２５０１００号公報
【特許文献３】特開平１１−３４１０７２号公報
【特許文献４】特開２０１２−７４９２８号公報
【非特許文献】
【０００８】
【非特許文献１】RFC 793“Transmission Control Protocol”、IETF、1981
【非特許文献２】Andy Bavier、Scott Karlin、Steve Muir、Larry Peterson、Tammo Spalink、Mike Wawrzoniak、Mic Bowman、Brent Chun、Timothy Roscoe、David Culler 著: Operating System Support for Planetary−Scale Network Services、USENIX 1st Symposium on Networked Systems Design and Implementation、2004
【非特許文献３】N. M. Mosharaf、Kabir Chowdhurya、Raouf Boutaba 著: A survey of network virtualization、Computer Networks、Vol. 54、No.5、pp. 862−876、April 2010
【非特許文献４】Paulo  Jorge  Loureco  Nunes  著:  Rate  control for object−based video coding、DISSERTACAO PARA OBTENCAO DO GRAU DE DOUTOR EM ENGENHARIA ELECTROTECNICA E DE COMPUTADORES、2007. http://www.google.co.jp/url?sa=t&rct=j&q=IEEE+802.3+feedforward+rate+control&source=web&cd=16&ved=0CGIQFjAFOAo&url=http%3A%2F%2Fwww.img.lx.it.pt%2Fpublications%2FTheses%2FPauloNunes_PhD.pdf&ei=UajiT6fFAsvUmAXSm6XZAw&usg=AFQjCNE05ZtHueTzbfvWjwba2ieOBmR4oQ（p.333、p.236）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
この発明が解決しようとする課題は、プログラマブルなネットワーク・ノードによって構成されるネットワークにおいてパケットの同定を可能にし、それによって QoS 保証や通信の信頼性、スループット制御などのネットワーク基盤サービス提供を可能にすることである。背景技術においてのべたように、端点間あるいはネットワーク入口点−出口点間の遅延計測にもとづく QoS 保証やそれらの点の間での通信の信頼性、スループット制御などの機能を提供するとき、これらの点におけるパケットの同定が必要になる。ところが、プログラマブルなネットワーク・ノードにおいてはパケットの同一性はそこで動作するプログラムに依存する。
【００１０】
すなわち、そのプログラムはあらたなパケットを生成することもできるし、入力されたパケットを消費して出力しないようにすることもできる。入力されたパケットに 1 対 1 に対応するパケットを出力する場合でも、そのネットワーク・ノードに接続されたリンクが複数個存在するときはどのリンクに出力するかはプログラムに依存するため、外部からはわからない。入力されてからどれだけ時間がたってから出力するかもプログラムに依存するため、外部から予測することはできない。さらに、パケットの内容はプログラムに依存するから、入力パケットと出力パケットとを同定することはできない。このパケット同定を可能にすることによってはじめて上記の QoS 保証や通信の信頼性、スループット制御などのネットワーク基盤サービス提供という課題を解決することができる。
【００１１】
この課題はつぎのような副課題に分解することができる。第 1 の副課題はプログラマブルなネットワーク・ノードにおいて入力されるパケットと出力されるパケットとを同定することである。すなわち、入力されたパケットがいつどのリンクに出力されるか、また出力されたパケットが入力されたものかどうかが判定できるようにすることである。第 2 の副課題は端点間あるいはネットワークの入口点−出口点間において、ネットワーク・ノードのプログラムに影響をあたえずにパケットの同定と遅延計測や通信の信頼性、スループット制御などを実現する機能を実現することである。これらの課題はネットワーク基盤の提供者（たとえばキャリア）とネットワーク・ノード上のプログラムの提供者（たとえばサービス・プロバイダ）とが異なるときにはとくに重要である。すなわち、ネットワーク基盤の提供者はプログラムの機能を知ることができないため第 1 の副課題を解決することが重要になる。また、ネットワーク基盤の提供者がプログラムに影響をあたえずに計測や通信の信頼性、スループット制御などのネットワーク基盤サービスを追加・改善できるためには第 2 の副課題を解決することが重要になる。
【００１２】
本発明の目的は、上記の課題を解決し、プログラマブルなネットワーク・ノードによって構成されるネットワークにおいて、パケットの同定を可能にして QoS 保証や通信の信頼性を確保可能なネットワーク・ノード、通信方法、及びシステムを提供することにある。
【課題を解決するための手段】
【００１３】
上記の目的を達成するため、本発明においては、プログラムを含むネットワーク・ノードであって、外部から第 1 のパケットを受信すると、プログラムに対応する同定指示情報によって指示される第 1 のパケット上のパケット同定情報をキーとして、第 1 のパケットの第 1 のヘッダ情報をテーブルに登録するとともに、第 1 のパケットから第 1 のヘッダ情報を削除して得られた第 2 のパケットをプログラムに入力し、プログラムから第 3 のパケットを受信すると、第 3 のパケット上のパケット同定情報をキーとしてテーブルを検索し、当該キーが登録されていたときは、検索された第 2 のヘッダ情報を第 3 のパケットに付加した第 4 のパケットを生成して外部に転送するネットワーク・ノードを提供する。
【００１４】
また、上記の目的を達成するため、本発明においては、プログラムを含むネットワーク・ノードにおける通信方法であって、ネットワーク・ノードは、外部から第 1 のパケットを受信すると、プログラムに対応する同定指示情報によって指示される第 1 のパケット上のパケット同定情報をキーとして第 1 のパケットの第 1 のヘッダ情報をテーブルに登録し、第 1 のパケットから第 1 のヘッダ情報を削除してえられた第 2 のパケットをプログラムに入力し、プログラムから処理後の第 3 のパケットを受信すると、第 3 のパケット上のパケット同定情報をキーとしてテーブルを検索し、当該キーが登録されていたときは、検索された第 2 のヘッダ情報を第 3 のパケットに付加した第 4 のパケットを外部に転送する通信方法を提供する。
【００１５】
更に、上記の目的を達成するため、プログラマブルな第 1 のネットワーク・ノードと、第 1 のゲートウェイと、第 2 のゲートウェイとを含むネットワークシステムであって、第 1 のネットワーク・ノードは、外部から第 1 のパケットを受信すると、プログラムに対応する同定指示情報によって指示される第 1 のパケット上のパケット同定情報をキーとして第 1 のパケットの第 1 のヘッダ情報をテーブルに登録し、第 1 のパケットから第 1 のヘッダ情報を削除して得られた第 2 のパケットをプログラムに入力し、プログラムから処理後の第 3 のパケットを受信すると、第 3 のパケット上のパケット同定情報をキーとしてテーブルを検索し、当該キーが登録されていたときは、検索された第 2 のヘッダ情報を第 3 のパケットに付加した第 4 のパケットを転送する構成のネットワークシステムを提供する。
【発明の効果】
【００１６】
本発明により、第 1 にプログラマブルなネットワーク・ノードにおいて入出力されるパケットが同定できるようになり、第 2 に端点間あるいはネットワークの入口点−出口点間において、プログラムに影響をあたえずにパケットの同定と遅延計測や通信の信頼性、スループット制御などを実現できる。
【００１７】
それらによって、プログラマブルなノードによって構成されたネットワークにおいて QoS 保証や通信の信頼性、スループット制御などのネットワーク基盤サービスの提供が可能になる。
【図面の簡単な説明】
【００１８】
【図１】実施例１に係る、ネットワークおよびシステムの構成図である。
【図２】実施例１に係る、パケット構造の変遷を説明するための図である。
【図３Ａ】各実施例に係るパケットにおける付加情報の内容の一例を示した図である。
【図３Ｂ】各実施例に係るパケットにおける付加情報の内容の他の一例を示した図である。
【図４】実施例１に係る、パケット構造の変遷中のネットワーク・ノード内の処理を詳細化した図である。
【図５】実施例２に係る、ネットワークおよびシステムの構成図である。
【図６】各実施例に係る、ネットワークサーバの一例として、仮想化ネットワークサーバの概略構成を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を図面に従い順次説明するが、まず、その概要を説明する。
【００２０】
すなわち、本発明の好適な態様にあっては、つぎの 3 個の手段を使用する。第 1 はプログラムあるいは仮想化ノード毎の、入出力パケットの同定指示情報または同定関数である。第 2 はパケットに付加される計測情報などをふくむ付加情報である。第 3 はネットワーク・ノード毎、またはノード内のプログラム毎のノード内パケット管理テーブルである。
【００２１】
これらの手段をつぎのように使用する。
第 1 に、通信の開始点またはネットワーク入口点においてパケットを送信するとき、タイムスタンプなどの計測情報をふくむ付加情報をそのパケットに挿入する。
第 2 に、ネットワーク・ノードにパケットが入力され、それがノード内のプログラムに入力されるとき、付加情報つきパケットであれば、同定指示情報または同定関数によって指示されるそのパケットの同定情報と、そのパケットがふくむ付加情報およびヘッダ情報とをノード内パケット管理テーブルに登録する。
第 3 に、パケットがネットワーク・ノード内のプログラムから出力されるとき、そのパケットの同定情報をキーとしてノード内パケット管理テーブルに記録された入力パケットを検索する。入力パケットと同定されたら、ノード内パケット管理テーブルの要素から付加情報およびヘッダ情報とを回復する。
第 4 に、通信の終端点またはネットワーク出口点においてパケットを受信したときに、付加情報をふくむパケットが入力されると計測情報などの付加情報をそのパケットからとりだして、計測などの操作をおこなう。 
この方法を使用すれば、まずネットワーク・ノードからの出力時に、パケットが入力されたどのパケットと同一であるかを判定することができるため、第 1 の副課題が解決される。また、通信の開始点またはネットワーク入口点において挿入された付加情報はネットワーク・ノード上のプログラムには影響をあたえないため、第 2 の副課題が解決される。
【実施例１】
【００２２】
図 1 は、実施例１に係るネットワークおよびシステムの構成図である。本実施例において、このネットワーク 103 を構成するネットワーク・ノード H111、H112、H113 はプログラマブルなノードである。すなわち、これらのノードの機能はそこにロードされるプログラムによって決定される。この基盤となるネットワークはキャリアまたはネットワーク・プロバイダが提供し、ネットワーク基盤のうえで遅延計測サービスまたは QoS 保証サービスを顧客であるサービス・プロバイダに対して提供する。サービス・プロバイダはこのネットワーク基盤のうえで、ネットワーク基盤が提供するサービスを利用して、顧客であるエンド・ユーザのためのサービスを構築する。このサービスを実現するため、プログラムはサービス・プロバイダが提供するものとする。
【００２３】
図１に示した本実施例のネットワークシステムにおいては、各ネットワーク・ノード H111、H112、H113 に 1 個ずつのプログラムをロードし、ネットワーク・ノード H111、H112、H113 に到達したすべてのパケットは、同一のプログラムに入力される。しかし、ネットワーク 103 に、背景技術におけるネットワーク仮想化技術を適用することにより、物理ネットワーク 103 上にたがいに独立な複数の仮想ネットワークを生成し、仮想ネットワークごとにことなるプログラムを動作させることもできる。仮想ネットワークを使用すれば、ひとつのキャリアのひとつの物理ネットワークの上で、複数のサービス・プロバイダが異なるサービスを各サービス・プロバイダの顧客であるエンド・ユーザに提供することができる。
【００２４】
図６にネットワーク・ノード H111、H112、H113 の内部構成の一例として、仮想ネットワークにおける中継機能を持つ仮想化ノード（VNode）を例示した。ネットワーク・ノードは、基本的には、ネットワークに接続可能な、処理部と記憶部などを備える通常のコンピュータとして考えることができる。そして、内部の処理部を構成する中央処理部（CPU）は、記憶部であるメモリにロードされたプログラムを実行することにより、ネットワーク・ノードが受信する通信データであるパケットに対する処理を行う。すなわち、図１におけるネットワーク・ノードH111、 H113は、それぞれロードされたプログラム121、122を実行することにより、受信したパケットに対する処理を実行できれば良い。図６では、ネットワーク・ノードの一例として、仮想化ネットワークの仮想化ノード（VNode）を例示したが、ネットワーク・ノードとして、仮想化機能を持たないノード利用しても良い。
【００２５】
図６に示すように、仮想化ノード（VNode）601にあっては、その内部に、相互に御接続される仮想化ノード（VNode）マネージャ 602と、プログラマ 603と、リダイレクタ 604を備えている。プログラマ 603は、通信データであるパケットに対する処理を行う構成要素であり、CPUやメモリなどのハードウェアと、メモリに記憶され、CPUで実行されるソフトウェアとで構成される。パケットに対する処理を、仮想ネットワークの開発者がプログラムできるため、プログラマと呼ばれ、 1 個の仮想化ノードの中に複数個存在することができる。リダイレクタ 604は、通信データであるパケットを他の仮想化ノードや他の種類のノードから受信したり、それらにパケットを送信したりする転送機能を持つ構成要素である。仮想化ノード（VNode）マネージャ 603は、仮想化ノード全体の管理を行う構成要素である。 1 個の仮想化ノードの中に 1 個だけ存在し、通常は、ソフトウェアだけで構成される。図１に示した管理サーバ 152からの指示に基づいて動作する。
【００２６】
図１に戻り、コンピュータ H101 はネットワーク 103 を経由してコンピュータ H102 と通信する。すなわち、コンピュータ H101 が生成したパケットはゲートウェイ H131、ネットワーク・ノード H111、ネットワーク・ノード H113、ゲートウェイ H131 を経由してコンピュータ H102 に到達する。ネットワーク・ノード H111 においては当該のパケットをプログラム 121 において処理し、ネットワーク・ノード H113 においては当該のパケットをプログラム 122 において処理する。ここでネットワーク・ノード H111 および H113内のメモリにパケット管理テーブル 141、142 が格納されている。ネットワーク 103 の構成要素すなわちゲートウェイ H131、 H132、 ネットワーク・ノード H111、 H112、 H113 は管理サーバ 152 が管理している。
【００２７】
図 2 は、上記のネットワークの通信におけるパケット構造の変遷を記述している。コンピュータ H101 から出力されるパケットは パケット 201 または パケット 202 の形式である。図２に明らかなように、パケット 201 は、仮想パケット１からなる。なお、ここで仮想パケットとは、ネットワークが仮想化されているときに、仮想ネットワークを流れるパケットの意味であり、ネットワークを転送されるコンテンツである。また、パケット 202 はコンピュータ H101 内のプログラムが生成するパケット 201 に、転送や管理のための実ヘッダをつけたものである。この実ヘッダは、ネットワーク 103 が仮想化されているときは仮想ネットワークの識別情報をふくむことができる。また、実ヘッダの先頭にはイーサネット（登録商標）の MAC（メディア・アクセス・コントロール）ヘッダや IP（インターネット・プロトコル）のヘッダをふくむことができるため、パケット 202 はイーサネットや IP ネットワークなど、従来の標準プロトコルに従うネットワークによって転送することができる。
【００２８】
パケット 201 またはパケット 202 がゲートウェイ H131 に入力されると、ゲートウェイ H131 があらかじめ管理ノード 152 から受信した計測開始指示に含まれるサンプリング条件を満たすパケットであれば、パケット 203 を出力する。すなわち、ゲートウェイ H131 は、パケット 201 が入力されたときには実ヘッダと付加情報 300 を付加し、パケット 202 が入力されたときには付加情報 300 だけを付加する。この付加情報 300 とする特定のデータの具体例を、後で図３Ａ、３Ｂを用いて説明する。一方、入力されたパケットが上記のサンプリング条件を満たさないものであれば、入力されたパケットをそのまま出力するか、またはダミーの付加情報を付加して出力する。
【００２９】
なお、ネットワーク 103 が仮想化されているとき、ゲートウェイ H131 が仮想ネットワークを指定するときにはパケット 201 の形式で、またコンピュータ H101 が仮想ネットワークを指定するときにはパケット 202 の形式で、コンピュータ H101 からパケットが出力される。また、図においてはパケット 203 において実ヘッダ、付加情報 300、パケット 201 の順にデータがならべられているが、かならずしもこの順である必要はない。パケット 203 はパケット 202 と同様にその実ヘッダに MAC ヘッダや IP ヘッダをふくむことができるため、従来の標準プロトコルにしたがうネットワークによって転送することができる。すなわち、ネットワーク 103 としてインターネットなどの広域 IP ネットワークや広域イーサネットを使用することができる。
【００３０】
続いて、パケット 203 がネットワーク・ノード H111 に入力されると、実ヘッダと付加情報 300 のない形式のパケット 204 にされて、すなわちパケット 201 と同一の内容である仮想パケット１がプログラム 121 に渡される。その際、実ヘッダと付加情報 300 は、ノード H111 のノード内パケット管理テーブル 141 に登録される。プログラム 121 は、仮想パケット１に対して所定の処理を行い、プログラム 121 がパケット 205 を出力する。パケット 205 の内容は、プログラム処理の結果、後で説明する同定情報部分を除き、パケット 204 と異なる内容の仮想パケット２となっている。パケット 205 がプログラム 121 から出力されると、ノード H111 はノード内パケット管理テーブル 141 を検索してパケット 205 と同一のパケットが登録されているかどうかを、後で詳述する方法で判定する。このパケットが、ノード内パケット管理テーブル 141 のいずれかのパケットとして同定されると、パケット 203 の実ヘッダと付加情報 300 に必要な加工がくわえられてパケット 205 に付加され、パケット 206 が生成される。
【００３１】
なお、本実施例においては基本的に実ヘッダの値としては、テーブルに保存された値がそのままパケット 205 に付加されるが、パケット 205 の内容に従って実ヘッダの値を書き換えることもできる。すなわち、あらかじめネットワーク・ノード H111 においては、パケット 205 の特定部分の値、もしくはパケット 205 を特定の関数を適用することにより得られる値によって、パケットの転送先を制御するように決めておき、パケット 205 が出力されたときにその値にしたがって転送先のアドレスを選択して、そのアドレスを実ヘッダに入れることによって転送先を制御することが可能である。あるいは、プログラム 121 からパケット 205 とは独立にネットワーク・ノード H111 に転送先を選択するための情報を渡して、それに従って実ヘッダにおけるアドレスを H111 が選択することも可能である。
【００３２】
ノード内パケット管理テーブル 141 に登録されていたときは、その登録情報をノード内パケット管理テーブル 141 から削除する。また、ノード内パケット管理テーブル 141 のエントリで一定時間 （たとえば 10 ms） 使用されないものは削除する。
【００３３】
ネットワーク・ノード H111 から送信されたパケット 206 は、ネットワーク・ノード H113 に転送されてパケット 207 、すなわちパケット 205 と同一のコンテンツである仮想パケット２ がプログラム 122 に渡される。パケット 207 に対する所定の処理を行った後、プログラム 122 がパケット 208 、すなわち仮想パケット３を出力する。プログラム 122 がネットワーク・ノード 113 においてパケット 207 と同定されると、実ヘッダと付加情報 300 が付加されたパケット 209 がノード H113 から出力される。
【００３４】
パケット 209 はゲートウェイ 132 に到達するとゲートウェイ 131 から出力された時点からの遅延が計測され、付加情報 300 は削除される。ゲートウェイ 132 からコンピュータ H102 に到達するパケットの形式はパケット 210 またパケット 211 の形式である。ネットワーク 103 が仮想化されているとき、ゲートウェイ H132 が仮想ネットワークを指定するときにはパケット 210 の形式で、またコンピュータ H102 が仮想ネットワークを指定するときにはパケット 211 の形式で、コンピュータ H102 にパケットが入力される。
【００３５】
図３Ａは、本実施例のネットワークで用いられる、図 2 のパケット 203、 206、 209 における付加情報 300 の内容の一例を示す。図３Ａに示すように、付加情報 300 は、生成実ノード識別子 301、実パケット同定情報 302、初期タイムスタンプ 303 によって構成されている。生成実ノード識別子 301 は、付加情報 300 を生成したゲートウェイの識別子であり、パケット 203 においては、それを生成したゲートウェイ H131 の識別子 H131 が格納される。付加情報 300 はこれに限定されるものでなく、更に、予め設定した他の特定のデータを付加しても良い。
【００３６】
実パケット同定情報 302 はネットワーク 103 において扱われるすべてのパケットを一意に識別することができる識別子である。初期タイムスタンプ 303 はパケットがゲートウェイを通過した時刻 （識別情報が生成された時刻） である。生成実ノード識別子 301 と初期タイムスタンプ 303 とでパケットが一意に識別することができるときは、それらによって実パケット同定情報 302 を代用することができる。また、ネットワーク全体でパケットに一意な識別子をあたえるために、管理サーバ 152 が各ゲートウェイにそこで使用する識別子の範囲を指示することができる。
【００３７】
本実施例のネットワークにおいては、ゲートウェイ H131 と H132 とは精密に時刻同期している。そのため、ゲートウェイ H132 がパケットを受信した際には、ゲートウェイ H132 が、あらかじめ管理ノード 152 から計測終了指示を受信していれば、ゲートウェイ H131 がもつ時計とパケットが含むタイムスタンプ 303 との差をもとめることによって、ゲートウェイ H131−H132 間でのパケットの遅延をもとめる。もとめた遅延はゲートウェイ 132 において平均・分散の計算などの統計処理を経たのち、管理サーバ 152 に報告する。なお、Network Time Protocol v4（NTPv4）（RFC 5905）に記述された方法などを使用することによって、数 10 マイクロ秒程度の誤差で遅延を計測することが可能である。
【００３８】
図 4 は図 2 のパケットの生成と変換で記述した処理のうち、ネットワーク・ノード H111 内の処理を詳細化したものである。本実施例のネットワーク・ノード H111 に到達するパケット 203 は、図４の最上段に示すように、実ヘッダ（rh）に加え、生成実ノード識別子 301 として H131、実パケット同定情報 302 として rp（数値）、初期タイムスタンプ 303 として T（数値）を含む。また、パケット 201 は、仮想パケット１に対応する、同定情報 vid とコンテンツ vp1 とを含んでいる。この同定情報 vid がパケット 201 のどの位置に含まれるかは、プログラム 121 の開発者によって、同定指示情報 401 のように指定される。図 4 の同定指示情報 401 では、同定情報がパケットの先頭位置から 0 ビットめから 15 ビットめまでであることを表わしている。そして、この同定情報 vid は、プログラム 121 の処理によって変更されることが無いように設定されている。
【００３９】
ネットワーク・ノード H111 は、同定指示情報 401 をプログラム 121 のロード時にプログラム 121 と共に受け取ってメモリに格納し、ネットワーク・ノード H111 にパケットが入力されるごとに同定指示情報 401 を参照して、入力されたパケット 204 から同定情報 vid を抽出して、ノード内パケット管理テーブル 141 に、プログラム内パケット同定情報として格納する。図 4 に示すように、ノード内パケット管理テーブル 141 には、ノード識別子 H131 301、実パケット同定情報 rp 302、初期タイムスタンプ T 303、およびパケットが入力された入力時刻 t0 もあわせて格納する。ネットワーク・ノードにおけるパケット処理の遅延を減少させるためには、この処理を高速におこなう必要がある。そのため、この処理は、ネットワーク・ノード中のハードウェアまたはネットワーク・プロセッサのような高速処理機構のソフトウェアによって行う。
【００４０】
受け取ったパケット 204 に対する処理を終了したプログラム 121 が処理後のパケット 205 を出力する。この出力されたパケット 205 では、パケット 204 のコンテンツ vp1 が、コンテンツvp2 に変更されているが、同定情報 vid は変更されていない。ネットワーク・ノード H111 は同定指示情報 401 を参照して、出力されたパケットから同定情報 vid を抽出して、ノード内パケット管理テーブル 141 に、プログラム内パケット同定情報として同一の同定情報 vid がふくまれるかどうか検索する。同一の同定情報がみつかれば、ノード内パケット管理テーブル 141 のその行から付加情報 300 をとりだして、出力されたパケットに付加したパケット 206 を出力する。このとき、パケットの出力時刻をもとめればプログラム 121 における、当該パケットに対する処理時間をもとめることができる。この処理時間は平均・分散の計算などの統計処理をおこない、その結果を管理サーバ 152 に報告する。ノード内パケット管理テーブル 141 にふくまれる入力時刻とこの出力時刻とは同一の時計で計測したものであるから、数 10 ナノ秒程度の精度をえることが可能である。
【００４１】
なお、図 4 においては、同定指示情報 401 によって、パケット内での同定情報の位置を指定したが、そのかわりに、同定指示情報 401 としてパケット内に分散された情報を同定関数を使用して求めるようにすることも可能である。すなわち、プログラム開発者は同定指示情報 401 のかわりに関数 id（p） を指定する。そして、 p としてパケット 201 を入力すると、識別情報 vid を得ることができる。同定情報がパケット内の特定の位置にふくまれるときも、同定指示情報 401 のかわりに関数 id（p）を指定するようにし、その値が 同定情報 vid になるようにすることができる。
以上説明した本実施例のネットワークシステムによれば、管理サーバ 152 は上記のように各ゲートウェイから他のゲートウェイとの間の遅延時間の平均・分散等のデータを受信し、あわせて各ネットワーク・ノードからノード内の遅延時間の平均・分散等のデータを受信する。これらのデータから、 SLA（サービスレベル・アグリーメント）に違反する遅延の存在やボトルネックになっているネットワーク・ノードがあるときはそれを発見することができる。管理サーバ 152 はそれにもとづいて負荷分散やネットワーク・ノードのリソース増加などの対策を実行することができ、それによって QoS を改善させ、SLA 違反をなくすことができる。また、サービス・プロバイダは管理サーバ 152 から遅延時間の平均・分散等の情報をうけとることができる。
【実施例２】
【００４２】
図 5 は、実施例２に係るネットワークおよびシステムの一構成を示す図である。本実施例の広域ネットワーク 503 を構成する、ネットワーク・ノード H514 を除くネットワーク・ノード H511、 H512、 H513 はプログラマブルなノードである。すなわち、これらのノードの機能はそこにロードされるプログラムによって決定される。この実施例においてもプログラマブルな各ネットワーク・ノードに 1 個ずつのプログラムをロードし、これらのネットワーク・ノードに到達したすべてのパケットは同一のプログラムに入力される。この基盤となる広域ネットワークはキャリアまたはネットワーク・プロバイダが提供し、プログラムはサービス・プロバイダが提供するものとする。キャリアまたはネットワーク・プロバイダはサービス・プロバイダに対して基盤サービスを提供し、サービス・プロバイダはそれを利用してより高度なサービスをユーザに提供する。サービス・プロバイダが提供するサービスの機能は基盤サービスの機能とは基本的に独立である。
【００４３】
本実施例のネットワーク 503 においては、上述の通り、ネットワーク・ノード H512 とネットワーク・ノード H513 とのあいだにプログラマブルでないネットワーク・ノード H514 がある。このネットワーク・ノード H514 においては輻輳が発生しやすいと仮定する。このとき、パケットは H514 において廃棄される確率が高い。パケットの廃棄によってコンピュータ H501−H502 間の通信に深刻な影響をあたえるとすると、パケットの再送によって信頼性を向上させることがのぞましい。
【００４４】
この場合、付加情報 300 として図３Ａ示した構成のかわりにシーケンス番号を使用すればよい。すなわち、ネットワーク・ノード H512 はパケットを出力する際に付加情報 300 としてシーケンス番号を使用する。シーケンス番号として連続番号を使用すれば、ネットワーク・ノード H513 はパケットを受信するとネットワーク・ノード H512 に中継確認パケット（Relay−ACK）を送信する。ネットワーク・ノード H512 は受信するべき Relay−ACK パケットが到着しないときはパケットを再送する。再送を可能にするために、ネットワーク・ノード H512 はパケットを送信後も一定時間、記憶しておくことができる。ネットワーク・ノード H513 は再送されたパケットが届くまで後続のパケットを保管し、それが届いてから順序を入れ替えてシーケンス番号の順にプログラム 523 に入力することができる。あるいは、H512−H513 間でパケットが廃棄されたときはネットワーク・ノード H513 がそれを検出することができる。すなわち、ネットワーク・ノード H513 が廃棄されたパケットを検出したときはネットワーク・ノード H512 にその再送要求パケットを送信することができる。
【００４５】
シーケンス番号として、すなわち付加情報 300 として、何ビットのものを使用するか、またシーケンス番号以外にも付加情報 300 を使用するかどうか（たとえば TCP におけるように確認応答番号や ACK フラグなど）、何ビットのどのような情報を付加するかはプログラム 523 に影響をあたえない。したがって、プログラム 523 はその処理に影響を受けずに、ネットワーク基盤が提供している高信頼化サービスを利用することができる。
【００４６】
本実施例においてはネットワーク・ノード H512 と H513 とのあいだだけで高信頼化サービスを提供したが、このようなサービスはネットワークの任意の場所で提供することができる。すなわち、ネットワーク・ノード H511 と H512 とのあいだでも同様のサービスを提供することができる。また、場所に依存しないサービスを提供する（すなわち H511−H512 間と H512−H513 間とで同一のパケット・フォーマットと同一の処理をおこなう）こともできるし、場所によって異なるサービスを提供する。すなわち H511−H512 間と H512−H513 間とで異なるパケット・フォーマットを使用したり、異なる処理をおこなったりすることもできる。
【００４７】
さらに、以上説明した実施例においては、ネットワーク端点（入口点−出口点）間でパケットを同定することができるため、上記のようなネットワーク・ノード間のサービスを繋ぎあわせて、ネットワーク端点間で高信頼化サービスを提供することもできる。すなわち、各ネットワーク・ノード間で異なる高信頼化サービスを提供しつつ、ネットワーク端点間のサービスに必要なデータは付加情報 300 としてパケットにいれることにより、ネットワーク端点間での高信頼化サービスに利用することができる。TCP とはちがって図 5 の構成においてはパケットが廃棄されたことをネットワークの中間点において検出することができ、TCP のように終端において検出するより短時間でパケットを再送することができ、再送による遅延を減少させることができる。
【００４８】
しかし、ネットワークの中間点においてパケットを補うことによってネットワークの両端にはパケット廃棄が発生したことが伝わらず、レート制御等のためのサービスがおこなえなくなる可能性がある。しかし、図３Ｂに示すように、付加情報 300 に特定のデータとして、廃棄パケット累積数 304 を追加し、ノード H512−H513 間において廃棄されたパケットの累積数をもとめて廃棄パケット累積数 304 に記録すれば、輻輳等に関する情報をネットワークの両端にもつたえることができ、ネットワーク両端でのレート制御等のサービスを提供することができるようになる。すなわち、ネットワーク端点においては廃棄パケット累積数 304 を参照して、廃棄がなければレートを増価させ、廃棄が多いときには廃棄数によって単調減少する関数にしたがってレートを減少させることができる。上記の制御はゲートウェイ H131−H132 間でおこなうこともでき、またコンピュータ H101−H102 間でおこなうこともできる。ゲートウェイ H131−H132 間でおこなう場合には、ゲートウェイ H131 においては廃棄パケット累積数 304 を 0 とし、ゲートウェイ H132 において観測できる廃棄パケット数と、廃棄パケット累積数 304 との和を総廃棄パケット数として TCP のようなプロトコルにしたがってゲートウェイ H131 に通知し、ゲートウェイ H131 はそれにしたがってウィンドウ制御をおこなうことができる。
【００４９】
ただし、レート制御のためにはパケットを発生するアプリケーションを制御する必要があるため、ネットワーク端点とアプリケーションとをむすぶインターフェース（API もしくはプロトコル）が必要になる。アプリケーションはこのインターフェースからえた情報にしたがって、必要ならパケットの送信を遅延させる。
【００５０】
以下、場所によってことなるサービスの例をあげる。H511−H512 間のネットワークは低遅延であり、H512−H513 間のネットワークは高遅延であるとすれば、前者においては TCP におけるようなフィードバック制御をおこない（すなわち、過去に実測されたデータにもとづく制御をおこない）、後者においては遅延に影響されにくいフィードフォワード制御をおこなう（すなわち、実測された時系列データおよびあらかじめ定義された通信モデルにもとづいて近未来の通信を予測してえられたデータにもとづく制御をおこなう）ことができる。フィードフォワード制御においては受信側すなわち H513 が予測をおこなってえられたデータを H512 に送信し H512 が通信を制御する方法と、送信側すなわち H512 が予測をおこなってえられたデータにもとづいて H512 が通信を制御する方法とがある。
【００５１】
このようなサービスの選択は、管理サーバ 552 があらかじめ保持している各ネットワーク・ノードの設置場所等に関する情報や、各ネットワーク・ノードや各ゲートウェイから収集した遅延等に関する情報にもとづいて、距離や遅延がおおきいときはフィードフォワード制御、ちいさいときはフィードバック制御を選択するというようにおこなうことができる。いずれのばあいも、同一のプログラムをすべてのネットワーク・ノード  H511、H512、H513 において使用することができる。すなわち、ネットワーク基盤が提供するサービスの種類によってプログラムをかきかえる必要はない。
【００５２】
TCP においては端点間で通信の信頼性とスループットの制御がおこなわれるが、そのために遠距離通信においてはたかい通信速度がえられないなどの問題点がある。本実施例の方法においてはネットワーク・ノードにおいて制御をおこなうことによって、遠距離通信においてもより効果的な制御をおこなうことができる。
【００５３】
また、各実施例においてはネットワーク・ノードにおいて高信頼化のための制御をおこなったが、ネットワーク・ノードにおいては高信頼化のために必要な付加情報 300 を脱着するだけにして、制御は TCP と同様に端点のコンピュータ内（H501、H502）または端点にちかいゲートウェイ内（H531、H532）においておこなうこともできる。
【００５４】
以上説明した本発明により、プログラマブルなノードによって構成されたネットワークにおいて QoS 保証や通信の信頼性、スループット制御などのネットワーク基盤サービスの提供が可能にするため、第 １ にプログラマブルなネットワーク・ノードにおいて入力されるパケットと出力されるパケットとが同定できるようにし、第 2 に端点間あるいはネットワークの入口点−出口点間において、ネットワーク・ノードのプログラムに影響をあたえずにパケットの同定と遅延計測や通信の信頼性、スループット制御などを実現することができる。
【００５５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではなく、また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５６】
更に、上述した各構成、機能、処理部等は、それらの一部又は全部を実現するプログラムを作成することによりソフトウェアで実現する場合を中心に説明したが、例えば集積回路で設計する等によりハードウェアで実現しても良いことは言うまでもない。
【符号の説明】
【００５７】
H101、H102  コンピュータ
H131、H132  ゲートウェイ
H111、H112、H113  ネットワーク・ノード
103、503  ネットワーク
141、142  ノード内パケット管理テーブル
152、552  管理サーバ
300  付加情報
301  生成実ノード識別子
302  実パケット同定情報
303  初期タイムスタンプ
304  廃棄パケット累積数
401  同定指示情報
601  仮想化ノード
602  仮想化ノードマネジャ
603  プログラマ
604  リダイレクタ。
【図１】
2014036289.tif 000003
【図２】
2014036289.tif 000004
【図３Ａ】
2014036289.tif 000005
【図３Ｂ】
2014036289.tif 000006
【図４】
2014036289.tif 000007
【図５】
2014036289.tif 000008
【図６】
2014036289.tif 000009