(57)【特許請求の範囲】
【請求項１】
入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、
前記内部バッファと前記外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、
前記閾値フラグがＡの場合に前記外部バッファに起動指示を行い、前記閾値フラグがＢかつ前記外部バッファが空の場合に前記外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、
前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファに決定し、前記閾値フラグがＡの場合に前記入力パケットの蓄積先を前記外部バッファに決定する蓄積先制御処理ステップと、
前記入力パケットの蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、
少なくとも前記入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、
前記蓄積情報管理処理ステップで記録管理される情報に従い、前記内部バッファまたは前記外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップと
を有し、
前記内部バッファは、通常領域と起動用領域とから成り、
前記蓄積先制御処理ステップは、前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファの通常領域に決定し、前記閾値フラグがＡかつ前記外部バッファが起動処理を行っている場合に前記入力パケットの蓄積先を前記起動用領域に決定し、前記閾値フラグがＡかつ前記外部バッファの起動処理が完了している場合に前記入力パケットの蓄積先を前記外部バッファに決定する
ことを特徴とするバッファ制御方法。
【請求項２】
入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、
前記内部バッファと前記外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、
前記閾値フラグがＡの場合に前記外部バッファに起動指示を行い、前記閾値フラグがＢかつ前記外部バッファが空の場合に前記外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、
前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファに決定し、前記閾値フラグがＡの場合に前記入力パケットの蓄積先を前記外部バッファに決定する蓄積先制御処理ステップと、
前記入力パケットの蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、
少なくとも前記入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、
前記蓄積情報管理処理ステップで記録管理される情報に従い、前記内部バッファまたは前記外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップと
を有し、
前記所定の閾値は、第１の閾値と第２の閾値（第１の閾値＞第２の閾値）とし、
前記第１の閾値は、前記内部バッファに蓄積可能な前記データ量の上限と同一の値とし、前記第２の閾値は、当該第２の閾値以下の前記データ量が全て前記外部バッファに蓄積された状態であっても、前記データ量が前記第１の閾値になる前に前記外部バッファに蓄積されたパケットを全て出力できる値とし、
前記判断処理ステップは、前記データ量が前記第１の閾値を上回ったことを検出した場合に前記閾値フラグをＡとし、前記第２の閾値を下回ったことを検出した場合に前記閾値フラグをＢとし、その他は前記閾値フラグの値を維持する
ことを特徴とするバッファ制御方法。
【請求項３】
入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、
前記内部バッファと前記外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、
前記閾値フラグがＡの場合に前記外部バッファに起動指示を行い、前記閾値フラグがＢかつ前記外部バッファが空の場合に前記外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、
前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファに決定し、前記閾値フラグがＡの場合に前記入力パケットの蓄積先を前記外部バッファに決定する蓄積先制御処理ステップと、
前記入力パケットの蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、
少なくとも前記入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、
前記蓄積情報管理処理ステップで記録管理される情報に従い、前記内部バッファまたは前記外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップと
を有し、
前記内部バッファと前記外部バッファの蓄積領域を前記入力パケットの優先度ごとに分割し、
前記判断処理ステップと前記蓄積先制御処理ステップを前記入力パケットの優先度ごとに実施し、
前記外部バッファ起動指示制御処理ステップは、各優先度の少なくとも１つの前記閾値フラグがＡの場合には前記外部バッファに起動指示を行い、各優先度の前記閾値フラグがすべてＢかつ前記外部バッファが空であれば、前記外部バッファに停止指示を行い、
前記蓄積制御処理ステップは、前記入力パケットの優先度と同一の蓄積先制御処理ステップが決定した蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファの当該優先度の蓄積領域に蓄積する
ことを特徴とするバッファ制御方法。
【請求項４】
請求項３に記載のバッファ制御方法において、
前記内部バッファは、通常領域と起動用領域とから成り、
前記内部バッファの通常領域と前記外部バッファの蓄積領域を前記優先度ごとに分割し、前記内部バッファの起動用領域は優先度ごとに分割せず、
前記優先度ごとの蓄積先制御処理ステップは、当該優先度の閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファの通常領域に決定し、当該優先度の閾値フラグがＡかつ前記外部バッファが起動処理を行っている場合に当該優先度の入力パケットの蓄積先を前記起動用領域に決定し、当該優先度の閾値フラグがＡかつ前記外部バッファの起動処理が完了している場合に前記入力パケットの蓄積先を前記外部バッファに決定する  ことを特徴とするバッファ制御方法。
【請求項５】
入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御装置において、
前記内部バッファと前記外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に前記閾値フラグをＢとする判断処理手段と、
前記閾値フラグがＡの場合に前記外部バッファに起動指示を行い、前記閾値フラグがＢかつ前記外部バッファが空の場合に前記外部バッファに停止指示を行う外部バッファ起動指示制御処理手段と、
前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファに決定し、前記閾値フラグがＡの場合に前記入力パケットの蓄積先を前記外部バッファに決定する蓄積先制御処理手段と、
前記入力パケットの蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファのいずれか一方に蓄積制御する蓄積制御処理手段と、
少なくとも前記入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理手段と、
前記蓄積情報管理処理手段で記録管理される情報に従い、前記内部バッファまたは前記外部バッファのいずれか一方からパケットを出力する読み出し制御処理手段と
を備え、
前記内部バッファは、通常領域と起動用領域とから成り、
前記蓄積先制御処理手段は、前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファの通常領域に決定し、前記閾値フラグがＡかつ前記外部バッファが起動処理を行っている場合に前記入力パケットの蓄積先を前記起動用領域に決定し、前記閾値フラグがＡかつ前記外部バッファの起動処理が完了している場合に前記入力パケットの蓄積先を前記外部バッファに決定する構成である
ことを特徴とするバッファ制御装置。
【請求項６】
入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御装置において、
前記内部バッファと前記外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に前記閾値フラグをＢとする判断処理手段と、
前記閾値フラグがＡの場合に前記外部バッファに起動指示を行い、前記閾値フラグがＢかつ前記外部バッファが空の場合に前記外部バッファに停止指示を行う外部バッファ起動指示制御処理手段と、
前記閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファに決定し、前記閾値フラグがＡの場合に前記入力パケットの蓄積先を前記外部バッファに決定する蓄積先制御処理手段と、
前記入力パケットの蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファのいずれか一方に蓄積制御する蓄積制御処理手段と、
少なくとも前記入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理手段と、
前記蓄積情報管理処理手段で記録管理される情報に従い、前記内部バッファまたは前記外部バッファのいずれか一方からパケットを出力する読み出し制御処理手段と
を備え、
前記内部バッファと前記外部バッファの蓄積領域は、前記入力パケットの優先度ごとに分割する構成であり、
前記判断処理手段と前記蓄積先制御処理手段は、前記入力パケットの優先度ごとに備えられた構成であり、
前記外部バッファ起動指示制御処理手段は、各優先度の少なくとも１つの前記閾値フラグがＡの場合には前記外部バッファに起動指示を行い、各優先度の前記閾値フラグがすべてＢかつ前記外部バッファが空であれば、前記外部バッファに停止指示を行う構成であり、
前記蓄積制御処理手段は、前記入力パケットの優先度と同一の蓄積先制御処理手段が決定した蓄積先に従って、前記入力パケットを前記内部バッファまたは前記外部バッファの当該優先度の蓄積領域に蓄積する構成である
ことを特徴とするバッファ制御装置。
【請求項７】
請求項６に記載のバッファ制御装置において、
前記内部バッファは、通常領域と起動用領域とから成り、
前記内部バッファの通常領域と前記外部バッファの蓄積領域は、前記入力パケットの優先度ごとに分割し、前記内部バッファの起動用領域は優先度ごとに分割しない構成であり、
前記優先度ごとの蓄積先制御処理手段は、当該優先度の閾値フラグがＢの場合に前記入力パケットの蓄積先を前記内部バッファの通常領域に決定し、当該優先度の閾値フラグがＡかつ前記外部バッファが起動処理を行っている場合に当該優先度の入力パケットの蓄積先を前記起動用領域に決定し、当該優先度の閾値フラグがＡかつ前記外部バッファの起動処理が完了している場合に前記入力パケットの蓄積先を前記外部バッファに決定する構成である
ことを特徴とするバッファ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク装置におけるバッファ制御方法およびバッファ制御装置に関する。特に、ＰＯＮ（Passive Optical Network ：受動光回線網) システムにおけるＯＮＵ (Optical Network Unit：加入者側装置）の下りバッファにおけるバッファ制御方法およびバッファ制御装置に関する。
【０００２】
ただし、本発明は、ＯＮＵの下りバッファに限定されるものではなく、他のネットワーク装置のバッファに対しても種々変更して適用可能である。
【背景技術】
【０００３】
ネットワーク装置は、入力側に対して出力側のインタフェースが低速な場合には、大容量のバッファが必要になる。大容量のバッファが必要になるネットワーク装置として、10Ｇ−ＥＰＯＮシステム（10 Gigabit Ethernet(登録商標)PON）におけるＯＮＵを例に説明する。
【０００４】
図７は、10Ｇ−ＥＰＯＮシステムにおけるＯＮＵの下りバッファを示す。ＰＯＮ区間からの実効帯域 8.7Ｇbit/s の下りデータ（ＯＮＵに入力するパケット群）は、ＯＮＵの下りバッファを介してＵＮＩ(User Network Interface)に出力される。ＯＮＵの下りバッファは、優先度種別ごとに蓄積領域が確保されており、下りデータの優先度種別に従って、下りデータを所定の領域に蓄積する。一般に、多くのＯＮＵにおいて、ＵＮＩの通信速度は、ＰＯＮ区間の通信速度に比べて低速なため、ＯＮＵの下りには大容量のバッファが必要になる。  
【０００５】
10Ｇ−ＥＰＯＮにおけるＯＮＵの下りバッファの実装方法としては、ＧＥ−ＰＯＮと同様の外付けメモリを用いた方法がある（非特許文献１）。外付けメモリを用いて実装する場合（以後外部バッファと呼ぶ）には、ＯＮＵのプロトコル制御用ＬＳＩ(Large Scale Integrated circuit)内に専用の制御回路とＩ／Ｏが必要になるため、プロトコル制御用ＬＳＩにメモリを内蔵する場合（以後内部バッファと呼ぶ）と比較して消費電力が大きい。
【０００６】
このため、近年ネットワーク装置に求められているネットワーク装置の省電力化を実現し、ＯＮＵの下りバッファの消費電力を削減するには、ＯＮＵの下りの外部バッファを、消費電力が小さい内部バッファにすることが有効である。
【０００７】
しかし、大容量のバッファを内蔵メモリで実装すると、ＯＮＵのプロトコル制御用ＬＳＩのチップ面積が増大し、ＬＳＩの製造コストが上昇する。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】”PAS6201 Product Brief"、PMC-Sierra
【発明の概要】
【発明が解決しようとする課題】
【０００９】
大容量のバッファが必要なネットワーク装置では、プロトコル制御用ＬＳＩのチップ面積の増大を抑えてそのバッファの消費電力を削減するために、ネットワーク装置の内部バッファの容量削減と省電力化の両立が課題である。
【００１０】
本発明は、ネットワーク装置のバッファを小容量の内部バッファで省電力化することを可能にするバッファ制御方法およびバッファ制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
第１の発明は、入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、内部バッファと外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、閾値フラグがＡの場合に外部バッファに起動指示を行い、閾値フラグがＢかつ外部バッファが空の場合に外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファに決定し、閾値フラグがＡの場合に入力パケットの蓄積先を外部バッファに決定する蓄積先制御処理ステップと、入力パケットの蓄積先に従って、入力パケットを内部バッファまたは外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、少なくとも入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、蓄積情報管理処理ステップで記録管理される情報に従い、内部バッファまたは外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップとを有し、内部バッファは、通常領域と起動用領域とから成り、蓄積先制御処理ステップは、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファの通常領域に決定し、閾値フラグがＡかつ外部バッファが起動処理を行っている場合に入力パケットの蓄積先を起動用領域に決定し、閾値フラグがＡかつ外部バッファの起動処理が完了している場合に入力パケットの蓄積先を外部バッファに決定する。
【００１４】
第２の発明は、入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、内部バッファと外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、閾値フラグがＡの場合に外部バッファに起動指示を行い、閾値フラグがＢかつ外部バッファが空の場合に外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファに決定し、閾値フラグがＡの場合に入力パケットの蓄積先を外部バッファに決定する蓄積先制御処理ステップと、入力パケットの蓄積先に従って、入力パケットを内部バッファまたは外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、少なくとも入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、蓄積情報管理処理ステップで記録管理される情報に従い、内部バッファまたは外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップとを有し、所定の閾値は、第１の閾値と第２の閾値（第１の閾値＞第２の閾値）とし、第１の閾値は、内部バッファに蓄積可能なデータ量の上限と同一の値とし、第２の閾値は、当該第２の閾値以下のデータ量が全て外部バッファに蓄積された状態であっても、データ量が第１の閾値になる前に外部バッファに蓄積されたパケットを全て出力できる値とし、判断処理ステップは、データ量が第１の閾値を上回ったことを検出した場合に閾値フラグをＡとし、第２の閾値を下回ったことを検出した場合に閾値フラグをＢとし、その他は閾値フラグの値を維持する。
【００１５】
第３の発明は、入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御方法において、内部バッファと外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理ステップと、閾値フラグがＡの場合に外部バッファに起動指示を行い、閾値フラグがＢかつ外部バッファが空の場合に外部バッファに停止指示を行う外部バッファ起動指示制御処理ステップと、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファに決定し、閾値フラグがＡの場合に入力パケットの蓄積先を外部バッファに決定する蓄積先制御処理ステップと、入力パケットの蓄積先に従って、入力パケットを内部バッファまたは外部バッファのいずれか一方に蓄積制御する蓄積制御処理ステップと、少なくとも入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理ステップと、蓄積情報管理処理ステップで記録管理される情報に従い、内部バッファまたは外部バッファのいずれか一方からパケットを出力する読み出し制御処理ステップとを有し、内部バッファと外部バッファの蓄積領域を入力パケットの優先度ごとに分割し、判断処理ステップと蓄積先制御処理ステップを入力パケットの優先度ごとに実施し、外部バッファ起動指示制御処理ステップは、各優先度の少なくとも１つの閾値フラグがＡの場合には外部バッファに起動指示を行い、各優先度の閾値フラグがすべてＢかつ外部バッファが空であれば、外部バッファに停止指示を行い、蓄積制御処理ステップは、入力パケットの優先度と同一の蓄積先制御処理ステップが決定した蓄積先に従って、入力パケットを内部バッファまたは外部バッファの当該優先度の蓄積領域に蓄積する。
【００１６】
また、内部バッファは、通常領域と起動用領域とから成り、内部バッファの通常領域と外部バッファの蓄積領域を優先度ごとに分割し、内部バッファの起動用領域は優先度ごとに分割せず、優先度ごとの蓄積先制御処理ステップは、当該優先度の閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファの通常領域に決定し、当該優先度の閾値フラグがＡかつ外部バッファが起動処理を行っている場合に当該優先度の入力パケットの蓄積先を起動用領域に決定し、当該優先度の閾値フラグがＡかつ外部バッファの起動処理が完了している場合に入力パケットの蓄積先を外部バッファに決定するようにしてもよい。
【００１８】
第４の発明は、入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御装置において、内部バッファと外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理手段と、閾値フラグがＡの場合に外部バッファに起動指示を行い、閾値フラグがＢかつ外部バッファが空の場合に外部バッファに停止指示を行う外部バッファ起動指示制御処理手段と、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファに決定し、閾値フラグがＡの場合に入力パケットの蓄積先を外部バッファに決定する蓄積先制御処理手段と、入力パケットの蓄積先に従って、入力パケットを内部バッファまたは外部バッファのいずれか一方に蓄積制御する蓄積制御処理手段と、少なくとも入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理手段と、蓄積情報管理処理手段で記録管理される情報に従い、内部バッファまたは外部バッファのいずれか一方からパケットを出力する読み出し制御処理手段とを備え、内部バッファは、通常領域と起動用領域とから成り、蓄積先制御処理手段は、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファの通常領域に決定し、閾値フラグがＡかつ外部バッファが起動処理を行っている場合に入力パケットの蓄積先を起動用領域に決定し、閾値フラグがＡかつ外部バッファの起動処理が完了している場合に入力パケットの蓄積先を外部バッファに決定する構成である。
【００１９】
第５の発明は、入力パケットを蓄積する内部バッファおよび外部バッファを備えるネットワーク装置のバッファ制御装置において、内部バッファと外部バッファに蓄積されたデータ量の和を計測し、当該データ量が所定の閾値を上回ったことを検出した場合に閾値フラグをＡとし、所定の閾値を下回ったことを検出した場合に閾値フラグをＢとする判断処理手段と、閾値フラグがＡの場合に外部バッファに起動指示を行い、閾値フラグがＢかつ外部バッファが空の場合に外部バッファに停止指示を行う外部バッファ起動指示制御処理手段と、閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファに決定し、閾値フラグがＡの場合に入力パケットの蓄積先を外部バッファに決定する蓄積先制御処理手段と、入力パケットの蓄積先に従って、入力パケットを内部バッファまたは外部バッファのいずれか一方に蓄積制御する蓄積制御処理手段と、少なくとも入力パケットの蓄積先とパケット長を記録管理する蓄積情報管理処理手段と、蓄積情報管理処理手段で記録管理される情報に従い、内部バッファまたは外部バッファのいずれか一方からパケットを出力する読み出し制御処理手段とを備え、内部バッファと外部バッファの蓄積領域は、入力パケットの優先度ごとに分割する構成であり、判断処理手段と蓄積先制御処理手段は、入力パケットの優先度ごとに備えられた構成であり、外部バッファ起動指示制御処理手段は、各優先度の少なくとも１つの閾値フラグがＡの場合には外部バッファに起動指示を行い、各優先度の閾値フラグがすべてＢかつ外部バッファが空であれば、外部バッファに停止指示を行う構成であり、蓄積制御処理手段は、入力パケットの優先度と同一の蓄積先制御処理手段が決定した蓄積先に従って、入力パケットを内部バッファまたは外部バッファの当該優先度の蓄積領域に蓄積する構成である。
【００２０】
また、内部バッファは、通常領域と起動用領域とから成り、内部バッファの通常領域と外部バッファの蓄積領域は、入力パケットの優先度ごとに分割し、内部バッファの起動用領域は優先度ごとに分割しない構成であり、優先度ごとの蓄積先制御処理手段は、当該優先度の閾値フラグがＢの場合に入力パケットの蓄積先を内部バッファの通常領域に決定し、当該優先度の閾値フラグがＡかつ外部バッファが起動処理を行っている場合に当該優先度の入力パケットの蓄積先を起動用領域に決定し、当該優先度の閾値フラグがＡかつ外部バッファの起動処理が完了している場合に入力パケットの蓄積先を外部バッファに決定する構成としてもよい。
【発明の効果】
【００２１】
本発明のバッファ制御方法およびバッファ制御装置は、内部バッファおよび外部バッファのデータ蓄積量に応じて外部バッファの起動を制御することにより、長い時間連続してパケットが入力されることが稀な場合には、バッファに蓄積されるデータ量が閾値未満となり、内部バッファのみで入力パケットを蓄積し、消費電力が大きい外部バッファを停止して省電力化することが可能である。
【００２２】
また、本発明は、内部バッファおよび外部バッファのデータ量を蓄積バイト数または蓄積パケット数に基づいて制御しているネットワーク装置のバッファにも適用することができる。
【００２３】
また、本発明は、蓄積されたデータ量が閾値を上回り、外部バッファの起動処理を行っている間は、入力パケットを内部バッファの起動用領域に蓄積するため、入力パケットの廃棄（データ損失）を防止することができる。
【００２４】
また、本発明は、２つの閾値を用いることにより、内部バッファと外部バッファとの頻繁な切り替えを防いでデータ損失を防止することができる。
【００２５】
また、本発明は、入力パケットの優先度ごとに内部バッファと外部バッファのそれぞれに蓄積領域を確保している場合であっても、データ損失無しで内部バッファと外部バッファとの切り替えが可能になる。なお、優先度は、パケット内のＣｏＳ（Class of Service) フィールドから抽出可能である。
【００２６】
また、本発明は、内部バッファの起動用領域を優先度ごとに備える必要がなく、内部バッファの容量をさらに削減することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施例１のバッファ制御装置の構成例を示す図である。
【図２】判断処理部１５の閾値フラグのステートマシンを示す図である。
【図３】実施例１における外部バッファ起動指示制御処理部１６の処理手順の例を示すフローチャートである。
【図４】蓄積先制御処理部１７の処理手順の例を示すフローチャートである。
【図５】本発明の実施例２のバッファ制御装置の構成例を示す図である。
【図６】実施例２における外部バッファ起動指示制御処理部１６の処理手順の例を示すフローチャートである。
【図７】10Ｇ−ＥＰＯＮにおけるＯＮＵの下りバッファを示す図である。
【発明を実施するための形態】
【実施例１】
【００２８】
図１は、本発明の実施例１のバッファ制御装置の構成例を示す。
図１において、実施例１のバッファ制御装置は、蓄積制御処理部１１、内部バッファ１２、外部バッファ１３、蓄積情報管理処理部１４、判断処理部１５、外部バッファ起動指示制御処理部１６、蓄積先制御処理部１７、読み出し制御処理部１８により構成される。
【００２９】
蓄積制御処理部１１は、蓄積先制御処理部１７が決定した蓄積先に従い、入力パケットを内部バッファ１２または外部バッファ１３に出力するとともに、入力パケットの長さ（以後、「パケット長」と呼ぶ）を計測し、入力パケットの蓄積先およびパケット長を少なくとも含む入力パケット情報を蓄積情報管理処理部１４、判断処理部１５および蓄積先制御処理部１７に出力する。
【００３０】
蓄積情報管理処理部１４は、入力パケット情報を記録管理し、読み出し制御処理部１８からの要求に応じて、内部バッファ１２および外部バッファ１３からの読み出しに用いる出力パケット情報を読み出し制御処理部１８および判断処理部１５に出力する。
【００３１】
読み出し制御処理部１８は、蓄積情報管理処理部１４から蓄積先とパケット長を含む出力パケット情報を取得し、当該出力パケット情報に基づいて内部バッファ１２または外部バッファ１３のいずれからパケットを読み出すかを決定し、パケットを読み出して出力する。例えば、同一優先度の場合、内部バッファ１２と外部バッファ１３を合せて最も古いパケットから出力される。
【００３２】
判断処理部１５は、入力パケット情報および出力パケット情報に基づき、内部バッファ１２および外部バッファ１３に蓄積されたデータ量を計測し、当該データ量が閾値以上か否かを判断し、当該閾値フラグを外部バッファ起動指示制御処理部１６および蓄積先制御処理部１７に出力する。
【００３３】
外部バッファ起動指示制御処理部１６は、閾値フラグおよび外部バッファ１３の状態に応じて、起動指示フラグにより外部バッファ１３の起動指示または停止指示を行い、外部バッファ１３が起動指示に対する初期化処理（以後、「起動処理」と呼ぶ）中か否かを示す起動処理フラグを蓄積先制御処理部１７に出力する。
【００３４】
蓄積先制御処理部１７は、入力パケット情報を入力するごとに、閾値フラグと起動処理フラグに基づいて入力パケットの蓄積先を決定し、蓄積制御処理部１１に出力する。
【００３５】
ここで、入力パケットの蓄積先は、内部バッファ１２の通常領域、内部バッファ１２の起動用領域、外部バッファ１３のいずれかとする。内部バッファ１２の通常領域と起動用領域は、内部バッファ１２の蓄積領域を分割して得られる蓄積領域である。内部バッファ１２の起動用領域は、外部バッファ起動指示制御処理部１６が外部バッファ１３に起動指示を行い、外部バッファ１３の起動処理が完了するまでの間に入力されるパケットを蓄積するための領域である。内部バッファ１２の通常領域は、外部バッファ１３の起動処理中を除いて、内部バッファ１２に入力パケットを蓄積する際に用いる蓄積領域である。
【００３６】
なお、外部バッファ１３の起動処理中の期間を考慮しない場合または無視できる場合には、内部バッファ１２の起動用領域は不要であり、蓄積先制御処理部１７は閾値フラグのみに応じて入力パケットの蓄積先を内部バッファ１２または外部バッファ１３のいずれかに決定してもよい。
【００３７】
以下、内部バッファ１２が通常領域と起動用領域を備え、外部バッファ１３の起動処理中を考慮する場合における判断処理部１５、外部バッファ起動指示制御処理部１６、蓄積先制御処理部１７の詳細について説明する。
【００３８】
(1) 判断処理部１５の詳細
判断処理部１５は、内部バッファ１２および外部バッファ１３に蓄積されたデータ量の計測と、当該データ量が閾値以上か否かを判断する。本実施例において計測するデータ量は、内部バッファ１２の蓄積バイト数と外部バッファ１３の蓄積バイト数の和（以後、「バッファ蓄積量」と呼ぶ）である。なお、当該バッファ蓄積量は、例えば、蓄積制御処理部１１から入力する入力パケット長の積算値から、蓄積情報管理処理部１４から入力する出力パケット長の積算値を減算することで計測可能である。また、バッファ蓄積量の計測と、当該バッファ蓄積量が閾値以上か否かの判断は、蓄積制御処理部１１から入力パケット情報を入力し、蓄積情報管理処理部１４から出力パケット情報を入力するごとに実施する。
【００３９】
ここで、内部バッファ１２および外部バッファ１３に蓄積されたデータ量の閾値判定を行う閾値として、第１の閾値と第２の閾値（第１の閾値＞第２の閾値）を用いる場合について説明するが、１つの閾値を用いる場合は第１の閾値＝第２の閾値とすればよい。
【００４０】
第１の閾値は、内部バッファ１２の通常領域に蓄積可能な蓄積バイト数の上限と同一の値であり、入力パケットの蓄積先を内部バッファ１２から外部バッファ１３に切り替える際に用いる閾値である。第２の閾値は、入力パケットの蓄積先を外部バッファ１３から内部バッファ１２に切り替える際に用いる閾値である。
【００４１】
バッファ蓄積量が第２の閾値を下回ると、判断処理部１５が出力する閾値フラグを入力する蓄積先制御処理部１７は、入力パケットの蓄積先を外部バッファ１３から内部バッファ１２へと切り替える。すなわち、バッファ蓄積量が第２の閾値を下回ると、入力パケットは全て内部バッファ１２に入力され、外部バッファ１３は蓄積したパケットを出力するのみとなる。この状態において、外部バッファ１３がパケットを全て出力する前に、バッファ蓄積量が第１の閾値を超えてしまい、再び外部バッファ１３にパケットが入力されるようになると、外部バッファ１３に未出力の古いパケットと新しく入力されたパケットとが混在する。混在した場合には、パケットの出力順序が保てなくなる。これを防ぐために、当該第２の閾値以下のバッファ蓄積量が全て外部バッファ１３に蓄積された状態であっても、バッファ蓄積量が再び外部バッファ１３への蓄積を開始する基準である第１の閾値になる前に、外部バッファ１３に蓄積されたパケットを全て出力できる値を第２の閾値とする。これにより、外部バッファ１３に蓄積されるパケットは、未出力の古いパケットと新しく入力されたパケットとが混在することが無くなる。
【００４２】
図２は、判断処理部１５の閾値フラグのステートマシンを示す。
図２において、判断処理部１５は、計測したバッファ蓄積量が第１の閾値を上回ったことを検出すると、閾値フラグを「１」にする（状態S3）。また、バッファ蓄積量が第２の閾値を下回ったことを検出すると、閾値フラグを「０」にする（状態S4) 。その他の状態においては、閾値フラグの値を維持する（状態S2）。なお、閾値フラグの初期値は「０」である（状態S1）。ここでは、請求項に記載の「閾値フラグがＡ」の状態が閾値フラグの「１」に対応し、「閾値フラグがＢ」の状態が閾値フラグの「０」に対応するが、閾値フラグの値は閾値を上回ったか下回ったかを判別できる値であればよく、「１」，「０」に限定されない。
【００４３】
(2) 外部バッファ起動指示制御処理部１６の詳細
外部バッファ起動指示制御処理部１６は、判断処理部１５の閾値フラグおよび外部バッファ１３の状態に応じて、外部バッファ１３に対して起動または停止指示を行い、外部バッファ１３が起動処理中か否かを示す起動処理フラグを蓄積先制御処理部１７に出力する。
【００４４】
図３は、実施例１における外部バッファ起動指示制御処理部１６の処理手順の例を示す。
図３において、判断処理部１５から入力する閾値フラグが「１」か「０」かを判断し（ステップＨ１）、閾値フラグが「０」の場合（ステップＨ１：No）には、ステップＨ１に戻る。閾値フラグが「１」の場合（ステップＨ１：Yes ）には、バッファ蓄積量が内部バッファ１２の通常領域に蓄積可能な蓄積量を超えて、外部バッファ１３への蓄積が必要であることを意味するため、起動指示フラグを「１」とし、外部バッファ１３に対して起動指示を出す（ステップＨ２）。また、外部バッファ１３の起動処理中は、起動処理中を示す起動処理フラグを「１」とし（ステップＨ２）、外部バッファ１３から起動処理の完了を通知されると（ステップＨ３）、起動処理フラグを「０」にする（ステップＨ４）。この閾値フラグが「１」、起動処理フラグが「０」になることにより、蓄積先制御処理部１７では入力パケットの蓄積先を内部バッファ１２から外部バッファ１３に切り替える。外部バッファ起動指示制御処理部１６は、バッファ蓄積量が第２の閾値を下回り、閾値フラグが「０」になるまで、起動指示フラグが「１」、起動処理フラグが「０」を継続する（ステップＨ５）。
【００４５】
次に、閾値フラグが「０」になると、蓄積先制御処理部１７は入力パケットの蓄積先を外部バッファ１３から内部バッファ１２の通常領域に切り替え、外部バッファ１３への蓄積は停止して読み出しだけが行われる。ここで、外部バッファ起動指示制御処理部１６は、外部バッファ１３から外部バッファ１３が空であることの通知を受けた場合（ステップＨ６）、起動指示フラグを「０」とし、外部バッファ１３に対して停止指示を出し（ステップＨ７）、ステップＨ１に戻る。なお、起動処理フラグおよび起動指示フラグの初期値は共に「０」である。
【００４６】
(3) 蓄積先制御処理部１７の詳細
蓄積先制御処理部１７は、判断処理部１５から入力する閾値フラグと、外部バッファ起動指示制御処理部１６から入力する起動処理フラグを基に、入力パケットの蓄積先を決定する。なお、入力パケットの蓄積先は、内部バッファ１２の通常領域、内部バッファ１２の起動用領域、外部バッファ１３のいずれかである。
【００４７】
図４は、蓄積先制御処理部１７の処理手順の例を示す。
図４において、蓄積先制御処理部１７は、蓄積制御処理部１１から入力パケット情報を受信するごとに以下の処理を実施する。判断処理部１５から入力する閾値フラグが「１」か「０」かを判断し（ステップＧ１）、閾値フラグが「０」の場合（ステップＧ１：No）には、バッファ蓄積量が内部バッファ１２の通常領域に全て蓄積可能であることを意味するため、入力パケットの蓄積先を内部バッファ１２の通常領域に決定する（ステップＧ３）。閾値フラグが「１」の場合（ステップＧ１：Yes ）には、バッファ蓄積量が第１の閾値以上となり、内部バッファ１２の通常領域に蓄積可能な蓄積量を超えたことを意味する。この場合には、外部バッファ１３が起動処理中か否かを起動処理フラグで確認する（ステップＧ２）。起動処理フラグが「１」で、外部バッファ１３が起動処理中であることを示す場合（ステップＧ２：Yes ）には、入力パケットの蓄積先を内部バッファ１２の起動用領域に決定する（ステップＧ４）。また、起動処理フラグが「０」の場合には、すでに外部バッファ１３は起動完了であることを意味するため、入力パケットの蓄積先を外部バッファ１３に決定する（ステップＧ５）。
【実施例２】
【００４８】
図５は、本発明の実施例２のバッファ制御装置の構成例を示す。
図５において、実施例２のバッファ制御装置を構成する蓄積制御処理部１１、内部バッファ１２、外部バッファ１３、蓄積情報管理処理部１４、判断処理部１５、外部バッファ起動指示制御処理部１６、蓄積先制御処理部１７、読み出し制御処理部１８は、実施例１と同様の機能を有する。本実施例の特徴は、判断処理部１５および蓄積先制御処理部１７を優先度ごとに備え、各優先度の判断処理部１５の判断結果に従って、外部バッファ起動指示制御処理部１６が外部バッファ１３の起動および停止指示を行うところにある。
【００４９】
以下、実施例１の各部との相違点を中心に説明する。
蓄積制御処理部１１は、入力パケットのＣｏＳ（Class of Service）フィールドから優先度を抽出し、蓄積情報管理処理部１４、判断処理部１５および蓄積先制御処理部１７に通知する入力パケット情報のパケット長、蓄積先に優先度を含める点が実施例１と異なる。
【００５０】
蓄積情報管理処理部１４は、蓄積制御処理部１１から入力パケットのパケット長、蓄積先、優先度を少なくとも含む入力パケット情報を記録管理する点が実施例１と異なる。
【００５１】
読み出し制御処理部１８は、蓄積情報管理処理部１４からパケット長、蓄積先、優先度を少なくとも含む出力パケット情報に基づいて、内部バッファ１２または外部バッファ１３の各優先度の蓄積領域または内部バッファ１２の起動用領域からパケットを読み出して出力する点が実施例１と異なる。
【００５２】
各優先度に対応する判断処理部１５は、蓄積制御処理部１１から入力パケット情報を入力し、当該情報が当該判断処理部１５の優先度か否かを判定する。当該判断処理部１５の優先度であった場合には、入力パケット長を当該判断処理部１５が計測するバッファ蓄積量に加算する。また、蓄積情報管理処理部１４から出力パケット情報を入力し、同様に当該情報が当該判断処理部１５の優先度か否かを判定する。当該判断処理部１５の優先度であった場合には、当該判断処理部１５が計測するバッファ蓄積量から出力パケット長を減算する。したがって、得られるバッファ蓄積量は、優先度ごとのバッファ蓄積量となり、各優先度の判断処理部１５で異なる値になる。また、第１の閾値および第２の閾値は優先度ごとに異なる値とし、閾値フラグを優先度ごとに備える。各優先度の閾値フラグは、各優先度に対応する判断処理部１５が出力する。
【００５３】
所定の優先度の第１の閾値は、内部バッファ１２の通常領域における当該優先度の蓄積領域に蓄積可能な蓄積バイト数と同一の値であり、所定の優先度の第２の閾値は当該優先度の第２の閾値以下の蓄積バイト数が全て外部バッファ１３に蓄積された状態であっても、当該優先度の蓄積バイト数が当該優先度の第１の閾値になる前に外部バッファ１３に蓄積されたパケットを全て出力できる値である。また、所定の優先度の閾値フラグは、所定の優先度のバッファ蓄積量に基づいて、図２と同一のステートマシンで値を制御する。
【００５４】
外部バッファ起動指示制御処理部１６は、優先度ごとの閾値フラグの値に応じて、外部バッファ１３に起動または停止指示を行う。
【００５５】
図６は、実施例２における外部バッファ起動指示制御処理部１６の処理手順の例を示す。
図６において、判断処理部１５から入力する各優先度の閾値フラグの論理和（ＯＲ）が「１」か「０」かを判断し（ステップＪ１）、「０」の場合（ステップＪ１：No）には、ステップＪ１に戻る。各優先度の閾値フラグの論理和が「１」の場合（ステップＪ１：Yes ）には、いずれかの優先度のバッファ蓄積量が内部バッファ１２の通常領域に蓄積可能な蓄積量を超えて、外部バッファ１３への蓄積が必要であることを意味するため、起動指示フラグを「１」とし、外部バッファ１３に対して起動指示を出す（ステップＪ２）。また、外部バッファ１３の起動処理中は、起動処理中を示す起動処理フラグを「１」とし（ステップＪ２）、外部バッファ１３から起動処理の完了を通知されると（ステップＪ３）、起動処理フラグを「０」とする（ステップＪ４）。ここで、各優先度のバッファ蓄積量のすべてが第２の閾値を下回り、各優先度の閾値フラグが「０」になってその否定論理和（ＮＯＲ）が「１」になるまで、起動指示フラグが「１」、起動処理フラグが「０」を継続する（ステップＪ５）。
【００５６】
次に、各優先度の閾値フラグの否定論理和が「１」になり、外部バッファ１３から外部バッファ１３が空であることの通知を受けた場合（ステップＪ６）、起動指示フラグを「０」にし、外部バッファ１３に対して停止指示を出し（ステップＪ７）、ステップＪ１に戻る。なお、起動処理フラグおよび起動指示フラグは、優先度によらずに単一の値であり、初期値は共に「０」である。また、各優先度の閾値フラグの論理和および否定論理和の演算は、外部バッファ起動指示制御処理部１６が実施する。
【００５７】
蓄積先制御処理部１７は、優先度ごとに備えられ、内部バッファ１２の通常領域と外部バッファ１３において優先度ごとに蓄積領域を分割し、内部バッファ１２の通常領域または外部バッファ１３に蓄積先を決定した際には、所定の優先度の蓄積領域に蓄積先を決定する。ここで、内部バッファ１２の起動用領域は、優先度ごとに蓄積領域を分割せず、起動処理フラグが「１」の場合には、閾値フラグが「１」の優先度の入力パケットは全て起動用領域に蓄積する。
【００５８】
なお、本実施例では、優先度を３種類としたが、３種類でなくても、その趣旨を逸脱しない範囲において種々変更し、適用可能である。
【実施例３】
【００５９】
本実施例の判断処理部１５は、実施例１または実施例２において内部バッファ１２および外部バッファ１３の蓄積バイト数の和からバッファ蓄積量を計測していたものを、蓄積パケット数で計測することを特徴とする。このため、第１の閾値および第２の閾値は、実施例１，２と異なる値となる。第１の閾値は、優先度ごとの内部バッファ１２の蓄積容量に蓄積可能なパケット数とする。第２の閾値は、当該第２の閾値以下のパケット数が全て外部バッファ１３に蓄積された状態において、パケットが連続入力された場合であっても蓄積パケット数が第１の閾値になる前に外部バッファ１３に蓄積されたパケットを全て出力できる値である。
【００６０】
また、バッファ蓄積量の計測においては、パケットが入力された際にバッファ蓄積量を１加算し、パケットが出力されると当該バッファ蓄積量を１減算する。入力パケットの有無および出力パケットの有無に関する情報の取得先は任意である。
【符号の説明】
【００６１】
１１  蓄積制御処理部
１２  内部バッファ
１３  外部バッファ
１４  蓄積情報管理処理部
１５  判断処理部
１６  外部バッファ起動指示制御処理部
１７  蓄積先制御処理部
１８  読み出し制御処理部
【図１】
0005411090.tif 000002
【図２】
0005411090.tif 000003
【図３】
0005411090.tif 000004
【図４】
0005411090.tif 000005
【図５】
0005411090.tif 000006
【図６】
0005411090.tif 000007
【図７】
0005411090.tif 000008