JPH11327938A - フロー制御方法 - Google Patents

フロー制御方法

Info

Publication number
JPH11327938A
JPH11327938A JP10155230A JP15523098A JPH11327938A JP H11327938 A JPH11327938 A JP H11327938A JP 10155230 A JP10155230 A JP 10155230A JP 15523098 A JP15523098 A JP 15523098A JP H11327938 A JPH11327938 A JP H11327938A
Authority
JP
Japan
Prior art keywords
application
reception
packet
priority
queue
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.)
Pending
Application number
JP10155230A
Other languages
English (en)
Inventor
Hideo Sudo
日出夫 須藤
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Data 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 Oki Data Corp filed Critical Oki Data Corp
Priority to JP10155230A priority Critical patent/JPH11327938A/ja
Publication of JPH11327938A publication Critical patent/JPH11327938A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 【解決手段】 各アプリケーション7−1〜7−4によ
るパケットの受信処理は、キュー11に登録する。自ア
プリケーションがカレントになると、自アプリケーショ
ンが使用しているコネクションを通じて送信元のノード
に印刷データ送信要求を発信する。処理を終了すると、
受信バッファを開放して、自アプリケーションの次に登
録してあるアプリケーションにカレントを受け渡す。そ
のアプリケーションが、キュー11の2番目以降に別の
ジョブを実行するための登録をしている場合には、コネ
クションを切断しないで接続状態を持続させる。 【効果】 カレントとなっているアプリケーションは、
受信バッファを最大限に使用でき、そのシステムにおけ
る最大の速度で印刷パケットを受信することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ネットワークに接
続され、複数のネットワークプロトコルを搭載するシス
テムが、複数のノードと同時に接続して通信を行う場合
に必要な、受信パケットのフロー制御方法に関するもの
である。
【0002】
【従来の技術】ネットワークに接続されたシステムは、
ネットワークを介して他のノードと通信を行うために、
ネットワークプロトコルを搭載する。通有心相手先のノ
ードの使用するプロトコルには様々な種類のものがある
ため、通常は、複数のネットワークプロトコルを搭載す
る。これらのネットワークプロトコルには、それぞれ受
信パケットのフロー制御(流量制御)が装備されてい
る。フロー制御とは、ネットワーク上で2つのノードが
通信をする場合に、受信側のノードが送信側のノードに
対して、受信バッファの残り容量や、受信性能を考慮し
て、単位時間あたりのパケットの送信量(送信速度)を
調節するように要求するような制御をいう。送信側は、
要求された送信量に応じてパケットを送信するためのテ
ンポを調節する。
【0003】フロー制御が無い場合、ネットワーク上で
通信する2つのノードにおいて、受信側は送信されてく
るパケットを無条件に受信しなければならなくなる。送
信側が送るパケットの送信速度が受信側の受信速度より
速い場合には、パケットの受け溢し(オーバーフロー)が
発生する。また、送信側のパケット送信速度が受信側の
受信速度より著しく遅い場合には、受信側の待ち時間が
増え、非効率な送受信となる。常に一定速度でパケット
を受信し続けられる受信側ノードはありえないので、フ
ロー制御は必須機能といえる。
【0004】
【発明が解決しようとする課題】ところで、上記のよう
な従来の技術には、次のような解決すべき課題があっ
た。単一のプロトコルを搭載したノードであれば、受信
するパケットのフロー制御は搭載されたプロトコルの持
つフロー制御機能が行う。しかし、複数のプロトコルを
同時に動作させるノードが複数のノードから別々のプロ
トコルを用いてパケットを受信する場合(これをホット
プロトコルという)、それぞれのプロトコルが持つフロ
ー制御が、お互いに影響し合い、効率的に動作しなくな
ってしまうことがある。即ち、各プロトコルがフロー制
御のための受信バッファ(メモリ)を独自の制御で占有
するため、システム全体からみた場合に、受信バッファ
の使用効率が悪く、受信速度の遅いシステムとなってし
まう場合もある。
【0005】
【課題を解決するための手段】本発明は以上の点を解決
するため次の構成を採用する。 〈構成1〉複数のネットワークプロトコルをサポートす
るシステムにおいて、ネットワークからパケットを受信
して処理する複数のアプリケーションを順に登録して、
上記パケットの受信順と、受信処理の起動関数を管理す
るキューを設定し、このキューのカレントに登録された
アプリケーションが、上記パケットの受信処理を終了す
ると、そのアプリケーションは、受信バッファを開放し
て、その時点でキューに対して次に登録してあるアプリ
ケーションの関数をコールしてカレントを受け渡すこと
を特徴とするフロー制御方法。
【0006】〈構成2〉構成1に記載のフロー制御方法
において、カレントを受け渡したアプリケーションは、
その後も確立したコネクションを切断しないで維持する
ことを特徴とするフロー制御方法。
【0007】〈構成3〉構成1に記載のフロー制御方法
において、キューに登録された優先度の低い処理を優先
度の高い処理で置き換え、この優先度の高い処理が終了
したのち優先度の低い処理を元の位置に再登録し直し、
続いてこの優先度の低い処理を実行することを特徴とす
るフロー制御方法。
【0008】〈構成4〉構成1に記載のフロー制御方法
において、サポートするアプリケーションの種類を優先
度の高いアプリケーショングループと優先度の低いアプ
リケーショングループとに分類し、優先度の高いアプリ
ケーショングループが使用可能な容量の限界値を、優先
度の低いアプリケーショングループが使用可能な容量の
限界値より大きくなるように、受信バッファの容量を設
定して、その限界値を、コネクション数に応じて動的に
変更することを特徴とするフロー制御方法。
【0009】〈構成5〉構成1に記載のフロー制御方法
において、一定時間毎に受信したパケット中のブロード
キャスト(Broadcast)パケットとマルチキャスト(Mul
ticast)パケットのサイズを全て加算した合計サイズを
求め、その合計サイズに相当する記憶領域分を受信バッ
ファから差し引いて、パケット受信用の空きバッファ領
域にすることを特徴とするフロー制御方法。
【0010】
【発明の実施の形態】以下、本発明の実施の形態を具体
例を用いて説明する。 《具体例1》図1は、本発明のフロー制御方法を実施す
るシステムのブロック図である。この図の説明に入る前
に、このシステムが接続されるネットワークとそのプロ
トコルによる一般的な動作を説明する。
【0011】図2は、複数のプロトコルを搭載したシス
テムの説明図である。図のように、ノード1A,1B,
1Cは、相互にネットワーク2を通じて接続されてい
る。ノード1AにはプロトコルXが搭載されている。ノ
ード1BにはプロトコルYが搭載されている。ノード1
CにはプロトコルXとプロトコルYとが搭載されてい
る。
【0012】図に示すような接続環境において、ノード
1Aとノード1CはプロトコルXを使用して通信し、ノ
ード1Bとノード1CはプロトコルYを使用し通信して
いる。ノード1Aおよびノード1Bが送信側ノード、ノ
ード1Cが受信側ノードであるとき、ノード1Aとノー
ド1C間のコネクションはプロトコルXの持つフロー制
御を使用し、ノード1Bとノード1C間のコネクション
はプロトコルYのフロー制御を使用して通信をする。ノ
ード1Cは、それぞれのプロトコルX,Yのフロー制御
を使用してパケットを受信する。
【0013】図3には、一般的なシステムの動作シーケ
ンスのうちで、特に問題となるタイミングについて図示
した。まずステップS1で、ノード1CのプロトコルX
は、その時点での空き受信バッファサイズMをチェック
する。なお、ここではMを“10”とする。ノード1C
はノード1Aに対して、サイズM分のパケットを要求す
る。この直後に、ノード1CのプロトコルYがその時点
での空き受信バッファサイズをチェックしたとする(ス
テップS2)。すると、直前にパケットの送信要求を出
したノード1Aからのパケットは未だ到着していないた
め、空き受信バッファサイズMが得られる。
【0014】そこで、ノード1CのプロトコルYもノー
ド1Bに対してサイズNを要求する。ノード1Aは、ノ
ード1CのプロトコルXより要求されたサイズMのパケ
ットを、ノード1Cに対して送信する(ステップS
3)。この時点で空き受信バッファサイズはゼロとな
る。ノード1Bは、ノード1CのプロトコルYより要求
されたサイズMのパケットをノード1Cに対して送信す
る(ステップS4)。この時点で空き受信バッファサイ
ズは−Mとなる。即ち、ノード1Bから創始されたパケ
ットは受信バッファに格納できないから、受け溢しが発
生する。
【0015】これを回避するために、搭載するプロトコ
ル数分の受信バッファを準備し、それぞれのプロトコル
のフロー制御を独立に動作させる方法があるが、受信す
るプロトコルが偏って使用される環境があった場合、受
信バッファの効率が悪くなってしまう。
【0016】例えば、5個のプロトコルを搭載している
ノードがあった場合、5個の受信バッファを設けるとす
る。その中の1〜2個のプロトコルのパケットをある時
間帯に集中して受信した場合、5個の受信バッファのう
ち、対応する受信バッファはいっぱいになり、受信不可
能という状態が発生する。しかし、受信バッファ全体と
しては半分以上の受信領域が空いていることになり、メ
モリ効率が非常に悪いシステムとなる。
【0017】また、従来、最も古いデータの上に新しい
データを自動的に上書きして、効率のよい受信バッファ
として使用できる、リングバッファ方式のものがしられ
ている。しかし、このリングバッファは、バッファ内に
1パケットでも開放しないパケットが存在すると、以降
の受信ができなくなるため、そのパケットを、処理前に
他のバッファにコピーしなければならないという欠点が
ある。
【0018】そこで、この具体例では、ネットワークか
らパケットを受信して処理する複数のアプリケーション
を順に登録して、パケットの受信順と、受信処理の起動
関数を管理するキューを設定する。このキューのカレン
トに登録されたアプリケーションが、パケットの受信処
理を終了すると、そのアプリケーションは、受信バッフ
ァを開放して、その時点でキューに対して次に登録して
あるアプリケーションの関数をコールしてカレントを受
け渡すとともに、カレントを受け渡したアプリケーショ
ンは、その後も確立したコネクションを切断しないで維
持する。以下、その実現のためのシステム構成等を順に
説明する。
【0019】〈構成〉再び図1に戻って、この具体例の
システム構成を説明する。図1において、このシステム
は、例えばネットワーク2に接続されたプリンタ装置3
により構成されるものとする。このプリンタ装置3は、
同一ネットワーク内の低レベルのパケット送受信を担当
するNIC(ネットワークインタフェースチップNetwor
k I/F Chip H/W)4とそのNICをソフトウェア的に制
御するドライバ(ハードウェアドライバH/W Driver)5
を備える。
【0020】また、その他に、NIC4やドライバ5を
使用して端点ノード間の通信を制御するプロトコルスタ
ック6と、そのプロトコルスタック6を使用して、より
高度な通信機能を提供するアプリケーション7−1〜7
−2が設けられている。なお、このアプリケーションの
数は任意であるが、ここでは、4つを例示した。さら
に、それぞれのアプリケーションに対して、「印刷デー
タの受信順」と「印刷データの受信処理起動機会」とを
提供するためのキュー(カレントキューCurrentQueue)
11を設けている。
【0021】上記NIC4は、ネットワーク機能を持つ
ノードをネットワークに接続し、パケットの送受信や、
受信パケットの簡単なエラー検知等を可能とするハード
ウェアである。ドライバ5は、NIC4から受信パケッ
トを受け取り、プロトコルスタック6に渡したり、プロ
トコルスタック6から送信パケットを受け取り、NIC
4に渡して送信要求をしたりする処理を行う部分であ
る。プロトコルスタック6は、上記パケット送受信用プ
ロトコルを実行する部分である。
【0022】各アプリケーション7−1〜7−4は、通
常の動作部と印刷データ受信起動部(関数8−1〜8−
4)とから成る。キュー11は、コネクション番号管理
部12と、関数アドレス管理部13とから成る。コネク
ション番号管理部12は、コネクションを識別するため
のコネクション番号を登録して管理する部分である。関
数アドレス管理部13は、各アプリケーションの受信起
動を制御するための印刷データ受信処理起動用関数8−
1〜8−4のアドレスを登録して管理する部分である。
なお、コネクション番号とは、他のノードとの各コネク
ションを各アプリケーションが識別・管理するために内
部的に割り振った識別番号である。
【0023】〈動作〉図4と、図5と、図6とは、図1
のシステムの動作フローチャートを示す。まず、図4を
用いて、キュー11に例えばアプリケーション7−2〜
7−4等が既に登録されて、処理待ち状態にある場合
の、アプリケーション7−1の動作について説明する。
アプリケーション7−1の通常処理部は、NIC4を通
じて印刷パケットを受信した場合に、ステップS1から
ステップS2に進み、キュー11の先頭に他のアプリケ
ーションが既に登録されているかを確認する。ここでは
キュー11に既に4個の登録がある。そこで、キュー1
1を上から検索し、登録されている最後尾に自アプリケ
ーションを追加登録する。図では、コネクション番号
“0”を使用するアプリケーションが、キュー11の先
頭に登録済みで、そのアプリケーションの持つ印刷デー
タ受信起動部(関数)のアドレスXXXXが登録されてい
る。登録位置がカレントの場合、即ち、ただちにその処
理を実行できる場合には、XXXXは登録の必要がない。
【0024】図のキュー11には、続いてコネクション
番号2を使用するアプリケーションの登録があり、コネ
クション番号5を使用するアプリケーションの登録があ
り、最後にコネクション番号6を使用するアプリケーシ
ョンの登録が完了した状態になっている。ここに、アプ
リケーション7−1がコネクション番号7で接続された
とする。この場合、対応する印刷データ受信起動部(関
数)のアドレス1234を、コネクション番号6を使用
するアプリケーションの登録の次に追加する(ステップ
S3)。
【0025】また、ステップS1において印刷パケット
を受信しない待ち状態が継続する場合は、各アプリケー
ション固有の処理となり、これまでに確立したコネクシ
ョンを切断しないように保持するための対応を行う。キ
ュー11のポインタは、キュー11中でのカレントの位
置を示すポインタである。
【0026】続いて、図5を用いてキュー11に他のア
プリケーションからの登録が無い場合のアプリケーショ
ンの動作について説明する。アプリケーションの通常処
理部は、印刷パケットを受信した場合に、ステップS1
からステップS2に進み、キュー11の先頭に既に他の
アプリケーションの登録があるかどうかを確認する。登
録がある場合には、キュー11の先頭に自アプリケーシ
ョンが使用するコネクション番号を登録する。印刷デー
タ受信起動部(関数)アドレスは登録する必要はない
(ステップS3)。この操作によって最優先で受信・印
刷する権利であるカレントが獲得できたので、送信側の
ノードに対して印刷パケットの送信要求を発信し、印刷
データを全て受信する(ステップS4)。受信処理終了
後、キュー11を参照して、自アプリケーションの登録
の次に他のアプリケーションの登録があるかどうかを確
認する(ステップS5)。
【0027】登録がない場合には受信の後処理を行い処
理を終了する(ステップS8)。これで、1ジョブ分の
印刷処理が終了する。他のアプリケーションの登録があ
る場合は、キュー11のポインタを次の登録位置に移動
し(ステップS6)、そのポインタの指す印刷データ受
信起動部(関数)のアドレスを参照しその関数をコール
する(ステップS7)。関数の処理内容は後から説明す
る。その後ステップS8に進み、受信の後処理を行い処
理を終了する。
【0028】受信の後処理とは、受信処理終了後に各ア
プリケーションが行う受信終了処理のことで、受信時に
使用した作業領域の初期化、使用済で不要となったバッ
ファの開放、受信結果(ログ)の保存、受信パケットの
うちの、必要情報の抽出保存などである。
【0029】さらに、図6(a)を用いて、カレントが
獲得できた後のアプリケーションの動作について説明す
る。アプリケーションは、キュー11にそれ以前に登録
されていたアプリケーションの処理が終了してカレント
を獲得すると、印刷パケットを受信する(ステップS
1)。印刷起動は印刷データ受信起動部(関数)によっ
て既に掛けられている。印刷パケット受信が終了する
と、キュー11の2番目に他のアプリケーションの登録
があるか確認する(ステップS2)。
【0030】他のアプリケーションの登録がない場合は
受信の後処理を行い処理を終了する(ステップS5)。
他のアプリケーションの登録がある場合は、キュー11
のポインタを次の登録位置に移動し(ステップS3)、
そのポインタの指す印刷データ受信起動部(関数)のア
ドレスを参照し、その関数をコールする(ステップS
4)。次にステップS5に進んで、受信の後処理を行い
処理を終了する。
【0031】今度は、図6(b)を用いて印刷データ受
信起動部(関数)の動作について説明する。印刷データ
受信起動部(関数)は、キュー11に対して自アプリケ
ーションより1つ先に登録されたアプリケーションが受
信処理を終了すると、そのアプリケーションによる後処
理を行う前に、そのアプリケーションから関数コールさ
れて起動する。
【0032】自アプリケーションがカレントになると、
自アプリケーションが使用しているコネクションを通じ
て送信元のノードに印刷データ送信要求を発信して処理
を終了する(ステップS1)。その後、印刷データの到
着は待たずに本関数のコール元にリターンする(ステッ
プS2)。即ち、印刷データ受信起動部(関数)を関数
コールしたアプリケーションは、その時点でキュー11
に対して自アプリケーションの次に登録してあるアプリ
ケーションにカレントを受け渡したことになる。
【0033】また、カレントを受け渡したアプリケーシ
ョンが、キュー11の2番目以降に別のジョブを実行す
るための登録をしている場合には、送信ノードからの印
刷パケットの送信を一時的に停止させる。やむを得ない
場合を除き、コネクションは切断しないで接続状態を持
続させる。詳細な印刷データの停止方法、コネクション
の維持方法は各アプリケーションおよびアプリケーショ
ンが使用するプロトコルスタックによって異なる。この
時に、コネクションを維持させる目的で受信したパケッ
トやその他の目的で受信したパケットは、即時処理して
受信バッファを開放する。
【0034】このことにより、カレントとなっているア
プリケーションは、受信バッファを最大限に使用でき、
そのシステムにおける最大の速度で印刷パケットを受信
することができる。即ち、カレントを受け渡したアプリ
ケーションが受信バッファを開放した後に次にカレント
を獲得したアプリケーションがその受信バッファを使用
した通信を開始するので、既に図3を用いて説明したよ
うな不具合は生じない。
【0035】図7と図8に、処理時間短縮効果の説明図
を示す。図7において、ステップS1で、ノード1Cの
アプリケーション7−1は、ノード1Aまたは1Bから
印刷パケットを受信する。ここで、一般的な方法により
アプリケーション7−1の受信後処理をしてから、ステ
ップS2で次のアプリケーション7−2が受信要求をす
る。こうして、次のアプリケーション7−2はアプリケ
ーション7−1が受信後処理を開始してからT1時間後
にパケットの受信を終了する。
【0036】一方、図8において、ステップS1で、ノ
ード1Cのアプリケーション7−1は、ノード1Aまた
は1Bから印刷パケットを受信する。ここでは、アプリ
ケーション7−1の受信後処理を開始する前に、ステッ
プS2で次のアプリケーション7−2が受信要求をす
る。従って、次のアプリケーション7−2はアプリケー
ション7−1が受信後処理を開始してからT2時間後に
パケットの受信を終了する。図7の場合と図8の場合と
を比較すると、アプリケーション7−2の受信要求到達
時間中にアプリケーション7−1の受信後処理を実行す
ることができるので、実質的に処理の受け渡しを高速化
できる。もちろん、アプリケーション7−2の受信要求
到達時間とアプリケーション7−1の受信後処理時間と
はいずれが長くても同様の効果がある。
【0037】また、コネクションが確立したアプリケー
ションへの印刷要求はキュー11に登録することにより
待ち行列に入り、コネクションは切断されないでそのま
ま維持されるという方法をとれば、送信元ノードの使用
者は、Windows95(Microsoft社の登録商標)のようなマ
ルチタスクタイプのOS(オペレーティングシステム)
を使用している場合の操作性が良くなる。即ち、一度印
刷要求を出しておけば、プリンタから「使用中/BUSY」
の応答を受けにくくなる。従って、何度も送信依頼をす
る必要がなくなる。
【0038】〈効果〉以上のように、具体例1によれ
ば、例えば、シングルタスクの様なシンプルなOS上に
組み込みを行ったネットワークシステムにおいて、複数
のコネクションを同時に接続し、複数のアプリケーショ
ンからの印刷要求を、バッファを効率的に使用しながら
受け付けることができる。また、複雑なマルチタスクO
S上に組み込みを行ったネットワークシステムにおいて
は、より高速に複数アプリケーションからの印刷要求を
効率的に処理することができる。
【0039】さらに、カレントを獲得したアプリケーシ
ョンへの印刷データ以外のパケットを、受信バッファ内
に保持しないように制御するので、バッファ使用効率も
最大となる。また、受信バッファ中のデータを別のバッ
ファにコピーするような操作性の悪いリングバッファを
使用する必要がなく、制御が容易になる。
【0040】また、カレントでない待機中のアプリケー
ションは、受信したパケットを即時処理してメモリを開
放するので、カレントとなっているアプリケーションは
受信バッファを最大限に使用でき、そのシステムにおけ
る最大の速度でパケットを受信することができる。
【0041】《具体例2》ネットワークに接続されてい
る各ノードがサポートする機能は多様になると、機能間
に処理の優先度差が生じることがある。例えば複数ノー
ドからのパケット受信が、受信側ノード自身の設定の参
照・変更等の要求であった場合、この要求は常に最優先
で処理されるべきである。こうした要求は、予告無く割
込み的に発せられるが、長時間応答を待たせることがで
きない。この場合にも上記の例と同様のフロー制御を行
うと、優先度の低い機能が動作してパケットを受信して
いる時には、受信バッファの空きが得られず、優先度の
高いパケットを受信できない場合が発生する。従来技術
では、機能間に優先度の差を付けるために、OSの機能
を使用したり、優先度の低い機能に対して、優先度の高
い機能が動作を始めたら、処理を譲るように制御してい
る。しかし、この場合、高機能のOSが必要になり、処
理が複雑になる欠点がある。また、印刷要求に対し優先
度を考慮できるシステムの場合、低い優先度で印刷要求
を出した後、高い優先度の要求が多発した場合、低い優
先度の印刷が長時間待たされてしまう。
【0042】そこで、この具体例では、キューに登録さ
れた優先度の低い処理を優先度の高い処理で置き換え、
この優先度の高い処理が終了したのち優先度の低い処理
を元の位置に再登録し直し、続いてこの優先度の低い処
理を実行する。優先度の高い処理を優先させるととも
に、一度後回しにされた優先度の低い処理は、再度後回
しにされることがない。以下に、その具体的な説明を行
う。
【0043】〈構成〉システムの基本的な構成は、図1
に示した具体例1のシステムと同様である。図9には、
具体例2のキューの構造説明図を示す。この(a)に示
す例では、キュー21は、コネクション番号管理部22
と、関数アドレス管理部23と、優先度フラグ管理部2
4とから成る。優先度フラグは、その登録に対し割り込
みを禁止する場合には“1”、割り込みを許す場合には
“0”という内容になるデータである。
【0044】また、(b)には、一時的にそれまでキュ
ー21に登録されていた内容を保持しておくためのバッ
クアップエリア25を示す。このバックアップエリア2
5も、キュー21と同様に、コネクション番号管理部2
6と、関数アドレス管理部27とを備える。優先度フラ
グを保持する必要はないから、優先度フラグ管理部は無
い。
【0045】バックアップエリア25は、優先度が高い
印刷要求によりオーバーラップされた優先度が低い印刷
要求の、キュー21の登録内容を、一時的に退避させて
おく領域で、各アプリケーションが個々に持ち管理する
領域である。
【0046】〈動作〉具体例1と同様に、プリンタ装置
への組み込みを例としてその動作の説明をする。図10
は、具体例2のシステムの動作フローチャートを示す。
この図を使用して、優先度の高い印刷要求がホストから
送信されてきた場合のアプリケーションの処理を説明す
る。アプリケーションは、印刷パケットを受信すると
(ステップS1)、キュー21のポインタが指すカレン
トに、他のアプリケーションの登録があるかどうかを確
認する(ステップS2)。カレントに登録がなければ、
現在何も印刷が行われていないので、優先度の高低は関
係無い。そこで、具体例1と同様にして、キュー21の
カレント位置に自アプリケーションの登録を行う。
【0047】キュー21のポインタが指すカレントに他
のアプリケーションの登録がある場合は、受信した印刷
要求の優先度を確認する(ステップS3)。優先度が高
い場合はキュー21のカレント位置からはじめて、登録
されている項目の優先度フラグを、登録順にチェックす
る。そして最初に優先度フラグが“0”である登録を見
つけたところで検索を終了する。そして、そこに登録さ
れたコネクション番号と印刷データ受信起動部(関数)
の先頭アドレスを、バックアップエリア25にコピーす
る(ステップS4)。
【0048】その後、キュー21のコピー元の位置に、
自アプリケーションの登録を行う(ステップS5)。登
録内容は、コネクション番号、印刷データ受信起動部
(関数)の先頭アドレス、優先度フラグで、優先度フラ
グは固定値“1”を登録する。アプリケーションは、ホ
ストからの印刷データ送信を一時停止させた状態で処理
を終了する。
【0049】図10において、キュー21のポインタが
指すカレントは、たとえ優先度が“0”であっても、優
先度の高い印刷要求の割り込みは行わない。もはや印刷
処理が開始されている可能性が大きいからである。ま
た、図の例では、キュー21の2番目にコネクション番
号2のアプリケーションの登録があるが、優先度フラグ
が“1”で割り込みを禁止しているため、割り込みは行
わない。次のコネクション番号5の登録についても同様
である。
【0050】その次にあるコネクション番号6の登録
は、優先度フラグ“0”となっており、割り込み可能で
あるため、この登録の前に割り込みをする。その手順
は、始めにコネクション番号0と印刷データ受信起動部
(関数)の先頭アドレス“oooo”を自アプリケーション
の持つバックアップエリア25に退避する。
【0051】自アプリケーションの使用するコネクショ
ン番号が9、印刷データ受信起動部(関数)の先頭アド
レスが“xxox”だとすると、キュー21でコネクション
番号6が登録してあった場所にコネクション番号9を、
印刷データ受信起動部(関数)の先頭アドレス“oooo”
が登録してあった場所に“xxox”を、優先度フラグ0の
登録してあった場所に優先度フラグ1を上書きする。
【0052】そして、具体例1で説明したように@キュ
ー21に登録してあるポインタが指すカレントのアプリ
ケーションの受信処理が終了し、ポインタがコネクショ
ン番号2番のアプリケーションに移り、その受信処理が
終了すると、コネクション番号5番の処理に移る。コネ
クション番号5番の受信処理が終了すると、コネクショ
ン番号5番を使用するアプリケーションは次の登録へポ
インタを移すために、印刷データ受信起動部(関数)の
先頭アドレス“xxox”を参照して、その関数をコールす
る。
【0053】次は、割り込みを行ったアプリケーション
がキュー21に入っているので、コネクション番号5番
のアプリケーションが関数コールする印刷データ受信起
動部(関数)の先頭アドレスは“xxox”である。先頭ア
ドレス“xxox”の印刷データ受信起動部(関数)は、割
り込みを行ったコネクション番号9番を使用するアプリ
ケーションへの受信を起動する。
【0054】図11には、具体例2のシステム動作フロ
ーチャート(その2)を示す。この図を使用して、割り
込みをした印刷処理が終了した場合のアプリケーション
の処理を説明する。割り込みを行ったアプリケーション
はステップS1で印刷パケットの受信を終了すると、自
アプリケーションが持つバックアップエリア25を確認
する(ステップS2)。バックアップエリア25に、退
避されている登録がある場合にはその登録内容をキュー
21の自アプリケーションの登録位置に戻す(ステップ
S3)。図では、バックアップエリア25に退避されて
いるコネクション番号6と、印刷データ受信起動部(関
数)の先頭アドレス“oooo”を、キュー21のポインタ
が指す位置のコネクション番号9と、印刷データ受信起
動部(関数)の先頭アドレス“xxox”が登録されている
場所にコピーする。その後バックアップエリア25の内
容は消去する。
【0055】次にカレントにするのは、バックアップエ
リア25から戻したアプリケーションである。キュー2
1のポインタは、次の登録位置へ移さず、そのままにし
ておく。そしてカレント位置に戻した印刷データ受信起
動部(関数)の先頭アドレス“oooo”を関数コールする
(ステップS)。バックアップエリア25に登録が無く
なれば、ステップS2からステップS6に進み具体例1
と同様の処理をする。その後のステップS5の処理も具
体例1と同様である。
【0056】〈効果〉以上詳細に説明したように、この
具体例によれば、フロー制御を目的とする具体例1のキ
ューに、優先度を示すフラグ領域を設定して、優先度を
考慮した印刷処理を実現することができる。また、従来
の優先度を考慮した印刷処理では、優先度の低い印刷要
求に対し優先度の高い要求が殺到すると優先度の低い処
理が完全に停止してしまい、長時間印刷されないという
問題点があったが、この具体例によると、割り込まれた
優先度低の処理は、必ず割り込んだ処理の後に実行され
るため、優先度の低い印刷処理が長時間停止することは
なくなる。
【0057】《具体例3》これまでの具体例では、カレ
ントのアプリケーションにバッファを最大限度まで使用
させた。一方、この具体例では、サポートするアプリケ
ーションの種類を優先度の高いアプリケーショングルー
プ(管理系アプリケーション)と優先度の低いアプリケ
ーショングループ(印刷系アプリケーション)とに分類
し、受信バッファ中に、管理系アプリケーションが使用
可能な容量の限界値BUFLIMIT_ADMIN(管理系用限界値)
と、 BUFLIMIT_PRINT(印刷系用限界値)を設ける。こ
れにより、最優先で処理すべき管理系アプリケーション
の処理のために、受信バッファに所定の空き領域が確保
できる。また、上記管理系限界値と印刷系限界値を動的
に変化させれば、管理系アプリケーションと印刷系アプ
リケーションの処理速度を、状況に応じて最適化でき
る。
【0058】〈構成〉具体例3も、基本的に具体例1と
同一のシステム構成とし、以下の機能を追加する。図1
2には、具体例2による受信バッファの説明図を示す。
図に示すように、この具体例では、受信バッファ31
に、パケット受信時の印刷系用限界値BUFLIMIT_PRINTと
管理系用限界値BUFLIMIT_ADMINを設定し、RAM上にこ
の値を保持する領域を追加する。さらに、印刷系用限界
値BUFLIMIT_PRINTと管理系用限界値BUFLIMIT_ADMINを動
的に計算するためのワーキングエリアAをRAM上に設
ける。ここには、管理系使用頻度係数を格納する。ワー
キングエリアBについては、具体例4で説明する。
【0059】〈動作〉これも具体例1と同様に、プリン
タ装置への組み込みを例とする。具体例1では、プリン
タがサポートするプロトコルの全てが印刷データを受信
することを目的とするアプリケーションであり、具体例
1は、同じプライオリティを持つプロトコル同士が複数
動作する場合のフロー制御である。この具体例では、プ
リンタの設定内容を参照したり、変更したり、印刷状況
の参照等を行うことを目的とするような、管理系アプリ
ケーションを、印刷系のアプリケーションと同時にサポ
ートする場合のフロー制御方法について説明する。
【0060】管理系のアプリケーションは、使用者から
の設定内容の参照・変更といった要求コマンドに対し、
実行中の処理(印刷系アプリケーションの印刷データ受
信)の有無に関係無く即時に応答処理を実行しなければ
ならないと言う点が特徴である。具体例1では、受信バ
ッファ全てを印刷系アプリケーションの使用対象とし、
受信バッファの空き容量を、送信側への送信量リクエス
トサイズとして使用している。本具体例では、図12に
示したように、2種類の限界値をRAM上に設定する。
【0061】印刷系用限界値BUFLIMIT_PRINTは、印刷系
のアプリケーションが送信側への送信量リクエストサイ
ズとして使用する値の最大値である。受信バッファ内に
格納されているパケット容量が、全アプリケーション合
計で印刷系用限界値BUFLIMIT_PRINTよりも少ない場合の
み、印刷系アプリケーションが送信側に対しパケットの
送信を要求することができる。具体例1で説明した方法
と同様に、送信側へのパケットの要求サイズは、印刷系
用限界値BUFLIMIT_PRINTから現在の受信バッファの使用
量を引いた値となる。
【0062】管理系用限界値BUFLIMIT_ADMINは、管理系
のアプリケーションが次の要求コマンドを受け付けるこ
とができる受信バッファサイズの最大値である。管理系
アプリケーションは、受信バッファ内に格納されている
パケット容量が全アプリケーション合計で管理系用限界
値BUFLIMIT_ADMINよりも少ない場合に、使用者からの要
求コマンドを受信できることを使用者へ通知する。
【0063】印刷系アプリケーションの受信限界である
BUFLIMIT_PRINTを、管理系アプリケーションの受信限界
であるBUFLIMIT_ADMINよりも小さい値に取れば、管理系
アプリケーションの処理優先度を印刷系アプリケーショ
ンの処理優先度よりも高めることができる。即ち、2つ
の限界値の関係式は、BUFLIMIT_ADMIN > BUFLIMIT_PRIN
Tとなることが好ましい。
【0064】さらに、プリンタ動作中に上記2つの限界
値を動的に変化させることにより、管理系アプリケーシ
ョンと印刷系アプリケーションの最適な動作関係を実現
できる。
【0065】図13には、コネクション数に応じた限界
値の設定例説明図を示す。図には、管理系用限界値BUFL
IMIT_ADMINと印刷系用限界値BUFLIMIT_PRINTの差(変数
A)を、例示した。この値は、管理系アプリケーション
のコネクションの最大数Nと受信バッファ容量Gとの関
数で表している。
【0066】図14に、具体例3のシステムの動作フロ
ーチャートを示す。まず、一定時間内に受信したBroadc
astパケットや、Multicastパケットの合計パケットサイ
ズを算出して、RAM上の変数Bに代入する(ステップ
S1)。次に受信バッファの全体サイズからステップS
1で求めた変数Bの値を減算し、限界値BUFLIMIT_ADMIN
を求めて、RAM上の変数BUFLIMIT_ADMINに格納する
(ステップS2)。続いて管理系アプリケーションが使
用するコネクション数に応じて、図13に示す値を変数
Aに代入する(ステップS3)。コネクション数が
“0”の時には、100Byteの余裕をとり、管理系アプ
リケーションのコネクションの確立ができるようにす
る。最後に、ステップS2で求めた限界値BUFLIMIT_ADM
INからステップS3で求めた変数Aの値を減算し、RA
M上の変数BUFLIMIT_PRINTに格納する(ステップS
4)。
【0067】以上の手順により、管理系用限界値BUFLIM
IT_ADMINと印刷系用限界値BUFLIMIT_PRINTを動的に決定
する。上記ステップS1で求めた変数Bの内容は、具体
例4の中で説明するため詳細を割愛する。変数Bを用い
ない場合は、管理系用限界値BUFLIMIT_ADMINは受信バッ
ファサイズと同じになる。
【0068】〈効果〉以上詳細に説明したように、具体
例3によれば、受信バッファ中に、印刷系アプリケーシ
ョンの受信限界値と管理系アプリケーションの限界値を
設定し、それを動的に変更することにより、印刷系アプ
リケーションからのパケット受信中であっても、変数A
で設定した部分を使用して、管理系アプリケーションか
らの要求コマンドを処理し応答を返すことができる。ま
た、管理系アプリケーションを使用しない場合も受信バ
ッファを無駄に空けて置くことをせずに、効率的に使用
することができる。
【0069】《具体例4》この具体例では、一定時間毎
に受信したパケット中のブロードキャスト(Broadcas
t)パケットとマルチキャスト(Multicast)パケットの
サイズを全て加算した合計サイズを求め、その合計サイ
ズに相当する記憶領域分(変数B)を受信バッファから
差し引いて、パケット受信用の空きバッファ領域にす
る。
【0070】この具体例も、基本的に具体例1と同様の
システム構成をし、その追加部分を以下に説明する。 〈動作〉ここでも、具体例1と同様に、プリンタ装置へ
の組み込みを例とする。具体例1では、受信バッファ全
てを印刷系アプリケーションが使用対象とし、受信バッ
ファの空き容量を送信側への送信量リクエストサイズと
して使用している。この具体例では、図12に示したよ
うに、受信バッファ中に、受信可能であると送信側に通
知しない領域(変数Bで示す領域)を取る。上記変数B
について次に説明する。
【0071】一般的に、ネットワークの回線上を流れる
パケットは、以下の3種類に分類することができる。 (1)自分宛てのパケット (2)自分以外宛てのパケット (3)自分を含めた集団宛てのパケット(全部へ送るこ
とを目的としたパケットを含む) 変数B(ノイズ係数)は、一定時間内に回線上に流れる
(3)のパケットの総データ量(総バイト数)を示して
いる。
【0072】ネットワークに対してある機器を接続する
ためには、ネットワークインタフェースチップNetwork
Interface Chip(NIC)と呼ばれるH/W(ハードウェ
ア)が必要になるが、このH/Wは上記パケットの分類で
は(1)と(3)のパケットを受信する。印刷データや
管理用要求コマンドは、上記パケットの分類では(1)
であるから、特別な機能を持つアプリケーションをサポ
ートしない限り、分類(3)に該当するものは受信パケ
ット中のノイズであると言える。
【0073】この具体例では、ノイズパケットを一定時
間毎モニタリングして、一定時間毎にノイズ係数を算出
する。具体例3の制御では、管理系用限界値BUFLIMIT_A
DMINは、受信バッファサイズと同じになり、管理系アプ
リケーションは、受信バッファの全空き容量を常に要求
する。しかし、回線上を流れるパケットで受信側のNI
Cが受信するパケットが一時的に受信バッファを広く使
用すると、印刷系アプリケーションが送信側に通知した
受信バッファ量が確保できず、受信されたパケットの一
部を受け溢してしまうこともある。受け溢したパケット
は再送が発生し、ネットワーク中で無駄なパケットの転
送を増加させることになる。
【0074】図15は、具体例4のシステム動作フロー
チャートである。これにより、ノイズ係数の算出方法を
説明する。まず、NICが1パケットを受信する(ステ
ップS1)。NICは受信したことをNICを制御する
ファームウェアに通知する。NICを制御するファーム
ウェアは、受信したパケットがBroadcast(全体宛ての
パケット)か、Multicast(自分を含む集団宛てのパケ
ット)かあるいはそれ以外のパケットかを判断する(ス
テップS2)。BroadcastかあるいはMulticastのいずれ
かのパケットであれば、受信したパケットのサイズをR
AM上に確保した作業用領域である変数Cに加算する
(ステップS3)。そうでない場合は、変数Cには加算
しない。以上のステップS1からステップS3までの処
理を一定時間繰り返し、一定時間経過後変数Cの値をノ
イズ係数である変数Bに代入する。変数Cには“0”を
代入して初期化する。以上の手順によりノイズ係数を一
定時間毎に随時算出する。
【0075】こうして算出したノイズ係数に相当する分
をバッファ上に確保して、これを管理系アプリケーショ
ンが使用する。残りの部分を印刷系アプリケーションが
使用する。これにより、受信バッファの割り当てを最適
化する。一般のネットワークのパケット流通量は、ネッ
トワークのサイズが大きくなる程変化が緩くなるため、
ノイズ係数を更新する時間間隔は、接続するネットワー
クのサイズにより可変とすることが望ましい。ノイズ係
数を更新する時間間隔を固定してもよい。実験によれ
ば、その時間間隔は2秒程度が効率が良いことがわかっ
た。
【0076】〈効果〉以上詳細に説明したように、具体
例4によれば、受信バッファ中にノイズ係数分の空き容
量を設定して管理系アプリケーションのために確保し、
それ以外の部分を印刷系アプリケーションが使用するの
で、回線上を流れるBroadcastパケットやMulticastパケ
ットに影響されずに円滑な受信のフロー制御を行うこと
ができる。また受信バッファの割り当てを最適化するの
で、パケットの再送が起こりにくくなり、使用者が実行
した管理アプリケーション等へのレスポンスが早くなる
という効果がある。さらに、それを動的に変更すること
により、状況に応じた、受信バッファ利用の最適化を図
ることができる。
【図面の簡単な説明】
【図1】具体例1のシステムブロック図である。
【図2】複数のプロトコルを搭載したシステムの説明図
である。
【図3】一般的なシステムの動作シーケンスである。
【図4】図1のシステムの動作フローチャート(その
1)である。
【図5】図1のシステムの動作フローチャート(その
2)である。
【図6】図1のシステムの動作フローチャート(その
3)である。
【図7】処理時間短縮効果の説明図(その1)である。
【図8】処理時間短縮効果の説明図(その2)である。
【図9】具体例2のキュー構造説明図である。
【図10】具体例2のシステムの動作フローチャート
(その1)である。
【図11】具体例2のシステムの動作フローチャート
(その2)である。
【図12】具体例3による受信バッファの説明図であ
る。
【図13】コネクション数に応じた限界値の設定例説明
図である。
【図14】具体例3のシステムの動作フローチャートで
ある。
【図15】具体例4のシステム動作フローチャートであ
る。
【符号の説明】
2 ネットワーク 3 プリンタ装置 4 NIC(ネットワークインタフェースチップNetwor
k I/F Chip H/W) 5 ドライバ(ハードウェアドライバH/W Driver) 6 プロトコルスタック 7−1〜7−2 アプリケーション 11 キュー(カレントキューCurrent Queue)
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 FI H04L 29/06 H04L 13/00 305Z

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数のネットワークプロトコルをサポー
    トするシステムにおいて、 ネットワークからパケットを受信して処理する複数のア
    プリケーションを順に登録して、前記パケットの受信順
    と、受信処理の起動関数を管理するキューを設定し、 このキューのカレントに登録されたアプリケーション
    が、前記パケットの受信処理を終了すると、そのアプリ
    ケーションは、受信バッファを開放して、その時点でキ
    ューに対して次に登録してあるアプリケーションの関数
    をコールしてカレントを受け渡すことを特徴とするフロ
    ー制御方法。
  2. 【請求項2】 請求項1に記載のフロー制御方法におい
    て、 カレントを受け渡したアプリケーションは、その後も確
    立したコネクションを切断しないで維持することを特徴
    とするフロー制御方法。
  3. 【請求項3】 請求項1に記載のフロー制御方法におい
    て、 キューに登録された優先度の低い処理を優先度の高い処
    理で置き換え、 この優先度の高い処理が終了したのち優先度の低い処理
    を元の位置に再登録し直し、続いてこの優先度の低い処
    理を実行することを特徴とするフロー制御方法。
  4. 【請求項4】 請求項1に記載のフロー制御方法におい
    て、 サポートするアプリケーションの種類を優先度の高いア
    プリケーショングループと優先度の低いアプリケーショ
    ングループとに分類し、優先度の高いアプリケーション
    グループが使用可能な容量の限界値を、優先度の低いア
    プリケーショングループが使用可能な容量の限界値より
    大きくなるように、受信バッファの容量を設定して、そ
    の限界値を、コネクション数に応じて動的に変更するこ
    とを特徴とするフロー制御方法。
  5. 【請求項5】 請求項1に記載のフロー制御方法におい
    て、 一定時間毎に受信したパケット中のブロードキャスト
    (Broadcast)パケットとマルチキャスト(Multicast)
    パケットのサイズを全て加算した合計サイズを求め、そ
    の合計サイズに相当する記憶領域分を受信バッファから
    差し引いて、パケット受信用の空きバッファ領域にする
    ことを特徴とするフロー制御方法。
