[go: up one dir, main page]

JP2018196024A - 通信装置及びその制御方法、並びに、情報処理装置 - Google Patents

通信装置及びその制御方法、並びに、情報処理装置 Download PDF

Info

Publication number
JP2018196024A
JP2018196024A JP2017099210A JP2017099210A JP2018196024A JP 2018196024 A JP2018196024 A JP 2018196024A JP 2017099210 A JP2017099210 A JP 2017099210A JP 2017099210 A JP2017099210 A JP 2017099210A JP 2018196024 A JP2018196024 A JP 2018196024A
Authority
JP
Japan
Prior art keywords
communication
header
information
flag
network
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
JP2017099210A
Other languages
English (en)
Other versions
JP2018196024A5 (ja
Inventor
松本 仁
Hitoshi Matsumoto
仁 松本
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2017099210A priority Critical patent/JP2018196024A/ja
Publication of JP2018196024A publication Critical patent/JP2018196024A/ja
Publication of JP2018196024A5 publication Critical patent/JP2018196024A5/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

【課題】 情報処理装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際に、複数の送信パケットの通信ヘッダを一度の設定で異なる通信ヘッダを自動生成し、情報処理装置の送信処理能力を向上させる。【解決手段】 情報処理装置に接続され、当該情報処理装置をネットワークに接続するためのネットワーク通信装置であって、情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すNを決定する決定部と、転送要求に応じたひな形の通信ヘッダからN個の通信ヘッダを生成すると共に、転送すべき情報をN個のペイロードに分割する生成部と、パケット数分の通信ヘッダにおける第1番目、第2乃至N−1番目、第N番目の通信ヘッダに焚いて異なる編集を行う編集部と、編集部による編集を経た通信ヘッダとペイロードとの組み合わせたN個のパケットをネットワークに向けて送信する送信部とを有する。【選択図】 図1

Description

本発明は通信プロトコル処理における送信パケットの通信ヘッダ生成技術に関するものである。
近年、スマートデバイスと呼ばれる多機能端末を利用して、ネットワーク経由による高解像度動画(8K/4K)の閲覧のニーズが高まっている。当然、この結果、ネットワーク上のデータトラフィックが増大することになる。Ethernet(登録商標)による10Gbps通信、移動体通信の5G通信などのネットワーク高速化は、TCP/UDP/IPなどの通信プロトコル処理に対するCPUの負荷が大きくなることを意味する。それ故、CPUによる通信プロトコル処理の負荷を低減させつつ、これらの高速データ通信を実現するために施策が提案されている。
通信プロトコル処理は、国際標準化機構(ISO)によって策定された階層構造に分割したOSI(Open Systems Interconnection)参照モデルとして7つの階層に分けて定義されている。
そして、通信プロトコル処理の送信を高速化する処理方法としてTSO(TCP Segmentation Offload)がある。TSOはCPUで実行する通信プロトコル処理の一部(TCPセグメント処理)をオフロードして、CPUにかかる負荷を低減するものである。なお、このTCPセグメント処理は、OSI参照モデルで定義されるアプリケーション層で生成された送信データを下位レイヤである通信レイヤで使用する通信パケットに変換する処理である。
TCPセグメント処理の例として、特許文献1に記載されている送信パケット生成方法が知られている。この方法は、最初にペイロード分割部が、アプリケーション層で生成された転送可能長を超える送信データを転送可能長に分割して送信ペイロードを生成する。そして、ヘッダ生成部が、分割した送信ペイロードに付与するヘッダを生成する。そして、ヘッダ/ペイロード合成部が、生成されたヘッダと分割された送信ペイロードとを合成して送信パケットを完成させるものである。
特開2006−81033号公報
特許文献1に記載した送信パケット生成方法は、転送可能長を超える送信データの一括入力に対して、順に送信データから送信パケットを生成し、順次送信パケットをネットワークから送出するようになっている。そして、送信パケット用のペイロード分割方法は、アプリケーション層で生成された送信データをペイロード分割部が一括で送信ペイロードに分割する方法である。
しかしながら、特許文献1では、分割された送信ペイロードに付与するヘッダをヘッダ生成部が一つずつ生成する方法となっている。そのため、このヘッダ生成方法ではヘッダを生成するたびにヘッダ情報とヘッダ生成指示情報が必要となるので、ヘッダ情報の収集や指示情報の生成に時間がかるという課題がある。
この課題を解決するため、例えば本発明の通信装置は以下の構成を備える。すなわち、
情報処理装置をネットワークに接続するための通信装置であって、
前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すNを決定する決定手段と、
前記転送要求に応じたひな形の通信ヘッダに基づいてN個の通信ヘッダを生成する生成手段と、
前記転送すべき情報をN個のペイロードに分割する分割手段と、
前記生成手段により生成された通信ヘッダと前記ペイロードとの組み合わせたN個のパケットをネットワークに向けて送信する送信手段と、
を有し、
前記生成手段は、前記N個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該N個の通信ヘッダのうち、第1番目、第2乃至N−1番目、第N番目の通信ヘッダの少なくとも1つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成することを特徴とする。
本発明により、情報処理装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際に、複数の送信パケットの通信ヘッダを一度の設定で異なる通信ヘッダを自動生成することが可能となる。これにより送信情報を分割して複数の送信パケットを一度の設定によって高速に生成でき、情報処理装置の送信処理能力を向上させることが可能になる。
実施形態における通信装置の機能ブロック図。 実施形態における通信装置の送信動作フローチャート。 実施形態におけるレジスタ設定情報の例を示す図。 実施形態における送信パケットの通信ヘッダを示す図。 実施形態における通信ヘッダ生成処理を示すフローチャート。
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
[第1の実施形態]
図1は、第1の実施形態における通信装置100の機能ブロックを示した図である。通信装置100は、主な機能ブロックとしてメインCPU102とメインメモリ103と通信プロトコル処理を実行するサブシステム104で構成される。そして、通信装置100内の各機能ブロック102〜104はシステムバス101を介して相互に接続されている。
通信装置100は、例えば、パーソナルコンピュータやスマートホン等の情報処理装置又は端末装置であり、サブシステム104はNIC(Network Interface Card)等のネットワーク通信用のインターフェース部であると考えると理解しやすい。なお、ネットワークの通信形態は有線、無線を問わない。なお、サブシステム104は、通信装置100となる基板に実装されるASIC等で実現しても良いし、PCI-Express等の汎用バスに接続するカードであっても構わない。さらには、USBに接続されるデバイスであっても構わない。
メインCPU102は、OSI参照モデルで定義されるアプリケーション層でアプリケーションソフトウエアを実行し、同時に通信装置全体の制御も実行する。メインCPU102は、アプリケーションソフトウエアを実行する上で必要となるOS(オペレーティングシステム),データや各種ドライバプログラムなどを不図示の外部記憶装置からメインメモリ103にロードし、実行することになる。
メインメモリ103は、通信装置内の各機能ブロックが共有して利用可能なメモリとなっており、主にDRAM(Dynamic Random Access Memory)に代表されるような半導体メモリで構成されている。内部の領域は、OSやプログラムを格納する領域、アプリケーションソフトウエアが使用するアプリケーションバッファ領域などに分けられる。
サブシステム104は、主な機能ブロックとして、サブCPU106、ローカルメモリ107、ヘッダ処理部111、DMAコントローラ108、通信インターフェース109とで構成される。そして、ローカルバス105を介して、上記参照符号106乃至109が互いに接続されている。
サブシステム104は、通信装置における通信プロトコル処理を実行するサブシステムであり、特にTCP/IPプロトコルといった通信プロトコル処理に特化して外部機器とネットワークを介したデータ転送処理を担う。そして、通信プロトコル処理専用のハードウェアを装備して高速な通信プロトコル処理をメインCPU102に代わって実行する。なお、TCP/IPプロトコルは説明を行うために示した一例であり、通信プロトコルの種類はこれに限らない。
サブCPU106は、通信プロトコル処理を実行する。具体的には、サブCPU106は、IPv4(IPバージョン4)、IPv6(IPバージョン6)、UDP、TCPの各通信プロトコル処理(送信シーケンス制御や輻輳制御、通信エラー制御等)を行う。またサブCPU106は、1つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、プロセッサと一部の機能をアクセラレートするハードウェアで構成してもよい。
ローカルメモリ107は、サブシステム104のサブCPU106が利用可能なメモリとなっており、主にSRAM(Static Random Access Memory)に代表されるような半導体メモリで構成されている。また、メインCPU102もシステムバス101とローカルバス105を経由して、このローカルメモリ107をアクセス可能になっている。
DMAコントローラ108は、サブCPU106からの指示により、DMA転送を実行する。DMAコントローラ108は、デスクリプタに記載された内容に従ってDMA転送を実行する。ここでデスクリプタとは、データ転送を行うソース側のアドレス情報、ディスティネーション側のアドレス情報、そしてデータ転送の転送サイズ等の情報が記載された情報である。サブCPU106はローカルメモリ107にデスクリプタの書き込み完了後、DMAコントローラ108に対してDMA転送開始指示を通知する。このため、サブCPU106は、デスクリプタを保存しているローカルメモリ107のアドレス情報を、DMAコントローラ108に通知(設定)することになる。
この通知を受けたDMAコントローラ108は、メインメモリ103とローカルメモリ107間、内部メモリ113とローカルメモリ107間のDMA転送を実行する。さらにDMAコントローラ108は、内部メモリ113と通信インターフェース間、ローカルメモリ107と通信インターフェース間のDMA転送処理も実行する。
通信インターフェース109は、LAN(Local Area Network)に代表されるようなネットワーク110とのインターフェースとなっており、通信における物理層(PHY層)とデータリンク層(MAC層)の通信制御を担っている。内部に送受信情報を一時的に蓄積するバッファメモリを装備する。DMAコントローラ108は、このバッファメモリを介してDMA転送を行い、ネットワークとの間での送受信情報の入出力が行われることになる。なお、通信インターフェース109がDMAコントローラ108を内蔵して、そのDMAコントローラを使用する構成であっても良い。
ヘッダ処理部111は、主な機能ブロックとして、レジスタ部112、内部メモリ113、及び、コア部114で構成される。そして、ヘッダ処理部111は、これらを利用して、通信プロトコル処理における通信ヘッダ生成処理を担っている。具体的にはヘッダ処理部111は、サブCPU106が実行する通信プロトコル処理における通信ヘッダ生成処理を肩代わりして実行する。
レジスタ部112は、コア制御部118がヘッダ複製部115とヘッダ編集部116とスイッチ117を制御するための設定情報を記憶する。さらに、レジスタ部112は、各機能ブロック115〜117の状態を確認するためのステータス情報も記憶する。
そして、サブCPU106は、ひな形となるヘッダ情報(以下、ひな形ヘッダ)と通信ヘッダ生成のための編集情報をセットするため、レジスタ部112に設定情報を格納する。
コア部114は、ヘッダ複製部115、ヘッダ編集部116、スイッチ117、コア制御部118で構成される。コア部114は、レジスタ部112の設定情報に従って、通信ヘッダ生成処理を実行し、内部メモリ113に生成した通信ヘッダを格納する。
内部メモリ113は、ヘッダ処理部111のコア部114やサブCPU106が利用可能なメモリとなっており、主にSRAM(Static Random Access Memory)に代表されるような半導体メモリで構成されている。内部メモリ113は、コア部114により生成された通信ヘッダを記憶する。
コア制御部118は、レジスタ部112に設定された設定情報に従って、ヘッダ複製部115、ヘッダ編集部116、及び、スイッチ117を制御する。
ヘッダ複製部115は、コア制御部118の指示によりレジスタ部112内にセットされているひな形ヘッダ情報を、スイッチ117を介して内部メモリ113に、指示された回数だけ複製(格納)する。
ヘッダ編集部116は、コア制御部118の指示に従って、内部メモリ113に複製された各ひな形ヘッダ情報の編集を実行する。このとき、ヘッダ編集部116は、各ひな形ヘッダ情報の必要な部分だけをスイッチ117を介して上書きする。また、ヘッダ編集部116は、内部メモリ113に複製された各ひな形ヘッダ情報の編集する際に、編集処理を行ったヘッダの数をカウントする機能も装備している。
スイッチ117は、コア制御部118の指示で、ヘッダ複製部115、ヘッダ編集部116のいずれかと、内部メモリ113とのデータパスの接続を切り替える。
次に図1に示す通信装置100において、ネットワーク110を介して外部機器と接続し、その外部機器へ送信パケットを送信する際の通信装置100内の動作フローを、図2のフローチャートを参照して説明する。ここでは通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを例に説明している。なお、TCP/IPプロトコルを例にするのは、広く知られている代表的なプロトコルとすることで、技術内容を容易に把握できるためである。あくまで例示として理解されたい。
S201(端子):
この端子は、このフローチャートのスタートを示している。通信装置100がネットワーク110を介して外部機器と通信状態になっていることを示している。
S202(処理):
メインCPU102で実行されるアプリケーションソフトウエアが、外部機器へ送信するための送信情報を、メインメモリ103のアプリケーションバッファ領域に準備する。そして、アプリケーションバッファ領域に送信情報が所定の量まで蓄積されると、メインCPU102は、サブCPU106に対して外部機器へ送信する送信情報の準備が完了したことを通知する処理を行う。つまり、メインCPU102は、サブCPU106に対して転送要求を発行する。
なお、この通知には、現在の通信状態を示す情報も含まれる。例えばTCPプロトコルを使用した通信接続を開始することを示す情報である。あるいは、TCPプロトコルを使用したデータ転送を開始することを示す情報である。あるいは、TCPプロトコルを使用した通信の切断処理を開始する情報である。
S203(条件判断):
この条件判断は、メインCPU102で実行されるアプリケーションソフトウエアが外部機器へ送信するための送信情報の準備ができたかどうかを条件として経路選択を行うことを示している。メインメモリ103のアプリケーションバッファ領域への、外部機器へ送信するための送信情報の蓄積が完了している場合は、S204に処理を移行し、そうでなければS202に処理を戻す。
なお、この条件判断は、サブCPU106が、S202の処理で発行された通知を受け取ったかどうかの応答に基づき、メインCPU102が判断する。
S204(処理):
この処理は、サブCPU106が、外部機器へ通信プロトコルに従った送信を実行するための送信情報を、メインメモリ103からサブシステム104内のローカルメモリ107へ移動する処理を示している。
ここではサブCPU106が、S202の処理でメインCPU102から受け取った通知に基づき、メインメモリ103からローカルメモリ107へ送信情報のDMA転送を行う。DMA転送の設定は、サブCPU106がDMA転送の内容を記載したデスクリプタを生成してローカルメモリ107に保存する。そして、サブCPU106は、このデスクリプタを保存したローカルメモリ107のアドレス情報を、DMAコントローラ108に設定する。この結果、DMAコントローラ108は、メインメモリ103からローカルメモリ107へ送信情報の転送を行うことになる。このDMA転送の完了をもってサブCPU106による通信プロトコルに従った送信処理の準備が完了したことになる。
S205(処理):
この処理は、サブCPU106が、S204の処理にて受け取った送信情報を分割して送信パケットのペイロード部分を確定させる処理、並びに、ヘッダ処理部111が送信パケットの通信ヘッダ部分を生成する処理を示している。
そのため、まず、サブCPU106はローカルメモリ107に移動した送信情報から、送信パケット1個当たりのサイズと、送信パケットの数を決定する。次に、サブCPU106は、ヘッダ処理部111が送信パケットの通信ヘッダ部分を生成するために必要となる情報をレジスタ部112に設定し、ヘッダ処理部111を起動する。起動したヘッダ処理部111は、生成する送信パケットの数と同数の通信ヘッダをヘッダ処理部111内の内部メモリ113に生成する処理を実行する。これにより、送信パケットのペイロード部分の確定と通信ヘッダ部分の生成が完了する。
なお、S202の処理による通知に含まれる現在の通信状態に応じて、サブCPU106はヘッダ処理部111のレジスタ部112に設定内容を変化させる。これにより、ヘッダ処理部111が内部メモリ113に生成する通信ヘッダは現在の通信状態に応じた通信ヘッダとして生成される。例えばTCPプロトコルを使用した通信接続を開始する状態であれば通信を開始するために必要となる通信ヘッダが生成される。あるいは、TCPプロトコルを使用したデータ転送を開始する状態であればデータ転送を開始するために必要となる通信ヘッダが生成される。あるいは、TCPプロトコルを使用した通信の切断処理を開始する状態であれば通信を切断するために必要となる通信ヘッダが生成される。なお、詳細な説明は、図3から図5を使用して後述する。
S206(処理):
この処理は、サブCPU106がS205の処理で確定したペイロード部分と、生成した通信ヘッダ部分とから送信パケットを生成して、通信インターフェース109を介して外部機器へ送信する処理を示している。
まず、サブCPU106はローカルメモリ107内の送信情報をペイロード単位で切り出し、内部メモリ113に生成された各通信ヘッダと結合して1つの送信パケットとして転送するDMA転送設定を実施する。具体的には、サブCPU106は、内部メモリ113に格納された1つの通信ヘッダと、それに後続してローカルメモリ107に格納された該当するペイロードとを、通信インターフェース109へ転送する。このヘッダとペイロードの1組の転送を1セットとしたとき、この送信すべきパケット数分のセット処理を繰り返されることになる。この転送はDMAコントローラ108によるDMA転送によって実行される。サブCPU106によってDMA転送が起動されると、送信パケット(は通信イターフェース109へ転送される。
次に、通信インターフェース109においてデータリンク層(MAC層)や物理層(PHY層)の通信処理を行った後、ネットワークを介して外部機器へ、生成された送信パケットが順次送信される。
S207(条件判断):
この条件判断は、通信装置100と外部機器の通信状態を終了させる要因が発生したかどうかを条件として経路選択を行うことを示している。外部機器との通信状態を終了させる要因が発生した場合は処理記号S208へ移行し、そうでなければS202の条件判断へ移行する。
ここではメインCPU102で実行しているアプリケーションソフトウエアにおいてユーザからの操作などで通信装置と外部機器の接続を終了させる指示を検知した場合は上記の要因となる。また、ユーザがネットワークケーブルを通信装置から抜くなどして通信回線が断絶したことを通信インターフェース109が検知した場合も上記の要因となる。また、通信相手である外部機器から通信回線を切断する旨の通知を含んだ受信パケットを受信した場合も上記の要因となる。
S208(処理):
この処理は、通信装置100と外部機器の通信状態を終了させる処理を示している。詳細にはサブCPU106が担っている通信プロトコル処理に従って外部機器との通信回線を切断する。そして、ローカルメモリ107やヘッダ処理部111の内部メモリ113に一時的に保存している関連情報を削除する。その後、サブCPU106からメインCPU102へ通信回線の切断完了の通知が伝達されるとアプリケーションソフトウエアで通信回線が切断した事をユーザなど示す表示を行う処理となる。
S209(端子):
この端子は、このフローチャートの終了を示している。通信装置はネットワークを介して外部機器と通信状態に無いことを示している。
次に、図2におけるS205の処理におけるヘッダ処理部111のレジスタ部112に、サブCPU106が設定する設定情報の例を図3に示す。
図示の参照符号301は、ひな形ヘッダであり、ヘッダ処理部111で複製して複数の通信ヘッダを生成する際の元となるヘッダ情報である。内部構成としては例えばOSI参照モデルに規定されるトランスポート層のTCPヘッダと、ネットワーク層のIPヘッダ部に分けられる。TCPヘッダやIPヘッダは各層における通信プロトコル処理を実行するときに使用される。
なお、ひな形ヘッダはTCPヘッダとIPヘッダだけでなくEtherヘッダを含んでもよい。Etherヘッダとは送信先のMACアドレスや送信元のMACアドレスが記載されているOSI参照モデルに規定されるデータリンク層で使用される通信ヘッダである。また、ひな形ヘッダにTCPヘッダの代わりにUDPヘッダを使用しても構わない。
参照符号302から304は、通信ヘッダを生成するために必要となる編集情報である。編集情報は、ひな形ヘッダを複製する回数を指定する複製数情報302、生成する通信ヘッダの種別を指定するプロトコル種別情報303、及び、ひな形ヘッダを複製して作成した通信ヘッダのどの部分をどのように修正するかを指定するヘッダ修正情報304である。
ここで、ヘッダ修正情報304は2ビットある。例えば‘00’の場合は「0」値、‘01’の場合は「1」値、‘10’の場合は「2」値である。また‘11’の場合は禁止としている。サブCPU106がヘッダ修正情報304に「2」値をセットした時、先頭の通信ヘッダが編集される。また「1」値がセットされた場合、最後尾ヘッダが編集される。そして、「0」値がセットされた場合には、中間ヘッダが編集される。なお、ヘッダ修正情報304のヘッダ修正情報を使用して、どのように通信ヘッダを修正されるかについては図5を使用して後述する。
次に図2で説明したS205の処理において、ヘッダ処理部111の内部メモリ113に生成される通信ヘッダの例を図4に示す。
S205の処理にてヘッダ処理部111のヘッダ複製部115が、ひな形ヘッダを内部メモリ113に複製して、生成された中間生成物である通信ヘッダが、図示の参照符号401である。この通信ヘッダ401は、レジスタ部112に設定されたひな形ヘッダ301を複製元とし、複製数情報302で指定された個数分複製されて内部メモリ113に生成される。
その後、ヘッダ編集部116が、プロトコル種別情報303とヘッダ修正情報304に従って、中間生成物である通信ヘッダ401のそれぞれを修正して、完成した通信ヘッダ402〜404を作成する。なお、通信ヘッダ数をN個としたとき、通信ヘッダ402は第1番目の通信ヘッダ、通信ヘッダ403は第2乃至N−1番目の通信ヘッダ、通信ヘッダ404は第N番目の通信ヘッダを意味する。
その後、S206の処理にて、外部機器に送信される場合は、完成した通信ヘッダ402〜404は、それぞれのペイロードと結合するため、順次、通信インターフェース109にDMAコントローラ108により転送される。そして、完成した送信パケットが、通信インターフェース109から外部装置にネットワーク110を介して送信宛先に向けて送信されることになる。
この時、先頭に送信される送信パケットの通信ヘッダが参照符号402である。そして、先頭と最後尾との間の中間に送信される送信パケットの通信ヘッダが参照符号403である。そして、最後尾に送信される送信パケットの通信ヘッダが参照符号404である。
通信ヘッダを完成させるために複製して生成された通信ヘッダ401のTCPヘッダ部、およびIPヘッダ部の一部に対して、ヘッダ編集部116はヘッダ修正情報304に従って上書きして書き換えを実施する。先頭に送信される送信パケットの通信ヘッダ402であれば参照符号405と406で示した部位を上書きして書き換える。そして、中間に送信される送信パケットの通信ヘッダ403であれば参照符号407と408で示した部位を上書きして書き換える。そして、最後尾に送信される送信パケットの通信ヘッダ404であれば参照符号409と410で示した部位を上書きして書き換える。
なお、内部メモリ113内に複製される通信ヘッダ401はTCPヘッダとIPヘッダだけでなくEtherヘッダを含んでもよい。Etherヘッダとは送信先のMACアドレスや送信元のMACアドレスが記載されているOSI参照モデルに規定されるデータリンク層で使用される通信ヘッダである。
ここで、部位406,408,410の書き換える情報としては、例えばTCPとして規定される通信プロトコルのフラグ情報であり、URG、ACK、PSH、RST、SYN、FINなどの情報となっている。これらは通信路の確立や切断などに使用される。
URGは緊急時に優先して処理を実行するデータを含むことを意味する情報である。ACKはTCPヘッダにある応答確認番号が有効であることを意味する情報である。PSHは受信したデータを即座に上位レイヤに渡すことを意味する情報である。RSTはTCPコネクションを強制的に切断することを意味する情報である。SYNはTCPコネクションの確立要求を意味する情報である。そして、FINはTCPコネクションの切断要求を意味する情報である。
例えばTCPプロトコルを使用した通信接続を開始する状態であれば通信を開始するために必要となるSYNが‘1’となる。あるいは、TCPプロトコルを使用したデータ転送を開始する状態であればデータ転送を開始するために必要となるACKが‘1’となる。あるいは、TCPプロトコルを使用した通信の切断処理を開始する状態であれば通信を切断するために必要となるFINが‘1’となる。部位406,408,410の情報としては他にもシーケンス番号、チェックサムなどの情報も含まれる。
部位406,408,410の情報が通信ヘッダ(402〜404)のどこに位置するかは、プロトコル種別情報303とヘッダ修正情報304によって特定される。例えば、プロトコル種別情報303に設定される情報からEtherヘッダの長さ、IPヘッダの長さを特定する。そして、ヘッダ修正情報304に設定される情報からTCPヘッダの先頭アドレスからのオフセット値を特定する。そして、Etherヘッダの長さ、IPヘッダの長さ、TCPヘッダの先頭アドレスからのオフセット値から通信ヘッダ402〜404の部位406,408,410の情報の位置を算出することが可能となる。
また、部位405,407,409の情報としては、例えばIPとして規定される通信プロトコルのフラグ情報であり、DF、MFなどの情報となっている。DFは分断してはいけないことを意味する情報であり、MFは最後尾のパケットであるかどうかを意味する情報である。その他、部位405,407,409の情報としてはパケットの長さ情報やID情報、チェックサムなどの情報も含まれる。
部位405,407,409の情報が通信ヘッダ402〜404のどこに位置するかは、プロトコル種別情報303とヘッダ修正情報304によって特定される。例えば、プロトコル種別情報303に設定される情報からIPv4ヘッダかIPv6ヘッダかを特定する。そして、ヘッダ修正情報304に設定される情報からIPヘッダの先頭アドレスからのオフセット値を特定する。そして、IPヘッダがIPv4ヘッダであることと、IPヘッダの先頭アドレスからのオフセット値から通信ヘッダ402〜404の部位405,407,409の位置を算出することが可能となる。
次に図5のフローチャートは、図2におけるヘッダ修正部116によるS205の処理の詳細な動作フローを示している。以下、同図を参照して、ヘッダ編集部116による通信ヘッダのフラグ部分を生成する処理を説明する。
S204(端子):
この端子は、このフローチャートのスタートを示しており、図2のS204の処理に相当する。S204の処理が完了することで、S501へ処理が移行することになる。
S501(処理):
この処理は、ヘッダ編集部(116)において最小単位のカウントアップのみを実行する処理を示している。最小単位のカウントアップを行った後、S502の条件判断処理に移行する。例えば、S201の端子から移行した時に、ヘッダ編集部116は最初のカウントアップを実行してカウンタ値を‘1’とする。その後、S513の条件判断から移行してきたときにカウントアップを実施してカウンタ値を‘2’とする。以降、S513の条件判断から移行する度にカウントアップを実施して、カウンタ値を‘3’、‘4’…のようにカウントアップする処理となる。
この処理は、ヘッダ編集部116が内部メモリ113内のそれぞれの通信ヘッダ401に対してヘッダ修正情報304に従って上書き修正を行った通信ヘッダの個数をカウントする意味をもっている。
S502(条件判断):
この条件判断は、サブCPU106が決定したヘッダ修正情報304の設定内容が‘10’(=2)あるかを条件として、経路選択を行うことを示している。設定内容が‘10’(=2)であればS503の処理へ移行し、そうでなければS506の条件判断へ移行する。
ここでヘッダ修正情報304の設定内容は、ヘッダ編集部116によって判断される。
S503(条件判断):
この条件判断記号は、ヘッダ編集部116が内部のカウンタの値が先頭の通信ヘッダ402に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば初期値の最小値(‘1’)となっていればS504の処理へ移行し、そうでなければS505の処理へ移行する。ここで、カウンタの値と先頭の通信ヘッダとの対応付けは予めサブCPU106によって設定されている。
S504(処理):
この処理は、先頭の通信ヘッダ402を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正処理することを示している。例えば、TCPとして規定される通信プロトコルのフラグ情報の要素であるACKやSYNフラグを‘1’にするなどの処理となる。
S505(処理):
この処理は、先頭の通信ヘッダ402以外を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正処理することを示している。
例えば、TCPとして規定される通信プロトコルのフラグ情報の全てを‘0’にするなどの処理となる。
S506(条件判断):
この条件判断は、サブCPU106が決定したヘッダ修正情報304の設定内容が‘01’(=1)であるかを条件として、経路選択を行うことを示している。設定内容が‘01’(=1)であればS507の処理へ移行し、そうでなければS510の条件判断へ移行する。ここでヘッダ修正情報304の設定内容はヘッダ編集部116によって判断される。
S507(条件判断):
この条件判断は、ヘッダ編集部116が内部のカウンタの値が最後尾の通信ヘッダ404に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば設定された最大値となっていればS508の処理へ移行し、そうでなければS509の処理へ移行する。ここで、カウンタの値と最後尾の通信ヘッダとの対応付けは予めサブCPU106によって設定されている。
S508(処理):
この処理は、最後尾の通信ヘッダ404を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正を行う処理である。例えば、TCPとして規定される通信プロトコルのフラグ情報であるFINフラグを‘1’にするなどの処理となる。同様にIPとして規定される通信プロトコルのフラグ情報であるMFフラグを‘0’にするなどの処理となる。
S509(処理):
この処理は、最後尾の通信ヘッダ404以外を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正処理することを示している。例えば、TCPとして規定される通信プロトコルのフラグ情報の全てを‘0’にするなどの処理となる。同様にIPとして規定される通信プロトコルのフラグ情報であるMF(More Fragment)フラグを‘1’にするなどの処理となる。
S510(条件判断):
この条件判断は、ヘッダ編集部116が内部のカウンタの値が中間の通信ヘッダ403に対応した値となっているかを条件として、経路選択を行うことを示している。カウンタの値が例えば設定された範囲の値となっていればS511の処理へ移行し、そうでなければS512の処理へ移行する。ここで、カウンタの値と中間の通信ヘッダ群との対応付けは予めサブCPU106によって設定されている。
S511(処理):
この処理は、中間の通信ヘッダ403を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正処理することを示している。例えば、TCPとして規定される通信プロトコルのフラグ情報であるACKやFINフラグを‘0’にするなどの処理となる。
S512(処理):
この処理は、中間の通信ヘッダ402以外を生成するためにヘッダ修正情報304に従って通信ヘッダ401の対応する部分に上書きして修正処理することを示している。例えば、TCPとして規定される通信プロトコルのフラグ情報の全てを‘0’にするなどの処理となる。
S513(条件判断):
この条件判断は、S501の処理でカウントアップされたカウンタの値が設定した最大値(最終パケット)になっているかどうかを条件として、経路選択を行うことを示している。カウンタの値が設定した最大値であればS514の処理へ移行し、そうでなければS501の処理へ移行する。ここで、カウンタの値によって生成した通信ヘッダが所定の数に達したかどうか判断される。また、カウンタの値と通信ヘッダの総数との対応付けは予めサブCPU106によって設定されている。
S514(処理):
この処理は、ヘッダ編集部116においてカウンタの値を初期値にリセットする処理を示している。例えばカウンタの値を‘0’とすることで初期値とする。
S206(端子):
この端子は、このフローチャートの終了を示している。S514の処理が完了することで図2におけるS206へ処理が移行することを示している。
以上説明したように本実施形態によれば、通信装置が外部機器に対してネットワーク経由で送信情報を複数の送信パケットに分割して転送する際、一度の設定で異なる、複数の通信ヘッダを自動生成することが可能となる。これにより送信情報を分割して複数の送信パケットを一度の設定によって高速に生成することが可能となり、これまでと比較して、通信装置の送信処理能力を向上させることが可能になる。
100…通信装置、102…メインCPU、103…メインメモリ、104…サブシステム、106…サブCPU、107…ローカルメモリ、108…DMAコントローラ、109…通信インターフェース、111…ヘッダ処理部、112…レジスタ部、113…内部メモリ、114…コア部、115…ヘッダ複製部、116…ヘッダ編集部、117…スイッチ、118…コア制御部

Claims (9)

  1. 情報処理装置をネットワークに接続するための通信装置であって、
    前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すNを決定する決定手段と、
    前記転送要求に応じたひな形の通信ヘッダに基づいてN個の通信ヘッダを生成する生成手段と、
    前記転送すべき情報をN個のペイロードに分割する分割手段と、
    前記生成手段により生成された通信ヘッダと前記ペイロードとの組み合わせたN個のパケットをネットワークに向けて送信する送信手段と、
    を有し、
    前記生成手段は、前記N個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該N個の通信ヘッダのうち、第1番目、第2乃至N−1番目、第N番目の通信ヘッダの少なくとも1つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成することを特徴とする通信装置。
  2. 前記生成手段による編集の内容を設定する設定手段を更に有することを特徴とする請求項1に記載の通信装置。
  3. 前記転送要求に含まれる指示は、通信ヘッダのTCPヘッダのフラグ情報であることを特徴とする請求項1又は2に記載の通信装置。
  4. 前記転送要求に含まれる指示は、通信ヘッダのIPヘッダのフラグ情報であることを特徴とする請求項1又は2に記載の通信装置。
  5. 前記生成手段は、一度の実行の指示に対してTCPヘッダのフラグ情報の編集の内容として、
    第1番目の通信ヘッダのフラグ情報の各要素のいずれかにフラグを立て、第1番目ではない通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理、
    第N番目の通信ヘッダの前記フラグ情報の各要素のいずれかにフラグを立て、第N番目ではない通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理、
    全ての通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理
    のいずれかを実行することを特徴とする請求項3に記載の通信装置。
  6. 前記生成手段は、一度の実行の指示に対してIPヘッダのフラグ情報の編集の内容として、
    第1番目から第N−1番目の通信ヘッダの前記フラグ情報のMF(More Fragment)の要素のフラグを立て、第N番目の通信ヘッダの前記フラグ情報のMFの要素のみフラグを立てない処理、
    全ての通信ヘッダの前記フラグ情報の各要素のいずれにもフラグを立てない処理
    のいずれかを実行することを特徴とする請求項4に記載の通信装置。
  7. 前記通信ヘッダはEtherヘッダ、IPv4ヘッダもしくはIPv6ヘッダ、TCPヘッダもしくはUDPヘッダで構成されていることを特徴とする請求項1乃至6のいずれか1項に記載の通信装置。
  8. 情報処理装置をネットワークに接続するための通信装置の制御方法であって、
    決定手段が、前記情報処理装置からネットワークへの転送要求を受信した場合、転送すべき情報のサイズからパケット数を表すNを決定する決定工程と、
    生成手段が、前記転送要求に応じたひな形の通信ヘッダに基づいてN個の通信ヘッダを生成する生成工程と、
    分割手段が、前記転送すべき情報をN個のペイロードに分割する分割工程と、
    送信手段が、前記生成工程により生成された通信ヘッダと前記ペイロードとの組み合わせたN個のパケットをネットワークに向けて送信する送信工程と、
    を有し、
    前記生成工程は、前記N個の通信ヘッダを生成する際に、前記転送要求に含まれる指示に従って、当該N個の通信ヘッダのうち、第1番目、第2乃至N−1番目、第N番目の通信ヘッダの少なくとも1つの通信ヘッダについて、前記ひな形の通信ヘッダを編集して生成する
    ことを特徴とする通信装置の制御方法。
  9. 請求項1乃至7のいずれか1項に記載の通信装置を有する情報処理装置。
JP2017099210A 2017-05-18 2017-05-18 通信装置及びその制御方法、並びに、情報処理装置 Pending JP2018196024A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017099210A JP2018196024A (ja) 2017-05-18 2017-05-18 通信装置及びその制御方法、並びに、情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017099210A JP2018196024A (ja) 2017-05-18 2017-05-18 通信装置及びその制御方法、並びに、情報処理装置

Publications (2)

Publication Number Publication Date
JP2018196024A true JP2018196024A (ja) 2018-12-06
JP2018196024A5 JP2018196024A5 (ja) 2020-07-09

Family

ID=64571865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017099210A Pending JP2018196024A (ja) 2017-05-18 2017-05-18 通信装置及びその制御方法、並びに、情報処理装置

Country Status (1)

Country Link
JP (1) JP2018196024A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003229905A (ja) * 2002-02-05 2003-08-15 Sony Corp 送信装置、受信装置およびそれらの方法
JP2006005878A (ja) * 2004-06-21 2006-01-05 Fujitsu Ltd 通信システムの制御方法、通信制御装置、プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003229905A (ja) * 2002-02-05 2003-08-15 Sony Corp 送信装置、受信装置およびそれらの方法
JP2006005878A (ja) * 2004-06-21 2006-01-05 Fujitsu Ltd 通信システムの制御方法、通信制御装置、プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION", RFC 791, JPN6021011703, September 1981 (1981-09-01), ISSN: 0004627852 *

Similar Documents

Publication Publication Date Title
US11489945B2 (en) TCP packet processing method, toe component, and network device
CN107360096B (zh) 一种vxlan报文的转发方法及系统
WO2018082382A1 (zh) 一种混合接入网络中处理报文的方法及网络设备
WO2022017454A1 (zh) 一种报文处理方法、网络设备以及相关设备
JP6234236B2 (ja) 通信装置
CN103281369B (zh) 报文处理方法及广域网加速控制器woc
CN108200221B (zh) 一种网络地址转换环境中转换规则同步方法及装置
CN107819708A (zh) 基于虚拟机迁移的数据处理方法、系统及设备
US20070291782A1 (en) Acknowledgement filtering
CN100579075C (zh) 一种快速响应icmp回送请求报文的方法
JP2018196024A (ja) 通信装置及びその制御方法、並びに、情報処理装置
JP2019114947A (ja) 通信装置、通信装置の制御方法およびプログラム
JP5699985B2 (ja) Tcp通信高速化装置
CN111586730A (zh) 一种应用于轨道交通的无线通信方法及系统
CN113098780B (zh) 虚拟网络的报文处理方法、电子设备及存储介质
CN116566914A (zh) 旁路tcp加速方法、装置、设备及介质
CN103457853A (zh) 通信方法与设备
CN104378778A (zh) 物联网中主从站之间进行通信的方法、系统及转换网关
CN110445721B (zh) 一种报文转发方法及装置
JP6873953B2 (ja) 通信装置、通信装置の制御方法およびプログラム
CN113923199A (zh) 一种数据通信传输优化方法及系统
JP2012049883A (ja) 通信装置およびパケット処理方法
JP7423223B2 (ja) 通信装置
US20250370978A1 (en) Packet replication and deduplication over multiple access technologies
JP7027145B2 (ja) 通信装置、通信装置の制御方法およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200513

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200513

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210531

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211029