(57)【要約】【課題】ネットワーク処理における応答性の向上及び、ネットワーク上に無駄なパケットを送信する事を減らす事を目的とする。【解決手段】ＩＰタスク中にＴＣＰ用、ＵＤＰ用という用に上位プロトコル毎にメッセージキューを用意し、ネットワークドライバタスク中で受信したパケットの中のＩＰプロトコル番号を参照し、それぞれのプロトコル毎に用意されているメッセージキューにメッセージを送信する。またＴＣＰ送信動作時にＴＣＰ受信用メッセージキューを検索し、キューに入っているメッセージの内容を調べる事が出来る。【選択図】        図１
2004186967.tif 000002
【特許請求の範囲】
【請求項１】
イーサネット（Ｒ）（Ｒ）タスクからＩＰプロトコルにメッセージを送信する時に、ＴＣＰプロトコル・ＵＤＰプロトコルなど、ＩＰプロトコルの上位のプロトコル毎に受信用メッセージキューが用意されている事を特徴とするネットワークプロトコルソフトウェア。
【請求項２】
ネットワークドライバが、受信パケットのＩＰプロトコル番号を参照し、上位プロトコル毎に用意されている受信メッセージキューにメッセージを送信する事を特徴とするネットワークプロトコルソフトウェア。
【請求項３】
ＴＣＰプロトコル送信部分が、ＡＣＫが到着していない為にデータの再送を行なう処理の中で、ＴＣＰプロトコル受信部分への受信メッセージキューを検索し、受信メッセージキュー内にＡＣＫがあった時は送信動作を中断する事を特徴とするネットワークプロトコルソフトウェア。
【請求項４】
ＴＣＰプロトコル送信部分が、ＡＣＫを送信する処理を行なっている時に、ＴＣＰプロトコル受信部分への受信メッセージキューを検索し、他にもＡＣＫを送信する必要がある場合にはまとめてＡＣＫを送信するように制御を変更する特徴とするネットワークプロトコルソフトウェア。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はネットワークプロトコルソフトウェアを用いて取り扱う情報機器に関するものである。
【０００２】
【従来の技術】
本発明のネットワークのプロトコルソフトウェアを用いて取り扱う情報機器のソフトウェアの構成方法において、ライブラリとして実現する方法，ユーザーモードとカーネルモードがメモリのアクセスなどにおいて完全に区別して実行するようなＯＳにおいては、そのカーネル内に実装するなど様々な提案や実装が行なわれてきた。
【０００３】
例えば「ＵＮＩＸ（Ｒ）  ＮＥＴＷＯＲＫ  ＰＲＯＧＲＡＭＭＩＮＧ／Ｗ．Ｒｉｃｈａｒｄ  Ｓｔｅｖｅｎｓ著（ＩＳＢＮ  ０−１３−９４９８７６−１）」など、多くの書物にその実装に関する解説が見られる。
【０００４】
例えば、ネットワークプロトコルを個々のタスクとして生成し、タスク間のメッセージパッシングを行なう事によって送受信を行なうネットワークプロトコルソフトウェアなどが存在する。
【０００５】
しかし、ネットワークプロトコル個々をタスクとして生成し、タスク間をメッセージパッシングで行ない送受信を行なう構成にしたネットワークプロトコルソフトウェアでは、ネットワークプログラムのメンテナンス性は向上するが、メッセージパッシングが頻繁に行なわれる為に動作スピードが低下してしまうという問題があった。
【０００６】
また送受信毎にタスクを構成した場合、受信時にＴＣＰプロトコル用のメッセージもＵＤＰプロトコル用のメッセージも同じメッセージキューで扱われてしまう為、実際にそれらのメッセージが上位プロトコル毎に分野を行なうという処理を行なった後でないと、どのプロトコル用のメッセージか解らない為、送信側のタスクなど、他のプロトコルやタスクから利用する事が困難であるという問題があった。
【０００７】
【発明が解決しようとする課題】
受信されたメッセージを早期にプロトコル毎に分離を行ない、ここのプロトコル毎にメッセージキューに貯める構成と、送信側の同じプロトコルからメッセージキューを参照する構成にする事により、ネットワーク処理における応答性の向上及び、ネットワーク上に無駄なパケットを送信する事を減らす事を目的とする。
【０００８】
【課題を解決する為の手段】
ＩＰタスクにおいてＴＣＰ用，ＵＤＰ用という様にＩＰプロトコルの上位プロトコル毎にメッセージキューを用意し、ネットワークドライバタスクの受信動作の中で受信したパケットの中のＩＰプロトコル番号を参照し、それぞれのプロトコル毎に用意されているメッセージキューにメッセージを送信する構成にした。また、ＴＣＰ送信動作時に、ＴＣＰ受信用メッセージキューを検索し、キューに入っているメッセージの内容を調べる事が出来る構成とした。これにより送信時にＴＣＰプロトコルが無駄なでＣＰパケットを送信する事が無くなり、ネットワークを高速に処理する事が可能となる。
【０００９】
【発明の実施の形態】
（第一の実施例）
図１に本発明の特徴をあらわす図を示す。図１は本発明のネットワーク構成図で、それぞれのブロックはネットワークプロトコルであり、点線で囲まれた部分はタスクである。１０１の点線内部はユーザータスクを表している。その中でブロックである１０２はユーザーが実行しているプログラムである。１０３はソケットライブラリである。１０４はＴＣＰの送信処理を行なうでＣＰプロトコル送信処理部である。１０５はＵＤＰの送信処理を行なうＵＤＰ送信処理部である。１０６はＩＰの送信処理を行なうＩＰ送信処理部である。１０７はユーザータスクからイーサネット（Ｒ）（Ｒ）タスクへ送信されるメッセージである。１０８の点線はイーサネット（Ｒ）（Ｒ）タスクを表している。１０９はイーサネット（Ｒ）（Ｒ）ドライバ内の送信処理部である。１１０はイーサネット（Ｒ）ドライバ内の受信処理部である。１１１はイーサネット（Ｒ）（Ｒ）ドライバ内の割り込み処理部分である。１１２は物理イーサネット（Ｒ）（Ｒ）である。１１３はイーサネット（Ｒ）（Ｒ）タスクからＩＰタスクに送信されるＴＣＰタスク用のメッセージである。１１４はイーサネット（Ｒ）（Ｒ）タスクからＩＰタスクの上位にあるＵＤＰタスク用のメッセージである。１１５はＩＰタスクである。１１６はＩＰの受信処理を行なっているＩＰ受信処理部である。１１７はＴＣＰの受信処理を行なっているＴＣＰ受信処理部である。１１８はＵＤＰの受信処理を行なっているＵＤＰ受信処理部である。１１９はソケットライブラリである。１２０はＩＰタスクからユーザータスクに送信されるメッセージである。
【００１０】
なおこの例ではライブラリとして実装されているソケットインターフェース、及びネットワークプロトコルであるＴＣＰ／ＩＰについては、先に挙げた「ＵＮＩＸ（Ｒ）  ＮＥＴＷＯＲＫ  ＰＲＯＧＲＡＭＭＩＮＧ／Ｗ．Ｒｉｃｈａｒｄ  Ｓｔｅｖｅｎｓ著（ＩＳＢＮ  ０−１３−９４９８７６−１）」にも記述がなされている。ソケットライブラリはネットワークを使用する為の関数群である。
【００１１】
次に今回の実施例で使用されているネットワークパケットに関して図２，図３を用いて説明を行なう。
【００１２】
図２はＴＣＰを使用する場合のネットワークパケットの図である。２０５はユーザータスクが送受信を行なうデータ部、２０４はネットワークのＴＣＰ層が行なう処理によって付加されるＴＣＰヘッダ、２０３はネットワークのＩＰ層が行なう処理によって付加されるＩＰヘッダ、２０２はネットワークの物理層が行なう処理により付加される物理層のヘッダで、例えばイーサネット（Ｒ）ヘッダやＰＰＰ（Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｐｒｏｔｏｃｏｌ）ヘッダである。
【００１３】
図３はＵＤＰを使用する場合のネットワークパケットの図である。３０５はユーザータスクが送受信を行なうデータ部、３０４はネットワークのＵＤＰ層が行なう処理によって付加されるＵＤＰヘッダ、３０３はネットワークのＩＰ層が行なう処理によって付加されるＩＰヘッダ、３０２はネットワークの物理層が行なう処理により付加される物理層のヘッダで、例えばイーサネット（Ｒ）ヘッダやＰＰＰ（Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ  Ｐｒｏｔｏｃｏｌ）ヘッダである。
【００１４】
本発明のネットワークソフトウェアはＴＣＰ（１０４），ＵＤＰ（１０５），ＩＰ（１０６）がユーザープログラムと一緒にユーザータスクという一つのタスクとして構成されている。また、各タスク間でのデータの授受はメッセージパッシング方式を用いて行なわれる。イーサネット（Ｒ）タスクなどネットワーク下位層のネットワークタスクはメッセージパッシングが到着する事、もしくは割り込みが発生するのを待ち、そのメッセージが到着すると、もしくは割り込みが発生するとそのメッセージや割り込みに応じた処理を行なうように構成されている。
【００１５】
では次に送信時の動作について図１，図４，図５を用いて説明を行なう。送信動作を開始（４０１）した時にユーザータスク（１０１）内のユーザープログラム（１０２）はネットワークソケットライブラリ（１０３）を用いてデータの送信を行なうように指示する（４０２）。ソケットライブラリ（１０３）は送信するメッセージを作成（４０３）しＴＣＰ送信処理部（１０４）に渡す。この時、ＴＣＰ送信処理部（１０４）は、ＴＣＰ受信部のメッセージキュー（１１３）の検索（４０４）を行なう。ここで、これから送信するメッセージにおいてＡＣＫが帰ってきていないパケットに対する再送だった場合、まだＴＣＰ受信処理部に取り込まれていないメッセージの中にＡＣＫが有るか検索を行ない、受信メッセージの中にそのＡＣＫが含まれていた場合には、現在送信しようとしていたメッセージの送信を停止し後処理を行なう（４１１）。そして、これから再送するメッセージのＡＣＫが含まれていない場合や、これから送信するメッセージが再送で無い場合には、メッセージを受け取ったＴＣＰ送信処理部送信内容によって所定の処理を行なった後にＴＣＰヘッダを送信するメッセージに付加を行ない（４０６）ＩＰ送信処理部（１０６）に渡す。そしてＩＰ送信処理部（１０６）はＴＣＰ送信処理部（１０４）から渡されたメッセージにＩＰヘッダを付け足し（４０７）、そのメッセージをイーサネット（Ｒ）タスク（１０８）に渡す（４０８）。その後、ＩＰ送信処理部（１０６）は送信後の後処理（４０９）を行ない、送信動作を終了する（４１０）。
【００１６】
その後、イーサネット（Ｒ）タスク（１０８）の中のイーサネット（Ｒ）送信部分（１０９）がＩＰタスクから送信されたメッセージ（１０７）を受け取りイーサネット（Ｒ）ヘッダを付加し（５０２）、物理イーサネット（Ｒ）（１１２）にデータの送信（５０３）を行なう。
【００１７】
以上のような動作によって送信が行われる。全体的な説明の為、データの信頼性を確保する為のＴＣＰ処理、ＴＣＰタスクやＩＰタスクでの複数のネットワークインターフェースが接続されている場合のＩＰアドレスによるインターフェースの切り替え制御、イーサネット（Ｒ）アドレスとＩＰアドレスの対応を得る為のＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）の処理など細かい説明については記述していない。
【００１８】
次に受信時の動作については図１，図６，図７を用いて説明を行なう。
【００１９】
イーサネット（Ｒ）チップ（１１２）はパケットを受信（６０１）した時にイーサネット（Ｒ）受信割り込みを発生させる。イーサネット（Ｒ）タスク（１０８）はその割り込みを受け、その割り込みに応じた割り込み処理を開始する。イーサネット（Ｒ）パケットを受信したイーサネット（Ｒ）タスク（１０８）は、まずイーサネット（Ｒ）ヘッダを除去（６０２）し、ネットワーク上位のプロトコルに渡す為の準備（６０３）を行なう。この時、イーサネット（Ｒ）タスクで、受信したパケットのＩＰプロトコル番号を検索（６０４）し、この受信したパケットはＩＰプロトコルより上位のプロトコルのどれに対するパケットなのかを判定（６０５）し、それぞれのプロトコル用に用意されているメッセージキューに対してメッセージを送信する（６０６）（６０７）。これにより、ＴＣＰ用に用意されたメッセージキューにはＴＣＰ用のメッセージが溜まる事となる。
【００２０】
次にＩＰタスク（１１５）はイーサネット（Ｒ）タスク（１０８）から受信メッセージを受け取り（７０１）、ＩＰプロトコル受信部（１１６）が自分宛てのメッセージか判断を行ない（７０２）、自分宛てでない場合には受信データを破棄（７０８）し以下の処理を中断する。自分宛てだった場合にはＩＰヘッダを除去（７０３）し、ＴＣＰ受信処理部（１１７）に渡す。ＴＣＰ受信処理部はもらったメッセージからＴＣＰヘッダを除去（７０５）しユーザータスクに対してメッセージを送信する（７０５）。その後に送信後の処理（７０６）を行なった後に送信動作を終了（７０７）する。
【００２１】
ここで今回対象となっているＴＣＰプロトコルのパケットの送受信について述べる。ＴＣＰプロトコルはパケットを送信した場合、所定時間以内に相手からＡＣＫが返答される事によってやり取りが成立しているのでが、パケットを送信してから所定時間までにＡＣＫの返答を検知していない場合、相手側に自分が送信したパケットが到達していないと判断し、同じパケットを再送する仕組みになっている。
【００２２】
その為、今までの構成ではネットワーク処理に時間がかかってしまい、所定時間までにパケットを受信していた場合でもＴＣＰ受信部で処理が終わっていない場合、ＡＣＫが到着していないと判断され再度パケットを送信してしまうという問題が発生していた。また、その為にパケットを再送する時に事前に受信用のメッセージキューを参照しようと試みても、受信用メッセージキューが一つか用意されていない為に、その受信メッセージキューの中に他のプロトコル用の受信パケットと混在していおり、ＴＣＰ用のメッセージの検索を行なう事が出来ずにいた。
【００２３】
そこで、この実施例では受信メッセージをイーサネット（Ｒ）タスクが受信した段階で、受信したパケット内のＩＰプロトコル番号を検索し、すぐにそれぞれのプロトコル毎に設けられている受信メッセージキューに分類を行ない、以降の処理を行なう事によって、送信用のＴＣＰプロトコルから受信用ＴＣＰプロトコル宛てに来ている受信メッセージだけの検索を行なう事が可能となり、上記問題を解決する事が出来るようになり、ネットワーク上に無駄なパケットを送信する事が無くなり、より高連なネットワークを構築する事が可能となる。
【００２４】
（その他の実施例）
次に本発明の第二の実施例を述べる。この実施例では、全体の構成図である図１、送信処理の後半部の図５受信処理である図６，図７は実施例１と同じである為、この実施例の特徴を表す図を図８のみ説明を行なう。
【００２５】
その他の実施例における送信時の動作について図１，図８を用いて説明を行なう。送信動作を開始（８０１）した時にユーザータスク（１０１）内のユーザープログラム（１０２）はネットワークソケットライブラリ（１０３）を用いてデータの送信を行なうように指示する（８０２）。ソケットライブラリ（１０３）は送信するメッセージを作成（８０３）しＴＣＰ送信処理部（１０４）に渡す。
【００２６】
メッセージを受け取ったＴＣＰ送信処理部はＴＣＰヘッダを送信するメッセージに付加を行ない（８０４）ＩＰ送信処理部（１０６）に渡す。そしてＩＰ送信処理部（１０６）はＴＣＰ送信処理部（１０４）から渡されたメッセージにＩＰヘッダを付け足し（８０５）、そのメッセージをイーサネット（Ｒ）タスク（１０８）に渡す（８０６）。そこで、送信したメッセージがＡＣＫの送信だった場合には、ＴＣＰ受信部のメッセージキュー（１１３）の検索（８０７）を行ないそのメッセージキューの中にＡＣＫの送信を行なう必要の有るメッセージが含まれていた場合（８０８）には、メッセージ作成部分（８０３）に戻り、再度ＡＣＫ返答用のメッセージの作成を行なう。そしてすべてのＡＣＫ返答のメッセージを送信し終わった後に、送信後の後処理（８０９）を行ない、送信動作を終了する（８１０）。
【００２７】
上記の用にＴＣＰ受信処理部のメッセージを検索する機構と、ＡＣＫ送信時にまとめてＡＣＫを送信する機構を用意しておく事によって、ＡＣＸの返答に対するスピードアップがはかれる事となり、ネットワークの処理の後れによって相手側からのパケットの再送が起こってしまう可能性が減り、ネットワーク中に無駄なパケットが流れる事を減らすことが可能となる。
【００２８】
【発明の効果】
以上実施例で説明したようにＴＣＰ、ＵＤＰ等のプロトコルが個々に受信用にメッセージキューを用意しておく。イーサネット（Ｒ）タスクにおいて受信したパケットのＩＰパケット番号を検索しそれぞれのプロトコル毎に用意されているメッセージキューにメッセージを送信する。ＡＣＫ到着していない為にＴＣＰが再送の処理を行なっている時に、ＴＣＰ受信用メッセージキューの中のメッセージを検索しＡＣＫが検出された時には再送を取り止める。ＴＣＰがＡＣＫを送信する時にＴＣＰ受信用メッセージキューの中のメッセージを検索し他にもＡＣＫを送信する必要があるメッセージを検出した場合には、同時にＡＣＫをまとめて送信してしまう。
【００２９】
これらの構成に、必要のない再送が発生する機会が減り、また早期にＡＣＸを返す為に他のホストから無駄に再送されたパケットを受信する機会が減る事により、ネットワークの処理の負荷を低減し、より高速なネットワーク処理が可能となる。
【図面の簡単な説明】
【図１】本発明におけるネットワークの構成図である。
【図２】ＴＣＰパケットの構成図である。
【図３】ＵＰＤパケットの構成図である。
【図４】図１におけるユーザータスクが送信動作を行なう時のフローチャートである。
【図５】図１におけるイーサネット（Ｒ）タスクが送信動作を行なう時のフローチャートである。
【図６】図１におけるイーサネット（Ｒ）タスクが受信動作を行なう時のフローチャートである。
【図７】図１におけるＩＰタスクが受信動作を行なう時のフローチャートである。
【図８】実施例２におけるユーザータスクが送信動作を行なう時のフローチャートである。
【符号の説明】
１０１  ユーザータスク（ソケットライブラリを含む）
１０２  ユーザープログラム
１０３  ソケットライブラリ
１０４  ＴＣＰ送信制御部
１０５  ＵＤＰ送信制御部
１０６  ＩＰ送信制御部
１０７  ユーザータスクからイーサネット（Ｒ）タスクへのメッセージ
１０８  イーサネット（Ｒ）タスク
１０９  イーサネット（Ｒ）送信動作部
１１０  イーサネット（Ｒ）受信動作部
１１１  イーサネット（Ｒ）割り込み動作部
１１２  物理イーサネット（Ｒ）
１１３  イーサネット（Ｒ）タスクからＴＣＰ受信動作部へのメッセージ
１１４  イーサネット（Ｒ）タスクからＵＤＰ受信動作部へのメッセージ
１１５  ＩＰタスク
１１６  ＩＰ受信動作部
１１７  ＴＣＰ受信動作部
１１８  ＵＤＰ受信動作部
１１９  ソケットライブラリ
１２０  ＩＰタスクからユーザータスクへのメッセージ
２０１  ＴＣＰパケット構成図
２０２  パケットのイーサネット（Ｒ）ヘッダ部
２０３  パケットのＩＰヘッダ部
２０４  パケットのＴＣＰヘッダ部
２０５  パケットのユーザーデータ部
３０１  ＵＤＰパケット構成図
３０２  パケットのイーサネット（Ｒ）ヘッダ部
３０３  パケットのＩＰヘッダ部
３０４  パケットのＵＤＰヘッダ部
３０５  パケットのユーザーデータ部
【図１】
2004186967.tif 000003
【図２】
2004186967.tif 000004
【図３】
2004186967.tif 000005
【図４】
2004186967.tif 000006
【図５】
2004186967.tif 000007
【図６】
2004186967.tif 000008
【図７】
2004186967.tif 000009
【図８】
2004186967.tif 000010