JP4446166B2 - 送信装置および方法、記録媒体、プログラム、並びに制御装置 - Google Patents

送信装置および方法、記録媒体、プログラム、並びに制御装置 Download PDF

Info

Publication number
JP4446166B2
JP4446166B2 JP2004300352A JP2004300352A JP4446166B2 JP 4446166 B2 JP4446166 B2 JP 4446166B2 JP 2004300352 A JP2004300352 A JP 2004300352A JP 2004300352 A JP2004300352 A JP 2004300352A JP 4446166 B2 JP4446166 B2 JP 4446166B2
Authority
JP
Japan
Prior art keywords
packet
transmission
buffer
stored
requested
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004300352A
Other languages
English (en)
Other versions
JP2006115197A (ja
Inventor
宏 久曽神
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2004300352A priority Critical patent/JP4446166B2/ja
Priority to TW094135207A priority patent/TW200637265A/zh
Priority to US11/248,466 priority patent/US7626993B2/en
Priority to CNB2005101128605A priority patent/CN100484096C/zh
Publication of JP2006115197A publication Critical patent/JP2006115197A/ja
Application granted granted Critical
Publication of JP4446166B2 publication Critical patent/JP4446166B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first

Description

本発明は送信装置および方法、記録媒体、プログラム、並びに制御装置に関し、特に、パケットを送信する送信装置および方法、記録媒体、プログラム、並びに制御装置に関する。
インターネットの普及にともない、ビデオ会議やIP(Internet Protocol)電話などのリアルタイムアプリケーションプログラムが利用されるようになってきている。これらのリアルタイムアプリケーションプログラムを利用する場合、通信装置は、画像や音声などのデータをパケットに格納し、データが格納されたパケットを、ネットワークまたはインターネットを介して受信側の端末装置あてに送信する。
図1は、パケットを送信する通信装置が、アプリケーションプログラムおよびオペレーティングシステムのカーネルの機能を呼び出すことにより実現される、機能の構成を示すブロック図である。
アプリケーション層11において、ユーザによって送信が指示されたデータは、アプリケーション層11から、ネットワーク層12に供給される。ネットワーク層12において、アプリケーション層11から供給されたデータは、パケットに格納される。そして、データが格納されたパケットは、ネットワーク層12において、ルーティングテーブル13を参照することにより、そのパケットの宛先(送信先)によって定まるデバイスドライバ14−1またはデバイスドライバ14−2に供給される。
ここで、ルーティングテーブル13には、ネットワークに接続されている端末装置(通信装置)のアドレスと、ネットワークおよびインターネットにおける、端末装置までの経路(ゲートウェイ)を示す情報が含まれている。したがって、パケットの送信先である端末装置が特定されることで、ネットワークおよびインターネットにおける、端末装置までの経路が定まり、これにより、送信するパケットを処理する出力インターフェースが定まるので、パケットは、出力インターフェースに対応するデバイスドライバ14−1またはデバイスドライバ14−2に供給される。
デバイスドライバ14−1およびデバイスドライバ14−2は、物理的なデバイス(物理層16−1または物理層16−2)を制御し、またOS(Operating System)と、物理的なデバイス(物理層16−1または物理層16−2)との間における処理の同期を取る役割を担っている。
デバイスドライバ14−1に供給されたパケットは、デバイスドライバ14−1の入力処理部31−1によって、バッファ15に格納され、記憶されて、FIFO(First In First Out)キューに配置される。物理層16−1から、物理層16−1におけるパケットの送信が終了した旨の割り込み信号が、デバイスドライバ14−1に供給されると、バッファ15に格納されたパケットは、FIFOキュー上の配置の順に、デバイスドライバ14−1の出力処理部32−1によって取得され、物理層16−1に供給される。
物理層16−1に供給されたパケットは、物理層16−1において、通信のための電気信号に変換され、ネットワークまたはインターネットを介して、パケットの送信先である端末装置あてに送信される。
同様に、デバイスドライバ14−2に供給されたパケットは、デバイスドライバ14−2の入力処理部31−2によって、バッファ15に格納され、記憶されて、他のFIFOキューに配置される。物理層16−2から、物理層16−2におけるパケットの送信が終了した旨の割り込み信号が、デバイスドライバ14−2に供給されると、バッファ15に格納されたパケットは、FIFOキュー上の配置の順に、デバイスドライバ14−2の出力処理部32−2によって取得され、物理層16−2に供給される。
物理層16−2に供給されたパケットは、物理層16−2において、電気信号に変換され、ネットワークまたはインターネットを介して、パケットの送信先である端末装置あてに送信される。
ところで、この通信装置においては、ネットワークまたはインターネットを介して、端末装置あてに送信されるパケットの送信間隔の調整などは行われていない。そのため、リアルタイムアプリケーションプログラムが、バースト転送により、アプリケーション層11からネットワーク層12にパケットを供給した場合、パケットは、物理層16−1または物理層16−2において、バースト転送により、送信先である端末装置あてに送信される。
しかしながら、リアルタイムアプリケーションプログラムを利用する場合、遅延の少ないデータ(パケット)転送が要求されるため、ネットワークまたはインターネットにおいてデータがバースト転送される、いわゆるバーストトラフィックの発生を、送信側の通信装置において、パケットを送信する間隔を調整することによって、回避しなければならないという課題があった。
すなわち、Sally Floyd氏が述べているように、バーストトラフィックは、各端末装置における輻輳の検知、使用帯域の減少、および使用帯域の増加の周期が同期するグローバルシンクロナイゼーションや、予想外のパケットロス、端末装置間におけるデータ転送の遅延の上昇など、多くの好ましくない事態を引き起こす要因となるため、このような事態の発生を回避するためには、送信側の通信装置(端末装置)において、トラフィック量を制御する、トラフィックシェーピングの技術が必要とされる(Sally Floyd and Van Jacobson,“Random Early Detection Gateways for Congestion Avoidance”,IEEE/ACM Transactions on Networking Vol.1 No.4,Aug,1993参照)。
そこで、デバイスドライバにおいて、トラフィック量の制御を行うことも提案されているが、デバイスドライバは、ネットワークカード、またはそこで用いられているハードウェア(チップ)の種類の数だけ存在するため、デバイスドライバにトラフィックシェーピングを行う機能を直接追加すると、膨大な量の作業が必要となってしまうという問題があった。
この問題を解決する方法として、Alan Cox氏は、Linux(商標)のRed Hat(商標)ディストリビューションで公開したSimple Traffic Shaperにおいて、仮想の出力インターフェースを考え、対応する仮想のデバイスドライバ(以下、仮想デバイスドライバと称する)を設け、トラフィック量の制御を行う方法を提案している。
図2は、仮想デバイスドライバにおいて、トラフィック量の制御を行う通信装置の機能の構成を示すブロック図である。なお、図中、図1における場合と対応する部分については、同一の符号を付してあり、その説明は、適宜、省略する。
ネットワーク層51において、アプリケーション層11から供給されたデータは、パケットに格納され、ルーティングテーブル52を参照することにより、パケットの宛先(送信先)によって定まるインターネット上の経路を特定し、仮想デバイスドライバ53に供給される。
すなわち、ルーティングテーブル52は、アプリケーション層11からネットワーク層51に供給されたデータ(パケット)が、デバイスドライバ56−1またはデバイスドライバ56−2を介して送信される場合、パケットの宛先によって定まる出力インターフェースが、図示せぬ仮想出力インターフェースとなるようになされており、送信されるパケットは、仮想出力インターフェースに対応する、仮想デバイスドライバ53に供給される。
仮想デバイスドライバ53に供給されたパケットは、仮想デバイスドライバ53の入力処理部71によって、バッファ55に格納され、FIFOキューに配置される。バッファ55に格納されたパケットは、所定の時間間隔で、仮想デバイスドライバ53の出力処理部72に取得され、デバイスドライバ56−1またはデバイスドライバ56−2に供給される。
すなわち、仮想デバイスドライバ53の出力処理部72は、所定の時間間隔で、カーネルタイマ54から、パケットを取得する旨の割り込み信号が供給されるごとに、バッファ55からパケットを取得し、取得したパケットをデバイスドライバ56−1またはデバイスドライバ56−2に供給する。
デバイスドライバ56−1に供給されたパケットは、デバイスドライバ56−1の入力処理部73−1によって、バッファ55に格納される。物理層16−1から、物理層16−1におけるパケットの送信が終了した旨の割り込み信号が、デバイスドライバ56−1に供給されると、バッファ55に格納されたパケットは、デバイスドライバ56−1の出力処理部74−1によって取得され、物理層16−1に供給される。
同様に、デバイスドライバ56−2に供給されたパケットは、デバイスドライバ56−2の入力処理部73−2によって、バッファ55に格納される。物理層16−2から、物理層16−2におけるパケットの送信が終了した旨の割り込み信号が、デバイスドライバ56−2に供給されると、バッファ55に格納されたパケットは、デバイスドライバ56−2の出力処理部74−2によって取得され、物理層16−2に供給される。
図3のフローチャートを参照して、仮想デバイスドライバ53による、パケットのエンキューの処理を説明する。
仮想デバイスドライバ53は、ネットワーク層51からパケットが供給されるごとに、所定の関数を呼び出し、パケットのエンキューの処理を行う。
ステップS11において、仮想デバイスドライバ53は、バッファ55に格納するパケットの最大キュー長の設定を行う。例えば、ステップS11において、仮想デバイスドライバ53は、バッファ55に格納するパケットの最大キュー長Qmに“5”を設定する。ここで、最大キュー長Qmとは、バッファ55に格納することができるパケットの最大数をいう。したがって、最大キュー長Qmに、“5”が設定されている場合、バッファ55には、パケットを5つまで格納することができる。
ステップS12において、仮想デバイスドライバ53は、バッファ55に格納されているパケットのキュー長の設定を行う。この場合、バッファ55にはパケットが格納されていないので、仮想デバイスドライバ53は、パケットのキュー長Qに“0”を設定する。ここで、キュー長Qとは、バッファ55に格納されているパケットの数をいう。
ステップS13において、仮想デバイスドライバ53は、格納パケット番号の設定を行う。ここで、格納パケット番号とは、仮想デバイスドライバ53がバッファ55に格納したパケットのうち、最後に格納したパケットのパケット番号をいう。仮想デバイスドライバ53は、ネットワーク層51からパケットが供給されると、供給されたパケットに、各パケットを識別するためのパケット番号iを付す。パケット番号iは、“1”から昇順に付される。なお、パケット番号iが“0”である場合、仮想デバイスドライバ53には、まだ、パケットが供給されていないことを示している。
したがって、この場合、バッファ55にはパケットが格納されていないので、仮想デバイスドライバ53は、格納パケット番号に“0”を設定する。
ステップS14において、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51からパケットを取得する。
ステップS15において、仮想デバイスドライバ53の入力処理部71は、キュー長Qが、最大キュー長Qmよりも小さいか否かを判定する。ここで、仮想デバイスドライバ53の入力処理部71は、式(1)を計算し、キュー長Qおよび最大キュー長Qmが、式(1)を満たすか否かを判定することにより、キュー長Qが、最大キュー長Qmよりも小さい否かを判定する。
Q<Qm ・・・(1)
したがって、例えば、キュー長Qが“1”でああり、最大キュー長Qmが“5”である場合、キュー長Qおよび最大キュー長Qmは、式(1)を満たすので、キュー長Qが、最大キュー長Qmよりも小さいと判定される。
ステップS15において、キュー長Qが、最大キュー長Qmよりも小さくないと判定された場合、バッファ55には、これ以上、パケットを格納することができないので、ステップS16に進み、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から取得したパケットを破棄し、処理は、ステップS14に戻る。
一方、ステップS15において、キュー長Qが、最大キュー長Qmよりも小さいと判定された場合、バッファ55にパケットを格納することができるので、ステップS17に進み、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットに、パケット番号iを付す。
ステップS18において、仮想デバイスドライバ53の入力処理部71は、送信時刻算出の処理を行う。なお、送信時刻算出の処理の詳細は、後述するが、送信時刻算出の処理において、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットの送信時刻を算出する。ここで、パケットの送信時刻とは、パケットが物理層16−1または物理層16−2において、送信先の端末装置に送信される時刻をいう。
ステップS19において、仮想デバイスドライバ53の入力処理部71は、格納パケット番号をインクリメントする。
ステップS20において、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットをエンキューする。ここで、エンキューとは、パケットをFIFOキューに配置する処理(キューイング処理)をいう。すなわち、ステップS20において、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットをバッファ55に供給する。そして、仮想デバイスドライバ53から供給されたパケットは、バッファ55に記憶され、FIFOキューに配置される。
ステップS21において、仮想デバイスドライバ53の入力処理部71は、キュー長Qをインクリメントし、処理は、ステップS14に戻り、上述した処理を繰り返す。
図4のフローチャートを参照して、スケジューリングアルゴリズムとしてLeaky Bucketアルゴリズム(J.S.Turner,“New Directions in Communications(or Which Way to the Information Age)”,IEEE Communication Magazine Vol.24 pp.8-15,Oct,1986参照)が用いられている場合における、図3のステップS18の処理に対応する送信時刻算出の処理を説明する。
ステップS41において、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットのパケット番号iが、“0”であるか否かを判定する。
ステップS41において、ネットワーク層51から供給されたパケットのパケット番号iが、“0”でないと判定された場合、ステップS42に進み、仮想デバイスドライバ53の入力処理部71は、ネットワーク層51から供給されたパケットの送信時刻を算出する。ここで、仮想デバイスドライバ53の入力処理部71は、式(2)を計算することにより、パケットの送信時刻を算出する。
(Ti)=(T(i−1))+(L(i−1))/r ・・・(2)
ここで、Tiは、パケット番号が“i”であるパケットの送信時刻であり、T(i−1)は、パケット番号が“i−1”であるパケットの送信時刻である。また、L(i−1)は、パケット番号が“i−1”であるパケットの大きさ(サイズ(データ量))であり、rは、予め定められている、通信装置が送信するパケットの送信速度(以下、シェーピングレートと称する)である。
ステップS43において、仮想デバイスドライバ53の入力処理部71は、キュー長Qが“0”であるか否かを判定する。ステップS43において、キュー長Qが“0”でないと判定された場合、ステップS45に進む。
一方、ステップS43において、キュー長Qが“0”であると判定された場合、ステップS44に進み、仮想デバイスドライバ53の入力処理部71は、算出した送信時刻Tiが、現在時刻よりも後の時刻であるか否かを判定する。
ステップS44において、算出した送信時刻Tiが、現在時刻よりも後の時刻であると判定された場合、ステップS45に進み、仮想デバイスドライバ53の入力処理部71は、パケット番号が“i”であるパケットの送信時刻に、算出した送信時刻Tiを設定し、処理は終了する。
ステップS44において、算出した送信時刻Tiが、現在時刻よりも後の時刻でないと判定された場合、算出した送信時刻Tiは、すでに、過ぎてしまっているので、ステップS46に進む。
また、ステップS41において、ネットワーク層51から供給されたパケットのパケット番号iが、“0”であると判定された場合、ステップS46に進み、仮想デバイスドライバ53の入力処理部71は、パケット番号が“i”であるパケットの送信時刻に、現在時刻を設定し、処理は終了する。
次に、図5のフローチャートを参照して、仮想デバイスドライバ53による、パケットのデキューの処理を説明する。
仮想デバイスドライバ53は、カーネルタイマ54からパケットを取得する旨の割り込み信号が供給されるごとに、所定の関数を呼び出し、パケットのデキューの処理を行う。
ステップS61において、仮想デバイスドライバ53は、送信パケット番号の設定を行う。ここで、送信パケット番号とは、物理層16−1または物理層16−2において、送信先である端末装置に送信されたパケットのうち、最後に送信されたパケットのパケット番号をいう。換言すれば、送信パケット番号とは、物理層16−1または物理層16−2において、送信先である端末装置に送信されたパケットのパケット番号のうち、最も大きいパケット番号をいう。この場合、まだパケットが送信されていないので、仮想デバイスドライバ53は、送信パケット番号に“0”を設定する。なお、送信パケット番号が“0”である場合、まだ、送信されたパケットがないことを示している。
ステップS62において、仮想デバイスドライバ53の出力処理部72は、カーネルタイマ54から割り込み信号が供給されたか否かを判定する。ステップS62において、割り込み信号が供給されていないと判定された場合、割り込み信号が供給されるまでステップS62の処理が繰り返される。
ステップS62において、割り込み信号が供給されたと判定された場合、ステップS63に進み、仮想デバイスドライバ53の出力処理部72は、現在時刻が、送信パケット番号と同じパケット番号のパケットに付された送信時刻を過ぎたか否かを判定する。ステップS63において、現在時刻が、送信時刻を過ぎたと判定された場合、パケットを送信するので、ステップS64に進み、仮想デバイスドライバ53の出力処理部72は、送信時刻となったパケットをデキューする。
ここで、パケットのデキューとは、バッファ55に格納されているパケットであって、送信パケット番号と同じパケット番号のパケットを取得し、デバイスドライバ56−1またはデバイスドライバ56−2に供給(出力)する処理をいう。すなわち、ステップS64において、仮想デバイスドライバ53の出力処理部72は、FIFOキューの先頭(出口側)に配置されている送信時刻となったパケットを、バッファ55から取得し、取得したパケットをデバイスドライバ56−1またはデバイスドライバ56−2に供給する。
ステップS65において、仮想デバイスドライバ53の出力処理部72は、送信パケット番号をインクリメントする。
ステップS66において、仮想デバイスドライバ53の出力処理部72は、キュー長Qをデクリメントし、処理はステップS62に戻る。
一方、ステップS63において、現在時刻が、送信時刻を過ぎていないと判定された場合、パケットを送信しないので、ステップS62に戻り、上述した処理を繰り返す。
ところで、カーネルタイマ54のタイマイベントの発生周期は、通常100Hzであるので、カーネルタイマ54は、10msecごとに割り込み信号を仮想デバイスドライバ53に供給する。したがって、トラフィックシェーピングの制御の粒度は、10msecとなる。
例えば、パケットの大きさ(パケットサイズ)が固定長で1Kbyteであるパケットを、10Mbpsのシェーピングレートで送信した場合、通信装置は、カーネルタイマ54が、割り込み信号を仮想デバイスドライバ53に供給するごとに、100Kbitのデータを送信することになる。すなわち、100Kbitのデータは、パケットサイズが1Kbyteであるパケットの約12個分に相当するので、通信装置は、カーネルタイマ54が、割り込み信号を仮想デバイスドライバ53に供給するごとに、12個のパケットをバースト転送することになる。
また、High-resolution timerでは、インテル社のペンティアム(登録商標)プロセッサ上のAPIC(Advanced Programmable Interrupt Controller)を用いて、トラフィックシェーピングを行っている(Luca Abeni,Ashvin Goel,Charles Krasic,Jim Snow and Jonathan Walpole,“A Measurement-Based Analysis of the Real-Time Performance of Linux”,IEEE RTAS 02,Sep,2002参照)。このAPICは、OSに任意の時間経過後にハードウェア割り込みを発生させることにより、パケットの送信間隔を調整している。
さらに、また、ATM(Asynchronous Transfer Mode)方式の通信網において、ハードウェアによるトラフィックシェーピングを行う通信装置もある。
さらに、また、ネットワークカード上のプロセッサが、トラフィックシェーピングを行う通信装置もある(例えば、特許文献1参照)。
特開2001−211207号公報
しかしながら、上述した技術においては、トラフィックシェーピングを行う専用のハードウェアを用いることなく、ソフトウェア制御により、パケットの送信間隔を制御することはできなかった。
また、ハードウェアによるパケットの送信間隔の制御は、OSに対する負荷が大きいため、高頻度での使用には適していないという課題があった。
したがって、パケット伝送の遅延ゆらぎ(ジッタ)を減少させ、遅延の少ないデータ転送を実現することができなかった。
本発明は、このような状況に鑑みてなされたものであり、ソフトウェア制御によって、より小さい負荷で、かつより短い時間間隔でパケットの送信を制御できるようにするものである。また、ソフトウェア制御によって、より短い時間間隔で処理を制御することができるようにするものである。
本発明の送信装置は、要求手段からパケットの送信が要求された場合、バッファに格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する、プログラムの実行により実現される判定手段と、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求手段から送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求手段から送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する、プログラムの実行により実現される格納制御手段と、要求手段からパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する、プログラムの実行により実現される出力制御手段とを備えることを特徴とする。
出力制御手段は、要求手段からパケットの送信が要求された場合、送信する時刻となったパケットを、バッファから取得し、取得したパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御するようにすることができる。
出力制御手段は、予め定められた所定の時間間隔で割り込み処理が要求された場合、送信する時刻となったパケットを、バッファから取得し、取得したパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御するようにすることができる。
本発明の送信方法は、パケットの送信を要求する要求ステップにおいてパケットの送信が要求された場合、バッファに格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する格納制御ステップと、要求ステップにおいてパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップとを含むことを特徴とする。
本発明の記録媒体のプログラムは、パケットの送信を要求する要求ステップにおいてパケットの送信が要求された場合、バッファに格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する格納制御ステップと、要求ステップにおいてパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップとを含むことを特徴とする。
本発明のプログラムは、パケットの送信を要求する要求ステップにおいてパケットの送信が要求された場合、バッファに格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する格納制御ステップと、要求ステップにおいてパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップとをコンピュータに実行させることを特徴とする。
送信装置は、独立した装置であってもよいし、通信装置の送信処理を行うブロックであってもよい。
本発明の制御装置は、処理の実行を要求し、要求した処理が実行されなかった場合、繰り返し同じ処理の実行を要求する、プログラムの実行により実現される要求手段と、要求手段から処理の実行が要求された場合、要求手段に継続して処理の実行を要求させるように、要求された処理の実行を制御する、プログラムの実行により実現される第1の実行制御手段と、要求手段から処理の実行が要求された場合、他の処理の実行を制御する、プログラムの実行により実現される第2の実行制御手段とを備えることを特徴とする。
本発明の送信装置および方法、記録媒体、並びにプログラムにおいては、要求手段からパケットの送信が要求された場合、バッファに格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かが判定され、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求手段から送信が要求されたパケットがバッファに格納され、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求手段から送信が要求されたパケットがバッファに格納されないように、バッファへのパケットの格納が制御され、要求手段からパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力が制御される。
本発明の制御装置においては、処理の実行が要求され、要求された処理が実行されなかった場合、繰り返し同じ処理の実行が要求され、要求手段から処理の実行が要求された場合、要求手段に継続して処理の実行を要求させるように、要求された処理の実行が制御され、要求手段から処理の実行が要求された場合、他の処理の実行が制御される。
ネットワークとは、少なくとも2つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであっても良いし、1つの装置を構成している内部ブロックどうしであっても良い。
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、即ち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであっても良い。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであっても良い。
本発明によれば、データを送信することができる。また、本発明によれば、ソフトウェア制御によって、より小さい負荷で、かつより短い時間間隔でパケットの送信を制御することができる。さらに、また、本発明によれば、ソフトウェア制御によって、より短い時間間隔で処理を制御することができる。
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
請求項1に記載の送信装置は、要求手段(例えば、図7のネットワーク層172において実行されるプログラム)からパケットの送信が要求された場合、バッファ(例えば、図7のバッファ176)に格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する、プログラムの実行により実現される判定手段(例えば、図8の判定部232)と、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求手段から送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求手段から送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する、プログラムの実行により実現される格納制御手段(例えば、図8の入力制御部231)と、要求手段からパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する、プログラムの実行により実現される出力制御手段(例えば、図8の出力制御部236)とを備えることを特徴とする。
請求項2に記載の送信装置は、出力制御手段(例えば、図8の出力制御部236)は、要求手段(例えば、図7のネットワーク層172において実行されるプログラム)からパケットの送信が要求された場合、送信する時刻となったパケットを、バッファから取得し、取得したパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御するようにすることができる。
請求項3に記載の送信装置は、出力制御手段(例えば、図8の出力制御部236)は、予め定められた所定の時間間隔で割り込み処理が要求された場合、送信する時刻となったパケットを、バッファから取得し、取得したパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御するようにすることができる。
請求項4に記載の送信方法は、パケットの送信を要求する要求ステップ(例えば、図7のネットワーク層172において実行されるプログラムが、入力要求信号を仮想デバイスドライバ174に供給する処理)においてパケットの送信が要求された場合、バッファ(例えば、図7のバッファ176)に格納されているパケットの数が、第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップ(例えば、図9のステップS85の処理)と、バッファに格納されているパケットの数が第2の閾値以下であると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納し、バッファに格納されているパケットの数が第2の閾値を超えていると判定された場合、要求ステップにおいて送信が要求されたパケットをバッファに格納しないように、バッファへのパケットの格納を制御する格納制御ステップ(例えば、図9のステップS89の処理またはステップS92の処理)と、要求ステップにおいてパケットの送信が要求された場合、キューに基づき、バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップ(例えば、図11のステップS134の処理)とを含むことを特徴とする。
なお、請求項5に記載の記録媒体および請求項6に記載のプログラムも、上述した請求項4に記載の送信方法と基本的に同様の処理であるため、繰り返しになるのでその説明は省略する。
請求項7に記載の制御装置は、処理の実行を要求し、要求した処理が実行されなかった場合、繰り返し同じ処理の実行を要求する、プログラムの実行により実現される要求手段(例えば、図7のネットワーク層172において実行されるプログラム)と、要求手段から処理の実行が要求された場合、要求手段に継続して処理の実行を要求させるように、要求された処理の実行を制御する、プログラムの実行により実現される第1の実行制御手段(例えば、図8の入力処理部211)と、要求手段から処理の実行が要求された場合、他の処理の実行を制御する、プログラムの実行により実現される第2の実行制御手段(例えば、図8の出力処理部214)とを備えることを特徴とする。
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
以下、図を参照して、本発明を適用した実施の形態について説明する。
図6は、本発明を適用した通信装置の構成の例を示すブロック図である。
CPU(Central Processing Unit)101は、ROM(Read Only Memory)102、または記録部108に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)103には、CPU101が実行するプログラムやデータなどが適宜記憶される。これらのCPU101、ROM102、およびRAM103は、バス104により相互に接続されている。
CPU101にはまた、バス104を介して入出力インターフェース105が接続されている。入出力インターフェース105には、キーボード、マウス、スイッチなどよりなる入力部106、ディスプレイ、スピーカ、ランプなどよりなる出力部107が接続されている。CPU101は、入力部106から入力される指令に対応して各種の処理を実行する。
入出力インターフェース105に接続されている記録部108は、例えばハードディスクなどで構成され、CPU101が実行するプログラムや各種のデータを記録する。通信部109は、例えば、ネットワークカードなどからなり、インターネット、その他のネットワークなどの通信網を介して、外部の装置と通信する。
また、通信部109は、通信網を介してプログラムを取得し、記録部108に記録させるようにしてもよい。
入出力インターフェース105に接続されているドライブ110は、磁気ディスク131、光ディスク132、光磁気ディスク133、或いは半導体メモリ134などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部108に転送され、記録される。
図7は、プログラムを実行するCPU101の機能の構成を示すブロック図である。
アプリケーション層171において、ユーザによって送信が指示されたデータは、アプリケーション層171から、ネットワーク層172に供給される。ネットワーク層172において、アプリケーション層171から供給されたデータは、パケットに格納される。
データがパケットに格納されると、ネットワーク層172において、パケットのエンキューを要求する旨の入力要求信号が生成される。生成された入力要求信号は、ネットワーク層172において、ルーティングテーブル173を参照することによって、パケットの送信先によって定まる通信網における経路を特定し、仮想デバイスドライバ174に供給される。
すなわち、ルーティングテーブル173には、通信網に接続されている端末装置(通信装置)のアドレスと、通信網における、端末装置までの経路(ゲートウェイ)を示す情報が含まれている。アプリケーション層171からネットワーク層172に供給されたデータ(パケット)が、デバイスドライバ177−1乃至デバイスドライバ177−Nのいずれかを介して送信される場合、パケットの宛先によって定まる出力インターフェースが、図示せぬ仮想出力インターフェースとなるようになされており、入力要求信号は、仮想出力インターフェースに対応する、仮想デバイスドライバ174に供給される。また、ルーティングテーブル173は、アプリケーション層171において実行されるプログラムによって、更新される。
仮想デバイスドライバ174からネットワーク層172に、パケットがエンキューされない旨の信号が供給されると、ネットワーク層172において、エンキューされなかったパケットのエンキューを要求する旨の入力要求信号が生成される。生成された入力要求信号は、仮想デバイスドライバ174に供給される。すなわち、ネットワーク層172において実行されるプログラムは、例えば、パケットのエンキュー処理などの所定の処理を要求し、要求した処理が実行されなかった場合、繰り返し同じ処理の実行を要求する。
また、ネットワーク層172から仮想デバイスドライバ174にデータが格納されたパケットが供給される。
仮想デバイスドライバ174は、ネットワーク層172から、入力要求信号が供給されると、バッファ176に記憶されているパケットのキュー長Qおよび最大キュー長Qmを基に、パケットをエンキューすることができるか否かを判定する。
ここで、最大キュー長Qmとは、バッファ176に格納することができるパケットの最大数をいう。また、キュー長Qとは、バッファ176に格納されているパケットの数をいう。
仮想デバイスドライバ174は、パケットをエンキューすることができると判定された場合、ネットワーク層172からパケットを取得し、取得したパケットをバッファ176に供給し、FIFOキューなどのキューに配置する。そして、仮想デバイスドライバ174は、パケットがエンキューされた旨の信号を生成し、生成した、パケットがエンキューされた旨の信号をネットワーク層172に供給する。
仮想デバイスドライバ174は、パケットをエンキューすることができないと判定された場合、ネットワーク層172からパケットを取得しない。仮想デバイスドライバ174は、パケットがエンキューされない旨の信号を生成し、生成したパケットがエンキューされない旨の信号を、ネットワーク層172に供給する。
仮想デバイスドライバ174は、カーネルタイマ175から、パケットを取得する旨の割り込み信号が供給された場合、またはネットワーク層172からパケットのエンキューを要求する旨の入力要求信号が供給された場合、バッファ176に記憶(格納)されているパケットのうち、送信時刻となったパケットを取得し、取得したパケットをデバイスドライバ177−1乃至デバイスドライバ177−Nの何れかに供給する。
カーネルタイマ175は、所定の時間間隔(例えば、10msec)で、パケットを取得する旨の割り込み信号を生成し、生成した割り込み信号を、仮想デバイスドライバ174に供給する。すなわち、カーネルタイマ175は、タイマイベントが発生するごとに、パケットを取得する旨の割り込み信号を生成し、生成した割り込み信号を、仮想デバイスドライバ174に供給する。
バッファ176は、例えば、RAM103の所定の記憶領域などからなり、FIFOキューなどのキューとしての記憶領域に、デバイスドライバ177−1乃至デバイスドライバ177−Nの何れか、または仮想デバイスドライバ174から供給されたパケットを格納し、記憶する。バッファ176は、記憶しているパケットを、デバイスドライバ177−1乃至デバイスドライバ177−Nの何れか、または仮想デバイスドライバ174に供給する。
デバイスドライバ177−1乃至デバイスドライバ177−N(デバイスドライバ177−2乃至デバイスドライバ177−(N−1)は図示せず)のそれぞれは、物理的なデバイス(物理層178−1乃至物理層178−N(物理層178−2乃至物理層178−(N−1)は図示せず)のそれぞれを制御し、OSと、物理的なデバイス(物理層178−1乃至物理層178−N)のそれぞれとの間における処理の同期を取る役割を担っている。
デバイスドライバ177−1乃至デバイスドライバ177−Nのそれぞれは、入力処理部191−1乃至入力処理部191−Nのそれぞれ、および出力処理部192−1乃至出力処理部192−Nのそれぞれを備えている。
デバイスドライバ177−1の入力処理部191−1乃至デバイスドライバ177−Nの入力処理部191−Nのそれぞれは、仮想デバイスドライバ174から供給されたパケットをバッファ176に供給する。
デバイスドライバ177−1の出力処理部192−1乃至デバイスドライバ177−Nの出力処理部192−Nのそれぞれは、物理層178−1乃至物理層178−Nのそれぞれから、パケットの送信が終了した旨の割り込み信号が供給されると、バッファ176からパケットを取得し、取得したパケットを物理層178−1乃至物理層178−Nのそれぞれに供給する。
より具体的には、例えば、仮想デバイスドライバ174、およびデバイスドライバ177−1乃至デバイスドライバ177−Nは、パケットが記憶されているバッファ176のアドレスを示すポインタをキューに配置することにより、バッファ176においてパケットを移動させることなく、キューに基づく順序で、パケットを入力したり、パケットを出力したりする。
以下、デバイスドライバ177−1乃至デバイスドライバ177−Nのそれぞれを個々に区別する必要のない場合、単に、デバイスドライバ177と称する。また、以下、入力処理部191−1乃至入力処理部191−Nのそれぞれを、個々に区別する必要のない場合、単に、入力処理部191と称する。さらに、以下、出力処理部192−1乃至出力処理部192−Nのそれぞれを、個々に区別する必要のない場合、単に、出力処理部192と称する。
物理層178−1乃至物理層178−Nのそれぞれは、例えば、ベースバンド通信網またはブロードバンド通信網などのイーサネット(登録商標)や光通信網に接続するためのネットワークカードなどにより構成さる。物理層178−1乃至物理層178−Nのそれぞれは、デバイスドライバ177から供給されたパケットを、電気信号または光信号に変換し、電気信号または光信号に変換したパケットを、ネットワークまたはインターネットなどの通信網を介して、送信先の端末装置あてに送信する。また、物理層178−1乃至物理層178−Nのそれぞれは、デバイスドライバ177から供給されたパケットを送信してから、パケットの送信が終了した旨の割り込み信号を生成し、生成した割り込み信号を、デバイスドライバ177に供給する。
以下、物理層178−1乃至物理層178−Nのそれぞれを、個々に区別する必要のない場合、単に、物理層178と称する。
図8は、仮想デバイスドライバ174の機能の構成を示すブロック図である。
仮想デバイスドライバ174は、入力処理部211、キュー情報保持部212、出力情報保持部213、出力処理部214、および時刻保持部215を含むように構成される。
入力処理部211は、ネットワーク層172からパケットを取得し、取得したパケットを、バッファ176に供給する。入力処理部211は、入力制御部231、判定部232、算出部233、および要求信号生成部234を備えている。
入力制御部231は、ネットワーク層172から、パケットのエンキューを要求する旨の入力要求信号が供給されると、パケットがエンキュー可能であるか否かの判定を要求する旨の判定要求信号を生成し、生成した判定要求信号を、判定部232に供給する。
入力制御部231は、判定部232から、エンキューが可能である旨の信号が供給されると、ネットワーク層172からパケットを取得し、取得したパケットにパケット番号iを付す。入力制御部231は、パケット番号iを付してから、取得したパケットの大きさ、パケット番号iなどを示す情報が含まれるパケット情報を生成し、生成したパケット情報を、算出部233に供給する。
ここで、パケット番号iとは、パケットを識別する番号であり、パケット番号は、“1”から昇順に付される。なお、パケット番号iが“0”である場合、入力制御部231には、まだ、パケットが供給されていないことを示している。
入力制御部231は、算出部233から、送信時刻を設定した旨の信号が供給されると、取得したパケットをバッファ176に供給する。なお、以下、入力制御部231が、パケットをエンキューする処理を、パケットの入力処理とも称する。入力制御部231は、パケットをバッファ176に供給してから、パケットがエンキューされた旨の信号を生成し、生成したパケットがエンキューされた旨の信号を、ネットワーク層172に供給する。
入力制御部231は、判定部232からエンキューが不可能である旨の信号が供給されると、パケットがエンキューされない旨の信号を生成し、生成したパケットがエンキューされない旨の信号を、ネットワーク層172に供給する。すなわち、入力制御部231は、パケットがエンキューされた旨の信号またはパケットがエンキューされない旨の信号を生成し、生成したパケットがエンキューされた旨の信号またはパケットがエンキューされない旨の信号を、ネットワーク層172に供給することにより、パケットのバッファ176への格納を制御する。
入力制御部231は、ネットワーク層172からパケットのエンキューが要求されると、すなわち、パケットがエンキューされた旨の信号、またはパケットがエンキューされない旨の信号を、ネットワーク層172に供給すると、パケットのデキューを要求するために、出力要求信号を生成する旨の信号を生成し、生成した出力要求信号を生成する旨の信号を、要求信号生成部234に供給する。
判定部232は、入力制御部231から、判定要求信号が供給されると、キュー情報保持部212が保持している、最大キュー長Qmおよびキュー長Qを基に、バッファ176にパケットのエンキューが可能であるか否かを判定する。
ここで、最大キュー長Qmとは、バッファ176に格納することができるパケットの最大数をいう。また、キュー長Qとは、バッファ176に格納されているパケットの数をいう。さらに、パケットのキュー長Qに“0”が設定されている場合、バッファ176には、パケットが格納されていないことを示している。
判定部232は、パケットのエンキューが可能であると判定された場合、エンキューが可能である旨の信号を生成し、生成したエンキューが可能である旨の信号を、入力制御部231に供給する。また、判定部232は、パケットのエンキューが可能でないと判定された場合、エンキューが不可能である旨の信号を生成し、生成したエンキューが不可能である旨の信号を、入力制御部231に供給する。
算出部233は、入力制御部231からパケット情報が供給されると、供給されたパケット情報、出力情報保持部213に保持されているシェーピングレート、1つ前のパケット番号のパケットの送信時刻、1つ前のパケット番号のパケットのパケットサイズ、および時刻保持部215から供給された現在時刻を基に、パケットの送信時刻を算出し、算出した送信時刻およびパケット情報を出力情報保持部213に供給する。ここで、1つ前のパケット番号のパケットとは、例えば、パケット番号が“2”であるパケットに対して、パケット番号が“1”であるパケットをいう。
算出部233は、パケットの送信時刻を算出すると、キュー情報保持部212に、キュー情報保持部212が保持しているキュー長Qをインクリメントさせる。また、算出部233は、パケットの送信時刻を算出すると、出力情報保持部213に、出力情報保持部213が保持している格納パケット番号をインクリメントさせる。ここで、格納パケット番号とは、入力制御部231がバッファ176に格納したパケットのうち、最後に格納したパケットのパケット番号をいう。また、格納パケット番号が“0”である場合、まだ、バッファ176には、パケットが格納されていないことを示している。
算出部233は、パケットの送信時刻を算出すると、送信時刻を設定した旨の信号を生成し、生成した送信時刻を設定した旨の信号を、入力制御部231に供給する。
要求信号生成部234は、入力制御部231から、出力要求信号を生成する旨の信号が供給されると、パケットのデキューを要求する旨の出力要求信号を生成し、生成した出力要求信号を、出力処理部214に供給する。
キュー情報保持部212は、バッファ176に記憶されているパケットのキュー長Q、および予め定められている、最大キュー長Qmを保持している。
キュー情報保持部212は、入力処理部211による制御のもと、保持しているキュー長Qをインクリメントする。また、キュー情報保持部212は、出力処理部214による制御のもと、保持しているキュー長Qをデクリメントする。
出力情報保持部213は、予め定められたシェーピングレート、入力処理部211から供給された、パケットの送信時刻、パケット情報、格納パケット番号、および送信パケット番号を保持する。ここで、送信パケット番号とは、物理層178において、送信先である端末装置に送信されたパケットのうち、最後に送信されたパケットのパケット番号をいう。換言すれば、送信パケット番号とは、物理層178において、送信先である端末装置に送信されたパケットのパケット番号のうち、最も大きいパケット番号をいう。なお、送信パケット番号が“0”である場合、まだ、送信されたパケットがないことを示している。
出力情報保持部213は、入力処理部211による制御のもと、保持している格納パケット番号をインクリメントする。また、出力情報保持部213は、出力処理部214による制御のもと、保持している送信パケット番号をインクリメントする。
出力処理部214は、所定のタイミングで、バッファ176からパケットを取得し、取得したパケットを、デバイスドライバ177に供給する。出力処理部214は、信号処理部235および出力制御部236を備えている。
信号処理部235は、入力処理部211から出力要求信号が供給されるか、またはカーネルタイマ175から割り込み信号が供給されると、パケットをデキューする旨の信号を生成し、生成したパケットをデキューする旨の信号を、出力制御部236に供給する。
出力制御部236は、信号処理部235から、パケットをデキューする旨の信号が供給されると、出力情報保持部213が保持している、パケットの送信時刻およびパケット情報と、時刻保持部215から供給された現在時刻とを基に、次に送信するパケットであって、送信時刻になったパケットがあるか否かを判定し、次に送信する送信時刻になったパケットを、バッファ176から取得する。出力制御部236は、バッファ176から取得したパケットを、デバイスドライバ177に供給する。
換言すれば、出力制御部236は、信号処理部235から、パケットをデキューする旨の信号が供給されると、パケットのキューに基づき、バッファ176から取得したパケットを、デバイスドライバ177に供給することによって、バッファ176に格納されているパケットの、ハードウェア(デバイス(物理層178−1乃至物理層178−N))によるパケットの送信を制御する制御プログラムへの出力を制御する。
なお、以下、出力制御部236が、パケットをデキューする処理を、パケットの出力処理とも称する。
出力制御部236は、キュー情報保持部212に、キュー情報保持部212が保持しているキュー長Qをデクリメントさせる。また、出力制御部236は、出力情報保持部213に、出力情報保持部213が保持している送信パケット番号をインクリメントさせる。
時刻保持部215は、カーネルタイマ175のもと、時計し、現在時刻を保持する。時刻保持部215は、保持している現在時刻を入力処理部211または出力処理部214に供給する。また、時刻保持部215は、例えば、RTC(Real Time Clock)などとすることも可能である。
次に、図9のフローチャートを参照して、仮想デバイスドライバ174による、パケットのエンキューの処理を説明する。
仮想デバイスドライバ174は、ネットワーク層172から入力要求信号が供給されるごとに、例えば、インプット関数などの所定の関数を呼び出し、パケットのエンキューの処理(入力処理)を行う。
ステップS81において、仮想デバイスドライバ174は、バッファ176に格納するパケットの最大キュー長Qmの設定を行う。例えば、ステップS81において、仮想デバイスドライバ174は、キュー情報保持部212が保持している最大キュー長Qmに“5”を設定する。
ステップS82において、仮想デバイスドライバ174は、バッファ176に格納されているパケットのキュー長Qの設定を行う。例えば、この場合、まだバッファ176にはパケットが格納されていないので、仮想デバイスドライバ174は、キュー情報保持部212が保持しているキュー長Qに“0”を設定する。
ステップS83において、仮想デバイスドライバ174は、格納パケット番号の設定を行う。例えば、この場合、まだバッファ176にはパケットが格納されていないので、仮想デバイスドライバ174は、出力情報保持部213が保持している格納パケット番号に“0”を設定する。
ステップS84において、入力制御部231は、ネットワーク層172から入力要求信号を取得する。入力制御部231は、入力要求信号を取得すると、パケットがエンキュー可能であるか否かの判定を要求する旨の判定要求信号を生成し、生成した判定要求信号を、判定部232に供給する。
入力制御部231から、判定要求信号が供給されると、ステップS85において、判定部232は、キュー情報保持部212に保持されている、キュー長Qおよび最大キュー長Qmを基に、キュー長Qが、所定の値よりも大きいか否かを判定する。
例えば、ステップS85において、判定部232は、キュー情報保持部212に保持されている、キュー長Qおよび最大キュー長Qmを基に、式(3)を計算し、キュー長Qおよび最大キュー長Qmが、式(3)を満たすか否かを判定することにより、キュー長Qが、所定の値よりも大きいか否かを判定する。
(Qm/2)≦Q+1 ・・・(3)
すなわち、判定部232は、バッファ176に記憶されているパケットのキュー長Qが、最大キュー長Qmの半分の値よりも大きいか否かを判定することによって、キュー長Qが、所定の値よりも大きいか否かを判定する。
したがって、例えば、判定部232は、キュー長Q、および最大キュー長Qmが、式(3)を満たす場合、キュー長Qが、所定の値よりも大きいと判定する。
例えば、LinuxなどのUNIX(登録商標)オペレーティングシステムにおいては、エンキューされたパケットが最大キュー長に達すると、上位のネットワーク層のプログラムは、エンキュー処理をさせるためのパケットの供給を一時的に中断する。中断されたパケットの供給は、キューにあるパケットが送信され、キュー長が最大キュー長の半分を下回ると再開される。すなわち、キュー長が、常に最大キュー長の半分未満に保たれていると、ネットワーク層のプログラムは、可能な限りエンキュー処理を実行させようとする。したがって、例えば、キュー長Qが、常に最大キュー長Qmの半分以下に保たれるようにすることで、入力要求信号が取得される回数を増やし、その結果、パケットの出力処理が行われる回数を増やすことができる。
換言すれば、入力処理部211は、ネットワーク層172からパケットのエンキュー処理などの処理が要求された場合、例えば、常に最大キュー長の半分未満に保つようにすることで、ネットワーク層172において実行されるプログラムに継続して処理の実行を要求させるように、要求された処理の実行を制御し、パケットの出力処理などの、他の処理が実行される回数を増やしている。
ステップS85において、キュー長Qが、所定の値よりも大きくないと判定された場合、バッファ176にパケットを格納することができるので、判定部232は、エンキューが可能である旨の信号を生成する。そして、判定部232は、生成したエンキューが可能である旨の信号を、入力制御部231に供給し、処理はステップS86に進む。
判定部232から、エンキューが可能である旨の信号が供給されると、ステップS86において、入力制御部231は、ネットワーク層172から、パケットを取得し、取得したパケットにパケット番号iを付す。入力制御部231は、パケット番号iを付してから、取得したパケットの大きさ、パケット番号iなどを示す情報が含まれるパケット情報を生成し、生成したパケット情報を、算出部233に供給する。
なお、より詳細には、この場合、入力制御部231は、ネットワーク層172から、パケットが記憶されている記憶領域のアドレスを示すポインタを取得する。そして、仮想デバイスドライバ174において、パケットの授受を行う処理は、ポインタを用いて行われる。
ステップS87において、算出部233は、送信時刻算出の処理を行う。なお、送信時刻算出の処理の詳細は、後述するが、送信時刻算出の処理において、算出部233は、入力制御部231から供給された、パケット情報、出力情報保持部213に保持されているシェーピングレート、1つ前のパケット番号のパケットの送信時刻、1つ前のパケット番号のパケットのパケットサイズ、および時刻保持部215から供給された現在時刻を基に、ネットワーク層172から供給されたパケットの送信時刻を算出する。
ステップS88において、出力情報保持部213は、算出部233による制御のもと、保持している格納パケット番号をインクリメントする。例えば、ステップS88において、出力情報保持部213は、保持している格納パケット番号が“1”であった場合、算出部233による制御のもと、保持している格納パケット番号が“2”となるように、格納パケット番号をインクリメントする。
ステップS89において、入力制御部231は、ネットワーク層172から取得したパケットをエンキューする。すなわち、ステップS89において、入力制御部231は、ネットワーク層172から取得したパケットをバッファ176に供給し、FIFOキューなどのキューに配置する。そして、バッファ176は、仮想デバイスドライバ174から供給されたパケットを記憶する。
ステップS90において、キュー情報保持部212は、算出部233による制御のもと、保持しているキュー長Qをインクリメントする。例えば、ステップS90において、キュー情報保持部212は、保持しているキュー長Qが“2”であった場合、算出部233による制御のもと、保持しているキュー長Qが“3”となるように、キュー長Qをインクリメントする。
ステップS91において、入力制御部231は、パケットがエンキューされた旨の信号を生成し、生成したパケットがエンキューされた旨の信号を、ネットワーク層172に供給する。入力制御部231は、出力要求信号を生成する旨の信号を生成し、生成した出力要求信号を生成する旨の信号を、要求信号生成部234に供給する。
一方、ステップS85において、キュー長Qが、所定の値よりも大きいと判定された場合、これ以上、バッファ176にパケットを格納することができないので、判定部232は、エンキューが不可能である旨の信号を生成する。そして、判定部232は、生成したエンキューが不可能である旨の信号を、入力制御部231に供給し、処理はステップS92に進む。
判定部232から、エンキューが不可能である旨の信号が供給されると、ステップS92において、入力制御部231は、パケットがエンキューされない旨の信号を生成し、生成したパケットがエンキューされない旨の信号を、ネットワーク層172に供給する。入力制御部231は、出力要求信号を生成する旨の信号を生成し、生成した出力要求信号を生成する旨の信号を、要求信号生成部234に供給する。
入力制御部231から、出力要求信号を生成する旨の信号が供給されると、ステップS93において、要求信号生成部234は、パケットのデキューを要求する旨の出力要求信号を生成する。要求信号生成部234は、生成した出力要求信号を、出力処理部214に供給し、ステップS84に戻り、上述した処理を繰り返す。
このようにして、仮想デバイスドライバ174は、キュー長が所定の値よりも大きいか否かを判定することにより、パケットのエンキューが可能であるか否かを判定する。そして、パケットのエンキューが可能であると判定された場合、仮想デバイスドライバ174は、パケットを取得し、取得したパケットをバッファ176にエンキューする。また、パケットのエンキューが可能でないと判定された場合、仮想デバイスドライバ174は、パケットを取得しない。
このように、パケットのエンキューが可能でないと判定された場合、仮想デバイスドライバ174は、エンキューされない旨の信号を、ネットワーク層172に供給するので、パケットはエンキューされず、また、破棄もされないため、ネットワーク層172には、キューの排他制御問題が発生したように見える。すなわち、ハードウェア割り込みなどにより、パケットの出力処理(パケットのデキュー)が行われているために、パケットが格納されているキュー(バッファ176におけるパケットが記憶されている領域)にアクセスができなかったと判定する。
この場合、仮想デバイスドライバ174から、エンキューされない旨の信号が供給されるので、ネットワーク層172において、エンキューされなかったパケットのエンキューを要求する旨の入力要求信号が生成され、仮想デバイスドライバ174に供給される。換言すれば、ネットワーク層172において、パケットのエンキューが再試行される。したがって、仮想デバイスドライバ174に、繰り返し入力要求信号が供給されることになり、その結果、繰り返し入力処理部211から、出力処理部214に出力要求信号が供給される。これにより、パケットの出力処理が行われる回数(機会)が増え、より短い間隔(より小さい粒度)で、パケットの送信間隔を制御することができる。
なお、パケットのエンキューの再試行を行う処理は、OSの負荷を増加させることになるが、エンキューの再試行を行う処理は、他の処理よりも優先度が低いため、システム内において実行される他の処理が、エンキューの再試行を行う処理の影響を受けることはほとんど無い。したがって、エンキューの再試行を行う処理の負荷を調整するための特別な処理は、特に必要とされない。
図10のフローチャートを参照して、図9のステップS87の処理に対応する、送信時刻算出の処理を説明する。
ステップS111において、算出部233は、入力制御部231から供給されたパケット情報を基に、入力制御部231が、ネットワーク層172から取得したパケットのパケット番号iが、“0”であるか否かを判定する。
ステップS111において、ネットワーク層172から取得したパケットのパケット番号iが、“0”でないと判定された場合、ステップS112に進み、算出部233は、ネットワーク層172から取得したパケットの送信時刻を算出する。例えば、ステップS112において、算出部233は、式(4)を計算することにより、パケットの送信時刻を算出する。
(Ti)=(T(i−1))+(L(i−1))/r ・・・(4)
ここで、Tiは、パケット番号が“i”であるパケットの送信時刻であり、T(i−1)は、出力情報保持部213に保持されている、パケット番号が“i−1”であるパケットの送信時刻である。また、L(i−1)は、出力情報保持部213に保持されている、パケット番号が“i−1”であるパケットの大きさ(サイズ(データ量))であり、rは、出力情報保持部213に保持されている、予め定められたシェーピングレートである。
ステップS113において、算出部233は、キュー情報保持部212に保持されているキュー長Qが“0”であるか否かを判定する。ステップS113において、キュー長Qが“0”でないと判定された場合、ステップS115に進む。
一方、ステップS113において、キュー長Qが“0”であると判定された場合、ステップS114に進み、算出部233は、算出した送信時刻Tiが、時刻保持部215から供給された現在時刻よりも後の時刻であるか否かを判定する。
例えば、ステップS114において、算出部233は、算出した送信時刻Tiおよび時刻保持部215から供給された現在時刻Tが、式(5)を満たすか否かを判定することにより、算出した送信時刻Tiが、時刻保持部215から供給された現在時刻よりも後の時刻であるか否かを判定する。
T<Ti ・・・(5)
したがって、この場合、算出した送信時刻Tiおよび時刻保持部215から供給された現在時刻Tが、式(5)を満たすと判定されたとき、算出した送信時刻Tiが、時刻保持部215から供給された現在時刻よりも後の時刻であると判定される。
ステップS114において、算出した送信時刻Tiが、現在時刻よりも後の時刻であると判定された場合、ステップS115に進み、算出部233は、パケット番号が“i”であるパケットの送信時刻に、算出した送信時刻Tiを設定し、設定した送信時刻Tiおよびパケット情報を、出力情報保持部213に供給する。出力情報保持部213は、算出部233から供給された送信時刻Tiおよびパケット情報を保持する。そして、算出部233は、送信時刻を設定した旨の信号を生成する。算出部233は、生成した送信時刻を設定した旨の信号を、入力制御部231に供給し、処理は終了する。
ステップS114において、算出した送信時刻Tiが、現在時刻よりも後の時刻でないと判定された場合、算出した送信時刻Tiは、すでに、過ぎてしまっているので、ステップS116に進む。
また、ステップS111において、ネットワーク層172から供給されたパケットのパケット番号iが、“0”であると判定された場合、ステップS116に進み、算出部233は、パケット番号が“i”であるパケットの送信時刻Tiに、現在時刻Tを設定し、設定した送信時刻Tiおよびパケット情報を、出力情報保持部213に供給する。出力情報保持部213は、算出部233から供給された送信時刻Tiおよびパケット情報を保持する。そして、算出部233は、送信時刻を設定した旨の信号を生成する。算出部233は、生成した送信時刻を設定した旨の信号を、入力制御部231に供給し、処理は終了する。
このようにして、算出部233は、パケットの送信時刻を算出し、算出した送信時刻または現在時刻を、パケットの送信時刻として設定する。なお、図10のフローチャートを参照して、Leaky Bucketアルゴリズムと称されるスケジューリングアルゴリズムに基づいて、パケットの送信間隔を調整する方法を説明したが、Leaky Bucketアルゴリズムに限らず、他のスケジューリングアルゴリズムに基づいて、パケットの送信間隔を調整することも、もちろん可能である。
図11のフローチャートを参照して、仮想デバイスドライバ174による、パケットのデキューの処理を説明する。
仮想デバイスドライバ174は、カーネルタイマ175からパケットを取得する旨の割り込み信号が供給されるか、または入力処理部211から出力要求信号が供給されるごとに、例えば、割り込みハンドラ関数などの所定の関数を呼び出し、パケットのデキューの処理(出力処理)を行う。
ステップS131において、仮想デバイスドライバ174は、送信パケット番号の設定を行う。例えば、ステップS131において、仮想デバイスドライバ174は、まだパケットが送信されていないので、出力情報保持部213が保持している送信パケット番号に“0”を設定する。
ステップS132において、信号処理部235は、割り込み信号または出力要求信号が供給されたか否かを判定する。すなわち、信号処理部235は、カーネルタイマ175から割り込み信号が供給されたか、または入力処理部211から出力要求信号が供給されたか否かを判定する。ステップS132において、割り込み信号または出力要求信号が供給されていないと判定された場合、パケットをデキューしないので、割り込み信号または出力要求信号が供給されたと判定されるまで、判定の処理を繰り返す。
ステップS132において、割り込み信号または出力要求信号が供給されたと判定された場合、パケットをデキューするので、信号処理部235は、パケットをデキューする旨の信号を生成し、生成したパケットをデキューする旨の信号を、出力制御部236に供給して、処理はステップS133に進む。
ここで、カーネルタイマ175のタイマイベントの発生周期は、通常100Hzであるので、信号処理部235には、例えば、少なくとも10msecごとに割り込み信号が供給される。また、信号処理部235には、入力処理部211が、ネットワーク層172から入力要求信号を取得するごとに、入力処理部211から、出力要求信号が供給されるので、例えば、信号処理部235には、ほぼ15μsecごとに、入力処理部211から出力要求信号が供給される。そして、このとき、出力処理部214の信号処理部235は、入力処理部211が、ネットワーク層172から入力要求信号を取得するごとに、すなわち、ネットワーク層172からパケットのエンキューなどの処理が要求されるごとに、ネットワーク層172から要求された処理とは異なる、パケットのデキューなどの処理の実行を制御する。
信号処理部235から、パケットをデキューする旨の信号が供給されると、ステップS133において、出力制御部236は、現在時刻が、送信パケット番号と同じパケット番号のパケットの送信時刻を過ぎたか否かを判定する。例えば、ステップS133において、出力制御部236は、出力情報保持部213に保持されている送信パケット番号およびパケットの送信時刻、並びに時刻保持部215から供給された現在時刻を基に、式(6)を計算することにより、現在時刻が送信時刻を過ぎたか否かを判定する。
Ti<T ・・・(6)
ここで、Tiは、出力情報保持部213に保持されている、パケット番号が“i”であるパケットの送信時刻であり、Tは、時刻保持部215から供給された現在時刻である。したがって、例えば、送信パケット番号が“i”であり、送信時刻Tiおよび現在時刻Tが、式(6)を満たす場合、出力制御部236は、現在時刻が、送信パケット番号と同じパケット番号のパケットの送信時刻を過ぎたと判定する。
ステップS133において、現在時刻が送信時刻を過ぎたと判定された場合、パケットを送信するので、ステップS134に進み、出力制御部236は、送信時刻となったパケットをデキューする。すなわち、ステップS134において、出力制御部236は、送信時刻になったパケットを、バッファ176から取得し、取得したパケットをデバイスドライバ177に供給する。
ステップS135において、出力情報保持部213は、出力制御部236による制御のもと、保持している送信パケット番号をインクリメントする。例えば、出力情報保持部213に保持されている送信パケット番号が、“1”であった場合、ステップS135において、出力情報保持部213は、出力制御部236による制御のもと、送信パケット番号が“2”となるように、送信パケット番号をインクリメントする。
ステップS136において、キュー情報保持部212は、出力制御部236による制御のもと、保持しているキュー長Qをデクリメントし、処理はステップS132に戻る。例えば、キュー情報保持部212に保持されているキュー長Qが“3”であった場合、ステップS136において、キュー情報保持部212は、出力制御部236による制御のもと、キュー長Qが“2”となるようにキュー長Qをデクリメントする。
一方、ステップS133において、現在時刻が送信時刻を過ぎていないと判定された場合、パケットは送信しないので、ステップS132に戻り、上述した処理を繰り返す。
このようにして、仮想デバイスドライバ174は、割り込み信号または出力要求信号が供給されるたびに、パケットの出力処理を行う。
このように、出力処理部が、割り込み信号または出力要求信号が供給されるたびに、パケットの出力処理を行うことで、ソフトウェア制御によって、より小さい負荷でパケットの送信を制御することができる。
また、出力処理部が、割り込み信号または出力要求信号が供給されるたびに、パケットの出力処理を行うことで、より短い時間間隔で、パケットの送信を制御することができ、その結果、通信網におけるバーストトラフィックの発生をより少なくすることができる。これにより、通信経路上のルータなどにおいて、破棄されるパケットの数を減少させることができる。
さらに、また、出力処理部が、割り込み信号または出力要求信号が供給されるたびに、パケットの出力処理を行うことで、より短い時間間隔で、パケットの送信を制御することができ、その結果、ジッタが減少し、ジッタによる遅延のゆらぎを調整するために要する、受信側の端末装置におけるバッファの大きさを減少させることができる。
したがって、受信側の端末装置において、バッファリングするデータサイズ(大きさ)を小さくすることができる。また、送信側の通信装置においても、パケットのキュー長を短く保つことができるため、バッファリングによる遅延を減少させることができ、これにより、低遅延のリアルタイムアプリケーションプログラムを実現することができる。
さらに、また、ネットワーク層から処理が要求されるたびに、他の処理を行うようにしたので、ソフトウェア制御によって、より短い時間間隔で処理を制御することができる。
以上のように、ネットワーク層から入力要求信号が供給されるたびに、パケットの出力処理を行うことで、ソフトウェア制御によって、より小さい負荷でパケットの送信を制御することができる。また、ネットワーク層から入力要求信号が供給されるか、またはカーネルタイマから割り込み信号が供給されるたびに、パケットの出力処理を行うことで、より短い時間間隔で、パケットの送信を制御することができる。
さらに、また、ネットワーク層から処理が要求されるたびに、他の処理を行うようにしたので、ソフトウェア制御によって、より短い時間間隔で処理を制御することができる。
本発明によれば、パケットを記憶するようにしたので、パケットを送信することができる。また、本発明によれば、ネットワーク層から入力要求信号が供給されるたびに、パケットの出力処理を行うようにしたので、ソフトウェア制御によって、より小さい負荷でパケットの送信を制御することができる。
さらに、本発明によれば、ネットワーク層から入力要求信号が供給されるか、またはカーネルタイマから割り込み信号が供給されるたびに、パケットの出力処理を行うようにしたので、より短い時間間隔で、パケットの送信を制御することができる。
さらに、また、本発明によれば、ネットワーク層から処理が要求されるたびに、他の処理を行うようにしたので、ソフトウェア制御によって、より短い時間間隔で処理を制御することができる。
なお、本発明は、パケットの送信間隔を制御する通信装置だけでなく、所定の処理を実行する時間間隔を制御する制御装置にも適用することが可能である。この場合、制御装置は、ネットワーク層から処理の実行が要求されるか、またはカーネルタイマから割り込み信号が供給されるたびに、他の処理の実行を制御する。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図6に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク131(フレキシブルディスクを含む)、光ディスク132(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク133(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ134などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM102や、記録部108に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインターフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
従来の通信装置が、アプリケーションプログラムおよびオペレーティングシステムのカーネルの機能を呼び出すことにより実現される、機能の構成を示すブロック図である。 トラフィック量の制御を行う従来の通信装置の機能の構成を示すブロック図である。 パケットのエンキューの処理を説明するフローチャートである。 送信時刻算出の処理を説明するフローチャートである。 パケットのデキューの処理を説明するフローチャートである。 本発明を適用した通信装置の構成の例を示すブロック図である。 プログラムを実行するCPUの機能の構成を示すブロック図である。 仮想デバイスドライバの機能の構成を示すブロック図である。 パケットのエンキューの処理を説明するフローチャートである。 送信時刻算出の処理を説明するフローチャートである。 パケットのデキューの処理を説明するフローチャートである。
符号の説明
101 CPU, 102 ROM, 103 RAM, 108 記録部, 131 磁気ディスク, 132 光ディスク, 133 光磁気ディスク, 134 半導体メモリ, 174 仮想デバイスドライバ, 175 カーネルタイマ, 176 バッファ, 211 入力処理部, 212 キュー情報保持部, 213 出力情報保持部, 214 出力処理部, 215 時刻保持部, 231 入力制御部, 232 判定部, 233 算出部, 236 出力制御部

Claims (7)

  1. 通信網を介してパケットを送信する送信装置であって、アプリケーションプログラムからパケットの送信が指示された場合、または送信を要求したパケットが、送信のためのキューに配置されたパケットを格納するバッファに格納されなかった場合、前記バッファに格納されているパケットの数が第1の閾値より小さいとき、前記通信網上の経路を特定した相手へのパケットの送信を要求する要求手段を備える送信装置において、
    前記要求手段からパケットの送信が要求された場合、前記バッファに格納されているパケットの数が、前記第1の閾値より小さい第2の閾値以下であるか否かを判定する、プログラムの実行により実現される判定手段と、
    前記バッファに格納されているパケットの数が前記第2の閾値以下であると判定された場合、前記要求手段から送信が要求されたパケットを前記バッファに格納し、前記バッファに格納されているパケットの数が前記第2の閾値を超えていると判定された場合、前記要求手段から送信が要求されたパケットを前記バッファに格納しないように、前記バッファへのパケットの格納を制御する、プログラムの実行により実現される格納制御手段と、
    前記要求手段からパケットの送信が要求された場合、前記キューに基づき、前記バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する、プログラムの実行により実現される出力制御手段と
    を備えることを特徴とする送信装置。
  2. 前記出力制御手段は、前記要求手段からパケットの送信が要求された場合、送信する時刻となった前記パケットを、前記バッファから取得し、取得した前記パケットの、ハードウェアによる前記パケットの送信を制御する前記制御プログラムへの出力を制御する
    ことを特徴とする請求項1に記載の送信装置。
  3. 前記出力制御手段は、予め定められた所定の時間間隔で割り込み処理が要求された場合、送信する時刻となった前記パケットを、前記バッファから取得し、取得した前記パケットの、ハードウェアによる前記パケットの送信を制御する前記制御プログラムへの出力を制御する
    ことを特徴とする請求項1に記載の送信装置。
  4. 通信網を介してパケットを送信する送信方法であって、アプリケーションプログラムからパケットの送信が指示された場合、または送信を要求したパケットが、送信のためのキューに配置されたパケットを格納するバッファに格納されなかった場合、前記バッファに格納されているパケットの数が第1の閾値より小さいとき、前記通信網上の経路を特定した相手へのパケットの送信を要求する要求ステップを含む送信方法において、
    前記要求ステップにおいてパケットの送信が要求された場合、前記バッファに格納されているパケットの数が、前記第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、
    前記バッファに格納されているパケットの数が前記第2の閾値以下であると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納し、前記バッファに格納されているパケットの数が前記第2の閾値を超えていると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納しないように、前記バッファへのパケットの格納を制御する格納制御ステップと、
    前記要求ステップにおいてパケットの送信が要求された場合、前記キューに基づき、前記バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップと
    を含むことを特徴とする送信方法。
  5. アプリケーションプログラムからパケットの送信が指示された場合、または送信を要求したパケットが、送信のためのキューに配置されたパケットを格納するバッファに格納されなかった場合、前記バッファに格納されているパケットの数が第1の閾値より小さいとき、通信網上の経路を特定した相手へのパケットの送信を要求する要求ステップを含む、前記通信網を介してパケットを送信する送信処理用のプログラムであって、
    前記要求ステップにおいてパケットの送信が要求された場合、前記バッファに格納されているパケットの数が、前記第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、
    前記バッファに格納されているパケットの数が前記第2の閾値以下であると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納し、前記バッファに格納されているパケットの数が前記第2の閾値を超えていると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納しないように、前記バッファへのパケットの格納を制御する格納制御ステップと、
    前記要求ステップにおいてパケットの送信が要求された場合、前記キューに基づき、前記バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  6. 通信網を介してパケットを送信する送信処理であって、アプリケーションプログラムからパケットの送信が指示された場合、または送信を要求したパケットが、送信のためのキューに配置されたパケットを格納するバッファに格納されなかった場合、前記バッファに格納されているパケットの数が第1の閾値より小さいとき、前記通信網上の経路を特定した相手へのパケットの送信を要求する要求ステップを含む送信処理を、コンピュータに行わせるプログラムにおいて、
    前記要求ステップにおいてパケットの送信が要求された場合、前記バッファに格納されているパケットの数が、前記第1の閾値より小さい第2の閾値以下であるか否かを判定する判定ステップと、
    前記バッファに格納されているパケットの数が前記第2の閾値以下であると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納し、前記バッファに格納されているパケットの数が前記第2の閾値を超えていると判定された場合、前記要求ステップにおいて送信が要求されたパケットを前記バッファに格納しないように、前記バッファへのパケットの格納を制御する格納制御ステップと、
    前記要求ステップにおいてパケットの送信が要求された場合、前記キューに基づき、前記バッファに格納されているパケットの、ハードウェアによるパケットの送信を制御する制御プログラムへの出力を制御する出力制御ステップと
    を含むことを特徴とするプログラム。
  7. 処理の実行を要求し、要求した処理が実行されなかった場合、繰り返し同じ処理の実行を要求する、プログラムの実行により実現される要求手段と、
    前記要求手段から処理の実行が要求された場合、前記要求手段に継続して処理の実行を要求させるように、要求された処理の実行を制御する、プログラムの実行により実現される第1の実行制御手段と、
    前記要求手段から処理の実行が要求された場合、他の処理の実行を制御する、プログラムの実行により実現される第2の実行制御手段と
    を備えることを特徴とする制御装置。
JP2004300352A 2004-10-14 2004-10-14 送信装置および方法、記録媒体、プログラム、並びに制御装置 Expired - Fee Related JP4446166B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004300352A JP4446166B2 (ja) 2004-10-14 2004-10-14 送信装置および方法、記録媒体、プログラム、並びに制御装置
TW094135207A TW200637265A (en) 2004-10-14 2005-10-07 Transmission device and method, recording medium, program, and control device
US11/248,466 US7626993B2 (en) 2004-10-14 2005-10-12 Transmission device and method, recording medium, program, and control device
CNB2005101128605A CN100484096C (zh) 2004-10-14 2005-10-14 传输设备、方法和控制设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004300352A JP4446166B2 (ja) 2004-10-14 2004-10-14 送信装置および方法、記録媒体、プログラム、並びに制御装置

Publications (2)

Publication Number Publication Date
JP2006115197A JP2006115197A (ja) 2006-04-27
JP4446166B2 true JP4446166B2 (ja) 2010-04-07

Family

ID=36316206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004300352A Expired - Fee Related JP4446166B2 (ja) 2004-10-14 2004-10-14 送信装置および方法、記録媒体、プログラム、並びに制御装置

Country Status (4)

Country Link
US (1) US7626993B2 (ja)
JP (1) JP4446166B2 (ja)
CN (1) CN100484096C (ja)
TW (1) TW200637265A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7733894B1 (en) * 2005-12-14 2010-06-08 Juniper Networks, Inc. Dynamic queue management
JP4274229B2 (ja) * 2006-11-10 2009-06-03 ダイキン工業株式会社 空気調和機
WO2010089886A1 (ja) * 2009-02-06 2010-08-12 富士通株式会社 パケットバッファ装置及びパケット廃棄方法
CN101656682B (zh) * 2009-06-12 2011-09-21 中兴通讯股份有限公司 一种移动多媒体数据广播业务处理的方法及系统
JP5497541B2 (ja) * 2010-06-04 2014-05-21 株式会社メガチップス 通信制御装置およびシェイピング装置
WO2012056537A1 (ja) * 2010-10-27 2012-05-03 三菱電機株式会社 プログラマブルコントローラ
JP5303593B2 (ja) * 2011-03-16 2013-10-02 株式会社コア パケット送信制御装置及びパケット送信制御方法
US20140086258A1 (en) * 2012-09-27 2014-03-27 Broadcom Corporation Buffer Statistics Tracking
JP5591892B2 (ja) * 2012-09-14 2014-09-17 株式会社東芝 コンテンツ配信サーバ装置及びその制御方法
KR102560594B1 (ko) * 2016-05-03 2023-07-27 삼성전자주식회사 무선 통신 시스템에서 패킷을 송신하기 위한 장치 및 방법
JP6711339B2 (ja) * 2017-10-25 2020-06-17 横河電機株式会社 通信処理装置、プログラム、および通信処理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001211207A (ja) 2000-01-26 2001-08-03 Sony Corp パケット送信方法、パケット送信装置並びに帯域保証方法
JP4403348B2 (ja) 2000-12-14 2010-01-27 ソニー株式会社 通信装置及び通信方法
JP3925234B2 (ja) 2002-02-18 2007-06-06 ソニー株式会社 データ通信システム、データ通信管理装置、および方法、並びにコンピュータ・プログラム
US20030174650A1 (en) * 2002-03-15 2003-09-18 Broadcom Corporation Weighted fair queuing (WFQ) shaper
US7286549B2 (en) * 2002-10-30 2007-10-23 Intel Corporation Method, system, and program for processing data packets in packet buffers

Also Published As

Publication number Publication date
TWI292992B (ja) 2008-01-21
JP2006115197A (ja) 2006-04-27
CN100484096C (zh) 2009-04-29
US20060098584A1 (en) 2006-05-11
CN1761243A (zh) 2006-04-19
US7626993B2 (en) 2009-12-01
TW200637265A (en) 2006-10-16

Similar Documents

Publication Publication Date Title
US7626993B2 (en) Transmission device and method, recording medium, program, and control device
JP3983810B2 (ja) ルータにおける送信されるべきデータの優先順位決め
WO2020022209A1 (ja) ネットワーク制御装置及びネットワーク制御方法
US7646781B2 (en) Methods, systems, and computer program products for selectively discarding packets
US20060140193A1 (en) Optimization of a TCP connection
EP1303083A1 (en) Packet scheduling apparatus
EP1576775A2 (en) Protecting real-time data in wireless networks
EP1346529A2 (en) Method and apparatus to manage packet fragmentation
CN112104562B (zh) 拥塞控制方法及装置、通信网络、计算机存储介质
US7843825B2 (en) Method and system for packet rate shaping
KR101344014B1 (ko) 제로 지연 큐잉 방법 및 그 시스템
JP7211765B2 (ja) パケット転送装置、方法、及びプログラム
US8838782B2 (en) Network protocol processing system and network protocol processing method
JP6982250B2 (ja) パケット転送装置、方法、及びプログラム
EP3694164B1 (en) Data transmission method and device, and computer storage medium
JP2007013449A (ja) シェーパー制御方法、データ通信システム、ネットワークインタフェース装置及びネットワーク中継装置
EP1730903A2 (en) Expedited data transmission in packet based network
JP2007088709A (ja) パケット通信装置およびその処理方法
JP7416334B1 (ja) パケット制御システム、パケット制御方法及びパケット制御装置
JP2003018208A (ja) QoS制御装置
JP3981819B2 (ja) 動的キューイングバッファ制御方法およびシステム
JP3972370B2 (ja) ネットワーク内のrncとノードbとの間のダウンリンク通信における差別化スケジューリング方法
JP2004514324A (ja) サービス重み付けクラス適合方法
JP2002111721A (ja) ネットワーク装置
WO2005096661A1 (en) A method of optimising connection set-up times between nodes in a centrally controlled network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091102

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091224

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100106

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130129

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140129

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees