(57)【要約】【課題】パケットの送信周期の精度を向上させることができる通信装置および送信周期設定プログラムが望まれている。【解決手段】送信データを含むパケットを送信する通信装置であって、設定取得周期毎に外部から基準時刻を取得する基準時刻取得部と、装置時刻を生成するとともに、装置時刻と基準時刻との時刻差および設定取得周期に基づき、装置時刻に対する時刻補正値を算出するシステム時間管理部と、算出された時刻補正値とパケットの単位時間あたりの送信パケット数とに基づき、パケットの送信周期に対する送信周期補正値を算出し、送信周期を補正する呼制御部と、パケットを生成し、送信周期でパケットを送信するパケット生成送信部とを備える。【選択図】図４
2019041278.tif 000002
【特許請求の範囲】
【請求項１】
送信データを含むパケットを送信する通信装置であって、
設定取得周期毎に外部から基準時刻を取得する基準時刻取得部と、
装置時刻を生成するとともに、前記装置時刻と前記基準時刻との時刻差および前記設定取得周期に基づき、前記装置時刻に対する時刻補正値を算出するシステム時間管理部と、
算出された前記時刻補正値と前記パケットの単位時間あたりの送信パケット数とに基づき、前記パケットの送信周期に対する送信周期補正値を算出し、前記送信周期を補正する呼制御部と、
前記パケットを生成し、前記送信周期でパケットを送信するパケット生成送信部と
を備える
ことを特徴とする通信装置。
【請求項２】
前記システム時間管理部は、
前記時刻差を前記設定取得周期で除算することにより、単位時間あたりの前記時刻補正値を算出し、
前記呼制御部は、
前記時刻補正値を単位時間あたりの前記送信パケット数で除算することにより、前記送信周期補正値を算出する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記システム時間管理部は、
前記装置時刻から前記基準時刻を減算することにより前記時刻差を算出し、
前記装置時刻の偏差の正負と前記時刻補正値の正負とが一致した場合に、前記呼制御部に対して前記時刻補正値を通知し、
前記呼制御部は、
前記時刻補正値の通知を受け取った場合に、前記送信周期補正値を算出する
ことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記システム時間管理部は、
最初に算出された前記時刻差が正の値である場合で、以降に算出された前記時刻補正値が正の値であるとき、または、最初に算出された前記時刻差が負の値である場合で、以降に算出された前記時刻補正値が負の値であるときに、前記装置時刻の偏差の正負と前記時刻補正値の正負とが一致したと判断する
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記呼制御部は、
最初に算出された前記時刻差が正の値である場合で、その後に算出された前記時刻補正値が正の値であるときに、前記送信周期に対して算出した前記送信周期補正値を加算し、
最初に算出された前記時刻差が負の値である場合で、その後に算出された前記時刻補正値が負の値であるときに、前記送信周期から算出した前記送信周期補正値を減算する
ことを特徴とする請求項３または４に記載の通信装置。
【請求項６】
コンピュータに、
設定取得周期毎の外部からの基準時刻の取得と、送信データを含むパケットを送信する通信装置の装置時刻の生成とを行うステップと、
前記装置時刻と前記基準時刻との時刻差を算出するステップと、
算出された時刻差と前記設定取得周期とに基づき、前記装置時刻に対する時刻補正値を算出するステップと、
算出した前記時刻補正値と前記パケットの単位時間あたりの送信パケット数とに基づき、前記パケットの送信周期に対する送信周期補正値を算出するステップと、
算出した送信周期補正値に基づき、前記送信周期を補正するステップと
を実行させる
ことを特徴とする送信周期設定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一定の送信周期でパケットを送信する通信装置および送信周期設定プログラムに関する。
【背景技術】
【０００２】
従来、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）電話機能を備えたホームゲートウェイ装置は、音声データをＲＴＰ（Ｒｅａｌ-ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）パケットに変換して通信相手に送信することにより、ＩＰ電話を実現している。この場合のＲＴＰパケットの送信周期は、ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）によるやりとりによって決定され、一般的には２０ｍｓ（ミリ秒）となる。
【０００３】
しかしながら、ホームゲートウェイ装置において、ＲＴＰパケットの送信周期を固定している場合でも、装置に搭載されている水晶振動子のクロック偏差により、設定送信周期よりも長い周期、もしくは短い周期でＲＴＰパケットが送信されることがある。この場合には、ＩＰ電話を行う装置間で確実に通話を行うことが困難となる。そこで、最近では、送信側の装置で発生した送信周期のずれを、受信側の装置で吸収し、送信周期の精度を向上させる技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１６６１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術は、受信側の装置で送信周期のずれを吸収するので、当該技術が適用されていない受信側の装置との間で通話を行う場合には、依然として送信周期がずれた状態で通話を行うことになる。そのため、受信側の装置で送信周期のずれを吸収させることは、送信周期の精度を向上させるための根本的な解決とはならない。
【０００６】
そこで、上記の課題を解決するために、送信側でパケットの送信周期の精度を向上させることができる通信装置および送信周期設定プログラムが望まれている。
【課題を解決するための手段】
【０００７】
本発明に係る通信装置は、送信データを含むパケットを送信する通信装置であって、設定取得周期毎に外部から基準時刻を取得する基準時刻取得部と、装置時刻を生成するとともに、前記装置時刻と前記基準時刻との時刻差および前記設定取得周期に基づき、前記装置時刻に対する時刻補正値を算出するシステム時間管理部と、算出された前記時刻補正値と前記パケットの単位時間あたりの送信パケット数とに基づき、前記パケットの送信周期に対する送信周期補正値を算出し、前記送信周期を補正する呼制御部と、前記パケットを生成し、前記送信周期でパケットを送信するパケット生成送信部とを備えるものである。
【０００８】
また、本発明に係る送信周期設定プログラムは、コンピュータに、設定取得周期毎の外部からの基準時刻の取得と、送信データを含むパケットを送信する通信装置の装置時刻の生成とを行うステップと、前記装置時刻と前記基準時刻との時刻差を算出するステップと、算出された時刻差と前記設定取得周期とに基づき、前記装置時刻に対する時刻補正値を算出するステップと、算出した前記時刻補正値と前記パケットの単位時間あたりの送信パケット数とに基づき、前記パケットの送信周期に対する送信周期補正値を算出するステップと、算出した送信周期補正値に基づき、前記送信周期を補正するステップとを実行させるものである。
【発明の効果】
【０００９】
以上のように、本発明によれば、システム時間に対する時刻補正値と単位時間あたりの送信パケット数とに基づき、パケットの送信周期に対する送信周期補正値を算出して送信周期を補正することにより、パケットの送信周期の精度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る通信装置の構成の一例を示すブロック図である。
【図２】実施の形態１に係る通信装置によるシステム時間に対する補正処理の流れの一例を示すフローチャートである。
【図３】システム時間に対する補正処理の具体例を示すグラフである。
【図４】実施の形態１に係る通信装置によるＲＴＰパケットの送信周期に対する補正処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下、本実施の形態１に係る通信装置について説明する。
【００１２】
［通信装置の構成］
図１は、本実施の形態１に係る通信装置１の構成の一例を示すブロック図である。通信装置１は、例えば、ＩＰ電話機能を有するホームゲートウェイ装置であり、送信データとしての音声データをパケット化し、パケットを設定周期で送信する。図１に示すように、通信装置１は、通信相手としての外部のパケット送信先２、呼制御サーバ３およびＮＴＰサーバ４と接続されている。通信装置１は、パケット生成送信部１０、呼制御部２０、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）クライアント３０、システム時間管理部４０、水晶振動子５０および通信インタフェース６０で構成されている。
【００１３】
ＮＴＰクライアント３０は、通信インタフェース６０を介してＮＴＰサーバ４から基準となる時刻情報を定期的に取得する。ＮＴＰクライアント３０は、取得した時刻情報をシステム時間管理部４０に供給する。水晶振動子５０は、水晶の圧電現象を利用して生成された一定の周波数に基づいてクロックを生成する。ＮＴＰクライアント３０は、本発明における「基準時刻取得部」に相当する。
【００１４】
システム時間管理部４０は、水晶振動子５０によって生成されたクロックに基づき、装置時刻であるシステム時間を生成する。そして、システム時間管理部４０は、ＮＴＰクライアント３０から供給されたＮＴＰサーバ４からの時刻情報に基づき、システム時間を更新する。
【００１５】
また、システム時間管理部４０は、システム時間とＮＴＰサーバ４からの時刻情報が示すＮＴＰ時間との時刻差を算出し、算出した時刻差に基づきシステム時間に対する単位時間当たりの時刻補正値を算出する。システム時間管理部４０は、算出した時刻補正値に基づきシステム時間を補正するとともに、算出した時刻補正値を呼制御部２０に供給する。
【００１６】
呼制御部２０は、通信インタフェース６０を介して外部の呼制御サーバ３とやりとりを行い、呼を確立する。呼制御部２０は、ＲＴＰパケットの送信先を示す送信先情報と、ＲＴＰパケットの送信周期とをパケット生成送信部１０に通知し、ＲＴＰパケットの送信開始および送信停止を制御する。呼制御部２０は、システム時間管理部４０から取得した時刻補正値に基づき、ＲＴＰパケットの送信周期を補正するための送信周期補正値を算出し、パケット生成送信部１０で生成されるＲＴＰパケットの送信周期を補正する。
【００１７】
パケット生成送信部１０は、呼制御部２０の制御に基づき、入力された音声データを含むＲＴＰパケットを生成する。パケット生成送信部１０は、生成したＲＴＰパケットを、呼制御部２０から通知される送信周期で、通信インタフェース６０を介してパケット送信先２に送信する。
【００１８】
通信インタフェース６０は、通信装置１の各部と外部との間で通信を行う際のインタフェースである。通信インタフェース６０は、パケット生成送信部１０からＲＴＰパケットが供給された場合に、供給されたＲＴＰパケットの送信先情報に基づき、パケット送信先２との接続を確立する。また、通信インタフェース６０は、ＮＴＰクライアント３０からＮＴＰサーバ４に対する時刻情報の問い合わせを受け取った場合に、ＮＴＰサーバ４との接続を確立する。
【００１９】
［補正処理］
本実施の形態１に係る通信装置１による補正処理について説明する。システム時間管理部４０で刻まれるシステム時間は、水晶振動子５０によって生成されたクロックに基づいて生成されるが、水晶振動子５０の精度によってクロック偏差が生じるため、ＮＴＰサーバ４から取得するＮＴＰ時間からずれてしまう。
【００２０】
また、パケット生成送信部１０で生成されるＲＴＰパケットの送信周期は、通常、固定的な値に設定されている。しかし、ＲＴＰパケットの送信周期は、システム時間に基づいて決定されるため、クロック偏差によってシステム時間がずれると、それに応じてＲＴＰパケットの送信周期もずれてしまう。
【００２１】
そこで、本実施の形態１に係る通信装置１は、ＮＴＰサーバ４から取得する時刻情報に基づき、システム時間に対する補正処理を行うとともに、ＲＴＰパケットの送信周期に対する補正処理を行う。以下では、システム時間に対する補正処理と、ＲＴＰパケットの送信周期に対する補正処理とについて説明する。
【００２２】
（システム時間に対する補正処理）
システム時間に対する補正処理について説明する。本実施の形態１において、通信装置１は、自装置が有するシステム時間とＮＴＰサーバ４から取得した時刻情報が示すＮＴＰ時間との時刻差に基づき、システム時間を補正する。
【００２３】
システム時間管理部４０は、ＮＴＰクライアント３０によってＮＴＰサーバ４から取得された時刻情報が示すＮＴＰ時間ＴＡと、その時点におけるシステム時間ＴＢとの時刻差ΔＴを算出する。時刻差ΔＴは、式（１）に基づき算出される。
ΔＴ＝ＴＢ−ＴＡ    ・・・（１）
【００２４】
次に、システム時間管理部４０は、算出した時刻差ΔＴの絶対値｜ΔＴ｜と、例えば６００秒等の設定時間とを比較する。時刻差ΔＴの絶対値｜ΔＴ｜が設定時間よりも大きい場合、システム時間管理部４０は、システム時間ＴＢをＮＴＰ時間ＴＡに更新する。なお、システム時間ＴＢをＮＴＰ時間ＴＡに更新する処理は、一般に、通信装置１に対して初めて電源が投入され、最初に時刻設定を行う場合等に行われるものである。
【００２５】
一方、時刻差ΔＴの絶対値｜ΔＴ｜が設定時間以下である場合、システム時間管理部４０は、１秒等の単位時間毎にシステム時間を時刻補正値ＴＣだけ補正する。時刻補正値ＴＣは、単位時間あたりの補正値であり、時刻差ΔＴおよびＮＴＰ時間ＴＡの取得周期ＴＤを用いて、式（２）に基づき算出される。具体的には、例えば、時刻差ΔＴが６００秒であり、取得周期ＴＤが２０分（１２００秒）である場合、時刻補正値ＴＣは、式（２）に基づき、単位時間当たり０．５ミリ秒となる。
ＴＣ＝ΔＴ／ＴＤ    ・・・（２）
【００２６】
また、時刻差ΔＴが正の値である場合には、システム時間ＴＢがＮＴＰ時間ＴＡより早いため、システム時間管理部４０は、単位時間毎にシステム時間ＴＢから時刻補正値ＴＣの絶対値｜ＴＣ｜を減算する。一方、時刻差ΔＴが負の値である場合には、システム時間ＴＢがＮＴＰ時間ＴＡより遅いため、システム時間管理部４０は、単位時間毎にシステム時間ＴＢに対して時刻補正値ＴＣの絶対値｜ＴＣ｜を加算する。
【００２７】
図２は、本実施の形態１に係る通信装置１によるシステム時間に対する補正処理の流れの一例を示すフローチャートである。ステップＳ１において、システム時間管理部４０は、ＮＴＰサーバ４から時刻情報を取得するための取得周期ＴＤに到達したか否かを判断する。
【００２８】
取得周期ＴＤに到達した場合（ステップＳ１；Ｙｅｓ）、ＮＴＰクライアント３０は、ステップＳ２において、ＮＴＰサーバ４から時刻情報を取得する。一方、取得周期ＴＤに到達していない場合（ステップＳ１；Ｎｏ）には、処理がステップＳ１に戻り、取得周期ＴＤに到達するまでステップＳ１の処理を繰り返す。
【００２９】
ステップＳ３において、システム時間管理部４０は、取得した時刻情報が示すＮＴＰ時間ＴＡとシステム時間ＴＢとを用いて、式（１）に基づき時刻差ΔＴを算出する。ステップＳ４において、システム時間管理部４０は、算出した時刻差ΔＴの絶対値｜ΔＴ｜が設定時間以下であるか否かを判断する。時刻差ΔＴの絶対値｜ΔＴ｜が設定時間以下である場合（ステップＳ４；Ｙｅｓ）、システム時間管理部４０は、ステップＳ５において、時刻差ΔＴと取得周期ＴＤを用いて、式（２）に基づき単位時間毎の時刻補正値ＴＣを算出する。
【００３０】
ステップＳ６において、システム時間管理部４０は、時刻差ΔＴが正の値、すなわち０より大きいか否かを判断する。時刻差ΔＴが０よりも大きい場合（ステップＳ６；Ｙｅｓ）、システム時間管理部４０は、ステップＳ７において、システム時間ＴＢから算出した時刻補正値ＴＣの絶対値｜ＴＣ｜を減算して、システム時間ＴＢを補正する。また、時刻差ΔＴが０以下である場合（ステップＳ６；Ｎｏ）、システム時間管理部４０は、ステップＳ８において、システム時間ＴＢに対して時刻補正値ＴＣの絶対値｜ＴＣ｜を加算して、システム時間ＴＢを補正する。
【００３１】
一方、ステップＳ４において、時刻差ΔＴの絶対値｜ΔＴ｜が設定時間よりも大きい場合（ステップＳ４；Ｎｏ）、システム時間管理部４０は、ステップＳ９において、システム時間ＴＢを取得したＮＴＰ時間ＴＡに更新する。
【００３２】
図３は、システム時間に対する補正処理の具体例を示すグラフであり、補正処理が行われた場合に、時刻差ΔＴが遷移する実際の様子を示す。図３において、横軸は時間を示し、縦軸はシステム時間ＴＢとＮＴＰ時間ＴＡとの時刻差ΔＴを示す。また、原点０は、通信装置１に初めて電源が投入された時点を示す。
【００３３】
図３に示すように、通信装置１に電源が投入されてから最初にＮＴＰ時間ＴＡを取得した時刻ｔ１において、システム時間ＴＢとＮＴＰ時間ＴＡとの時刻差ΔＴは、設定時間である６００秒を超えている。そのため、システム時間管理部４０は、システム時間ＴＢをＮＴＰ時間ＴＡに更新する。これにより、時刻差ΔＴが０となる。その後、水晶振動子５０が有するクロック偏差により、時刻差ΔＴが増加する。
【００３４】
時刻ｔ１から取得周期ＴＤが経過した時刻ｔ２において、システム時間管理部４０は、時刻差ΔＴと設定時間とを比較する。このときの時刻差ΔＴは、設定時間である６００秒以内であり、かつ、時刻差ΔＴが正の値である。そのため、システム時間管理部４０は、式（２）に基づき、単位時間あたりの時刻補正値ＴＣを算出し、単位時間毎にシステム時間ＴＢから算出した時刻補正値ＴＣの絶対値｜ＴＣ｜を減算する。これにより、時刻差ΔＴは単位時間毎に減少する。
【００３５】
時刻ｔ２から取得周期ＴＤが経過した時刻ｔ３において、システム時間管理部４０は、時刻差ΔＴと設定時間とを比較する。このときの時刻差ΔＴは、設定時間である６００秒以内であり、かつ、時刻差ΔＴが負の値である。そのため、システム時間管理部４０は、式（２）に基づき、単位時間あたりの時刻補正値ＴＣを算出し、単位時間毎にシステム時間ＴＢに対して算出した時刻補正値ＴＣの絶対値｜ＴＣ｜を加算する。これにより、時刻差ΔＴは単位時間毎に増加する。
【００３６】
以下、時刻ｔ３、ｔ４、ｔ５、・・・において、システム時間管理部４０は、上述したようにして時刻差ΔＴと設定時間とを比較し、比較結果に基づきシステム時間ＴＢを補正する。
【００３７】
（ＲＴＰパケットの送信周期に対する補正処理）
ＲＴＰパケットの送信周期に対する補正処理について説明する。本実施の形態１において、通信装置１は、システム時間に対する補正処理で算出したシステム時間ＴＢとＮＴＰ時間ＴＡとの時刻差ΔＴを用いて、ＲＴＰパケットの送信周期を補正する。
【００３８】
ここで、システム時間ＴＢを生成する際に用いられる水晶振動子５０は、略一定のクロック偏差を有している。つまり、正方向のクロック偏差を有している場合には、常にクロック周期が短くなり、負方向のクロック偏差を有している場合には、常にクロック周期が長くなる。
【００３９】
このことから、水晶振動子５０が正方向のクロック偏差を有することによってシステム時間ＴＢがＮＴＰ時間ＴＡよりも早くなる場合、水晶振動子５０によって生成されたクロックは、通常よりもクロック周期が短いと判断することができる。すなわち、式（１）によって算出される時刻差ΔＴ（＝ＴＢ−ＴＡ）が正の値となる場合には、ＲＴＰパケットの送信周期が通常よりも短くなっていると判断することができる。
【００４０】
また、水晶振動子５０が負方向のクロック偏差を有することによってシステム時間ＴＢがＮＴＰ時間ＴＡよりも遅くなる場合、水晶振動子５０によって生成されたクロックは、通常よりもクロック周期が長いと判断することができる。すなわち、時刻差ΔＴが負の値となる場合には、ＲＴＰパケットの送信周期が通常よりも長くなっていると判断することができる。
【００４１】
そこで、本実施の形態１では、水晶振動子５０によるクロック偏差の方向を示す符号と時刻補正値ＴＣの符号とが一致する場合に、時刻差ΔＴに基づき送信周期の補正値である送信周期補正値ＴＥを算出してＲＴＰパケットの送信周期を補正する。
【００４２】
まず、システム時間管理部４０は、システム時間ＴＢに対する補正処理において最初に算出した時刻差ΔＴに基づき、水晶振動子５０のクロック偏差の方向を判断する。なお、ここでいう「最初」とは、時刻差ΔＴが設定時間を超えたことによってシステム時間ＴＢがＮＴＰ時間ＴＡに更新された後の、次に時刻差ΔＴが算出された時点のことをいうものとする。
【００４３】
時刻差ΔＴが正の値である場合には、システム時間ＴＢがＮＴＰ時間ＴＡよりも進んでいるため、システム時間管理部４０は、クロック偏差が正方向であると判断することができる。また、時刻差ΔＴが負の値である場合には、システム時間ＴＢがＮＴＰ時間ＴＡよりも遅れているため、システム時間管理部４０は、クロック偏差が負方向であると判断することができる。
【００４４】
次に、システム時間管理部４０は、取得周期ＴＤ毎に、判断したクロック偏差の方向を示す符号と、算出した時刻補正値ＴＣの符号とを比較する。比較の結果、クロック偏差の符号と時刻補正値ＴＣの符号とが一致した場合、システム時間管理部４０は、ＲＴＰパケットの送信周期を補正するための補正値として当該時刻補正値ＴＣを採用する。そして、システム時間管理部４０は、時刻補正値ＴＣを呼制御部２０に通知する。
【００４５】
一方、クロック偏差の符号と時刻補正値ＴＣの符号とが一致しない場合には、当該時刻補正値ＴＣをＲＴＰパケットの送信周期の補正値として採用しない。したがって、システム時間管理部４０は、当該時刻補正値ＴＣを呼制御部２０に通知しない。
【００４６】
呼制御部２０は、システム時間管理部４０から受け取った時刻補正値ＴＣに基づき、ＲＴＰパケットの送信周期を補正するための送信周期補正値ＴＥを算出する。ここで、時刻補正値ＴＣは、１秒等の単位時間あたりの補正値であるので、単位時間あたりに送信される各ＲＴＰパケットに対する送信周期補正値ＴＥは、時刻補正値ＴＣを単位時間あたりの送信パケット数で除した値とすればよい。すなわち、送信周期補正値ＴＥは、式（３）に基づき算出される。
ＴＥ＝時刻補正値ＴＣ／単位時間あたりの送信パケット数    ・・・（３）
【００４７】
具体的には、例えば、単位時間が１秒であり、ＲＴＰパケットの送信周期が２０ミリ秒である場合、ＲＴＰパケットは、１秒間に５０パケット（＝１秒／２０ミリ秒）だけ送信される。したがって、１秒間に送信される各ＲＴＰパケットに対する送信周期補正値ＴＥは、時刻補正値ＴＣを１秒間の送信パケット数「５０」で除した値「ＴＣ／５０」となる。時刻補正値ＴＣが０．５ミリ秒である場合、１パケットあたりの送信周期補正値ＴＥは、式（３）に基づき、０．０１ミリ秒（＝０．５ミリ秒／５０）となる。
【００４８】
また、クロック偏差が正方向である場合、ＲＴＰパケットの送信周期が短くなっているため、呼制御部２０は、ＲＴＰパケットの送信周期に対して算出した送信周期補正値ＴＥの絶対値｜ＴＥ｜を加算し、送信周期が長くなるように補正する。一方、クロック偏差が負方向である場合、ＲＴＰパケットの送信周期が長くなっているため、呼制御部２０は、ＲＴＰパケットの送信周期から算出した送信周期補正値ＴＥの絶対値｜ＴＥ｜を減算し、送信周期が短くなるように補正する。
【００４９】
このようにして決定されたＲＴＰパケットの送信周期は、パケット生成送信部１０に供給される。そして、パケット生成送信部１０で生成されたＲＴＰパケットは、呼制御部２０から受け取った送信周期で送信される。
【００５０】
図４は、本実施の形態１に係る通信装置１によるＲＴＰパケットの送信周期に対する補正処理の流れの一例を示すフローチャートである。ステップＳ１１において、システム時間管理部４０は、システム時間ＴＢに対する補正処理において最初に算出した時刻差ΔＴに基づき、水晶振動子５０のクロック偏差の方向を判断する。
【００５１】
ステップＳ１２において、システム時間管理部４０は、時刻差ΔＴと取得周期ＴＤを用いて、式（２）に基づき単位時間毎の時刻補正値ＴＣを算出する。なお、ステップＳ１２の処理は、図２のシステム時間に対する補正処理におけるステップＳ５と同様の処理である。
【００５２】
ステップＳ１３において、システム時間管理部４０は、ステップＳ１１で判断したクロック偏差の方向を示す符号と、ステップＳ１２で算出した時刻補正値ＴＣの符号とを比較する。２つの符号が一致した場合（ステップＳ１３；Ｙｅｓ）、システム時間管理部４０は、ステップＳ１４において、時刻補正値ＴＣを呼制御部２０に通知する。一方、２つの符号が一致した場合（ステップＳ１３；Ｎｏ）には、処理がステップＳ１６に移行する。
【００５３】
ステップＳ１５において、呼制御部２０は、システム時間管理部４０から受け取った時刻補正値ＴＣを用いて、式（３）に基づき送信周期補正値ＴＥを算出する。ステップＳ１６において、呼制御部２０は、算出した送信周期補正値ＴＥに基づき、ＲＴＰパケットの送信周期を決定する。なお、ステップＳ１３においてロック偏差の符号と時刻補正値ＴＣの符号とが一致しない場合、呼制御部２０は、システム時間管理部４０から時刻補正値ＴＣを受け取っていないため、直前の送信周期補正値ＴＥを用いて送信周期を決定する。
【００５４】
このとき、ステップＳ１３において一致した符号が「正」である場合、ＲＴＰパケットの送信周期が短くなっているため、呼制御部２０は、送信周期に対して送信周期補正値ＴＥの絶対値｜ＴＥ｜を加算して送信周期を決定する。一方、ステップＳ１３において一致した符号が「負」である場合、ＲＴＰパケットの送信周期が長くなっているため、呼制御部２０は、送信周期から送信周期補正値ＴＥの絶対値｜ＴＥ｜を減算して送信周期を決定する。
【００５５】
以下、ステップＳ１２からステップＳ１６の処理がＮＴＰサーバ４からの時刻情報の取得周期ＴＤ毎に繰り返される。
【００５６】
ＲＴＰパケットの送信周期に対する補正処理の具体例について、図３を参照して説明する。なお、図３の例は、水晶振動子５０のクロック偏差が正方向である場合を示している。
【００５７】
図３に示すように、システム時間ＴＢに対する補正処理が行われている場合、時刻ｔ２においてＮＴＰクライアント３０によって時刻情報が取得されると、システム時間管理部４０は、水晶振動子５０のクロック偏差が正方向であると判断する。そして、システム時間管理部４０は、時刻差ΔＴと取得周期ＴＤとに基づき時刻補正値ＴＣを算出する。
【００５８】
このとき、時刻差ΔＴが正の値であることから時刻補正値ＴＣも正の値となり、時刻補正値ＴＣの符号とクロック偏差の符号とが一致する。そのため、システム時間管理部４０は、当該時刻補正値ＴＣをＲＴＰパケットの送信周期を補正するための補正値として採用し、時刻補正値ＴＣを呼制御部２０に通知する。これにより、呼制御部２０は、受け取った時刻補正値ＴＣに基づいて送信周期補正値ＴＥを算出する。そして、呼制御部２０は、送信周期に算出した送信周期補正値ＴＥを加算し、時刻ｔ２以降の送信周期を決定する。
【００５９】
次に、取得周期ＴＤが経過した時刻ｔ３において、システム時間管理部４０は、時刻差ΔＴと取得周期ＴＤとに基づき時刻補正値ＴＣを算出する。この場合、時刻差ΔＴが負の値であることから時刻補正値ＴＣは負の値となり、時刻補正値ＴＣの符号とクロック偏差の符号とが一致しない。そのため、システム時間管理部４０は、当該時刻補正値ＴＣをＲＴＰパケットの送信周期を補正するための補正値として採用せず、時刻補正値ＴＣを呼制御部２０に通知しない。これにより、呼制御部２０は、直前の送信周期補正値ＴＥを用いて送信周期を決定する。すなわち、時刻ｔ３以降の送信周期は、時刻ｔ２から時刻ｔ３までの送信周期と同一の送信周期となる。
【００６０】
以下、同様にしてＲＴＰパケットの送信周期が決定され、時刻ｔ４において、時刻補正値ＴＣの符号とクロック偏差の符号とが一致するため、ＲＴＰパケットの送信周期に対する補正処理が行われる。そして、時刻ｔ４以降のＲＴＰパケットの送信周期は、次に新たな時刻補正値ＴＣが採用されるまで、同一の送信周期が設定される。
【００６１】
このように、水晶振動子５０のクロック偏差が正方向である場合には、取得周期ＴＤ毎に算出される時刻補正値Ｔｃの値が正である時刻において、ＲＴＰパケットに対する送信周期の補正処理が行われる。また、図示しないが、水晶振動子５０のクロック偏差が負方向である場合、図３に示す時刻差ΔＴが遷移する様子（グラフの形状）は、横軸である時間軸対称に反転したものとなる。この場合、取得周期ＴＤ毎に算出される時刻補正値Ｔｃの値が負である時刻において、ＲＴＰパケットに対する送信周期の補正処理が行われる。
【００６２】
以上のように、本実施の形態１に係る通信装置１は、システム時間管理部４０において、システム時間ＴＢとＮＴＰ時間ＴＡとの時刻差ΔＴおよび取得周期ＴＤに基づき、システム時間ＴＢに対する時刻補正値ＴＣを算出する。そして、通信装置１は、呼制御部２０において、算出した時刻補正値ＴＣとＲＴＰパケットの単位時間あたりの送信パケット数とに基づき、ＲＴＰパケットの送信周期に対する送信周期補正値ＴＥを算出し、送信周期を補正する。これにより、クロック偏差によって生じたＲＴＰパケットの送信周期が補正され、送信周期の精度を向上させることができる。
【００６３】
また、通信装置１において、システム時間管理部４０は、時刻差ΔＴを取得周期ＴＤで除算して時刻補正値ＴＣを算出し、呼制御部２０は、時刻補正値ＴＣを単位時間あたりの送信パケット数で除算して送信周期補正値ＴＥを算出する。これにより、システム時間ＴＢの補正処理の際に算出される時刻補正値ＴＣを利用して、ＲＴＰパケットの送信周期を補正することができる。
【００６４】
さらに、通信装置１において、システム時間管理部４０は、システム時間ＴＢの偏差を示す符号と時刻補正値ＴＣの符号とが一致した場合に、呼制御部２０に対して時刻補正値ＴＣを通知する。そして、呼制御部２０は、時刻補正値ＴＣの通知を受け取った場合に、送信周期補正値ＴＥを算出する。これにより、システム時間ＴＢの偏差によって生じるＲＴＰパケットの送信周期に対するずれを確実に補正することができる。
【００６５】
以上、本実施の形態１について説明したが、本発明は、上述した実施の形態１に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。本実施の形態１では、送信するパケット毎に送信周期を補正したが、これに限られず、例えば、複数のパケット単位で送信周期を補正してもよい。
【００６６】
パケット生成送信部１０の性能によっては、１パケットあたり０．０１ミリ秒単位での送信周期の調整が困難である場合があるため、この場合は、調整できる値まで補正値の単位を変更してもよい。具体的には、送信周期を１０ミリ秒で調整可能なパケット生成送信部１０に対して、１パケットあたり０．０１ミリ秒の送信周期の補正が必要である場合には、１０００パケット（１０ミリ秒／０．０１ミリ秒）周期で１０ミリ秒の送信周期の補正を行ってもよい。
【００６７】
また、本実施の形態１では、ＩＰ電話機能を有するホームゲートウェイ装置としての通信装置１を例にとって説明したが、これに限られず、設定周期でパケットを送信するプロトコルを有する通信装置であれば、いずれの通信装置にも適用することができる。
【符号の説明】
【００６８】
１  通信装置
２  パケット送信先
３  呼制御サーバ
４  ＮＴＰサーバ
１０  パケット生成送信部
２０  呼制御部
３０  ＮＴＰクライアント
４０  システム時間管理部
５０  水晶振動子
６０  通信インタフェース
【図１】
2019041278.tif 000003
【図２】
2019041278.tif 000004
【図３】
2019041278.tif 000005
【図４】
2019041278.tif 000006