(57)【要約】【課題】受信バッファの枯渇を防止することができる伝送装置および伝送方法を提供すること。【解決手段】バッファメモリの使用率を定期的に算出して、算出した使用率を揮発性メモリに蓄積し、蓄積した使用率に基づいて予測使用率を算出し、算出した予測使用率が危険閾値より大きい場合に、受信バッファをバッファプールに追加し、予測した使用率が所定の安全閾値より小さい場合に、追加した受信バッファをバッファメモリから削除する。【選択図】図３
2010268321.tif 000002
【特許請求の範囲】
【請求項１】
受信パケットを記憶する受信バッファを複数有するバッファメモリと、
パケットを受信するたびに前記バッファメモリの使用率を算出する算出部と、
所定の監視周期が経過するたびに、前記算出部によって算出された使用率に基づいて、前記バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて前記バッファメモリにおける将来の使用率である予測使用率を予測する予測部と、
前記予測部によって予測された予測使用率が所定の危険閾値より大きい場合に、前記バッファメモリに受信バッファを追加するメモリ管理部と
を備えたことを特徴とする伝送装置。
【請求項２】
前記バッファメモリは、サイズの異なる複数種類の受信バッファを有し、
前記算出部は、受信バッファの種類ごとに使用率を算出し、
前記予測部は、前記算出部によって算出された使用率に基づいて、受信バッファの種類ごとに予測使用率を予測し、
前記メモリ管理部は、前記予測部によって予測された予測使用率が所定の危険閾値より大きい受信バッファの種類が存在する場合に、該受信バッファの種類に対応するサイズの受信バッファを前記バッファメモリに追加することを特徴とする請求項１に記載の伝送装置。
【請求項３】
前記算出部は、受信バッファの各種類に対応する使用率のうち、最も高い使用率である最大使用率が大きいほど前記監視周期を小さい値に設定し、前記最大使用率が小さいほど前記監視周期を大きい値に設定し、
前記予測部は、前記算出部によって設定された監視周期が経過するたびに、受信バッファの種類ごとに予測使用率を予測することを特徴とする請求項２に記載の伝送装置。
【請求項４】
前記算出部は、前記バッファメモリの使用率の増加率が所定の増加率閾値よりも大きい場合に、短期的に使用率が増加したことを示す短期増加フラグを設定し、
前記予測部は、前記算出部によって短期増加フラグが設定され、かつ、前記予測部によって予測された予測使用率が所定の安全閾値より小さい受信バッファの種類が存在する場合に、該受信バッファの種類に対応するサイズの受信バッファの一部を前記バッファメモリから削除することを特徴とする請求項３に記載の伝送装置。
【請求項５】
前記メモリ管理部によって更新された前記バッファメモリにおける受信バッファの種類と、受信バッファの個数との組合せパタンであるバッファパタンを記憶するバッファパタン記憶部と、
当該の伝送装置が起動する場合に、前記バッファパタン記憶部に記憶されているバッファパタンに基づいて、前記バッファメモリに受信バッファを生成する初期化部と
をさらに備えたことを特徴とする請求項２〜４のいずれか一つに記載の伝送装置。
【請求項６】
パケットを伝送する伝送装置による伝送方法であって、
前記伝送装置が、
パケットを受信するたびに、受信パケットを記憶する受信バッファを複数有するバッファメモリの使用率を算出する算出ステップと、
所定の監視周期が経過するたびに、前記算出ステップによって算出された使用率に基づいて、前記バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて前記バッファメモリにおける将来の使用率である予測使用率を予測する予測ステップと、
前記予測ステップによって予測された予測使用率が所定の危険閾値より大きい場合に、前記バッファメモリに受信バッファを追加するメモリ管理ステップと
を含んだことを特徴とする伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送装置および伝送方法に関する。
【背景技術】
【０００２】
従来、例えば、ＴＣＰ／ＩＰ（Transmission  Control  Protocol／Internet  Protocol）のようなネットワークプロトコルを使用するシステムでは、任意の装置から受信したパケットを他の送信先装置へ伝送する伝送装置が用いられる。
【０００３】
このような伝送装置は、受信パケットを格納するためのバッファメモリを有し、パケットを受信するたびに、受信パケットをバッファメモリに格納するとともに、送信先装置へ受信パケットを送信する。そして、伝送装置は、送信先装置からパケットの受信が完了した旨の通知を受信した場合に、パケットが格納されているバッファメモリを解放する。
【０００４】
ここで、図１７および図１８を用いて、従来の伝送装置によるバッファメモリの管理方式について説明する。図１７および図１８は、従来の伝送装置の構成例を示す図である。図１７に示すように、従来の伝送装置９１０は、バッファプール９１１と、Ｅｔｈｅｒ  ＨＤ（Ethernet（登録商標）  Hard）９１２と、Ｅｔｈｅｒドライバ９１３と、ネットワークドライバ９１４と、ネットワークプロトコル９１５とを有する。
【０００５】
バッファプール９１１は、複数の受信バッファを有するバッファメモリである。図１７に示した例において、バッファプール９１１は、サイズが２０４８［Ｂｙｔｅ］である受信バッファを複数個有する。このようなバッファプール９１１の構成は、システム起動時に、伝送装置９１０によって決定される。例えば、図１７に示した例において、伝送装置９１０は、起動時に、２０４８［Ｂｙｔｅ］の受信バッファを３０００個生成することにより、バッファプール９１１を構築する。
【０００６】
また、図１７に示した例において、Ｅｔｈｅｒ  ＨＤ９１２は、外部装置からパケットを受信する。Ｅｔｈｅｒドライバ９１３は、Ｅｔｈｅｒ  ＨＤ９１２によってパケットが受信された場合に、ネットワークドライバ９１４を起動し、受信パケットをネットワークドライバ９１４へ送信する。ネットワークドライバ９１４は、バッファプール９１１から受信バッファを捕捉して、捕捉した受信バッファに受信パケットを格納する。そして、ネットワークドライバ９１４は、受信パケットを格納した受信バッファをネットワークプロトコル９１５へ通知する。ネットワークプロトコル９１５は、所定の通信規格に則って伝送処理を行う。
【０００７】
続いて、図１８に示した従来の伝送装置９２０について説明する。なお、ここでは、図１７に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。図１８に示すように、従来の伝送装置９２０は、バッファプール９２１を有する。
【０００８】
図１８に示した例において、バッファプール９２１は、サイズの異なる複数種類の受信バッファを有する。具体的には、バッファプール９２１は、サイズが２０４８［Ｂｙｔｅ］である受信バッファと、サイズが１０２４［Ｂｙｔｅ］である受信バッファと、サイズが５１２［Ｂｙｔｅ］である受信バッファとを有する。すなわち、図１８に示した従来の伝送装置９２０は、起動時に、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファを生成することにより、バッファプール９２１を構築する。
【０００９】
このような構成の下、図１８に示したネットワークドライバ９２４は、受信パケットのサイズが５１２［Ｂｙｔｅ］以下であれば、５１２［Ｂｙｔｅ］の受信バッファに受信パケットを格納する。また、ネットワークドライバ９２４は、受信パケットのサイズが５１２［Ｂｙｔｅ］より大きく、１０２４［Ｂｙｔｅ］以下であれば、１０２４［Ｂｙｔｅ］の受信バッファに受信パケットを格納する。また、ネットワークドライバ９２４は、受信パケットのサイズが１０２４［Ｂｙｔｅ］より大きく、２０４８［Ｂｙｔｅ］以下であれば、２０４８［Ｂｙｔｅ］の受信バッファに受信パケットを格納する。
【００１０】
なお、近年では、受信パケットサイズの統計データを算定して、算定した統計データに基づいて、起動時に生成したバッファメモリ領域内で受信バッファの個数を動的に変更する技術が知られている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−８４１７９号公報
【特許文献２】特開平８−６５３５３号公報
【特許文献３】特開昭６３−１５８９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来技術には、受信バッファが枯渇するおそれがあるという問題があった。具体的には、図１７に示した伝送装置９１０のように、バッファプール９２１を同一サイズの受信バッファにより構築すると、小さいサイズのパケットがバーストした場合、メモリ容量としては余裕があるにも関わらず受信バッファが枯渇してしまう場合がある。
【００１３】
例えば、図１７に示した伝送装置９１０が、２０４８［Ｂｙｔｅ］の受信バッファを３０００個有しているものとする。このような状態において、伝送装置９１０は、１０［Ｂｙｔｅ］のパケットを受信した場合に、２０４８［Ｂｙｔｅ］の受信バッファに受信パケットを格納する。このとき、受信パケットが格納された受信バッファのうち、２０３８［Ｂｙｔｅ］のメモリ領域は不使用領域となる。すなわち、上記例において、伝送装置９１０が、例えば、１０［Ｂｙｔｅ］のパケットを連続して３０００個受信すると、全ての受信バッファが用いられてしまうので、受信バッファは枯渇してしまう。
【００１４】
また、図１８に示した伝送装置９２０のように、複数種類の受信バッファを用いる場合、バッファメモリは効率良く用いられるため、図１７に示した例と比較すると受信バッファの枯渇は発生しにくいとも考えられる。しかし、どのようなサイズのパケットのバーストが発生するかは動的に刻々と変化するため、最適な受信バッファの個数を予測することは困難である。すなわち、システム起動における受信バッファの個数が最適であるとは限らない。このため、図１８に示した伝送装置９２０を用いても、受信バッファの枯渇が発生するおそれがある。
【００１５】
また、上述した受信バッファの個数を動的に変更する技術を用いると、サイズの異なる複数種類のパケットが同時にバーストした場合に、受信バッファの枯渇が発生するおそれがある。例えば、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファを有する場合において、複数種類のパケットが同時にバーストしたものとする。かかる場合、上記従来技術を用いて受信バッファを再構築しても受信バッファが枯渇するという問題を解消することができない。
【００１６】
開示の技術は、上記に鑑みてなされたものであって、受信バッファの枯渇を防止することができる伝送装置および伝送方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示する伝送装置は、一つの態様において、受信パケットを記憶する受信バッファを複数有するバッファメモリと、パケットを受信するたびに前記バッファメモリの使用率を算出する算出部と、所定の監視周期が経過するたびに、前記算出部によって算出された使用率に基づいて、前記バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて前記バッファメモリにおける将来の使用率である予測使用率を予測する予測部と、前記予測部によって予測された予測使用率が所定の危険閾値より大きい場合に、前記バッファメモリに受信バッファを追加するメモリ管理部とを備える。
【発明の効果】
【００１８】
本願の開示する伝送装置の一つの態様によれば、受信バッファの枯渇を防止することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、使用率が急激に高くなる状況を説明するための図である。
【図２】図２は、使用率が緩やかに高くなる状況を説明するための図である。
【図３】図３は、実施例１に係る伝送装置の構成例を示す図である。
【図４】図４は、監視データの一例を示す図である。
【図５】図５は、監視周期データおよび増加フラグの一例を示す図である。
【図６】図６は、最適パタンデータの一例を示す図である。
【図７】図７は、起動時における伝送装置の構成例を示す図である。
【図８】図８は、実施例１に係る伝送装置によるパケット受信処理手順を示すフローチャートである。
【図９】図９は、実施例１におけるスケジューリング部によるスケジューリング処理手順を示すフローチャートである。
【図１０】図１０は、実施例１におけるバッファプール制御部によるバッファプール制御処理手順を示すフローチャートである。
【図１１】図１１は、実施例１における最適バッファパタン予測部による短期用パタン計算処理手順を示すフローチャートである。
【図１２】図１２は、実施例１における最適バッファパタン予測部による長期用パタン計算処理手順を示すフローチャートである。
【図１３】図１３は、実施例１における最適バッファパタン予測部による追加用予測処理手順を示すフローチャートである。
【図１４】図１４は、実施例１における最適バッファパタン予測部による削除用予測処理手順を示すフローチャートである。
【図１５】図１５は、実施例１に係る伝送装置による起動処理手順を示すフローチャートである。
【図１６】図１６は、追加処理および削除処理を同時に行う場合における最適バッファパタン予測部による短期用パタン計算処理手順を示すフローチャートである。
【図１７】図１７は、従来の伝送装置の構成例を示す図である。
【図１８】図１８は、従来の伝送装置の構成例を示す図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する伝送装置および伝送方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本願の開示する伝送装置および伝送方法が限定されるものではない。以下の実施例に示す伝送装置は、例えば、基地局や、ルータなどに適用することができる。
【実施例１】
【００２１】
まず、実施例１に係る伝送装置１００について説明する。実施例１に係る伝送装置１００は、パケットを受信するたびにバッファメモリの使用率を算出する。そして、伝送装置１００は、所定の監視周期が経過するたびに、算出した使用率に基づいて、バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて将来の使用率を予測する。そして、伝送装置１００は、予測した使用率が所定の危険閾値より大きい場合に、メモリ内のヒープ領域やリザーブ領域などの空き領域を受信バッファとして確保し、確保した受信バッファをバッファメモリに追加する。また、伝送装置１００は、予測した使用率が所定の安全閾値より小さい場合に、追加した受信バッファをバッファメモリから削除して、ヒープ領域やリザーブ領域に解放する。
【００２２】
これにより、実施例１に係る伝送装置１００は、システム稼働中においても、刻々と変化するパケットの受信状況に応じて、受信バッファを動的に生成することができる。その結果、実施例１に係る伝送装置１００は、受信バッファの枯渇を防止することができる。
【００２３】
また、実施例１に係る伝送装置１００は、使用率に応じて、上述した監視周期を変動させる。具体的には、伝送装置１００は、受信バッファの各種類に対応する使用率のうち、最も高い使用率（以下、「最大使用率」と言う）が大きいほど監視周期を小さい値にし、最大使用率が小さいほど監視周期を大きい値にする。
【００２４】
このため、伝送装置１００は、使用率が高い場合に、短い監視周期でバッファプールを監視するので、受信バッファの枯渇に対して即座に対応することができる。また、伝送装置１００は、使用率が低い場合に、長い監視周期でバッファプールを監視するので、監視負荷を低減することができる。
【００２５】
また、実施例１に係る伝送装置１００は、使用率が短時間で急激に増加したか否かを判定して、受信バッファの削除処理を行うか否かを決定する。具体的には、伝送装置１００は、使用率が急激に増加したために受信バッファを追加した場合、その後に、使用率が低下したならば受信バッファを削除する。一方、伝送装置１００は、使用率が長時間にわたって徐々に増加したために受信バッファを追加した場合、その後に受信バッファを削除しない。
【００２６】
このように削除処理を行うか否かを判断する理由について、図１及び図２を用いて説明する。図１は、使用率が急激に高くなる状況を説明するための図である。また、図２は、使用率が緩やかに高くなる状況を説明するための図である。なお、図１および図２において、縦軸はバッファメモリの使用率を示し、横軸は、時間経過を示す。
【００２７】
図１に示した例では、まず、最初に使用率が短時間で急激に増加している。その後、使用率は徐々に低くなっていき、所定の値に戻っている。このような状況は、一般に、災害や、祭りなどのイベントなどが行われる場合に発生することが考えられる。したがって、図１に示した例のように、使用率が短時間で急激に増加する場合、一般に、使用率は徐々に低くなっていく。そこで、実施例１に係る伝送装置１００は、図１に示した例のように、使用率が短時間で急激に増加する場合、使用率増加時に受信バッファをバッファプールに追加し、使用率低下時にバッファプールから受信バッファを削除する処理を行う。すなわち、伝送装置１００は、受信バッファの枯渇が発生する可能性がある時間帯のみ、受信バッファをバッファプールに追加する。
【００２８】
一方、図２に示した例では、使用率が緩やかに増加している。そして、その後は、使用率が低下することなく、所定の値にとどまっている。このような状況は、一般に、人口増加時などに発生することが考えられる。したがって、図２に示した例のように、使用率が徐々に増加する場合、一般に、使用率はその後に低くなっていくケースはほとんどない。そこで、実施例１に係る伝送装置１００は、図２に示した例のように、使用率が徐々に増加する場合、使用率増加時に受信バッファをバッファプールに追加するが、バッファプールから受信バッファを削除する処理は行わない。
【００２９】
以下に、上述した伝送装置１００について詳細に説明する。
【００３０】
［実施例１に係る伝送装置の構成］
次に、図３を用いて、実施例１に係る伝送装置１００の構成について説明する。図３は、実施例１に係る伝送装置１００の構成例を示す図である。図３に示すように、伝送装置１００は、Ｅｔｈｅｒ  ＨＤ１１１と、Ｅｔｈｅｒドライバ１１２と、ネットワークドライバ１２０と、ネットワークプロトコル１３０と、バッファプール１４０と、使用率算出部１５０と、揮発性メモリ１６０と、ＣＰＵ１７１と、不揮発性メモリ１７３と、Ｔｉｍｅｒ１７２と、ＯＳ１８０と、バッファプール制御部１９１と、最適バッファパタン予測部１９２とを有する。
【００３１】
Ｅｔｈｅｒ  ＨＤ１１１は、外部装置からパケットを受信するインタフェースである。Ｅｔｈｅｒドライバ１１２は、Ｅｔｈｅｒ  ＨＤ１１１によってパケットが受信された場合に、ネットワークドライバ１２０を起動し、受信パケットをネットワークドライバ１２０へ送信する。
【００３２】
ネットワークドライバ１２０は、バッファプール１４０から受信バッファを捕捉して、Ｅｔｈｅｒドライバ１１２から受け付けた受信パケットを、捕捉した受信バッファに格納するとともに、使用率算出部１５０を起動する。このとき、ネットワークドライバ１２０は、受信パケットのサイズに基づいて、捕捉する受信バッファを決定する。例えば、ネットワークドライバ１２０は、１８００［Ｂｙｔｅ］のパケットを受信した場合、２０４８［Ｂｙｔｅ］の受信バッファを捕捉して、捕捉した受信バッファに受信パケットを格納する。
【００３３】
また、ネットワークドライバ１２０は、受信パケットを格納した受信バッファをネットワークプロトコル１３０へ通知する。ネットワークプロトコル１３０は、所定の通信規格に則って伝送処理を行う。
【００３４】
バッファプール１４０は、サイズの異なる複数種類の受信バッファを有する。図３に示した例において、バッファプール１４０は、サイズが２０４８［Ｂｙｔｅ］である受信バッファと、サイズが１０２４［Ｂｙｔｅ］である受信バッファと、サイズが５１２［Ｂｙｔｅ］である受信バッファとを有する。
【００３５】
なお、図３には図示することを省略したが、伝送装置１００は、バッファプール１４０の他に、ヒープ領域やリザーブ領域などに用いるメモリを有する。このようなヒープ領域およびリザーブ領域は、コンパイラやリンカによって割り当てられる領域であり、主にプログラムが動的に可変長のメモリ領域を要求する場合に用いられる。すなわち、ヒープ領域およびリザーブ領域は、ＯＳ（Operating  System）やアプリケーションソフトなどのプログラムによって自由に確保される空き領域である。
【００３６】
使用率算出部１５０は、ネットワークドライバ１２０によって受信パケットがバッファプール１４０に格納されるたびに、バッファプール１４０の使用率、および、監視周期などを算出する。以下に、使用率算出部１５０の処理について具体的に説明する。
【００３７】
使用率算出部１５０は、受信パケットがバッファプール１４０に格納されるたびに、受信バッファの種類ごとに、受信パケットが格納されている受信バッファの個数を、受信バッファの総数で除算することにより、受信バッファの使用率を算出する。
【００３８】
例えば、バッファプール１４０が、２０４８［Ｂｙｔｅ］の受信バッファを１００個有しているものとする。また、２０４８［Ｂｙｔｅ］の受信バッファのうち、２０個の受信バッファに受信パケットが格納されているものとする。かかる場合、使用率算出部１５０は、受信パケットが格納されている受信バッファの個数「２０」を、受信バッファの総数「１００」で除算することにより、２０４８［Ｂｙｔｅ］の受信バッファの使用率として、「２０％」を算出する。同様に、使用率算出部１５０は、１０２４［Ｂｙｔｅ］および５１２［Ｂｙｔｅ］の受信バッファについても使用率を算出する。
【００３９】
そして、使用率算出部１５０は、算出した使用率を揮発性メモリ１６０に記憶させる。このとき、使用率算出部１５０は、パケットを受信した時刻に対応付けて、受信バッファの種類ごとに使用率を揮発性メモリ１６０に記憶させる。なお、以下では、使用率算出部１５０によって揮発性メモリ１６０に記憶される使用率の情報を「監視データ」と表記するものとする。
【００４０】
また、使用率算出部１５０は、使用率を算出した後に、受信バッファの種類ごとに算出した各使用率から最大使用率を抽出して、抽出した最大使用率に基づいて監視周期を決定する。具体的には、使用率算出部１５０は、最大使用率が大きいほど監視周期を小さい値にし、最大使用率が小さいほど監視周期を大きい値にすることを決定し、決定した監視周期を不揮発性メモリ１７３に記憶させる。なお、以下では、使用率算出部１５０によって不揮発性メモリ１７３に記憶される監視周期を「監視周期データ」と表記するものとする。
【００４１】
例えば、使用率算出部１５０が、最大使用率が「３０％」である場合、監視周期を「６時間」に決定し、最大使用率が「５０％」である場合、監視周期を「１時間」に決定し、最大使用率が「９０％」である場合、監視周期を「３分」に決定するものとする。また、ここでは、２０４８［Ｂｙｔｅ］の受信バッファの使用率が「３０％」であり、１０２４［Ｂｙｔｅ］の受信バッファの使用率が「９０％」であり、５１２［Ｂｙｔｅ］の受信バッファの使用率が「１０％」であるものとする。
【００４２】
かかる場合、使用率算出部１５０は、最大使用率として、「９０％」を抽出する。そして、使用率算出部１５０は、抽出した最大使用率が「９０％」であるので、監視周期を「３分」にすることを決定する。
【００４３】
また、使用率算出部１５０は、使用率を算出した後に、受信バッファの種類ごとに、使用率の増加率を算出する。続いて、使用率算出部１５０は、受信バッファの種類ごとに算出した各増加率から、最も高い増加率（以下、「最大増加率」と言う）を抽出する。そして、使用率算出部１５０は、抽出した最大増加率が所定の増加率閾値よりも大きい場合に、短時間で使用率が増加したことを示す短期増加フラグを、不揮発性メモリ１７３に記憶させる。一方、使用率算出部１５０は、最大増加率が増加率閾値以下である場合に、長時間にわたって使用率が徐々に増加したことを示す長期増加フラグを、不揮発性メモリ１７３に記憶させる。なお、以下では、使用率算出部１５０によって不揮発性メモリ１７３に記憶される長期増加フラグまたは短期増加フラグを「増加フラグ」と表記するものとする。
【００４４】
揮発性メモリ１６０は、上述した監視データを記憶する。図４に、監視データの一例を示す。図４に示すように、監視データは、パケットを受信した時刻に対応付けて、受信バッファの種類ごとに使用率を記憶する。
【００４５】
図４に示した例は、時刻「１０時００分００秒」において、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファの使用率が全て「１０％」であったことを示している。また、図４に示した例は、時刻「１０時１０分００秒」において、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファの使用率が、それぞれ「７０％」、「３０％」、「１０％」であったことを示している。
【００４６】
ＣＰＵ（Central  Processing  Unit）１７１は、伝送装置１００を全体制御し、例えば、使用率算出部１５０や、ＯＳ１８０等の各部を制御する。Ｔｉｍｅｒ１７２は、後述するＯＳ１８０に対してタイマー割り込みを行う。
【００４７】
不揮発性メモリ１７３は、監視周期データ、増加フラグ、最適パタンデータなどを記憶する。具体的には、不揮発性メモリ１７３は、使用率算出部１５０によって監視周期データおよび増加フラグが記憶される。
【００４８】
図５に、不揮発性メモリ１７３が記憶する監視周期データおよび増加フラグの一例を示す。図５に示した例では、不揮発性メモリ１７３は、監視周期データとして「１８０」を記憶し、増加フラグとして「１」を記憶している。
【００４９】
なお、図５に示した例において、監視周期データは秒単位の数値が記憶されるものとする。すなわち、図５に示した例では、不揮発性メモリ１７３は、監視周期データとして「１８０秒（３分）」を記憶している。また、図５に示した例において、増加フラグが「１」である場合、短期増加フラグであることを示し、増加フラグが「２」である場合、長期増加フラグであることを示すものとする。すなわち、図５に示した例では、不揮発性メモリ１７３は、増加フラグとして「短期増加フラグ」を記憶している。
【００５０】
また、不揮発性メモリ１７３は、後述するバッファプール制御部１９１によって最適パタンデータが記憶される。ここで言う「最適パタンデータ」とは、受信バッファが追加または削除された後におけるバッファプール１４０が有する受信バッファの個数を示す。かかる最適パタンデータは、伝送装置１００が再起動する場合に用いられる。伝送装置１００による再起動処理については、図７を用いて後に説明する。
【００５１】
図６に、不揮発性メモリ１７３が記憶する最適パタンデータの一例を示す。図６に示した例では、不揮発性メモリ１７３は、２０４８［Ｂｙｔｅ］の受信バッファの個数として「１００個」を記憶している。また、不揮発性メモリ１７３は、１０２４［Ｂｙｔｅ］の受信バッファの個数として「２００個」を記憶し、５１２［Ｂｙｔｅ］の受信バッファの個数として「３００個」を記憶している。
【００５２】
すなわち、図６に示した最適パタンデータは、バッファプール１４０が、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファを、それぞれ「１００個」、「２００個」、「３００個」有することが最適であることを示している。
【００５３】
ＯＳ１８０は、伝送装置１００に搭載される基本ソフトウェアであり、伝送装置１００全体を管理する。かかるＯＳ１８０は、スケジューリング部１８１と、メモリ管理部１８２とを有する。
【００５４】
スケジューリング部１８１は、不揮発性メモリ１７３に記憶されている監視周期データに基づいて、バッファプール制御部１９１を起動する。例えば、不揮発性メモリ１７３が図５に示した状態であるものとする。かかる場合、スケジューリング部１８１は、不揮発性メモリ１７３から監視周期データ「１８０」を読み出す。そして、スケジューリング部１８１は、「１８０秒（３分）」ごとに、バッファプール制御部１９１を起動する。
【００５５】
メモリ管理部１８２は、バッファプール１４０に対して、受信バッファの追加処理および削除処理を行う。具体的には、メモリ管理部１８２は、後述するバッファプール制御部１９１から、追加または削除する受信バッファの種類およびサイズを受け付けた場合に、ＣＰＵ１７１に対して、割り込み禁止信号を発行する。続いて、メモリ管理部１８２は、バッファプール制御部１９１から受け付けた受信バッファの種類およびサイズに基づいて、受信バッファの追加および削除を行う。その後、メモリ管理部１８２は、ＣＰＵ１７１に対して、割り込み禁止解除信号を発行する。
【００５６】
なお、受信バッファの追加処理または削除処理を行う場合に、ＣＰＵ１７１に対して割り込み禁止信号を発行する理由は、受信バッファの追加処理中や削除処理中に、追加対象の受信バッファや削除対象の受信バッファを用いられないようにするためである。
【００５７】
バッファプール制御部１９１は、最適バッファパタン予測部１９２と連動して、バッファプール１４０に追加または削除する受信バッファの種類およびサイズを算出し、算出した受信バッファの種類およびサイズをメモリ管理部１８２に通知する。なお、バッファプール制御部１９１および最適バッファパタン予測部１９２による処理については、図１０〜図１４を用いて詳細に説明する。
【００５８】
［実施例１に係る伝送装置による起動処理］
次に、実施例１に係る伝送装置１００による起動処理について説明する。図７は、起動時における伝送装置１００の構成例を示す図である。なお、図７に例示した伝送装置１００は、図３に示した伝送装置１００と同様の装置であるが、図７には、起動処理に関連する処理部のみを図示する。
【００５９】
図７に示した伝送装置１００において、記憶部２１０は、ＯＳや各種アプリケーションを形成する各種プログラム群を記憶する。ＣＰＵ１７１は、伝送装置１００が起動される場合に、リセットベクタによりＢＯＯＴプログラム２２０を起動する。
【００６０】
ＢＯＯＴプログラム２２０は、カーネルローダ２３０を起動する。カーネルローダ２３０は、カーネルをメモリに展開し、初期化部２４０を起動する。なお、上述したカーネルローダ２３０は、ＩＰＬ（Initial  Program  Loader）であってもよい。
【００６１】
初期化部２４０は、不揮発性メモリ１７３に最適パタンデータが記憶されている場合に、不揮発性メモリ１７３に記憶されている最適パタンデータに基づいて、バッファプール１４０内に受信バッファを生成する。
【００６２】
例えば、不揮発性メモリ１７３が、図６に示した状態であるものとする。かかる場合、初期化部２４０は、バッファプール１４０に、２０４８［Ｂｙｔｅ］の受信バッファを「１００個」生成し、１０２４［Ｂｙｔｅ］の受信バッファを「２００個」生成し、５１２［Ｂｙｔｅ］の受信バッファを「３００個」生成する。
【００６３】
一方、初期化部２４０は、不揮発性メモリ１７３に最適パタンデータが記憶されていない場合に、システムデータからパタンデータを読み出し、読み出したパタンデータに基づいて、バッファプール１４０内に受信バッファを生成する。なお、ここで言う「システムデータ」とは、伝送装置１００に予め各種情報の初期値などが記憶される領域を示す。すなわち、システムデータに記憶されているパタンデータとは、伝送装置１００が生成する受信バッファの個数の初期値を示す。
【００６４】
上述したように、バッファプール制御部１９１は、バッファプール１４０に対して受信バッファの追加処理や削除処理を行った場合に、変更後の受信バッファの個数を、最適パタンデータとして不揮発性メモリ１７３に記憶する。これにより、伝送装置１００は、人為的に再起動が行われる場合や、障害時などに再起動が行われる場合であっても、不揮発性メモリ１７３に記憶されている最適パタンデータに基づいて、受信バッファを生成することができる。すなわち、伝送装置１００は、シャットダウン前におけるバッファプール１４０の構成を再現することができる。
【００６５】
［実施例１に係る伝送装置による処理手順］
次に、図８〜図１５を用いて、実施例１に係る伝送装置１００による各種処理の手順について説明する。
【００６６】
［パケット受信処理手順］
まず、図８を用いて、実施例１に係る伝送装置１００によるパケット受信処理の手順について説明する。図８は、実施例１に係る伝送装置１００によるパケット受信処理手順を示すフローチャートである。
【００６７】
図８に示すように、伝送装置１００のＥｔｈｅｒドライバ１１２は、Ｅｔｈｅｒ  ＨＤ１１１によってパケットが受信された場合に（ステップＳ１０１肯定）、ネットワークドライバ１２０を起動する。
【００６８】
ネットワークドライバ１２０は、受信パケットのサイズに基づいて、捕捉する受信バッファを決定し、捕捉した受信バッファに受信パケットを格納するとともに（ステップＳ１０２）、使用率算出部１５０を起動する。
【００６９】
ネットワークドライバ１２０によって起動された使用率算出部１５０は、バッファプール１４０の使用率を算出して、算出した使用率を、パケットを受信した時刻に対応付けて、揮発性メモリ１６０に記憶させる（ステップＳ１０３）。このとき、使用率算出部１５０は、受信パケットの種類ごとに、使用率を揮発性メモリ１６０に記憶させる。
【００７０】
また、使用率算出部１５０は、受信バッファの種類ごとに算出した各使用率から最大使用率を抽出し、抽出した最大使用率に基づいて監視周期を決定する（ステップＳ１０４）。具体的には、使用率算出部１５０は、最大使用率が大きいほど監視周期を小さい値にし、最大使用率が小さいほど監視周期を大きい値にすることを決定する。
【００７１】
続いて、使用率算出部１５０は、受信バッファの種類ごとに、使用率の増加率を算出する。続いて、使用率算出部１５０は、受信バッファの種類ごとに算出した使用率の増加率から、最大増加率を抽出する。そして、使用率算出部１５０は、抽出した最大増加率が所定の増加率閾値よりも大きい場合に（ステップＳ１０５肯定）、増加フラグを短期増加フラグにすることを決定する（ステップＳ１０６）。一方、使用率算出部１５０は、最大増加率が増加率閾値以下である場合に（ステップＳ１０５否定）、増加フラグを長期増加フラグにすることを決定する（ステップＳ１０７）。
【００７２】
そして、使用率算出部１５０は、上記ステップ１０４において決定した監視周期を、不揮発性メモリ１７３に記憶させる（ステップＳ１０８）。また、使用率算出部１５０は、上記ステップＳ１０６またはステップＳ１０７において決定した増加フラグを不揮発性メモリ１７３に記憶させる（ステップＳ１０８）。
【００７３】
［スケジューリング処理手順］
次に、図９を用いて、実施例１におけるスケジューリング部１８１によるスケジューリング処理の手順について説明する。図９は、実施例１におけるスケジューリング部１８１によるスケジューリング処理手順を示すフローチャートである。
【００７４】
図９に示すように、伝送装置１００のスケジューリング部１８１は、まず、不揮発性メモリ１７３から監視周期データを読み出して監視周期を取得する（ステップＳ２０１）。そして、スケジューリング部１８１は、取得した監視周期が経過した場合に（ステップＳ２０２肯定）、バッファプール制御部１９１を起動する（ステップＳ２０３）。スケジューリング部１８１は、監視周期が経過するたびに（ステップＳ２０２肯定）、バッファプール制御部１９１を起動する（ステップＳ２０３）。
【００７５】
スケジューリング部１８１によって起動されたバッファプール制御部１９１は、バッファプール制御処理を実行する（ステップＳ２０４）。なお、バッファプール制御部１９１によるバッファプール制御処理については、図１０を用いて後に説明する。
【００７６】
［バッファプール制御処理手順］
次に、図１０を用いて、図９のステップＳ２０４におけるバッファプール制御処理の手順について説明する。図１０は、実施例１におけるバッファプール制御部１９１によるバッファプール制御処理手順を示すフローチャートである。
【００７７】
図１０に示すように、バッファプール制御部１９１は、不揮発性メモリ１７３に記憶されている増加フラグが短期増加フラグである場合に（ステップＳ３０１短期増加フラグ）、最適バッファパタン予測部１９２を起動して、短期用パタン計算処理を行わせる（ステップＳ３０２）。なお、最適バッファパタン予測部１９２による短期用パタン計算処理については、図１１を用いて後に説明する。
【００７８】
一方、バッファプール制御部１９１は、不揮発性メモリ１７３に記憶されている増加フラグが長期増加フラグである場合に（ステップＳ３０１長期増加フラグ）、最適バッファパタン予測部１９２を起動して、長期用パタン計算処理を行わせる（ステップＳ３０３）。なお、最適バッファパタン予測部１９２による長期用パタン計算処理については、図１２を用いて後に説明する。
【００７９】
ここで、最適バッファパタン予測部１９２は、短期用パタン計算処理又は長期用パタン計算処理を行うことにより、受信バッファを追加すると判定した場合、バッファプール１４０を変更する旨の情報を、バッファプール制御部１９１に通知する。このとき、最適バッファパタン予測部１９２は、追加する受信バッファの種類と、追加する受信バッファの個数（以下、「追加個数」と言う）とをバッファプール制御部１９１に通知する。
【００８０】
また、最適バッファパタン予測部１９２は、受信バッファを削除すると判定した場合、バッファプール１４０を変更する旨の情報を、バッファプール制御部１９１に通知する。このとき、最適バッファパタン予測部１９２は、削除する受信バッファの種類と、削除する受信バッファの個数（以下、「削除個数」と言う）とをバッファプール制御部１９１に通知する。
【００８１】
また、最適バッファパタン予測部１９２は、バッファプール１４０に対して、受信バッファの追加処理および削除処理を行わないと判定した場合、バッファプール１４０を変更しない旨の情報をバッファプール制御部１９１に通知する。
【００８２】
そして、バッファプール制御部１９１は、最適バッファパタン予測部１９２から、バッファプール１４０を変更しない旨の情報を受け付けた場合（ステップＳ３０４否定）、処理を終了する。
【００８３】
一方、バッファプール制御部１９１は、最適バッファパタン予測部１９２から、バッファプール１４０を変更する旨の情報を受け付けた場合に（ステップＳ３０４肯定）、かかる変更処理が、追加処理、または、削除処理のいずれであるかを判定する（ステップＳ３０５）。
【００８４】
変更処理が追加処理である場合（ステップＳ３０５追加）、バッファプール制御部１９１は、最適バッファパタン予測部１９２から受け付けた追加個数に基づいて、追加する受信バッファのサイズを、受信バッファの種類ごとに算出する（ステップＳ３０６）。そして、バッファプール制御部１９１は、算出した受信バッファのサイズと、受信バッファの種類との組合せをメモリ管理部１８２に通知する。
【００８５】
バッファプール制御部１９１から受信バッファのサイズと種類との組合せを受け付けたメモリ管理部１８２は、ＣＰＵ１７１に対して、割り込み禁止信号を発行する（ステップＳ３０７）。続いて、メモリ管理部１８２は、メモリのヒープ領域およびリザーブ領域のうち、バッファプール制御部１９１から受け付けた受信バッファのサイズ分の領域を受信バッファとして確保し、確保した受信バッファをバッファプール１４０に追加する（ステップＳ３０８）。続いて、メモリ管理部１８２は、ＣＰＵ１７１に対して、割り込み禁止解除信号を発行する（ステップＳ３０９）。
【００８６】
メモリ管理部１８２による受信バッファ変更処理が完了した場合に（ステップＳ３１０肯定）、バッファプール制御部１９１は、変更処理後のバッファプール１４０のバッファパタンを、最適パタンデータとして不揮発性メモリ１７３に記憶させる（ステップＳ３１１）。
【００８７】
一方、変更処理が削除処理である場合（ステップＳ３０５削除）、バッファプール制御部１９１は、最適バッファパタン予測部１９２から受け付けた削除個数に基づいて、削除する受信バッファのサイズを、受信バッファの種類ごとに算出する（ステップＳ３１２）。
【００８８】
続いて、バッファプール制御部１９１は、バッファプール１４０から、上記ステップＳ３１２において算出したサイズ分の受信バッファを削除したと仮定した場合に、受信バッファのサイズが初期値以上であるか否かを判定する（ステップＳ３１３）。なお、バッファプール制御部１９１は、ステップＳ３１３における判定処理を、受信バッファの種類ごとに行う。
【００８９】
そして、削除後の受信バッファのサイズが初期値よりも小さくなる場合（ステップＳ３１３否定）、バッファプール制御部１９１は、処理を終了する。一方、削除後のバッファプール１４０の受信バッファが初期値以上になる場合（ステップＳ３１３肯定）、バッファプール制御部１９１は、ステップＳ３１２において算出したサイズと、受信バッファの種類との組合せをメモリ管理部１８２に通知する。
【００９０】
続いて、メモリ管理部１８２は、ＣＰＵ１７１に対して、割り込み禁止信号を発行し（ステップＳ３０７）、バッファプール１４０から、バッファプール制御部１９１から受け付けたサイズ分の領域を削除する（ステップＳ３０８）。続いて、メモリ管理部１８２は、ＣＰＵ１７１に対して、割り込み禁止解除信号を発行する（ステップＳ３０９）。
【００９１】
そして、メモリ管理部１８２による受信バッファ変更処理が完了した場合に（ステップＳ３１０肯定）、バッファプール制御部１９１は、変更処理後のバッファプール１４０のバッファパタンを、最適パタンデータとして不揮発性メモリ１７３に記憶させる（ステップＳ３１１）。
【００９２】
［短期用パタン計算処理手順］
次に、図１１を用いて、図１０のステップＳ３０２における短期用パタン計算処理の手順について説明する。図１１は、実施例１における最適バッファパタン予測部１９２による短期用パタン計算処理手順を示すフローチャートである。
【００９３】
図１１に示すように、最適バッファパタン予測部１９２は、短期用パタン計算処理を行う場合に、まず、短期監視用閾値をシステムデータから読み出す（ステップＳ４０１）。短期監視用閾値は、所定の範囲の値であり、例えば、「３０％〜６０％」といった値である。
【００９４】
続いて、最適バッファパタン予測部１９２は、使用率が短期監視用閾値の上限を超えている受信バッファの種類が存在するか否かを判定する（ステップＳ４０２）。例えば、上記例のように、短期監視用閾値が「３０％〜６０％」である場合、最適バッファパタン予測部１９２は、使用率が短期監視用閾値の上限「６０％」を超えている受信バッファの種類が存在するか否かを判定する。
【００９５】
短期監視用閾値の上限を超えている受信バッファの種類が存在する場合（ステップＳ４０２肯定）、最適バッファパタン予測部１９２は、短期監視用閾値の上限を超えている受信バッファの種類について、追加用予測処理を行う（ステップＳ４０３）。最適バッファパタン予測部１９２は、追加用予測処理の結果、追加処理を行うと判定した場合、現状の受信バッファの合計サイズと、追加する受信バッファのサイズとの比率（以下、「追加比率」という）を算出する。なお、最適バッファパタン予測部１９２による追加用予測処理については、図１３を用いて、後に説明する。
【００９６】
続いて、最適バッファパタン予測部１９２は、追加用予測処理の結果、追加処理を行わないと判定した場合（ステップＳ４０４否定）、処理を終了する。一方、最適バッファパタン予測部１９２は、追加処理を行うと判定した場合（ステップＳ４０４肯定）、追加用予測処理において算出した追加比率に基づいて、バッファプール１４０に追加する受信バッファの個数と、受信バッファの種類とを決定する（ステップＳ４０５）。
【００９７】
例えば、最適バッファパタン予測部１９２が、追加用予測処理の結果、５１２［Ｂｙｔｅ］の受信バッファを追加すると判定したものとする。また、ここでは、最適バッファパタン予測部１９２が、追加比率として「１０％」を算出したものとする。かかる場合、最適バッファパタン予測部１９２は、５１２［Ｂｙｔｅ］の受信バッファが、現状よりも「１０％」増加するように、追加する受信バッファの個数を算出する。例えば、現状の５１２［Ｂｙｔｅ］の受信バッファが合計５１２００［Ｂｙｔｅ］である場合、最適バッファパタン予測部１９２は、「１０％」増加させるために、追加する受信バッファの個数として「１０個」を算出する。
【００９８】
続いて、最適バッファパタン予測部１９２は、ステップＳ４０５において決定した受信バッファの個数にマージンを加算する（ステップＳ４０６）。続いて、最適バッファパタン予測部１９２は、バッファプール１４０を変更する旨の情報と、追加する受信バッファの種類と、追加個数とをバッファプール制御部１９１に通知する（ステップＳ４０７）。
【００９９】
一方、最適バッファパタン予測部１９２は、短期監視用閾値の上限を超えている受信バッファの種類が存在しない場合（ステップＳ４０２否定）、使用率が短期監視用閾値の下限より小さいか否かを、受信バッファの種類ごとに判定する（ステップＳ４０８）。例えば、上記例のように、短期監視用閾値が「３０％〜６０％」である場合、最適バッファパタン予測部１９２は、使用率が短期監視用閾値の下限「３０％」より小さいか否かを、受信バッファの種類ごとに判定する。
【０１００】
使用率が短期監視用閾値の下限より小さい受信バッファが存在しない場合（ステップＳ４０８否定）、最適バッファパタン予測部１９２は、処理を終了する。一方、使用率が短期監視用閾値の下限より小さい受信バッファが存在する場合（ステップＳ４０８肯定）、最適バッファパタン予測部１９２は、使用率が短期監視用閾値の下限より小さい受信バッファの種類について、削除用予測処理を行う（ステップＳ４０９）。最適バッファパタン予測部１９２は、削除用予測処理の結果、削除処理を行うと判定した場合、現状の受信バッファの合計サイズと、削除する受信バッファのサイズとの比率（以下、「削除比率」という）を算出する。なお、最適バッファパタン予測部１９２による削除用予測処理については、図１４を用いて、後に説明する。
【０１０１】
続いて、最適バッファパタン予測部１９２は、削除用予測処理の結果、削除処理を行わないと判定した場合（ステップＳ４１０否定）、処理を終了する。一方、最適バッファパタン予測部１９２は、削除処理を行うと判定した場合（ステップＳ４１０肯定）、削除用予測処理において算出した削除比率に基づいて、バッファプール１４０から削除する受信バッファの個数と、受信バッファの種類とを決定する（ステップＳ４１１）。
【０１０２】
続いて、最適バッファパタン予測部１９２は、バッファプール１４０を変更する旨の情報と、削除する受信バッファの種類と、削除個数とをバッファプール制御部１９１に通知する（ステップＳ４１２）。
【０１０３】
このように、実施例１に係る伝送装置１００は、１回の処理において、バッファプール１４０に対する受信バッファの追加処理または削除処理のいずれか一方のみを行う。言い換えれば、伝送装置１００は、受信バッファの追加処理と削除処理とを同時に行わない。これは、追加処理と削除処理とを同時に行うと、バッファプール１４０に対する受信バッファの変更処理が煩雑になる可能性があるからである。ただし、図１１に示した処理手順のように、伝送装置１００は、削除処理よりも追加処理を優先的に行うので、受信バッファの枯渇を防止することができる。
【０１０４】
［長期用パタン計算処理手順］
次に、図１２を用いて、図１０のステップＳ３０３における長期用パタン計算処理の手順について説明する。図１２は、実施例１における最適バッファパタン予測部１９２による長期用パタン計算処理手順を示すフローチャートである。
【０１０５】
図１２に示すように、最適バッファパタン予測部１９２は、長期用パタン計算処理を行う場合に、まず、長期監視用閾値をシステムデータから読み出す（ステップＳ５０１）。長期監視用閾値は、所定の値であり、例えば、「６０％」といった値である。
【０１０６】
続いて、最適バッファパタン予測部１９２は、使用率が長期監視用閾値を超えている受信バッファの種類が存在するか否かを判定する（ステップＳ５０２）。使用率が長期監視用閾値を超えている受信バッファの種類が存在しない場合（ステップＳ５０２否定）、最適バッファパタン予測部１９２は、処理を終了する。
【０１０７】
一方、長期監視用閾値を超えている受信バッファの種類が存在する場合（ステップＳ５０２肯定）、最適バッファパタン予測部１９２は、長期監視用閾値の上限を超えている受信バッファの種類について、追加用予測処理を行う（ステップＳ５０３）。なお、最適バッファパタン予測部１９２による追加用予測処理については、図１３を用いて、後に説明する。
【０１０８】
続いて、最適バッファパタン予測部１９２は、追加用予測処理の結果、追加処理を行わないと判定した場合（ステップＳ５０４否定）、処理を終了する。一方、最適バッファパタン予測部１９２は、追加処理を行うと判定した場合（ステップＳ５０４肯定）、バッファプール１４０に追加する受信バッファの個数と、受信バッファの種類とを決定する（ステップＳ５０５）。続いて、最適バッファパタン予測部１９２は、ステップＳ４０５において決定した受信バッファの個数にマージンを加算する（ステップＳ５０６）。
【０１０９】
続いて、最適バッファパタン予測部１９２は、バッファプール１４０を変更する旨の情報と、追加する受信バッファの種類と、追加個数とをバッファプール制御部１９１に通知する（ステップＳ５０７）。
【０１１０】
このように、最適バッファパタン予測部１９２は、長期用パタン計算処理を行う場合、受信バッファを削除する処理を行わない。すなわち、伝送装置１００は、増加フラグが長期増加フラグである場合、受信バッファの削除処理を行わない。これは、図２を用いて説明したように、使用率が徐々に増加する場合、その後に使用率が低下しない傾向にあるからである。
【０１１１】
［追加用予測処理手順］
次に、図１３を用いて、図１１のステップＳ４０３、および、図１２のステップＳ５０３における追加用予測処理の手順について説明する。図１３は、実施例１における最適バッファパタン予測部１９２による追加用予測処理手順を示すフローチャートである。なお、図１３に示した処理手順は、上記ステップＳ４０３またはＳ５０３において、使用率が短期監視用閾値の上限を超えていると判定された受信バッファの種類ごとに実行される。
【０１１２】
図１３に示すように、最適バッファパタン予測部１９２は、追加用予測処理を行う場合に、揮発性メモリ１６０に記憶されている監視データに基づいて、時間経過に対する使用率の回帰直線を算出する（ステップＳ６０１）。
【０１１３】
具体的には、最適バッファパタン予測部１９２は、揮発性メモリ１６０に記憶されている時刻に基づいて、時間経過をｘｉ、使用率をｙｉとした場合における回帰直線「ｙ＝ａｘ＋ｂ」を算出する。このとき、最適バッファパタン予測部１９２は、以下に示す式（１）および（２）の連立方程式により、回帰直線における定数ａおよびｂを算出する。
【０１１４】
【数１】
2010268321.tif 000003
【０１１５】
【数２】
2010268321.tif 000004
【０１１６】
続いて、最適バッファパタン予測部１９２は、算出した回帰直線のｘに、監視周期を代入することにより、次の監視周期におけるバッファプール１４０の使用率を算出する（ステップＳ６０２）。なお、以下では、使用率の変動量に基づいて予測された使用率を「予測使用率」と表記するものとする。
【０１１７】
続いて、最適バッファパタン予測部１９２は、予測使用率が危険閾値よりも大きい場合に（ステップＳ６０３肯定）、追加比率を算出する（ステップＳ６０４）。具体的には、最適バッファパタン予測部１９２は、予測使用率から現状の使用率を減算することにより、追加比率を算出する。例えば、予測使用率が「９５％」であり、現状の使用率が「９１％」である場合、最適バッファパタン予測部１９２は、追加比率として「４％」を算出する。
【０１１８】
一方、最適バッファパタン予測部１９２は、予測使用率が危険閾値以下である場合に（ステップＳ６０３否定）、処理を終了する。
【０１１９】
［削除用予測処理手順］
次に、図１４を用いて、図１１のステップＳ４０９における削除用予測処理の手順について説明する。図１４は、実施例１における最適バッファパタン予測部１９２による削除用予測処理手順を示すフローチャートである。なお、図１４に示した処理手順は、上記ステップＳ４０９において、使用率が短期監視用閾値の下限より小さいと判定された受信バッファの種類ごとに実行される。
【０１２０】
図１４に示すように、最適バッファパタン予測部１９２は、削除用予測処理を行う場合に、揮発性メモリ１６０に記憶されている監視データに基づいて、時間経過に対する使用率の回帰直線を算出する（ステップＳ７０１）。
【０１２１】
続いて、最適バッファパタン予測部１９２は、算出した回帰直線のｘに、監視周期を代入することにより、次の周期におけるバッファプール１４０の予測使用率を算出する（ステップＳ７０２）。
【０１２２】
続いて、最適バッファパタン予測部１９２は、予測使用率が、安全閾値よりも小さい場合に（ステップＳ７０３肯定）、削除比率を算出する（ステップＳ７０４）。具体的には、最適バッファパタン予測部１９２は、現状の使用率から予測使用率を減算することにより、削除比率を算出する。
【０１２３】
一方、予測使用率が、安全閾値以上である場合に（ステップＳ７０３否定）、最適バッファパタン予測部１９２は、処理を終了する。
【０１２４】
［起動処理手順］
次に、図１５を用いて、実施例１に係る伝送装置１００による起動処理の手順について説明する。図１５は、実施例１に係る伝送装置１００による起動処理手順を示すフローチャートである。
【０１２５】
伝送装置１００が起動する場合、ＣＰＵ１７１は、リセットベクタによりＢＯＯＴプログラム２２０を起動する。そして、ＢＯＯＴプログラム２２０は、ＣＰＵ１７１の初期化を行い、カーネルローダ２３０を起動する。カーネルローダ２３０は、カーネルをメモリに展開し、初期化部２４０を起動する。
【０１２６】
そして、初期化部２４０は、不揮発性メモリ１７３に最適パタンデータが記憶されている場合に（ステップＳ８０１肯定）、不揮発性メモリ１７３から最適パタンデータを読み出す（ステップＳ８０２）。そして、初期化部２４０は、不揮発性メモリ１７３から読み出した最適パタンデータに基づいて、バッファプール１４０内に受信バッファを生成する（ステップＳ８０３）。
【０１２７】
一方、初期化部２４０は、不揮発性メモリ１７３に最適パタンデータが記憶されていない場合に（ステップＳ８０１否定）、システムデータから最適パタンデータを読み出す（ステップＳ８０４）。そして、初期化部２４０は、システムデータから読み出した最適パタンデータに基づいて、バッファプール１４０内に受信バッファを生成する（ステップＳ８０３）。
【０１２８】
［実施例１の効果］
上述してきたように、実施例１に係る伝送装置１００は、パケットを受信するたびにバッファメモリの使用率を蓄積し、蓄積した使用率に基づいて予測使用率を算出し、予測使用率が危険閾値より大きい場合に、受信バッファをバッファプールに追加する。また、伝送装置１００は、予測した使用率が所定の安全閾値より小さい場合に、追加した受信バッファをバッファメモリから削除する。これにより、実施例１に係る伝送装置１００は、システム稼働中においても、パケットの受信状況に応じた受信バッファを動的に生成することができるので、受信バッファの枯渇を防止することができる。
【実施例２】
【０１２９】
ところで、本願の開示する伝送装置等は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、本願の開示する伝送装置等の他の実施例について説明する。
【０１３０】
［短期用パタン計算処理手順］
上記実施例１では、図１１を用いて説明したように、受信バッファの追加処理と削除処理とを同時に行わない例を示した。しかし、本願の開示する伝送装置は、受信バッファの追加処理と削除処理とを同時に行ってもよい。図１６を用いて、受信バッファの追加処理と削除処理とを同時に行う例について説明する。
【０１３１】
図１６は、追加処理および削除処理を同時に行う場合における最適バッファパタン予測部１９２による短期用パタン計算処理手順を示すフローチャートである。図１６に示すように、最適バッファパタン予測部１９２は、短期用パタン計算処理を行う場合に、まず、短期監視用閾値をシステムデータから読み出す（ステップＳ９０１）。続いて、最適バッファパタン予測部１９２は、受信バッファの種類ごとに、ステップＳ９０２〜Ｓ９１２における処理手順を行う。
【０１３２】
具体的には、最適バッファパタン予測部１９２は、処理対象の受信バッファの使用率が短期監視用閾値の上限を超えているか否かを判定する（ステップＳ９０２）。短期監視用閾値の上限を超えている場合（ステップＳ９０２肯定）、最適バッファパタン予測部１９２は、処理対象の受信バッファの種類について、追加用予測処理を行う（ステップＳ９０３）。一方、最適バッファパタン予測部１９２は、処理対象の受信バッファの使用率が短期監視用閾値の上限を超えていない場合（ステップＳ９０２否定）、処理対象の受信バッファの使用率が短期監視用閾値の下限より小さいか否かを判定する（ステップＳ９０８）。なお、ステップＳ９０３〜Ｓ９１２における処理手順は、図１１に示したステップＳ４０３〜Ｓ４１２における処理手順と同様である。
【０１３３】
そして、最適バッファパタン予測部１９２は、全ての受信バッファの種類について、上記ステップＳ９０２〜Ｓ９１２における処理手順を行った場合（ステップＳ９１３肯定）、処理を終了する。一方、全ての受信バッファの種類について上記処理を行っていない場合（ステップＳ９１３否定）、最適バッファパタン予測部１９２は、未処理の受信バッファの種類について、上記ステップＳ９０２〜Ｓ９１２における処理手順を行う。
【０１３４】
このように、伝送装置１００は、受信バッファごとに短期用パタン計算処理を行うことにより、追加処理および削除処理を同時に行うことができる。例えば、伝送装置１００は、２０４８［Ｂｙｔｅ］の受信バッファを追加するとともに、１０２４［Ｂｙｔｅ］の受信バッファを削除する処理を同時に行うことができる。これにより、伝送装置１００は、より状況に応じた受信バッファを生成することができる。
【０１３５】
［受信バッファの種類］
また、上記実施例１では、伝送装置１００のバッファプール１４０は、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］の受信バッファを有する例を示した。しかし、伝送装置１００は、他のサイズの受信バッファを有してもよい。例えば、伝送装置１００は、２０４８［Ｂｙｔｅ］、１０２４［Ｂｙｔｅ］、５１２［Ｂｙｔｅ］、２５６［Ｂｙｔｅ］、１２８［Ｂｙｔｅ］の受信バッファを有してもよい。また、例えば、伝送装置１００は、２０４８［Ｂｙｔｅ］の受信バッファだけを有してもよい。
【０１３６】
［追加比率、削除比率］
また、上記実施例１では、図１３および図１４に示したように、予測使用率と現状の使用率との差分により、追加比率および削除比率を算出する例を示した。しかし、伝送装置１００は、他の手法により追加または削除する受信バッファのサイズを算出してもよい。例えば、伝送装置１００は、予測使用率と危険閾値との差が大きいほど、追加する受信バッファのサイズを大きくしたり、予測使用率と安全閾値との差が大きいほど、削除する受信バッファのサイズを大きくしたりしてもよい。また、例えば、伝送装置１００は、受信バッファのサイズを変更した後の使用率が所望に値（例えば、「５０％」）になるように、追加または削除する受信バッファのサイズを決定してもよい。
【０１３７】
［システム構成等］
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１３８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３９】
（付記１）受信パケットを記憶する受信バッファを複数有するバッファメモリと、
パケットを受信するたびに前記バッファメモリの使用率を算出する算出部と、
所定の監視周期が経過するたびに、前記算出部によって算出された使用率に基づいて、前記バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて前記バッファメモリにおける将来の使用率である予測使用率を予測する予測部と、
前記予測部によって予測された予測使用率が所定の危険閾値より大きい場合に、前記バッファメモリに受信バッファを追加するメモリ管理部と
を備えたことを特徴とする伝送装置。
【０１４０】
（付記２）前記バッファメモリは、サイズの異なる複数種類の受信バッファを有し、
前記算出部は、受信バッファの種類ごとに使用率を算出し、
前記予測部は、前記算出部によって算出された使用率に基づいて、受信バッファの種類ごとに予測使用率を予測し、
前記メモリ管理部は、前記予測部によって予測された予測使用率が所定の危険閾値より大きい受信バッファの種類が存在する場合に、該受信バッファの種類に対応するサイズの受信バッファを前記バッファメモリに追加することを特徴とする付記１に記載の伝送装置。
【０１４１】
（付記３）前記算出部は、受信バッファの各種類に対応する使用率のうち、最も高い使用率である最大使用率が大きいほど前記監視周期を小さい値に設定し、前記最大使用率が小さいほど前記監視周期を大きい値に設定し、
前記予測部は、前記算出部によって設定された監視周期が経過するたびに、受信バッファの種類ごとに予測使用率を予測することを特徴とする付記２に記載の伝送装置。
【０１４２】
（付記４）前記算出部は、前記バッファメモリの使用率の増加率が所定の増加率閾値よりも大きい場合に、短期的に使用率が増加したことを示す短期増加フラグを設定し、
前記予測部は、前記算出部によって短期増加フラグが設定され、かつ、前記予測部によって予測された予測使用率が所定の安全閾値より小さい受信バッファの種類が存在する場合に、該受信バッファの種類に対応するサイズの受信バッファの一部を前記バッファメモリから削除することを特徴とする付記３に記載の伝送装置。
【０１４３】
（付記５）前記予測部は、前記算出部によって算出された使用率と、該使用率が算出された時刻とを用いて、時間経過に対する使用率の回帰直線を算出し、算出した回帰直線と次の周期に対応する時間とに基づいて、予測使用率を予測することを特徴とする付記１〜４のいずれか一つに記載の伝送装置。
【０１４４】
（付記６）前記メモリ管理部によって更新された前記バッファメモリにおける受信バッファの種類と、受信バッファの個数との組合せパタンであるバッファパタンを記憶するバッファパタン記憶部と、
当該の伝送装置が起動する場合に、前記バッファパタン記憶部に記憶されているバッファパタンに基づいて、前記バッファメモリに受信バッファを生成する初期化部と
をさらに備えたことを特徴とする付記２〜５のいずれか一つに記載の伝送装置。
【０１４５】
（付記７）パケットを伝送する伝送装置による伝送方法であって、
前記伝送装置が、
パケットを受信するたびに、受信パケットを記憶する受信バッファを複数有するバッファメモリの使用率を算出する算出ステップと、
所定の監視周期が経過するたびに、前記算出ステップによって算出された使用率に基づいて、前記バッファメモリの使用率の変動量を算出し、算出した変動量に基づいて前記バッファメモリにおける将来の使用率である予測使用率を予測する予測ステップと、
前記予測ステップによって予測された予測使用率が所定の危険閾値より大きい場合に、前記バッファメモリに受信バッファを追加するメモリ管理ステップと
を含んだことを特徴とする伝送方法。
【符号の説明】
【０１４６】
１００、９１０、９２０  伝送装置
１１１、９１２  Ｅｔｈｅｒ  ＨＤ
１１２、９１３  Ｅｔｈｅｒドライバ
１２０、９１４、９２４  ネットワークドライバ
１３０、９１５  ネットワークプロトコル
１４０、９１１、９２１  バッファプール
１５０  使用率算出部
１６０  揮発性メモリ
１７１  ＣＰＵ
１７２  Ｔｉｍｅｒ
１７３  不揮発性メモリ
１８０  ＯＳ
１８１  スケジューリング部
１８２  メモリ管理部
１９１  バッファプール制御部
１９２  最適バッファパタン予測部
２１０  記憶部
２２０  ＢＯＯＴプログラム
２３０  カーネルローダ
２４０  初期化部
【図１】
2010268321.tif 000005
【図２】
2010268321.tif 000006
【図３】
2010268321.tif 000007
【図４】
2010268321.tif 000008
【図５】
2010268321.tif 000009
【図６】
2010268321.tif 000010
【図７】
2010268321.tif 000011
【図８】
2010268321.tif 000012
【図９】
2010268321.tif 000013
【図１０】
2010268321.tif 000014
【図１１】
2010268321.tif 000015
【図１２】
2010268321.tif 000016
【図１３】
2010268321.tif 000017
【図１４】
2010268321.tif 000018
【図１５】
2010268321.tif 000019
【図１６】
2010268321.tif 000020
【図１７】
2010268321.tif 000021
【図１８】
2010268321.tif 000022