(57)【要約】【課題】  安価で低速なＣＰＵを用いても、ＣＰＵの処理負荷を軽減し高速送信／受信を実現する手段を備えたパケット通信装置を提供する。【解決手段】  ＣＰＵ１１とメモリ１４とパケット通信回路１３とを有し、ネットワークで接続された制御対象とこの制御対象を遠隔監視／制御するネットワーク端末とをインタフェースし、制御対象とネットワーク端末との間でパケットを送信／受信するパケット通信装置１において、パケットのエラー判定用のチェックサム演算とコピーとを実行するハードウエアとしてコピー＆演算装置１２を搭載し、メモリ１４内に形成されパケット通信回路１３が使用する送信バッファ／受信バッファと通信処理プログラムが使用するワークエリアとの間で、パケットデータのコピーとチェックサム演算とを同時に実行し、ＣＰＵ１１の負荷を軽減し、通信処理を高速化する。【選択図】  図２ 
2005102037.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとメモリとパケット通信回路とを有し、ネットワークで接続された少なくとも１つの制御対象と前記制御対象を遠隔監視／制御する少なくとも１つのネットワーク端末とをインタフェースし、前記制御対象と前記ネットワーク端末との間でパケットを送信／受信するパケット通信装置において、
前記ＣＰＵがデータをカプセル化して送信パケットを形成し前記メモリのワークエリアに置く通信ミドルウエアを備え、
前記ワークエリアに置かれた送信パケットを前記メモリのディスクリプタにコピーするとともに前記送信パケットについて所定の演算を実行するコピー＆演算装置を備え、
前記パケット通信回路が、固有のデバイスドライバを介して取り込んだ前記メモリのディスクリプタ内の送信パケットを前記制御対象または前記ネットワーク端末に送信する
ことを特徴とするパケット通信装置。
【請求項２】
請求項１に記載のパケット通信装置において、
前記パケット通信回路は、さらに、前記制御対象または前記ネットワーク端末からの受信パケットを固有のデバイスドライバを介して前記メモリのディスクリプタに転送し、
前記コピー＆演算装置は、さらに、前記メモリのディスクリプタに転送された受信パケットを前記メモリのワークエリアにコピーするとともに前記受信パケットについて所定の演算を実行し、
前記通信ミドルウエアは、さらに、ＣＰＵがワークエリアに置かれた受信パケットのカプセルを解きデータを取り出す
ことを特徴とするパケット通信装置。
【請求項３】
ＣＰＵとメモリとパケット通信回路とを有し、ネットワークで接続された少なくとも１つの制御対象と前記制御対象を遠隔監視／制御する少なくとも１つのネットワーク端末とをインタフェースし、前記制御対象と前記ネットワーク端末との間でパケットを送信／受信するパケット通信装置において、
前記ＣＰＵがデータをカプセル化して送信パケットを形成し前記メモリのワークエリアに置く通信ミドルウエアを備え、
前記ワークエリアに置かれた送信パケットを前記メモリのディスクリプタにコピーするとともに前記送信パケットについて所定の演算を実行するコピー＆演算装置を備え、
前記パケット通信回路が、固有のデバイスドライバを介して取り込んだ前記メモリのディスクリプタ内の送信パケットを前記制御対象または前記ネットワーク端末に送信し、
前記パケット通信回路が、前記制御対象または前記ネットワーク端末からの受信パケットを前記固有のデバイスドライバを介して前記メモリのディスクリプタに転送し、
前記メモリのディスクリプタに転送された受信パケットを前記メモリのワークエリアにコピーするとともに前記受信パケットについて所定の演算を実行するコピー＆演算装置を備え、
前記ＣＰＵがワークエリアに置かれた受信パケットのカプセルを解きデータを取り出す通信ミドルウエアを備えた
ことを特徴とするパケット通信装置。
【請求項４】
請求項１または３に記載のパケット通信装置において、
前記ＣＰＵが、前記コピー＆演算装置に対して、前記パケットのコピーのみのモードと、前記パケットについての所定の演算のみのモードと、前記パケットのコピーおよび所定の演算モードとの切り替え指令手段を備えた
ことを特徴とするパケット通信装置。
【請求項５】
請求項１または３に記載のパケット通信装置において、
前記所定の演算を実行する演算装置が、前記パケットのチェックサム演算装置である
ことを特徴とするパケット通信装置。
【請求項６】
請求項５に記載のパケット通信装置において、
前記パケットのチェックサム演算装置が、演算対象のデータ長を可変のチェックサム演算回路を含む
ことを特徴とするパケット通信装置。
【請求項７】
請求項５または６に記載のパケット通信装置において、
前記ワークエリア内のパケットにチェックサム情報が無い場合に、前記コピー＆演算装置が、コピー先のディスクリプタ内のそのパケットとともに、コピー元のワークエリア内のそのパケットにも、チェックサム演算結果を書き込む
ことを特徴とするパケット通信装置。
【請求項８】
請求項５または６に記載のパケット通信装置において、
前記ワークエリア内のパケットにチェックサム情報が無い場合に、前記コピー＆演算装置のコピーとチェックサム演算とを分割し、まず、前記通信ミドルウエアでチェックサムのみを演算し、その結果をそのパケットのチェックサム情報として格納し、ワークエリア内のチェックサム情報付きパケットをディスクリプタにコピーする
ことを特徴とするパケット通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをパケットに分割して送信／受信するパケット通信装置に係り、特に、パケットの送信／受信処理に伴うパケットデータのコピー手段とチェックサム演算手段とに関する。
【背景技術】
【０００２】
インターネットやＬＡＮを介する大部分の通信は、ＴＣＰ／ＩＰのプロトコルに基づくパケット通信である。
【０００３】
ＴＣＰ／ＩＰでは、プロトコル処理にプログラム階層がある。例えば、ネットワークインタフェースとしての通信回路が受信したパケットは、イーサネット（Ｒ）ドライバ→ＩＰ受信処理→ＴＣＰまたはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）受信処理→アプリケーションソフトウエアの階層で順次処理される。
【０００４】
送信においては、この逆の処理により、パケットが通信回路から送信される。
【０００５】
さらに、ＩＰ，ＵＤＰ処理においては、ヘッダのチェックサムを演算し、ＴＣＰにおいては、ヘッダおよびデータのチェックサムを演算し、通信エラーをチェックしている。
【０００６】
しかし、送信／受信処理においては、チェックサムの演算がパケット全体に対して実行されるので、ソフトウエアでは処理に時間がかかり、送信／受信性能アップの妨げになってきた。
【０００７】
そこで、ネットワーク端末では、送信量よりも受信量が多いことに着目し、受信時のチェックサム演算をハードウエアで演算して高速化する方式が提案されている(例えば、特許文献１，特許文献２参照)。
【特許文献１】特開平１０−１９０４８１号公報        (第３，４頁、図２〜図４)
【特許文献２】特開２００１−１１１５５８号公報        (第２〜４頁、図１，図３〜図５)
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、従来は受信が主であったネットワーク端末でも、Ｗｅｂサーバを搭載してパケットを送信する機会が増加し、送信処理の高速化への要求が高まってきている。
【０００９】
この送信処理の高速化への要求に対処するために、高速なＣＰＵを使用すると、ネットワーク端末の値段が高くなってしまう。
【００１０】
本発明の目的は、安価で低速なＣＰＵを用いても、ＣＰＵの処理負荷を軽減して高速送信／受信を実現する手段を備えたパケット通信装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明は、上記目的を達成するために、ＣＰＵとメモリとパケット通信回路とを有し、ネットワークで接続された少なくとも１つの制御対象と制御対象を遠隔監視／制御する少なくとも１つのネットワーク端末とをインタフェースし、制御対象とネットワーク端末との間でパケットを送信／受信するパケット通信装置において、ＣＰＵがデータをカプセル化して送信パケットを形成しメモリのワークエリアに置く通信ミドルウエアを備え、ワークエリアに置かれた送信パケットをメモリのディスクリプタにコピーするコピー装置を備え、パケット通信回路が、固有のデバイスドライバを介して取り込んだメモリのディスクリプタ内の送信パケットを制御対象またはネットワーク端末に送信し、パケット通信回路が、制御対象またはネットワーク端末からの受信パケットを固有のデバイスドライバを介してメモリのディスクリプタに転送し、メモリのディスクリプタに転送された受信パケットをメモリのワークエリアにコピーするコピー装置を備え、ＣＰＵがワークエリアに置かれた受信パケットのカプセルを解きデータを取り出す通信ミドルウエアを備えたパケット通信装置を提案する。
【００１２】
本発明は、また、ＣＰＵとメモリとパケット通信回路とを有し、ネットワークで接続された少なくとも１つの制御対象と制御対象を遠隔監視／制御する少なくとも１つのネットワーク端末とをインタフェースし、制御対象とネットワーク端末との間でパケットを送信／受信するパケット通信装置において、ＣＰＵがデータをカプセル化して送信パケットを形成しメモリのワークエリアに置く通信ミドルウエアを備え、ワークエリアに置かれた送信パケットをメモリのディスクリプタにコピーするとともに送信パケットについて所定の演算を実行するコピー＆演算装置を備え、パケット通信回路が、固有のデバイスドライバを介して取り込んだメモリのディスクリプタ内の送信パケットを制御対象またはネットワーク端末に送信し、パケット通信回路が、制御対象またはネットワーク端末からの受信パケットを固有のデバイスドライバを介してメモリのディスクリプタに転送し、メモリのディスクリプタに転送された受信パケットをメモリのワークエリアにコピーするとともに受信パケットについて所定の演算を実行するコピー＆演算装置を備え、ＣＰＵがワークエリアに置かれた受信パケットのカプセルを解きデータを取り出す通信ミドルウエアを備えたパケット通信装置を提案する。
【００１３】
ＣＰＵは、コピー＆演算装置に対して、パケットのコピーのみのモードと、パケットについての所定の演算のみのモードと、パケットのコピーおよび所定の演算モードとの切り替え指令手段を備える。
【００１４】
所定の演算を実行する演算装置とは、具体的には、パケットのチェックサム演算装置であり、このチェックサム演算装置は、演算対象のデータ長を可変のチェックサム演算回路を含むことができる。
【００１５】
ワークエリア内のパケットにチェックサム情報が無い場合に、コピー＆演算装置は、コピー先のディスクリプタ内のそのパケットとともに、コピー元のワークエリア内のそのパケットにも、チェックサム演算結果を書き込むようにする。
【００１６】
ワークエリア内のパケットにチェックサム情報が無い場合に、コピー＆演算装置のコピーとチェックサム演算とを分割し、まず、通信ミドルウエアでチェックサムのみを演算し、その結果をそのパケットのチェックサム情報として格納し、ワークエリア内のチェックサム情報付きパケットをディスクリプタにコピーしてもよい。
【発明の効果】
【００１７】
本発明のメモリコピー方式を採用したパケット通信装置によれば、ＴＣＰ／ＩＰ通信処理において、ＣＰＵ負荷の重いコピーとチェックサム演算とをハードウエア化し、コピーとチェックサム演算とを同時に実行でき、通信処理性能を高められる。
【００１８】
また、本発明によるメモリコピー方式は、パケットの受信処理ばかりでなく、送信処理においても、コピーとチェックサム演算の高速化が可能であり、送信／受信処理を高速化できる。
【００１９】
その結果、ネットワーク端末に送信／受信処理の多いＷｅｂサーバを搭載した場合でも、処理速度が比較的低い既存のＣＰＵを利用し、従来のソフトウエア資産をそのまま継承できる。
【００２０】
さらに、余ったＣＰＵパワーを他の処理に使用可能となり、製品に新たな機能を追加できる。
【発明を実施するための最良の形態】
【００２１】
次に、図１〜図９を参照して、本発明によるパケット通信装置の実施形態を説明する。
【００２２】
図１は、本発明によるパケット通信装置を適用すべき遠隔監視／制御システムの構成の一例を示す図である。
【００２３】
従来、インターネットは、主に、屋内から外部のホームページの情報を入手する手段であった。最近は、インターネットに常時接続できるＡＤＳＬやＦＴＴＨなどの環境が容易に手に入るようになってきた。屋内の機器をイーサネット（Ｒ）などで接続してＬＡＮを構成し、ＡＤＳＬやＦＴＴＨなどを介してインターネットに常時接続すると、屋外から屋内の各機器の情報を入手して状態を監視しまたは制御できるので、ＡＤＳＬやＦＴＴＨなどを介する遠隔監視／制御システムへの要求が高まりつつある。
【００２４】
本実施形態の遠隔監視／制御システムは、パケット通信装置１と、ネットワーク２と、パソコンＰＣや携帯電話などのネットワーク端末３と、家電や産業用制御装置などの制御対象４とから構成される。パケット通信装置１と制御対象４とは、一体型であっても、有線または無線で接続されていてもよい。
【００２５】
パケット通信装置１とネットワーク端末３とは、ネットワーク２により接続されており、ＴＣＰ／ＩＰプロトコルに準拠するパケットを送信／受信する。
【００２６】
パケット通信装置１は、制御対象４とネットワーク２とのインタフェースとして機能する。ネットワーク端末３は、ネットワーク２を介して、制御対象４の状態を遠隔監視し、制御する。
【００２７】
パケット通信装置１は、ネットワーク端末３からインターネットにアクセスする一般のＷｅｂブラウザを用いて、リアルタイム遠隔監視やリアルタイム制御を実現するために、Ｗｅｂサーバを搭載している。パケット通信装置１は、Ｗｅｂサーバ処理のため、パケットをリアルタイムに送信／受信する必要があり、パケット通信装置１の負荷がますます増大する。
【００２８】
本発明は、このパケット通信装置１において、パケットの送信／受信処理のＣＰＵに対する負荷を軽減し、通信能力を高める手段を提供する。
【００２９】
ネットワーク２は、ＬＡＮ２１とインターネット２２とそれらを接続するゲートウエイＧＷまたはモデム２３とからなる。ＧＷまたはモデム２３は、ＬＡＮ２１とインターネット２２とのインタフェースの機能を果たしている。ネットワーク２は、ケーブルや光ファイバなどの有線接続ＰＣ３ａ，ＰＣ３ｃのほかに、携帯電話３ｄや無線ＬＡＮを用いたネットワーク端末３ｂなどの無線接続を含んでもよい。
【００３０】
ＬＡＮ２１においては、ＩＥＥＥ８０２．３に準拠してＴＣＰ／ＩＰパケットをカプセル化したイーサネット（Ｒ）パケットを用いて通信する。インターネット２２においては、イーサネット（Ｒ）パケットに加えて、ＡＴＭやフレームリレーなどのパケットを用いて通信する。
【００３１】
図２は、本発明によるパケット通信装置の一実施形態の構成を示すブロック図である。
【００３２】
パケット通信装置１は、ＣＰＵ１１と、コピー＆演算装置１２と、パケット通信回路１３と、メモリ１４と、これらを接続するバス１５とからなる。
【００３３】
また、パケット通信装置１の別の構成として、図１０に示すようにメモリを外付けにした構成もある。
【００３４】
図１０では、パケット通信装置１は、パケット通信ＬＳＩ１００とメモリ１４およびパケット通信ＬＳＩ１００とメモリ１４を接続する外バス１０１から構成される。
【００３５】
また、パケット通信ＬＳＩ１００は、ＣＰＵ１１と、コピー＆演算装置１２と、パケット通信回路１３と、外バスＩ／Ｆ回路１６と、これらを接続するバス１５から構成される。前記外バスＩ／Ｆ回路１６は、バス１５と外バス１０１とをブリッジする回路である。
【００３６】
以下の動作において、図２と図１０は同じであるため、以下図２を用いて詳しく説明する。
【００３７】
パケット通信回路１３は、ネットワーク２に接続され、ＬＡＮ２１とイーサネット（Ｒ）パケットとを用いて、パケット通信を実行する。
【００３８】
図３は、本発明によるパケット通信装置のメモリに格納されているプログラムの機能構成を示すブロック図である。
【００３９】
メモリ１４は、ＣＰＵ１１で実行される送信パケット生成手順および受信パケット処理手順を含むプログラム１４１と、データ領域としてのワークエリア１４２と、パケット通信回路１３が送信／受信するデータを保持するディスクリプタ１４３とを記憶領域内に備えている。
【００４０】
ディスクリプタ１４３は、パケット通信回路１３が送信するデータを保持する送信ディスクリプタ１４３１と、パケット通信回路１３が受信したデータを保持する受信ディスクリプタ１４３２とからなる。
【００４１】
図４は、本発明によるパケット通信装置で使用するＴＣＰ／ＩＰ通信プロトコルの構造を示す図である。
【００４２】
ＣＰＵ１１は、プログラム１４１を実行し、実行時のデータ等を保持するワークエリア１４２を使って、メモリ１４内に格納されているＷｅｂサーバなどのアプリケーションソフトウエア，ＴＣＰ／ＩＰなどの通信ミドルウエア，デバイスドライバなどのソフトウエアを実行し、送信パケットおよび受信パケットを処理する。
【００４３】
通信処理ソフトウエアは、ハードウエアとしてのパケット通信回路１３に依存するデバイスドライバと、ハードウエアに依存しない通信ミドルウエアとに分かれている。
【００４４】
デバイスドライバは、ハードウエアごとに作成される。このデバイスドライバは、パケット通信回路１３がアクセスするディスクリプタ１４３へのアクセスを担当するので、通信ミドルウエアは、ワークエリア１４２に対してのみデータを送信／受信すればよい。その結果、通信ミドルウエアは、ＷｅｂサーバなどのアプリケーションソフトウエアがＴＣＰ／ＩＰなどの通信を意識する局面を極力減少させるため、高度に抽象化できる。したがって、アプリケーションソフトウエアを作りやすくなるとともに、プログラムの移植が簡単になる。
【００４５】
しかし、デバイスドライバでは、受信ディスクリプタ１４３２からワークエリア１４２に受信パケットをコピーする処理と、ワークエリア１４２から送信ディスクリプタ１４３１に送信パケットをコピーする処理とが必要となり、そのオーバーヘッドが発生する。
【００４６】
図５は、本発明によるパケット通信装置１がＴＣＰ／ＩＰ通信パケットをイーサネット（Ｒ）パケットでカプセル化し送信／受信するパケットの構成の一例を示す図である。
【００４７】
パケット通信装置１が送信する場合、送信したいデータをＴＣＰによりカプセル化し(図５ｃ)、ＩＰによりカプセル化し(図５ｂ)、さらに、イーサネット（Ｒ）によりカプセル化して(図５ａ)パケットを作成し、送信する。このカプセル化の際、カプセル化するパケット種類をタイプ情報として各ヘッダに付加する。
【００４８】
パケット通信装置１が受信する場合、送信とは逆に処理し、ヘッダ内のタイプ情報を参照して、イーサネット（Ｒ）パケット→ＩＰパケット→ＴＣＰパケットの順でカプセルを解き、受信データを入手する。
【００４９】
カプセル化の際に、ＴＣＰ(ＵＤＰ)およびＩＰでは、パケットが正しいかどうかを判定するために、チェックサム演算を使用する。
【００５０】
このチェックサム演算の対象範囲は、図５に示すように、ＴＣＰパケットの場合はＴＣＰヘッダおよびＴＣＰデータからなるＴＣＰパケット全体であり、ＵＤＰおよびＩＰの場合はヘッダのみである。
【００５１】
送信元は、カプセル化の際にチェックサムを演算し、チェックサム情報として各ヘッダに付加する。
【００５２】
受信側は、チェックサム情報を含めて対象範囲のチェックサムを演算し、その結果が０ならば正常、それ以外ならばエラーと判定する。
【００５３】
最近のマイクロＣＰＵは、３２ｂｉｔ化されているので、３２ｂｉｔ単位で演算する。一方、チェックサムの演算は、１６ｂｉｔの１の補数加算であり、３２ビット化されたＣＰＵ１１で演算しても、１６ｂｉｔ単位での演算となってしまう。
【００５４】
さらに、チェックサム演算は、送信／受信処理の両方で実行される上に、ＴＣＰの場合は全パケットについて演算する。そのため、チェックサム演算のＣＰＵ１１への負荷が大きくなっている。
【００５５】
その結果、パケットの送信／受信処理において、パケットのコピーとチェックサム演算とが、通信性能を低下させる要因となっている。
【００５６】
本発明においては、コピーとチェックサム演算とをコピー＆演算装置１２としてハードウエア化し、これらを同時並行的に実行し、通信性能を高める。
【００５７】
また、このハードウエア使用に伴うソフトウエアの要改造部分をハードウエアに依存するデバイスドライバのみに限定し、ソフトウエアの開発を簡単にする。
【００５８】
さらに、メモリアクセス幅を生かして、３２ｂｉｔ単位でチェックサムを演算し、オーバーヘッドを軽減させ、通信性能を高める。
【００５９】
コピー＆演算装置１２は、コピーとチェックサム演算とを同時に実行し、ＣＰＵ１１におけるオーバーヘッドを削減する。
【００６０】
コピー＆演算装置１２は、コピーとチェックサム演算とを同時に実行するモードと、コピーのみを実行するモードと、チェックサム演算のみを実行するモードとを併せて持っている。
【００６１】
図６は、本発明によるパケット通信装置におけるパケット受信時のデータの流れを示す図である。
【００６２】
ａ)  パケット通信回路１３は、パケットを受信すると、バス１５を介して、メモリ１４内の受信ディスクリプタ１４３２にパケットを転送し、ＣＰＵ１１にパケット受信を連絡する。
【００６３】
ｂ)  ＣＰＵ１１のデバイスドライバは、そのパケット受信の連絡に応じて、コピー＆演算装置１２を起動する。コピー＆演算装置１２は、そのパケットを受信ディスクリプタ１４３２から読み出し、ワークエリア１４２内の指定された領域にコピーし始めるとともに、そのパケットを解析し、ＩＰパケットのチェックサムとＵＤＰパケットまたはＴＣＰパケットのチェックサムとを演算する。
【００６４】
コピー＆演算装置１２は、コピー終了後、そのチェックサム演算結果およびいずれかのチェックサム演算結果が０でないというチェックサムエラーがあったかどうかを同じくワークエリア１４２内にそれぞれ書き込み、ＣＰＵ１１にチェックサム演算完了を伝える。
【００６５】
ｃ)  通信ミドルウエアは、ワークエリア１４２内のチェックサム演算結果に基づき、ＩＰ処理と、ＵＤＰ処理またはＴＣＰ処理とを実行する。Ｗｅｂサーバなどのアプリケーションソフトウエアは、その後に実行される。
【００６６】
もし、チェックサム演算結果にエラーがあった場合は、定められたエラー処理を実行する。
【００６７】
本発明の特徴は、処理手順ｂにおいて、コピー＆演算装置１２が、受信ディスクリプタ１４３２からワークエリア１４２へのコピーとＩＰ，ＵＤＰ，ＴＣＰのチェックサム演算とを同時に実行することである。
【００６８】
この処理手順により、メモリコピーがＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）並みに高速に実行され、その時間内にチェックサム演算まで終了する。
【００６９】
図７は、本発明によるパケット通信装置におけるパケット送信時のデータの流れを示す図である。
【００７０】
ｄ)  通信ミドルウエアは、Ｗｅｂサーバなどのアプリケーションソフトウエアから出力されたデータをＴＣＰ(ＵＤＰ)データ，ＩＰデータ，イーサネット（Ｒ）データに順次カプセル化してイーサネット（Ｒ）パケットを形成し、ワークエリア１４２内に置く。
【００７１】
ｅ)  デバイスドライバは、コピー＆演算装置１２を起動する。コピー＆演算装置１２は、ワークエリア１４２内のイーサネット（Ｒ）パケットを読み出し、送信ディスクリプタ１４３１内の指定された領域にコピーを開始すると同時に、そのパケットを解析し、ＴＣＰパケットまたはＵＤＰパケットおよびＩＰパケットのチェックサムを演算する。
【００７２】
コピー＆演算装置１２は、コピー終了後、そのチェックサム演算結果をコピー先である送信ディスクリプタ１４３１内のそのパケットにあるチェックサム格納個所にそれぞれ書き込み、ＣＰＵ１１に書き込みを伝える。
【００７３】
ｆ)  ＣＰＵ１１のデバイスドライバは、その書き込みを受けて、パケット通信回路１３の送信を起動する。パケット通信回路１３は、送信ディスクリプタ１４３１内のパケットをネットワーク２に送信する。
【００７４】
パケットの送信時においても、コピー＆演算装置１２が、ワークエリア１４２から送信ディスクリプタへのコピーとＩＰ，ＵＤＰ，ＴＣＰのチェックサム演算とを同時に実行する。
【００７５】
上記の通り、送信処理でワークエリア１４２内のパケットにチェックサム情報が付加されるのは、送信ディスクリプタ１４３１にコピーされた後であり、ワークエリア１４２内のパケットには、チェックサム情報は無い。
【００７６】
チェックサム情報が無いことが問題になる場合の解決策は、次の２つである。
【００７７】
第１の解決策は、コピー＆演算装置１２が、コピー先の送信ディスクリプタ１４３１内のそのパケットとともに、コピー元のワークエリア１４２内のそのパケットにも、チェックサム演算結果を書き込むことである。
【００７８】
第２の解決策は、コピー＆演算装置１２のコピーとチェックサム演算とを分割し、まず、通信ミドルウエアでチェックサムのみを演算し、その結果をそのパケットのチェックサム情報として格納する。その後、コピー＆演算装置１２は、ワークエリア１４２内のチェックサム情報付きパケットを送信ディスクリプタ１４３１にコピーする。
【００７９】
パケット通信装置１は、コピーとチェックサム演算とを同時に実行するコピー＆演算装置１２を搭載したので、送信／受信処理時に発生するコピーとチェックサム演算とのオーバーヘッドを削減できる。
【００８０】
また、コピー＆演算装置１２は、デバイスドライバのみで起動されるので、コピー＆演算装置１２の搭載に関連するソフトウエアの変更は、デバイスドライバのみでよい。
【００８１】
図８は、本発明によるコピー＆演算装置１２の内部構成を示すブロック図である。
【００８２】
コピー＆演算装置１２は、制御回路１２１と、レジスタ１２２と、チェックサム演算回路１２３と、メモリコピー回路１２４と、それらを接続するバス１２５とからなる。メモリコピー回路１２４は、上記バス１５と接続されている。
【００８３】
コピー＆演算装置１２は、コピーとチェックサム演算とを同時に実行するモードと、コピーのみを実行するモードと、チェックサム演算のみを実行するモードとを持っている。チェックサム演算回路１２３は、汎用性を高めるため、チェックサムデータ長として、１６ｂｉｔ，８ｂｉｔ，３２ｂｉｔを取り扱うことができ、演算方法として、１の補数加算と、通常のＣＰＵの加算である２の補数加算とを実行できる。
【００８４】
メモリコピー回路１２４も、コピー単位を８ｂｉｔ，１６ｂｉｔ，３２ｂｉｔに設定できるようになっている。
【００８５】
レジスタ１２２は、ＣＰＵ１１からアクセス可能であり、コピー＆演算装置１２の状態および設定値を保持している。
【００８６】
レジスタ１２２は、ＣＰＵ１１からの起動要求レジスタ，コピー＆演算装置１２の動作モード(コピー＆演算，コピーのみ，演算のみ)，チェックサム演算回路１２３の動作モード，メモリコピー回路１２４が実行するデータ幅(８／１６／３２ｂｉｔ)，パケットのコピー元およびコピー先，チェックサム演算結果を格納する領域の先頭アドレス，個別アドレスを保持している。
【００８７】
このチェックサムの格納場所については、受信時は、チェックサム演算結果をワークエリア１４２に書き込み、ＣＰＵ１１がチェックするため、先頭アドレスの格納領域にチェックサム演算結果をまとめて書き込む方式を採用する。また、送信時は、チェックサム演算結果を送信ディスクリプタ１４３１内のコピー先のパケットに格納するため、個別アドレス指定方式を採用する。
【００８８】
個別アドレス指定方式では、レジスタ１２２内には３つまでのアドレスを持ち、それを越えたアドレスは、メモリ４にアドレスを格納し、レジスタ１２２には、その領域への先頭アドレスを持つ。
【００８９】
したがって、１パケット内で複数のチェックサムが演算された場合でも、対応できる。
【００９０】
制御回路１２１は、このコピー＆演算装置１２の心臓部であり、レジスタ１２２内の起動要求レジスタがセットされると、チェックサム演算回路１２３および／またはメモリコピー回路１２４に指令して、コピーおよび／またはチェックサム演算を開始させる。
【００９１】
また、バス１２５上のパケットデータをチェックし、メモリコピー回路１２４により読み込まれるパケットの構造を解析し、チェックサム演算回路１２４を制御して、パケットを構成している各パケットのチェックサムを演算する。
【００９２】
メモリコピー回路１２４は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）であり、制御回路１２１からの指令を受け、レジスタ１２２で設定されたコピー元のパケットデータをコピー先に、指定されたデータ長(８／１６／３２ｂｉｔ)で順次データをコピーするとともに、バス１２５に出力する。
【００９３】
コピー＆演算装置１２の動作モードがチェックサム演算のみの場合、このメモリコピー回路１２４は、メモリから読み込んだパケットデータをバス１２５に出力するのみで、コピーはしない。
【００９４】
図９は、図８のコピー＆演算装置のチェックサム演算回路１２３の内部構成を示すブロック図である。
【００９５】
チェックサム演算回路１２３は、２個の１６ｂｉｔチェックサム演算器１２３１ａ，１２３１ｂと、セレクタ１２３２と、ビット反転器１２３３とからなる。チェックサム演算器１２３１は、加算器であり、１６ｂｉｔの１の補数加算および２の補数加算が可能である。
【００９６】
バス１２５から入力される３２ｂｉｔ幅のパケットデータのうち、下位１６ｂｉｔが、演算器１２３１ｂの入力となり、上位１６ｂｉｔが、演算器１２３１ｂの出力とともに、セレクタ１２３２を介して、演算器１２３１ａの入力となっている。
【００９７】
演算器１２３１ｂから出力されるキャリー信号１２３４は、演算器１２３１ａに入力される。
【００９８】
ビット反転器１２３３は、演算器１２３１ｂの出力を下位１６ｂｉｔとして取り込み、演算器１２３１ａの出力を上位１６ｂｉｔとして取り込み、３２ｂｉｔ幅のビットを反転する。
【００９９】
チェックサム演算回路１２３は、１６ｂｉｔのチェックサム演算を３２ｂｉｔ単位で実行し、演算を高速化する。
【０１００】
１６ｂｉｔのチェックサム演算は、次のように進行する。
【０１０１】
セレクタ１２３２は、まず、バス１２５側を選択する。チェックサム演算の対象データは、３２ｂｉｔごとに、チェックサム演算回路１２３に送られる。
【０１０２】
チェックサム演算回路１２３では、バス１２５から入力される３２ｂｉｔのデータは、上下１６ｂｉｔのデータに分割され、２つの１６ｂｉｔチェックサム演算器１２３１ａ，１２３１ｂで、それぞれ、１６ｂｉｔのチェックサムとして演算される。
【０１０３】
チェックサム演算の対象データを全てチェックサム演算回路１２３に送り終わると、セレクタ１２３２は、１６ｂｉｔチェックサム演算器１２３１ｂの出力側を選択し、演算器１２３１ａにおいて、２つのチェックサム演算結果を１つにまとめる。ビット反転器１２３３は、１つにまとめられた２つのチェックサム演算結果をビットごとに反転させ、１６ｂｉｔのチェックサム演算結果として、バス１２５に出力し、チェックサム演算を終了する。
【０１０４】
なお、チェックサム演算器１２３１ａのキャリー出力１２３４ａは、チェックサム演算器１２３１ｂに入力され、チェックサム演算器１２３１ｂのキャリー出力１２３４ｂは、チェックサム演算器１２３１ａに入力される。
【０１０５】
このチェックサム演算器１２３１ａと１２３１ｂとの接続により、チェックサム演算回路１２３を３２ｂｉｔ長のチェックサム演算器として動作させることが可能となる。
【０１０６】
８ｂｉｔ長のチェックサムは、チェックサム演算器１２３１を８ｂｉｔチェックサム演算器２つとして動作させると実現でき、チェックサム演算回路の汎用性を高めることができる。
【０１０７】
図５のイーサネット（Ｒ）パケットの構成を用いて、イーサネット（Ｒ）パケット受信時のコピー＆演算装置１２の動作を説明する。
【０１０８】
１)  制御回路１２１は、ＣＰＵ１１により起動されると、メモリコピー回路１２４を起動する。メモリコピー回路１２４は、レジスタ１２２内に設定された内容に基づき、コピーを開始し、受信ディスクリプタ１４３２から読み出したパケットデータをワークエリア１４２にコピーするとともに、バス１２５に出力する。なお、イーサネット（Ｒ）パケットのヘッダ部分は、チェックサム演算が不要であるため、チェックサム演算器１２３は、停止中である。
【０１０９】
２)  制御回路１２１は、バス１２５上に出力されたパケットデータの観測を開始する。図５(ａ)に示す通り、イーサネット（Ｒ）パケットにカプセル化されたパケットを示すタイプ情報は、送信元アドレスの次である。制御回路１２１は、このタイプ情報を読み、次がＩＰパケットであることを認識し、情報として予め持っているＩＰヘッダの構成から、ＩＰヘッダが持つタイプの場所と、ＩＰデータの始まる場所すなわちチェックサム演算の終了地点の情報とを入手する。
【０１１０】
３)  バス１２５上に、イーサネット（Ｒ）データの最初であるＩＰヘッダが流れると、制御回路１２１は、チェックサム演算回路１２３を起動し、ＩＰヘッダのタイプ情報を待つ。制御回路１２１は、そのタイプ情報から、ＴＣＰヘッダであることを認識し、ＴＣＰパケットの長さすなわちチェックサム演算の終了地点を入手する。
【０１１１】
４)  ＩＰヘッダのデータが流れ終わると、制御回路１２１は、チェックサム演算回路１２３から、チェックサム演算結果を入手する。制御回路１２１は、レジスタ１２２にある指定アドレスに、そのチェックサム演算結果を格納するとともに、チェックサム演算回路１２３をリセットし、ＴＣＰのチェックサム演算に備える。
【０１１２】
５)  ＴＣＰパケットが全て流れると、制御回路１２１は、４)と同様に、ＴＣＰのチェックサム演算結果を指定アドレスに格納するとともに、メモリコピー回路１２４を止め、パケットコピーを終了させる。
【０１１３】
以上のように、本発明においては、受信したＴＣＰ／ＩＰをカプセル化したイーサネット（Ｒ）パケットを受信ディスクリプタ１４３２からワークメモリ１４２にコピーするとともに、ＩＰパケット(ＩＰヘッダ)およびＴＣＰヘッダのチェックサムを演算できる。
【０１１４】
コピー＆演算装置１２は、送信時も、チェックサムの書き込み場所が、ワークエリア１４２内ではなく、送信ディスクリプタ１４３１にコピーしたパケットのＩＰヘッダおよびＴＣＰヘッダ内のチェックサム格納場所であることを除けば、受信時と同様に動作する。
【０１１５】
制御回路１２１は、処理高速化のために、代表的なプロトコルであるＩＰ(ＩＰv４)，ＴＣＰ，ＩＰv６のヘッダ構造の情報を予め持って置く。それ以外のパケットに関しては、メモリ１４内に各ヘッダ構成をテーブルとして持つか、ＣＰＵ１１で処理させる。
【０１１６】
イーサネット（Ｒ）にカプセル化されるパケットのタイプ情報の値は、ＲＦＣ１７００に規定されている。
【０１１７】
さらに、本コピー＆演算装置１２のメモリコピー回路１２４は、コピーの際に、レジスタ１２２に予め設定された内容に基づき、パケットのヘッダやテイルなどを追加してカプセル化し、またはパケットのヘッダやテイルなどを削除してカプセルを解くことができる。
【０１１８】
したがって、イーサネット（Ｒ）のパケットを他の通信手段である無線（ＩＥＥＥ８０２．１１系）などのパケットに変更し、対応させることも可能となる。
【０１１９】
パケットのカプセル化は、送信元アドレスおよび送信先アドレス以外には、ほとんど変わらないことに注目している。
【０１２０】
カプセルを解く処理である受信の場合は、受信パケットのコピーの際にヘッダを除いてコピーし、データ本体のほかに、送信元アドレスおよび送信先アドレスとデータ長とをワークエリア１４２に書き込む。
このコピー時に、コピー＆演算装置１２は、ヘッダを含めたパケット長(バイト長)と、ヘッダを除いたデータ部分のバイト長とを計算する。
【０１２１】
この計算結果を用いると、次の通信ミドルウエアによるパケット処理が容易になり、高速化される。
【０１２２】
次に、カプセル化して送信する場合は、送信するデータ，送信元アドレス，送信先アドレスとからなる送信データにヘッダを付加して、送信ディスクリプタ１４３１にコピーする。また、送信データ長を計算し、付加するヘッダ内のデータ長の領域に書き込む。
【０１２３】
このようにすると、通信ミドルウエアによるカプセル化処理が不要となるので、通信性能が高められる。
【０１２４】
図６を用いて、受信時のコピー＆通信装置１２の動作を説明する。
【０１２５】
ａ)  パケット通信回路１３は、パケットを受信すると、バス１５を介して、メモリ１４内の受信ディスクリプタ１４３２に転送し、ＣＰＵ１１に受信したことを伝える。
【０１２６】
ｂ)  ＣＰＵ１１のデバイスドライバは、コピー＆演算装置１２を起動する。コピー＆演算装置１２は、そのパケットを受信ディスクリプタ１４３２から読み出し、ワークエリア１４２内の指定された領域にコピーを開始する。それと同時に、コピー＆演算装置１２は、そのパケットの構成を解析し、ヘッダ部分とデータ部分とに分けて、ワークエリア１４２にコピーする。コピー＆演算装置１２は、送信元アドレスと送信先アドレスとを取り出し、データ長を計算する。コピー終了後、コピー＆演算装置１２は、データ長と送信元アドレスと送信先のアドレスとを、同じくワークエリア１４２内に書き込み、ＣＰＵ１１に知らせる。
【０１２７】
ｃ)  通信ミドルウエアは、ワークエリア１４２内のデータ長と送信元アドレスと送信先アドレスの値を用いて処理する。その後、Ｗｅｂサーバなどのアプリケーションソフトウエアが実行される。通信ミドルウエアは、カプセルが解かれているため、データのみの処理となり、受信処理が高速になる。また、ヘッダに対する処理が必要な場合でも、ヘッダ部がワークエリア内１４２にコピーされており、処理可能である。
【０１２８】
図７を用いて、送信時のコピー＆通信装置１２の動作を説明する。
【０１２９】
ｄ)  Ｗｅｂサーバなどのアプリケーションソフトウエアから出力されたデータは、通信ミドルウエアにより処理され、ワークエリア１４２内に置かれる。ワークエリア１４２内に置かれたデータは、ＩＰパケットやイーサネット（Ｒ）にカプセル化されている。
【０１３０】
ｅ)  ＣＰＵ１１のデバイスドライバは、送信元アドレスと送信先アドレスとをワークエリア１４２に書き込み、コピー＆演算装置１２を起動する。コピー＆演算装置１２は、ワークエリア１４２内のデータを読み出し、送信ディスクリプタ１４３１内の指定された領域にコピーを開始する。このとき、コピー＆演算装置１２は、ワークエリア１４２内から読み出した送信先アドレスと送信元アドレスとで構成したヘッダを送信ディスクリプタ１４３１にコピーした後、このデータ本体をコピーし、カプセル化する。
【０１３１】
ｆ）  コピー＆演算装置１２は、ＣＰＵ１１が送信するデータにヘッダを付加し、カプセル化する。送信ディスクリプタ１４３１にヘッダ部分をコピーし、その後、このＩＰパケット本体をコピーする。このとき、コピー＆演算装置１２は、送信ディスクリプタ１４３１にコピーしたパケット長を計算している。コピー＆演算装置１２は、コピー終了後、コピー先の送信ディスクリプタ１４３１内にあるパケットの指定された領域に、計算したパケット長を書き込み、書き込みがあったことをＣＰＵ１１に連絡する。
【０１３２】
ｇ)  デバイスドライバは、書き込みの連絡を受けて、パケット通信回路１３の送信を起動する。パケット通信回路１３は、送信ディスクリプタ１４３１内の無線パケットを送信する。
【０１３３】
以上の処理手順により、コピー＆通信回路１２は、送信データをワークエリア１４２から送信ディスクリプタ１４３１にコピーする際に、無線パケットに変換するとともにパケット長を計算する。
【０１３４】
このコピー＆演算方式は、無線ＬＡＮの通信パケットばかりではなく、他の通信パケットにカプセル化する際にも使用できる。
【図面の簡単な説明】
【０１３５】
【図１】本発明によるパケット通信装置を適用すべき遠隔監視／制御システムの構成の一例を示す図である。
【図２】本発明によるパケット通信装置の一実施形態の構成を示すブロック図である。
【図３】本発明によるパケット通信装置のメモリに格納されているプログラムの機能構成を示すブロック図である。
【図４】本発明によるパケット通信装置で使用するＴＣＰ／ＩＰ通信プロトコルの構造を示す図である。
【図５】本発明によるパケット通信装置１がＴＣＰ／ＩＰ通信パケットをイーサネット（Ｒ）パケットでカプセル化し送信／受信するパケットの構成の一例を示す図である。
【図６】本発明によるパケット通信装置におけるパケット受信時のデータの流れを示す図である。
【図７】本発明によるパケット通信装置におけるパケット送信時のデータの流れを示す図である。
【図８】本発明によるコピー＆演算装置の内部構成を示すブロック図である。
【図９】図８のコピー＆演算装置のチェックサム演算回路の内部構成を示すブロック図である。
【図１０】本発明によるパケット通信装置の一実施形態の図２とは異なる構成を示すブロック図である。
【符号の説明】
【０１３６】
１  パケット通信装置
２  ネットワーク
３  ネットワーク端末
４  制御対象
１１  ＣＰＵ
１２  コピー＆演算装置
１２１  制御回路
１２２  レジスタ
１２３  チェックサム演算回路
１２３１  １６ｂｉｔチェックサム演算器
１２３２  セレクタ
１２３３  ビット反転器
１２３４  キャリー信号
１２４  メモリコピー装置
１２５  バス
１３  パケット通信回路
１４  メモリ
１４１  プログラム
１４２  ワークエリア
１４３  ディスクリプタ
１４３１  送信ディスクリプタ
１４３２  受信ディスクリプタ
１５  バス
１６  外バスＩ／Ｆ回路
２１  ＬＡＮ
２２  インターネット
２３  ＧＷまたはモデム
１００  パケット通信ＬＳＩ
１０１  外バス
【図１】
2005102037.tif 000003
【図２】
2005102037.tif 000004
【図３】
2005102037.tif 000005
【図４】
2005102037.tif 000006
【図５】
2005102037.tif 000007
【図６】
2005102037.tif 000008
【図７】
2005102037.tif 000009
【図８】
2005102037.tif 000010
【図９】
2005102037.tif 000011
【図１０】
2005102037.tif 000012
【手続補正書】
【提出日】平成16年7月27日(2004.7.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の記憶領域と第２の記憶領域とを有するメモリと共に用いられるパケット通信装置において、
ＣＰＵと、
ネットワークを介してパケットの送受信を行うパケット通信回路と、
前記メモリの前記第１の記憶領域に記憶された送信パケットを前記第２の記憶領域にコピーするとともに、前記送信パケットに対して演算を行う演算装置と、を有し、
前記パケット通信回路は、前記ＣＰＵまたは前記演算装置によって前記第２の記憶領域に書き込まれた演算された送信パケットを前記ネットワークへ出力するパケット通信装置。
【請求項２】
第１の記憶領域と第２の記憶領域とを有するメモリと、
ＣＰＵと、
ネットワークを介してパケットの送受信を行うパケット通信回路と、
前記メモリの前記第１の記憶領域に記憶された送信パケットを前記第２の記憶領域にコピーするとともに、前記送信パケットに対して演算を行う演算装置と、を有し、
前記パケット通信回路は、前記ＣＰＵまたは前記演算装置によって前記第２の記憶領域に書き込まれた演算された送信パケットを前記ネットワークへ出力するパケット通信装置。
【請求項３】
請求項１又は２記載のパケット通信装置において、
前記パケット通信回路は、前記ネットワークを介して受信された受信パケットを前記メモリの前記第２の記憶領域に記憶し、
前記演算装置は、前記第２の記憶領域に格納された受信パケットを前記第１の記憶領域にコピーするとともに、前記受信パケットに対して演算を行うパケット通信装置。
【請求項４】
請求項１又は２記載のパケット通信装置において、
前記ＣＰＵは、前記演算装置に対して、前記送信パケット又は受信パケットのコピーのみのモードと、前記送信パケット又は前記受信パケットの演算のみのモードとの切り換えを可能とする切り替え指令を有するパケット通信装置。
【請求項５】
請求項１又は２記載のパケット通信装置において、
前記演算装置は、前記送信パケット又は受信パケットを演算するチェックサム演算装置であるパケット通信装置。
【請求項６】
請求項５記載のパケット通信装置において、
前記チェックサム演算装置は、演算対象のデータ長を可変とすることが可能であるパケット通信装置。
【請求項７】
請求項５又は６記載のパケット通信装置において、
前記演算装置は、前記第１の記憶領域内のパケットにチェックサム情報が無い場合、コピー先の前記第２の記憶領域内に記憶されたパケットとともに、コピー元の前記第１の記憶領域内のパケットにも、チェックサム演算の結果を書き込むパケット通信装置。