JP4809679B2 - ストリームデータ通信方法及びストリームデータ通信装置 - Google Patents

ストリームデータ通信方法及びストリームデータ通信装置 Download PDF

Info

Publication number
JP4809679B2
JP4809679B2 JP2006003442A JP2006003442A JP4809679B2 JP 4809679 B2 JP4809679 B2 JP 4809679B2 JP 2006003442 A JP2006003442 A JP 2006003442A JP 2006003442 A JP2006003442 A JP 2006003442A JP 4809679 B2 JP4809679 B2 JP 4809679B2
Authority
JP
Japan
Prior art keywords
protocol stack
stream
memory area
data
stream data
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
JP2006003442A
Other languages
English (en)
Other versions
JP2007189296A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2006003442A priority Critical patent/JP4809679B2/ja
Publication of JP2007189296A publication Critical patent/JP2007189296A/ja
Application granted granted Critical
Publication of JP4809679B2 publication Critical patent/JP4809679B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ストリームデータの通信方法及びストリームデータの通信装置に関し、特に、チェックサム計算モジュール及びソケット類似のプロトコルスタックを用いたバス帯域の浪費防止及びプロセッサ処理負荷の浪費防止に適用して有効な技術に関するものである。
今般、PC(Personal Computer)だけでなく、ビデオレコーダ等のAV(Audio/Visual)機器を含め様々な組込み機器にも、通信機能が搭載されてきている。それらの機器が採用している通信機能に関する代表的な物理インタフェース及びデータリンク層プロトコルの規格として、Ethernet(登録商標)やIEEE(Institute of Electrical and Electronic Engineers)802.3の有線LAN(Local Area Network)規格や、IEEE802.11の無線LAN規格がある。又、ネットワーク層プロトコルとして、IAB(Internet Architecture Board)によりRFC(Request For Comments)791で定義されているIP(Internet Protocol)規格があり、又、トランスポート層プロトコルとしてRFC791で定義されているTCP(Transmission Control Protocol)規格や、RFC768で定義されているUDP(User Datagram Protocol)規格がある。
ネットワーク層プロトコル及びトランスポート層プロトコル等の機能を合わせ持ったネットワーク制御ソフトウェア群は一般にプロトコルスタックと称され、それらの機器が採用するOS(Operating System)によってプロトコルスタックは異なってくる。例えばUNIX(登録商標)系のOSには、カーネルにプロトコルスタックが標準搭載されていることが多い。一方、通信に標準対応していないOSについても、通信機器の開発メーカ・製造メーカに向けた、そのOSに対して通信機能を提供するためのプロトコルスタック製品が販売・提供されていることが多い。そのため、多様な仕様から成る各プロトコル機能を組み合わせた標準規格に則した通信機能を有する機器を開発・製造することは、今般は比較的困難ではなくなってきている。
プロトコルスタックの代表的なAPI(Application Program Interface)仕様として、非特許文献1や非特許文献2に示されるソケットがある。
図10は、代表的なソケットAPI仕様を有するプロトコルスタックにおける、TCPプロトコル通信のAPI関数呼び出し順を示す図であり、図11は、代表的なソケットAPI仕様を有するプロトコルスタックにおける、UDPプロトコル通信のAPI関数呼び出し順を示す図である。いずれの図も、右半分がサーバ側を示しており、左半分がクライアント側を示している。これら図に示した関数は一般的な表記であるが、他の一般的な表記としてwrite関数1006の代わりにsend関数と表記することもあり、又read関数1005の代わりにrecv関数と表記することもある。
socket関数1001は、TCPプロトコル通信/UDPプロトコル通信や、サーバ/クライアント等の属性を持つソケットを生成する。bind関数1002は、ソケットにポート番号等の属性を与える。listen関数1003は通信相手からの接続を待つ。connect関数1011は通信相手に接続を要求する。accept関数1004は通信相手からの接続を受け入れる。write関数1006及びsendto関数1106は通信相手にデータを送り、一方、read関数1005及びrecvfrom関数1105は通信相手からのデータを受ける。close関数1007はソケットを閉じる。
ソケットAPI仕様を有するプロトコルスタックとそれを用いるアプリケーションプログラムのTCPによるデータ送信時の働きについて、通信相手の指定や接続の確立・切断の手続き等については省略し、特に送信データの流れ(write関数1006の働きの詳細)に着目して説明すると、次の送信ステップ1〜5のようになる。
[送信ステップ1]アプリケーションプログラムは、アプリケーションプログラム自身が(OSのメモリ管理機能を用いて)確保済の第1のメモリ領域に、送信すべきデータを格納(準備)する。
[送信ステップ2]アプリケーションプログラムは、プロトコルスタックに対して第1のメモリ領域を指定しながらwrite関数1006を呼び出し送信指示する。
[送信ステップ3]プロトコルスタックは、プロトコルスタック自身が(OSのメモリ管理機能を用いて)確保済の第2のメモリ領域にアプリケーションプログラムから指定された第1のメモリ領域のデータをコピーし、更にそのデータのチェックサム値を計算する。ここにチェックサム値の計算は、対象とするデータは同一であるため、コピーと同時に行うことも可能である。
[送信ステップ4]プロトコルスタックは、得られたチェックサム値を用いてTCPヘッダ等のプロトコルヘッダを生成する。
[送信ステップ5]プロトコルスタックは、通信相手に対して、生成したプロトコルヘッダとともに第2のメモリ領域のデータを送信する。
又、ソケットAPI仕様を有するプロトコルスタックとそれを用いるアプリケーションプログラムのTCPによるデータ受信時の働きについて、通信相手の指定や接続の確立・切断の手続き等については省略し、特に受信データの流れ(read関数1005の働きの詳細)に着目して説明すると、次の受信ステップ1〜5のようになる。
[受信ステップ1]プロトコルスタックは、プロトコルスタック自身が(OSのメモリ管理機能を用いて)確保済の第3のメモリ領域に、通信相手からの受信データを格納する。
[受信ステップ2]アプリケーションプログラムは、プロトコルスタックに対してアプリケーションプログラム自身が(OSのメモリ管理機能を用いて)確保済の第四のメモリ領域を指定しながらread関数1005を呼び出し受信指示する。
[受信ステップ3]プロトコルスタックは、アプリケーションプログラムから指定された第四のメモリ領域に第3のメモリ領域のデータをコピーし、更にそのデータのチェックサム値を計算する。ここにチェックサム値の計算は、対象とするデータは同一であるため、コピーと同時に行うことも可能である。
[受信ステップ4]プロトコルスタックは、得られたチェックサム値と受信TCPヘッダに含まれるチェックサム値が整合していることを確認すると、アプリケーションプログラムに知らせる。
[受信ステップ5]アプリケーションプログラムは、第四のメモリ領域のデータを利用する。
尚、以上のソケットAPI仕様を有するプロトコルスタックとそれを用いるアプリケーションプログラムのTCPによるデータ受信時の働きにおいて、上記受信ステップ1と2は、通信相手からの受信データの到着タイミングによっては前後することもある。
このようにデータの送受信に際して、ソケットAPI仕様を有するプロトコルスタックを用いたアプリケーションプログラムは、準備した送信データが格納されたメモリ領域を指定しながら送信関数を呼び出したり、後ほど利用するための受信データを格納すべきメモリ領域を指定しながら受信関数を呼び出したりするだけでよい。そのためソケットAPI仕様を有するプロトコルスタックは、アプリケーションプログラムが負担・配慮しなければならないことが少ない体系として完成しており、機器やOSの種別に関わらず広く利用されている。
"Test Page. Yoshifumi Tanaka",[online],[2005年10月11日検索],インターネット<URL:http://kansai.anesth.or.jp/gijutu/c++/man−socket.php> Michael J. Donahoo、Kenneth L. Calvert共著、小高 知宏訳,「TCP/IPソケットプログラミング C言語編」,オーム社,2003年
しかしながら、前述のソケットAPI仕様のプロトコルスタックでは、データ送信時はアプリケーションプログラムが確保したメモリ領域からプロトコルスタックが確保したメモリ領域への、データ受信時はプロトコルスタックが確保したメモリ領域からアプリケーションプログラムが確保したメモリ領域への、チェックサム計算を伴うデータコピーが発生する。これにより、そのデータが流れるバス帯域の浪費を導き、又、その処理を行うプロセッサの処理負荷の浪費を導くという問題があった。
そこで、本発明の目的は、アプリケーションプログラムとプロトコルスタックの間のチェックサム計算を伴うデータコピーを発生させずに送受信することで、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成するストリームデータ通信方法及びストリームデータ通信装置を提供することにある。
本発明のストリームデータ通信方法及びストリームデータ通信装置においては、チェックサム計算モジュールを有し、ストリームデータが入力されるストリームインタフェースと、ストリームデータを送信する通信インタフェースと、アプリケーションプログラムとプロトコルスタックとで構成されるプログラムが記憶されるメモリと、プログラムを処理するプロセッサとを備え、チェックサム計算モジュールを利用してチェックサム値を計算し、アプリケーションプログラムとプロトコルスタックで利用するメモリを共有化し、送信時にはアプリケーションプログラムが準備した送信すべきデータをプロトコルスタックがコピーすることなく通信インタフェースに指示して送信し、受信時には通信インタフェースがネットワークを介して受信するデータをプロトコルスタックがコピーすることなくアプリケーションプログラムが利用することを最も主要な特徴とする。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
本発明によれば、アプリケーションプログラムとプロトコルスタックの間のチェックサム計算を伴うデータコピーが発生せずに送受信可能なため、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成するという利点がある。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。尚、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
(実施の形態1)
<ストリームデータ通信装置の構成>
図1により、本発明の実施の形態1に係るストリームデータ通信装置の構成について説明する。図1は本発明の実施の形態1に係るストリームデータ通信装置の構成を示す構成図であり、ストリームデータの送信を行う構成である。
図1において、ストリームデータ通信装置101は、各種のデータ演算や判断等のデータ処理を行うプロセッサ111と、データを記憶するメモリ112と、データの送信及び受信を行う通信インタフェース113と、ストリームデータの入力及び出力を行うストリームインタフェース114を備える。プロセッサ111とメモリ112と通信インタフェース113とストリームインタフェース114とは、内バス116を介して接続されている。
プロセッサ111と通信インタフェース113とストリームインタフェース114はそれぞれ、特にメモリ112へのアクセスについては内バス116を主導する(バスマスタである)。ストリームインタフェース114は、チェックサム計算を行うチェックサム計算モジュール115を備える。
更に、ストリームデータ通信装置101は、通信インタフェース113に接続された通信ケーブル121を介して、LAN或いはインターネットといったネットワーク122に接続されている。ネットワーク122には図示していない通信相手が存在し、ストリームデータ通信装置101はその通信相手と通信可能な状態である。
更に、ストリームデータ通信装置101は、外バス131を介してストリーマ132と接続されている。ストリーマ132は、図示していない記憶装置からその記憶装置に格納されているストリームデータを入手したり、或いはその記憶装置にストリームデータを格納したり、或いは図示していないチューナからストリームデータを受けたり、或いはストリームデータを処理して映像データや音声データを生成し、図示していないディスプレイに映像データを、図示していないスピーカに音声データを送ったりすること等が可能である。ストリームデータ通信装置101は、ストリーマ132からストリームデータが入力され、ストリーマ132へストリームデータを出力する。
<ストリームデータ通信装置のストリームデータ通信方法>
次に、図2及び図3により、本発明の実施の形態1に係るストリームデータ通信装置のストリームデータ通信方法について説明する。図2は本発明の実施の形態1に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートであり、ストリームデータを送信する場合の動作を示している。図3は本発明の実施の形態1に係るストリームデータ通信装置のストリームデータ通信方法においてストリームデータを送信する場合のメモリ内のデータ配置を示す図である。
まず、プロセッサ111は、メモリ112が記憶している3種類のプログラム、すなわちアプリケーションプログラム301、及びプロトコルスタック302、及び図示していないOS(カーネル)に従って動作している。
以下では、プロセッサ111という語句の代わりにプロセッサ111で処理中のプログラム(アプリケーションプログラム301、又はプロトコルスタック302)を語句として用い、ストリームデータを送信する場合におけるストリームデータ通信装置101の動作について説明する。
まず、ステップ1(201)において、アプリケーションプログラム301は、ストリームインタフェース114に対して、ストリーマ132から入力されるストリームデータのチェックサム値を計算しつつそのストリームデータを第1のメモリ領域311に格納することを指示する。それによって、ストリームインタフェース114は、入力されるストリームデータのチェックサム値をチェックサム計算モジュール115を用いて計算しつつそのストリームデータを第1のメモリ領域311に格納する。
次に、ステップ2(202)において、アプリケーションプログラム301は、プロトコルスタック302に対して、ステップ1(201)において、チェックサム計算モジュール115が計算したチェックサム値と第1のメモリ領域311を指定して送信指示する。
すなわち、アプリケーションプログラム301は、ステップ1(201)において、チェックサム計算モジュール115が計算したチェックサム値と第1のメモリ領域311を指定して、プロセッサ111の次の処理としてプロトコルスタック302の送信処理へと移す。
次に、ステップ3(203)において、指示を受けたプロトコルスタック302は、指定されたチェックサム値を用いて、指定された第1のメモリ領域311に格納されているストリームデータを通信に供させるためのデータ(プロトコルヘッダ)を生成して、第2のメモリ領域312に格納する。
一般に、プロトコルヘッダとは、例えば、TCPプロトコルによる通信の場合はMAC(Media Access Control)ヘッダ、IPヘッダ、及びTCPヘッダであり、又、例えば、UDPプロトコルによる通信の場合はMACヘッダ及びIPヘッダ及びUDPヘッダである。IPv6プロトコルによる通信の場合はそれらIPヘッダは実際にはIPv6ヘッダである。
TCPヘッダには必須として、UDPヘッダには選択可能として、送信すべきデータとプロトコルヘッダの構成要素の一部(ポート番号等)のチェックサム値を格納する部分がある。ステップ3(203)では、指定された第1のメモリ領域311に格納されたデータを読み出すことなく、指定されたチェックサム値を利用してその値とプロトコルヘッダの構成要素の一部とのチェックサム値を計算して、TCPヘッダ或いはUDPヘッダに格納するチェックサム値とする。
次に、ステップ4(204)において、プロトコルスタック302は、通信インタフェース113に対して、第2のメモリ領域312と第1のメモリ領域311それぞれに格納されているデータを一連の送信データとして送信することを指示する。それによって通信インタフェース113は、指定された第2のメモリ領域312と第1のメモリ領域311に格納されているそれぞれのデータを一連の送信データとして、通信ケーブル121、ひいてはネットワーク122、ひいては通信相手へと送信する。
次に、プロトコルスタック302は、送信完了を認識すると、ステップ5(205)において、アプリケーションプログラム301に対して送信完了したことを知らせる。
最終的にステップ5(205)において、アプリケーションプログラム301が送信完了を知った後には、アプリケーションプログラム301は、第1のメモリ領域311を(OSのメモリ管理機能を用いて)解放、或いは別用途に用いて別データを再格納することが可能であるし、或いはステップ1(201)から再開して第1のメモリ領域311に次に送信すべきストリームデータを再格納することも可能である。
逆に、送信完了を知る前には、アプリケーションプログラム301が第1のメモリ領域311の解放や再格納することは制限される。第1のメモリ領域311に格納されているストリームデータが通信インタフェース113からの送信前に、或いは通信相手からの受信応答の確認前に破壊されてしまうと、アプリケーションプログラム301が意図した送信すべきストリームデータを送信、或いは再送信できなくなるためである。
但し、前述した送信完了とは、受信側が正常受信したという意味に限定されるものではなく、信頼性の提供が不要な通信では、例えば通信インタフェース113が送信している最中に通信ケーブル121で信号が衝突したことによる送信エラーを送信完了と見なす等も可能である。
尚、以上ではアプリケーションプログラム301が単一のストリームデータを単一の送信データとして送信する、言わば基本的な流れを説明したが、ストリームデータ通信方法はこれに限定されるものではない。
例えば、ステップ1(201)において、アプリケーションプログラム301は逐次入力されるストリームデータのそれぞれのチェックサム値を計算しつつそれぞれのストリームデータを複数のメモリ領域それぞれに格納するように指示し、ステップ2(202)において、アプリケーションプログラム301はそれぞれのチェックサム値と対応するメモリ領域を指定して、それぞれ送信指示し、ステップ3(203)において、プロトコルスタック302は対応するプロトコルヘッダをそれぞれ生成し、ステップ4(204)において、プロトコルスタック302はそれぞれのプロトコルヘッダ及び対応するストリームデータを合わせた一連のデータそれぞれを指定しつつ送信指示し、ステップ5(205)において、プロトコルスタック302は送信完了したものから知らせる、等の実施も可能である。
又、上述ではステップ2(202)において、アプリケーションプログラム301がプロトコルスタック302にチェックサム値を知らせるとしたが、これは明示的なものではなく、暗黙的な実施も可能である。すなわち、例えば、ステップ1(201)において、チェックサム計算モジュール115が計算したチェックサム値をストリームインタフェース114が、例えば第1のメモリ領域311の直後のメモリ領域に格納することを決まり事としておけば、ステップ2(202)において、アプリケーションプログラム301がプロトコルスタック302にチェックサム値を明示的に知らせなくても、ステップ3(203)では、プロトコルスタック302は第1のメモリ領域311の直後のメモリ領域を読み出した値をチェックサム値として利用する、等の実施も可能である。
尚、プロトコルスタック302は、既存のAPI仕様を有するプロトコルスタックを簡単に修正することによって実施することが可能である。すなわち、図10及び図11に示した公知の代表的なソケットAPI仕様を有するプロトコルスタックのAPI関数において、write関数1006或いはsendto関数1106は、ソケットとデータ(メモリ領域)だけを与えられるのではなく、そのデータのチェックサム値も与えられて、ステップ3(203)〜ステップ5(205)を実行するように修正すればよい。
それに対応するアプリケーションプログラム301は、ステップ1(201)において、ストリームデータを通信に供するサイズ毎に分割してそれぞれのチェックサム値をチェックサム計算モジュール115を用いて計算し(そのようにストリームインタフェース114に指示し)、ステップ2(202)において、メモリ領域と合わせて得られたチェックサム値も指定してそれら関数を呼び出すように修正すればよい。
そして、アプリケーションプログラム301とプロトコルスタック302との間でフラグを予め共有し、アプリケーションプログラム301がそれら関数の呼び出しの前にそのフラグを初期化しておき、プロトコルスタック302はステップ5(205)において、そのフラグの値を変更すれば、そのフラグの値をアプリケーションプログラム301が観測することにより、プロトコルスタック302がアプリケーションプログラム301に対して送信完了したことを知らせることが可能である。
ステップ5(205)において、プロトコルスタック302がアプリケーションプログラム301に対して送信完了したことを知らせる他の方法は、アプリケーションプログラム301へコールバックする関数を登録するための新規のAPI関数をプロトコルスタック302に予め用意し、コールバック関数(イベントリスナー)をアプリケーションプログラム301に予め用意し、アプリケーションプログラム301はそのAPI関数を用いてそのコールバック関数を予め登録し、プロトコルスタック302がステップ5(205)において、その関数を呼び出せばよい。
ステップ5(205)において、プロトコルスタック302がアプリケーションプログラム301に対して送信完了したことを知らせる更なる他の方法は、アプリケーションプログラム301が割り込み処理の関数を予め用意し、プロトコルスタック302がステップ5(205)において、その割り込み処理の関数に対応する割り込み要求を発生させればよい。
以上説明したストリームデータ通信方法及びストリームデータ通信装置によれば、アプリケーションプログラムとプロトコルスタックの間のチェックサム計算を伴うデータコピーは発生せずにストリームデータを送信可能なため、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成する。
尚、本実施の形態のストリームインタフェース114は、図示していないタイムスタンプ挿入モジュールを備えることが可能である。タイムスタンプ挿入モジュールは、ストリーマ132からストリームインタフェース114に入力されるストリームデータに対して、所定のサイズ毎に(相対的な)時間データ(タイムスタンプ)を挿入する。
この場合、以前の説明では、ストリーマ132からストリームインタフェース114に入力されるストリームデータのを除く全ての「ストリームデータ」を「タイムスタンプが挿入されたストリームデータ」と読み替えれば実施可能である。こうすることで、通信相手(受信側)でこのタイムスタンプ値を参照することにより、ストリーマ132からの入力と相対的な時間が等しいタイミングで通信相手はストリームデータを扱うことが可能となる。
又、本実施の形態のストリームインタフェース114は、図示していない暗復号化モジュールを備えることが可能である。暗復号化モジュールは、ストリーマ132からストリームインタフェース114に入力される暗号化されたストリームデータを復号して元のストリームデータに戻す。
この場合、以前の説明では、ストリーマ132からストリームインタフェース114に入力される(暗号化された)「ストリームデータ」のみを「暗号化されたストリームデータ」と読み替えれば実施可能である。こうすることで、外バス131を流れるストリームデータが暗号化されることになり、外バス131が攻撃されることによるストリームデータの不正な複製等を避けることが可能となる。
又、暗復号化モジュールは、ストリーマ132からストリームインタフェース114に入力されるストリームデータを暗号化する。この場合、以前の説明では、ストリーマ132からストリームインタフェース114に入力されるストリームデータを除く全ての「ストリームデータ」を「暗号化されたストリームデータ」と読み替えれば実施可能である。こうすることで、通信相手(受信側)までのネットワーク122を流れるストリームデータが暗号化されることになり、ネットワーク122が攻撃されることによるストリームデータの不正な複製等を避けることが可能となる。
(実施の形態2)
<ストリームデータ通信装置の構成>
図4により、本発明の実施の形態2に係るストリームデータ通信装置の構成について説明する。図4は本発明の実施の形態2に係るストリームデータ通信装置の構成を示す構成図であり、ストリームデータの受信を行う構成である。
図4において、実施の形態1で説明した図1と符号が同じ部位の働きの概要は、実施の形態1と同じであるため、ここでは説明を省く。
ストリームデータ通信装置401は、プロセッサ111と、メモリ112と、データの送信及び受信を行う通信インタフェース413と、ストリームデータの入力及び出力を行うストリームインタフェース414を備える。プロセッサ111とメモリ112と通信インタフェース413とストリームインタフェース414とは、内バス116を介して接続されている。
プロセッサ111と通信インタフェース413とストリームインタフェース414はそれぞれ、特にメモリ112へのアクセスについては内バス116を主導する(バスマスタである)。通信インタフェース413は、チェックサム計算を行うチェックサム計算モジュール415を備える。
<ストリームデータ通信装置のストリームデータ通信方法>
次に、図5及び図6により、本発明の実施の形態2に係るストリームデータ通信装置のストリームデータ通信方法について説明する。図5は本発明の実施の形態2に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートであり、ストリームデータを受信する場合の動作を示している。図6は本発明の実施の形態2に係るストリームデータ通信装置のストリームデータ通信方法においてストリームデータを受信する場合のメモリ内のデータ配置を示す図である。
まず、プロセッサ111は、メモリ112が記憶している3種類のプログラム、すなわちアプリケーションプログラム601、及びプロトコルスタック602、及び図示していないOS(カーネル)に従って動作している。
以下では、プロセッサ111という語句の代わりにプロセッサ111で処理中のプログラム(アプリケーションプログラム601、又はプロトコルスタック602)を語句として用い、ストリームデータを受信する場合におけるストリームデータ通信装置401の動作を説明する。
まず、ステップ1(501)において、プロトコルスタック602は、通信インタフェース413に対して、図示していない通信相手からの受信データのチェックサム値を計算しつつその受信データを第1のメモリ領域611に格納することを指示する。それによって通信インタフェース413は、通信相手からの受信データのチェックサム値をチェックサム計算モジュール415を用いて計算しつつその受信データを第1のメモリ領域611に格納する。
尚、ステップ1(501)において、チェックサム計算モジュール415は、受信データのうち、プロトコルヘッダが常に存在する最初の所定サイズのデータを無視し、残りの部分のチェックサム値を計算するようにも実施可能である。又、チェックサム計算モジュール415は、受信データのうち、プロトコルヘッダが拡張されていないか解釈して適切なサイズのデータを無視するようにも実施可能である。更に、チェックサム計算モジュール415は、TCPヘッダやUDPヘッダに格納されるチェックサム値の計算に参照されるプロトコルヘッダの構成要素の一部(ポート番号等)は無視せずに、プロトコルヘッダ以外の部分と合わせてチェックサム値を計算するようにも実施可能である。
次に、ステップ2(502)において、プロトコルスタック602は、第1のメモリ領域611に格納されたデータのうち通信に供させるためのデータ(プロトコルヘッダ)612を解釈して、残りのデータが格納された第2のメモリ領域613を抽出(認識)しつつ、ステップ1(501)において、チェックサム計算モジュール415が計算したチェックサム値も用いてアプリケーションプログラム601が扱うべき適切なデータかどうかを判定する。
すなわち、プロトコルヘッダ612に含まれるアドレスとストリームデータ通信装置401のネットワークアドレスが整合しているか、或いはプロトコルヘッダ612に含まれるポート番号とアプリケーションプログラム601のポート番号が整合しているか、或いはプロトコルヘッダ612に含まれるTCPヘッダ或いはUDPヘッダに格納されているチェックサム値と、プロトコルヘッダ612の構成要素の一部(ポート番号等)と第2のメモリ領域613に格納されているデータから計算されるチェックサム値が整合しているか、等である。このチェックサム値の整合性の判定では、第2のメモリ領域613に格納されたデータを読み出すことなく、ステップ1(501)によって得られたチェックサム値を利用する。
この判定によって、ストリームデータ通信装置401が扱うべきデータではないことを(他の通信装置へのデータ、或いは破損したと推定されるデータである等と)認識すると、プロトコルスタック602は第1のメモリ領域611に格納されたデータを廃棄(無視)する。又、プロトコルスタック602が扱うべきデータであると認識すると、プロトコルスタック602は対応した処理を行う。又、アプリケーションプログラム601ではない他のアプリケーションプログラムが扱うべきデータであると認識すると、プロトコルスタック602は以降のステップを対応するアプリケーションプログラムのために行う。
図示していないが、アプリケーションプログラム601が扱うべきデータであると認識された場合のみ、次のステップ3(503)に進み、他の場合は本説明においてはステップ1(501)に戻る。
更に、ステップ3(503)において、アプリケーションプログラム601は、プロトコルスタック602に対して、受信指示する。
ここに、ステップ1(501)とステップ2(502)とステップ3(503)は、ステップ1(501)とステップ2(502)の順序は変わらないものの、アプリケーションプログラム601の受信指示タイミングと通信相手からの受信データの到着タイミングによっては、図5に示した順序に関わらず前後することもある。
すなわち、ステップ1(501)の後にステップ3(503)が続き、その後にステップ2(502)が続くこともあれば、ステップ3(503)の後にステップ1(501)が続き、その後にステップ2(502)が続くこともある。
次に、ステップ4(504)において、プロトコルスタック602は、アプリケーションプログラム601に対して、アプリケーションプログラム601が扱うべきストリームデータが格納されている第2のメモリ領域613を知らせる。
次に、ステップ5(505)において、アプリケーションプログラム601は、ストリームインタフェース414に対して、知らされた第2のメモリ領域613に格納されているストリームデータをストリーマ132に出力することを指示する。
それによってストリームインタフェース414は、第2のメモリ領域613に格納されているストリームデータをストリーマ132に出力する。
次に、アプリケーションプログラム601は、出力完了を認識すると、ステップ6(506)において、プロトコルスタック602に対して利用完了したことを知らせる。
最終的にステップ6(506)においてプロトコルスタック602が利用完了を知った後には、プロトコルスタック602は、第2のメモリ領域613を(OSのメモリ管理機能を用いて)解放、或いは別用途に用いて別データを再格納することができるし、或いはステップ1(501)から再開して第1のメモリ領域611に次の受信データを再格納することもできる。逆に利用完了を知る前には、プロトコルスタック602が第2のメモリ領域613の解放や再格納することは制限される。
尚、以上ではアプリケーションプログラム601が単一の受信データに含まれる単一のストリームデータを利用する、言わば基本的な流れを説明したが、ストリームデータ通信方法はこれに限定されるものではない。例えば、ステップ1(501)においてプロトコルスタック602は逐次受信される複数の受信データのそれぞれのチェックサム値を計算しつつそれぞれの受信データを複数のメモリ領域それぞれに格納するように指示し、ステップ2(502)においてプロトコルスタック602はそれぞれのメモリ領域に格納されたデータに対して解釈及び抽出及び判定し、ステップ3(503)においてアプリケーションプログラム601は複数回受信指示し、ステップ4(504)においてプロトコルスタック602は複数のメモリ領域を知らせ、ステップ5(505)においてアプリケーションプログラム601は複数のメモリ領域に格納されたストリームデータそれぞれを出力することを指示し、ステップ6(506)においてアプリケーションプログラム601は利用完了したものから知らせる、等の実施も可能である。
尚、プロトコルスタック602は、既存のAPI仕様を有するプロトコルスタックを簡単に修正することによって実施することが可能である。すなわち、プロトコルスタック602は、ステップ1(501)において、受信データのチェックサム値をチェックサム計算モジュール415を用いて計算し(そのように通信インタフェース413に指示し)、ステップ2(502)におけるプロトコルヘッダ612の構成要素の一部(ポート番号等)と第2のメモリ領域613に格納されているデータから計算されるチェックサム値の計算を、第2のメモリ領域613に格納されたデータを読み出すことなく、ステップ1(501)によって得られたチェックサム値を利用するように修正すればよい。
又、図10及び図11に示した公知の代表的なソケットAPI仕様を有するプロトコルスタックのAPI関数において、read関数1005或いはrecvfrom関数1105は、アプリケーションプログラムが扱うべきデータを格納すべきメモリ領域が与えられるのではなく、アプリケーションプログラムが扱うべきデータが格納されたメモリ領域を与えるように修正すればよい。
それに対応するアプリケーションプログラム601は、それら関数によって与えられるメモリ領域に格納されたデータを利用するように修正すればよい。
そして、アプリケーションプログラム601とプロトコルスタック602との間でフラグを予め共有し、プロトコルスタック602がそれら関数に対応する処理から抜ける前にそのフラグを初期化しておき、アプリケーションプログラム601はステップ6(506)において、そのフラグの値を変更すれば、そのフラグの値をプロトコルスタック602が観測することにより、アプリケーションプログラム601がプロトコルスタック602に対して利用完了したことを知らせることが可能である。
ステップ6(506)において、アプリケーションプログラム601がプロトコルスタック602に対して利用完了したことを知らせる他の方法は、新規のAPI関数をプロトコルスタック602に予め用意し、アプリケーションプログラム601がステップ6(506)において、その関数を呼び出せばよい。
ステップ6(506)において、アプリケーションプログラム601がプロトコルスタック602に対して利用完了したことを知らせる更なる他の方法は、プロトコルスタック602が割り込み処理の関数を予め用意し、アプリケーションプログラム601がステップ6(506)において、その割り込み処理の関数に対応する割り込み要求を発生させればよい。
以上説明したストリームデータ通信方法及びストリームデータ通信装置によれば、プロトコルスタックとアプリケーションプログラムの間のチェックサム計算を伴うデータコピーは発生せずにストリームデータを受信可能なため、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成する。
尚、本実施の形態のストリームインタフェース414は、図示していないタイムスタンプ削除モジュールを備えることが可能である。タイムスタンプ削除モジュールは、通信相手(送信側)によって(相対的な)時間データ(タイムスタンプ)が挿入されたストリームデータに対して、そのタイムスタンプ値を参照することによって相対的な時間が等しいタイミングで、タイムスタンプを削除したストリームデータをストリーマ132に出力する。
この場合、以前の説明では、ストリームインタフェース414がストリーマ132に出力するストリームデータを除く全ての「ストリームデータ」を「タイムスタンプが挿入されたストリームデータ」と読み替えれば実施可能である。こうすることで、通信相手(送信側)がこのタイムスタンプを挿入したのと相対的な時間が等しいタイミングで、ストリームデータをストリーマ132に出力することが可能となる。
又、本実施の形態のストリームインタフェース414は、図示していない暗復号化モジュールを備えることが可能である。暗復号化モジュールは、ストリームインタフェース114がストリーマ132に出力するデータを暗号化する。この場合、以前の説明では、ストリームインタフェース414がストリーマ132に出力する「ストリームデータ」のみを「暗号化されたストリームデータ」と読み替えれば実施可能である。こうすることで、外バス131を流れるストリームデータが暗号化されることになり、外バス131が攻撃されることによるストリームデータの不正な複製等を避けることが可能となる。
又、暗復号化モジュールは、通信相手(送信側)によって暗号化されたストリームデータを復号して元のストリームデータに戻す。この場合、以前の説明では、ストリームインタフェース414がストリーマ132に出力するストリームデータを除く全ての「ストリームデータ」を「暗号化されたストリームデータ」と読み替えれば実施可能である。こうすることで、通信相手(受信側)からのネットワーク122を流れるストリームデータが暗号化されることになり、ネットワーク122が攻撃されることによるストリームデータの不正な複製等を避けることが可能となる。
(実施の形態3)
<ストリームデータ通信装置の構成>
図7により、本発明の実施の形態3に係るストリームデータ通信装置の構成について説明する。図7は本発明の実施の形態3に係るストリームデータ通信装置の構成を示す構成図であり、ストリームデータの送受信を行う構成である。
図7において、実施の形態1及び2で説明した図1及び図4と符号が同じ部位の働きの概要は、実施の形態1及び2と同じであるため、ここでは説明を省く。
ストリームデータ通信装置701は、プロセッサ111と、メモリ112と、データの送信及び受信を行う通信インタフェース113と、ストリームデータの入力及び出力を行うストリームインタフェース414と、チェックサム計算を行うチェックサム計算モジュール715を備える。
プロセッサ111とメモリ112と通信インタフェース113とストリームインタフェース414とチェックサム計算モジュール715とは、内バス116を介して接続されている。プロセッサ111と通信インタフェース113とストリームインタフェース414とチェックサム計算モジュール715とはそれぞれ、特にメモリ112へのアクセスについては内バス116を主導する(バスマスタである)。
<ストリームデータ通信装置のストリームデータ通信方法>
次に、図8により、本発明の実施の形態3に係るストリームデータ通信装置のストリームデータ通信方法について説明する。図8は本発明の実施の形態3に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートであり、ストリームデータを送信する場合の動作を示している。尚、本実施の形態のストリームデータを受信する場合のメモリ内のデータ配置は、実施の形態1で示した図3と同じであり、それを用いて説明する。
以下では、プロセッサ111という語句の代わりにプロセッサ111で処理中のプログラム(アプリケーションプログラム301、又はプロトコルスタック302)を語句として用い、ストリームデータを送信する場合におけるストリームデータ通信装置701の動作を説明する。
まず、ステップ1(801)において、アプリケーションプログラム301は、ストリームインタフェース414に対して、ストリーマ132から入力されるストリームデータを第1のメモリ領域311に格納することを指示する。それによってストリームインタフェース414は、入力されるストリームデータのチェックサム値をチェックサム計算モジュール115を用いて計算しつつそのストリームデータを第1のメモリ領域311に格納する。
次に、ステップ2(802)において、アプリケーションプログラム301は、プロトコルスタック302に対して、第1のメモリ領域311を指定して送信指示する。
次に、ステップ3(803)において、プロトコルスタック302は、チェックサム計算モジュール715に対して、指定された第1のメモリ領域311に格納されているデータのチェックサム値を計算することを指示する。それによってチェックサム計算モジュール715は、第1のメモリ領域311に格納されているデータをメモリ112から読み出し、そのチェックサム値を計算する。
次に、ステップ4(804)において、得られたチェックサム値を用いて、指定された第1のメモリ領域311に格納されているストリームデータを通信に供させるためのデータ(プロトコルヘッダ)を生成して、第2のメモリ領域312に格納する。ステップ4(804)では、第1のメモリ領域311に格納されたデータを読み出すことなく、ステップ3(803)によって得られたチェックサム値を利用してその値とプロトコルヘッダの構成要素の一部とのチェックサム値を計算して、TCPヘッダ或いはUDPヘッダに格納するチェックサム値とする。
残りのステップ5(805)及びステップ6(806)はそれぞれ、図2に示す実施の形態1におけるステップ4(204)及びステップ5(205)と同じであるため、ここでは説明を省く。
尚、以上ではアプリケーションプログラム301が単一のストリームデータを単一の送信データとして送信する、言わば基本的な流れを説明したが、ストリームデータ通信方法はこれに限定されるものではない。
例えば、ステップ1(801)において、アプリケーションプログラム301は逐次入力されるそれぞれのストリームデータを複数のメモリ領域それぞれに格納するように指示し、ステップ2(802)において、アプリケーションプログラム301はそれぞれのメモリ領域を指定して、それぞれ送信指示し、ステップ3(803)において、プロトコルスタック302は指定されたそれぞれのメモリ領域に格納されているデータのチェックサム値をそれぞれ計算することを指示し、ステップ4(804)において、プロトコルスタック302は対応するプロトコルヘッダをそれぞれ生成する、等の実施も可能である。
尚、プロトコルスタック302は、既存のAPI仕様を有するプロトコルスタックを簡単に修正することによって実施することが可能である。すなわち、図10及び図11に示した公知の代表的なソケットAPI仕様を有するプロトコルスタックのAPI関数において、write関数1006或いはsendto関数1106は、それが呼ばれるとステップ3(803)〜ステップ6(806)を実行するように修正すればよい。
そして、ステップ6(806)においてプロトコルスタック302がアプリケーションプログラム301に対して送信完了したことを知らせる方法は、実施の形態1におけるステップ5(205)と同じであるため、ここでは説明を省く。
以上説明したストリームデータ通信方法及びストリームデータ通信装置によれば、アプリケーションプログラムとプロトコルスタックの間のチェックサム計算を伴うデータコピー(メモリからの読み出し及びメモリへの書き込み)は発生せずにストリームデータを送信可能である。チェックサム計算を伴うデータのメモリからの読み出しのみは全てのストリームデータに対して発生するものの、チェックサム計算は主にプロセッサが行うのではなくチェックサム計算モジュールが行う。よって、実施の形態1と比べれば劣ると考えられるものの、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成する。
尚、本実施例のストリームインタフェース414は、図示していないタイムスタンプ挿入モジュールや、図示していない暗復号化モジュールを備えることが可能であり、その機能を利用してその効果を得ることが実施可能であることは、実施の形態1におけるストリームインタフェース114と同じであるため、ここでは説明を省く。
(実施の形態4)
<ストリームデータ通信装置の構成>
実施の形態3におけるストリームデータ通信装置の構成は、実施の形態3で示した図7と同じでありそれを用いて説明する。働きの概要は、実施の形態3と同じであるため、ここでは説明を省く。
<ストリームデータ通信装置のストリームデータ通信方法>
次に、図9により、本発明の実施の形態4に係るストリームデータ通信装置のストリームデータ通信方法について説明する。図9は本発明の実施の形態3に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートであり、ストリームデータを受信する場合の動作を示している。尚、本実施の形態のストリームデータを受信する場合のメモリ内のデータ配置は、実施例実施の形態2で示した図6と同じでありそれを用いて説明する。
以下では、プロセッサ111という語句の代わりにプロセッサ111で処理中のプログラム(アプリケーションプログラム601、又はプロトコルスタック602)を語句として用い、ストリームデータを受信する場合におけるストリームデータ通信装置701の動作を説明する。
まず、ステップ1(901)において、プロトコルスタック602は、通信インタフェース113に対して、図示していない通信相手からの受信データを第1のメモリ領域611に格納することを指示する。それによって通信インタフェース113は、通信相手からの受信データを第1のメモリ領域611に格納する。
次に、ステップ2(902)において、プロトコルスタック602は、第1のメモリ領域611に格納されたデータのうち通信に供させるためのデータ(プロトコルヘッダ)612を解釈して、残りのデータが格納された第2のメモリ領域613を抽出(認識)しつつ、アプリケーションプログラム601が扱うべき適切なデータかどうかを判定する。
すなわち、プロトコルヘッダ612に含まれるアドレスとストリームデータ通信装置701のネットワークアドレスが整合しているか、或いはプロトコルヘッダ612に含まれるポート番号とアプリケーションプログラム601のポート番号が整合しているか、等である。尚、ステップ2(902)ではチェックサム値の整合性の判定は行わない。
この判定によって、ストリームデータ通信装置701が扱うべきデータではないことを(他の通信装置へのデータ、或いは破損したと推定されるデータである等と)認識すると、プロトコルスタック602は第1のメモリ領域611に格納されたデータを廃棄(無視)する。又、プロトコルスタック602が扱うべきデータであると認識すると、プロトコルスタック602は対応した処理を行う。
又、アプリケーションプログラム601ではない他のアプリケーションプログラムが扱うべきデータであると認識すると、プロトコルスタック602は以降のステップを対応するアプリケーションプログラムのために行う。図示していないが、アプリケーションプログラム601が扱うべきデータであると認識された場合のみ、次のステップ3(903)に進み、他の場合は本説明においてはステップ1(901)に戻る。
次に、ステップ3(903)において、プロトコルスタック602は、チェックサム計算モジュール715に対して、抽出された第2のメモリ領域613に格納されているデータのチェックサム値を計算することを指示する。それによってチェックサム計算モジュール715は、第2のメモリ領域613に格納されているデータをメモリ112から読み出し、そのチェックサム値を計算する。
次に、ステップ4(904)において、プロトコルスタック602は、プロトコルヘッダ612に含まれるTCPヘッダ或いはUDPヘッダに格納されているチェックサム値と、プロトコルヘッダ612の構成要素の一部(ポート番号等)と第2のメモリ領域613に格納されているデータから計算されるチェックサム値が整合しているかを判定する。ステップ4(904)では、第2のメモリ領域613に格納されたデータを読み出すことなく、ステップ3(903)によって得られたチェックサム計算モジュール715が計算したチェックサム値を利用する。
更に、ステップ5(905)において、アプリケーションプログラム601は、プロトコルスタック602に対して、受信指示する。
ここに、ステップ1(901)〜ステップ4(904)とステップ5(905)は、ステップ1(901)〜ステップ4(904)の順序は変わらないものの、アプリケーションプログラム601の受信指示タイミングと通信相手からの受信データの到着タイミングによっては、図9に示した順序に関わらず前後することもある。
残りのステップ6(906)〜ステップ8(908)は、それぞれ、実施の形態2におけるステップ4(504)〜ステップ6(506)と同じであるため、ここでは説明を省く。
尚、以上ではアプリケーションプログラム601が単一の受信データに含まれる単一のストリームデータを利用する、言わば基本的な流れを説明したが、ストリームデータ通信方法はこれに限定されるものではない。
例えば、ステップ1(901)において、プロトコルスタック602は逐次受信される複数の受信データを複数のメモリ領域それぞれに格納するように指示し、ステップ2(902)において、プロトコルスタック602はそれぞれのメモリ領域に格納されたデータに対して解釈及び抽出及び判定し、ステップ3(903)において、プロトコルスタック602は指定されたそれぞれのメモリ領域に格納されているデータのチェックサム値をそれぞれ計算することを指示し、ステップ4(904)において、プロトコルスタック602はそれぞれのメモリ領域に格納されたデータに対して正当性を判定し、ステップ5(905)において、アプリケーションプログラム601は複数回受信指示する、等の実施も可能である。
尚、プロトコルスタック602は、既存のAPI仕様を有するプロトコルスタックを簡単に修正することによって実施することが可能である。すなわち、プロトコルスタック602は、ステップ3(903)において、チェックサム値をチェックサム計算モジュール715を用いて計算し(そのようにチェックサム計算モジュール715に指示し)、ステップ4(904)におけるプロトコルヘッダ612の構成要素の一部(ポート番号等)と第2のメモリ領域613に格納されているデータから計算されるチェックサム値の計算を、第2のメモリ領域613に格納されたデータを読み出すことなく、ステップ3(903)によって得られたチェックサム値を利用するように修正すればよい。
又、図10及び図11に示した公知の代表的なソケットAPI仕様を有するプロトコルスタックのAPI関数において、read関数1005或いはrecvfrom関数1105は、アプリケーションプログラムが扱うべきデータを格納すべきメモリ領域が与えられるのではなく、アプリケーションプログラムが扱うべきデータが格納されたメモリ領域を与えるように修正すればよい。それに対応するアプリケーションプログラム601は、それら関数によって与えられるメモリ領域に格納されたデータを利用するように修正すればよい。
そして、ステップ8(908)において、アプリケーションプログラム601がプロトコルスタック602に対して利用完了したことを知らせる方法は、実施の形態2におけるステップ6(506)と同じであるため、ここでは説明を省く。
以上説明したストリームデータ通信方法及びストリームデータ通信装置によれば、アプリケーションプログラムとプロトコルスタックの間のチェックサム計算を伴うデータコピー(メモリからの読み出し及びメモリへの書き込み)は発生せずにストリームデータを受信可能である。チェックサム計算を伴うデータのメモリからの読み出しのみは全てのストリームデータに対して発生するものの、チェックサム計算は主にプロセッサが行うのではなくチェックサム計算モジュールが行う。
よって、実施の形態2と比べれば劣ると考えられるものの、バス帯域の消費の効率化、及びプロセッサの処理負荷の消費の効率化を達成する。
尚、本実施の形態のストリームインタフェース414は、図示していないタイムスタンプ削除モジュールや、図示していない暗復号化モジュールを備えることが可能であり、その機能を利用してその効果を得ることが実施可能であることは、実施の形態2と同じであるため、ここでは説明を省く。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、図1,図4,図7に示すストリームデータ通信装置101,401,701それぞれの構成要素、プロセッサ111やメモリ112や通信インタフェース113,413やストリームインタフェース114,414やチェックサム計算モジュール115,415,715は、それぞれ別々の半導体チップで実施することも可能であるし、或いはそのうちの複数或いは全てを一つの半導体チップで実施することも可能である。
すなわち、ストリームデータ通信装置101,401,701のそれぞれは、複数の半導体チップを組み合わせたセットとして実施することも可能であるし、或いはそれ自身を一つの半導体チップとして実施することも可能である。
又、通信インタフェース113,413それぞれは、通信ケーブル121を用いているため有線のネットワークに対応しているように示したが、通信ケーブルを用いない無線ネットワークに対応するように実施することも可能である。
本発明は、ストリームデータの通信方法及びストリームデータの通信装置に関し、特に、チェックサム計算モジュール及びソケット類似のプロトコルスタックを用いたバス帯域の浪費防止及びプロセッサ処理負荷の浪費防止に適用可能である。
本発明の実施の形態1に係るストリームデータ通信装置の構成を示す構成図である。 本発明の実施の形態1に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートである。 本発明の実施の形態1に係るストリームデータ通信装置のストリームデータ通信方法においてストリームデータを送信する場合のメモリ内のデータ配置を示す図である。 本発明の実施の形態2に係るストリームデータ通信装置の構成を示す構成図である。 本発明の実施の形態2に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートである。 本発明の実施の形態2に係るストリームデータ通信装置のストリームデータ通信方法においてストリームデータを受信する場合のメモリ内のデータ配置を示す図である。 本発明の実施の形態3に係るストリームデータ通信装置の構成を示す構成図である。 本発明の実施の形態3に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートである。 本発明の実施の形態3に係るストリームデータ通信装置のストリームデータ通信方法を示すフローチャートである。 代表的なソケットAPI仕様を有するプロトコルスタックにおける、TCPプロトコル通信のAPI関数呼び出し順を示す図である。 代表的なソケットAPI仕様を有するプロトコルスタックにおける、UDPプロトコル通信のAPI関数呼び出し順を示す図である。
符号の説明
101,401,701…ストリームデータ通信装置、111…プロセッサ、112…メモリ、113,413…通信インタフェース、114,414…ストリームインタフェース、115,415,715…チェックサム計算モジュール。

