(57)【特許請求の範囲】
【請求項１】
帯域保証型フローおよびベストエフォート型フローを含む複数のフローのパケットデータを送信する通信装置であって、
上記帯域保証型フローのパケットデータの送信タイミングまたは上記ベストエフォート型フローのパケットデータの送信タイミングを決定するタイミング決定手段と、
上記タイミング決定手段によって決定されたタイミングで、トークンの蓄積容量に応じてパケットキューの先頭のパケットデータを送信するパケット送信手段であって、上記帯域保証型フローのパケットデータが送信されていないタイミングで上記ベストエフォート型フローのパケットデータを送信するパケット送信手段と
を有し、
上記パケット送信手段は、時分割多重で各パケットデータの送信を行い、上記各パケットデータに割り当てられる送信タイミングを実時刻とし、上記各パケットデータを実際に送信可能な時刻を仮想時刻として管理し、上記仮想時刻が上記実時刻より進んでいる場合のみ上記ベストエフォート型フローのパケットデータを送信する
通信装置。
【請求項２】
上記パケット送信手段は、上記トークンの蓄積容量がゼロを越えたとき、当該パケットキューの先頭のパケットデータを送信する
請求項１記載の通信装置。
【請求項３】
上記パケット送信手段は、上記パケットキューの先頭のパケットデータを送信した後、上記トークンの蓄積容量から上記送信されたパケットデータのサイズを減算する
請求項１記載の通信装置。
【請求項４】
上記パケット送信手段は、予め設定された手順で複数の上記帯域保証型フローのパケットキューから上記パケットキューを選択し、当該選択されたフローのパケットキューの先頭のパケットデータを送信する
請求項１記載の通信装置。
【請求項５】
上記タイミング決定手段は、
送信時刻を管理するタイミングを発生するタイマーと、
上記タイマーの時刻情報及び各フローの情報に基づき、上記各フローの送信タイミングを決定する制御手段と
を有する請求項１記載の通信装置。
【請求項６】
入力パケットをそれぞれのパケットの識別子に応じて、そのパケットの属しているフローに設けられているパケットキューに入力するパケット入力手段
をさらに有する請求項１記載の通信装置。
【請求項７】
上記パケットデータのデータ長は可変である
請求項１記載の通信装置。
【請求項８】
帯域保証型フローおよびベストエフォート型フローを含む複数のフローのパケットデータを送信する通信方法であって、
上記帯域保証型フローのパケットデータの送信タイミングまたは上記ベストエフォート型フローのパケットデータの送信タイミングを決定する第１のステップと、
上記第１のステップで決定されたタイミングで、トークンの蓄積容量に応じてパケットキューの先頭のパケットデータを送信する第２のステップであって、上記帯域保証型フローのパケットデータが送信されていないタイミングで上記ベストエフォート型フローのパケットデータを送信する第２のステップと
を有し、
上記第２のステップにおいては、時分割多重で各パケットデータの送信を行い、上記各パケットデータに割り当てられる送信タイミングを実時刻とし、上記各パケットデータを実際に送信可能な時刻を仮想時刻として管理し、上記仮想時刻が上記実時刻より進んでいる場合のみ上記ベストエフォート型フローのパケットデータを送信する
通信方法。
【請求項９】
上記第２のステップにおいては、上記トークンの蓄積容量がゼロを越えたとき、当該パケットキューの先頭のパケットデータを送信する
請求項８記載の通信方法。
【請求項１０】
上記第２のステップにおいては、上記パケットキューの先頭のパケットデータを送信した後、上記トークンの蓄積容量から上記送信されたパケットデータのサイズを減算する
請求項８記載の通信方法。
【請求項１１】
上記第２のステップにおいては、予め設定された手順で複数の上記帯域保証型フローのパケットキューから上記パケットキューを選択し、当該選択されたフローのパケットキューの先頭のパケットデータを送信する
請求項８記載の通信方法。
【請求項１２】
上記第２のステップにおいては、入力パケットをそれぞれのパケットの識別子に応じて、そのパケットの属しているフローに設けられているパケットキューに入力する
請求項８記載の通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一つのネットワークインターフェースが複数のフローによって共有される場合に、それぞれのフローからの送信要求を管理し、同時に二つ以上のフローから送信要求の発生を回避できる通信装置及びその通信方法に関するものである。
【０００２】
【従来の技術】
インターネットなどのネットワークを通信網として用いてパケットデータを送受信するネットワーク通信システムにおいて、一つのネットワークインターフェースを共有する複数のフローに対して帯域保証を行う場合、フロー間での干渉を避けるため、フローごとにパケットキューを割り当てる方法が提案されている。例えば、Fair Queueing (Joins Nagle, On Packet Switched with infinite Storage, IEEE Transaction on Communications Vol.35 No.4, pp.435-438, Apr.1987) はその一例である。
【０００３】
図９は、この方法によるパケットデータの処理を示す概念図である。図示のように、送信パケットは何らかの識別子を元にどのフローに属するかが特定され、そのフローに対応付けて設けられている専用のキューに入れられる。例えば、図示のように、識別子Ａ１を持つパケットデータがキューＱa1に入れられ、識別子Ａ２を持つパケットデータがキューＱa2に入れられ、識別子Ａ３を持つパケットデータがキューＱa3に入れられ、…、識別子Ａ１０を持つパケットデータがキューＱa10 に入れられる。
【０００４】
パケットの識別子として、例えば、通信プロトコルとしてＴＣＰ／ＩＰが用いられているネットワークでは、各パケットに付けられているパケットヘッダの情報が用いられる。図１０には、ＴＣＰ／ＩＰプロトコルのパケットヘッダの構成を示している。図示のように、このパケットヘッダから、パケットデータの送信側と受信側のＩＰアドレス及びポート番号、プロトコル番号、その他のフィールドの一部または全てを組み合わせることで、そのパケットが属するフローを一意に決められる。このため、これらのヘッダ情報をパケット識別子として当該パケットの属するフローを特定でき、当該パケットをそのフローに設けられている専用のキューに入れることができる。
【０００５】
各キューから、そのフローに保証されている帯域幅に応じて設定されたタイミングでパケットが取り出され、ネットワークに送信される。各キューからのパケットの送信間隔は、パケットサイズや、そのフローの予約帯域（予約レート）、アプリケーションのパケット送出タイミングなどに依存するため、パケット送信の要求が複数のキューから同時に発生する場合がある。この場合、どのキューからのパケットを先に送信するかという選択アルゴリズムが必要となる。
【０００６】
【発明が解決しようとする課題】
ところで、従来のネットワーク通信装置では、パケットの送信を管理する有効な方法がなく、複数のフローによってネットワークインターフェースが共有されている場合、特に帯域保証型フローとベストエフォート型フローとが共存する場合には、パケットの送信を適宜割り振り、各フローからの送信要求の衝突を回避する有効な手段はなかった。
【０００７】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、一つのネットワークインターフェースが複数のフローによって共有される場合に、各フローに対して予約帯域を維持しながら、ベストエフォート型フローとの共存を実現でき、各フローからの通信要求の衝突を回避できる通信装置及びその通信方法を提供することにある。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明の通信装置は、帯域保証型フローおよびベストエフォート型フローを含む複数のフローのパケットデータを送信する通信装置であって、上記帯域保証型フローのパケットデータの送信タイミングまたは上記ベストエフォート型フローのパケットデータの送信タイミングを決定するタイミング決定手段と、上記タイミング決定手段によって決定されたタイミングで、トークンの蓄積容量に応じてパケットキューの先頭のパケットデータを送信するパケット送信手段であって、上記帯域保証型フローのパケットデータが送信されていないタイミングで上記ベストエフォート型フローのパケットデータを送信するパケット送信手段とを有し、上記パケット送信手段は、時分割多重で各パケットデータの送信を行い、上記各パケットデータに割り当てられる送信タイミングを実時刻とし、上記各パケットデータを実際に送信可能な時刻を仮想時刻として管理し、上記仮想時刻が上記実時刻より進んでいる場合のみ上記ベストエフォート型フローのパケットデータを送信する。
【０００９】
また、本発明では、好適には、上記パケット送信手段は、上記トークンの蓄積容量がゼロを越えたとき、当該パケットキューの先頭のパケットデータを送信する。また、上記パケット送信手段は、上記パケットキューの先頭のパケットデータを送信した後、上記トークンの蓄積容量から上記送信されたパケットデータのサイズを減算する。
【００１２】
また、本発明では、好適には、上記パケット送信手段は、予め設定された手順で複数の上記帯域保証型フローのパケットキューから上記パケットキューを選択し、当該選択されたフローのパケットキューの先頭のパケットデータを送信する。
【００１３】
また、本発明では、好適には、上記タイミング決定手段は、送信時刻を管理するタイミングを発生するタイマーと、上記タイマーの時刻情報及び各フローの情報に基づき、各フローの送信タイミングを決定する制御手段とを有する。
【００１４】
また、本発明では、好適には、入力パケットをそれぞれのパケットの識別子に応じて、そのパケットの属しているフローに設けられているパケットキューに入力するパケット入力手段を有する。
【００１５】
また、本発明では、好適には、上記パケットのデータ長は可変である。
【００１６】
また、本発明の通信方法は、帯域保証型フローおよびベストエフォート型フローを含む複数のフローのパケットデータを送信する通信方法であって、上記帯域保証型フローのパケットデータの送信タイミングまたは上記ベストエフォート型フローのパケットデータの送信タイミングを決定する第１のステップと、上記第１のステップで決定されたタイミングで、トークンの蓄積容量に応じてパケットキューの先頭のパケットデータを送信する第２のステップであって、上記帯域保証型フローのパケットデータが送信されていないタイミングで上記ベストエフォート型フローのパケットデータを送信する第２のステップとを有し、上記第２のステップにおいては、時分割多重で各パケットデータの送信を行い、上記各パケットデータに割り当てられる送信タイミングを実時刻とし、上記各パケットデータを実際に送信可能な時刻を仮想時刻として管理し、上記仮想時刻が上記実時刻より進んでいる場合のみ上記ベストエフォート型フローのパケットデータを送信する。
【００１７】
また、本発明では、好適には、上記第２のステップにおいては、上記トークンの蓄積容量がゼロを越えたとき、当該パケットキューの先頭のパケットデータを送信する。また、上記第２のステップにおいては、上記パケットキューの先頭のパケットデータを送信した後、上記トークンの蓄積容量から上記送信されたパケットデータのサイズを減算する。
【００２０】
【発明の実施の形態】
図１は本発明に係る通信装置を用いて構成された通信システムの一実施形態を示す構成図である。
図１に示すように、通信システム２０は、中継装置２２を介してネットワーク１０1 と１０2 とが接続されており、ネットワーク１０1 に送信端末２１1 および受信端末２３が接続され、ネットワーク１０2 に送信端末２１2 が接続されている。
【００２１】
なお、図１に示す通信システム２０の構成は、一例であり、ネットワークの数および構成、並びにネットワークに接続される送信端末および受信端末の数は任意である。また、送信端末と受信端末の代わりに、例えば、サーバなどのネットワーク機器を用いてもよい。
ここで、送信端末２１1 ，２１2 および中継装置２２に用いられているネットワークインターフェース部分が本発明の通信装置に対応している。
【００２２】
以下、通信システム２０の各構成要素について説明する。
〔ネットワーク１０1 ，１０2 〕
ネットワーク１０1 ，１０2 は、固定長または可変長のパケットデータを用いた通信、並びに当該通信の帯域保証を行うことができるＬＡＮ(Local Area Network)またはインターネットなどの通信網である。
【００２３】
〔送信端末２１1 ，２１2 〕
送信端末２１1 ，２１2 は、データをパケットデータとしてネットワークを介して送信するネットワーク機器であり、パーソナルコンピュータまたはサーバ装置によって構成することができる。
【００２４】
〔中継装置２２〕
中継装置２２は、図１に示す例では、ネットワーク１０2 を介して送信端末２１2 から受信したパケットを中継して、ネットワーク１０1 を介して受信端末２３に送信する。なお、中継装置２２は、例えばルータなどのネットワーク機器によって構成することができる。
【００２５】
〔受信端末２３〕
受信端末２３は、例えば、パーソナルコンピュータなどの端末装置であり、ネットワーク１０1 を介して受信したパケットデータをアンパケット化してコンテンツデータを生成し、当該コンテンツデータを用いた処理を行う。
【００２６】
なお、図１に示す通信システムにおいて、中継装置２２に用いられている送信用ネットワークインターフェースは、送信端末２１1 ，２１2 に用いられている送信用ネットワークインターフェースとほぼ同じものである。中継装置２２において、パケット入力部は、ネットワーク１０2 からパケットデータを入力し、送信端末２１1 ，２１2 においては、それぞれのパケット入力部は、アプリケーションの記憶部からパケットデータを入力する点においてのみ異なるが、入力されたパケットデータの送信処理はすべて同じである。このため、以下の説明において、ネットワークインターフェースに関する説明は送信端末２１1 ，２１2 及び中継装置２２の何れにも適用できる。
【００２７】
図２は、図１に示す通信システムを構成する送信端末２１1 ，２１2 及び中継装置２２に用いられているネットワークインターフェースの一構成例を示す機能ブロック図である。
図２に示すように、ネットワークインターフェース３０は、パケット入力部３１、パケットキュー管理部３２、フロー情報管理部３３、時刻制御部３４、送信タイミング決定部３５およびパケット送信部３６を有する。
以下、ネットワークインターフェース３０の各構成部分について説明する。
【００２８】
パケット入力部３１は、後述するフロー情報管理部３３にて管理されている各フローの情報に基づいて、外部から入力されたパケットデータをパケットヘッダ内の識別子を用いてフロー毎に分類し、同じフローに属するパケットデータをパケットキュー管理部３２の同じパケットキューに入れる。
【００２９】
パケットデータは、アプリケーションの記憶部からまたはネットワークから入力される。例えば、図１に示す通信システムにおいて、送信端末２１1 と２１2では、それぞれのアプリケーションの記憶部からヘッダが付加されたパケットデータが入力され、中継装置２２では、ネットワーク１０2 からパケットデータが入力される。
【００３０】
パケットキュー管理部３２は、複数のパケットキューを有し、パケット入力部３１から入力されたパケットデータを、識別子によってそれぞれ属するフローが判定され、そのフローの専用のパケットキューに入力して記憶される。
また、パケットキュー管理部３２の各パケットキューは、記憶しているパケットキューを入力順に出力する。
本実施形態では、パケットキュー管理部３２は、例えば、図２に示すように、帯域保証型のフローのパケットデータを格納するパケットキューＱａ1 〜Ｑａ10と、ベストエフォート型のフローのパケットデータを格納するパケットキューＱｂとを有する。
【００３１】
フロー情報管理部３３は、パケットデータが属する各フローに要求される帯域保証の条件などを管理する。
【００３２】
時刻制御部３４は、パケットデータの送信タイミングを規定するための基準となる時刻を設定する。
時刻制御部３４は、後述するように、ｎを１≦ｎ≦１０を満たす整数とした場合に、送信タイミング決定部３５がスケジューリングを行う時刻ｔC を基準にして、帯域保証型フローＦn の帯域保証を行うためにパケットキュー管理部３２のパケットキューＱａn の先頭に格納されたパケットデータを送信する必要がある時刻までの時間Ｃn を制御するために用いられる。
【００３３】
時刻制御部３４は、例えば、タイマーによって構成することができる。本実施形態では、時間Ｃn がパケットデータの送信後に送信タイミング決定部３５でスケジューリングを行うときにのみ用いられるものであり、各フローＦn のパケットデータの送信間隔は当該フローの保証帯域から予め知られているため、１個のタイマーで時刻をカウントし、パケットデータの送信時刻と、各フローの送信間隔とを用いて時間Ｃn を得る。
なお、時刻制御部３４は、時間Ｃn をそれぞれカウントする帯域保証型フローＦn の数分のタイマーを用いてもよい。
【００３４】
送信タイミング決定部３５は、フロー情報管理部３３からの制御に基づいて、パケットキュー管理部３２の複数のパケットキューに格納されたパケットの送信タイミングのスケジュールを決定し、当該決定したスケジュールに基づいてパケット送信部３６にパケットデータの送信タイミングを指示する。
この際に、帯域予約を行っているフローに関する予約帯域幅などの情報をフロー情報管理部３３に参照しながら送信タイミングの制御が行われる。送信タイミング決定部３５は、各キューに割り当てられている帯域幅、実際にキューに入っているパケットのサイズ、またパケット入力からの経過時間を確認しながら、それぞれのキューからパケットデータを取り出すタイミングの制御を行う。
【００３５】
パケット送信部３６は、どのキューからどのタイミングでパケットを取り出すかを送信タイミング決定部３５によって決定されたスケジュールに従って、決められたパケットキューからパケットデータを取り出してネットワークに送信する。
【００３６】
本実施形態では、複数のパケットキューからパケットの送信要求が同時に発生しないよう、時分割多重化の手法を用いてパケットキューの送信タイミングを制御する。図３は、一定の送信時間を複数のスロットに分割して、各スロットにおいて固定長のデータパケットを送信する場合のタイミングチャートを示している。
ここでは、例えば、帯域幅が１００Ｍｂｐｓのデータリンクに対するスケジューリングを行う場合、予約フローの粒度を１Ｋｂｐｓ、単位時間を１秒とすると、図３に示すように、１秒間がスロット０、スロット１、スロット２、…、スロット９９，９９９というように１００，０００個のスロットに分割され、各スロット毎に１０μｓ（マイクロ秒）リンクを占有することができる。送信機会は各スロットに順番に割り当てられ、最後のスロットに辿り着くと最初のスロットに戻るよう循環する。あるフローが割り当てられるスロットの数によって、そのフローのデータ転送レート、即ち帯域幅が決まる。このため、あるフローが帯域を予約する際には、その予約帯域幅に応じて所定の数のスロットがそのフローに割り当てられる。
【００３７】
しかし、この方法では、フローの粒度と単位時間による制御により、この例では１回のスケジューリング単位である１スロット、即ち１０μｓ毎に１２８バイト（１Ｋビット）のパケット送信許可が与えられることになる。これは固定長パケット、特にパケットサイズが例えば、１２８バイトの約数であるパケットの場合には問題ないが、可変長パケットには対応することができない。また、フローのバースト転送がタイムスロットのサイズよりも大きいな範囲で発生した場合にも対応することができない。
【００３８】
本実施形態では、トークンバケット（Token Bucket）アルゴリズムを用いて上述した問題を解決する。この際に、スロットがスケジューリングされる毎にトークンを生成し、蓄積したトークンの量がゼロを上回った場合のみパケットキューからパケットを取り出して送信し、送信後、トークンの蓄積容量から送信されたパケットのサイズが減算される。これにより、パケットサイズに依存する不公平性を回避でき、可変長パケット及びバースト転送への対応が可能となる。
【００３９】
図４はトークンを用いたパケット送信処理のフローチャートである。以下、図４を参照しながら、この方法について詳細に説明する。
まず、分割したスロットが各フローの予約レートに応じてそれぞれのパケットキューに割り当てられる（ステップＳ１）。
そして、各キューについてトークンの初期化が行われる（ステップＳ２）。この際に、すべてのキューのトークン量（Ｔn ）がゼロに初期化される。
【００４０】
次に、スロットの選択が行われ（ステップＳ３）、また、トークンをトークン量Ｔn に加算される（ステップＳ４）。
次いで、処理対象となるキューは空であるか否かの判断が行われる（ステップＳ５）。そのキューが空である場合、次のスロットが選択され（ステップＳ１０）、ステップＳ４の処理に戻る。
【００４１】
一方、そのキューが空ではない場合に、蓄積したトークンの量Ｔn がゼロ以上かを調べる（ステップＳ７）。トークン量Ｔn がゼロより大きい場合、パケットがキューから取り出され、ネットワークに送信される（ステップＳ９）。また、トークン量Ｔn から送信されたパケットのサイズ分が減算され（ステップＳ８）、ステップＳ５の処理に戻る。
【００４２】
ステップＳ７における比較の結果、トークン量Ｔn がゼロ以下の場合、次のスロットを選択するステップＳ３の処理に戻る。
【００４３】
上述した処理によって、１スロットで１２８バイト以上のパケットを送信することが可能となる。即ち、送信可能なパケットサイズは、スロットによって制限されることなく、例えば、トークンのバケツサイズにのみ依存する。このため、１スロットで送信可能なパケットのサイズに対する制約が大きく緩和される。
【００４４】
しかし、このようなパケットの送信処理によって、パケット長が一定ではない場合、一つのパケットの送信が１スロットに収まることが保証できなくなる。
図５は、パケット長が可変の場合の各スロットにおけるパケットデータの送信タイミングを示している。図示のように、送信タイミング決定部３５によって決定したスケジューリングのための時刻ｔn は一定の間隔にあるが、パケット長が一定でない場合、そのスケジュールではパケットの送信が完了できなくなることが生じる。
【００４５】
ここで、スケジューリングのための時刻ｔn を各スロットに割り当てられる実際の時刻ｒn と異なる間隔に設定する。即ち、実時刻ｒn とは独立したスケジューリングのための仮想時刻ｔn を設定する。そして、平均的にスロット分割の１周期単位、例えば、上述した例では１秒間において実時刻ｒn と仮想時刻ｔn との差がなくなるようにスケジュールを制御すればよい。
【００４６】
また、トークンバケットによりバースト転送が許容されている場合、複数のフローでバースト転送が連続して発生した場合には、１周期で実時刻と仮想的な時刻との差がかならずしもなくなるとは限らず、予約帯域の総和がリンクの帯域幅以下に抑えられていることが保証される場合には、各フローのバースト許容量の総和がここでいう時間差の最大値となる。
【００４７】
図６は、このようなスケジューリング処理を示すフローチャートである。以下、図６を参照しつつ、本実施形態のネットワークインターフェースにおけるスケジューリング処理の動作を説明する。
【００４８】
まず、分割したスロットが予約レート（予約帯域）に応じてそれぞれのキュー（フロー）に割り当てられる（ステップＳＳ１）。
そして、すべてのキューのトークン量（Ｔn ）がゼロに初期化される（ステップＳＳ２）。
【００４９】
次に、スロットが順次選択される（ステップＳＳ３）。
そして、送信されるキューが選択され、そのキューが空であるか否かについて判断が行われる（ステップＳＳ４）。
【００５０】
ステップＳＳ４における判断の結果、キューが空ではない場合、ステップＳＳ１４の処理が行われる。なお、ステップＳＳ１４以降の処理について後に詳しく説明する。
【００５１】
ステップＳＳ４における判断の結果、キューが空の場合、トークンの量Ｔn がバケツサイズに達しているか否かについて判断が行われる（ステップＳＳ５）。当該判断の結果、トークンの量Ｔn がバケツサイズに達していない場合、トークンがトークン量Ｔn に加算される（ステップＳＳ６）。そして、次のスロットを選択するステップＳＳ３の処理に戻る。
【００５２】
ステップＳＳ５における判断の結果、トークンの量Ｔn がバケツサイズに達した場合、トークンがベストエフォート型フローのトークン量ＴB に加算される（ステップＳＳ８）。そして、ベースエフォート型フローに設けられたキューが空であるか否かについて判定が行われる（ステップＳＳ９）。
【００５３】
上記判断の結果、そのキューが空である場合、上述したステップＳＳ３の処理に戻る。一方、上記判断の結果、キューが空ではない場合、トークン量ＴB がゼロより大きいかどうかが調べられる（ステップＳＳ１１）。当該比較の結果、トークン量ＴB がゼロより大きい場合、ベストエフォートキューの先頭からパケットデータが取り出されて送信される（ステップＳＳ１２）。そして、トークン量ＴB から、送信されたパケットのサイズ分だけ減算され（ステップＳＳ１３）、ステップＳＳ９の処理が行われ、次のパケットの送信処理が行われる。
【００５４】
ステップＳＳ１１における比較の結果、トークン量ＴB がゼロに達していない場合、ステップＳＳ７の処理が行われ、次のスロットが選択され、ステップＳＳ４の処理に戻る。
【００５５】
ステップＳＳ４の処理において、キューが空ではないと判断された場合、まず、トークンがトークン量Ｔn に加算される（ステップＳＳ１４）。
【００５６】
そして、トークン量Ｔn がゼロより大きいか調べられる（ステップＳＳ１６）。
当該比較の結果、トークン量Ｔn がゼロ以下の場合、ステップＳＳ３の処理に戻る。
【００５７】
一方、トークン量Ｔn がゼロよりも大きな場合、キューの先頭からパケットが取り出されて送信される（ステップＳＳ１７）。
そして、トークン量Ｔn から送信されたパケットのサイズ分Ｐn だけ減算される（ステップＳＳ１８）。
【００５８】
次に、キューは空であるか否かの判断が行われる（ステップＳＳ１９）。当該判断の結果、キューが空である場合、ステップＳＳ３の処理に戻る。
逆に、キューが空ではない場合、ステップＳＳ１６の処理が行われる。即ち、キューの先頭パケットを送信するか否かが決定される。
【００５９】
上述したスケジューリング処理が帯域保証型フロー及びベストエフォート型フローにそれぞれ割り当てられたすべてのキューに対して順次行われる。その結果、帯域保証型フローのパケットデータの転送帯域が保証されながら、ベストエフォート型フローのパケットデータの送信も実現できる。且つ、帯域保証型フローのパケットデータの転送が優先して行われ、帯域保証型フローのキューが空の場合、即ち、そのキューにパケットが入っていない場合のみトークンがベストエフォート型フローに割り振られるので、ベストエフォート型フローのパケットデータの転送が帯域保証型フローのパケットデータの転送に影響を与えることを回避できる。
【００６０】
このスケジューリング処理によって、それぞれのスロットにおけるパケットデータの送信例を図７に示している。
図示のように、送信されるパケットのサイズに応じて、複数のスロットを跨いで送信されることができる。一つのキューから取り出されたパケットデータの送信が終了したあと、次のキューからパケットデータが取り出されて送信が行われる。
【００６１】
図示のように、このスケジューリング処理によって、それぞれのパケットデータが送信される仮想時刻ｔ0 ，ｔ1 ，…，ｔ99,999が実時刻ｒ0 ，ｒ1 ，…，ｒ99,999と一致しなくなる。しかし、スロット分割の１周期単位、例えば、この例では１秒間において実時刻と仮想時刻との差がなくなるようにスケジューリング処理が行われる。この処理によって、帯域保証型フローにおいて、パケットデータの転送レートが保証されながら、ベストエフォート型フローのパケットデータの送信も行われる。且つ、ベストエフォート型フローのパケットデータの送信によって帯域保証型フローのパケットデータの送信に与える影響が最小限に抑えられる。
【００６２】
次に、本実施形態のネットワークインターフェースにおけるスケジューリング処理の他の処理例を示す。
図８は、このスケジューリング処理を示すフローチャートである。以下、図８を参照しつつ、このスケジューリング処理について詳しく説明する。
【００６３】
図示のように、まず、分割したスロットが予約レート（予約帯域）に応じてそれぞれのキュー（フロー）に割り当てられる（ステップＳＰ１）。
そして、すべてのキューのトークン量（Ｔn ）がゼロに初期化される（ステップＳＰ２）。
【００６４】
次に、スロットが順次選択される（ステップＳＰ３）。
そして、送信されるキューが選択され、そのキューが空であるか否かについて判断が行われる（ステップＳＰ４）。
【００６５】
ステップＳＰ４における判断の結果、キューが空ではない場合、ステップＳＰ１４の処理が行われる。なお、ステップＳＰ１４以降の処理について後に詳しく説明する。
【００６６】
ステップＳＰ４における判断の結果、キューが空の場合、トークンの量Ｔn がバケツサイズに達しているか否かについて判断が行われる（ステップＳＰ５）。当該判断の結果、トークンの量Ｔn がバケツサイズに達していない場合、トークンがトークン量Ｔn に加算される（ステップＳＰ６）。そして、次のスロットを選択するステップＳＰ３の処理に戻る。
【００６７】
ステップＳＰ５における判断の結果、トークンの量Ｔn がバケツサイズに達した場合、トークンがベストエフォート型フローのトークン量ＴB に加算される（ステップＳＰ８）。そして、ベースエフォート型フローに設けられたキューが空であるか否かについて判定が行われる（ステップＳＰ９）。
【００６８】
上記判断の結果、そのキューが空である場合、次のスロットを選択する、ステップＳＰ３の処理に戻る。
一方、上記判断の結果、そのキューが空ではない場合、トークン量ＴB がゼロより大きいかどうか比べられ、さらに、仮想時刻ｔn が実時刻ｒn との比較も行われる（ステップＳＰ１１）。当該比較の結果、トークン量ＴB ゼロより大きく、かつ仮想時刻ｔn が実時刻ｒn より進んでいる場合、ベストエフォートキューの先頭からパケットデータが取り出されて、ネットワークに送信される（ステップＳＰ１２）。そして、トークン量ＴB から、送信されたパケットのサイズ分だけ減算され（ステップＳＰ１３）、ステップＳＰ９の処理が行われ、次のパケットの送信処理が行われる。
【００６９】
ステップＳＰ１１における比較の結果、トークン量ＴB がゼロに達していなく、または、仮想時刻ｔn が実時刻ｒn より遅れている場合、ステップＳＰ３の処理に戻る。
【００７０】
ステップＳＰ４の処理において、キューが空ではないと判断された場合、まず、トークンがトークン量Ｔn に加算される（ステップＳＰ１４）。
【００７１】
そして、トークン量Ｔn がゼロより大きいか比べられる（ステップＳＰ１６）。
当該比較の結果、トークン量Ｔn がゼロ以下の場合、ステップＳＰ３の処理に戻る。
【００７２】
一方、トークン量Ｔn とパケットサイズＰn との比較結果、トークン量Ｔn がゼロを越えた場合、キューの先頭からパケットが取り出されて送信される（ステップＳＰ１７）。
そして、トークン量Ｔn から送信されたパケットのサイズ分Ｐn だけ減算される（ステップＳＰ１８）。
【００７３】
次に、キューは空であるか否かの判断が行われる（ステップＳＰ１９）。当該判断の結果、キューが空である場合、ステップＳＰ３の処理が行われる。
逆に、キューが空ではない場合、ステップＳＰ１６の処理が行われる。即ち、キューの先頭パケットを送信するか否かが決定される。
【００７４】
上述したスケジューリング処理において、ベストエフォート型フローのパケットデータを送信するかどうかの判断において、トークン量ＴB がベースエフォート型フローに設けられているキューの先頭のパケットサイズより大きく、さらに、仮想時刻ｔn が実時刻ｒn より進んでいる場合のみ、ベストエフォート型フローのパケットデータが送信される。それ以外の場合において、帯域予約が行われたフローのパケットデータが優先して送信される。
【００７５】
このようなスケジューリング処理によって、トークンがパケット出力のために十分な量だけ蓄積され、かつ仮想時刻が実時刻より進んでいる場合のみベストエフォート型フローのパケットデータがネットワークに送信されるので、ベストエフォート型フローのパケットデータの送信による帯域保証型フローのパケットデータの送信に与える影響が最小限に抑えることができる。
【００７６】
【発明の効果】
以上説明したように、本発明の通信装置及び通信方法によれば、一つのネットワークインターフェースが複数のフローによって共有されている場合に、各フローに対してそれぞれの予約帯域を保証しながら、帯域保証型フローとベストエフォート型フローとの共存を実現できる。
また、本発明によれば、複数のフローに対して時分割多重化で送信処理を行うことによってパケットの送信要求が二つ以上のフローから同時に発生することを回避できる。
さらに、帯域保証型フローのパケットデータの送信が優先して行われ、所定の条件が満たされた場合のみベストエフォート型フローのパケットデータが送信されるので、ベストエフォート型フローのパケットデータの送信による帯域保証型フローのパケットデータの送信に与える影響が最小限に抑えることができる利点がある。
【図面の簡単な説明】
【図１】本発明に係る通信装置を含む通信システムの一実施形態を示す構成図である。
【図２】本発明の通信装置の一構成例を示すブロック図である。
【図３】送信時間がスロットに分割された時分割多重化による固定長パケットの送信タイミングを示すタイミングチャートである。
【図４】トークンを用いたパケット送信処理のフローチャートである。
【図５】可変長パケットの送信タイミング処理を示すタイミングチャートである。
【図６】帯域予約フローとベストエフォートフローが混在する場合のパケット送信スケジューリング処理の一例を示すフローチャートである。
【図７】図６のフローチャートによる仮想時刻を用いた送信処理のタイミングチャートである。
【図８】帯域予約フローとベストエフォートフローが混在する場合のパケット送信スケジューリング処理の他の例を示すフローチャートである。
【図９】従来のフローごとにキューを用いたパケット送信処理の概念を示す図である。
【図１０】ＴＣＰ／ＩＰプロトコルのパケットヘッダの構成を示す図である。
【符号の説明】
２０…通信システム、２１1 ，２１2 …送信端末、２２…中継装置、２３…受信端末、３１…パケット入力部、３２…パケットキュー管理部、３３…フロ情報ー管理部、３４…時刻制御部、３５…送信タイミング決定部、３６…パケット送信部、Ｑａ1 〜Ｑａ10…帯域保証型フローのパケットデータを格納するパケットキュー。
【図１】
0004403348.tif 000002
【図２】
0004403348.tif 000003
【図３】
0004403348.tif 000004
【図４】
0004403348.tif 000005
【図５】
0004403348.tif 000006
【図６】
0004403348.tif 000007
【図７】
0004403348.tif 000008
【図８】
0004403348.tif 000009
【図９】
0004403348.tif 000010
【図１０】
0004403348.tif 000011