図1は、実施形態にかかる制御方法の例を説明する図である。図1に示す通信装置20は、デバイス10(10a、10b)とデバイスの制御を行う制御部30を備える。なお、図1は一例であり、通信装置20中に含まれるデバイス10の数は任意である。以下の説明では、数値の例として、x、y、z、wを用いるが、これらの値の大きさは、x<y<z<wであるものとする。
デバイス10a、10b、制御部30のいずれも、特定の処理を正常に行う場合にかかる時間の最大値と最小値を保持しているものとする。以下、デバイス10aおよび10bが4バイトのデータの書き込みを行う際にかかる時間の最小値がx秒、最大値がz秒であるとする。一方、制御部30が4バイトのデータをデバイス10aまたはデバイス10bに書き込むときに、書き込みの要求をデバイス10a、10bに出力してから書き込みの完了報告を取得するまでに許容される時間は、y秒以上でw秒以下であるとする。換言すると、制御部30の実現に使用されるファームウェアでは、デバイス10への書き込みにかかる時間の固定値の代わりに、設定値として許容される値の範囲がy秒以上でw秒以下に設定されている。
時刻T1において、ケースC1に示すように、制御部30がデバイス10aとデバイス10bの各々に4バイトのデータを書き込むときに、デバイス10aおよびデバイス10bの処理時間はx秒であるとする。一方、制御部30では、デバイス10aまたはデバイス10bからのデータの書き込みのタイムアウトを検出するために使用する基準値をy秒に設定しているとする。なお、基準値は、制御部30中の記憶部50に記憶されているものとする。時刻T1の段階では、制御部30は、デバイス10aまたはデバイス10bへの4バイトのデータの書き込み処理を正常に行うことができるものとする。
その後、時刻T2には、デバイス10bが4バイトのデータを書き込むときにかかる時間がx秒よりも長くなり、ケースC2に示すように、z秒かかるようになったとする。ここで、デバイス10bでの書き込みにかかる時間が変動した理由は、デバイス10bへのアクセスの集中や、デバイス10bの経年劣化、デバイス10bを互換性のある他の部品で置き換えたことなどのいずれの原因でも良いものとする。この場合、制御部30がデバイス10bへの4バイトのデータの書き込み処理を行うと、デバイス10bが書き込み処理を行うためにz秒かかるのに対し、制御部30は、y秒でタイムアウトを検出する。前述のとおり、z秒はy秒よりも長いので、制御部30は、デバイス10bへの4バイトのデータの書き込み処理を正常に行うことができない。
制御部30は、デバイス10bへの書き込み処理に失敗すると、デバイス10bで4バイトの書き込みにかかる時間を取得する。このとき、制御部30は、デバイス10bに4バイトの書き込み処理を行わせて、処理の要求から処理の終了通知の取得までの時間を計測する。ここでは、デバイス10bで4バイトの書き込みにかかる時間がz秒であるとする。制御部30は、デバイス10bへの書き込み処理を正常に行うために、4バイトのデータの書き込み処理に対するタイムアウトを検出するために使用する時間をw秒に変更する。
なお、制御部30が例えば、通信装置20に搭載されているアプリケーションや、システム中の他の装置に書き込みの終了を通知する場合は、制御部30と制御部30の通知先との間で同様の手法により、タイムアウトまでの待ち時間が設定される。このため、タイムアウト時間をw秒に変更しても、通信装置20と他の装置との間の通信には、支障が出ない値となるように、システム中の他の装置やアプリケーションでの設定が適宜変更される。以上の例では、デバイス10a、10bとして動作するメモリへの書き込み処理が行われる場合を例として説明したが、デバイス10の種類は任意であり、また、デバイス10に対する処理の種類も任意である。
このように、デバイス10の状況に応じて、通信装置20において自律的にタイマ値の設定が変更される。さらに、通信装置20で使用されるファームウェアでは、固定的な設定値の代わりに、設定値として許容される値の範囲が予め決められており、許容される値の範囲内で動的に決定された値を設定できる。このため、実施形態にかかるシステムでは、制御部30の実現に使用されるファームウェアなどを変更しなくてもシステムの運用が可能である。このため、デバイス10での処理時間の変更に起因して、システム全体の動作確認が行わなくてもよく、システムのメンテナンスも簡便になる。
<通信システムと装置構成の例>
図2は、通信システムの例を示す図である。図2に示す通信システムには、通信装置20、オペレーションセンタ5、交換機2が含まれる。オペレーションセンタ5に含まれている装置や交換機2は、通信装置20に対して、ユーザの通信処理を実現するための処理を、適宜、要求する。なお、交換機2は、Circuit Switched over-IP(CS−IP)化されたネットワークに対応可能な交換機2であっても良い。なお、図2の例では、図を分り易くするために通信システム中の交換機2、オペレーションセンタ5、通信装置20を1つずつ示しているが、これらの数は、実装に応じて変更されうる。
通信装置20は、ファンクションブロック21、送受信部22、中央処理部25を備える。送受信部22は、アプリケーション処理部80から取得したデータを、オペレーションセンタ5中の装置や交換機2に送信する。また、送受信部22は、オペレーションセンタ5中の装置や交換機2から取得したデータをアプリケーション処理部80に出力する。中央処理部25は、ミドルウェア処理部70とアプリケーション処理部80を備える。アプリケーション処理部80は、通知部81、更新部82、処理部83を備える。ミドルウェア処理部70は、通知部71、更新部72、処理部73を備える。
処理部83は、通信装置20宛てのデータを、アプリケーションを用いて処理する。処理部83は、アプリケーションを用いた処理により、適宜、デバイス10へのアクセスを行う際に、ミドルウェア処理部70中の処理部73に対して、デバイス10へのアクセスを要求する。このとき、処理部83は、要求した処理についての通知が通知部71から所定の時間内に得られない場合、タイムアウトにより処理が失敗したと判定する。通知部81は、処理の成功が通知部71から通知されると、処理の成功を交換機2に通知する。一方、タイムアウトが発生すると、更新部82は、処理部83、処理部73、ファンクションブロック21などで使用されるタイマの基準値を計算する。更新部82は、処理部83での基準値を設定する。また、通知部81は、処理部83で得られた値を、処理部73などに通知する。
処理部73は、ミドルウェアを用いて、処理部83からの要求を処理する。処理部73は、処理部83から要求された処理を行うファンクションブロック21を選択し、ファンクションブロック21に処理を要求する。なお、1つの通信装置20に含まれるファンクションブロック21の数は任意である。処理部73は、処理の要求先として選択したファンクションブロック21から、ファンクションブロック21に要求した処理についての通知が所定の時間内に得られない場合、タイムアウトにより処理が失敗したと判定する。一方、ファンクションブロック21から処理の成功が通知されると、通知部71は、アプリケーション処理部80に処理の成功を通知する。さらに、更新部72は、処理部73でのタイムアウトの検出に用いる値の更新値をアプリケーション処理部80から取得すると、得られた値を処理部73に設定する。通知部71は、更新部82からファンクションブロック21で使用される基準値の更新値が通知されると、通知された値をファンクションブロック21に出力する。
ファンクションブロック21は、ファームウェア(FW)処理部60、制御部30、タイマ40、デバイス10を備える。ファームウェア処理部60は、通知部61、更新部62、処理部63を備える。処理部63は、ミドルウェア処理部70からの処理の要求に応じて、デバイス10への処理の内容を特定し、特定した処理を制御部30に要求する。処理部63は、基準値以内の時間に制御部30から処理についての成功と失敗のいずれも通知されない場合、タイムアウトが発生したと判定する。更新部62は、通知部71から処理部63で使用する基準値の更新値を取得すると、基準値を更新値に変更する。通知部61は、タイムアウトの発生を処理部73に通知する。
制御部30は、処理部63からの要求に応じて、デバイス10に対して処理を要求する。このとき、制御部30は、デバイス10での処理にかかる時間を、タイマ40を用いて計測する。なお、タイマ40は、制御部30に含まれていても良いものとする。
図3は、制御部30の構成の例を示す図である。図3の例では、制御部30は、タイマ40を内蔵している。制御部30は、計測部31、通知部32、更新部33、デバイス処理部34、タイマ40、記憶部50を備える。
記憶部50は、制御部30がデバイス10での処理を待ち合わせる時間の基準値を保持している。また、基準値に設定できる値の範囲も適宜、記憶部50に記憶している。デバイス処理部34は、ファームウェア処理部60からの要求に応じて、デバイス10に処理を要求する。計測部31は、デバイス処理部34がデバイス10に処理を要求する際に、デバイス10での処理にかかる時間を計測するために、タイマ40を用いた計測を開始する。また、計測部31は、処理部63から、デバイス処理部34での処理にかかる時間の計測を要求されると、デバイス処理部34を介してデバイス10で行われる処理にかかる時間を計測する。このとき、適宜、タイマ40が使用される。通知部32は、計測部31での処理にかかる時間が基準値を超えると、タイムアウトの発生を処理部63に通知する。
図4は、通信装置20のハードウェア構成の例を示す図である。通信装置20は、プロセッサ101、Read Only Memory(ROM)102、Random Access Memory(RAM)103、ネットワーク接続装置104、および、バス105を備える。プロセッサ101は、計測部31、通知部32、更新部33、デバイス処理部34、ファームウェア処理部60、中央処理部25として動作する。RAM103は、記憶部50として動作し、適宜、プロセッサ101の処理に用いられるデータや、プロセッサ101の処理で得られたデータを記憶する。ROM102は、プロセッサ101の動作に使用されるプログラムを格納することができ、また、プロセッサ101が使用するデータ等を格納できる。このため、プロセッサ101は、ROM102に格納されているプログラムを実行することにより、計測部31、通知部32、更新部33、デバイス処理部34、ファームウェア処理部60中央処理部25を実現できる。ネットワーク接続装置104は、送受信部22として動作する。なお、ネットワーク接続装置104は、通信装置20が属するネットワークの数や種類に対応して複数のインタフェース回路を含んでもよいものとする。例えば、通信装置20が基地局として動作しており、端末との無線通信と、無線制御装置3などとの間の有線通信を行うとする。この場合、ネットワーク接続装置104は、端末との間でのパケットの送受信にも使用される。バス105は、プロセッサ101、ROM102、RAM103、ネットワーク接続装置104を相互にデータの入出力が可能になるように接続する。なお、通信装置20中のデバイス10は、ROM102、RAM103、又は、ネットワーク接続装置104のいずれかとして動作するデバイス選択された1つ以上のデバイスとすることができる。
<第1の実施形態>
図5は、記憶部50に格納される情報の例を示す図である。記憶部50は、デバイス処理部34からアクセス可能なデバイス10ごとに、処理時間の計測や制御に使用するための情報を保持している。例えば、デバイス処理部34がCompactFlash(CF)メモリ、Single-Data-Rate Synchronous Dynamic Random Access Memory(SDR SDRAM)、Double-Data-Rate SDRAM(DDR SDAM)にアクセスできるとする。この場合、記憶部50は、図5に示すように、CF、DDR SDRAM、SDR SDRAMのそれぞれの処理に使用するための情報を保持している。以下、アクセスされるデバイス10がCFであり、要求された処理はCFへの4バイト分のデータの書き込みである場合を例として説明する。
CFへの処理に使用されるデータは、図5に示すように、タイマ保守用のデータと、タイマでの計測に使用するデータ(起動タイマ値)を含む。なお、図5では、CFへの処理に使用されるデータについての詳細を示しているが、DDR SDRAMの処理に使用されるデータや、SDR SDRAMの処理に使用されるデータも同様の種類の情報を含んでいるものとする。
タイマ保守用データには、タイマの動作開始日時、タイマ累積起動時間、タイマ累積計測回数、タイマ補正回数が含まれる。タイマの動作開始日時は、タイマ40に最後に電源が投入された日付と時刻の情報である。タイマ累積起動時間は、タイマ40が最後に電源が投入された時刻以降にタイマ40が起動された時間の累積値である。タイマ累積計測回数は、タイマ40を用いてデバイス10へのアクセスを行った回数を示す。また、タイマ補正回数は、タイマ40での基準値として設定されている時間が変更された回数を示す。図5の例では、タイマ40は、2013年12月2日の12:00:00から動作を開始して、300時間の間、稼動している状態である。タイマ40は、2013年12月2日の12:00:00に起動されてから1001回の測定をしており、これまでにタイマ40の基準値が2回補正されている。
起動タイマ値には、規定タイマ値、基準値、デバイスアクセスサイズ、処理種別、タイムアウト回数が含まれる。デバイスアクセスサイズは、デバイス10への処理を行うデータの大きさを示す。処理種別は、デバイス10に要求する処理の種類である。例えば、デバイス10に4バイトのデータが書き込まれる場合は、デバイスアクセスサイズは4バイトであり、処理種別は書き込み処理(ライト)である。基準値は、デバイスアクセスサイズに設定されたサイズのデータについて、デバイス処理部34が処理種別に設定された処理をデバイス10に要求するときに、デバイス10の処理時間として待ち合わせる時間の長さである。例えば、基準値が10μ秒である場合、デバイス処理部34は、CFに4バイトのデータを書き込むときに、書き込みの要求時刻から、書き込みの終了時刻までの待ち時間を10μ秒に設定していることになる。タイムアウト回数は、基準値が更新されてからデバイス10への処理においてタイムアウトが発生した回数を示す。図5に示す例では、基準値が10μ秒に変更されてからタイムアウトは発生していない。
規定タイマ値の最大値は、デバイスアクセスサイズに設定されたサイズのデータについて、処理種別に設定された処理を処理対象のデバイス10に要求する場合に、要求された処理にかかる時間の最大値である。同様に、規定タイマ値の最小値は、デバイスアクセスサイズに設定されたサイズのデータに対して、処理種別に設定された処理をデバイス10に要求した場合に、要求された処理にかかる時間の最小値である。また、規定タイマ値の平均値は、デバイスアクセスサイズに設定されたサイズのデータに対して、処理種別に設定された処理をデバイス10に要求した場合に、処理にかかる時間の平均値である。このため、基準値として、規定タイマ値の最大値以下であり、かつ、規定タイマ値の最小値以上の値が設定される。図5の例では、CFに4バイトのデータを書き込む処理にかかる時間として、8μ秒〜14μ秒が許容されているが、その処理にかかる時間の平均値は11μ秒である。なお、処理にかかる時間が規定タイマ値の最大値を超えると、通知部32は、デバイス10に障害が発生していると判定し、障害の発生を、ファームウェア処理部60に通知する。
図5を参照しながら、記憶部50に含まれている情報の例を示したが、ファームウェア処理部60、ミドルウェア処理部70、アプリケーション処理部80でも、図5に示す情報と同様の情報を用いて処理が行われるものとする。
図6は、第1の実施形態で行われる処理の例を説明するシーケンス図である。以下の例では、ミドルウェア処理部70においてファームウェア処理部60や制御部30で使用される基準値が決定される場合を例として説明する。以下、デバイス10がCFであり、記憶部50は図5に示す情報を保持している場合を例とする。
ファームウェア処理部60中の処理部63は、処理対象のデバイスに対するアクセスの要求を、計測部31に出力する(ステップS1)。このとき、処理部63は、計測部31に書き込み処理を要求した時刻から、デバイス10での書き込みの終了の通知を受けるまでに許容できる時間の基準値を保持している。ここでは、デバイス10に4バイトのデータを書き込むときに処理部63が使用する基準値は14μ秒であるとする。
計測部31は、アクセスの要求をデバイス処理部34に出力すると共に、タイマ40を起動する(ステップS2)。計測部31は、デバイス処理部34が書き込み処理を出力した時刻から、デバイス10での書き込みが終了する時刻までの時間として許容できる時間の長さの基準値を保持している。ここで、デバイス10に4バイトのデータを書き込むときに計測部31が使用する基準値は10μ秒であるとする。デバイス処理部34は、入力された要求に応じて、デバイス10に対して処理を要求する(ステップS3)。デバイス処理部34は、デバイス10に4バイトのデータの書き込みを要求する。デバイス10での書き込みが終わるとデバイス10からデバイス処理部34に書き込み処理の終了が通知される(ステップS4)。計測部31は、書き込み処理の終了がデバイス処理部34に通知されると、タイマ40の値を取得し、デバイス10への書き込み処理にかかった時間とする(ステップS5)。
デバイス10での書き込み処理にかかった時間が基準値を上回っていると、計測部31はデバイス10へのアクセスの際にタイムアウトが発生したと判定する。そこで、計測部31は、記憶部50に記憶されているタイムアウトの回数を0回から1回に変更する。通知部32は、記憶部50においてタイムアウト回数が1回に更新されたことから、デバイス10への処理にかかる時間が長くなったと判定する(ステップS6)。そこで、通知部32は、変化通知メッセージを生成し、更新部62に出力する(ステップS7)。
図7は、変化通知メッセージの例を示す。図7に示す変化通知メッセージは、デバイス、デバイスアクセスサイズ、機能ブロック番号、基準値、処理時間、通知元を含む。デバイスフィールドは、タイムアウトが発生したデバイス10を特定する情報が格納される。デバイスアクセスサイズフィールドには、タイムアウトが発生したときに行われた処理での処理対象となったデータの大きさを示す情報が格納される。機能ブロック番号は、タイムアウトの発生を検知した計測部31が含まれているファンクションブロック21の番号である。なお、ファンクションブロック21には、個々のファンクションブロック21を識別する識別番号(機能ブロック番号)が付されているものとする。また、機能ブロック番号により、処理対象のデバイスと処理の内容の組み合わせが一意に特定されるものとする。図7は、CFへの書き込み処理に使用されたファンクションブロック21の識別番号が「4219」である場合の例を示している。基準値フィールドには、設定されている基準値の値が記録され、処理時間フィールドには、実際の処理にかかった時間が記録される。図7は、CFへの4バイトの情報の書き込みの基準値が10μ秒であるのに対し、実際の処理時間が12μ秒である場合の例を示す。通知元フィールドには、変化通知メッセージの生成元を特定する情報が含まれる。図7の例では、通知元フィールドに、通知部32を特定するための情報が格納される。
更新部62は、変化通知メッセージを取得すると、デバイス10へのアクセスの際に、デバイス処理部34でタイムアウトが発生したことを特定する。更新部62は、基準値の変更がミドルウェア処理部70によって行われることを表わす情報を予め保持しているとする。すると、更新部62は、入力された変化通知メッセージを通知部61に出力する。通知部61は、変化通知メッセージをミドルウェア処理部70中の更新部72に出力する(ステップS8)。
更新部72は、変化通知メッセージを取得すると、タイムアウトが発生したことを認識する。そこで、更新部72は、変化通知メッセージの通知元に対して、取得した情報を通知するために、変化確認メッセージを生成する。変化確認メッセージの例を図8に示す。変化確認メッセージは、機能ブロック番号、基準値、処理時間、通知先を含む。変化確認メッセージ中の機能ブロック番号、基準値、処理時間は、変化通知メッセージ中と同じ値が設定される。さらに、変化確認メッセージ中の通知先には、変化通知メッセージの通知元が設定される。図8は、図7に示す変化通知メッセージを取得したときに、更新部72が通知部32に出力する変化確認メッセージの例である。更新部72は、生成した変化確認メッセージを、処理部63に出力する(ステップS9)。処理部63は、変化確認メッセージの通知先が通知部32であることから、変化確認メッセージを通知部32に出力する(ステップS10)。通知部32は、変化確認メッセージと、通知部32自身が通知した変化通知メッセージ中の情報を比較し、両者が一致すると、タイムアウトの発生をミドルウェア処理部70に通知することができたと判定し、ミドルウェア処理部70からの処理を待つ。
更新部72は、タイムアウトが発生したことを認識すると、ファームウェア処理部60や制御部30において使用される基準値を変更するために、情報の収集を開始する。更新部72は、基準値の更新の際に使用する情報を収集するために、処理時間要求メッセージを生成する。
図9は、処理時間要求メッセージの例を示す。処理時間要求メッセージは、機能ブロック番号、要求種別、要求元、要求先を含む。機能ブロック番号は、変化通知メッセージを生成した通知部32が含まれているファンクションブロック21を識別する番号であり、処理対象のデバイスと処理の内容を一意に特定する。例えば、図9の場合、機能ブロック番号が4219であるので、処理対象のデバイス10がCFであり、CFに対する処理は書き込み処理である。要求種別は、処理時間が要求されている処理の対象のデータの長さを特定する情報である。ここでは、ステップS8で更新部72が取得した変化通知メッセージにより、4バイトのデータの書き込みの際の処理時間が変化したことが通知されたので、処理時間要求メッセージの要求種別も4バイトに設定されるものとする。処理時間要求メッセージには、更新部72が処理時間の計測を要求する任意の数の要求先が含められる。更新部72はデバイス10への書き込み処理の介在先に対して処理時間を要求する。このため、更新部72で生成される処理時間要求メッセージでは、要求先は処理部63とデバイス処理部34になる。更新部72は、図9に示す処理時間要求メッセージを生成すると、生成したメッセージを処理部63に出力する(ステップS11)。
処理部63は、処理時間要求メッセージを取得すると、デバイス10に4バイトのデータを書き込む処理の開始をデバイス処理部34に要求すると共に、処理時間要求メッセージをデバイス処理部34に出力する(ステップS12)。なお、処理部63は、データの書き込みをデバイス処理部34に要求した時刻を記憶するものとする。
デバイス処理部34は、処理時間要求メッセージと4バイトのデータのCFへの書き込み処理の要求を取得すると、タイマ40を起動すると共に、デバイス10への書き込み処理を開始する(ステップS13)。デバイス10への書き込み処理が終わると、デバイス処理部34は、タイマ40の値を取得し、得られた値を処理時間とする。デバイス処理部34は、処理時間が基準値以下であるかを判定し、得られた時間と基準値との比較結果を通知するための処理時間通知メッセージを生成する(ステップS14)。図10のm14は、基準値が10μ秒であるのに対し、処理時間が12μ秒である場合に生成される処理時間通知メッセージの例を示す。処理時間通知メッセージには、処理時間要求メッセージで計測が要求された処理に対応する機能ブロック番号と、要求種別が含まれる。デバイス処理部34は、デバイス10への書き込みにかかった処理時間と、処理時間が基準値を超えているかの判定結果、および、処理時間の通知元がデバイス処理部34であることを示す情報を処理時間通知メッセージに含める。ステップS14の例では、デバイス10への書き込みにかかった処理時間が12μ秒であるのに対し、基準値は10μ秒であるため、判定結果はNGとなる。さらに、処理時間が12μ秒であることも処理時間通知メッセージに含められる。デバイス処理部34は、書き込みの終了を処理部63に通知すると共に、生成した処理時間通知メッセージ(図10のm14)を、処理部63に出力する(ステップS15)。
処理部63は、書き込みの終了が通知された時刻を特定すると、CFに4バイトのデータを書き込む要求をデバイス処理部34に対して行った時刻から、書き込みの終了が通知された時刻までの間を、処理時間として求める。さらに、処理部63は、処理時間が基準値以下であるかを判定し、得られた時間と基準値との判定結果を、デバイス処理部34から取得した処理時間通知メッセージに追加する(ステップS16)。図10のm16は、処理部63で使用している基準値が14μ秒であるのに対し、処理時間が15μ秒である場合に追加される情報を含む処理時間通知メッセージの例を示す。図10のm16中で「処理時間1」の情報が処理部63によって追加される。ステップS16の例では、処理時間の方が基準値より長いため、判定結果はNGとなる。さらに、処理時間が15μ秒であることも処理時間通知メッセージに含められる。処理部63は、処理時間通知メッセージ(図10のm16)を、更新部72に出力する(ステップS17)。
更新部72は、処理時間通知メッセージによって通知された処理時間を用いて、判定結果がNGとなった処理部での処理に使用される新たな基準値を決定する(ステップS18)。
図11は、処理時間の長さの比較例を示す。デバイス処理部34で得られる処理時間は、図11の矢印Taが示す時間であるとする。一方、処理部63で得られる処理時間は、デバイス処理部34と処理部63の間のアクセス時間を含むため、矢印Tbに示すように、デバイス処理部34で得られる処理時間Taよりも長くなる。さらに、処理部73での処理時間には、処理部73と処理部63の間でのアクセス時間も含まれる。このため、処理部73での処理時間は、矢印Tcに示すように、処理部63での処理時間Tbよりも長くなる。更新部72は、Ta<Tb<Tcの順に処理時間が長くなることを前提として、制御部30、ファームウェア処理部60、ミドルウェア処理部70で使用される基準値を決定する。すなわち、更新部72は、デバイス処理部34で使用される基準値を、処理時間Ta以上の値であり、かつ、処理時間Tb未満の値に設定する。同様に、更新部72は、処理部63で使用される基準値を、処理時間Tb以上で処理時間Tc未満の値になるように決定する。なお、更新部72は、処理時間Tcの参考値として、ステップS11での処理時間要求メッセージの送信時刻から、ステップS17の処理時間通知メッセージの受信時刻の間の時間を用いることができるものとする。
図10のm16に示す処理時間通知メッセージが更新部72に届くと、更新部72は、処理時間通知メッセージ中でデバイス処理部34での処理の判定結果がNGとなっていることから、制御部30での基準値の変更を行うために更新値を決定する。図10のm16に示す処理時間通知メッセージを用いて、更新部72は、処理時間Taを12μ秒、処理時間Tbを15μ秒であると特定する。すると、更新部72は、制御部30で使用される基準値の更新値を12μ秒以上で15μ秒未満にする。この例では、制御部30で使用される基準値の更新値は14μ秒に決定されたものとする。
次に、更新部72は、処理時間通知メッセージにおいて、処理部63での処理の判定結果もNGであるため、ファームウェア処理部60での基準値の変更に使用する更新値も決定する。ここで、ステップS11での処理時間要求メッセージの送信時刻から、ステップS17の処理時間通知メッセージの受信時刻の間の時間が20μ秒であるとする。すると、更新部72は、処理時間Tcを20μ秒とした上で、20μ秒より短く、処理時間Tb以上の値を基準値の更新値とする。ここでは、更新部72は、ファームウェア処理部60で使用する基準値の更新値を16μ秒に決定したものとする。
さらに、更新部72は、ミドルウェア処理部70で使用されている基準値を、処理時間Tcの値と比較する。ここで、ミドルウェア処理部70で使用されている基準値が処理時間Tcよりも短いとする。この場合、更新部72は、ミドルウェア処理部70で使用されている基準値を変更せずに処理を終了する。
図12は、基準値通知メッセージの例を示す。基準値通知メッセージは、通知元、機能ブロック番号、要求種別、通知内容を含む。機能ブロック番号は、処理時間が特定されたファンクションブロック21を識別する番号であり、処理対象のデバイスと処理の内容を一意に特定する。要求種別は基準値の更新対象となる処理での処理データのサイズを示す。このため、更新部62などは、図12のメッセージを取得すると、CFに対する4バイトの情報の書き込み処理の際に使用される基準値の更新値が通知されたことを特定できる。通知内容には、通知先、判定結果、通知先が使用している現在の基準値、基準値の更新値が含まれる。なお、図12に示す基準値通知メッセージが使用される場合、更新部72は、予め、現在の設定で使用されている基準値を記憶しているものとする。このため、図12の通知1を用いて、更新部72は、現在の基準値である14μ秒を更新値の16μ秒に変更することを、更新部62に対して要求できる。一方、更新部33に対して、更新部72は、現在の基準値である10μ秒を更新値の14μ秒に変更することを、図12の通知2を用いて要求できる。更新部72は、基準値通知メッセージを生成すると、生成したメッセージを更新部62に出力する(ステップS19)。
更新部62は、基準値通知メッセージ中で、更新部62を通知先とした通知内容に含まれている更新値を、新たな基準値に設定する(ステップS20)。すなわち、図12に示す基準値通知メッセージが更新部62に入力された場合、更新部62は、基準値を14μ秒から16μ秒に変更する。更新部62は、基準値通知メッセージに更新部33宛の通知内容が含まれているので、基準値通知メッセージを更新部33に出力する(ステップS21)。
更新部33も、更新部62と同様に、基準値通知メッセージを用いて基準値を更新する(ステップS22)。このため、図12に示す基準値通知メッセージが更新部33に入力された場合、更新部33は、基準値を10μ秒から14μ秒に変更する。このとき、更新部33は、適宜、記憶部50に含まれている情報を更新する。このため、記憶部50に記憶されているタイムアウト回数は0回に更新される。
更新部33は、設定の変更を行ったことを、基準値通知メッセージの通知元に通知する。図12の基準値通知メッセージが使用された場合、更新部33が更新部72に宛てて通知する設定通知メッセージの例を図13のm23に示す。設定通知メッセージは、機能ブロック番号、要求種別、設定通知を含む。機能ブロック番号と要求種別は、他のメッセージと同様である。設定通知は、通知先、通知元、設定情報、変更前の基準値、基準値の更新値を含む。設定情報は、基準値の設定についての変更の有無を示す。更新部33は、生成したメッセージを、更新部62に出力する(ステップS23)。
更新部62は、更新部33から設定通知メッセージを取得すると、取得したメッセージに、ステップS20で行った設定の変更の内容を通知する情報を追加する。図13のm24のうち、設定通知1は、更新部62が追加した情報の例である。更新部62は、情報を追加した後のメッセージを更新部72に出力する(ステップS24)。更新部72は、通知どおりに設定が行われていることを確認すると、処理を終了する。なお、更新部72は、設定通知メッセージを用いて、現在の基準値を通知元に関連付けて記憶することができる。
以上、図6を参照しながら第1の実施形態で行われる処理の例を説明したが、処理の手順は、実装に応じて変更されうる。例えば、通信装置20の処理能力に応じて、変化確認メッセージや設定通知メッセージの送受信を省略するなどの変更が行われることがあるものとする。
図6を参照しながら説明した処理の例では、ミドルウェア処理部70中の更新部72がファームウェア処理部60や制御部30で使用される基準値を計算したが、基準値の計算は、アプリケーション処理部80で行われても良い。この場合、更新部82が更新部72と同様の処理により、新たな更新値を生成し、通知先に向けて基準値通知メッセージを出力する。
また、図6を参照した例では、一例として、制御部30とファームウェア処理部60でタイムアウトが発生している例を挙げたが、タイムアウトの発生は、制御部30、ファームウェア処理部60、ミドルウェア処理部70、アプリケーション処理部80のうちの任意の1つ以上で発生し得る。ファームウェア処理部60でタイムアウトが発生すると、通知部61がミドルウェア処理部70やアプリケーション処理部80にタイムアウトの発生を通知する。一方、ミドルウェア処理部70でタイムアウトが発生すると、通知部71がアプリケーション処理部80にタイムアウトの発生を通知する。なお、通知部61や通知部71も変化通知メッセージを用いてタイムアウトの発生を通知できるものとする。
さらに、基準値の計算は、通信装置20で行われなくても良い。例えば、図2に示す交換機2やオペレーションセンタ5中の装置が、通信装置20中で用いられる基準値を計算して、得られた値を通信装置20に通知しても良い。異なる装置間で、タイムアウトの発生の通知や新たな基準値の通知などが行われる場合は、装置間で送受信されるパケット中のペイロードに、変化通知メッセージや基準値通知メッセージなどのメッセージが含まれる。なお、パケットのヘッダは、ネットワークで用いられるプロトコルや各装置に割り当てられたアドレスに応じて、適宜、設定されるものとする。例えば、通信装置20が基地局装置である場合、交換機2などの装置が基地局で発生したタイムアウトに応じて、基地局で使用するタイマの基準値を変更できる。このため、第1の実施形態にかかる方法を用いることにより、特定の基地局での輻輳の発生などの環境の変化に対応して、動的に基準値を変更することができる。
図14は、環境の変化に応じて基準値を変更する方法の例を説明する図である。図14の例では、通信装置20a、通信装置20bはいずれも基地局である。なお、図14では、図を見やすくするため、制御部30a、ファームウェア処理部60a、ミドルウェア処理部70a、アプリケーション処理部80aを示す代わりに、ファンクションブロック21aと中央処理部25aを示している。ファンクションブロック21aには、制御部30aとファームウェア処理部60aが含まれており、中央処理部25aには、ミドルウェア処理部70aとアプリケーション処理部80aが含まれている。なお、図14中での通信装置20bの記載についても、通信装置20aと同様である。通信装置20aと通信装置20bは、無線制御装置3に接続され、無線制御装置3は、交換機2に接続されているとする。また、以下の説明では、値t1〜t5について、t1<t2<t3<t4<t5の関係が成り立っているものとする。
時刻Tdにおいて、通信装置20aと通信装置20bのいずれでも、同じサイズのデータに対する同じ処理については、同じ基準値が使用されているとする。図14の例では、通信装置20aと通信装置20bのいずれでも、アプリケーション処理部80で使用される基準値はt1秒であるとする。また、無線制御装置3において、通信装置20aおよび通信装置20bとの間の処理を待ち合わせるときに使用する基準値はt3秒であり、交換機2において、無線制御装置3との間の処理を待ち合わせるときに使用する基準値はt4秒であるとする。
その後、時刻Teでは、通信装置20aが形成するセルを用いて通信する端末数が増加したことにより、通信装置20a中のアプリケーション処理部80aではタイムアウトが発生したとする。一方、通信装置20bへのアクセスに対しては変化がなく、通信装置20bではタイムアウトが発生していないものとする。
すると、交換機2は、通信装置20aに対して、タイムアウトが発生した処理についての処理時間を問合わせる。通信装置20aは、交換機2に対して、処理時間がt2秒であると通知したとする。交換機2は、通信装置20aからの通知に応じて、通信装置20aのアプリケーション処理部80aでの基準値をt2秒に変更することを決定して、通信装置20aに通知したとする。すると、アプリケーション処理部80aでは、基準値をt2秒に設定する。なお、通信装置20aでの基準値がt2秒であっても、無線制御装置3でのタイムアウトは発生しないため、交換機2は、無線制御装置3での基準値を変更していないものとする。
時刻Tfにおいて、さらに、通信装置20aを介した通信が増えたため、アプリケーション処理部80aで使用する基準値がt2秒でもタイムアウトが発生したとする。さらに、通信装置20aは、タイムアウトが発生した処理を行うためには、t3秒かかることも、合わせて交換機2に通知したとする。すると、交換機2は、通信装置20a中のアプリケーション処理部80aで使用する基準値をt2秒からt3秒に変更すると共に、無線制御装置3で使用する基準値についても、t3秒からt4秒に変更する。さらに、交換機2は、無線制御装置3との間の処理の待ち合わせに使用する基準値を、無線制御装置3での基準値の変更に伴って、t4秒からt5秒に変更する。
なお、図14を参照しながら、通信装置20が基地局である場合を例として説明したが、通信装置20は、上位側の装置から基準値の変更値を取得可能な任意の装置にすることができる。例えば、Long Term Evolution(LTE)に適応しているシステムでは、通信装置20は、eNodeBであっても良い。この場合、eNodeBとして動作している通信装置20に対して、Serving-Gateway(S−GW)やPacket Data Network-Gateway(P−GW)が基準値の更新値を通知できる。また、通信装置20がS−GWやP−GWである場合、通信装置20に基準値を通知する上位装置は、Policy and Charging Rules Function(PCRF)などである。なお、図14の例では、通信装置20中のアプリケーション処理部80でタイムアウトが発生した場合を例としたが、通信装置20においてアプリケーション処理部80以外でタイムアウトが発生しても、同様に処理が行われる。なお、この明細書中では、通信装置20での処理を管理する装置や、ユーザの端末と通信装置20の間の経路よりもユーザの端末に至るまでの経路が長い装置のことを「上位装置」と記載するものとする。また、ある装置から更新値を取得する装置を、その装置に対する「下位装置」と表現している。
このように、第1の実施形態にかかるシステムでは、特定の装置へのアクセスの集中に伴って、処理が集中している装置を含む通信経路では、基準値を大きくして、タイムアウトが発生しにくくなるように、上位側の装置が調整を行うことができる。このため、基地局などの装置では、その装置の環境に応じて、適切な値にタイマの基準値を調整することができる。
<第2の実施形態>
第2の実施形態では、複数回の処理を行ったときの処理時間の平均値が基準値を超えるまで基準値の変更を待つ場合の実施形態について説明する。この場合、制御部30は、タイムアウトを検出しても、タイムアウトの回数が所定の回数に達しないと、変化通知メッセージを生成しない。
図15に、第2の実施形態にかかる通信装置が保持する情報の例を示す。第2の実施形態においても、タイマ保守用のデータは、図5を参照しながら説明した情報と同様である。なお、図15の例では、タイマ保守用のデータに様々なデバイスアクセスサイズに対応した処理時間が含まれているが、タイマ保守用データに含まれる処理時間は1つであっても良い。
複数回のタイムアウト発生まで基準値の変更を待つ場合、起動タイマ値には、平均タイマ値、タイマ起動回数、実測最大値、実測最小値が含まれる。さらに、図5と同様に、規定タイマ値、基準値、デバイスアクセスサイズ、処理種別、タイムアウト回数も、起動タイマ値に含まれる。平均タイマ値は、同じデバイスアクセスサイズのデータについて同じ処理を行ったときにかかる処理時間の平均値である。タイマ起動回数は、処理のためにタイマが起動された回数を表わす。実測最大値は、最後に基準値が変更されてから現在までの間に、デバイスアクセスサイズや処理種別で特定される処理を行ったときにかかった時間の最大値を表わす。一方、実測最小値は、最後に基準値が変更されてから現在までの間に、デバイスアクセスサイズや処理種別で特定される処理を行ったときにかかった時間の最小値を表わす。
第2の実施形態では、デバイス処理部34は、基準値と平均タイマ値を比較し、平均タイマ値が基準値を上回ると、変化通知メッセージを生成する。変化通知メッセージが生成された後の処理は、第1の実施形態と同様である。なお、ファームウェア処理部60、ミドルウェア処理部70、アプリケーション処理部80においても、図15に示す情報を保持することにより、基準値と平均タイマ値を比較することもできる。この場合、通知部61、通知部71、または、通知部81は、基準値と平均タイマ値の比較結果により、変化通知メッセージを生成するかを決定する。
図15には、グルーピング情報が含まれているが、グルーピング情報はオプションである。デバイス処理部34が1度にデバイス10に対して処理できるデータサイズよりもデバイスアクセスサイズが大きい場合、デバイス処理部34は、処理対象のデータを、複数のグループに分割して処理を行う。この場合、デバイス処理部34は、個々のグループについて、グルーピング情報として、デバイスアクセスサイズ、処理時間、処理種別などの情報を記憶部50に記憶する。デバイス処理部34は、他のデバイスアクセスサイズの処理の際に生成されたグルーピング情報のうちで、デバイスアクセスサイズと処理種別が同じグループについて得られた処理時間を、平均タイマ値の算出に用いても良い。例えば、起動タイマ値2に含まれているデバイスアクセスサイズが10バイトであり、起動タイマ値2の生成では、10バイトのデータから4バイトのグループA、グループBと、2バイトのグループCが生成されたとする。この場合、起動タイマ値2において、デバイスアクセスサイズが10バイトのデータの他に、グループA、Bを用いたときの4バイトの処理時間が得られている。そこで、デバイス処理部34は、デバイスアクセスサイズが4バイトの起動タイマ値1の平均タイマ値の算出の際に、グループA、Bを用いたときの処理時間も用いることができる。
第2の実施形態では、タイムアウトが複数回発生してから基準値を変更することになるので、誤動作などにより1回タイムアウトが突発的に発生しても、基準値は変更されない。このため、第2の実施形態では、タイムアウトの通知の信頼性が第1の実施形態に比べて高くなっているといえる。
<第3の実施形態>
第3の実施形態では、上位の装置から通知された値を、通信装置20自身が、設定可能な値であるかを確認する場合について説明する。通信装置20は、基準値として設定可能な値は基準値に設定するが、基準値として設定できない値が通知された場合は、通知された基準値を設定せずに、上位装置に修正値を求める。なお、上位装置は、修正値を通知する際には、通知した値を強制的に通信装置20に設定させるためのフラグをメッセージ中に含めるものとする。以下の説明では、通知した値を強制的に通信装置20に設定させるためのフラグを「強制設定フラグ」と記載する。
図16は、通信装置での確認処理の例を説明するフローチャートである。更新部33は、基準値の変更が通知されるまで待機する(ステップS31でNo)。基準値の変更が通知されると、更新部33は、通知されたメッセージに強制設定フラグが含まれているかを判定する(ステップS31でYes、ステップS32)。強制設定フラグが含まれていない場合、更新部33は、通知された基準値が設定可能な値であるかを判定する(ステップS32でNo、ステップS33)。このとき、更新部33は、通知された基準値が、規定タイマ値の最大値以下であり、かつ、規定タイマ値の最小値以上であるかを判定する。通知された基準値が、規定タイマ値の最大値以下であり、かつ、規定タイマ値の最小値以上である場合、更新部33は、通知された値を新たな基準値に設定して処理を終了する(ステップS33でYes、ステップS34)。一方、通知された基準値が、規定タイマ値の最小値から規定タイマ値の最大値までの範囲に含まれない場合、更新部33は、更新値の通知元に、エラーを通知する(ステップS33でNo、ステップS35)。その後、ステップS31以降の処理が繰り返される。なお、ステップS32で入力されたメッセージに強制設定フラグが含まれていると判定した場合、更新部33は、通知された値の妥当性を判定せずに、通知された値を基準値に設定する(ステップS32でYes、ステップS34)。
なお、図16を参照しながら更新部33の処理について説明したが、処理部63で使用される更新値が通知された場合、更新部62は、図16と同様の処理を行うものとする。また、更新部72についても、処理部73で使用する基準値の更新値が通知されると図16と同様の処理を行うことができる。
図17は、タイマ値の通知方法の例を説明するシーケンス図である。図17では、更新部72からタイマ値の更新が通知された後、デバイス処理部34で更新値についてのエラーが検出されたものとする。更新部72は、制御部30について通知した更新値が設定できない値であると判定された場合、修正値を決定する。更新部72は、修正値を通知するために、システム情報通知メッセージを生成し、更新部62に出力する(ステップS41)。システム情報通知メッセージの情報要素は、基準値通知メッセージ(図12)と同じ情報に加え、強制設定フラグを含むものとする。更新部62は、処理部63で使用する基準値の更新値が含まれていない場合、システム情報通知メッセージを更新部33に出力する(ステップS42)。更新部33は、システム情報通知メッセージを取得すると、システム情報通知メッセージに含まれている更新値を基準値に設定する(ステップS43)。その後、更新部33は、システム情報確認メッセージを更新部72に向けて出力する(ステップS44)。システム情報確認メッセージの情報要素は、設定通知メッセージ(図13)と同様である。更新部62は、更新部33から入力されたシステム情報確認メッセージを更新部72に出力する(ステップS45)。
同様に、通信装置20などの下位装置において、上位装置から通知された更新値が不適切である場合は、異なる更新値を上位装置に要求することができる。このため、誤った設定が下位の装置で行われることによる誤動作を防止することができる。さらに、下位装置での誤動作が原因でエラーが発生しているため、システム全体の設定を初期値に戻したいときなどは、システム情報通知メッセージを使用することにより、強制的に基準値を特定の値に設定することができる。
<第4の実施形態>
第4の実施形態では、第3の実施形態と同様に、通知元から通知された更新値が不適切である場合、通知先では、通知元から通知された値を設定しない。しかし、第4の実施形態では、通知先が通知元にエラーを通知せず、通知先において、設定可能な値を新たな基準値に設定する。
図18は、タイマ値の通知方法の例を説明するシーケンス図である。図18は、更新部33が更新部72から通知された更新値が不適切であると判定した場合の処理例を示す。更新部33は、更新部72から通知された更新値が不適切であることをデバイス処理部34に通知する。すると、デバイス処理部34は、計測部31にタイマ40を起動させる(ステップS51)。さらに、デバイス処理部34は、タイムアウトが発生した処理を、再度、デバイス10に対して要求することにより、計測部31と共に、処理にかかる処理時間を求める(ステップS52)。
更新部33は、デバイス処理部34と計測部31の処理により得られた処理時間以上の値を、新たな基準値に設定する(ステップS53)。例えば、デバイス処理部34は、デバイス処理部34と計測部31の処理により得られた処理時間と、デバイス10での規定タイマ値の最大値との中間の値を、新たな基準値に設定することができる。
更新部33は、設定通知メッセージを更新部62に通知することにより、基準値の変更を通知する(ステップS54)。更新部62は取得した設定通知メッセージを更新部72に出力することにより、更新部33での設定の変更を更新部72に通知する(ステップS55)。更新部72は、設定通知メッセージを取得すると、設定通知メッセージの内容を確認したことを示す応答メッセージを更新部62に出力する(ステップS56)。以下、設定通知メッセージの内容を確認したことを示す応答メッセージを「設定確認メッセージ」と記載する。更新部62は、取得した設定確認メッセージを更新部33に出力することにより、更新部72からの応答を更新部33に通知する(ステップS57)。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
以上の例で説明した各メッセージの情報要素は、実装に応じて変更される場合がある。例えば、変化通知メッセージ(図7)は、変化通知メッセージの通知元と、タイムアウトの発生を表わす値を含み、処理時間を含まないように変形されても良い。
第1の実施形態と第2の実施形態は、第3の実施形態または第4の実施形態と組み合わせて実現されても良い。
さらに、制御部30などで使用する基準値の初期値も、更新部72から通知されても良い。この場合に行われる処理の例を表わすシーケンス図を、図19に示す。ファームウェア処理部60が起動して、デバイス10や制御部30の起動を確認すると、更新部62は、更新部72に立ち上がり通知を出力する(ステップS61)。立ち上がり通知の情報要素は、立ち上がり通知であることを特定するための識別子と、通知元が更新部62であることを示す情報の組み合わせである。更新部72は、立ち上がり通知に応答して、立ち上がり確認を更新部62に出力する(ステップS62)。立ち上がり確認の情報要素は、立ち上がり確認であることを特定するための識別子と、通知元が更新部72であることを示す情報の組み合わせである。
立ち上がり確認を更新部72から取得すると、更新部62は、システム情報要求を更新部72に出力する(ステップS63)。システム情報要求の情報要素は、システム情報要求を特定するための識別子と、通知元が更新部62であることを示す情報の組み合わせである。更新部72は、システム情報要求に対する応答として、システム情報通知メッセージを更新部62に出力する(ステップS64)。ここで、システム情報通知メッセージに含まれる情報要素は、第3の実施形態で説明したとおりである。更新部62は、システム情報通知メッセージにおいて更新部62に対応付けられた基準値を設定する。さらに、更新部62は、更新部33にシステム情報通知メッセージを出力する(ステップS65)。その後、第3の実施形態と同様に、システム情報通知メッセージに含まれている情報が強制的に、基準値として設定される(ステップS66)。更新部33は、システム情報確認メッセージを更新部72に向けて出力する(ステップS67)。
図19を用いて述べたように、基準値の初期設定も更新部72から通知される場合、通信装置20の初期化の際に基準値を設定し直すことができる。このため、デバイス10の交換などが行われた場合に、適切な基準値を通信装置20への電源の投入と共に通知することができる。なお、図19を参照しながら、ミドルウェア処理部70から初期値が制御部30などに通知される場合を例として説明したが、初期値は、アプリケーション処理部80から通知されても良い。また、通信装置20を管理する無線制御装置3や交換機2などの他の装置から通信装置20に初期値が通知されても良いものとする。