JP10155230A 1998-05-20 1998-05-20 フロー制御方法 Pending JPH11327938A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10155230A JPH11327938A (ja) 1998-05-20 1998-05-20 フロー制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10155230A JPH11327938A (ja) 1998-05-20 1998-05-20 フロー制御方法

Publications (1)

Publication Number Publication Date
JPH11327938A true JPH11327938A (ja) 1999-11-30

Family

ID=15601383

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10155230A Pending JPH11327938A (ja) 1998-05-20 1998-05-20 フロー制御方法

Country Status (1)

Country Link
JP (1) JPH11327938A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338353A (ja) * 2005-06-02 2006-12-14 Sony Corp 情報処理装置および情報処理方法、並びにプログラム
JP2010182242A (ja) * 2009-02-09 2010-08-19 Canon Inc 画像形成装置、その制御方法およびプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338353A (ja) * 2005-06-02 2006-12-14 Sony Corp 情報処理装置および情報処理方法、並びにプログラム
WO2006137242A1 (ja) * 2005-06-02 2006-12-28 Sony Corporation 情報処理装置および情報処理方法、並びにプログラム
US8028114B2 (en) 2005-06-02 2011-09-27 Sony Corporation Information processing apparatus, method, and program for simplifying an interrupt process
JP2010182242A (ja) * 2009-02-09 2010-08-19 Canon Inc 画像形成装置、その制御方法およびプログラム
US8665474B2 (en) 2009-02-09 2014-03-04 Canon Kabushiki Kaisha Method, system, apparatus and medium for minimizing unnecessary processing associated with connection/disconnection of a same host

