(57)【要約】【課題】  効果的にスループットを向上するパケット交換装置、伝送装置、及びパケットスケジューリング方法を提供する。【解決手段】  パケット交換装置は、１以上のパケットを蓄積する複数のキューと、前記複数のキューの各々に一定の読出許容量を与えるスケジューラ部と、前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出す読出処理部とを有する。【選択図】図９
2014135581.tif 000002
【特許請求の範囲】
【請求項１】
１以上のパケットを蓄積する複数のキューと、
前記複数のキューの各々に一定の読出許容量を与えるスケジューラ部と、
前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出す読出処理部とを有することを特徴とするパケット交換装置。
【請求項２】
前記読出条件は、前記読出許容量及び前記複数のキューに蓄積された前記１以上のパケットのデータ量が、それぞれ、０より大きいときに満たされることを特徴とする請求項１に記載のパケット交換装置。
【請求項３】
前記スケジューラ部は、前記複数のキューのうち、蓄積された前記１以上パケットのデータ量が一定量以上であるキューに、前記読出許容量を与えることを特徴とする請求項１または２に記載のパケット交換装置。
【請求項４】
前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを１つずつ読み出すことを特徴とする請求項１乃至３の何れかに記載のパケット交換装置。
【請求項５】
前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、読み出し済みのパケットのデータ量が所定量に達するまで連続して読み出すことを特徴とする請求項１乃至３の何れかに記載のパケット交換装置。
【請求項６】
前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、前記読出条件が満たさなくなるまで連続して読み出すことを特徴とする請求項１乃至３の何れかに記載のパケット交換装置。
【請求項７】
前記読出処理部により読み出された前記１以上のパケットを、外部装置に送信するための複数のポートと、
前記複数のポートにそれぞれ対応し、前記複数のキューの識別子が、前記読出条件を満たした順に登録される複数の読出順序登録部と、
前記複数の読出順序登録部から１つを選択し、選択した読出順序登録部に登録された最先の前記識別子を前記読出処理部に出力する選択処理部とを、さらに有し、
前記読出処理部は、前記複数のキューのうち、前記選択処理部から入力された前記識別子に応じたキューから前記１以上のパケットを読み出し、前記複数のポートのうち、当該キューに対応するポートに出力することを特徴とする請求項１乃至６の何れかに記載のパケット交換装置。
【請求項８】
前記読出処理部から前記複数のポートに出力される前記１以上のパケットを、それぞれ蓄積する複数の出力キューと、
前記複数の出力キューにそれぞれ蓄積された前記１以上のパケットのデータ量が所定の閾値を超えたとき、停止制御信号を前記選択処理部に出力する出力帯域制御部とを、さらに有し、
前記選択処理部は、前記停止制御信号に従い、前記複数の出力キューのうち、当該出力キューに蓄積された前記１以上のパケットが出力される前記複数のポートに対応する前記複数の読出順序登録部を選択対象から除外することを特徴とする請求項７に記載のパケット交換装置。
【請求項９】
外部装置との間において、パケットを送受信する複数のパケット交換装置と、
前記複数のパケット交換装置の間において、前記パケットを交換するスイッチ装置とを有し、
前記複数のパケット交換装置の少なくとも１つは、請求項１乃至８の何れかに記載のパケット交換装置であり、前記スイッチ装置から入力されたパケットを前記複数のキューに蓄積し、前記複数のキューから読み出したパケットを前記外装置部に送信することを特徴とする伝送装置。
【請求項１０】
１以上のパケットを蓄積する複数のキューの各々に一定の読出許容量を与え、
前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出すことを特徴とするパケットスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、パケット交換装置、伝送装置、及びパケットスケジューリング方法に関する。
【背景技術】
【０００２】
通信需要の増加に伴い、レイヤ２スイッチやルータなどのスイッチ機器、すなわちパケットを伝送する伝送装置のスループットの向上が求められている。スループットを向上するために、キューからのパケットの読み出し制御によりトラフィックを管理するスケジューリング機能の改善が提案されている。
【０００３】
例えば、特許文献１には、ＤＲＲ（Deficit Round Robin）法において統計的観測情報に基づいて粒度を設定する点が開示されている。特許文献２には、帯域制御を維持するアルゴリズムの帯域の精度を、他の異なるアルゴリズムにより選択されたキューからデータを読み出した場合において維持する点が開示されている。
【０００４】
特許文献３には、パケットを格納するキューごとに、固定のセグメント長を単位としてスケジューリングを行うことにより、外部メモリに対するアクセス処理時間を低減する点が開示されている。特許文献４には、入力制御部及び出力帯域制御部がファブリックを介して接続された構成において、入力制御部が、要求により出力帯域制御部から取得したクレジットに基づいて、出力帯域制御部にファブリックを介してパケットを出力する点が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２２３７４０号公報
【特許文献２】特開２００５−３３４０８号公報
【特許文献３】特開２００５−２８６３８３号公報
【特許文献４】米国特許第７，９９０，８５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
キューから１つのパケットが読み出されるたびに、スケジューリングにより次の読み出し対象のキューを選択する場合、スケジューリングに許容される処理時間は、パケットの読み出し処理の時間に制約される。このため、スケジューリングに許容される処理時間は、パケットの長さが、例えばイーサネット（登録商標、以下同様）フレームのように可変であるとき、読み出されるパケットの長さ（つまり、データ量）に依存する。
【０００７】
例えば、通信速度を１００（Ｇｂｐｓ）とすると、スケジューリングに許容される処理時間は、１５００（Ｂｙｔｅ）の長さのパケットの場合、約１２１（ｎｓ）であるのに対し、６４（Ｂｙｔｅ）の長さのパケットの場合、約６．７（ｎｓ）となる。つまり、短いパケット（ショートパケット）が連続で読み出されるとき、スケジューリングに許容される時間は、比較的に短い時間に制限されるため、スケジューリングに高い処理性能が求められる。
【０００８】
例えば、ショートパケットだけを読み出す場合、スケジューリングに約１４８．８（Ｍｂｐｓ）の処理速度が求められる。要求される処理速度は、スケジューリングに複雑なアルゴリズムを用いた場合、さらに高くなる。
【０００９】
これに対して、読み出し処理を、１パケット単位ではなく、所定のデータ量を単位として行えば、１以上のパケットを、バースト的なトラフィックとして扱い、連続して読み出せるので、スケジューリングに許容される時間の制限が緩和される。例えば、５００（Ｂｙｔｅ）単位で読み出し処理を行う場合、８個の６４（Ｂｙｔｅ）長のパケットを連続して読み出せるので、スケジューリングに許容される処理時間は、約６．７（ｎｓ）×８＝約５３．６（ｎｓ）となる。
【００１０】
しかし、この場合、１つのパケットを分割して読み出さないため、パケットの一部のデータは、余剰分として、上記の所定のデータ量を超えて読み出されることになる。この余剰分のデータ量は、パケット長に応じてばらつきがあるので、キュー間において帯域が不公平になるという問題が生ずる。例えば、イーサネットフレームは、６４〜１５１８（Ｂｙｔｅ）の可変長を有するので、余剰分のデータ量は、最大で６３〜１５１７（Ｂｙｔｅ）の範囲において、ばらつきが生ずる。
【００１１】
また、上記の場合、キューに蓄積されたデータ量が、所定のデータ量を超えるまでパケットが読み出されないため、ショートパケットが低いレートでキューに入力される場合、パケットの遅延量が増加するという問題がある。例えばＶｏＩＰ（Voice Over Internet Protocol）において、音声データを収容するパケットは、ショートパケットであることが多いので、通話に支障を生ずることが考えられる。なお、このような問題は、イーサネットフレームに限られず、ＩＰ（Internet Protocol）パケットなどの他のパケットについても同様に存在する。
【００１２】
そこで本件は上記の課題に鑑みてなされたものであり、効果的にスループットを向上するパケット交換装置、伝送装置、及びパケットスケジューリング方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本明細書に記載のパケット交換装置は、１以上のパケットを蓄積する複数のキューと、前記複数のキューの各々に一定の読出許容量を与えるスケジューラ部と、前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出す読出処理部とを有する。
【００１４】
本明細書に記載のパケットスケジューリング方法は、１以上のパケットを蓄積する複数のキューの各々に一定の読出許容量を与え、前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出す方法である。
【発明の効果】
【００１５】
本明細書に記載のパケット交換装置、伝送装置、及びパケットスケジューリング方法は、効果的にスループットを向上できるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】実施例に係る伝送装置の機能構成を示す構成図である。
【図２】ネットワークインターフェースカードの機能構成を示す構成図である。
【図３】伝送装置内のパケットの経路を示す図である。
【図４】出力処理部の機能構成の比較例を示す構成図である。
【図５】図４に示された出力処理部の読み出し処理を示す図である。
【図６】出力処理部の機能構成の他例を示す構成図である。
【図７】パケットが入力されたときのスケジューラ部の動作例を示すフローチャートである。
【図８】クレジットを払い出すときのスケジューラ部の動作例を示すフローチャートである。
【図９】第１実施例の出力処理部の機能構成を示す構成図である。
【図１０】キューにパケットを格納するときのキュー管理部の動作例を示すフローチャートである。
【図１１】クレジットが払い出されたときのキュー管理部の動作例を示すフローチャートである。
【図１２】パケットを読み出すときのキュー管理部の動作例を示すフローチャートである。
【図１３】キュー管理部のパケット読み出し前の状態の一例を示す図である。
【図１４】キュー管理部のパケット読み出し後の状態の一例を示す図である。
【図１５】パケットを読み出すときの第２実施例のキュー管理部の動作を示すフローチャートである。
【図１６】第２実施例のキュー管理部のパケット読み出し後の状態の一例を示す図である。
【図１７】パケットを読み出すときの第３実施例のキュー管理部の動作を示すフローチャートである。
【図１８】第３実施例のキュー管理部のパケット読み出し後の状態の一例を示す図である。
【図１９】第４実施例のキュー管理部の構成を示す構成図である。
【図２０】第５実施例のキュー管理部の構成を示す構成図である。
【図２１】出力キューにパケットを格納したときの出力帯域制御部の動作例を示すフローチャートである。
【図２２】出力キューからパケットを読み出すときの出力帯域制御部の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
図１は、実施例に係る伝送装置の機能構成を示す構成図である。伝送装置は、複数のネットワークインターフェースカード（パケット交換装置）１と、２枚のスイッチカード（スイッチ装置）２と、コントロールカード３とを有する。各カード１〜３は、筐体に設けられた個別のスロットに収容され、互いに電気的に接続される。なお、本明細書において、伝送装置として、レイヤ２スイッチやルータなどのスイッチ機器を例に挙げるが、これに限定されない。
【００１８】
伝送装置は、外部装置から受信したパケットを、その宛先に従って他の外部装置に中継する。なお、本明細書において、パケットとは、伝送されるデータ（情報）の伝送単位であり、例としてイーサネットフレームを挙げるが、これに限られず、ＩＰパケットなどの他のフレームであってもよい。
【００１９】
複数のネットワークインターフェースカード１は、それぞれ、外部装置との間において、パケットを送受信する。外部装置としては、例えば、パーソナルコンピュータなどの端末装置、サーバ装置、及びルータが挙げられる。複数のネットワークインターフェースカード１は、複数のポートにより光ファイバと接続され、例えば１０００ＢＡＳＥ−ＳＸの規格に基づく通信を行う。
【００２０】
２枚のスイッチカード２は、それぞれ、複数のネットワークインターフェースカード１の間において、パケットを交換する。より具体的には、スイッチカード２は、ネットワークインターフェースカード１からパケットが入力され、パケットを、その宛先に応じたネットワークインターフェースカード１に出力する。２枚のスイッチカード２は、例えば、ハードウェア故障などの障害に備えて、運用系及び予備系として使用される。
【００２１】
コントロールカード３は、複数のネットワークインターフェースカード１及び２枚のスイッチカード２を制御する。コントロールカード３は、ネットワーク制御装置などと接続され、ユーザーインターフェースに関する処理、各カード１，２に対する設定処理、及び各カード１，２からの情報収集処理などを行う。コントロールカード３は、これらの処理を実行するＣＰＵ（Central Processing Unit）などのプロセッサ３０及びメモリ３１を有する。
【００２２】
図２は、ネットワークインターフェースカード１の機能構成を示す構成図である。ネットワークインターフェースカード１は、複数の光送受信器１０と、ＰＨＹ／ＭＡＣ部１１と、入力処理部１２と、出力処理部１３と、制御部１４とを有する。
【００２３】
複数の光送受信器１０は、それぞれ、外部装置から光ファイバを介して受信した光信号を電気信号に変換してＰＨＹ／ＭＡＣ部１１に出力し、また、ＰＨＹ／ＭＡＣ部１１から入力された電気信号を光信号に変換し、光ファイバを介して外部装置に送信する。つまり、複数の光送受信器１０は、外部装置との間でパケットを送受信するためのポートとして機能する。
【００２４】
ＰＨＹ／ＭＡＣ部１１は、外部装置とのリンクの確立処理や複数の光送受信器１０に対するパケットの分配処理などを行う。ＰＨＹ／ＭＡＣ部１１は、複数の光送受信器１０から入力されたパケットを入力処理部１２に出力し、出力処理部１３から入力されたパケットを複数の光送受信器１０に出力する。
【００２５】
入力処理部１２及び出力処理部１３は、イングレス（ＩＮＧＲＥＳＳ）及びイーグレス（ＥＧＲＥＳＳ）のパケット処理をそれぞれ行う。入力処理部１２は、パケットの帯域制御処理などを行って、スイッチカード２にパケットを出力する。出力処理部１３は、スイッチカード２から入力されたパケットの帯域制御処理などを行って、ＰＨＹ／ＭＡＣ部１１にパケットを出力する。
【００２６】
制御部１４は、コントロールカード３と通信を行い、入力処理部１２及び出力処理部１３の制御を行う。制御部１４は、ＣＰＵなどのプロセッサ及びメモリ（図示せず）を備える。
【００２７】
図３には、伝送装置内のパケットの経路が示されている。なお、図３は、入力処理部１２の構成も示す。
【００２８】
まず、パケットは、ネットワークインターフェースカード１の入力処理部１２に入力される。入力処理部１２は、クラス判定部１２０と、ポリサー１２１と、分配部１２２と、複数の入力キュー１２３と、出力部１２４とを有する。
【００２９】
クラス判定部１２０は、パケットごとの通信品質（ＱｏＳ：Quality of Service）のクラスを判定し、クラスに応じたフローＩＤを、例えば装置内ヘッダに含めてパケットに付与する。クラス判定部１２０は、例えば、パケットのヘッダに含まれる宛先（ＤＡ：Destination Address）、またはＶＬＡＮ（Virtual Local Area Network）  ＩＤに基づいてクラスを判定する。
【００３０】
ポリサー１２１は、入力されるパケットのトラフィック量が所定の帯域を超えないように、所定帯域を超える分のパケットを廃棄する。分配部１２２は、パケットをフローＩＤに応じて、複数の入力キュー１２３に分配する。複数の入力キュー１２３は、パケットを、出力部１２４により読み出されるまで蓄積する。出力部１２４は、複数の入力キュー１２３から１つを選択して、選択した入力キュー１２３からパケットを読み出して、スイッチカード２のスイッチ部２０に出力する。スイッチ部２０は、入力されたパケットを宛先に応じたネットワークインターフェースカード１の出力処理部１３に出力する。
【００３１】
図４は、出力処理部１３の機能構成の比較例を示す構成図である。出力処理部１３は、分配部９０と、複数のキュー９１１〜９１３と、複数のパケットシェーパ９２と、スケジューラ部９３とを有する。
【００３２】
分配部９０は、入力されたパケット（図４中の「ＰＫＴ」参照）を、フローＩＤに応じて複数のキュー９１１〜９１３に分配する。分配部９０は、例えば、フロー＃１のＰＫＴ＃５〜＃７をキュー９１１に格納し、フロー＃２のＰＫＴ＃３〜＃６をキュー９１２に格納し、フロー＃Ｎ（Ｎ：３以上の自然数）のＰＫＴ＃５をキュー９１３に格納する。
【００３３】
複数のキュー９１１〜９１３は、フローＩＤごとにパケットを蓄積する。複数のキュー９１１〜９１３は、それぞれ、ＦＩＦＯ（First In First Out）などのパケットの格納手段である。
【００３４】
パケットシェーパ９２は、キュー９１１〜９１３からそれぞれ読み出されるパケットの間隔を調整する。パケットシェーパ９２は、例えば、送信権として扱われるトークンを貯めるトークンバケットを有し、トークンの残量に応じてパケットの読み出しを制限する。パケットシェーパ９２は、パケットの間隔を、トークンの供給レートにより調整する。
【００３５】
スケジューラ部９３は、トークンを消費して、パケットシェーパ９２を介し、複数のキュー９１１〜９１３からパケットを読み出す。スケジューラ部９３は、例えばラウンドロビン方式に従って、読み出し可能なキュー９１１〜９１３から読み出し対象のキューを選択する。読み出されたパケットは、ポートを介して外部装置に送信される。
【００３６】
上述したように、スケジューラ部９３は、１パケット単位で読み出し処理を行う場合、スケジューリングに許容される時間が制限されるので、所定のデータ量分のパケットを連続して読み出す。図５には、図４に示された出力処理部の読み出し処理の例が示されている。
【００３７】
スケジューラ部９３は、複数のキュー９１１〜９１３からのパケットの読み出しの可否をそれぞれ示す読出フラグ９３１〜９３３を有する。読出フラグ９３１〜９３３は、パケットの読み出しが可能である場合、”１”を示し、パケットの読み出しが不可能である場合、”０”を示す。
【００３８】
蓄積されたパケットのデータ量が所定量Ｋを超えるキュー９１１，９１２は、読出フラグ９３１，９３３が”１”に設定され、蓄積されたパケットのデータ量が所定量Ｋ以下のキュー９３３は、読出フラグ９３１〜９３３が”０”に設定される。スケジューラ部９３は、複数のキュー９１１〜９１３のうち、読出フラグ９３１〜９３３が”１”を示すキューからパケットを読み出す。
【００３９】
これにより、スケジューラ部９３は、１以上のパケットを、バースト的なトラフィックとして読み出すことができるので、スケジューリングに許容される時間の制限が緩和される。しかし、本例では、所定量Ｋを超えて読み出されるパケットのデータ量、すなわち余剰分Ｒ１，Ｒ２が存在するため、キュー９１１〜９１３間における帯域の公平性を担保できない。また、キュー９１１〜９１３に蓄積されたデータ量が、所定量Ｋを超えるまでパケットが読み出されないため、ショートパケットが低いレートでキューに入力される場合、パケットの遅延量が増加する。
【００４０】
そこで、上記の問題を解決するため、スケジューリング機能を、パケットの読み出し機能から独立して設け、読み出し可能なパケットのデータ量を示す読出許容量を、キューごとに平等に与える手法が考えられる。なお、本明細書では、この読出許容量を「クレジット」と表記する。
【００４１】
図６は、出力処理部１３の機能構成の他例を示す構成図である。出力処理部１３は、キュー管理部５及びスケジューラ部６を有する。キュー管理部５は、分配部５０と、複数のキュー５１１〜５１３と、クレジットカウンタ部５２と、読出調停手段８とを有し、クレジットを消費して複数のキュー５１１〜５１３からパケットを読み出す。スケジューラ部６は、蓄積量カウンタ部６０と、クレジット払出部６１と、複数のクレジットシェーパ６２とを有し、クレジットをキュー管理部５に払い出す。
【００４２】
分配部５０は、入力されたパケットを、フローＩＤに基づいて、複数のキュー５１１〜５１３に分配する。複数のキュー５１１〜５１３は、それぞれ、１以上のパケットを蓄積する。また、分配部５０は、入力されたパケットを、フローＩＤ及びパケット長をスケジューラ部６に通知する。
【００４３】
蓄積量カウンタ部６０は、分配部５０からの通知に基づいて、フローＩＤごとのパケットのデータ量、つまりキュー５１１〜５１３ごとに蓄積されたパケットのデータ量を計数する。図６の例では、フロー＃１に対応するキュー５１１に５８００（Ｂｙｔｅ）のデータが蓄積され、フロー＃２に対応するキュー５１２に３９８６（Ｂｙｔｅ）のデータが蓄積され、フロー＃Ｎに対応するキュー５１３に１２８（Ｂｙｔｅ）のデータが蓄積されている。なお、以降の説明において、蓄積量カウンタ部６０が計数したデータ量を、「蓄積量カウンタ」と表記する。
【００４４】
クレジットシェーパ６２は、フロー＃１〜＃Ｎごとに設けられ、該フローのキュー５１１〜５１３にクレジットを与える間隔を調整する。クレジットシェーパ６２は、例えば、送信権として扱われるトークンを貯めるトークンバケットを有し、トークンの残量に応じてクレジットの払い出しを制限する。クレジットシェーパ６２は、クレジットを与える間隔を、トークンの供給レートにより調整する。
【００４５】
クレジット払出部６１は、キュー管理部５に一定のクレジットを払い出す。つまり、クレジット払出部６１は、複数のキュー５１１〜５１３の各々に一定のクレジットを与える。クレジット払出部６１は、キュー５１１〜５１３ごとにクレジットの払い出しの可否を示す払出フラグ６１１〜６１３を有する。
【００４６】
払出フラグ６１１〜６１３は、それぞれ、クレジットの払い出しが可能である場合に”１”を示し、払い出しが不可能である場合に“０“を示す。払出フラグ６１１〜６１３は、それぞれ、該当するフローの蓄積量カウンタが所定量Ｂ以上であり、クレジットシェーパ６２のトークンの残量が０より多いとき、”１”に設定される。
【００４７】
図６の例では、仮に所定量Ｂを１５００（Ｂｙｔｅ）とすると、フロー＃Ｎの蓄積量カウンタ（１２８（Ｂｕｔｅ））は、所定量Ｂより少ないため、払出フラグ６１３は”０”を示す。また、他のフロー＃１，＃２については、蓄積量カウンタが所定量Ｂより多いため、他の払出フラグ６１１，６１２は”１”を示す。このように、複数のキュー５１１〜５１３のうち、蓄積されたパケットのデータ量が一定量Ｂ以上であるキューに、クレジットを与えることにより、パケットを、一定のバースト性を有するトラフィックとして読み出して、スループットを向上することができる。
【００４８】
図７は、パケットが入力されたときのスケジューラ部６の動作例を示すフローチャートである。まず、蓄積量カウンタ部６０は、キュー管理部５からフローＩＤ及びパケット長を取得する（ステップＳｔ１）。次に、蓄積量カウンタ部６０は、取得したフローＩＤ及びパケット長に基づいて、該当するフロー＃１〜＃Ｎの蓄積量カウンタを更新する（ステップＳｔ２）。次に、クレジット払出部６１は、該当するフロー＃１〜＃Ｎの蓄積量カウンタが所定量Ｂ以上であり、かつ、該当するクレジットシェーパ６２のトークンの残量が０より多い、とする払出条件の成否を判定する（ステップＳｔ３）。
【００４９】
払出条件が満たされる場合（ステップＳｔ３のＹｅｓ）、クレジット払出部６１は、該当するフロー＃１〜＃Ｎの払出フラグ６１１〜６１３を“１”にし（ステップＳｔ４）、処理を終了する。一方、払出条件が満たされない場合（ステップＳｔ３のＮｏ）、クレジット払出部６１は、処理を終了する。このようにして、スケジューラ部６は、パケットが入力されたときの処理を行う。
【００５０】
クレジット払出部６１は、払出フラグ６１１〜６１３が”１”を示すフロー＃１〜＃Ｎのキュー５１１〜５１３に、一定のクレジットを払い出す。図８は、クレジットを払い出すときのスケジューラ部６の動作例を示すフローチャートである。
【００５１】
まず、クレジット払出部６１は、払出フラグ６１１〜６１３が”１”を示すフロー＃１〜＃Ｎから１つを選択する（ステップＳｔ１１）。クレジット払出部６１は、例えばラウンドロビ方式によりフロー＃１〜＃Ｎを選択してもよい。
【００５２】
次に、クレジット払出部６１は、キュー管理部５に一定のクレジットを払い出す（ステップＳｔ１２）。つまり、スケジューラ部６は、複数のキュー５１１〜５１３に一定のクレジットを与える。払い出されたクレジットは、キュー管理部５のクレジットカウンタ部５２により計数される。
【００５３】
クレジットカウンタ部５２は、フローＩＤごとに、つまりキュー５１１〜５１３ごとにクレジットを計数する。図６の例において、フロー＃１のキュー５１１は、−２５０（Ｂｙｔｅ）のクレジットを有し、フロー＃２のキュー５１２は、５４８６（Ｂｙｔｅ）のクレジットを有する。また、フロー＃Ｎのキュー５１３は、１５００（Ｂｙｔｅ）のクレジットを有する。クレジットは、スケジューラ部６により一定量ずつ各キュー５１１〜５１３に与えられる。なお、以降の説明において、クレジットカウンタ部５２が計数したクレジットの量を、「クレジットカウンタ」と表記する。
【００５４】
次に、クレジット払出部６１は、該当するフロー＃１〜＃Ｎの蓄積量カウンタから一定量を減算する（ステップＳｔ１３）。つまり、クレジット払出部６１は、クレジットを払い出したときに、クレジット分のパケットが読み出されたものとして、蓄積量カウンタ部６０の蓄積量カウンタを更新する。
【００５５】
次に、クレジット払出部６１は、該当するフロー＃１〜＃Ｎのクレジットシェーパ６２のトークンから一定量を減算する（ステップＳｔ１４）。つまり、クレジット払出部６１は、トークンを消費してクレジットを払い出す。
【００５６】
次に、クレジット払出部６１は、該当するフロー＃１〜＃Ｎの蓄積量カウンタが所定量Ｂ以上であり、かつ、該当するクレジットシェーパ６２のトークンの残量が０より多い、とする払出条件の成否を判定する（ステップＳｔ１５）。
【００５７】
払出条件が満たされない場合（ステップＳｔ１５のＮｏ）、クレジット払出部６１は、該当するフロー＃１〜＃Ｎの払出フラグ６１１〜６１３を”０”に設定して（ステップＳｔ１６）、処理を終了する。一方、払出条件が満たされる場合（ステップＳｔ１５のＹｅｓ）、クレジット払出部６１は、処理を終了する。このようにして、スケジューラ部６は、クレジットを払い出す処理を行う。
【００５８】
一方、キュー管理部５において、読出調停手段８は、キュー５１１〜５１３ごとに、クレジットを消費してパケットを読み出す。読出調停手段８は、フロー＃１〜＃Ｎごとに読出フラグ８１〜８３を有している。読出フラグ８１〜８３は、キュー５１１〜５１３ごとのクレジット及びキュー５１１〜５１３ごとに蓄積されたパケットのデータ量に関する読出条件を満たす場合、”１”を示し、読出条件を満たさない場合、”０”を示す。
【００５９】
読出条件は、キュー５１１〜５１３のクレジット及びキュー５１１〜５１３に蓄積されたパケットのデータ量が、０より大きいときに満たされる。つまり、読出調停手段８は、キュー５１１〜５１３にパケットが格納され、クレジットカウンタが正の値であるとき、キュー５１１〜５１３からパケットを読み出す。
【００６０】
図６の例では、各キュー５１１〜５１３にパケットが格納され、フロー＃１のクレジットカウンタが−２５０であるので、読出フラグ８１は”０”に設定される。また、他のフロー＃２、＃Ｎは、クレジットカウンタが正の値であるので、読み出しフラグ８２，８３は”１”に設定される。この読出条件によると、少なくとも１（Ｂｙｔｅ）のクレジット、及び、少なくとも１つのパケットがあれば、該パケットは、パケット長によらずにキュー５１１〜５１３から読み出されるので、パケットの待機時間が低減され、スループットが向上する。
【００６１】
本例において、スケジューラ部６は、キュー５１１〜５１３からパケットを読み出すキュー管理部５から分離し、独立して設けられている。スケジューラ部６は、キュー５１１〜５１３に蓄積されている個々のパケットの長さ（パケット長）に関わらず、各フロー＃１〜＃Ｎ、つまり各キュー５１１〜５１３に一定のクレジット（つまり、一様な読出許容量）を払い出す。このクレジットは、読み出されたパケットのデータ量に応じて消費され、負の値にもなり得る。したがって、各キュー５１１〜５１３は、クレジットに基づいてパケットの読み出し量が制御され、キュー５１１〜５１３間の公平性が担保される。
【００６２】
また、本例では、図５に示された比較例とは異なり、各キュー５１１〜５１３に蓄積されたパケットのデータ量が一定量Ｋ以上とならない場合であっても、少なくとも１（Ｂｙｔｅ）以上のクレジットがあれば、パケットは読み出される。例えば、図６において、フロー＃Ｎの蓄積量カウンタは、１２８（Ｂｙｔｅ）であるので、上述したようにフロー＃Ｎのキュー５１３に対し、スケジューラ部６によるクレジットの払い出しは行われない。
【００６３】
しかし、フロー＃Ｎのキュー５１３は、１５００（Ｂｙｔｅ）のクレジットがあるため、キュー５１３に格納されたＰＫＴ＃５は読み出される。したがって、各キュー５１１〜５１３に、あらかじめ一定のクレジットを初期値として与えておけば、ショートパケットが連続する場合であっても、クレジットを消費することにより、少ない遅延量でパケットの読み出しが可能である。
【００６４】
上述したように、読出調停手段８は、読出フラグ８１〜８３が”１”を示すフロー＃１〜＃Ｎに対応するキュー５１１〜５１３からパケットを読み出す。複数の読出フラグ８１〜８３が”１”を示す場合、読出調停手段８は、複数のキュー５１１〜５１３からパケットの読み出し対象とするキューを選択する。すなわち、読出調停手段８は、複数のキュー５１１〜５１３の間における読み出しの競合を調停する。なお、上記の特許文献４に開示された技術では、各入力制御部は、個別のパケットバッファ（キュー）が設けられ、出力制御部側の帯域と同じレートによりパケットの読み出しが可能であるため、このような調停は必要ない。
【００６５】
仮に、読出調停手段８として、新たなスケジューラを設けたとすると、スケジューラ部６を分離した意義が失われてしまう。スケジューラは、所定のスケジューリングアルゴリズムに従って、パケットの読み出しが可能なキューから１つのキューを選択するために、フローごとの優先度や重みなどのパラメータに基づくサーチ処理を行う。このサーチ処理は、読み出し可能なキューのパタン数が多いほど、多くの時間を必要とし、キュー数が多い場合、及びアルゴリズムが複雑である場合、さらに多くの時間を必要とする。したがって、サーチ処理の負担がない、もしくは少ない読出調停手段８を用いることが望ましい。
【００６６】
（第１実施例）
そこで、実施例のネットワークインターフェースカード１は、上記のサーチ処理を用いずに、キュー５１１〜５１３から読出調停手段８に対して、読み出し可能な状態であることを通知する手法を用いる。図９は、第１実施例の出力処理部１３の機能構成を示す構成図である。なお、図９において、図６と共通する構成には、同一の符号を付し、その説明を省略する。
【００６７】
出力処理部１３は、キュー管理部５及びスケジューラ部６を有する。キュー管理部５は、分配部５０と、複数のキュー５１１〜５１３と、クレジットカウンタ部５２と、読出処理部５３と、読出条件判定部５４と、読出順序登録ＦＩＦＯ５５とを有する。スケジューラ部６は、蓄積量カウンタ部６０と、クレジット払出部６１と、複数のクレジットシェーパ６２とを有する。なお、スケジューラ部６の動作は、図６を参照して述べたとおりである。
【００６８】
読出条件判定部５４は、キュー５１１〜５１３が読出条件を満たしたか否かを判定し、読出条件を満たしたキュー５１１〜５１３のフローＩＤを読出順序登録ＦＩＦＯ５５に登録する。読出条件判定部５４は、キュー５１１〜５１３ごとに読出フラグ５４１〜５４３を有している。この読出フラグ５４１〜５４３の内容は、図６を参照して説明した読出フラグ８１〜８３と同一であり、読出条件も上述した通りである。
【００６９】
読出条件判定部５４は、各キュー５１１〜５１３のフローＩＤを、読出条件を満たした順に、読出順序登録ＦＩＦＯ５５に登録する。読出処理部５３は、読出順序登録ＦＩＦＯ５５からフローＩＤを読み出し、該フローのキュー５１１〜５１３から、クレジットを消費してパケットを読み出す。このとき、読出処理部５３は、読出順序登録ＦＩＦＯ５５に登録されたフローＩＤのうち、先頭のフローＩＤ、つまり時間的に最も早く登録されたフローＩＤを読み出す。
【００７０】
つまり、読出処理部５３は、複数のキュー５１１〜５１３から、キューごとのクレジット及びキューごとに蓄積されたパケットのデータ量に関する読出条件を満たした順に、クレジットを消費してパケットを読み出す。図９の例では、フロー＃２、フロー＃９７、フロー＃１９６の順に、該当するキューからパケットが読み出される。このように、読出処理部５３は、複雑なサーチ処理を行うことなく、読出順序登録ＦＩＦＯ５５に登録されたフローＩＤに従って簡単に読み出し対象のキューを決定するので、少ない時間で読み出し処理を行うことができる。
【００７１】
キュー５１１〜５１３からパケットが読み出された後、読出条件判定部５４は、該キューが読出条件をさらに満たす場合、当該フローＩＤを読出順序登録ＦＩＦＯ５５に再び登録する。フローＩＤの登録処理は、読出条件が満たされるイベントを契機として行われる。このイベントとは、キュー５１１〜５１３へのパケットの格納、スケジューラ部６からのクレジットの払い出し、及びキュー５１１〜５１３からのパケットの読み出しである。以下に、各イベントにおけるキュー管理部５の動作について説明する。
【００７２】
図１０は、キュー５１１〜５１３にパケットを格納するときのキュー管理部５の動作例を示すフローチャートである。まず、分配部５０は、スイッチカード２から入力されたパケットから、フローＩＤ及びパケット長を取得する（ステップＳｔ２１）。
【００７３】
次に、分配部５０は、取得したフローＩＤに対応するキュー５１１〜５１３に、パケットを格納する（ステップＳｔ２２）。次に、分配部５０は、取得したフローＩＤ及びパケット長をスケジューラ部６に通知する（ステップＳｔ２３）。次に、読出条件判定部５４は、該フローＩＤに対応するキュー５１１〜５１３に蓄積されたパケットのデータ量が０より大きく、かつ、該フローＩＤに対応するクレジットカウンタが０より大きい、とする読出条件の成否を判定する（ステップＳｔ２４）。
【００７４】
読出条件が満たされない場合（ステップＳｔ２４のＮｏ）、キュー管理部５は、処理を終了する。一方、読出条件が満たされる場合（ステップＳｔ２４のＹｅｓ）、読出条件判定部５４は、読出順序登録ＦＩＦＯ５５の該フローＩＤの登録の有無を判定する（ステップＳｔ２５）。該フローＩＤが登録されている場合（ステップＳｔ２５のＮｏ）、キュー管理部５は、処理を終了する。
【００７５】
一方、該フローＩＤが登録されていない場合（ステップＳｔ２５のＹｅｓ）、読出条件判定部５４は、該フローＩＤを読出順序登録ＦＩＦＯ５５に登録して（ステップＳｔ２６）、キュー管理部５は、処理を終了する。このようにして、キュー管理部５は、パケット入力時の処理を行う。
【００７６】
また、図１１は、クレジットが払い出されたときのキュー管理部５の動作例を示すフローチャートである。まず、クレジットカウンタ部５２は、スケジューラ部６から払い出された一定のクレジットを、該当するフローＩＤのクレジットカウンタに加算する（ステップＳｔ３１）。
【００７７】
次に、読出条件判定部５４は、該フローＩＤに対応するキュー５１１〜５１３に蓄積されたパケットのデータ量が０より大きく、かつ、該フローＩＤに対応するクレジットカウンタが０より大きい、とする読出条件の成否を判定する（ステップＳｔ３２）。読出条件が満たされない場合（ステップＳｔ３２のＮｏ）、キュー管理部５は、処理を終了する。
【００７８】
一方、読出条件が満たされる場合（ステップＳｔ３２のＹｅｓ）、読出条件判定部５４は、読出順序登録ＦＩＦＯ５５の該フローＩＤの登録の有無を判定する（ステップＳｔ３３）。該フローＩＤが登録されている場合（ステップＳｔ３３のＮｏ）、キュー管理部５は、処理を終了する。
【００７９】
一方、該フローＩＤが登録されていない場合（ステップＳｔ３３のＹｅｓ）、読出条件判定部５４は、該フローＩＤを読出順序登録ＦＩＦＯ５５に登録し（ステップＳｔ３４）、キュー管理部５は、処理を終了する。このようにして、キュー管理部５は、クレジットが払い出されたときの処理を行う。
【００８０】
また、図１２は、パケットを読み出すときのキュー管理部５の動作例を示すフローチャートである。まず、読出処理部５３は、読出順序登録ＦＩＦＯ５５から先頭のフローＩＤを読み出す（ステップＳｔ４１）。読み出されたフローＩＤは、読出順序登録ＦＩＦＯ５５から削除される。
【００８１】
次に、読出処理部５３は、読み出したフローＩＤに対応するキュー５１１〜５１３から、１つのパケットを読み出す（ステップＳｔ４２）。次に、読出処理部５３は、該フローＩＤに対応するクレジットカウンタから、読み出したパケットの長さ分のクレジットを減算する（ステップＳｔ４３）。すなわち、読出処理部５３は、複数のキュー５１１〜５１３から、キューごとのクレジット及びキューごとに蓄積されたパケットのデータ量に関する読出条件を満たした順に、クレジットを消費してパケットを読み出す。
【００８２】
次に、読出条件判定部５４は、該フローＩＤに対応するキュー５１１〜５１３に蓄積されたパケットのデータ量が０より大きく、かつ、該フローＩＤのクレジットカウンタが０より大きい、とする読出条件の成否を判定する（ステップＳｔ４４）。読出条件が満たされない場合（ステップＳｔ４４のＮｏ）、キュー管理部５は、処理を終了する。
【００８３】
一方、読出条件が満たされる場合（ステップＳｔ４４のＹｅｓ）、読出条件判定部５４は、当該フローＩＤを読出順序登録ＦＩＦＯ５５に再登録し（ステップＳｔ４５）、キュー管理部５は、処理を終了する。このようにして、キュー管理部５は、パケット読み出し時の処理を行う。
【００８４】
このパケット読み出し動作について、図１３及び図１４を参照して具体例を述べる。図１３には、キュー管理部５のパケット読み出し前の状態の一例が示されている。図１４には、キュー管理部５のパケット読み出し後の状態の一例が示されている。
【００８５】
読み出し前、読出順序登録ＦＩＦＯ５５には、フロー＃１、フロー＃２、フロー＃Ｎの順にフローＩＤが登録されている。また、クレジットカウンタは、フロー＃１が７０８（Ｂｙｔｅ）であり、フロー＃２が５４８６（Ｂｙｔｅ）であり、フロー＃Ｎが１５００（Ｂｙｔｅ）である。
【００８６】
読出処理部５３は、読出順序登録ＦＩＦＯ５５に登録されたフローＩＤの順に従い、フロー＃１のキュー５１１からＰＫＴ＃５を読み出し、次にフロー＃２のキュー５１２からＰＫＴ＃３を読み出し、最後にフロー＃Ｎのキュー５１３からＰＫＴ＃１を読み出す。これにより、フロー＃１のクレジットカウンタは、読み出されたＰＫＴ＃５の長さ３００（Ｂｙｔｅ）分のクレジットが減算され、４０８（Ｂｙｔｅ）となる。
【００８７】
また、フロー＃２のクレジットカウンタは、読み出されたＰＫＴ＃３の長さ５００（Ｂｙｔｅ）分のクレジットが減算され、４９８６（Ｂｙｔｅ）となる。フロー＃Ｎのクレジットカウンタは、読み出されたＰＫＴ＃Ｎの長さ１００（Ｂｙｔｅ）分のクレジットが減算され、１４００（Ｂｙｔｅ）となる。
【００８８】
パケットの読み出し後、フロー＃１及びフロー＃２について、クレジットカウンタ＞０、かつ、パケットのデータ量＞０であるので、各々のキュー５１１，５１２は、読出条件を満たす。このため、読出条件判定部５４は、フロー＃１及びフロー＃２を読出順序登録ＦＩＦＯ５５に再登録する。なお、フロー＃Ｎは、対応するキュー５１３にパケットが蓄積されていないため、読出条件が満たされず、再登録は行われない。
【００８９】
このように、読出処理部５３は、複数のキュー５１１〜５１３のうち、読出条件を満たしたキューから、パケットを１つずつ読み出す。このため、読出処理の頻度は、比較的に高くなるが、トラヒックのバースト性が低減されるので、後段の機能ブロック、またはパケット送信先の外部装置におけるトラフィックの負荷が低減される。
【００９０】
また、読出条件判定部５４は、上述したように、パケットの格納、クレジットの払い出し、パケットの読み出しの各イベントの発生時に、フローＩＤを読出順序登録ＦＩＦＯ５５に登録する。各イベントは同時に発生することがないため、読出条件判定部５４は、フローＩＤの登録にあたって、登録の競合の調停を行うことはない。
【００９１】
理由を述べると、まず、スイッチカード２から出力処理部１３へのパケットの入力は、１つずつ順次に行われるため、パケットの格納のイベントが同時に発生することはない。クレジットの払い出し及びパケットの読み出しも、各フローについて順次に行われるため、これらのイベントも同時に発生することはない。また、異なるイベント同士の同時発生は、例えば、各イベントの処理に同期するクロックタイミングを、イベントの発生タイミングがずれるように調整することにより回避される。
【００９２】
本実施例では、上記のイベントの発生を契機として、読出条件判定部５４が、読出条件を満たした順に、該当するフローＩＤを読出順序登録ＦＩＦＯ５５に登録する。そして、読出処理部５３は、登録されたフローＩＤを先頭から順に参照して、該当するキュー５１１〜５１３からパケットを読み出す。このため、読出処理部５３は、多くの時間を必要とするサーチ処理を行うことなく、負荷が軽い簡単な処理でキュー５１１〜５１３を選択し、パケットを読み出すことができる。
【００９３】
このように、キュー管理部５は、単純な手法によりパケットの読み出しを行うが、スケジューラ部６は、クレジットシェーパ６２によりフローごとの優先度や重みなどのパラメータを考慮し、各フローに対して公平にクレジットの払い出しを行う。したがって、ネットワークインターフェースカード１全体で見た通信品質が担保される。
【００９４】
（第２実施例）
第１実施例において、読出処理部５３は、複数のキュー５１１〜５１３のうち、読出条件を満たしたキューから、パケットを１つずつ読み出すが、これに限定されず、読み出し済みのパケットのデータ量が所定量に達するまで連続して読み出してもよい。
【００９５】
図１５は、パケットを読み出すときの第２実施例のキュー管理部５の動作を示すフローチャートである。まず、読出処理部５３は、読出順序登録ＦＩＦＯ５５から先頭のフローＩＤを読み出す（ステップＳｔ５１）。
【００９６】
次に、読出処理部５３は、読み出したフローＩＤに対応するキュー５１１〜５１３から、１つのパケットを読み出す（ステップＳｔ５２）。次に、読出処理部５３は、該フローＩＤに対応するクレジットカウンタから、読み出したパケットの長さ分のクレジットを減算する（ステップＳｔ５３）。
【００９７】
次に、読出条件判定部５４は、該フローＩＤに対応するキュー５１１〜５１３に蓄積されたパケットのデータ量が０より大きく、かつ、該フローＩＤのクレジットカウンタが０より大きい、とする読出条件の成否を判定する（ステップＳｔ５４）。読出条件が満たされない場合（ステップＳｔ５４のＮｏ）、キュー管理部５は、処理を終了する。
【００９８】
一方、読出条件が満たされる場合（ステップＳｔ５４のＹｅｓ）、読出処理部５３は読み出し済みのデータ量が、所定量Ｆより小さいか否かを判定する（ステップＳｔ５５）。読み出し済みのデータ量が所定量Ｆより小さい場合（ステップＳｔ５５のＹｅｓ）、再びステップＳｔ５２の処理が行われる。
【００９９】
一方、読み出し済みのデータ量が所定量Ｆ以上である場合（ステップＳｔ５５のＮｏ）、読出条件判定部５４は、当該フローＩＤを読出順序登録ＦＩＦＯ５５に再登録し（ステップＳｔ５６）、キュー管理部５は、処理を終了する。このようにして、キュー管理部５は、パケット読み出し時の処理を行う。
【０１００】
図１３及び図１６を参照して、このパケット読み出し動作の具体例を述べる。図１６には、第２実施例のキュー管理部５のパケット読み出し後の状態の一例が示されている。ここでは、上記の所定量Ｆを１０００（Ｂｙｔｅ）とする。また、図１３については、上述したとおりであるので、説明を省略する。
【０１０１】
読出処理部５３は、読出順序登録ＦＩＦＯ５５に登録されたフローＩＤの順に従い、まず、フロー＃１のキュー５１１からＰＫＴ＃５及びＰＫＴ＃６（データ量の合計は８００（Ｂｙｔｅ））を連続して読み出す。このとき、フロー＃１のクレジットカウンタは、読み出し済みのＰＫＴ＃５及びＰＫＴ＃６の長さ８００（Ｂｙｔｅ）分のクレジットが減算され、−９２（Ｂｙｔｅ）となる。この時点において、フロー＃１のキュー５１１は、読出条件を満たさなくなる（ステップＳｔ５４のＮｏ）。このため、読出処理部５３は、フロー＃１のキュー５１１からのパケットの読み出しを終了する。このとき、読出条件判定部５４は、フロー＃１を読出順序登録ＦＩＦＯ５５に再登録しない。
【０１０２】
読出処理部５３は、次に、フロー＃２のキュー５１２からＰＫＴ＃３〜ＰＫＴ＃５（データ量の合計は１１００（Ｂｙｔｅ））を連続して読み出す。このとき、フロー＃２のクレジットカウンタは、読み出し済みのＰＫＴ＃３〜ＰＫＴ＃５の長さ１１００（Ｂｙｔｅ）分のクレジットが減算され、４３８６（Ｂｙｔｅ）となる。この時点において、フロー＃２のキュー５１２は、読出条件を満たしているが（ステップＳｔ５４のＹｅｓ）、読み出し済みのパケットのデータ量が所定量Ｆに達している（ステップＳｔ５５のＮｏ）。このため、読出条件判定部５４は、フロー＃２を読出順序登録ＦＩＦＯ５５に再登録し（ステップＳｔ５６）、読出処理部５３は、フロー＃２のキュー５１２からのパケットの読み出しを終了する。
【０１０３】
読出処理部５３は、最後に、フロー＃Ｎのキュー５１３からＰＫＴ＃１（データ量は１００（Ｂｙｔｅ））を読み出す。このとき、フロー＃Ｎのクレジットカウンタは、読み出し済みのＰＫＴ＃１の長さ１００（Ｂｙｔｅ）分のクレジットが減算され、１４００（Ｂｙｔｅ）となる。この時点において、フロー＃Ｎのキュー５１３は、空になるので、読出条件を満たさなくなる（ステップＳｔ５４のＮｏ）。このため、読出処理部５３は、フロー＃Ｎのキュー５１３からのパケットの読み出しを終了する。このとき、読出条件判定部５４は、フロー＃Ｎを読出順序登録ＦＩＦＯ５５に再登録しない。
【０１０４】
このように、読出処理部５３は、複数のキュー５１１〜５１３のうち、読出条件を満たしたキューから、パケットを、読み出し済みのパケットのデータ量が所定量Ｆに達するまで連続して読み出す。このため、トラヒックのバースト性が第１実施例より高くなるが、読出処理の頻度が第１実施例より低くなるので、読出処理部５３の負荷が低減される。
【０１０５】
（第３実施例）
第２実施例では、読出処理部５３は、読み出し済みのパケットのデータ量が所定量Ｆに達するまで連続して読み出すが、これに限定されず、パケットを、読出条件が満たさなくなるまで連続して読み出してもよい。
【０１０６】
図１７は、パケットを読み出すときの第３実施例のキュー管理部５の動作を示すフローチャートである。まず、読出処理部５３は、読出順序登録ＦＩＦＯ５５から先頭のフローＩＤを読み出す（ステップＳｔ６１）。
【０１０７】
次に、読出処理部５３は、読み出したフローＩＤに対応するキュー５１１〜５１３から、１つのパケットを読み出す（ステップＳｔ６２）。次に、読出処理部５３は、該フローＩＤに対応するクレジットカウンタから、読み出したパケットの長さ分のクレジットを減算する（ステップＳｔ６３）。
【０１０８】
次に、読出条件判定部５４は、該フローＩＤに対応するキュー５１１〜５１３に蓄積されたパケットのデータ量が０より大きく、かつ、該フローＩＤのクレジットカウンタが０より大きい、とする読出条件の成否を判定する（ステップＳｔ６４）。読出条件が満たされない場合（ステップＳｔ６４のＮｏ）、キュー管理部５は、処理を終了する。なお、本実施例では、上述した実施例とは異なり、読み出し動作が終了した時点において、読出条件が満たされていないため、必然的にフローＩＤの再登録は行われない。
【０１０９】
一方、読出条件が満たされる場合（ステップＳｔ６４のＹｅｓ）、再びステップＳｔ６２の処理が行われる。このようにして、キュー管理部５は、パケット読み出し時の処理を行う。
【０１１０】
図１３及び図１８を参照して、このパケット読み出し動作の具体例を述べる。図１８には、第３実施例のキュー管理部５のパケット読み出し後の状態の一例が示されている。なお、図１３については、上述したとおりであるので、説明を省略する。
【０１１１】
読出処理部５３は、読出順序登録ＦＩＦＯ５５に登録されたフローＩＤの順に従い、まず、フロー＃１のキュー５１１からＰＫＴ＃５及びＰＫＴ＃６（データ量の合計は８００（Ｂｙｔｅ））を連続して読み出す。このとき、フロー＃１のクレジットカウンタは、読み出し済みのＰＫＴ＃５及びＰＫＴ＃６の長さ８００（Ｂｙｔｅ）分のクレジットが減算され、−９２（Ｂｙｔｅ）となる。この時点において、フロー＃１のキュー５１１は、読出条件を満たさなくなる（ステップＳｔ６４のＮｏ）。このため、読出処理部５３は、フロー＃１のキュー５１１からのパケットの読み出しを終了する。
【０１１２】
読出処理部５３は、次に、フロー＃２のキュー５１２からＰＫＴ＃３〜ＰＫＴ＃６（データ量の合計は１４００（Ｂｙｔｅ））を連続して読み出す。このとき、フロー＃２のクレジットカウンタは、読み出し済みのＰＫＴ＃３〜ＰＫＴ＃６の長さ１４００（Ｂｙｔｅ）分のクレジットが減算され、４０８６（Ｂｙｔｅ）となる。この時点において、フロー＃２のキュー５１２は、空になるので、読出条件を満たさなくなる（ステップＳｔ６４のＮｏ）。このため、読出条件判定部５４は、読出処理部５３は、フロー＃２のキュー５１２からのパケットの読み出しを終了する。
【０１１３】
読出処理部５３は、最後に、フロー＃Ｎのキュー５１３からＰＫＴ＃１（データ量は１００（Ｂｙｔｅ））を読み出す。このとき、フロー＃Ｎのクレジットカウンタは、読み出し済みのＰＫＴ＃１の長さ１００（Ｂｙｔｅ）分のクレジットが減算され、１４００（Ｂｙｔｅ）となる。この時点において、フロー＃Ｎのキュー５１３は、空になるので、読出条件を満たさなくなる（ステップＳｔ６４のＮｏ）。このため、読出処理部５３は、フロー＃Ｎのキュー５１３からのパケットの読み出しを終了する。
【０１１４】
このように、読出処理部５３は、複数のキュー５１１〜５１３のうち、読出条件を満たしたキューから、パケットを、読出条件が満たさなくなるまで連続して読み出す。このため、トラフィックのバースト性が、第１実施例及び第２実施例より高くなるが、読出処理の頻度が、第１実施例及び第２実施例より低くなるので、読出処理部５３の負荷がさらに低減される。
【０１１５】
（第４実施例）
上記の各実施例において、読出処理部５３は、単一の読出順序登録ＦＩＦＯ５５からフローＩＤを読み出したが、これに限定されず、複数のポートにそれぞれ対応する複数の読出順序登録ＦＩＦＯからフローＩＤを読み出してもよい。
【０１１６】
図１９は、第４実施例のキュー管理部５の構成を示す構成図である。なお、図１９において、図９と共通する構成には、同一の符号を付し、その説明を省略する。
【０１１７】
出力処理部１３は、キュー管理部５、スケジューラ部６、及び複数のポート＃１〜＃Ｍを有する。キュー管理部５は、分配部５０と、複数のキュー５１１〜５１３と、クレジットカウンタ部５２と、読出処理部５３ａと、読出条件判定部５４ａと、複数の読出順序登録ＦＩＦＯ（読出順序登録部）５６１〜５６３と、選択処理部５７とを有する。なお、スケジューラ部６の構成については、図６〜図９を参照して述べたとおりである。
【０１１８】
上述したように、出力処理部１３は、読出処理部５３ａにより読み出されたパケットを、複数のポート＃１〜＃Ｍを介し、外部装置に送信する。複数の読出順序登録ＦＩＦＯ５６１〜５６３は、複数のポート＃１〜＃Ｍにそれぞれ対応し、複数のキュー５１１〜５１３のフローＩＤ（識別子）が、上記の読出条件を満たした順に登録される。
【０１１９】
読出条件判定部５４ａは、キュー５１１〜５１３ごとに読出条件の成否を判定し、複数のキュー５１１〜５１３のうち、読出条件が満たされたキューに対応するフローＩＤを、該当するポート＃１〜＃Ｍの読出順序登録ＦＩＦＯ５６１〜５６３に登録する。ここで、フローＩＤ及びポート＃１〜＃Ｍの対応関係を示す情報は、読出条件判定部５４ａ内に予め保持されている。なお、読出条件判定部５４ａは、上述した実施例と同様の読出フラグ５４１ａ〜５４３ａを有する。
【０１２０】
選択処理部５７は、複数の読出順序登録ＦＩＦＯ５６１〜５６３から１つを選択し、選択した読出順序登録ＦＩＦＯに登録された最先のフローＩＤを読出処理部５３ａに出力する。選択処理部５７は、ラウンドロビン方式などに従い、読出順序登録ＦＩＦＯ５６１〜５６３から１つを選択する。なお、ポート数Ｍは、１つの出力処理部１３に対し、多くとも数十個程度であり、フローＩＤの数（最大で数万）に比べると少ない。このため、選択処理部５７の選択処理は、他のスケジューリング処理より負荷が低く、ネットワークインターフェー装置１のスループットを低下させることはない。
【０１２１】
読出処理部５３ａは、複数のキュー５１１〜５１３のうち、選択処理部５７から入力されたフローＩＤに応じたキューからパケットを読み出し、複数のポート＃１〜＃Ｍのうち、当該キューに対応するポートに出力する。このため、本実施例によると、ポート＃１〜＃Ｍごとのスループットの公平性を担保することができる。
【０１２２】
また、選択処理部５７は、ネットワークインターフェースカード１が、外部装置からポート＃１〜＃Ｍを介してフロー制御信号Ｆｓを受信した場合、当該ポートに対応する読出順序登録ＦＩＦＯ５６１〜５６３を選択対象から除外する。このフロー制御信号Ｆｓは、ネットワークインターフェースカード１から外部装置に入力されるトラフィック量が一定以上に達したとき、該トラフィック量を低減するために送信される。
【０１２３】
したがって、ネットワークインターフェースカード１は、外部装置からの要求に応じて、当該外部装置へのパケットの送信を停止し、外部装置におけるトラフィックの負荷を低減することができる。なお、フロー制御信号Ｆｓによるフロー制御は、例えばＩＥＥＥ８０２．３ｘ（ＩＥＥＥ：The Institute of Electrical and Electronics Engineers, Inc.）に規定されている。
【０１２４】
（第５実施例）
例えば、第２実施例及び第３実施例のように、所定のデータ量を超えるパケットが、バースト的なトラフィックとして読み出される場合、トラフィック量が各ポート＃１〜＃Ｍの通信帯域を上回ることにより、パケット損失が発生することが懸念される。そこで、読出処理部５３，５３ａの後段に、バースト性のトラフィックを吸収するバッファを設けることが望ましい。
【０１２５】
図２０は、第５実施例のキュー管理部５の構成を示す構成図である。なお、図２０において、図１９と共通する構成には、同一の符号を付し、その説明を省略する。
【０１２６】
出力処理部１３は、キュー管理部５、スケジューラ部６、及び複数のポート＃１〜＃Ｍを有する。キュー管理部５は、分配部５０と、複数のキュー５１１〜５１３と、クレジットカウンタ部５２と、読出処理部５３ｂと、読出条件判定部５４ａと、複数の読出順序登録ＦＩＦＯ５６１〜５６３と、選択処理部５７ａとを有する。キュー管理部５は、さらに、複数の出力キュー７０１〜７０３と、複数のパケットシェーパ７１と、出力帯域制御部７２とを有する。なお、スケジューラ部６の構成については、図６〜図９を参照して述べたとおりである。
【０１２７】
複数の出力キュー７０１〜７０３は、ＦＩＦＯなどのパケットの格納手段であり、読出処理部５３ｂから複数のポート＃１〜＃Ｍに出力されるパケットを、それぞれ蓄積する。読出処理部５３ｂは、出力対象となるポート＃１〜＃Ｍごとに、パケットを複数の出力キュー７０１〜７０３に振り分けて格納する。なお、振り分け処理は、例えば、パケットのフローＩＤに基づいて行われる。
【０１２８】
パケットシェーパ７１は、出力キュー７０１〜７０３からそれぞれ読み出されるパケットの間隔を調整する。パケットシェーパ７１は、例えば、送信権として扱われるトークンを貯めるトークンバケットを有し、トークンの残量に応じてパケットの読み出しを制限する。パケットシェーパ７１は、パケットの間隔を、トークンの供給レートにより調整する。
【０１２９】
出力帯域制御部７２は、パケットシェーパ７１を介して、複数の出力キュー７０１〜７０３からパケットを読み出す。出力帯域制御部７２は、例えばラウンドロビン方式に従って、読み出し可能な出力キュー７０１〜７０３から読み出し対象のキューを決定する。読み出されたパケットは、ポートを介して外部装置に送信される。
【０１３０】
出力帯域制御部７２は、複数の出力キュー７０１〜７０３からのパケットの読み出しの可否をそれぞれ示す出力フラグ７２１〜７２３を有する。出力フラグ７２１〜７２３は、パケットの読み出しが可能である場合、”１”を示し、パケットの読み出しが不可能である場合、”０”を示す。
【０１３１】
出力帯域制御部７２は、複数の出力キュー７０１〜７０３の各々について、蓄積されたパケットのデータ量が０より大きく、かつ、パケットシェーパ７１のトークン残量が０より大きい、とする出力条件の成否を判定する。この出力条件を満たす出力キュー７０１〜７０３は、出力フラグ７２１〜７２３が”１”に設定され、一方、出力条件を満たさない出力キュー７０１〜７０３は、出力フラグ７２１〜７２３が”０”に設定される。
【０１３２】
図２０の例では、複数の出力キュー７０１〜７０３のうち、出力キュー７０２のみが空であるため、出力フラグ７２２は”０”を示し、他の出力フラグ７２１，７２３は”１”を示す。スケジューラ部９３は、複数の出力キュー７０１〜７０３のうち、出力フラグ７２１〜７２３が”１”を示す出力キュー７０１，７０３から、ラウンドロビン方式などに従って１つを選択し、選択した出力キューからパケットを読み出す。
【０１３３】
出力帯域制御部７２は、複数の出力キュー７０１〜７０３にそれぞれ蓄積されたパケットのデータ量が所定の閾値ＴＨを超えたとき、選択処理部５７ａに停止制御信号Ｓｐを出力する。停止制御信号Ｓｐは、当該出力キュー７０１〜７０３に対応するポート番号（＃１〜＃Ｍ）を示す情報を含む。
【０１３４】
選択処理部５７ａは、停止制御信号Ｓｐに従い、複数の出力キュー７０１〜７０３のうち、当該出力キューに蓄積されたパケットが出力されるポート＃１〜＃Ｍに対応する読出順序登録ＦＩＦＯ５６１〜５６３を選択対象から除外する。より具体的には、選択処理部５７ａは、複数の読出順序登録ＦＩＦＯ５６１〜５６３のうち、停止制御信号Ｓｐが示すポート番号に対応する読出順序登録ＦＩＦＯを選択対象から除外する。
【０１３５】
図２１は、出力キュー７０１〜７０３にパケットを格納したときの出力帯域制御部７２の動作例を示すフローチャートである。まず、出力帯域制御部７２は、出力キュー７０１〜７０３について、蓄積されたパケットのデータ量が０より大きく、かつ、対応するパケットシェーパ７１のトークン残量が０より大きい、とする出力条件の成否を判定する（ステップＳｔ８１）。
【０１３６】
出力条件が満たされる場合（ステップＳｔ８１のＹｅｓ）、出力帯域制御部７２は、当該出力フラグ７２１〜７２３を”１”に設定する（ステップＳｔ８２）。次に、出力帯域制御部７２は、当該出力キュー７０１〜７０３に蓄積されたパケットのデータ量が所定の閾値ＴＨより大きいか否かを判定する（ステップＳｔ８３）。この判定処理は、出力条件が満たされない場合（ステップＳｔ８１のＮｏ）にも行われる。
【０１３７】
パケットのデータ量が所定の閾値ＴＨより大きい場合（ステップＳｔ８３のＹｅｓ）、出力帯域制御部７２は、停止制御信号Ｓｐを選択処理部５７ａに出力して（ステップＳｔ８４）、処理を終了する。一方、パケットのデータ量が所定の閾値ＴＨ以下である場合（ステップＳｔ８３のＮｏ）、出力帯域制御部７２は、停止制御信号Ｓｐを出力せずに、処理を終了する。このようにして、出力帯域制御部７２は、パケットの格納時の処理を行う。
【０１３８】
また、図２２は、出力キュー７０１〜７０３からパケットを読み出すときの出力帯域制御部７２の動作例を示すフローチャートである。出力帯域制御部７２は、複数の出力キュー７０１〜７０３のうち、出力フラグ７２１〜７２３が”１”を示すキューの１つを選択して、選択した出力キューからパケットを読み出す（ステップＳｔ９１）。
【０１３９】
次に、出力帯域制御部７２は、当該出力キュー７０１〜７０３に対応するパケットシェーパ７１のトークンから、読み出したパケットの長さ分のトークンを減算する（ステップＳｔ９２）。次に、出力帯域制御部７２は、当該出力キュー７０１〜７０３について、蓄積されたパケットのデータ量が０より大きく、かつ、対応するパケットシェーパ７１のトークン残量が０より大きい、とする出力条件の成否を判定する（ステップＳｔ９３）。
【０１４０】
出力条件が満たされない場合（ステップＳｔ９３のＮｏ）、出力帯域制御部７２は、該当する出力フラグ７２１〜７２３を”０”に設定する（ステップＳｔ９４）。次に、出力帯域制御部７２は、当該出力キュー７０１〜７０３に対応するポート＃１〜＃Ｍについて、停止制御信号Ｓｐを出力中であるか否かを判定する（ステップＳｔ９５）。この判定処理は、出力条件が満たされる場合（ステップＳｔ９３のＹｅｓ）にも行われる。
【０１４１】
停止制御信号Ｓｐを出力中である場合（ステップＳｔ９５のＹｅｓ）、出力帯域制御部７２は、当該出力キュー７０１〜７０３に蓄積されたパケットのデータ量が所定の閾値ＴＨより大きいか否かを判定する（ステップＳｔ９６）。一方、停止制御信号Ｓｐを出力中である場合（ステップＳｔ９５のＮｏ）、出力帯域制御部７２は、処理を終了する。
【０１４２】
パケットのデータ量が所定の閾値ＴＨ以下である場合（ステップＳｔ９６のＮｏ）、出力帯域制御部７２は、停止制御信号Ｓｐの出力を停止する（ステップＳｔ９７）。一方、パケットのデータ量が所定の閾値ＴＨより大きい場合（ステップＳｔ９６のＹｅｓ）、出力帯域制御部７２は、処理を終了する。このようにして、出力帯域制御部７２は、パケットの読み出し時の処理を行う。
【０１４３】
本実施例において、読出処理部５３，５３ａの後段に、複数の出力キュー７０１〜７０３が設けられているので、各ポート＃１〜＃Ｍに出力されるバースト性のトラフィックを吸収することができる。また、出力キュー７０１〜７０３に蓄積されたパケットのデータ量が所定の閾値ＴＨより大きい場合、選択処理部５７ａに停止制御信号Ｓｐを出力して、該当するフローのパケットの読み出しを停止させる。このため、いわゆるバックプレッシャー制御の効果により、一定のバースト性を有するトラフィックの出力により、出力処理部１３内の後段の機能部におけるパケットの損失が低減される。
【０１４４】
これまで述べたように、実施例に係るパケット交換装置（ネットワークインターフェースカード）１は、１以上のパケットを蓄積する複数のキュー５１１〜５１３と、複数のキュー５１１〜５１３の各々に一定のクレジットを与えるスケジューラ部６と、読出処理部５３とを有する。読出処理部５３は、複数のキュー５１１〜５１３から、キューごとのクレジット及びキューごとに蓄積されたパケットのデータ量に関する読出条件を満たした順に、クレジットを消費してパケットを読み出す。
【０１４５】
上記のとおり、スケジューラ部６は、パケットを読み出す読出処理部５３から独立して設けられ、各キュー５１１〜５１３に一定のクレジットを与える。また、読出処理部５３は、各キュー５１１〜５１３から、クレジットを消費してパケットを読み出す。
【０１４６】
したがって、実施例に係るパケット交換装置１によると、各キュー５１１〜５１３は、クレジットに基づいてパケットの読み出し量が制御され、キュー５１１〜５１３間の公平性が担保される。また、各キュー５１１〜５１３は、クレジットがあれば、パケットを読み出されるため、パケット長が短いショートパケットが連続して格納された場合であっても、クレジットを消費することにより、少ない遅延量でショートパケットの読み出しが可能である。
【０１４７】
また、読出処理部５３は、複数のキュー５１１〜５１３から、キューごとのクレジット及びキューごとに蓄積されたパケットのデータ量に関する読出条件を満たした順に、パケットを読み出す。このため、読出処理部５３は、多くの時間を必要とするサーチ処理を行うことなく、負荷が軽い簡単な処理でキュー５１１〜５１３を選択し、パケットを読み出すことができる。よって、実施例に係るパケット交換装置１によると、効果的にスループットを向上することができる。
【０１４８】
また、実施例に係る伝送装置は、外部装置との間において、パケットを送受信する複数のパケット交換装置１と、複数のパケット交換装置１の間において、パケットを交換するスイッチカード２とを有する。パケット交換装置１は、スイッチカード２から入力されたパケットを複数のキュー５１１〜５１３に蓄積し、複数のキュー５１１〜５１３から読み出したパケットを外装置部に送信する。
【０１４９】
実施例に係る伝送装置によると、上記のパケット交換装置１を含むため、上述した作用効果を奏する。なお、この作用効果は、伝送装置に設けられるパケット交換装置１の少なくとも１つが、実施例に係るパケット交換装置１であれば得られる。
【０１５０】
また、実施例に係るパケットスケジューリング方法は、以下の工程（１）及び（２）を含む。
（１）パケットを蓄積する複数のキュー５１１〜５１３の各々に一定のクレジットを与える工程
（２）複数のキュー５１１〜５１３から、キューごとのクレジット及びキューごとに蓄積されたパケットのデータ量に関する読出条件を満たした順に、クレジットを消費してパケットを読み出す工程
【０１５１】
実施例に係るパケットスケジューリング方法によると、上記のパケット交換装置１と同様の構成のため、上述した作用効果を奏する。
【０１５２】
以上、好ましい実施例を参照して本発明の内容を具体的に説明したが、本発明の基本的技術思想及び教示に基づいて、当業者であれば、種々の変形態様を採り得ることは自明である。
【０１５３】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  １以上のパケットを蓄積する複数のキューと、
前記複数のキューの各々に一定の読出許容量を与えるスケジューラ部と、
前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出す読出処理部とを有することを特徴とするパケット交換装置。
（付記２）  前記読出条件は、前記読出許容量及び前記複数のキューに蓄積された前記１以上のパケットのデータ量が、それぞれ、０より大きいときに満たされることを特徴とする付記１に記載のパケット交換装置。
（付記３）  前記スケジューラ部は、前記複数のキューのうち、蓄積された前記１以上パケットのデータ量が一定量以上であるキューに、前記読出許容量を与えることを特徴とする付記１または２に記載のパケット交換装置。
（付記４）  前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを１つずつ読み出すことを特徴とする付記１乃至３の何れかに記載のパケット交換装置。
（付記５）  前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、読み出し済みのパケットのデータ量が所定量に達するまで連続して読み出すことを特徴とする付記１乃至３の何れかに記載のパケット交換装置。
（付記６）  前記読出処理部は、前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、前記読出条件が満たさなくなるまで連続して読み出すことを特徴とする付記１乃至３の何れかに記載のパケット交換装置。
（付記７）  前記読出処理部により読み出された前記１以上のパケットを、外部装置に送信するための複数のポートと、
前記複数のポートにそれぞれ対応し、前記複数のキューの識別子が、前記読出条件を満たした順に登録される複数の読出順序登録部と、
前記複数の読出順序登録部から１つを選択し、選択した読出順序登録部に登録された最先の前記識別子を前記読出処理部に出力する選択処理部とを、さらに有し、
前記読出処理部は、前記複数のキューのうち、前記選択処理部から入力された前記識別子に応じたキューから前記１以上のパケットを読み出し、前記複数のポートのうち、当該キューに対応するポートに出力することを特徴とする付記１乃至６の何れかに記載のパケット交換装置。
（付記８）  前記読出処理部から前記複数のポートに出力される前記１以上のパケットを、それぞれ蓄積する複数の出力キューと、
前記複数の出力キューにそれぞれ蓄積された前記１以上のパケットのデータ量が所定の閾値を超えたとき、停止制御信号を前記選択処理部に出力する出力帯域制御部とを、さらに有し、
前記選択処理部は、前記停止制御信号に従い、前記複数の出力キューのうち、当該出力キューに蓄積された前記１以上のパケットが出力される前記複数のポートに対応する前記複数の読出順序登録部を選択対象から除外することを特徴とする付記７に記載のパケット交換装置。
（付記９）  外部装置との間において、パケットを送受信する複数のパケット交換装置と、
前記複数のパケット交換装置の間において、前記パケットを交換するスイッチ装置とを有し、
前記複数のパケット交換装置の少なくとも１つは、付記１乃至８の何れかに記載のパケット交換装置であり、前記スイッチ装置から入力されたパケットを前記複数のキューに蓄積し、前記複数のキューから読み出したパケットを前記外装置部に送信することを特徴とする伝送装置。
（付記１０）  １以上のパケットを蓄積する複数のキューの各々に一定の読出許容量を与え、
前記複数のキューから、該キューごとの前記読出許容量及び該キューごとに蓄積された前記１以上のパケットのデータ量に関する読出条件を満たした順に、前記読出許容量を消費して前記１以上のパケットを読み出すことを特徴とするパケットスケジューリング方法。
（付記１１）  前記読出条件は、前記読出許容量及び前記複数のキューに蓄積された前記１以上のパケットのデータ量が、それぞれ、０より大きいときに満たされることを特徴とする付記１０に記載のパケットスケジューリング方法。
（付記１２）  前記読出許容量は、前記複数のキューのうち、蓄積された前記１以上パケットのデータ量が一定量以上であるキューに、与えられることを特徴とする付記１０または１１に記載のパケットスケジューリング方法。
（付記１３）  前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを１つずつ読み出すことを特徴とする付記１０乃至１２の何れかに記載のパケットスケジューリング方法。
（付記１４）  前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、読み出し済みのパケットのデータ量が所定量に達するまで連続して読み出すことを特徴とする付記１０乃至１２の何れかに記載のパケットスケジューリング方法。
（付記１５）  前記複数のキューのうち、前記読出条件を満たしたキューから、前記１以上のパケットを、前記読出条件が満たさなくなるまで連続して読み出すことを特徴とする付記１０乃至１２の何れかに記載のパケットスケジューリング方法。
【符号の説明】
【０１５４】
１                              ネットワークインターフェースカード（パケット交換装置）
２                              スイッチカード（スイッチ装置）
６                              スケジューラ部
５３，５３ａ，５３ｂ            読出処理部
５７                            選択処理部
６２                            出力帯域制御部
５１１〜５１３                  キュー
５６１〜５６３                  読出順序登録ＦＩＦＯ（読出順序登録部）
６０１〜６０３                  出力キュー
【図１】
2014135581.tif 000003
【図２】
2014135581.tif 000004
【図３】
2014135581.tif 000005
【図４】
2014135581.tif 000006
【図５】
2014135581.tif 000007
【図６】
2014135581.tif 000008
【図７】
2014135581.tif 000009
【図８】
2014135581.tif 000010
【図９】
2014135581.tif 000011
【図１０】
2014135581.tif 000012
【図１１】
2014135581.tif 000013
【図１２】
2014135581.tif 000014
【図１３】
2014135581.tif 000015
【図１４】
2014135581.tif 000016
【図１５】
2014135581.tif 000017
【図１６】
2014135581.tif 000018
【図１７】
2014135581.tif 000019
【図１８】
2014135581.tif 000020
【図１９】
2014135581.tif 000021
【図２０】
2014135581.tif 000022
【図２１】
2014135581.tif 000023
【図２２】
2014135581.tif 000024