(57)【要約】【課題】  情報処理装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際に、複数の送信パケットの通信ヘッダを一度の設定で異なる通信ヘッダを自動生成し、情報処理装置の送信処理能力を向上させる。【解決手段】  情報処理装置に接続され、当該情報処理装置をネットワークに接続するためのネットワーク通信装置であって、情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すＮを決定する決定部と、転送要求に応じたひな形の通信ヘッダからＮ個の通信ヘッダを生成すると共に、転送すべき情報をＮ個のペイロードに分割する生成部と、パケット数分の通信ヘッダにおける第１番目、第２乃至Ｎ−１番目、第Ｎ番目の通信ヘッダに焚いて異なる編集を行う編集部と、編集部による編集を経た通信ヘッダとペイロードとの組み合わせたＮ個のパケットをネットワークに向けて送信する送信部とを有する。【選択図】  図１
2018196024.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置をネットワークに接続するための通信装置であって、
前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すＮを決定する決定手段と、
前記転送要求に応じたひな形の通信ヘッダに基づいてＮ個の通信ヘッダを生成する生成手段と、
前記転送すべき情報をＮ個のペイロードに分割する分割手段と、
前記生成手段により生成された通信ヘッダと前記ペイロードとの組み合わせたＮ個のパケットをネットワークに向けて送信する送信手段と、
を有し、
前記生成手段は、前記Ｎ個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該Ｎ個の通信ヘッダのうち、第１番目、第２乃至Ｎ−１番目、第Ｎ番目の通信ヘッダの少なくとも１つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成することを特徴とする通信装置。
【請求項２】
前記生成手段による編集の内容を設定する設定手段を更に有することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記転送要求に含まれる指示は、通信ヘッダのＴＣＰヘッダのフラグ情報であることを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記転送要求に含まれる指示は、通信ヘッダのＩＰヘッダのフラグ情報であることを特徴とする請求項１又は２に記載の通信装置。
【請求項５】
前記生成手段は、一度の実行の指示に対してＴＣＰヘッダのフラグ情報の編集の内容として、
第１番目の通信ヘッダのフラグ情報の各要素のいずれかにフラグを立て、第１番目ではない通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理、
第Ｎ番目の通信ヘッダの前記フラグ情報の各要素のいずれかにフラグを立て、第Ｎ番目ではない通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理、
全ての通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理
のいずれかを実行することを特徴とする請求項３に記載の通信装置。
【請求項６】
前記生成手段は、一度の実行の指示に対してＩＰヘッダのフラグ情報の編集の内容として、
第１番目から第Ｎ−１番目の通信ヘッダの前記フラグ情報のＭＦ（Ｍｏｒｅ  Ｆｒａｇｍｅｎｔ）の要素のフラグを立て、第Ｎ番目の通信ヘッダの前記フラグ情報のＭＦの要素のみフラグを立てない処理、
全ての通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理
のいずれかを実行することを特徴とする請求項４に記載の通信装置。
【請求項７】
前記通信ヘッダはＥｔｈｅｒヘッダ、ＩＰｖ４ヘッダもしくはＩＰｖ６ヘッダ、ＴＣＰヘッダもしくはＵＤＰヘッダで構成されていることを特徴とする請求項１乃至６のいずれか１項に記載の通信装置。
【請求項８】
情報処理装置をネットワークに接続するための通信装置の制御方法であって、
決定手段が、前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すＮを決定する決定工程と、
生成手段が、前記転送要求に応じたひな形の通信ヘッダに基づいてＮ個の通信ヘッダを生成する生成工程と、
分割手段が、前記転送すべき情報をＮ個のペイロードに分割する分割工程と、
送信手段が、前記生成工程により生成された通信ヘッダと前記ペイロードとの組み合わせたＮ個のパケットをネットワークに向けて送信する送信工程と、
を有し、
前記生成工程は、前記Ｎ個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該Ｎ個の通信ヘッダのうち、第１番目、第２乃至Ｎ−１番目、第Ｎ番目の通信ヘッダの少なくとも１つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成する
ことを特徴とする通信装置の制御方法。
【請求項９】
請求項１乃至７のいずれか１項に記載の通信装置を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信プロトコル処理における送信パケットの通信ヘッダ生成技術に関するものである。
【背景技術】
【０００２】
近年、スマートデバイスと呼ばれる多機能端末を利用して、ネットワーク経由による高解像度動画（８Ｋ／４Ｋ）の閲覧のニーズが高まっている。当然、この結果、ネットワーク上のデータトラフィックが増大することになる。Ｅｔｈｅｒｎｅｔ（登録商標）による１０Ｇｂｐｓ通信、移動体通信の５Ｇ通信などのネットワーク高速化は、ＴＣＰ／ＵＤＰ／ＩＰなどの通信プロトコル処理に対するＣＰＵの負荷が大きくなることを意味する。それ故、ＣＰＵによる通信プロトコル処理の負荷を低減させつつ、これらの高速データ通信を実現するために施策が提案されている。
【０００３】
通信プロトコル処理は、国際標準化機構（ＩＳＯ）によって策定された階層構造に分割したＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルとして７つの階層に分けて定義されている。
【０００４】
そして、通信プロトコル処理の送信を高速化する処理方法としてＴＳＯ（ＴＣＰ  Ｓｅｇｍｅｎｔａｔｉｏｎ  Ｏｆｆｌｏａｄ）がある。ＴＳＯはＣＰＵで実行する通信プロトコル処理の一部（ＴＣＰセグメント処理）をオフロードして、ＣＰＵにかかる負荷を低減するものである。なお、このＴＣＰセグメント処理は、ＯＳＩ参照モデルで定義されるアプリケーション層で生成された送信データを下位レイヤである通信レイヤで使用する通信パケットに変換する処理である。
【０００５】
ＴＣＰセグメント処理の例として、特許文献１に記載されている送信パケット生成方法が知られている。この方法は、最初にペイロード分割部が、アプリケーション層で生成された転送可能長を超える送信データを転送可能長に分割して送信ペイロードを生成する。そして、ヘッダ生成部が、分割した送信ペイロードに付与するヘッダを生成する。そして、ヘッダ／ペイロード合成部が、生成されたヘッダと分割された送信ペイロードとを合成して送信パケットを完成させるものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−８１０３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載した送信パケット生成方法は、転送可能長を超える送信データの一括入力に対して、順に送信データから送信パケットを生成し、順次送信パケットをネットワークから送出するようになっている。そして、送信パケット用のペイロード分割方法は、アプリケーション層で生成された送信データをペイロード分割部が一括で送信ペイロードに分割する方法である。
【０００８】
しかしながら、特許文献１では、分割された送信ペイロードに付与するヘッダをヘッダ生成部が一つずつ生成する方法となっている。そのため、このヘッダ生成方法ではヘッダを生成するたびにヘッダ情報とヘッダ生成指示情報が必要となるので、ヘッダ情報の収集や指示情報の生成に時間がかるという課題がある。
【課題を解決するための手段】
【０００９】
この課題を解決するため、例えば本発明の通信装置は以下の構成を備える。すなわち、
情報処理装置をネットワークに接続するための通信装置であって、
前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すＮを決定する決定手段と、
前記転送要求に応じたひな形の通信ヘッダに基づいてＮ個の通信ヘッダを生成する生成手段と、
前記転送すべき情報をＮ個のペイロードに分割する分割手段と、
前記生成手段により生成された通信ヘッダと前記ペイロードとの組み合わせたＮ個のパケットをネットワークに向けて送信する送信手段と、
を有し、
前記生成手段は、前記Ｎ個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該Ｎ個の通信ヘッダのうち、第１番目、第２乃至Ｎ−１番目、第Ｎ番目の通信ヘッダの少なくとも１つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成することを特徴とする。
【発明の効果】
【００１０】
本発明により、情報処理装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際に、複数の送信パケットの通信ヘッダを一度の設定で異なる通信ヘッダを自動生成することが可能となる。これにより送信情報を分割して複数の送信パケットを一度の設定によって高速に生成でき、情報処理装置の送信処理能力を向上させることが可能になる。
【図面の簡単な説明】
【００１１】
【図１】実施形態における通信装置の機能ブロック図。
【図２】実施形態における通信装置の送信動作フローチャート。
【図３】実施形態におけるレジスタ設定情報の例を示す図。
【図４】実施形態における送信パケットの通信ヘッダを示す図。
【図５】実施形態における通信ヘッダ生成処理を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１３】
［第１の実施形態］
図１は、第１の実施形態における通信装置１００の機能ブロックを示した図である。通信装置１００は、主な機能ブロックとしてメインＣＰＵ１０２とメインメモリ１０３と通信プロトコル処理を実行するサブシステム１０４で構成される。そして、通信装置１００内の各機能ブロック１０２〜１０４はシステムバス１０１を介して相互に接続されている。
【００１４】
通信装置１００は、例えば、パーソナルコンピュータやスマートホン等の情報処理装置又は端末装置であり、サブシステム１０４はＮＩＣ（Network Interface Card）等のネットワーク通信用のインターフェース部であると考えると理解しやすい。なお、ネットワークの通信形態は有線、無線を問わない。なお、サブシステム１０４は、通信装置１００となる基板に実装されるＡＳＩＣ等で実現しても良いし、ＰＣＩ-Ｅｘｐｒｅｓｓ等の汎用バスに接続するカードであっても構わない。さらには、ＵＳＢに接続されるデバイスであっても構わない。
【００１５】
メインＣＰＵ１０２は、ＯＳＩ参照モデルで定義されるアプリケーション層でアプリケーションソフトウエアを実行し、同時に通信装置全体の制御も実行する。メインＣＰＵ１０２は、アプリケーションソフトウエアを実行する上で必要となるＯＳ（オペレーティングシステム），データや各種ドライバプログラムなどを不図示の外部記憶装置からメインメモリ１０３にロードし、実行することになる。
【００１６】
メインメモリ１０３は、通信装置内の各機能ブロックが共有して利用可能なメモリとなっており、主にＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に代表されるような半導体メモリで構成されている。内部の領域は、ＯＳやプログラムを格納する領域、アプリケーションソフトウエアが使用するアプリケーションバッファ領域などに分けられる。
【００１７】
サブシステム１０４は、主な機能ブロックとして、サブＣＰＵ１０６、ローカルメモリ１０７、ヘッダ処理部１１１、ＤＭＡコントローラ１０８、通信インターフェース１０９とで構成される。そして、ローカルバス１０５を介して、上記参照符号１０６乃至１０９が互いに接続されている。
【００１８】
サブシステム１０４は、通信装置における通信プロトコル処理を実行するサブシステムであり、特にＴＣＰ／ＩＰプロトコルといった通信プロトコル処理に特化して外部機器とネットワークを介したデータ転送処理を担う。そして、通信プロトコル処理専用のハードウェアを装備して高速な通信プロトコル処理をメインＣＰＵ１０２に代わって実行する。なお、ＴＣＰ／ＩＰプロトコルは説明を行うために示した一例であり、通信プロトコルの種類はこれに限らない。
【００１９】
サブＣＰＵ１０６は、通信プロトコル処理を実行する。具体的には、サブＣＰＵ１０６は、ＩＰｖ４（ＩＰバージョン４）、ＩＰｖ６（ＩＰバージョン６）、ＵＤＰ、ＴＣＰの各通信プロトコル処理（送信シーケンス制御や輻輳制御、通信エラー制御等）を行う。またサブＣＰＵ１０６は、１つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、プロセッサと一部の機能をアクセラレートするハードウェアで構成してもよい。
【００２０】
ローカルメモリ１０７は、サブシステム１０４のサブＣＰＵ１０６が利用可能なメモリとなっており、主にＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に代表されるような半導体メモリで構成されている。また、メインＣＰＵ１０２もシステムバス１０１とローカルバス１０５を経由して、このローカルメモリ１０７をアクセス可能になっている。
【００２１】
ＤＭＡコントローラ１０８は、サブＣＰＵ１０６からの指示により、ＤＭＡ転送を実行する。ＤＭＡコントローラ１０８は、デスクリプタに記載された内容に従ってＤＭＡ転送を実行する。ここでデスクリプタとは、データ転送を行うソース側のアドレス情報、ディスティネーション側のアドレス情報、そしてデータ転送の転送サイズ等の情報が記載された情報である。サブＣＰＵ１０６はローカルメモリ１０７にデスクリプタの書き込み完了後、ＤＭＡコントローラ１０８に対してＤＭＡ転送開始指示を通知する。このため、サブＣＰＵ１０６は、デスクリプタを保存しているローカルメモリ１０７のアドレス情報を、ＤＭＡコントローラ１０８に通知（設定）することになる。
【００２２】
この通知を受けたＤＭＡコントローラ１０８は、メインメモリ１０３とローカルメモリ１０７間、内部メモリ１１３とローカルメモリ１０７間のＤＭＡ転送を実行する。さらにＤＭＡコントローラ１０８は、内部メモリ１１３と通信インターフェース間、ローカルメモリ１０７と通信インターフェース間のＤＭＡ転送処理も実行する。
【００２３】
通信インターフェース１０９は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に代表されるようなネットワーク１１０とのインターフェースとなっており、通信における物理層（ＰＨＹ層）とデータリンク層（ＭＡＣ層）の通信制御を担っている。内部に送受信情報を一時的に蓄積するバッファメモリを装備する。ＤＭＡコントローラ１０８は、このバッファメモリを介してＤＭＡ転送を行い、ネットワークとの間での送受信情報の入出力が行われることになる。なお、通信インターフェース１０９がＤＭＡコントローラ１０８を内蔵して、そのＤＭＡコントローラを使用する構成であっても良い。
【００２４】
ヘッダ処理部１１１は、主な機能ブロックとして、レジスタ部１１２、内部メモリ１１３、及び、コア部１１４で構成される。そして、ヘッダ処理部１１１は、これらを利用して、通信プロトコル処理における通信ヘッダ生成処理を担っている。具体的にはヘッダ処理部１１１は、サブＣＰＵ１０６が実行する通信プロトコル処理における通信ヘッダ生成処理を肩代わりして実行する。
【００２５】
レジスタ部１１２は、コア制御部１１８がヘッダ複製部１１５とヘッダ編集部１１６とスイッチ１１７を制御するための設定情報を記憶する。さらに、レジスタ部１１２は、各機能ブロック１１５〜１１７の状態を確認するためのステータス情報も記憶する。
【００２６】
そして、サブＣＰＵ１０６は、ひな形となるヘッダ情報（以下、ひな形ヘッダ）と通信ヘッダ生成のための編集情報をセットするため、レジスタ部１１２に設定情報を格納する。
【００２７】
コア部１１４は、ヘッダ複製部１１５、ヘッダ編集部１１６、スイッチ１１７、コア制御部１１８で構成される。コア部１１４は、レジスタ部１１２の設定情報に従って、通信ヘッダ生成処理を実行し、内部メモリ１１３に生成した通信ヘッダを格納する。
【００２８】
内部メモリ１１３は、ヘッダ処理部１１１のコア部１１４やサブＣＰＵ１０６が利用可能なメモリとなっており、主にＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に代表されるような半導体メモリで構成されている。内部メモリ１１３は、コア部１１４により生成された通信ヘッダを記憶する。
【００２９】
コア制御部１１８は、レジスタ部１１２に設定された設定情報に従って、ヘッダ複製部１１５、ヘッダ編集部１１６、及び、スイッチ１１７を制御する。
【００３０】
ヘッダ複製部１１５は、コア制御部１１８の指示によりレジスタ部１１２内にセットされているひな形ヘッダ情報を、スイッチ１１７を介して内部メモリ１１３に、指示された回数だけ複製（格納）する。
【００３１】
ヘッダ編集部１１６は、コア制御部１１８の指示に従って、内部メモリ１１３に複製された各ひな形ヘッダ情報の編集を実行する。このとき、ヘッダ編集部１１６は、各ひな形ヘッダ情報の必要な部分だけをスイッチ１１７を介して上書きする。また、ヘッダ編集部１１６は、内部メモリ１１３に複製された各ひな形ヘッダ情報の編集する際に、編集処理を行ったヘッダの数をカウントする機能も装備している。
【００３２】
スイッチ１１７は、コア制御部１１８の指示で、ヘッダ複製部１１５、ヘッダ編集部１１６のいずれかと、内部メモリ１１３とのデータパスの接続を切り替える。
【００３３】
次に図１に示す通信装置１００において、ネットワーク１１０を介して外部機器と接続し、その外部機器へ送信パケットを送信する際の通信装置１００内の動作フローを、図２のフローチャートを参照して説明する。ここでは通信装置１００が外部機器との間でデータ転送する際に使用する通信プロトコルとしてＴＣＰ／ＩＰプロトコルを例に説明している。なお、ＴＣＰ／ＩＰプロトコルを例にするのは、広く知られている代表的なプロトコルとすることで、技術内容を容易に把握できるためである。あくまで例示として理解されたい。
【００３４】
Ｓ２０１(端子)：
この端子は、このフローチャートのスタートを示している。通信装置１００がネットワーク１１０を介して外部機器と通信状態になっていることを示している。
【００３５】
Ｓ２０２（処理）：
メインＣＰＵ１０２で実行されるアプリケーションソフトウエアが、外部機器へ送信するための送信情報を、メインメモリ１０３のアプリケーションバッファ領域に準備する。そして、アプリケーションバッファ領域に送信情報が所定の量まで蓄積されると、メインＣＰＵ１０２は、サブＣＰＵ１０６に対して外部機器へ送信する送信情報の準備が完了したことを通知する処理を行う。つまり、メインＣＰＵ１０２は、サブＣＰＵ１０６に対して転送要求を発行する。
【００３６】
なお、この通知には、現在の通信状態を示す情報も含まれる。例えばＴＣＰプロトコルを使用した通信接続を開始することを示す情報である。あるいは、ＴＣＰプロトコルを使用したデータ転送を開始することを示す情報である。あるいは、ＴＣＰプロトコルを使用した通信の切断処理を開始する情報である。
【００３７】
Ｓ２０３（条件判断）：
この条件判断は、メインＣＰＵ１０２で実行されるアプリケーションソフトウエアが外部機器へ送信するための送信情報の準備ができたかどうかを条件として経路選択を行うことを示している。メインメモリ１０３のアプリケーションバッファ領域への、外部機器へ送信するための送信情報の蓄積が完了している場合は、Ｓ２０４に処理を移行し、そうでなければＳ２０２に処理を戻す。
【００３８】
なお、この条件判断は、サブＣＰＵ１０６が、Ｓ２０２の処理で発行された通知を受け取ったかどうかの応答に基づき、メインＣＰＵ１０２が判断する。
【００３９】
Ｓ２０４（処理）：
この処理は、サブＣＰＵ１０６が、外部機器へ通信プロトコルに従った送信を実行するための送信情報を、メインメモリ１０３からサブシステム１０４内のローカルメモリ１０７へ移動する処理を示している。
【００４０】
ここではサブＣＰＵ１０６が、Ｓ２０２の処理でメインＣＰＵ１０２から受け取った通知に基づき、メインメモリ１０３からローカルメモリ１０７へ送信情報のＤＭＡ転送を行う。ＤＭＡ転送の設定は、サブＣＰＵ１０６がＤＭＡ転送の内容を記載したデスクリプタを生成してローカルメモリ１０７に保存する。そして、サブＣＰＵ１０６は、このデスクリプタを保存したローカルメモリ１０７のアドレス情報を、ＤＭＡコントローラ１０８に設定する。この結果、ＤＭＡコントローラ１０８は、メインメモリ１０３からローカルメモリ１０７へ送信情報の転送を行うことになる。このＤＭＡ転送の完了をもってサブＣＰＵ１０６による通信プロトコルに従った送信処理の準備が完了したことになる。
【００４１】
Ｓ２０５（処理）：
この処理は、サブＣＰＵ１０６が、Ｓ２０４の処理にて受け取った送信情報を分割して送信パケットのペイロード部分を確定させる処理、並びに、ヘッダ処理部１１１が送信パケットの通信ヘッダ部分を生成する処理を示している。
【００４２】
そのため、まず、サブＣＰＵ１０６はローカルメモリ１０７に移動した送信情報から、送信パケット１個当たりのサイズと、送信パケットの数を決定する。次に、サブＣＰＵ１０６は、ヘッダ処理部１１１が送信パケットの通信ヘッダ部分を生成するために必要となる情報をレジスタ部１１２に設定し、ヘッダ処理部１１１を起動する。起動したヘッダ処理部１１１は、生成する送信パケットの数と同数の通信ヘッダをヘッダ処理部１１１内の内部メモリ１１３に生成する処理を実行する。これにより、送信パケットのペイロード部分の確定と通信ヘッダ部分の生成が完了する。
【００４３】
なお、Ｓ２０２の処理による通知に含まれる現在の通信状態に応じて、サブＣＰＵ１０６はヘッダ処理部１１１のレジスタ部１１２に設定内容を変化させる。これにより、ヘッダ処理部１１１が内部メモリ１１３に生成する通信ヘッダは現在の通信状態に応じた通信ヘッダとして生成される。例えばＴＣＰプロトコルを使用した通信接続を開始する状態であれば通信を開始するために必要となる通信ヘッダが生成される。あるいは、ＴＣＰプロトコルを使用したデータ転送を開始する状態であればデータ転送を開始するために必要となる通信ヘッダが生成される。あるいは、ＴＣＰプロトコルを使用した通信の切断処理を開始する状態であれば通信を切断するために必要となる通信ヘッダが生成される。なお、詳細な説明は、図３から図５を使用して後述する。
【００４４】
Ｓ２０６（処理）：
この処理は、サブＣＰＵ１０６がＳ２０５の処理で確定したペイロード部分と、生成した通信ヘッダ部分とから送信パケットを生成して、通信インターフェース１０９を介して外部機器へ送信する処理を示している。
【００４５】
まず、サブＣＰＵ１０６はローカルメモリ１０７内の送信情報をペイロード単位で切り出し、内部メモリ１１３に生成された各通信ヘッダと結合して１つの送信パケットとして転送するＤＭＡ転送設定を実施する。具体的には、サブＣＰＵ１０６は、内部メモリ１１３に格納された１つの通信ヘッダと、それに後続してローカルメモリ１０７に格納された該当するペイロードとを、通信インターフェース１０９へ転送する。このヘッダとペイロードの１組の転送を１セットとしたとき、この送信すべきパケット数分のセット処理を繰り返されることになる。この転送はＤＭＡコントローラ１０８によるＤＭＡ転送によって実行される。サブＣＰＵ１０６によってＤＭＡ転送が起動されると、送信パケット（は通信イターフェース１０９へ転送される。
【００４６】
次に、通信インターフェース１０９においてデータリンク層（ＭＡＣ層）や物理層（ＰＨＹ層）の通信処理を行った後、ネットワークを介して外部機器へ、生成された送信パケットが順次送信される。
【００４７】
Ｓ２０７（条件判断）：
この条件判断は、通信装置１００と外部機器の通信状態を終了させる要因が発生したかどうかを条件として経路選択を行うことを示している。外部機器との通信状態を終了させる要因が発生した場合は処理記号Ｓ２０８へ移行し、そうでなければＳ２０２の条件判断へ移行する。
【００４８】
ここではメインＣＰＵ１０２で実行しているアプリケーションソフトウエアにおいてユーザからの操作などで通信装置と外部機器の接続を終了させる指示を検知した場合は上記の要因となる。また、ユーザがネットワークケーブルを通信装置から抜くなどして通信回線が断絶したことを通信インターフェース１０９が検知した場合も上記の要因となる。また、通信相手である外部機器から通信回線を切断する旨の通知を含んだ受信パケットを受信した場合も上記の要因となる。
【００４９】
Ｓ２０８（処理）：
この処理は、通信装置１００と外部機器の通信状態を終了させる処理を示している。詳細にはサブＣＰＵ１０６が担っている通信プロトコル処理に従って外部機器との通信回線を切断する。そして、ローカルメモリ１０７やヘッダ処理部１１１の内部メモリ１１３に一時的に保存している関連情報を削除する。その後、サブＣＰＵ１０６からメインＣＰＵ１０２へ通信回線の切断完了の通知が伝達されるとアプリケーションソフトウエアで通信回線が切断した事をユーザなど示す表示を行う処理となる。
【００５０】
Ｓ２０９（端子）：
この端子は、このフローチャートの終了を示している。通信装置はネットワークを介して外部機器と通信状態に無いことを示している。
【００５１】
次に、図２におけるＳ２０５の処理におけるヘッダ処理部１１１のレジスタ部１１２に、サブＣＰＵ１０６が設定する設定情報の例を図３に示す。
【００５２】
図示の参照符号３０１は、ひな形ヘッダであり、ヘッダ処理部１１１で複製して複数の通信ヘッダを生成する際の元となるヘッダ情報である。内部構成としては例えばＯＳＩ参照モデルに規定されるトランスポート層のＴＣＰヘッダと、ネットワーク層のＩＰヘッダ部に分けられる。ＴＣＰヘッダやＩＰヘッダは各層における通信プロトコル処理を実行するときに使用される。
【００５３】
なお、ひな形ヘッダはＴＣＰヘッダとＩＰヘッダだけでなくＥｔｈｅｒヘッダを含んでもよい。Ｅｔｈｅｒヘッダとは送信先のＭＡＣアドレスや送信元のＭＡＣアドレスが記載されているＯＳＩ参照モデルに規定されるデータリンク層で使用される通信ヘッダである。また、ひな形ヘッダにＴＣＰヘッダの代わりにＵＤＰヘッダを使用しても構わない。
【００５４】
参照符号３０２から３０４は、通信ヘッダを生成するために必要となる編集情報である。編集情報は、ひな形ヘッダを複製する回数を指定する複製数情報３０２、生成する通信ヘッダの種別を指定するプロトコル種別情報３０３、及び、ひな形ヘッダを複製して作成した通信ヘッダのどの部分をどのように修正するかを指定するヘッダ修正情報３０４である。
【００５５】
ここで、ヘッダ修正情報３０４は２ビットある。例えば‘００’の場合は「０」値、‘０１’の場合は「１」値、‘１０’の場合は「２」値である。また‘１１’の場合は禁止としている。サブＣＰＵ１０６がヘッダ修正情報３０４に「２」値をセットした時、先頭の通信ヘッダが編集される。また「１」値がセットされた場合、最後尾ヘッダが編集される。そして、「０」値がセットされた場合には、中間ヘッダが編集される。なお、ヘッダ修正情報３０４のヘッダ修正情報を使用して、どのように通信ヘッダを修正されるかについては図５を使用して後述する。
【００５６】
次に図２で説明したＳ２０５の処理において、ヘッダ処理部１１１の内部メモリ１１３に生成される通信ヘッダの例を図４に示す。
【００５７】
Ｓ２０５の処理にてヘッダ処理部１１１のヘッダ複製部１１５が、ひな形ヘッダを内部メモリ１１３に複製して、生成された中間生成物である通信ヘッダが、図示の参照符号４０１である。この通信ヘッダ４０１は、レジスタ部１１２に設定されたひな形ヘッダ３０１を複製元とし、複製数情報３０２で指定された個数分複製されて内部メモリ１１３に生成される。
【００５８】
その後、ヘッダ編集部１１６が、プロトコル種別情報３０３とヘッダ修正情報３０４に従って、中間生成物である通信ヘッダ４０１のそれぞれを修正して、完成した通信ヘッダ４０２〜４０４を作成する。なお、通信ヘッダ数をＮ個としたとき、通信ヘッダ４０２は第１番目の通信ヘッダ、通信ヘッダ４０３は第２乃至Ｎ−１番目の通信ヘッダ、通信ヘッダ４０４は第Ｎ番目の通信ヘッダを意味する。
【００５９】
その後、Ｓ２０６の処理にて、外部機器に送信される場合は、完成した通信ヘッダ４０２〜４０４は、それぞれのペイロードと結合するため、順次、通信インターフェース１０９にＤＭＡコントローラ１０８により転送される。そして、完成した送信パケットが、通信インターフェース１０９から外部装置にネットワーク１１０を介して送信宛先に向けて送信されることになる。
【００６０】
この時、先頭に送信される送信パケットの通信ヘッダが参照符号４０２である。そして、先頭と最後尾との間の中間に送信される送信パケットの通信ヘッダが参照符号４０３である。そして、最後尾に送信される送信パケットの通信ヘッダが参照符号４０４である。
【００６１】
通信ヘッダを完成させるために複製して生成された通信ヘッダ４０１のＴＣＰヘッダ部、およびＩＰヘッダ部の一部に対して、ヘッダ編集部１１６はヘッダ修正情報３０４に従って上書きして書き換えを実施する。先頭に送信される送信パケットの通信ヘッダ４０２であれば参照符号４０５と４０６で示した部位を上書きして書き換える。そして、中間に送信される送信パケットの通信ヘッダ４０３であれば参照符号４０７と４０８で示した部位を上書きして書き換える。そして、最後尾に送信される送信パケットの通信ヘッダ４０４であれば参照符号４０９と４１０で示した部位を上書きして書き換える。
【００６２】
なお、内部メモリ１１３内に複製される通信ヘッダ４０１はＴＣＰヘッダとＩＰヘッダだけでなくＥｔｈｅｒヘッダを含んでもよい。Ｅｔｈｅｒヘッダとは送信先のＭＡＣアドレスや送信元のＭＡＣアドレスが記載されているＯＳＩ参照モデルに規定されるデータリンク層で使用される通信ヘッダである。
【００６３】
ここで、部位４０６，４０８，４１０の書き換える情報としては、例えばＴＣＰとして規定される通信プロトコルのフラグ情報であり、ＵＲＧ、ＡＣＫ、ＰＳＨ、ＲＳＴ、ＳＹＮ、ＦＩＮなどの情報となっている。これらは通信路の確立や切断などに使用される。
【００６４】
ＵＲＧは緊急時に優先して処理を実行するデータを含むことを意味する情報である。ＡＣＫはＴＣＰヘッダにある応答確認番号が有効であることを意味する情報である。ＰＳＨは受信したデータを即座に上位レイヤに渡すことを意味する情報である。ＲＳＴはＴＣＰコネクションを強制的に切断することを意味する情報である。ＳＹＮはＴＣＰコネクションの確立要求を意味する情報である。そして、ＦＩＮはＴＣＰコネクションの切断要求を意味する情報である。
【００６５】
例えばＴＣＰプロトコルを使用した通信接続を開始する状態であれば通信を開始するために必要となるＳＹＮが‘１’となる。あるいは、ＴＣＰプロトコルを使用したデータ転送を開始する状態であればデータ転送を開始するために必要となるＡＣＫが‘１’となる。あるいは、ＴＣＰプロトコルを使用した通信の切断処理を開始する状態であれば通信を切断するために必要となるＦＩＮが‘１’となる。部位４０６，４０８，４１０の情報としては他にもシーケンス番号、チェックサムなどの情報も含まれる。
【００６６】
部位４０６，４０８，４１０の情報が通信ヘッダ（４０２〜４０４）のどこに位置するかは、プロトコル種別情報３０３とヘッダ修正情報３０４によって特定される。例えば、プロトコル種別情報３０３に設定される情報からＥｔｈｅｒヘッダの長さ、ＩＰヘッダの長さを特定する。そして、ヘッダ修正情報３０４に設定される情報からＴＣＰヘッダの先頭アドレスからのオフセット値を特定する。そして、Ｅｔｈｅｒヘッダの長さ、ＩＰヘッダの長さ、ＴＣＰヘッダの先頭アドレスからのオフセット値から通信ヘッダ４０２〜４０４の部位４０６，４０８，４１０の情報の位置を算出することが可能となる。
【００６７】
また、部位４０５，４０７，４０９の情報としては、例えばＩＰとして規定される通信プロトコルのフラグ情報であり、ＤＦ、ＭＦなどの情報となっている。ＤＦは分断してはいけないことを意味する情報であり、ＭＦは最後尾のパケットであるかどうかを意味する情報である。その他、部位４０５，４０７，４０９の情報としてはパケットの長さ情報やＩＤ情報、チェックサムなどの情報も含まれる。
【００６８】
部位４０５，４０７，４０９の情報が通信ヘッダ４０２〜４０４のどこに位置するかは、プロトコル種別情報３０３とヘッダ修正情報３０４によって特定される。例えば、プロトコル種別情報３０３に設定される情報からＩＰｖ４ヘッダかＩＰｖ６ヘッダかを特定する。そして、ヘッダ修正情報３０４に設定される情報からＩＰヘッダの先頭アドレスからのオフセット値を特定する。そして、ＩＰヘッダがＩＰｖ４ヘッダであることと、ＩＰヘッダの先頭アドレスからのオフセット値から通信ヘッダ４０２〜４０４の部位４０５，４０７，４０９の位置を算出することが可能となる。
【００６９】
次に図５のフローチャートは、図２におけるヘッダ修正部１１６によるＳ２０５の処理の詳細な動作フローを示している。以下、同図を参照して、ヘッダ編集部１１６による通信ヘッダのフラグ部分を生成する処理を説明する。
【００７０】
Ｓ２０４（端子）：
この端子は、このフローチャートのスタートを示しており、図２のＳ２０４の処理に相当する。Ｓ２０４の処理が完了することで、Ｓ５０１へ処理が移行することになる。
【００７１】
Ｓ５０１（処理）：
この処理は、ヘッダ編集部（１１６）において最小単位のカウントアップのみを実行する処理を示している。最小単位のカウントアップを行った後、Ｓ５０２の条件判断処理に移行する。例えば、Ｓ２０１の端子から移行した時に、ヘッダ編集部１１６は最初のカウントアップを実行してカウンタ値を‘１’とする。その後、Ｓ５１３の条件判断から移行してきたときにカウントアップを実施してカウンタ値を‘２’とする。以降、Ｓ５１３の条件判断から移行する度にカウントアップを実施して、カウンタ値を‘３’、‘４’…のようにカウントアップする処理となる。
【００７２】
この処理は、ヘッダ編集部１１６が内部メモリ１１３内のそれぞれの通信ヘッダ４０１に対してヘッダ修正情報３０４に従って上書き修正を行った通信ヘッダの個数をカウントする意味をもっている。
【００７３】
Ｓ５０２（条件判断）：
この条件判断は、サブＣＰＵ１０６が決定したヘッダ修正情報３０４の設定内容が‘１０’（＝２）あるかを条件として、経路選択を行うことを示している。設定内容が‘１０’（＝２）であればＳ５０３の処理へ移行し、そうでなければＳ５０６の条件判断へ移行する。
【００７４】
ここでヘッダ修正情報３０４の設定内容は、ヘッダ編集部１１６によって判断される。
【００７５】
Ｓ５０３（条件判断）：
この条件判断記号は、ヘッダ編集部１１６が内部のカウンタの値が先頭の通信ヘッダ４０２に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば初期値の最小値（‘１’）となっていればＳ５０４の処理へ移行し、そうでなければＳ５０５の処理へ移行する。ここで、カウンタの値と先頭の通信ヘッダとの対応付けは予めサブＣＰＵ１０６によって設定されている。
【００７６】
Ｓ５０４（処理）：
この処理は、先頭の通信ヘッダ４０２を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正処理することを示している。例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報の要素であるＡＣＫやＳＹＮフラグを‘１’にするなどの処理となる。
【００７７】
Ｓ５０５（処理）：
この処理は、先頭の通信ヘッダ４０２以外を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正処理することを示している。
【００７８】
例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報の全てを‘０’にするなどの処理となる。
【００７９】
Ｓ５０６（条件判断）：
この条件判断は、サブＣＰＵ１０６が決定したヘッダ修正情報３０４の設定内容が‘０１’（＝１）であるかを条件として、経路選択を行うことを示している。設定内容が‘０１’（＝１）であればＳ５０７の処理へ移行し、そうでなければＳ５１０の条件判断へ移行する。ここでヘッダ修正情報３０４の設定内容はヘッダ編集部１１６によって判断される。
【００８０】
Ｓ５０７（条件判断）：
この条件判断は、ヘッダ編集部１１６が内部のカウンタの値が最後尾の通信ヘッダ４０４に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば設定された最大値となっていればＳ５０８の処理へ移行し、そうでなければＳ５０９の処理へ移行する。ここで、カウンタの値と最後尾の通信ヘッダとの対応付けは予めサブＣＰＵ１０６によって設定されている。
【００８１】
Ｓ５０８（処理）：
この処理は、最後尾の通信ヘッダ４０４を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正を行う処理である。例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報であるＦＩＮフラグを‘１’にするなどの処理となる。同様にＩＰとして規定される通信プロトコルのフラグ情報であるＭＦフラグを‘０’にするなどの処理となる。
【００８２】
Ｓ５０９（処理）：
この処理は、最後尾の通信ヘッダ４０４以外を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正処理することを示している。例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報の全てを‘０’にするなどの処理となる。同様にＩＰとして規定される通信プロトコルのフラグ情報であるＭＦ（Ｍｏｒｅ  Ｆｒａｇｍｅｎｔ）フラグを‘１’にするなどの処理となる。
【００８３】
Ｓ５１０（条件判断）：
この条件判断は、ヘッダ編集部１１６が内部のカウンタの値が中間の通信ヘッダ４０３に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば設定された範囲の値となっていればＳ５１１の処理へ移行し、そうでなければＳ５１２の処理へ移行する。ここで、カウンタの値と中間の通信ヘッダ群との対応付けは予めサブＣＰＵ１０６によって設定されている。
【００８４】
Ｓ５１１（処理）：
この処理は、中間の通信ヘッダ４０３を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正処理することを示している。例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報であるＡＣＫやＦＩＮフラグを‘０’にするなどの処理となる。
【００８５】
Ｓ５１２（処理）：
この処理は、中間の通信ヘッダ４０２以外を生成するためにヘッダ修正情報３０４に従って通信ヘッダ４０１の対応する部分に上書きして修正処理することを示している。例えば、ＴＣＰとして規定される通信プロトコルのフラグ情報の全てを‘０’にするなどの処理となる。
【００８６】
Ｓ５１３（条件判断）：
この条件判断は、Ｓ５０１の処理でカウントアップされたカウンタの値が設定した最大値（最終パケット）になっているかどうかを条件として、経路選択を行うことを示している。カウンタの値が設定した最大値であればＳ５１４の処理へ移行し、そうでなければＳ５０１の処理へ移行する。ここで、カウンタの値によって生成した通信ヘッダが所定の数に達したかどうか判断される。また、カウンタの値と通信ヘッダの総数との対応付けは予めサブＣＰＵ１０６によって設定されている。
【００８７】
Ｓ５１４（処理）：
この処理は、ヘッダ編集部１１６においてカウンタの値を初期値にリセットする処理を示している。例えばカウンタの値を‘０’とすることで初期値とする。
【００８８】
Ｓ２０６（端子）：
この端子は、このフローチャートの終了を示している。Ｓ５１４の処理が完了することで図２におけるＳ２０６へ処理が移行することを示している。
【００８９】
以上説明したように本実施形態によれば、通信装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際、一度の設定で異なる、複数の通信ヘッダを自動生成することが可能となる。これにより送信情報を分割して複数の送信パケットを一度の設定によって高速に生成することが可能となり、これまでと比較して、通信装置の送信処理能力を向上させることが可能になる。
【符号の説明】
【００９０】
１００…通信装置、１０２…メインＣＰＵ、１０３…メインメモリ、１０４…サブシステム、１０６…サブＣＰＵ、１０７…ローカルメモリ、１０８…ＤＭＡコントローラ、１０９…通信インターフェース、１１１…ヘッダ処理部、１１２…レジスタ部、１１３…内部メモリ、１１４…コア部、１１５…ヘッダ複製部、１１６…ヘッダ編集部、１１７…スイッチ、１１８…コア制御部
【図１】
2018196024.tif 000003
【図２】
2018196024.tif 000004
【図３】
2018196024.tif 000005
【図４】
2018196024.tif 000006
【図５】
2018196024.tif 000007