Claims (4)

  1. アプリケーションプログラムとプロトコルスタックとで構成されるプログラムがプロセッサで処理されることによって動作し、前記プロセッサの外部に設けられチェックサムの計算を行うチェックサム計算モジュールを内部に備えるストリームインタフェースから入力されるストリームデータを、通信インタフェースから送信するストリームデータ通信装置のストリームデータ通信方法であって、
    前記アプリケーションプログラムが、前記ストリームインタフェースに対して、前記ストリームデータのチェックサム値を前記プロセッサの外部であるストリームインタフェースの内部に設けられた前記チェックサム計算モジュールで計算しつつ前記ストリームデータを第1のメモリ領域に格納することを指示するステップと、
    前記アプリケーションプログラムが、前記プロトコルスタックに対して、前記チェックサム値及び前記第1のメモリ領域を指定して送信指示するステップと、
    前記プロトコルスタックが、前記チェックサム値を用いて前記第1のメモリ領域に格納されているデータを通信に供させるためのプロトコルヘッダを生成し、第2のメモリ領域に前記プロトコルヘッダを格納するステップと、
    前記プロトコルスタックが、前記通信インタフェースに対して、前記第2のメモリ領域及び前記第1のメモリ領域それぞれに格納されているデータを一連のデータとして送信することを指示するステップと、
    前記プロトコルスタックが、前記アプリケーションプログラムに対して、送信完了したことを知らせるステップとを有することを特徴とするストリームデータ通信方法。
  2. アプリケーションプログラムとプロトコルスタックとで構成されるプログラムがプロセッサで処理されることによって動作し、ストリームインタフェースから入力されるストリームデータを、前記プロセッサの外部である前記ストリームインタフェースの内部に設けられチェックサムの計算を行うチェックサム計算モジュールを用いて通信インタフェースから送信するストリームデータ通信装置のストリームデータ通信方法であって、
    前記アプリケーションプログラムが、前記ストリームインタフェースに対して、前記ストリームデータを第1のメモリ領域に格納することを指示するステップと、
    前記アプリケーションプログラムが、前記プロトコルスタックに対して、前記第1のメモリ領域を指定して送信指示するステップと、
    前記プロトコルスタックが、前記プロセッサの外部である前記ストリームインタフェースの内部に設けられた前記チェックサム計算モジュールに対して、前記第1のメモリ領域に格納されているデータのチェックサム値を計算することを指示するステップと、
    前記プロトコルスタックが、前記チェックサム値を用いて前記第1のメモリ領域に格納されているデータを通信に供させるためのプロトコルヘッダを生成し、第2のメモリ領域に前記プロトコルヘッダを格納するステップと、
    前記プロトコルスタックが、前記通信インタフェースに対して、前記第2のメモリ領域及び前記第1のメモリ領域それぞれに格納されているデータを一連のデータとして送信することを指示するステップと、
    前記プロトコルスタックが、前記アプリケーションプログラムに対して、送信完了したことを知らせるステップとを有することを特徴とするストリームデータ通信方法。
  3. チェックサムの計算を行うチェックサム計算モジュールを有し、ストリームデータが入力されるストリームインタフェースと、
    前記ストリームデータを送信する通信インタフェースと、
    アプリケーションプログラムとプロトコルスタックとで構成されるプログラムが記憶されるメモリと、
    前記プログラムを処理するプロセッサとを備え、
    前記チェックサム計算モジュールは、前記プロセッサの外部である前記ストリームインタフェースの内部に設けられ、
    前記プロセッサは、
    前記アプリケーションプログラムにより、前記ストリームインタフェースに対して、前記ストリームデータのチェックサム値を前記プロセッサの外部である前記ストリームインタフェースの内部に設けられた前記チェックサム計算モジュールで計算しつつ前記ストリームデータを前記メモリの第1のメモリ領域に格納することを指示し、
    前記アプリケーションプログラムにより、前記プロトコルスタックに対して、前記チェックサム値及び前記第1のメモリ領域を指定して送信指示し、
    前記プロトコルスタックにより、前記チェックサム値を用いて前記第1のメモリ領域に格納されているデータを通信に供させるためのプロトコルヘッダを生成し、前記メモリの第2のメモリ領域に前記プロトコルヘッダを格納し、
    前記プロトコルスタックにより、前記通信インタフェースに対して、前記第2のメモリ領域及び前記第1のメモリ領域それぞれに格納されているデータを一連のデータとして送信することを指示し、
    前記プロトコルスタックにより、前記アプリケーションプログラムに対して、送信完了したことを知らせることを特徴とするストリームデータ通信装置。
  4. ストリームデータが入力されるストリームインタフェースと、
    前記ストリームデータを送信する通信インタフェースと、
    チェックサムの計算を行うチェックサム計算モジュールと、
    アプリケーションプログラムとプロトコルスタックとで構成されるプログラムが記憶されるメモリと、
    前記プログラムを処理するプロセッサとを備え、
    前記チェックサム計算モジュールは、前記プロセッサの外部である前記ストリームインタフェースの内部に設けられ、
    前記プロセッサは、
    前記アプリケーションプログラムにより、前記ストリームインタフェースに対して、前記ストリームデータを前記メモリの第1のメモリ領域に格納することを指示し、
    前記アプリケーションプログラムにより、前記プロトコルスタックに対して、前記第1のメモリ領域を指定しつつ送信指示し、
    前記プロトコルスタックにより、前記プロセッサの外部である前記ストリームインタフェースの内部に設けられた前記チェックサム計算モジュールに対して、前記第1のメモリ領域に格納されているデータのチェックサム値を計算することを指示し、
    前記プロトコルスタックにより、前記チェックサム値を用いて前記第1のメモリ領域に格納されているデータを通信に供させるためのプロトコルヘッダを生成し、前記メモリの第2のメモリ領域に前記プロトコルヘッダを格納し、
    前記プロトコルスタックにより、前記通信インタフェースに対して、前記第2のメモリ領域及び前記第1のメモリ領域それぞれに格納されているデータを一連のデータとして送信することを指示し、
    前記プロトコルスタックにより、前記アプリケーションプログラムに対して、送信完了したことを知らせることを特徴とするストリームデータ通信装置。
