(57)【特許請求の範囲】
【請求項１】
入力したパケットを、このパケットの属性情報に基づいて複数のキューのいずれかに格納し、前記キューからスケジューラを用いてパケットを出力回線に出力するノード装置において、
入力パケットのヘッダ情報，入力回線の識別子，波長を含む属性情報を用いて格納するキューを決定するフロー識別部と、
前記キューに対する割り当て帯域のスケジューリングに必要な情報を保持するキュー情報管理部と、
前記キューからのパケット出力を制御するスケジューラと、
前記キュー各々に対応して前記キューに収容しているフローの数を推定し、収容するフロー数に応じて対応する前記キューに対して割り当てる帯域を変更する複数のフロー数推定部と
を備え、
フロー数推定部は、過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、パケット入力時に入力パケットのフロー識別子を用いて前記履歴を検索することによってフロー数を推定する
ことを特徴とするノード装置。
【請求項２】
入力したパケットを、このパケットの属性情報に基づいて複数のキューのいずれかに格納し、前記キューからスケジューラを用いてパケットを出力回線に出力するノード装置において、
入力パケットのヘッダ情報，入力回線の識別子，波長を含む属性情報を用いて格納するキューを決定するフロー識別部と、
前記キューに対する割り当て帯域のスケジューリングに必要な情報を保持するキュー情報管理部と、
前記キューからのパケット出力を制御するスケジューラと、
前記キュー各々に対応して前記キューに収容しているフローの数を推定し、収容するフロー数に応じて対応する前記キューに対して割り当てる帯域を変更する複数のフロー数推定部と
を備え、
前記フロー数推定部は、
過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、
自身に入力した全てのパケットの合計帯域を計測し、パケット入力時にこのパケットのフロー識別子を用いて前記履歴を検索することによって前記パケットが属するフローの使用帯域を推定する帯域推定を複数回行って自身で扱う全フローの平均帯域を推定し、自身への全入力パケットの合計帯域と前記平均帯域を用いてフロー数を推定する
ことを特徴とするノード装置。
【請求項３】
請求項１又は２記載のノード装置において、
前記スケジューラからの出力回線上の余剰帯域を求める余剰帯域計算部と、
この余剰帯域に基づいて割り当て帯域を再計算して前記キュー情報管理部における情報を変更する割り当て帯域計算部と
を新たに備え、
前記フロー数推定部は、前記出力回線上に余剰帯域がある場合は、対応するキューの収容フロー数に応じて前記余剰帯域を各キューに再度割り当てる
ことを特徴とするノード装置。
【請求項４】
入力したパケットを複数のポリサを用いて廃棄制御を行い、廃棄を行わなかった場合には前記パケットをＦＩＦＯキューに格納し、このＦＩＦＯキューからパケットを出力回線に出力するノード装置において、
入力パケットのヘッダ情報，入力回線の識別子，波長を含む属性情報を用いて適用するポリサを決定するフロー識別部と、
前記ポリサに対する割り当て帯域を含むポリシングに必要な情報を保持するポリシング情報管理部と、
入力したパケットを格納するＦＩＦＯキューと、
前記ポリサに対応してこのポリサに収容されているフローの数を推定し、収容されているフローの数に応じて各々のポリサに対して割り当てる帯域を変更するフロー数推定部と、
前記出力回線上の余剰帯域を求める余剰帯域計算部と、
この余剰帯域計算部が求めた余剰帯域に基づいて割り当て帯域を再計算する割り当て帯域計算部と
を備え、
前記フロー数推定部は、前記出力回線上に余剰帯域がある場合には前記ポリサの収容フロー数に応じて前記余剰帯域を前記ポリサに再度割り当てる
ことを特徴とするノード装置。
【請求項５】
請求項４記載のノード装置において、
前記フロー数推定部は、過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、パケット入力時に入力パケットのフロー識別子を用いて前記履歴を検索することによってフロー数を推定することを特徴とするノード装置。
【請求項６】
請求項４記載のノード装置において、
前記フロー数推定部は、
過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、
自身に入力した全てのパケットの合計帯域を計測し、パケット入力時にこのパケットのフロー識別子を用いて前記履歴を検索することによって前記パケットが属するフローの使用帯域を推定する帯域推定を複数回行って自身で扱う全フローの平均帯域を推定し、自身への全入力パケットの合計帯域と前記平均帯域を用いてフロー数を推定する
ことを特徴とするノード装置。
【請求項７】
請求項５または６記載のノード装置において、
前記フロー数推定部は、
過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、
この到着フロー履歴記憶部に記憶された履歴の各エントリが、フロー識別子，エントリが登録された時刻、入力パケットによって前記エントリが参照された回数，前記エントリを参照した入力パケットのパケット長合計を含む履歴情報のうちの少なくとも１つを備える
ことを特徴とするノード装置。
【請求項８】
請求項５または７記載のノード装置において、
前記フロー数推定部が、
過去に到着したフローの履歴をエントリとして格納し、格納されている格納エントリにフロー識別子を登録する到着フロー履歴記憶部と、
入力パケットのフロー識別子と、前記到着フロー履歴記憶部に格納されている中から選んだエントリに登録されているフロー識別子とが一致する一致確率を保存する一致確率保存部と、
前記一致確率から推定フロー数を計算するフロー数計算部と
を備え、
前記フロー数推定部は、パケット入力時に入力パケットのフロー識別子と到着フロー履歴から選んだ選択エントリに登録されているフロー識別子とを比較して一致確率を求め、求めた一致確率の平均を前記一致確率保存部に保存し、前記比較が不一致であれば、ある確率で前記選択エントリに入力パケットのフロー識別子を登録し、
前記フロー数計算部は、前記一致確率から算出した値を推定フロー数とする
ことを特徴とするノード装置。
【請求項９】
請求項６または７記載のノード装置において、
前記フロー数推定部は、
各エントリにフロー識別子，ヒット数，パケット長合計をエントリとして登録する到着フロー履歴記憶部と、
全フローの平均レートの推定値である推定平均レートを保存する推定平均レート保存部と、
対応するキューに到着するトラヒックを計測する入力トラヒック計測部と、
前記推定平均レートと前記入力トラヒック計測部が計測した入力トラヒックとからフロー数を計算するフロー数計算部と
を備え、
前記フロー数推定部は、
パケット入力時に、入力した入力パケットのフロー識別子と到着フロー履歴記憶部に登録された中からランダムに選んだ選択エントリに登録されているフロー識別子とを比較し、
この比較が一致した場合には、ヒット回数およびパケット長合計を更新し、
前記比較が不一致である場合は、所定の確率で前記選択エントリに入力パケットのフロー識別子を登録し、ヒット数およびパケット長合計を１および入力パケットのバイト数へと設定し、
前記入力パケットが属するフローが使用している帯域を前記ヒット数およびパケット長合計をもとにして推定して推定帯域を求め、
前記推定帯域をもとに自身に収容されている全フローの平均帯域の推定値を更新し、自身への全パケットの合計帯域と前記平均帯域を用いてフロー数を推定する
ことを特徴とするノード装置。
【請求項１０】
請求項５〜９いずれか１項記載のノード装置において、
到着したフローの履歴を用いてパケット制御を行う廃棄制御部を備え、
この廃棄制御部は、
特定パケットが到着した時に、到着したフローの履歴のヒット数またはパケット長合計が所定の閾値を超えた場合には、前記キュー情報管理部における前記特定パケットの廃棄優先度を高くする
ことを特徴とするノード装置。
【請求項１１】
請求項６，７，および９のいずれか１項に記載のノード装置において、
１本あたりのフローに与えるべき帯域を計算する目標帯域計算部と、
この目標帯域計算部が算出した目標帯域と到着フロー履歴を用いてパケット廃棄の制御を行う廃棄制御部と
を備え、
前記目標帯域計算部は、
出力回線の容量と全フロー数推定部における推定フロー数を用いて目標帯域を計算し、
特定パケットが到着した時に前記特定パケットが属するフローの帯域を計算した際、この計算した帯域が目標帯域を超えた場合には、
前記キュー情報管理部における前記特定パケットの廃棄優先度を高くする
ことを特徴とするノード装置。
【請求項１２】
請求項１０または１１記載のノード装置において、
パケットのヘッダに廃棄優先度の書き込みを行う廃棄優先度設定部を備え、
到着したフローの履歴におけるヒット数およびパケット長合計がある閾値を超えている場合、または、入力した入力パケットの属するフローの推定帯域が予め設定されている目標帯域を超えている場合において、
対応するキューのキュー長がある閾値を超えていなければ、前記入力パケットの廃棄を行わず、前記キュー情報管理部における前記入力パケットの廃棄優先度を高くし、
前記キュー情報管理部において前記入力パケットが高廃棄率に設定されてあり、かつ前記入力パケットを格納するキューのキュー長が、予め定められた閾値を超えている場合には、前記入力パケットを廃棄する
ことを特徴とするノード装置。
【請求項１３】
請求項５〜９のいずれか１項に記載のノード装置において、
前記キューに到着するフロー数が、前記キューに用意された到着フロー履歴数以下になったことを検出する手段と、
前記キューに到着するフロー数が、前記キューに用意された到着フロー履歴数よりも多くなったことを検出する手段と
を備え、
前記キューに到着するフロー数が、前記キューに用意された到着フロー履歴数以下の場合には、前記到着フロー履歴に登録されているフロー数から推定フロー数を求める
ことを特徴とするノード装置。
【請求項１４】
請求項５〜９いずれか１項に記載のノード装置において、
前記キューに到着するフロー数が、前記キューに用意された到着フロー履歴数以下になったことを検出する手段と、
前記キューに到着するフロー数が、前記キューに用意された到着フロー履歴数よりも多くなったことを検出する手段と
を備え、
前記キューに到着するフロー数が前記キューに用意された到着フロー履歴数以下になった場合には、前記到着フロー履歴を削減し、
前記キューに到着するフロー数が前記キューに用意された到着フロー履歴数よりも多くなった場合には、前記到着フロー履歴を増加する
ことを特徴とするノード装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、広帯域網において、フローあるいはコネクション間の公平性を実現するルータあるいはスイッチ等からなるノード装置に関する。
【０００２】
【従来の技術】
品質保障を行わないトラヒック（いわゆるBest effortトラヒック）においては、ユーザは帯域や遅延等の品質に関する保障を受けることはできないが、網との契約を行わずに自由な帯域でデータを送信することができる。このようなトラヒックに対しては、各ユーザのフローやコネクションが各々公平に帯域を使用できることが重要であり、特定のユーザが網帯域を占有することで他のユーザが帯域を使用できなくなる事態は避けるべきである。
【０００３】
このため、ルータあるいはスイッチ等のノードにおいては、以下のような方式を用いることによって公平性を実現することが提案されている。なお、以下、簡単のため、”ルータあるいはスイッチ”を単に”ノード装置”と示し、”フローおよびコネクション”を単に”フロー”と示し、”パケットおよびセル”を単に”パケット”と示す。
【０００４】
第一の方式は、文献１に示されているように、ネットワーク内の全ノード装置においてフロー毎にキューを割り当てる方式である（文献１：M. Katavenis他, "Weighted Round-Robin Cell Multiplexing in a General-Purpose ATM Switch Chip", IEEE Journals on Salectec Areas in Communication, Col.9, No.8, 1991やM. Shreedher他, "Efficient fair queueing using deficit round-robin", IEEE/ACM Transactions on Networking, vol.4, no.3, pp.375-385, 1996等）。
【０００５】
この方式のスケジューリングアルゴリズムでは、各キュー対して明示的に品質を保障することが可能であり、また各キュー間で公平に帯域を共用させることも可能である。従って、これらのスケジューリングアルゴリズムを用いて各キューからのパケット出力制御を行うことにより、各フローに対して公平に帯域を割り当てることが可能である。本方式の一例として、文献２（特開平１１−２１５１４２号公報）において、各ＡＴＭコネクション毎にキュー（セルバッファ）を用意することで、各コネクション毎に公平に帯域を分配する方式が示されている。
【０００６】
第二の方式は、ノード装置において入力回線毎や、出力回線毎、サービスクラス毎等の集約された単位毎にキューを用意し、各キュー内には複数のフローを収容するが、フロー毎にパケットの廃棄制御を行うことによって公平性を実現する方式である。第二の方式の一例として、文献３（特開平１１−８８３４３号公報）において、最低保証帯域以上のコネクションでかつ共用帯域に余裕がないコネクションのセルをパケット単位で通過阻止して廃棄することにより、コネクション毎の公平性を実現する方式が示されている。
【０００７】
第三の方式は、網の入り口の比較的低速なノード装置（以下エッジノード）において、各フローの使用帯域に応じてパケットの廃棄優先度をヘッダに書き込み、網内部の高速なノード装置（以下コアノード）においては、ヘッダに書き込まれている廃棄優先度の情報に基づいてパケットの廃棄制御を行う方式である。網内部のノード装置においては、輻輳が発生すると廃棄優先度の高いパケットを優先して廃棄することにより公平性を実現する。
【０００８】
この第三の方式の一例として、文献４に示される方式では、エッジノードにおいて設定帯域以上の帯域を使用しているフローに関しては、このフローのパケットのうち設定帯域以上に相当する個数のパケットの廃棄優先度を高優先に設定し、コアノードにおいては高優先に設定されたパケットを優先的に廃棄する（文献４：S. Blake他, "An Architecture for Diffentiated Services" (IETF RFC-2475, 1998)）。
【０００９】
第四の方式は、第三の方式とほぼ同様であるが、エッジノードにおいてパケットの優先度をヘッダに書き込むのではなく、このパケットが属するフローの使用帯域をパケットのヘッダに書き込む点が異なる。本方式の一例として、文献５に示される方式では、エッジノードにおいて各フローが使用している帯域をパケットのヘッダに書き込み、コアノードではフロー１本あたりの公平な使用帯域量を計算し、前記帯域量を超えているパケットに対しては超えている帯域量に応じて確率的にパケットを廃棄する（文献５：I. Stoica他, "Core-stateless Fair Queueing: Achieving Approximately Fair Bandwidth Allocations in High Speed Networks" (SIGCOMM'98, 1998)）。
【００１０】
【発明が解決しようとする課題】
第一の問題点は、前記第一の方式を広帯域網に適用することが難しいことである。広帯域網においては回線速度が非常に高速であり、また収容するフロー数も膨大であるため、第一の方式では多くのキューを高速にスケジューリングする必要がある。しかしながら、現在のハードウエア技術ではＬＳＩ外部の大容量なメモリは高速に動作させることができず、またＬＳＩ内蔵の高速なメモリはこの容量が限定されるため、第一の方式に必要な大規模かつ高速な記憶資源を実現することが困難な状況である。
【００１１】
第二の問題点は、前述した第二の方式を広帯域網に適用することが難しいことである。第二の方式においては、管理するキューの数が少ないためこれらのキューを高速に実現することは可能であるが、廃棄制御に関してはフロー毎に管理する必要がある。このため、やはり大規模かつ高速な記憶資源が必要であり、第一の方式と同様に広帯域網に対応することは難しい。
【００１２】
第三の問題点は、前記第三の方式では正確な公平性を実現できないことである。第三の方式では、廃棄優先と非優先の２種類の情報しかパケットが持たない。このため、第三の方式では、廃棄優先度を決める閾値以上のフローと閾値以下のフローの公平性は向上しても、閾値以上のフロー間の公平性や、閾値以下のフロー間の公平性は向上しない。
【００１３】
また、エッジノードでは、網内部の輻輳とは無関係に廃棄優先度が決められるため、エッジノードでの輻輳度とネットワーク内部での輻輳度が大きく異なれば公平性は大きく劣化する。
例えば、エッジノードに比べて網内部が遥かに輻輳している場合、エッジノードでは殆どのパケットの廃棄優先度が低く設定され、コアノードでは廃棄優先度の低いパケットが多数廃棄される。このため、第三の方式では、わずかしか帯域を使用していないフローのパケットでも、廃棄されることになる。
【００１４】
第四の問題点は、前記第四の方式ではパケットヘッダ内に帯域情報を持たせるため、プロトコルの変更が必要であることである。第四の方式を実装していないルータでは、拡張されたパケットヘッダを扱うことができないため、網内の全てのノードを更新する必要がある。
【００１５】
以上をまとめると、第一および第二の問題点は、ノード装置においてフロー毎の情報を持たなければならない点である。高速性を要求されるノード装置においては、多くの情報を保持することは難しい。また第三および第四の問題点は、パケット自身にフローの関する情報を保持させる点にある。パケット自身に詳細な情報を持たせるためには、プロトコル変更が必要であり実現性に乏しい。また、より実現しやすくするため、パケットに持たせる情報を廃棄優先度に限定してプロトコル変更を最小限とした場合、網帯域使用の公平性が劣化する。
【００１６】
本発明は、以上のような問題点を解消するためになされたものであり、広帯域網においても、フロー間で公平に帯域を利用できるようにすることを目的とする。
【００１７】
【課題を解決するための手段】
本発明のノード装置は、入力したパケットを、このパケットの属性情報に基づいて複数のキューのいずれかに格納し、キューからスケジューラを用いてパケットを出力回線に出力するノード装置において、入力パケットのヘッダ情報，入力回線の識別子，波長を含む属性情報を用いて格納するキューを決定するフロー識別部と、キューに対する割り当て帯域のスケジューリングに必要な情報を保持するキュー情報管理部と、キューからのパケット出力を制御するスケジューラと、キュー各々に対応してキューに収容しているフローの数を推定し、収容するフロー数に応じて対応するキューに対して割り当てる帯域を変更する複数のフロー数推定部とを備えたものである。
この発明によれば、各キューに対応してこのキューのフロー数が推定され、各キューにおいて推定されたフロー数によって、各キューへ割り当てられる帯域が変更される。
【００１８】
上記発明において、スケジューラからの出力回線上の余剰帯域を求める余剰帯域計算部と、この余剰帯域に基づいて割り当て帯域を再計算してキュー情報管理部における情報を変更する割り当て帯域計算部とを新たに備え、フロー数推定部は、出力回線上に余剰帯域がある場合は、対応するキューの収容フロー数に応じて余剰帯域を各キューに再度割り当てるようにしてもよい。
【００１９】
本発明の他の形態のノード装置は、入力したパケットを複数のポリサを用いて廃棄制御を行い、廃棄を行わなかった場合にはパケットをＦＩＦＯキューに格納し、このＦＩＦＯキューからパケットを出力回線に出力するノード装置において、入力パケットのヘッダ情報，入力回線の識別子，波長を含む属性情報を用いて適用するポリサを決定するフロー識別部と、ポリサに対する割り当て帯域を含むポリシングに必要な情報を保持するポリシング情報管理部と、入力したパケットを格納するＦＩＦＯキューと、ポリサに対応してこのポリサに収容されているフローの数を推定し、収容されているフローの数に応じて各々のポリサに対して割り当てる帯域を変更するフロー数推定部と、出力回線上の余剰帯域を求める余剰帯域計算部と、この余剰帯域計算部が求めた余剰帯域に基づいて割り当て帯域を再計算する割り当て帯域計算部とを備えたものであり、フロー数推定部は、出力回線上に余剰帯域がある場合にはポリサの収容フロー数に応じて余剰帯域をポリサに再度割り当てる。
【００２０】
上記発明において、フロー数推定部は、過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、パケット入力時に入力パケットのフロー識別子を用いて履歴を検索することによってフロー数を推定する。
また、上記発明において、フロー数推定部は、過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、自身に入力した全てのパケットの合計帯域を計測し、パケット入力時にこのパケットのフロー識別子を用いて履歴を検索することによってパケットが属するフローの使用帯域を推定する帯域推定を複数回行って自身で扱う全フローの平均帯域を推定し、自身への全入力パケットの合計帯域と平均帯域を用いてフロー数を推定する。
【００２１】
上記発明において、フロー数推定部は、過去に到着したフローの履歴を格納する到着フロー履歴記憶部を備え、この到着フロー履歴記憶部に記憶された履歴の各エントリが、フロー識別子，エントリが登録された時刻、入力パケットによってエントリが参照された回数，エントリを参照した入力パケットのパケット長合計を含む履歴情報のうちの少なくとも１つを備える。
【００２２】
上記発明において、フロー数推定部は、過去に到着したフローの履歴をエントリとして格納し、格納されている格納エントリにフロー識別子を登録する到着フロー履歴記憶部と、入力パケットのフロー識別子と、到着フロー履歴記憶部に格納されている中から選んだエントリに登録されているフロー識別子とが一致する一致確率を保存する一致確率保存部と、一致確率から推定フロー数を計算するフロー数計算部とを備え、フロー数推定部は、パケット入力時に入力パケットのフロー識別子と到着フロー履歴から選んだ選択エントリに登録されているフロー識別子とを比較して一致確率を求め、求めた一致確率の平均を一致確率保存部に保存し、比較が不一致であれば、ある確率で選択エントリに入力パケットのフロー識別子を登録し、フロー数計算部は、一致確率から算出した値を推定フロー数とする。
【００２３】
上記発明において、フロー数推定部は、各エントリにフロー識別子，ヒット数，パケット長合計をエントリとして登録する到着フロー履歴記憶部と、全フローの平均レートの推定値である推定平均レートを保存する推定平均レート保存部と、対応するキューに到着するトラヒックを計測する入力トラヒック計測部と、推定平均レートと入力トラヒック計測部が計測した入力トラヒックとからフロー数を計算するフロー数計算部とを備え、フロー数推定部は、パケット入力時に、入力した入力パケットのフロー識別子と到着フロー履歴記憶部に登録された中からランダムに選んだ選択エントリに登録されているフロー識別子とを比較し、この比較が一致した場合には、ヒット回数およびパケット長合計を更新し、比較が不一致である場合は、所定の確率で選択エントリに入力パケットのフロー識別子を登録し、ヒット数およびパケット長合計を１および入力パケットのバイト数へと設定し、入力パケットが属するフローが使用している帯域をヒット数およびパケット長合計をもとにして推定して推定帯域を求め、推定帯域をもとに自身に収容されている全フローの平均帯域の推定値を更新し、自身への全パケットの合計帯域と平均帯域を用いてフロー数を推定する。
【００２４】
上記発明において、到着したフローの履歴を用いてパケット制御を行う廃棄制御部を備え、この廃棄制御部は、特定パケットが到着した時に、到着したフローの履歴のヒット数またはパケット長合計が所定の閾値を超えた場合には、キュー情報管理部における特定パケットの廃棄優先度を高くするようにしてもよい。
【００２５】
上記発明において、１本あたりのフローに与えるべき帯域を計算する目標帯域計算部と、この目標帯域計算部が算出した目標帯域と到着フロー履歴を用いてパケット廃棄の制御を行う廃棄制御部とを備え、目標帯域計算部は、出力回線の容量と全フロー数推定部における推定フロー数を用いて目標帯域を計算し、特定パケットが到着した時に特定パケットが属するフローの帯域を計算した際、この計算した帯域が目標帯域を超えた場合には、キュー情報管理部における特定パケットの廃棄優先度を高くするようにしてもよい。
【００２６】
上記発明において、パケットのヘッダに廃棄優先度の書き込みを行う廃棄優先度設定部を備え、到着したフローの履歴におけるヒット数およびパケット長合計がある閾値を超えている場合、または、入力した入力パケットの属するフローの推定帯域が予め設定されている目標帯域を超えている場合において、対応するキューのキュー長がある閾値を超えていなければ、入力パケットの廃棄を行わず、キュー情報管理部における入力パケットの廃棄優先度を高くし、キュー情報管理部において入力パケットが高廃棄率に設定されてあり、かつ入力パケットを格納するキューのキュー長が、予め定められた閾値を超えている場合には、入力パケットを廃棄するようにしてもよい。
【００２７】
上記発明において、キューに到着するフロー数が、キューに用意された到着フロー履歴数以下になったことを検出する手段と、キューに到着するフロー数が、キューに用意された到着フロー履歴数よりも多くなったことを検出する手段とを備え、キューに到着するフロー数が、キューに用意された到着フロー履歴数以下の場合には、到着フロー履歴に登録されているフロー数から推定フロー数を求めるようにしてもよい。
【００２８】
上記発明において、キューに到着するフロー数が、キューに用意された到着フロー履歴数以下になったことを検出する手段と、キューに到着するフロー数が、キューに用意された到着フロー履歴数よりも多くなったことを検出する手段とを備え、キューに到着するフロー数がキューに用意された到着フロー履歴数以下になった場合には、到着フロー履歴を削減し、キューに到着するフロー数がキューに用意された到着フロー履歴数よりも多くなった場合には、到着フロー履歴を増加するようにしてもよい。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態について図を参照して説明する。
＜実施の形態１＞
図１は本発明の実施の形態におけるノード装置の構成を示す構成図である。このノード装置は、到着したパケットを格納するキューを決定するフロー識別部１０１、キュー毎に収容するフロー数を推定する複数のフロー数推定部１０３、フロー数推定部１０３と対の複数のキュー１０４、割り当て帯域やキュー長等のスケジューリングに必要な情報を保持するキュー情報管理部１０２、キュー情報管理部１０２の情報をもとに各キューからのパケット出力を制御するスケジューラ１０５を備える。
【００３０】
フロー識別部１０１は、入力パケットが属するフローの識別子と、このフローが属する品質クラスと、入力回線番号等のフロー毎に一意である情報とを用い、入力したパケットを格納すべきキューを選択する。なお、フローの識別子とは、「ＩＰ  ｖｅｒｓｉｏｎ４」を例に説明すると、送信元ＩＰアドレス，送信先ＩＰアドレス，第四層プロトコル番号，送信元ポート番号，送信先ボート番号の組である。また、品質クラスは、「ＩＰ  ｖｅｒｓｉｏｎ４」を例に説明すると、ＩＰヘッダ中のＴＯＳフィールドとなる。
【００３１】
キュー選択に関しては、同一のフローに属するパケットは同一のキューへと格納するという条件さえ満たしていればよい。従って、キューを選択する際には、上述したフローの識別子全ての情報を用いる必要は無い。例えば、キュー数が少ない場合には、入力ポート番号のみでキューを選択しても良く、またキュー数が多い場合には、全ての情報を用いてキューを選択しても良い。
また、上述した情報からキューを選択する際のアルゴリズムも任意であり、例えば、上述した情報の値の合計をキュー数で割った剰余をキューの識別子として用いたり、また情報をビット列として羅列しこれをＣＲＣ−ｘで割った剰余をキューの識別子として用いても良い。
【００３２】
スケジューラ１０５はキュー情報管理部１０２において設定された各キューの割り当て帯域に従ってってパケット出力が可能なスケジューリングアルゴリズムを採用していれば、この構成は任意である。ただし、本実施の形態においては出力回線に余剰帯域がある場合、この余剰帯域を各キューに対して公平に分配する機構を備えているとする。このようなスケジューリングアルゴリズムとしては、ＷＲＲやＤＲＲなどが挙げられる。
【００３３】
キュー情報管理部１０２の構成例を図２に示す。キュー情報管理部１０２はスケジューリングを行う際に必要な情報を格納するテーブルであり、例えば図２のように、各キューの割り当て帯域およびキュー長等を格納する。各キューへの割り当て帯域はこのキューに対応するフロー数推定部１０３において推定フロー数が更新される毎に動的に変更される。
【００３４】
フロー数推定部１０３は対応するキュー１０４内に収容されているフローの数を推定する。フロー数推定部においてフロー毎の情報が管理できればフロー数を正確に推定することができるが、フロー数に比例しない情報量を実現することが本発明の目的であるため、フロー数推定のアルゴリズムとしてはフロー数に比例しない固定量の記憶資源のみを用いて推定を行わなければならない。条件を満たすアルゴリズムとして文献６に紹介されている方式があり、本実施の形態ではこの方式を参考にフロー数推定を行う（文献６：T. J. Ott他, "SRED: Stabilized RED", IEEE INFOCOM'96）。
【００３５】
図３は、本実施の形態におけるフロー数推定部１０３の構成を示す構成図である。フロー数推定部１０３は、複数のフロー識別子を保持する到着フロー履歴記憶部１０６、一致確率保存部１０７、フロー数計算部１０８を備える。文献６に示された方式では、回線全体のフロー数を推定するため到着フロー履歴は１つであるが、本実施の形態においては、キュー毎にフロー数を推定するため、到着フロー履歴を各フロー数推定部毎に用いる。すなわち、本実施の形態では、各フロー数推定部１０３毎に、到着フロー履歴記憶部１０６を備えるようにした。
【００３６】
以下、フロー数推定部１０３の動作について、図４のフローチャートを用いて説明する。図１に示すノード装置にパケットが到着したとき、フロー識別部１０１において到着したパケットが属するフローの識別子や品質クラス，入力回線番号などを用い、到着したパケットを格納するキュー１０４を決定する。次いで、格納先のキュー１０４に対応するフロー数推定部１０３において、キュー１０４内の推定フロー数を以下の様に更新する。
【００３７】
まず、ステップＳ４０１で、フロー数推定部１０３のフロー数計算部１０８は、到着フロー履歴記憶部１０６に記憶されている到着フロー履歴から、１つのエントリ（履歴エントリ）をランダムに選択する。次いで、ステップＳ４０２で、フロー数計算部１０８は、ランダムに選択した履歴エントリに書かれているフロー識別子と入力したパケットのフロー識別子を比較する。この比較の結果、２つが一致しなければ、ステップＳ４０３に進み、一致確率保存部１０７に保存されている一致確率の時間平均に（１−α）を乗じて新たな一致確率とする。なお、αは、予め設定されている規定値である。次いで、フロー数計算部１０８は、任意の確率ｑ（ステップＳ４０４）によって、エントリのフロー識別子を入力したパケットのフロー識別子に更新する（ステップＳ４０５）。
【００３８】
一方、ステップＳ４０２の比較で一致した場合、ステップＳ４０６に進み、フロー数計算部１０８は、一致確率保存部１０７に保存されている一致確率の時間平均に（１−α）を乗じ、かつαを加算して新たな一致確率とする。
この後、ステップＳ４０７で、フロー数計算部１０８は、更新された新たな一致確率の逆数を求め、これを推定フロー数とする。
【００３９】
以上のように推定フロー数が更新された後、フロー数推定部１０３は、更新された推定フロー数に定数を乗じた値を割り当て帯域としてキュー情報管理部１０２に書き込む。最後に、フロー数推定部１０３は、入力パケットを適切なキュー１０４に格納して処理を終了する。なお、本実施の形態においては、余剰帯域が生じた場合スケジューラ１０５が、これを公平に分配する機構を備えているとしているため、割り当て帯域の総合計がリンク容量以下となってもよい。
一方、パケット出力時には、キュー情報管理部１０２に書き込まれた割り当て帯域に従ってい、スケジューラ１０５が、各キュー１０４からのパケット出力を行う。
【００４０】
＜実施の形態２＞
つぎに、本発明の他の形態について説明する。図５は、本発明の他の形態におけるノード装置の構成を示す構成図である。本実施の形態のノード装置は、前述した実施の形態の構成に加え、出力回線上の余剰帯域を求める余剰帯域計算部２０６と、割り当て帯域計算部２０７とを新たに備えるようにしたものである。割り当て帯域計算部２０７は、回線容量を全キューの推定フロー数の合計で割ることにより、フロー１本あたりの割り当て帯域を計算し、これに各キューの推定フロー数を乗じて各キューの割り当て帯域を計算する。
【００４１】
本実施の形態において、スケジューラ１０５は、割り当て帯域と等しい帯域でのみパケット出力を行い、出力回線上に余剰帯域が生じてもこの余剰帯域を各キューに再配分しない。他の構成は、図１に示したノード装置と同様である。
【００４２】
つぎに、図５を参照して本実施の形態におけるノード装置の動作について説明する。図５のノード装置にパケットが到着したとき、フロー識別部１０１において、到着したパケットが属するフローの識別子や品質クラス，入力回線番号などを用い、到着したパケットの格納先のキュー１０４を決定する。また、この決定されたキュー１０４に対応するフロー数推定部１０３が、前述の実施の形態でも説明したように、このキュー１０４内の推定フロー数を更新する。
【００４３】
つぎに割り当て帯域計算部２０７において、全てのキュー１０４の推定フロー数を合計して出力回線上の全フロー数を推定し、出力回線の容量を推定した全フロー数で割ることで、フロー１本あたりの帯域を求める。次いで、求めた帯域に推定フロー数を乗ずることで割り当てる帯域を計算し、これをキュー情報管理部１０２に書き込む。最後に、入力パケットを適切なキュー１０４に格納して処理を終了する。パケット出力時の処理については、前述した実施の形態と同様である。さらに、本実施の形態では、余剰帯域計算部２０６によって余剰帯域が検出された場合、余剰帯域量に応じて各キュー１０４の割り当て帯域を増加させる。
【００４４】
＜実施の形態３＞
つぎに、本発明の他の形態について説明する。図６は、本発明の他の形態におけるノード装置の構成を示す構成図である。図６のノード装置は、まず、前述した実施の形態と同様に、フロー識別部１０１，フロー数推定部１０３，余剰帯域計算部２０６，割り当て帯域計算部２０７を備える。加えて、本実施の形態では、ノード装置に、設定された割り当て帯域以上のパケットを廃棄する複数のポリサ３０４を設けるようにした。また、割り当て帯域等のポリサ３０４毎のパラメータを保持するポリシング情報管理部３０２と、ＦＩＦＯキュー３０５を備えるようにした。
【００４５】
ポリシング情報管理部３０２は、各ポリサ３０４がポリシングを行うために必要な割り当て帯域等の情報を保持し、ポリサ３０４は、ポリシング情報管理部３０２の情報に従ってってポリシングを行う。
図６のノード装置では、キューはＦＩＦＯキュー３０５のみであり、全てのフローのパケットは、ＦＩＦＯキュー３０５に格納され、この先頭から出力される。
【００４６】
つぎに、図６のノード装置の動作について説明する。図６のノード装置にパケットが到着したとき、フロー識別部１０１が、到着したパケットのフローの識別子や品質クラス，また入力回線番号などを用い、到着したパケットを通過させるポリサ３０４を決定する。また、決定したポリサ３０４に対応するフロー数推定部１０３が、このポリサ３０４を通過している推定フロー数を更新する。
【００４７】
つぎに、割り当て帯域計算部２０７が、全ポリサ３０４の推定フロー数を合計して出力回線上の全フロー数を推定し、出力回線の容量を全フロー数で割ることによってフロー１本あたりの帯域を求める。次いで、求めた帯域に推定フロー数を乗ずることで上記ポリサ３０４に割り当てる帯域を計算し、これをポリシング情報管理部３０２に記憶させる。つぎに、上記ポリサ３０４を用いて入力パケットを廃棄するか否かを決定し、廃棄しないと判断した場合には、入力したパケットをＦＩＦＯキュー３０５に格納する。
【００４８】
なお、パケット出力時の処理は、ＦＩＦＯキュー３０５の先頭からパケットを取り出して、これを出力回線に出力するだけである。さらに、本実施の形態では、余剰帯域計算部２０６によって余剰帯域が検出された場合、余剰帯域量に応じて各ポリサ３０４の割り当て帯域を増加させる。またＦＩＦＯキュー３０５内のキュー長に応じて割り当て帯域を増減させる処理も行う。
【００４９】
＜実施の形態４＞
つぎに、本発明の他の形態について説明する。本実施の形態では、図１に示したノード装置のフロー数推定部１０３を、図７に示すように構成されたフロー数推定部１０３ａとしたものである。従って、本実施の形態のノード装置は、図１に示したノード装置に比較して、フロー数推定部１０３ａの構成および動作が異なるのみであり、以下では他の構成に関する説明は省略する。
【００５０】
本実施の形態のフロー数推定部１０３ａは、キュー１０４（図１）内の各フローが使用している帯域を推定し、帯域を推定したキュー１０４に収容されている全てのフローの平均帯域を推定し、このキュー１０４への全入力帯域を平均帯域で割ることによって各キュー１０４に収容されているフロー数を推定する。なお、以下本実施の形態ではパケット長が一定であると仮定している。
【００５１】
本実施の形態におけるフロー数推定部１０３ａは、図７に示すように、フロー識別子とヒット回数をエントリとして持つ到着フロー履歴記憶部１０６ａと、キュー１０４に収容されている全フローの平均帯域を保持する推定平均帯域保存部７０７と、フロー数計算部１０８ａと、キュー１０４へのパケット到着率を計測する入力トラヒック計測部７０９とを備える。到着フロー履歴記憶部１０６ａが記憶しているヒット回数とは、入力パケットのフロー識別子が、ランダムに選ばれたエントリのフロー識別子と一致した回数である。
【００５２】
以下、フロー数推定部１０３ａの動作について図８のフローチャートを用いて説明する。図１に示したノード装置のフロー数推定部１０３と同様に、パケットが到着すると、まず到着フロー履歴からランダムにエントリを選択し（ステップＳ８０１）、選択したエントリに保存されているフロー識別子と入力パケットのフロー識別子を比較する（ステップＳ８０２）。ステップＳ８０２の比較の結果、２つのフロー識別子が等しい場合、選択したエントリのヒット回数に１を加える（ステップＳ８０３）。
【００５３】
一方、ステップＳ８０２の比較の結果、２つのフロー識別子が等しくなければ、確率ｑ（ステップＳ８０４）で、ステップＳ８０５〜ステップＳ８０８に示す推定フロー数の更新およびエントリの置き換えを行う。まず、ステップＳ８０５で、ランダムに選択したエントリのヒット回数より推定帯域を計算し、ステップＳ８０６で、推定平均帯域保存部７０７に保存されている推定平均帯域を更新する。次いで、ステップＳ８０７で、推定フロー数を算出し、ステップＳ８０８で、エントリのヒット回数を０に戻し、また、フロー識別子を入力パケットの識別子で置き換える。
【００５４】
推定フロー数の算出について説明すると、上述のようにエントリが置き替えられる場合、置き換え前のヒット回数は、このエントリに対するヒット回数の最大値となり、この値は置き換え前に上記エントリ登録されていたフローの帯域と相関関係を持つ。従って、入力パケットが属するフローの帯域は、以下の様に推定でき、推定フロー数を更新することができる。
【００５５】
ヒット回数の最大値は、対応するフローの帯域に対して増加関数であり、この最大値を用いて対応するフローの帯域を推定することができる。この帯域推定のための関数としては、例えば、いずれかのキュー１０４へのパケット到着率を用いてつぎのように計算できる。「推定帯域＝キュー１０４へのパケット到着率の合計×｛ｑ×ヒット回数の最大値／（１＋ｑ×ヒット回数の最大値）｝」。つぎに、得られた推定帯域から、キュー１０４へ到着する全フローの帯域の平均を求める。
【００５６】
ここで、ｋ回目の帯域推定で得られた推定帯域Ｒ（ｋ）とすると、推定平均帯域は「｛Σ（１＜＝ｋ＜＝Ｎ）Ｒ（ｋ）｝／Ｎ 」と求めることができる。実際には、帯域の高いフローのパケットは到着回数が多く、多くの回数の帯域推定が行われていることを考慮すると、推定平均帯域は、つぎに示すように、推定帯域の逆数で重み付けして求めることが望ましい。推定平均帯域＝｛Σ（１＜＝ｋ＜＝Ｎ）（Ｒ（ｋ）／Ｒ（ｋ））｝／｛Σ（１＜＝ｋ＜＝Ｎ）（１／Ｒ（ｋ））｝。
フロー数計算部１０８ａは、入力トラヒック計測部７０９が計測したキュー１０４へのパケット到着率を、上述のことにより算出した推定平均帯域で割ることで、推定フロー数を算出する。
【００５７】
＜実施の形態５＞
つぎに、本発明の他の形態について説明する。本実施の形態においては、図１に示したノード装置のフロー数推定部１０３を、図９に示すように構成されたフロー数推定部１０３ｂとしたものである。従って、本実施の形態のノード装置は、図１に示したノード装置に比較して、フロー数推定部１０３ｂの構成および動作が異なるのみであり、以下では他の構成に関する説明は省略する。本実施の形態の特徴は、上述した図７に示すフロー数推定部１０３ａを用いたノード装置に比較して、可変長パケットに対応できるよう変更した点である。
【００５８】
フロー数推定部１０３ｂは、図９に示すように、フロー識別子とヒット回数と入力パケットのパケット長の合計などの履歴情報をエントリとして持つ到着フロー履歴記憶部１０６ｂと、キュー１０３（図１）に収容されている全フローの平均帯域を保持する推定平均帯域保存部７０７と、フロー数計算部１０８ｂと、キュー１０４へのパケット到着率，全入力パケットの合計帯域および全入力パケットの平均パケット長を計測する入力トラヒック計測部９０９を備える。
【００５９】
以下、本実施の形態のフロー数推定部１０３の動作について、図１０のフローチャートを用いて説明する。図１に示したノード装置のフロー数推定部１０３と同様に、パケットが到着すると、まず到着フロー履歴からランダムにエントリを選択し（ステップＳ１００１）、選択したエントリに保存されているフロー識別子と入力パケットのフロー識別子を比較する（ステップＳ１００２）。ステップＳ１００２の比較の結果、２つのフロー識別子が等しい場合、到着フロー履歴記憶部１０６ｂの選択したエントリのヒット回数に１を加え、かつ、パケット長合計に入力パケット長を加える（ステップＳ１００３）。
【００６０】
一方、ステップＳ１００２の比較で２つのフロー識別子が等しくなければ、確率ｑ（ステップＳ１００４）で、ステップＳ１００５〜ステップＳ１００８に示すように推定フロー数の更新およびエントリの置き換えを行う。まず、ステップＳ１００５で、ランダムに選択したエントリのヒット回数より推定帯域を計算し、ステップＳ１００６で、推定平均帯域保存部７０７に保存されている推定平均帯域を更新する。次いで、ステップＳ１００７で、推定フロー数を算出し、ステップＳ８０９で、エントリのヒット回数を０に戻し、エントリのパケット長合計を入力パケット長にし、エントリのフロー識別子を入力パケットのフロー識別子とする。
【００６１】
エントリの置き換えは、以下に示すように帯域推定を行い、キュー１０４のフロー数の更新する。本実施の形態においても、ヒット回数の最大値は、対応するフローの帯域に対して増加関数とし、この最大値を用いてフローの帯域を推定する。この帯域推定のための関数としては、例えば、キュー１０４へのパケット到着率と平均パケット長を用いてつぎに示すように計算する。
【００６２】
推定帯域＝キュー１０４へのパケット到着率×｛ｑ×ヒット回数最大値／（１＋ｑ×ヒット回数最大値）｝×｛当該フロー上での平均パケット長／キュー１０４全体での平均パケット長｝ここで、上記フロー上の平均パケット長は、「平均パケット長＝当該エントリのパケット長合計／（当該エントリのヒット回数＋１）」と推定できる。
【００６３】
つぎに、得られた推定帯域から、キュー１０４へ到着する全フローの帯域の平均を求める。本実施の形態においても、平均推定帯域は、推定帯域の逆数で重み付けして求めることが望ましく、ｋ回目の帯域推定で得られた推定帯域Ｒ（ｋ）とすると、平均推定帯域は、つぎに示すように求める。推定平均帯域＝｛Σ（１＜＝ｋ＜＝Ｎ）（Ｒ（ｋ）／Ｒ（ｋ））｝／｛Σ（１＜＝ｋ＜＝Ｎ）（１／Ｒ（ｋ））｝。最後に、フロー数計算部１０８ｂは、入力トラヒック計測部９０９で得たキュー１０４への到着するパケットの全帯域を、以上のことにより求めた推定平均帯域で割ることで、推定フロー数を求める。
【００６４】
＜実施の形態６＞
つぎに、本発明の他の形態について説明する。図１１は本発明におけるノード装置の他の形態を示す構成図である。図１１に示すノード装置は、到着したパケットを格納するキューを決定するフロー識別部１０１、キュー毎に収容するフロー数を推定する複数のフロー数推定部１０３ｂ、複数のキュー１０３、割り当て帯域やキュー長等のキュー毎のパラメータを保持するキュー情報管理部１０２、キュー情報管理部１０２の情報をもとに各キュー１０３からのパケット出力を制御するスケジューラ１０５、各フローに与えるべき帯域を計算する目標帯域計算部１１０６、目標帯域と各フローの推定帯域を比較してパケットの廃棄を行う複数の廃棄制御部１１０７で構成される。
【００６５】
なお、図１１のノード装置において、フロー識別部１０１、フロー数推定部１０３ｂ、キュー１０４、キュー情報管理部１０２、スケジューラ１０５の動作は、上述した図１０のフローチャートに示す動作をする実施の形態と同様である。本実施の形態は、上述した実施の形態に比較し、目標帯域計算部１１０６と廃棄制御部１１０７によって入力パケットの廃棄制御を行う点が異なる。
【００６６】
以下、図１１のノード装置の動作について説明する。図１１のノード装置は、ランダムに選択した到着フロー履歴のエントリのフロー識別子と、入力パケットが属するフローの識別子が一致した場合、図１０のフローチャートに動作を示した上述の実施の形態と同様の処理に加え、以下のような処理を行う。
まず、目標帯域計算部１１０６において各フローに与えるべき目標帯域を求める。目標帯域計算部１１０６では、各フロー数推定部１０３において計算された推定フロー数を合計し、出力回線の容量を推定フロー数の合計で割り、これを目標帯域とする。
【００６７】
廃棄制御部１１０７では、フロー数推定部１０３が計算した推定帯域と、目標帯域計算部１１０６が計算した目標帯域を比較する。この比較で、推定帯域が目標帯域を上回っており、かつ、入力パケットを格納するキュー１０４のキュー長が、予め設定されている閾値を上回っている場合、廃棄制御部１１０７は、入力パケットをキュー１０４に格納せずに廃棄する。一方、上記比較で、推定帯域が目標帯域を下回っている場合、廃棄制御部１１０７は、入力したパケットの廃棄は行わない。
【００６８】
＜実施の形態７＞
つぎに、本発明の他の形態について説明する。図１２は本発明におけるノード装置の他の形態を示す構成図である。本実施の形態では、図１２に示すように、前述の実施の形態のノード装置に、廃棄制御部１１０７ａに対応して複数の廃棄優先度設定部１２０８を設けるようにした。本実施の形態では、廃棄優先度設定部１２０８を設けることで、パケットのヘッダに廃棄優先度を示すビットを設け、このビットを用いて廃棄判断を行う。
【００６９】
廃棄優先度設定部１２０８は、廃棄制御部１１０７で推定帯域が目標均帯域を超えていながらキュー長が閾値以下であったため廃棄されなかったパケットに対し、このパケットのヘッダ中の廃棄優先度ビットを高優先に設定する。
一方、廃棄制御部１１０７では、前述したようにパケット廃棄を行うとともに入力パケットのヘッダの廃棄優先度ビットが高優先に設定され、かつ入力パケットを格納するキューのキュー長が予め設定された閾値以上であれば、入力パケットを廃棄する。
この結果、本実施の形態によれば、次段以降のノード装置が輻輳している場合には、上記パケットが廃棄されやすいものとなる。
【００７０】
＜実施の形態８＞
つぎに、本発明の他の形態について説明する。図１３は、本発明の他の形態におけるノード装置の構成を示す構成図である。本実施の形態では、図１３に示すように、図１に示したノード装置に複数の廃棄制御部１１０７ｂを備えるようにした。なお、フロー数推定部１０３は、図９に示す構成である。図１３のノード装置の廃棄制御部１１０７ｂは、フロー数推定部１０３の到着フロー履歴をもとに、パケットの廃棄を行う。
【００７１】
本実施の形態の廃棄制御部１１０７ｂは、入力パケットを格納するキュー１０４のキュー長が、予め定められた閾値を超えており、かつエントリのヒット回数もしくはパケット長合計が、予め設定された閾値を超えておれば、パケットを廃棄するようにした。なお、このパケットの廃棄は、パケットが到着したことによりフロー数推定部１０３がランダムに選択した到着フロー履歴のエントリのフロー識別子と、到着したパケット（入力パケット）が属するフローの識別子が一致した場合に行う。
【００７２】
＜実施の形態９＞
つぎに、本発明の他の形態について説明する。本実施の形態では、図１に示したノード装置のフロー数推定部１０３を、図１４に示すように構成されたフロー数推定部１０３ｃとしたものである。従って、本実施の形態のノード装置は、図１に示したノード装置に比較して、フロー数推定部１０３ｃの構成および動作が異なるのみであり、以下では他の構成に関する説明は省略する。フロー数推定部１０３ｃは、到着フロー履歴から１つのエントリをランダムに選択するのではなく、全エントリを参照するようにしたものである。
【００７３】
図１４に示すように、本実施の形態におけるフロー数推定部１０３ｃは、複数のフロー識別子を保持する到着フロー履歴記憶部１０６、一致確率保存部１０７、フロー数計算部１０８ｃ、置き換えられたフロー識別子を保持しておく予備フロー識別子保存部１４０７を備える。
【００７４】
以下、図１５のフローチャートを参照してフロー数推定部１０３ｃの動作について説明する。パケットが到着した際、フロー数推定部１０３ｃは、到着フロー履歴記憶部１０６に記憶されている到着フロー履歴を全て参照し、入力パケットと同じフロー識別子を持つフロー履歴のエントリを探す（ステップＳ１５０１）。次いで、ステップＳ１５０２で、一致確率保存部１０７に一致するエントリの存在を判定する。
【００７５】
ステップＳ１５０２の判定で一致するエントリが見つからない場合、ステップＳ１５０３で、新たな一致確率「古い一致確率×（１−α）」を一致確率保存部１０７に保存する。次いで、予備フロー識別子保存部１４０７の保存されているフロー識別子と入力したパケットのフロー識別子とが異なり、かつ現在のエントリ数が当初のエントリ数より小さい場合（ステップＳ１５０４）、エントリを１つ追加し（ステップＳ１５０５）、追加したエントリのフロー識別子を入力したパケットのフロー識別子とする（ステップＳ１５０６）。この後、ステップＳ１５０７に進む。
【００７６】
一方、予備フロー識別子保存部１４０７に保存されているフロー識別子と入力したパケットのフロー識別子とが等しい、または、現在のエントリ数が当初のエントリ数より大きい場合（ステップＳ１５０４）、到着フロー履歴からランダムに１つのエントリを選択し（ステップＳ１５０８）、任意の確率ｑによって（ステップＳ１５０９）、予備フロー識別子保存部１４０７に、エントリのフロー識別子を保存し（ステップＳ１５１０）、エントリのフロー識別子を入力パケットのフロー識別子とする（ステップＳ１５１１）。なお、ステップＳ１５０９において、確率ｑにはずれた場合、予備フロー識別子保存部１４０７に、入力パケットのフロー識別子を保存する（ステップＳ１５１２）。この後、ステップＳ１５０７に進む。
【００７７】
また、ステップＳ１５０２の判定で、一致するエントリが存在した場合、ステップＳ１５１３で、新たな一致確率「古い一致確率×（１−α）＋α」を一致確率保存部１０７に保存する。ここで、新たな一致確率が、１に近いある定数βを超えている場合（ステップＳ１５１４）、まず、到着フロー履歴のエントリ数を１つ削減する（ステップＳ１５１５）。次いで、削減されたエントリに書かれているフロー識別子を予備フロー識別子保存部１４０７に保存し（ステップＳ１５１６）、ステップＳ１５０７に移行する。フロー数が到着フロー履歴のエントリ数より少ない場合、一致確率は常に１となるため、正しくフロー数を推定できない。このため、上述したステップＳ１５１４〜Ｓ１５１６を行う。
【００７８】
ステップＳ１５０７に移行したら、現在のエントリ数と当初のエントリ数とを比較し、これらが等しい場合、フロー数計算部１０８ｃは、エントリ数を一致確率で除したものを推定フロー数とする（ステップＳ１５１７）。一方、現在のエントリ数と当初のエントリ数とが異なっている場合、フロー数計算部１０８ｃは、現在のエントリ数に１を加えて推定フロー数とする（ステップＳ１５１８）。
【００７９】
＜実施の形態１０＞
つぎに、本発明の他の形態におけるノード装置について説明する。
本実施の形態では、図１に示したノード装置のフロー数推定部１０３を、図１６に示すように構成されたフロー数推定部１０３ｄとしたものである。従って、本実施の形態のノード装置は、図１に示したノード装置に比較して、フロー数推定部１０３ｄの構成および動作が異なるのみであり、以下では他の構成に関する説明は省略する。
【００８０】
本実施の形態では、キュー１０４内の各フローが使用している帯域を推定し、キュー１０４に収容されている全てのフローの平均帯域を推定し、キュー１０４への全入力帯域を推定した平均帯域で割ることによって、キュー１０４に収容されているフロー数を推定する。また、本実施の形態でも、上述の実施の形態と同様に、到着フロー履歴記憶部１０６から１つのエントリをランダムに選択するのではなく、全エントリを参照する。
【００８１】
本実施の形態では、図１６に示すように、フロー数推定部１０３ｄが、フロー識別子とヒット回数をエントリとして持つ到着フロー履歴記憶部１０６と、キュー１０４に収容されている全フローの平均帯域を保持する推定平均帯域保存部７０７と、フロー数計算部１０８ｄと、キュー１０４へのパケット到着率を計測する入力トラヒック計測部９０９と、置き換えられたフロー識別子を保持しておく予備フロー識別子保存部１４０７とを備える。
【００８２】
以下、本実施の形態のノード装置のフロー数推定動作について、図１７のフローチャートを用いて説明する。まず、パケットが到着した際、フロー数推定部１０３ｄは、到着フロー履歴を全て参照し、入力パケットと同じフロー識別子を持つフロー履歴のエントリを探す（ステップＳ１７０１）。次いで、ステップＳ１７０２で、一致確率保存部１０７に一致するエントリの存在を判定する。
【００８３】
ステップＳ１７０２の判定で一致するエントリが見つからない場合、ステップＳ１７０３で、新たな一致確率「古い一致確率×（１−α）」を一致確率保存部１０７に保存する。次いで、予備フロー識別子保存部１４０７の保存されているフロー識別子と入力したパケットのフロー識別子とが異なり、かつ現在のエントリ数が当初のエントリ数より小さい場合（ステップＳ１７０４）、まず、エントリを１つ追加し、追加したエントリのヒット回数を０とする（ステップＳ１７０５）。次いで、追加したエントリのフロー識別子を入力したパケットのフロー識別子とする（ステップＳ１７０６）。この後、ステップＳ１７０７に進む。
【００８４】
一方、予備フロー識別子保存部１４０７に保存されているフロー識別子と入力したパケットのフロー識別子とが等しい、または、現在のエントリ数が当初のエントリ数より大きい場合（ステップＳ１７０４）、到着フロー履歴からランダムに１つのエントリを選択し（ステップＳ１７０８）、任意の確率ｑによって（ステップＳ１７０９）、まず、エントリのヒット数と一致確率とにより推定帯域を計算する（ステップＳ１７１０）。
【００８５】
推定帯域の計算は、例えば、「推定帯域＝（１-各エントリに登録されているフローの推定帯域の合計）×ｑ／エントリ数×ヒット回数最大値」のような式を用いて置き換えられるフローの推定帯域を計算し、これをもとにして推定帯域を導出する。なお、各エントリに登録されているフローの推定帯域の合計の導出は困難であるので、「推定帯域＝（１-一致確率）×ｑ／エントリ数×ヒット回数最大値」のような近似式でも構わない。
【００８６】
次いで、推定帯域を計算したら、以下のようにして推定平均帯域を求め、推定帯域保存部７０７に保存されている推定平均帯域を更新する（ステップＳ１７１１）。
推定平均帯域は、キュー１０４へ到着する全フローの帯域の平均であり、例えば、帯域の高いフローでは帯域推定の回数が多いとして重み付けを行い、「推定平均帯域＝（１-β（ヒット回数最大値＋１）／推定帯域）×前回の推定平均帯域＋β（ヒット回数最大値＋１）／推定レート×推定帯域」のように推定平均帯域（移動時間平均）を計算する。キュー１０４への入力帯域を、計算した推定平均帯域で除したものを、推定フロー数とする（ステップＳ１７１２）。
【００８７】
次いで、予備フロー識別子保存部１４０７に、エントリのフロー識別子を保存し（ステップＳ１７１３）、エントリのフロー識別子を入力パケットのフロー識別子とする（ステップＳ１７１４）。なお、ステップＳ１７０９において、確率ｑにはずれた場合、予備フロー識別子保存部１４０７に、入力パケットのフロー識別子を保存する（ステップＳ１７１５）。この後、ステップＳ１７０７に進む。
【００８８】
また、ステップＳ１７０２の判定で、一致するエントリが存在した場合、ステップＳ１７１６で、新たな一致確率「古い一致確率×（１−α）＋α」を一致確率保存部１０７に保存し、ステップＳ１７１１で、エントリのヒット回数に１を加算する。ここで、新たな一致確率が、１に近いある定数βを超えている場合（ステップＳ１７１８）、まず、到着フロー履歴のエントリ数を１つ削減する（ステップＳ１７１９）。次いで、削減されたエントリに書かれているフロー識別子を予備フロー識別子保存部１４０７に保存し（ステップＳ１７２０）、ステップＳ１７０７に移行する。フロー数が到着フロー履歴のエントリ数より少ない場合、一致確率は常に１となるため、正しくフロー数を推定できない。このため、上述したステップＳ１７１４〜Ｓ１７１６を行う。
【００８９】
ステップＳ１７０７に移行したら、現在のエントリ数と当初のエントリ数とを比較し、これらが異なっている場合、フロー数計算部１０８ｃは、現在のエントリ数に１を加えて推定フロー数とする（ステップＳ１７２１）。
【００９０】
【発明の効果】
以上説明したように、本発明によれば、各キューに対応してこのキューのフロー数が推定され、各キューにおいて推定されたフロー数によって、各キューへ割り当てられる帯域が変更されるようにしたので、広帯域網においても、フロー間で公平に帯域を利用できるようになるというすぐれた効果が得られる。
【図面の簡単な説明】
【図１】  本発明の実施の形態におけるノード装置の構成を示す構成図である。
【図２】  キュー情報管理部１０２の構成例を示す説明図である。
【図３】  図１のフロー数推定部１０３の構成を示す構成図である。
【図４】  フロー数推定部１０３の動作を説明するためのフローチャートである。
【図５】  本発明の他の形態におけるノード装置の構成を示す構成図である。
【図６】  本発明の他の形態におけるノード装置の構成を示す構成図である。
【図７】  本発明の他の形態におけるノード装置の一部構成を示す構成図である。
【図８】  図７のフロー数推定部１０３ａの動作を説明するためのフローチャートである。
【図９】  本発明の他の形態におけるノード装置の一部構成を示す構成図である。
【図１０】  図９のフロー数推定部１０３ｂの動作を説明するためのフローチャートである。
【図１１】  本発明の他の形態におけるノード装置の構成を示す構成図である。
【図１２】  本発明の他の形態におけるノード装置の構成を示す構成図である。
【図１３】  本発明の他の形態におけるノード装置の構成を示す構成図である。
【図１４】  本発明の他の形態におけるノード装置の一部構成を示す構成図である。
【図１５】  図１４のフロー数推定部１０３ｃの動作を説明するためのフローチャートである。
【図１６】  本発明の他の形態におけるノード装置の一部構成を示す構成図である。
【図１７】  図１６のフロー数推定部１０３ｄの動作を説明するためのフローチャートである。
【符号の説明】
１０１…フロー識別部、１０２…キュー情報管理部、１０３…フロー数推定部、１０４…キュー、１０５…スケジューラ。
【図１】
0003755420.tif 000002
【図２】
0003755420.tif 000003
【図３】
0003755420.tif 000004
【図４】
0003755420.tif 000005
【図５】
0003755420.tif 000006
【図６】
0003755420.tif 000007
【図７】
0003755420.tif 000008
【図８】
0003755420.tif 000009
【図９】
0003755420.tif 000010
【図１０】
0003755420.tif 000011
【図１１】
0003755420.tif 000012
【図１２】
0003755420.tif 000013
【図１３】
0003755420.tif 000014
【図１４】
0003755420.tif 000015
【図１５】
0003755420.tif 000016
【図１６】
0003755420.tif 000017
【図１７】
0003755420.tif 000018