(57)【要約】  本発明の実施形態は、ＮＴＰサーバによって生成された送受信タイムスタンプの不確実性を減少させる方法及びシステムについて記載している。受信タイムスタンプの不確実性は、着信パケットが、タイムスタンプシステム内の各種ソフトウェア層を通過することによって遅延を生じ得る前に、ＮＴＰサーバのハードウェアクロック内に到着時刻を記録することにより除去される。送信タイムスタンプの不確実性は、待ち時間推定量フィルターによって計算される伝送待ち時間の推定値を用いて、発信パケットに未来のタイムスタンプを与えることによって除去される。続いて、実際の発出時刻を用いて、伝送待ち時間の推定値を再計算及び更新する。このように、現行のＮＴＰ標準との相互作用互換性を保持する形で、タイムスタンプ機能の優れた制御を既存のＮＴＰサーバ内で実現することが可能である。【選択図】図３
2009538101.tif 000002
【特許請求の範囲】
【請求項１】
発信パケットに挿入すべき送信タイムスタンプを、ネットワークタイムプロトコル（ＮＴＰ）サーバにより確立する方法であって、
待ち時間推定量フィルター（ＬＥＦ）を初期化するステップと、
前記発信パケットを生成するステップと、
前記ＮＴＰサーバ内のハードウェアクロックに現在時刻を要求するステップと、
前記ＬＥＦに、外部環境との境界を越える前に各種ソフトウェア層を通過する発信パケットに関連付けられる伝送待ち時間の推定値である修正項を要求するステップと、
前記送信タイムスタンプとして、前記発信パケットに前記現在時刻と前記修正項との合計を挿入するステップと、
前記ＬＥＦに前記送信タイムスタンプを与えるステップと、
アウトバウンドキューに前記送信タイムスタンプを有する前記発信パケットを置くステップと、
媒体非依存インターフェース（ＭＩＩ）チャンネルを通って流れるネットワークトラフィックをモニタして、前記発信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記発信パケットの発出時刻をラッチするステップと、
前記ＬＥＦに、ラッチされた前記発出時刻を与えるステップと、
ＬＥＦアルゴリズムのステップを実行して、前記送信タイムスタンプとラッチされた前記発出時刻との間のオフセットを計算することにより前記修正項を更新し、次の前記発信パケット内により正確な送信タイムスタンプを取得するステップと、
更新された前記修正項を記憶し、更新された前記修正項を用いて次の発信パケットに前記送信タイムスタンプを挿入するステップと
を含む方法。
【請求項２】
前記ＬＥＦは、ゼロに等しい伝送待ち時間の配列の要素を設定することにより、又は所定の値に等しい伝送待ち時間の前記配列の前記要素を設定することにより、初期化される、請求項１に記載の方法。
【請求項３】
前記発信パケットはＮＴＰクライアントからの着信パケットへの応答として生成される、請求項１に記載の方法。
【請求項４】
前記ＬＥＦアルゴリズムは、
ステップ１：伝送待ち時間の配列の要素を１つだけ繰り下げる（μｉ−１＝μｉ）、
ステップ２：最新の伝送待ち時間を更新する（μｉ＝Ｔｔｘ−Ｔ３＋ｋ）、及び、
ステップ３：修正項に対する新しい値を計算する（ｋ＝ｍｉｎ（μｉ−１，μｉ））
を含む、請求項１に記載の方法。
【請求項５】
着信パケットに挿入すべき受信タイムスタンプを、前記ＮＴＰサーバにより確立するためのステップをさらに含み、このステップが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタして、ＮＴＰクライアントからの着信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記着信パケットの到着時刻をラッチするステップと、
前記受信タイムスタンプとして前記着信パケットに、ラッチされた前記到着時刻を挿入するステップと
を含む、請求項１に記載の方法。
【請求項６】
発信パケットに送信タイムスタンプを挿入するように構成された精密タイムスタンプサービス（ＰＴＳ）システムであって、
Ｅｔｈｅｒｎｅｔ  ＰＨＹに関連付けられた物理層と、
Ｅｔｈｅｒｎｅｔメディアアクセスコントローラ（ＭＡＣ）と、
前記Ｅｔｈｅｒｎｅｔ  ＰＨＹ及び前記Ｅｔｈｅｒｎｅｔ  ＭＡＣを接続する媒体非依存インターフェース（ＭＩＩ）チャンネルと、
オペレーティングシステム（Ｏ／Ｓ）サービスと、
現在時刻を与え前記発信パケットの発出時刻をラッチするように構成されたハードウェアクロックと、
初期化されるように構成され、ＬＥＦアルゴリズムのステップを実行して、修正項を記憶し、前記送信タイムスタンプと前記ハードウェアクロックによりラッチされた発出時刻との間のオフセットを計算することによってこの修正項を更新し、次の発信パケット内により正確な送信タイムスタンプを取得するように構成された待ち時間推定量フィルター（ＬＥＦ）と、
ネットワークタイムプロトコル（ＮＴＰ）アプリケーションと、
受動タップユニットと
を備え、
前記ＮＴＰアプリケーションが
前記発信パケットを生成し、
ハードウェアクロックに現在時刻を要求し、
前記ＬＥＦに、前記物理層と外部環境との境界を越える前に各種ソフトウェア層を通過する発信パケットに関連付けられる伝送待ち時間の推定値である前記修正項を要求し、
前記送信タイムスタンプとして、前記発信パケットに前記現在時刻と前記修正項との合計を挿入し、
前記ＬＥＦに前記送信タイムスタンプを与え、
アウトバウンドキューに前記送信タイムスタンプを有する前記発信パケットを置く
ように構成され、
前記受動タップユニットが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタして前記発信パケットを検出し、
前記ハードウェアクロックをトリガーして、検出された前記発信パケットの前記発出時刻をラッチし、
前記ＬＥＦに、ラッチされた前記発出時刻を与える
ように構成されている、システム。
【請求項７】
前記ＬＥＦは、ゼロに等しい伝送待ち時間の配列の要素を設定することにより、又は所定の値に等しい伝送待ち時間の前記配列の前記要素を設定することにより、初期化される、請求項６に記載のシステム。
【請求項８】
前記発信パケットはＮＴＰクライアントからの着信パケットへの応答として生成される、請求項６に記載のシステム。
【請求項９】
前記ＬＥＦアルゴリズムは、
ステップ１：伝送待ち時間の配列の要素を１つだけ繰り下げる（μｉ−１＝μｉ）、
ステップ２：最新の伝送待ち時間を更新する（μｉ＝Ｔｔｘ−Ｔ３＋ｋ）、及び
ステップ３：前記修正項に対する新しい値を計算する（ｋ＝ｍｉｎ（μｉ−１，μｉ））
を備える、請求項６に記載のシステム。
【請求項１０】
着信パケットに挿入すべき受信タイムスタンプを、前記ＰＴＳシステムにより確立するためのステップをさらに含み、このステップが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタして、ＮＴＰクライアントからの着信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記着信パケットの到着時刻をラッチするステップと、
前記受信タイムスタンプとして前記着信パケットに、ラッチされた前記到着時刻を挿入するステップと
をさらに備える、請求項６に記載のシステム。
【請求項１１】
発信パケットに送信タイムスタンプを挿入するように構成された精密ネットワークタイムプロトコル（ＮＴＰ）サーバであって、
中央処理装置（ＣＰＵ）と、
ネットワークインターフェースと、
現在時刻を与え前記発信パケットの発出時刻をラッチするように構成された、ハードウェアクロックを有する精密タイムスタンプサービス（ＰＴＳ）システムと
を備えており、
前記ＰＴＳシステムは、
Ｅｔｈｅｒｎｅｔ  ＰＨＹに関連付けられた物理層と、
Ｅｔｈｅｒｎｅｔメディアアクセスコントローラ（ＭＡＣ）と、
前記Ｅｔｈｅｒｎｅｔ  ＰＨＹ及び前記Ｅｔｈｅｒｎｅｔ  ＭＡＣを接続する媒体非依存インターフェース（ＭＩＩ）チャンネルと、
オペレーティングシステム（Ｏ／Ｓ）サービスと、
初期化されるように構成され、ＬＥＦアルゴリズムのステップを実行して、前記送信タイムスタンプと前記ハードウェアクロックによりラッチされた発出時刻との間のオフセットを計算することによって修正項を更新し、次の発信パケット内により正確な送信タイムスタンプを取得するように構成された待ち時間推定量フィルター（ＬＥＦ）と、
ネットワークタイムプロトコル（ＮＴＰ）アプリケーションと、
受動タップユニットと
を備え、
前記ＮＴＰアプリケーションが、
前記発信パケットを生成し、
ハードウェアクロックに現在時刻を要求し、
前記ＬＥＦに、前記物理層と外部環境との境界を越える前に各種ソフトウェア層を通過する前記発信パケットに関連付けられる伝送待ち時間の推定値である前記修正項を要求し、
前記送信タイムスタンプとして、前記発信パケットに前記現在時刻と前記修正項との合計を挿入し、
前記ＬＥＦに前記送信タイムスタンプを与え、
アウトバウンドキューに前記送信タイムスタンプを有する前記発信パケットを置く
ように構成され、
前記受動タップユニットが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタして前記発信パケットを検出し、
前記ハードウェアクロックをトリガーして、検出された前記発信パケットの前記発出時刻をラッチし、
前記ＬＥＦに、ラッチされた前記発出時刻を与える
ように構成されている、サーバ。
【請求項１２】
前記ＬＥＦは、ゼロに等しい伝送待ち時間の配列の要素を設定することにより、又は所定の値に等しい伝送待ち時間の前記配列の前記要素を設定することにより、初期化される、請求項１１に記載のシステム。
【請求項１３】
前記発信パケットはＮＴＰクライアントからの着信パケットへの応答として生成される、請求項１１に記載のシステム。
【請求項１４】
前記ＬＥＦアルゴリズムは、
ステップ１：伝送待ち時間の配列の要素を１つだけ繰り下げる（μｉ−１＝μｉ）、
ステップ２：最新の伝送待ち時間を更新する（μｉ＝Ｔｔｘ−Ｔ３＋ｋ）、及び
ステップ３：前記修正項に対する新しい値を計算する（ｋ＝ｍｉｎ（μｉ−１，μｉ））
を備える、請求項１１に記載のシステム。
【請求項１５】
着信パケットに挿入すべき受信タイムスタンプを、前記ＰＴＳシステムにより確立するためのステップをさらに含み、このステップが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタして、ＮＴＰクライアントからの着信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記着信パケットの到着時刻をラッチするステップと、
前記受信タイムスタンプとして前記着信パケットに、ラッチされた前記到着時刻を挿入するステップと
をさらに備える、請求項１１に記載のシステム。
【請求項１６】
待ち時間推定量フィルター（ＬＥＦ）を初期化するステップと、
発信パケットを生成するステップと、
ネットワークタイムプロトコル（ＮＴＰ）サーバ内のハードウェアクロックに現在時刻を要求するステップと、
前記ＬＥＦに、外部環境との境界を越える前に各種ソフトウェア層を通過する発信パケットに関連付けられる伝送待ち時間の推定値である修正項を要求するステップと、
送信タイムスタンプとして前記発信パケットに、前記現在時刻と前記修正項との合計を挿入するステップと、
前記ＬＥＦに前記送信タイムスタンプを与えるステップと、
アウトバウンドキューに前記送信タイムスタンプを有する前記発信パケットを置くステップと、
媒体非依存インターフェース（ＭＩＩ）チャンネルを通って流れるネットワークトラフィックをモニタして、前記発信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記発信パケットの発出時刻をラッチするステップと、
前記ＬＥＦに、ラッチされた前記発出時刻を与えるステップと、
ＬＥＦアルゴリズムのステップを実行して、前記送信タイムスタンプとラッチされた前記発出時刻との間のオフセットを計算することにより前記修正項を更新して、次の前記発信パケット内により正確な送信タイムスタンプを取得するステップと、
更新された前記修正項を記憶し、更新された前記修正項を用いて次の発信パケットに前記送信タイムスタンプを挿入するステップと
を実行するように前記ネットワークタイムプロトコル（ＮＴＰ）サーバを制御するための命令を有する、コンピュータ可読記憶媒体。
【請求項１７】
前記ＬＥＦは、ゼロに等しい伝送待ち時間の配列の要素を設定することにより、又は所定の値に等しい伝送待ち時間の前記配列の前記要素を設定することにより、初期化される、請求項１６に記載のシステム。
【請求項１８】
前記発信パケットはＮＴＰクライアントからの着信パケットへの応答として生成される、請求項１６に記載のシステム。
【請求項１９】
前記ＬＥＦアルゴリズムは、
ステップ１：伝送待ち時間の配列の要素を１つだけ繰り下げる（μｉ−１＝μｉ）、
ステップ２：最新の伝送待ち時間を更新する（μｉ＝Ｔｔｘ−Ｔ３＋ｋ）、
ステップ３：修正項に対する新しい値を計算する（ｋ＝ｍｉｎ（μｉ−１，μｉ））
を備える、請求項１６に記載のシステム。
【請求項２０】
着信パケットに挿入すべき受信タイムスタンプを、前記ＰＴＳシステムにより確立するためのステップをさらに含み、このステップが、
前記ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタしてＮＴＰクライアントからの着信パケットを検出するステップと、
前記ハードウェアクロックをトリガーして、検出された前記着信パケットの到着時刻をラッチするステップと、
前記受信タイムスタンプとして前記着信パケットに、ラッチされた前記到着時刻を挿入するステップと
をさらに備える、請求項１６に記載のシステム。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の実施形態は概ね、データネットワーク上の送信側経路と受信側経路の間のタイムオフセット精度を高めることに関し、より具体的にはネットワークタイムプロトコル精密タイムスタンプサービスに関する。
【関連技術の説明】
【０００２】
[0002]多くの通信アプリケーションにおいて、ネットワーク内の各要素は、ネットワーク内の他のクロックとは独立して稼働するそれ自体の内部クロックを有する。ネットワークが多くの遠隔通信アプリケーション及び高速広域ネットワークにおけるように同期的なネットワークである場合、これらのクロックはサーバに同期されていなくてはならない。従来の遠隔通信ネットワークでは、ネットワーク要素は、サーバから物理層のクライアントへ時刻情報を搬送することがもともと可能なＴ１及びＳＯＮＥＴなどの「ＴＤＭ」リンクを使用した。しかし、次世代ネットワークはパケット交換インフラストラクチャーが基本となり、したがって、時刻情報を運ぶためにはパケットベースの方法が用いられるというのが、一般に一致した見方である。パケット交換データネットワーク内のクロックを同期させる方法の１つは、ネットワークタイムプロトコル（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ：ＮＴＰ）である。
【０００３】
[0003]商用ＮＴＰサーバは通常は、外部標準に対して管理された精度の高いハードウェアベースのクロックを採用している。ＮＴＰクライアントは、ＮＴＰサーバに精巧なパケットを慎重に送信し、サーバクロックに対するクライアントクロックのオフセットを確定するためにＮＴＰサーバからの応答を分析する。典型的なパケットは４つのタイムスタンプを包含する。タイムスタンプは、クライアント／サーバ間時刻パケット交換の送受信経路を精確に調時し、これによりエンドポイント間の往復遅延とクライアントクロックのオフセットの計算が可能になるように構成される。しかし、ＮＴＰサーバ側のハードウェアベースのクロック精度が高いにもかかわらず、ＮＴＰサーバ内にタイムスタンプ機能に関連するなんらかの不正確さがある場合、ＮＴＰサーバは、クライアントに渡されたタイムスタンプに誤差をもたらす。その後、これらの誤差はクライアントクロックに伝搬し、クライアントクロックの適切な修正を危うくする。
【０００４】
[0004]ＮＴＰサーバによって生成されるタイムスタンプ内の不正確さのほとんどは、デバイスドライバ、ネットワークスタックを含む様々なソフトウェア層、及び非リアルタイムのオペレーティングシステムの使用増加によってもたらされる。このことを図１で示す。図１は、従来技術による典型的なＮＴＰシステム１００でのパケットタイムスタンプフローを概念的に示す。既存のＮＴＰサーバのほとんどはＮＴＰシステム１００などのシステムを含む。一般的に、パケット内のタイムスタンプは、物理層インターフェースに関連した到着又は発出の瞬間を反映することになっている。図１に関して、物理層はＥｔｈｅｒｎｅｔ  ＰＨＹ１１０に関連付けられている。このケースでは、到着時刻は着信パケットのそれぞれ最初の（又は指定された）ビットが外部環境（不図示）とＥｔｈｅｒｎｅｔ  ＰＨＹ１１０間の境界を越えた瞬間を指す。同様に、発出時刻は発信パケットのそれぞれ最初の（又は指定された）ビットがＥｔｈｅｒｎｅｔ  ＰＨＹ１１０と外部環境間の前記境界を越えた瞬間となっている。
【０００５】
[0005]図１に示すように、着信パケット１０２がＮＴＰシステム１００に到着する場合、この着信パケット１０２は、いくつかのエンティティ、すなわち、Ｅｔｈｅｒｎｅｔ  ＰＨＹ１１０に関連付けられた物理層、Ｅｔｈｅｒｎｅｔ  Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ（ＭＡＣ）１２０、オペレーティングシステム（Ｏ／Ｓ）サービス１３０、ＮＴＰアプリケーション１４０を通過する。これらのエンティティのいくつかは物理エンティティ（Ｅｔｈｅｒｎｅｔ  ＭＡＣ１２０など）であり、いくつかは論理エンティティ（Ｏ／Ｓサービス１３０など）である。着信パケット１０２の経路を矢印１１２、１２２及び１３２で示す。矢印１４２で示すように、ＮＴＰアプリケーション１４０は、着信パケット１０２がＥｔｈｅｒｎｅｔ  ＰＨＹ１１０、Ｅｔｈｅｒｎｅｔ  ＭＡＣ１２０及びＯ／Ｓサービス１３０を通過して、実際にＮＴＰアプリケーション１４０に到着した後においてのみ、ハードウェアクロック１５０に着信パケット１０２内に記録すべきタイムスタンプを要求する（このようなタイムスタンプを本明細書では「受信タイムスタンプ」と呼ぶ）。ハードウェアクロック１５０は、ＮＴＰアプリケーション１４０から要求を受け取ると、タイムスタンプ１４４として図示している現在時刻値を受信タイムスタンプとして送出する。このように、ＮＴＰシステム１００への実際の到着時刻とＮＴＰアプリケーション１４０が受信タイムスタンプに対する値を確定するためにハードウェアクロック１５０を実際に読み込む時刻との間に、有意なランダム成分を伴って、遅延が存在する。
【０００６】
[0006]同様の状況がＮＴＰシステム１００を離れる発信パケット１０４についても発生する。ＮＴＰアプリケーション１４０はハードウェアクロック１５０から現在時刻値を読み込み、発信パケット１０４内の適切なフィールドにタイムスタンプとしてその値を挿入する（このようなタイムスタンプを本明細書では「送信タイムスタンプ」と呼ぶ）。送信タイムスタンプが挿入された後に、ＮＴＰアプリケーション１４０は矢印１３４、１２４、及び１１４で示す経路上に発信パケット１０４を送出する。ここでも発信パケット１０４は、先ずＯ／Ｓサービス１３０、Ｅｔｈｅｒｎｅｔ  ＭＡＣ１２０、及びＥｔｈｅｒｎｅｔ  ＰＨＹ１１０を通過しなければならないので、ハードウェアクロック１５０から送信タイムスタンプが得られた瞬間とＮＴＰシステム１００からの実際の発出時刻との間に、有意でランダムな成分を伴って、遅延が存在する。結果として、不正確な送受信タイムスタンプがＮＴＰシステム１００からクライアントクロックに伝播し、クライアントクロックにおける時刻保持及び速度保持に対して基本誤差が入り込む。
【０００７】
[0007]上述したように、当技術分野で必要とされるのは、ＮＴＰパケットの移動をより正確且つ安定して計測することを可能にする改良されたＮＴＰタイムスタンプ方法である。
【発明の概要】
【０００８】
[0008]本発明の一実施形態は、発信パケットに挿入すべき送信タイムスタンプをネットワークタイムプロトコル（ＮＴＰ）サーバにより確立するための方法パケットについて説明する。この方法は、ＮＴＰサーバ内のハードウェアクロックに現在時刻を要求し、待ち時間推定量フィルター（ＬＥＦ）に修正項を要求するステップを含み、ここで修正項は、外部環境との境界を越える前に各種ソフトウェア層を通過する発信パケットに関連付けられる伝送待ち時間推定値である。また、この方法はまた、送信タイムスタンプとして発信パケットに現在時刻と修正項の合計を挿入するステップと、送信タイムスタンプを有する発信パケットをアウトバウンドキューに置くステップと、ハードウェアクロックをトリガーして発信パケットの発出時刻をラッチするステップと、ＬＥＦアルゴリズムのステップを実行して、送信タイムスタンプとラッチされた発出時刻との間のオフセットを計算することにより修正項を更新して、次の発信パケット内により正確な送信タイムスタンプを取得するステップと、更新された修正項を記憶するステップと、更新された修正項を用いて送信タイムスタンプを次の発信パケットに挿入するステップとを含む。
【０００９】
[0009]開示したシステム及び方法の一利点は、現行のＮＴＰ標準に準拠する他のサーバ及びクライアントと相互作用の非互換性を生じさせるリスクなしに、タイムスタンプ機能の改良された制御を既存のＮＴＰサーバ内で実現できる点である。重要なことに、開示した方法は、現行のＮＴＰ標準との互換性を保持する形でパケットタイムスタンプエンジン及び待ち時間推定量フィルターを活用するステップを含む。このようなやり方で、到着時刻及び発出時刻をハードウェアによって検出及び登録し、これにより高精度を達成し、デバイスドライバ、ネットワークスタック、オペレーティングシステム等に関連付けられる不確実性を回避する。結果として、より正確且つ安定したＮＴＰサーバタイムスタンプをＮＴＰクライアントに提供する。
【００１０】
[0010]上に列挙した本発明の特徴が詳細に理解できる形で、上に概略した本発明のより具体的な説明を、一部添付図に示される実施形態を参照して行うことができる。しかし、添付図面は本発明の典型的な実施形態のみを例示しており、したがって本発明の範囲を限定するものではないと考えるべきであり、なぜなら本発明が等しく有効な他の実施形態に通じている可能性があるからであるということに留意すべきである。
【図面の簡単な説明】
【００１１】
【図１】従来技術による典型的なＮＴＰシステム内のパケットタイムスタンプフローの概念図である。
【図２】本発明の一実施形態による、ＮＴＰパケットのヘッダーに包含されるタイムスタンプを例示する図である。
【図３】本発明の一実施形態による、精密タイムスタンプサービス（ＰＴＳ）システムにおけるパケットタイムスタンプフローの概念図である。
【図４】本発明の一実施形態による、図３のＰＴＳシステムによって実行される方法ステップの流れ図である。
【図５】本発明の一実施形態による、図３の待ち時間推定量フィルターによって実行される方法ステップの流れ図である。
【図６】本発明の１つ又は複数の態様を実行するように構成された精密ＮＴＰサーバの概念図である。
【詳細な説明】
【００１２】
[0017]図２は、本発明の一実施形態による、ＮＴＰパケットのヘッダー内に包含されたタイムスタンプを示す。図２に示すように、タイムライン２００に沿った各時刻計測は、以下に定義される４つのタイムスタンプを含む。すなわち、Ｔ１はクライアントクロック２１０から生じるパケットの送信発生瞬間の最適推定値を表すタイムスタンプであり、Ｔ２は精密ＮＴＰサーバクロック２２０で終了するパケットの受信終了瞬間の最適推定値を表すタイムスタンプであり、Ｔ３は精密ＮＴＰサーバクロック２２０から生じるパケットの送信発生瞬間の最適推定値を表すタイムスタンプであり、Ｔ４はクライアントクロック２１０で終了するパケットの受信終了瞬間の最適推定値を表すタイムスタンプである。時刻計測の後、これらの４つのタイムスタンプを使用して、下記の原理に従ってエンドポイント間の往復遅延及びクライアントクロック２１０のオフセットを計算するために使用される。
ａ）遅延推定値：σ＝（Ｔ４−Ｔ１）−（Ｔ３−Ｔ２）                （１）
ｂ）オフセット推定値：θ＝｛（Ｔ２−Ｔ１）＋（Ｔ３−Ｔ４）｝／２    （２）
ｃ）誤差：ε＝φ・（Ｔ４−Ｔ１）＋α                              （３）
上式で、φ（ｔ）はクライアントクロックのスキュー蓄積速度を示す関数であり、αは精密ＮＴＰサーバによる時刻計測の不確実性の大きさである。
【００１３】
[0018]精密ＮＴＰサーバは、クライアントクロック２１０にＴ２及びＴ３を与えることに主として関与するので、Ｔ２及びＴ３の値のいかなる不正確さも遅延推定値及びオフセット推定値の不正確さの原因になり、このことは時刻計測処理における不確実性αの値の増加をもたらす。しかし、式（３）は、精密ＮＴＰサーバが時刻計測処理における不確実性αを低減することにより、時刻計測回路の性能を向上させることが可能であることを示す。精密ＮＴＰサーバによってより正確且つ安定した時刻計測を達成するシステム及び方法を図３〜図５に示す。
【００１４】
[0019]図３は、本発明の一実施形態による、精密タイムスタンプサービス（ＰＴＳ）システム３００内のパケットタイムスタンプフローの概念図である。図のように、ＰＴＳシステム３００は、Ｅｔｈｅｒｎｅｔ  ＰＨＹ３１０と、Ｅｔｈｅｒｎｅｔ  ＭＡＣ３２０と、Ｏ／Ｓサービス３３０と、ＮＴＰアプリケーション３４０と、ハードウェアクロック３５０とに関連付けられた物理層を限定することはなく含む。これまでに説明したように、着信パケット３０２の到着時刻（Ｔｒｘで示す）は、着信パケット３０２の最初の（又は指定された）ビットが外部環境（不図示）とＥｔｈｅｒｎｅｔ  ＰＨＹ３１０間の境界を通過した瞬間を指す。続いて、外部環境とＥｔｈｅｒｎｅｔ  ＰＨＹ３１０間の前記境界をちょうど越えた着信パケット３０２の最初のステップは、受信パケットチャンネル３１２を通ってＥｔｈｅｒｎｅｔ  ＭＡＣ３２０に進むことである。着信パケット３０２の経路を矢印３１２、３２２、及び３３２によって示す。ここでもこれまでに説明したように、発信パケット３０４の発出時刻Ｔｔｘは、発信パケット３０４の最初の（又は指定された）ビットがＥｔｈｅｒｎｅｔ  ＰＨＹ３１０と外部環境間の前記境界を越えた瞬間を指す。Ｅｔｈｅｒｎｅｔ  ＰＨＹ３１０と外部環境間の前記境界を越えんとしている発信パケット３０４の最後のステップは、送信パケットチャンネル３１４を通って移動することである（発信パケット３０４の経路を矢印３３４、３２４、及び３１４で示す）。本明細書では受信パケットチャンネル３１２と送信パケットチャンネル３１４をまとめて、「媒体非依存インターフェース（ＭＩＩ）チャンネル」と称する。
【００１５】
[0020]重要なことに、ＰＴＳシステム３００は受動タップユニット３１６及び待ち時間推定量フィルター（ＬＥＦ）３６０をさらに含む。受動タップユニット３１６は、ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタするように構成されるパケットタイムスタンプエンジンである。各パケットが通過する度に、受動タップユニット３１６はＭＩＩチャンネルを通って流れるデータを分析して、着信パケット３０２がＮＴＰアプリケーション３４０に関係が有るか無いか（すなわち、着信パケット３０２がＮＴＰパケットか否か）を判定する。関係するようであれば、矢印３１９で示すように、受動タップユニット３１６はハードウェアクロック３５０をトリガーして到着時刻Ｔｒｘをラッチするように構成される。同様に、受動タップユニット３１６がＮＴＰアプリケーション３４０によって生成された発信パケット３０４を検出した場合、矢印３１８で示すように、受動タップユニット３１６はハードウェアクロック３５０をトリガーして発出時刻Ｔｔｘをラッチする。ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタすること、及びハードウェアクロック３５０において時刻ラッチをトリガーすること、を含む受動タップユニット３１６などのパケットタイムスタンプエンジンの機能性は、ハードウェア又はソフトウェアのいずれにおいても実現可能である。ハードウェア実装の例は２００１年４月１７日に出願され、「Ｐｒｅｃｉｓｅ  Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｔｒａｎｓｆｅｒ」と題された米国特許第６９８５４９９号（本明細書に参照により組み込まれている）に見ることができる。当業者は、様々な実施形態でこの受動タップ３１６及びハードウェアクロック３５０が同一のモジュール上／内に又は様々なモジュール上／内に配置可能であることを理解するであろう。
【００１６】
[0021]ＬＥＦ３６０は、ラッチされた発出時刻Ｔｔｘをハードウェアクロック３５０から取得し、図５に示す方法ステップを実行して修正項ｋを計算するよう構成される。修正項ｋは、ＮＴＰアプリケーション３４０とＥｔｈｅｒｎｅｔ  ＰＨＹ３１０間を移動する間にＮＴＰパケットが被る遅延を計上するよう意図された精密ＮＴＰサーバを経由する伝送待ち時間の推定値である。各ＮＴＰクライアント／サーバ間のパケット交換後、ＬＥＦ３６０は次の伝送遅延に対する最適推定値を維持するために修正項ｋの値を更新する。ＰＴＳシステム３００は、ラッチされた到着時刻Ｔｒｘ及びＬＥＦ３６０によって計算された最新の修正項ｋを用いて、図４に示す方法ステップを実行し、タイムスタンプＴ２及びＴ３のより正確且つ安定した時刻計測値を生成する。
【００１７】
[0022]図４は、本発明の一実施形態による、図３のＰＴＳシステム３００によって実行される方法ステップの流れ図を示す。方法ステップは図３のシステムと併せて説明されているが、当業者は、方法ステップを順不同で実行するいかなるシステムも本発明の範囲内にあることを理解するであろう。
【００１８】
[0023]方法はステップ４０２から始まり、ここでＰＴＳシステム３００は伝送待ち時間の配列中の要素をゼロに設定することによってＬＥＦ３６０を初期化する。代替実施形態では、伝送待ち時間の配列中の要素は他の所定のいくつかの値に設定されてよい。ステップ４０４で、受動タップユニット３１６は、ＮＴＰパケットである新しい着信パケット３０２の有無を判定する。新しいＮＴＰパケットが無い場合、方法はステップ４０５に進み、ここでＰＴＳシステム３００は次の新しいパケットが到着するまで待機する。方法はステップ４０５からステップ４０４に戻る。
【００１９】
[0024]ステップ４０４で受動タップユニット３１６が、新しい着信パケット３０２がＮＴＰパケットであると判定した場合は、方法はステップ４０６に進み、ここで受動タップユニット３１６は、ハードウェアクロック３５０をトリガーして到着時刻Ｔｒｘをラッチする。着信パケット３０２が、Ｅｔｈｅｒｎｅｔ  ＭＡＣ３２０及びＯ／Ｓサービス３３０を通過するのに伴って、方法はステップ４０８に進み、ここで着信パケット３０２はＮＴＰアプリケーション３４０で受け取られる。着信パケット３０２が到着したことをＮＴＰアプリケーション３４０が認識すると、方法はステップ４１０に進み、ここでＮＴＰアプリケーション３４０は図３の矢印３４２で示すように、ハードウェアクロック３５０にラッチされた到着時刻Ｔｒｘを要求する。図３の矢印３４４で示すように、要求したラッチ済み到着時刻ＴｒｘをＮＴＰアプリケーション３４０が取得した後、方法はステップ４１２に進む。ステップ４１２で、ＮＴＰアプリケーション３４０はＴｒｘに等しい値を有するタイムスタンプＴ２を着信パケット３０２に挿入する。タイムスタンプＴ２を判定するこの手法は、ハードウェアクロック１５０にタイムスタンプトリガー１４２を送出すると、ＮＴＰアプリケーション１４０が着信パケット１０２が実際に到着した過去における瞬間を表す時刻値ではなく現在時刻値を受け取る典型的なＮＴＰシステム１００での操作の方法とは全く異なることに留意されたい。
【００２０】
[0025]ステップ４１４で、ＮＴＰアプリケーション３４０は着信パケット３０２に対する応答パケットを生成する。応答パケットはまだ送信されていないので、ハードウェアクロック３５０から受け取り可能な、対応する送信情報は無い。ステップ４１６において、図３の矢印３４６で示すように、ＮＴＰアプリケーション３４０はハードウェアクロック３５０に現在時刻Ｔｃｕｒｒｅｎｔを要求する。図３の矢印３４８で示すように、要求した現在時刻ＴｃｕｒｒｅｎｔをＮＴＰアプリケーション３４０が取得した後、方法はステップ４１８に進む。ステップ４１８で、ＮＴＰアプリケーション３４０はＬＥＦ３６０に修正項ｋを要求する。図３の矢印３６２は、ＬＥＦ３６０がＮＴＰアプリケーション３４０に修正項ｋを送出していることを示す。ステップ４２０で、ＮＴＰアプリケーション３４０はハードウェアクロック３５０から得られたＴｃｕｒｒｅｎｔの値に、精密ＮＴＰサーバを経由する伝送待ち時間の推定値である修正項ｋを加算し、その計算結果をタイムスタンプＴ３として応答パケットに挿入する。タイムスタンプＴ３はさらにＬＥＦ３６０に送られる。
【００２１】
[0026]ステップ４２２で、ＮＴＰアプリケーション３４０は、タイムスタンプＴ３を有する応答パケットを発信パケット３０４としてアウトバウンドキューに置く。発信パケット３０４がＯ／Ｓサービス３３０、Ｅｔｈｅｒｎｅｔ  ＭＡＣ３２０を通過して受動タップユニット３１６により検出されると、方法はステップ４２４に進む。ステップ４２４で、受動タップユニット３１６はハードウェアクロック３５０をトリガーして実際の発出時刻Ｔｔｘをラッチする。次いで、方法はステップ４２６に進み、ここで図３の矢印３５２で示すように、ハードウェアクロック３５０はＬＥＦ３６０に実際の発出時刻Ｔｔｘの値を供給する。次いでステップ４２８で、ＬＥＦ３６０は、図５でより詳細に説明する方法ステップを実行し、更新された値を計算して修正項ｋを得る。次いで、方法は上記のようにステップ４０４に進む。
【００２２】
[0027]図５は、本発明の一実施形態による、図３のＬＥＦ（待ち時間推定量フィルター）３６０によって実行される方法ステップの流れ図を示す。方法ステップは、ここでも図３のシステムと併せて説明されているが、当業者はこの方法ステップを順不同で実行するいかなるシステムも本発明の範囲内にあることを理解するであろう。
【００２３】
[0028]ＬＥＦ３６０は、修正項更新の際にジッターを軽減するようになされている。これは、最も新しいエントリーが最も古いエントリーを配列から追い出して、伝送待ち時間の小さい配列を維持することによって実現される。この配列は｛μｉ，μｉ−１，μｉ−２，…，μｉ−Ｎ｝、と表示されることが可能であり、ここでＮ＋１は配列中の要素の数である。一実施形態では、配列は要素を２つのみ含むことができ、このケースではＮは１に等しい。
【００２４】
[0029]方法はステップ５０２から始まり、ここで図４のステップ４０２で示すように、ＰＴＳシステム３００は伝送待ち時間の配列中の要素の値をゼロに設定することでＬＥＦ３６０を初期化する。代替実施形態で、伝送待ち時間の配列中の変数は他のいくつかの所定の値に設定されてよい。ステップ５０４では、ＬＥＦ３６０はＮＴＰアプリケーション３４０により与えられる新しいタイムスタンプＴ３の有無を判定する。新しいタイムスタンプＴ３が無い場合、方法はステップ５０５に進み、ここでＬＥＦ３６０は一定の時間待機する。方法はステップ５０５からステップ５０４に戻る。
【００２５】
[0030]ステップ５０４で、ＬＥＦ３６０が新しいタイムスタンプＴ３が有る（図３の矢印３４９で示すように）と判定した場合、方法はステップ５０６に進み、ここでＬＥＦ３６０は古いタイムスタンプＴ３を捨てる。次いで、方法はステップ５０８に進み、ここでＬＥＦ３６０はＮＴＰアプリケーション３４０から得られた新しいタイムスタンプＴ３、及びハードウェアクロック３５０により与えられた実際の発出時刻Ｔｔｘの値をロードする。次いで、方法はステップ５１０に進む。
【００２６】
[0031]ステップ５１０で、ＬＥＦ３６０はＬＥＦアルゴリズムのステップを実行して伝送待ち時間の配列をソートし、修正項ｋの次の値として最小値を選択する。一実施形態で、上で定義した変数を用いると、ＬＥＦアルゴリズムのステップ５１０は次のようになる。
ステップ  １：μｉ−１＝μｉ                  （配列を１つだけ繰り下げる）
ステップ  ２：μｉ＝Ｔｔｘ−Ｔ３＋ｋ          （伝送待ち時間を更新する）
ステップ  ３：ｋ＝ｍｉｎ（μｉ−１，μｉ）    （修正項に対する新しい値を計算する）
【００２７】
[0032]ＬＥＦアルゴリズムのステップを実行した結果として、ステップ５１２で、ＬＥＦ３６０は、精密ＮＴＰサーバを経由する伝送待ち時間の推定値を表す修正項ｋに対する更新された値を生成する。更新された修正項ｋは記憶され、続いて図４に示すように応答パケットに対する次の送信タイムスタンプＴ３を計算するために使用される。当業者は、本発明の基本的な範囲から逸脱することなく、修正項ｋの最適推定値を計算するための別のアルゴリズムも活用されてよいことを理解するであろう。この実施形態に提示されたＬＥＦアルゴリズムは、コンピュータによる効率的な操作の構成要素である。方法はステップ５１２から上記のステップ５０２に戻る。
【００２８】
[0033]図６は、本発明の１つ又は複数の態様を実行するように構成された精密ＮＴＰサーバ６００の概念図である。図のように、精密ＮＴＰサーバ６００は、中央処理装置（ＣＰＵ）６１０、ネットワークインターフェース６２０、及びＰＴＳシステム３００（ハードウェアクロック３５０をさらに含む）を限定することなく含む。ネットワークインターフェース６２０はＰＴＳシステム３００とパケットをやりとりし、このＰＴＳシステム３００はＣＰＵ６１０と通信し、送受信タイムスタンプＴ２及びＴ３を確立するために本明細書に示す方法ステップを実行する。
【００２９】
[0034]本発明によって、精密ＮＴＰサーバは、
−ＭＩＩチャンネルを通って流れるネットワークトラフィックをモニタし、精密ＮＴＰサーバを経由する伝送待ち時間を計算し、ハードウェアクロックによりラッチされた到着時刻に基づいて、着信ＮＴＰパケットに受信タイムスタンプＴ２を挿入し、発信ＮＴＰパケットが被ると予想される伝送待ち時間に対する推定値に基づいて、発信ＮＴＰパケットに送信タイムスタンプＴ３を挿入し、
・外部環境と精密タイムスタンプサービス（ＰＴＳ）システムの物理層との間の境界を着信パケットが越えた直後に、精密ＮＴＰクライアントから着信パケットを検出するステップと、
・ハードウェアクロックにおいて時刻ラッチをトリガーして、着信パケットの到着時刻を一時的に記録するステップと、
・ラッチされた到着時刻をハードウェアクロックから検索し、そのラッチされた到着時刻に等しい受信タイムスタンプＴ２を着信パケットに挿入するステップと、
・ハードウェアクロックに現在時刻を、待ち時間推定量フィルターに伝送待ち時間の最新推定値を要求し、発信パケットがＰＴＳシステムの物理層と外部環境間の境界を実際に越える前に現在時刻と伝送待ち時間最新推定値との合計に等しい送信タイムスタンプＴ３を発信パケットに挿入するステップと、
・発信パケットが物理層と外部環境間の境界を越える直前に、その発信パケットを検出するステップと、
・ハードウェアクロックにおいて時刻ラッチをトリガーして、発信パケットの発出時刻を一時的に記録するステップと、
・ソフトウェアにより計算された送信タイムスタンプ値と実際に計測された送信タイムスタンプとの間のオフセットを計算することにより、伝送待ち時間の推定値を更新し、その差分をフィルタリングして伝送待ち時間の次の推定値として、伝送待ち時間の最小値を選択するステップと
を実行することによって、各ＮＴＰクライアント／サーバ間でのパケット交換後の伝送待ち時間の推定値を更新し、
−精密ＮＴＰサーバの内外へのＮＴＰパケットの移動について、従来技術の方法と比較して、より正確且つ安定した計測を行うこと、
が可能になる。
【００３０】
[0035]開示したシステム及び方法の一利点は、現行のＮＴＰ標準に準拠する他のサーバ及びクライアントと相互作用の非互換性を生じさせるリスクなしに、大幅に向上したタイムスタンプ機能制御を既存のＮＴＰサーバ内で実現できる点である。開示した精密タイムスタンプサービス（ＰＴＳ）システムは、ハードウェアに実装され、ＮＴＰパケットを認識するように構成されたパケットタイムスタンプエンジンを含む。開示したＰＴＳシステムは、ＮＴＰサーバ内の様々なソフトウェア層を経由する伝送待ち時間の推定値を計算するように構成された待ち時間推定量フィルターをさらに含む。重要なことに、開示した方法は、現行のＮＴＰ標準との互換性を保持する形でパケットタイムスタンプエンジン及び待ち時間推定量フィルターを活用するステップを含む。このようなやり方で、到着時刻及び発出時刻をハードウェアによって検出及び登録し、これにより高精度を達成し、デバイスドライバ、ネットワークスタック、オペレーティングシステム等に関連する不確実性を回避する。結果として、より正確且つ安定したＮＴＰサーバタイムスタンプをＮＴＰクライアントに提供する。
【００３１】
[0036]本発明の一実施形態は、コンピュータシステムと共に使用するためにプログラム製品として実装される。プログラム製品のプログラムは実施形態の機能（本明細書に示す方法を含む）を定義し、様々なコンピュータ可読記憶媒体に収められてよい。例示的コンピュータ可読記憶媒体は、（ｉ）情報が永久にその上に記憶される書き込み可能でない記憶媒体（例えば、ＣＤ−ＲＯＭドライブで読み取り可能なＣＤ−ＲＯＭディスクなどのコンピュータ内部の読み取り専用メモリ装置）、（ｉｉ）変更可能な情報を格納する書き込み可能記憶媒体（例えば、ディスケットドライブ内のフロッピーディスク又はハードディスクドライブ）を含むが、これらに限定されない。このようなコンピュータ可読記憶媒体は、本発明の機能に指令するコンピュータ可読指令を含む場合、本発明の実施形態である。
【００３２】
[0037]他の媒体は、無線通信網を含むコンピュータ網又は電話網を通るなど、情報が通ってコンピュータに運ばれる通信媒体を含む。後者の実施形態は、インターネット及び他のネットワークへ、またインターネット及び他のネットワークから情報を伝送することを特に含む。このような通信媒体は、本発明の機能に導くコンピュータ可読指令を含む場合、本発明の実施形態である。
【００３３】
[0038]前文は本発明の実施形態を導くものであるが、本発明の基本的な範囲から逸脱することなく、本発明のさらに他の実施形態が考案可能である。
【図１】
2009538101.tif 000003
【図２】
2009538101.tif 000004
【図３】
2009538101.tif 000005
【図４】
2009538101.tif 000006
【図５】
2009538101.tif 000007
【図６】
2009538101.tif 000008
【国際調査報告】
2009538101.tif 000009
2009538101.tif 000010