JP2006003442A 2006-01-11 2006-01-11 ストリームデータ通信方法及びストリームデータ通信装置 Expired - Fee Related JP4809679B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006003442A JP4809679B2 (ja) 2006-01-11 2006-01-11 ストリームデータ通信方法及びストリームデータ通信装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006003442A JP4809679B2 (ja) 2006-01-11 2006-01-11 ストリームデータ通信方法及びストリームデータ通信装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010278856A Division JP5055420B2 (ja) 2010-12-15 2010-12-15 ストリームデータ通信方法及びストリームデータ通信装置

Publications (2)

Publication Number Publication Date
JP2007189296A JP2007189296A (ja) 2007-07-26
JP4809679B2 true JP4809679B2 (ja) 2011-11-09

Family

ID=38344187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006003442A Expired - Fee Related JP4809679B2 (ja) 2006-01-11 2006-01-11 ストリームデータ通信方法及びストリームデータ通信装置

Country Status (1)

Country Link
JP (1) JP4809679B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010057033A (ja) * 2008-08-29 2010-03-11 Nec Electronics Corp 通信装置及び方法
RU2697954C2 (ru) * 2018-02-06 2019-08-21 Акционерное общество "Лаборатория Касперского" Система и способ создания антивирусной записи

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430842A (en) * 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
KR20030080443A (ko) * 2002-04-08 2003-10-17 (주) 위즈네트 하드웨어 프로토콜 프로세싱 로직으로 구현된 인터넷 통신프로토콜 장치 및 상기 장치를 통한 데이터 병렬 처리 방법
JP3557201B2 (ja) * 2003-01-10 2004-08-25 三洋電機株式会社 パケット処理装置、パケット処理方法、およびその方法を利用可能な電話装置
JP4251044B2 (ja) * 2003-09-05 2009-04-08 日本電気株式会社 セッション中継装置、セッション中継方法
JP2006005698A (ja) * 2004-06-18 2006-01-05 Seiko Epson Corp ネットワークコントローラ及び半導体集積回路