Similar Documents

Publication Publication Date Title
JP3384686B2 (ja) 通信ネットワークから情報を受信するための方法および装置
US5386512A (en) System for deriving and testing mutual capability set after receiving updated capability from other processors and before requesting service information
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
JP3553634B2 (ja) 相互接続インターフェース
EP2645674A1 (en) Interrupt management
US20020087710A1 (en) Exposing a bridged network as a single virtual segment
JP2002538729A (ja) 高速ネットワーク環境において割込みを抑止する方法および装置
JP3127523B2 (ja) 通信制御装置およびデータ送信方法
US7564860B2 (en) Apparatus and method for workflow-based routing in a distributed architecture router
JPH10308791A (ja) データ通信方法、データ通信装置、およびデータ通信プログラム記録媒体
JP2002518765A (ja) 通信コントローラメッセージングシステム
JPH117434A (ja) 複数ノードの非同期データ通信システム内で早期到達メッセージを処理するシステム
WO2007074343A2 (en) Processing received data
JPH11327938A (ja) フロー制御方法
US9619005B2 (en) Apparatus and method for saving power of USB device
JP3189269B2 (ja) ネットワークプリンタ
US9948533B2 (en) Interrupt management
US20010025324A1 (en) Data communication method and apparatus, and storage medium storing program for implementing the method and apparatus
JP3163526B2 (ja) Lanのブロードキャストフレーム処理方法および装置
JP3799741B2 (ja) バスコントローラ
JP2820942B2 (ja) 通信プロトコル処理方法
JP3023339B2 (ja) メッセージ着信通知方法及びシステム
JP2746207B2 (ja) 緊急用バッファ確保方式
JP3879701B2 (ja) 最大受信バッファサイズ拡張方式
JP3623727B2 (ja) 通信方法