Also Published As

Publication number Publication date
JP2007189296A (ja) 2007-07-26

Similar Documents

Publication Publication Date Title
US9858214B2 (en) Task offload to a peripheral device
WO2018094743A1 (zh) 处理报文的方法和计算机设备
WO2014180110A9 (zh) 数据处理装置及数据处理方法
US10735373B2 (en) Communications over multiple protocol interfaces in a computing environment
CN112039824A (zh) 通信方法、系统、设备及计算机可读存储介质
JP5304674B2 (ja) データ変換装置、データ変換方法及びプログラム
CN105190530A (zh) 传输硬件渲染的图形数据
JP2009123201A (ja) データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法
US20110153882A1 (en) Apparatus and method for transforming content
US20190306055A1 (en) Efficient and reliable message channel between a host system and an integrated circuit acceleration system
JP4809679B2 (ja) ストリームデータ通信方法及びストリームデータ通信装置
JP5479710B2 (ja) データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法
CN109039687A (zh) 请求的负载均衡方法、装置、系统、设备以及存储介质
JP3988475B2 (ja) 送信装置、受信装置およびそれらの方法
US20050165983A1 (en) System and method for processing data in kernel area by a user command
JP5055420B2 (ja) ストリームデータ通信方法及びストリームデータ通信装置
US20080092206A1 (en) Security protocol control apparatus and security protocol control method
CN109714337B (zh) 一种数据加密传输方法及设备
JP2004355511A (ja) 情報処理システム
JP2005258632A (ja) ネットワークストレージ装置の導通確認方法およびホスト計算機
JP2006018430A (ja) 情報処理装置、ネットワークシステム、プログラム、データ構造及び記憶媒体
JP2009253723A (ja) 通信プロトコル処理回路及び通信プロトコル処理方法ならびに通信端末
KR100900963B1 (ko) 네트워크 프로토콜 패킷 전송을 위한 하드웨어 장치 및 그방법
JP2007329730A (ja) 通信プロトコル処理装置
JP4519090B2 (ja) 送信装置、受信装置およびそれらの方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090107

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100528

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101215

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110606

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110613

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: 20110802

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: 20110819

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

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees