JP6618330B2 - 通信装置及びその方法、コンピュータプログラム - Google Patents

通信装置及びその方法、コンピュータプログラム Download PDF

Info

Publication number
JP6618330B2
JP6618330B2 JP2015212333A JP2015212333A JP6618330B2 JP 6618330 B2 JP6618330 B2 JP 6618330B2 JP 2015212333 A JP2015212333 A JP 2015212333A JP 2015212333 A JP2015212333 A JP 2015212333A JP 6618330 B2 JP6618330 B2 JP 6618330B2
Authority
JP
Japan
Prior art keywords
packet
length
memory
communication
determined
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.)
Active
Application number
JP2015212333A
Other languages
English (en)
Other versions
JP2017085378A (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.)
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 JP2015212333A priority Critical patent/JP6618330B2/ja
Publication of JP2017085378A publication Critical patent/JP2017085378A/ja
Application granted granted Critical
Publication of JP6618330B2 publication Critical patent/JP6618330B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は通信装置及びその方法、コンピュータプログラムに関する。
従来、パケット通信において、通信の信頼性を保障するため、セグメントを受け取った際にACK(Acknowledgement)と呼ばれる確認応答を用いる通信方式がある。例えば、インターネット通信において広く利用されているTCP/IPでは、セグメントをオクテット単位にシーケンス番号で管理し、受け取ったセグメントのシーケンス番号をACKパケットとして応答する必要がある。TCP/IPとは、Transmission Control Protocol/Internet Protocolの略称である。
TCP/IPのプロトコル処理では、通信データのパケット化や再送処理のために、ネットワークバッファが用意されている。TCP/IPパケットの送信において、ユーザのデータ送信命令に従って指定されたユーザデータがネットワークバッファにコピーされ、MTU(Maximum Transmission Unit、最大伝送単位)に分割される。そして、TCPヘッダとIPヘッダが追加されたTCP/IPパケットが生成される。伝送経路がEthernet(登録商標)の場合、さらに、Ethernet(登録商標)ヘッダが付加されたEthernet(登録商標)フレームが生成されて、送信される。
ユーザバッファからネットワークバッファへのデータコピーや、チェックサムの計算において広範囲なメモリアクセスが行われるため、メモリアクセスが遅いとTCP/IPパケットを高速に生成することができない。そこで、TCP/IP通信を高速にするため、ネットワークバッファとしてDRAMの代わりにより高速アクセスが可能なSRAMを利用した構成が知られている(特許文献1)。DRAMはDynamic RAM(Random Access Memory:書込み可能メモリ)の略称であり、SRAMはStatic RAMの略称である。
もっとも、高速アクセス可能なSRAMは、コストやチップ面積などの制限からメモリサイズを大きくすることができず、充分な量のネットワークバッファをSRAMに割り当てることができないことが一般的である。そのため、主にデータの送信を実施する通信装置においては、高速なデータ転送を必要とするコネクションの送信パケットを格納する際に、SRAMに割り当てたネットワークバッファを優先的に利用することが知られている。この場合、受信パケットについては、DRAMに割り当てたネットワークバッファを利用する。また、送信パケットのうち、高速なデータ転送を必要としないコネクションの送信パケットについてはDRAMに割り当てたネットワークバッファを利用する。
特開2006−101401号公報
しかし、TCP通信では、ACKパケットの受信によって送信済みデータの到達確認をして、新たに送信するデータの決定をすることから、データの送信を行う場合でも受信したACKパケットのヘッダを効率的に解析することが求められる。そのため、受信パケットを一律にDRAMに割り当てたネットワークバッファに格納すると、受信パケットの解析に要する時間がボトルネックとなって、十分なデータ送信性能が得られないという課題があった。
本発明は上記課題に鑑みなされたものであり、高速にアクセス可能なメモリを有効利用して高速なデータ転送を可能とする技術を提供することを目的とする。
上記目的を達成するため、本発明による通信装置は以下の構成を備える。即ち、
第一のメモリと、
前記第一のメモリよりも高速に読み書きが可能な第二のメモリと、
相手装置からパケットを受信した場合に、当該パケットの長さが、確認応答パケットの長さに基づく所定の閾値を超えるか否かを判定する判定手段と、
前記相手装置から受信したパケットの長さが前記閾値を超えると判定された場合、当該パケットを前記第一のメモリに格納し、超えないと判定された場合、当該パケットを前記第二のメモリに格納する格納手段と
を備え
前記所定の閾値は、前記相手装置から送出される確認応答パケットの長さと、前記第二のメモリの空き容量の大きさとに基づいて決定される
本発明によれば、高速にアクセス可能なメモリを有効利用してより高速なデータ転送を可能とする技術を提供することができる。
通信システムの全体構成を示す図 送信側ホストの構成を示すブロック図 送信側ホストの動作を示すフローチャート 送信側ホストの動作を示すフローチャート 送信側ホストの動作を示すフローチャート タイムスタンプオプションのフォーマットを示す図 SACKオプションのフォーマットを示す図 ネットワークバッファ領域の内部を表すブロック図 送信側ホストの動作を示すフローチャート
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<実施形態1>
本発明の第一の実施形態(実施形態1)では、TCP/IPプロトコルスタックの処理を行うデータ送信ホストでデータ送信を効率的に実施するために、受信したパケットをSRAMかDRAMのネットワークバッファに振り分けて転送する構成を説明する。なお、本実施形態ではトランスポート層のプロトコルとしてTCPを使用する例を説明するが、トランスポート層のプロトコルとして、確認応答を伴うTCP以外のストリーム型プロトコルを使用してもよい。またトランスポート層でデータグラム型プロトコルを使用して、アプリケーション層で確認応答を伴うストリーム型通信を実現するプロトコルを使用してもよい。
(システム構成)
図1はデータ通信を行うシステムの全体構成図である。通信システムでは、送信側ホスト101と受信側ホスト102がネットワーク103を介して通信可能な状況を表している。
送信側ホスト101、受信側ホスト102は、TCP/IPプロトコルスタックに基づく通信を行う通信装置である。送信側ホスト101、受信側ホスト102は、パーソナルコンピュータ(PC)、タブレット端末、スマートフォン等のTCP/IP通信を行う情報処理装置や、プリンタ、複合機、デジタルカメラ等の画像処理装置により構成することができる。ネットワーク103は、TCP/IPプロトコルスタックに基づく通信を仲介するネットワークである。ネットワーク103は、典型的にはインターネットであるが、公衆通信網に限らず、例えば、Ethernet(登録商標)等により構築されたローカルエリアネットワーク(LAN)により構成してもよい。また、ネットワーク103は有線、無線の何れであってもよい。
図2は本実施形態における送信側ホスト101のブロック図である。CPU201は中央演算処理装置であり、送信側ホスト101全体の動作を制御する。ROM202は読出し専用メモリであり、基本プログラムや基本処理に使用するデータ等を記憶する。CPU201は、ROM202や不図示のHDDなどのメモリに格納された各種コンピュータプログラムを実行する。書き込み可能なメモリであるDRAM203や、DRAM203よりも高速に読み書きが可能なSRAM204は、CPU201のワークメモリとして使用される。また、DRAM203、SRAM204は、通信装置が相手装置へ送信するパケットや受信したパケットを一時的に保持するバッファとして用いられる。
CPU201が実行するプログラムにはネットワークドライバが含まれる。ネットワークドライバの実行により、送信データをパケット化するデータ処理や確認応答(ACK)パケットの受信処理などを含むプロトコル処理の機能が実現される。
メディアアクセス制御モジュール(MAC)205と物理レイヤモジュール(PHY)206は、Ethernet(登録商標)207や無線LANアンテナ208などを介して通信を行う通信部である。CPU201は、ネットワークドライバを実行し、MAC205やPHY206を制御してデータの送受信を行う。また、本実施形態の送信側ホスト101は、受信したパケットをDRAM203とSRAM204のどちらのネットワークバッファに格納するのかを決定するパケット格納先決定部209を備える。
受信側ホスト102も送信側ホスト101と同様の構成を備えているが、TCP/IPプロトコルスタックに基づく通信を行うことが可能ならば、どのような構成でもよい。
(処理手順)
本実施形態では、TCPプロトコルスタックに基づきデータを送信する場合に、ACKパケットの長さと、SRAM204のネットワークバッファの空き容量を比較し、より小さい方の値を閾値として設定する。そして、パケットを受信したときは、そのサイズが閾値以下のときのみそのパケットをSRAMに格納し、閾値を超えるサイズのパケットはDRAMに格納する。このため、SRAMに空き容量がある限り、受信したACKパケットを優先的にSRAMに格納するため、ACKパケットを高速に解析して高速にデータを送信することができる。
図3は、本実施形態における送信側ホスト101による動作の手順を示したフローチャートである。図3の各ステップは、CPU201の制御に基づき実行される。
図3のS301で、送信側ホスト101および受信側ホスト102は、ホスト間のコネクションを確立する。S302で送信側ホスト101は、アプリケーションからの命令に従い、受信側ホスト102に対してデータパケットの送信を行い、受信側ホスト102からの確認応答(ACK)パケットを受信するまで待機する。
その後、S303でMAC205に受信パケットが到達したら、S304でパケット格納先決定部209を用いて、受信パケットの格納先となるネットワークバッファの選択を行うための閾値を算出する。閾値の算出は、受信側ホスト102から送信されるACKパケットの長さやSRAM204のネットワークバッファの空き容量を基に行う。ここで、受信側ホスト102から送信されるACKパケットの長さを算出する手法として、例えばEthernet(登録商標)を使用した通信を行っていた場合は、下記の式を用いることができる。

ACKパケットの長さ = Ethernetヘッダ長(14bytes)
+IPv4ヘッダ長(20bytes)
+TCPヘッダ長(20bytes)

ここで、Ethernetではなく、異なるリンク層のプロトコルを使用する場合は、そのプロトコルのヘッダ長に合わせてACKパケットの長さを計算してもよい。また、送信側ホスト101が複数のネットワークインタフェースを持っており、かつネットワークインタフェースごとに異なるリンク層プロトコルを用いる場合がある。このような場合には、使用しているリンク層プロトコルの中で最もヘッダ長の長いプロトコルのヘッダ長を使用してもよい。これによって、SRAM204に空き容量がある限り、すべてのネットワークインタフェースから受信されるACKパケットをSRAM204に格納できるようにする。上式で算出したACKパケットの長さと、SRAM204のネットワークバッファの空き容量を比較し、より小さい方の値を閾値として使用する。
以上の処理よって得られた閾値を用いて、S305でパケット格納先決定部209が受信パケットの長さとS304で決定した閾値とを比較する。その結果、受信パケットの長さが閾値を超える場合(S305でYES)には、S306でDRAM203のネットワークバッファに受信パケットを格納する。そうでない場合(S305でNO)即ち受信パケットの長さが閾値以下の場合には、S307でSRAM204のネットワークバッファに受信パケットを格納する。
DRAM203もしくはSRAM204のいずれかのネットワークバッファに格納された受信パケットは、S308でプロトコルスタックの各層で解析され、必要な処理を実施する。S308で、送信パケットに対するACKパケットが受信されたら、S309で受信側ホスト102に対して未送信のデータがあるかどうかを判定する。未送信データがある場合(S309でYES)にはS302に戻って上述の処理を繰り返し実行し、ない場合(S309でNO)には処理を終了する。
以上のように、本実施形態では、受信パケットを、その長さによってDRAM203かSRAM204のいずれかのネットワークバッファに振り分ける。すなわち、相手装置からパケットを受信した場合に、当該パケットの長さが所定の閾値を超えるか否かを判定する。そして、パケットの長さが閾値を超えると判定されたときは、そのパケットを第一のメモリに格納し、閾値を超えないと判定されたときは、そのパケットを第一のメモリよりも高速に読み書きが可能な第二のメモリに格納する。ここで、この閾値として、確認応答パケットの長さと、SRAM204の空き容量の大きさとのいずれか小さい値に決定する。このため、大きなデータサイズを持つ受信パケットよるSRAM204の占有を避けつつ、ACKパケットをSRAM204のネットワークバッファに格納することが可能になる。したがって、送信データをSRAM204のネットワークバッファに保持したまま、ACKパケットの解析を効率的に実施することが可能となり、データ送信速度を向上させることが可能になる。
なお、図3のフローチャートにおいて、S303でパケットを受信した後に閾値の算出を行ったが、パケットを受信する前に閾値の算出を行うようにしてもよい。例えば、S301のコネクションの確立後、前述した式を用いてACKパケットの長さが計算できる状態になり次第、ACKパケットの長さを算出し、ネットワークバッファの空き容量とから閾値を算出してもよい。
また、本実施形態では、通信相手である相手装置との通信に用いるコネクション型の通信プロトコルとしてTCP(トランスミッション・コントロール・プロトコル)を用いる例を説明したが、他のプロトコルを用いてもよい。また、本実施形態では、パケットの送受信に用いるバッファとしてDRAMとSRAMを用いた構成例を説明したが、バッファに用いられるメモリはDRAMやSRAMに限られない。すなわち、アクセス速度が異なる複数のメモリを用いたどのような構成においても本実施形態の手法を用いることができる。
<実施形態2>
以下、本発明の第二の実施形態(実施形態2)の通信処理を説明する。実施形態1では、インターネットプロトコルとしてIPv4を用いたシステムにおける構成例を説明した。本実施形態では、インターネットプロトコルのバージョンに応じて受信パケットを格納するメモリを振り分ける判断の基となるパケットサイズの閾値を変更する。これにより様々なバージョンのインターネットプロトコルに対応可能な構成例を説明する。なお、本実施形態において、実施形態1と略同様の構成については、同一符号を付して、その詳細な説明を省略する。
図4は、本実施形態における送信側ホスト101の動作を示したフローチャートである。S401乃至S403は実施形態1に記載のS301乃至S303の各ステップと同様の処理を行うため、詳細な説明を省略する。
S404で、送信側ホスト101のパケット格納先決定部209はパケットを受信したネットワークインタフェースに付加されているIPアドレスを確認して、IPv6アドレスが付加されているか否かを判定する。
IPv6アドレスが使用されていなかった場合(S404でNO)はIPv4が使用されていると判断して、S405に進み、実施形態1のS304で算出したACKパケットの長さを使用する。一方で、IPv6アドレスが付加されていた場合(S404でYES)は、IP層で使用するヘッダ長が長くなる可能性があるため、S406に進み、以下の式を用いてACKパケットの長さを算出する。

ACKパケットの長さ = Ethernetヘッダ長(14bytes)
+IPv6ヘッダ長(40bytes)
+TCPヘッダ長(20bytes)

S405およびS406でACKパケットの長さを算出したら、S407で閾値を算出するために、ACKパケットの長さとSRAM204のネットワークバッファの空き容量を比較し、小さい方の値を閾値として使用する。以降、S408乃至S412の処理は実施形態1に記載のS305乃至S309の各ステップと同様の処理を行うため、説明を省略する。
以上のように、本実施形態では、送信側ホスト101のネットワークインタフェースに付加されたIPアドレスの種別によって、受信パケットを格納するメモリを振り分ける判断の基となるACKパケットの長さを動的に変更する。すなわち、相手装置から受信したパケットに付されているIPアドレスのバージョンに基づいて、相手装置から送出される確認応答パケットの長さを取得し、その長さに基づいて閾値を決定する。このため、IPv4とIPv6のような複数のバージョンの通信プロトコルの使用が想定されるネットワークにおいても、ACKパケットをSRAM204に格納することが可能になり、効率的にデータ送信を実施することが可能となる。
尚、図4のフローチャートにおいて、S403でパケットを受信した後に閾値の算出を行ったが、パケットを受信する前に閾値の算出を行うようにしてもよい。例えば、送信側ホスト101がIPv6アドレスを使用するかIPv4アドレスを使用するかを予め設定しておき、その設定に基づいて、予めACKパケットの長さを算出し、ネットワークバッファの空き容量とから、事前に閾値を算出しておいてもよい。
<実施形態3>
以下、本発明の第三の実施形態(実施形態3)の通信処理を説明する。なお、本実施形態において、実施形態1および実施形態2と同様の構成については、同一符号を付して、その詳細な説明を省略する。
図5は、本実施形態における送信側ホスト101の動作を示したフローチャートである。S501では、実施形態1のS301と同様、送信側ホスト101と受信側ホスト102の間でコネクションを確立するステップである。このときTCPコネクションでは、データ通信の際に使用可能なTCPオプションをホスト間で通知しあう。そのため、S502で新たにコネクションを確立した際にホスト間で通知しあい、使用可能となったTCPオプションの内容を確認し、そのオプションの使用に伴ってACKパケットの長さが最大でどの程度長くなるかを計算する。
TCPオプションの中でACKパケットの長さを拡張するものの例として、タイムスタンプオプションやSACK(Selective Acknowledgement)オプションなどが挙げられる。図6はタイムスタンプオプションのフォーマットを示す図であり、図7はSACKオプションのフォーマットを示す図である。図6および図7に示したオプションフォーマットの通り、タイムスタンプオプションを使用する場合、ACKパケットは10bytes拡張され、SACKオプションを使用する場合、ACKパケットは最大で34bytes拡張される。そのため、コネクション確立時に使用が決定したTCPオプション長の合計値を計算し、後述するACKパケットの長さを算出する処理で使用する。ただし、TCPオプションの最大長は40bytesであることが定められているため、使用するTCPオプション長の最大長が40bytesを超過する場合には、TCPオプションの長さとして40bytesを使用してACKパケットの長さを算出する。なお、ここではTCPオプションの例として、タイムスタンプオプションとSACKオプションの説明を与えたが、TCPオプションの例はこれに限られない。ACKパケットを拡張させる他のTCPオプションが付加される場合には、ACKパケットの長さを算出する際に、そのオプションの長さを加算してもよい。
S502でTCPオプション長を計算した後、S503では、S502で算出した新しいコネクションのTCPオプション長と、送信側ホスト101の持つ他のコネクションのTCPオプション長を比較して、いずれがより長いか判定する。そして、その結果に応じて、S504又はS505で“最大TCPオプション長”の導出を行う。すなわち、もし新しいコネクションのTCPオプション長が他のコネクションのオプション長よりも長ければ(S503でYES)、S504に進み、S502で算出したTCPオプション長を最大TCPオプション長として使用する。一方で他のコネクションの中に新しく確立したコネクションよりも大きなTCPオプション長を持つコネクションがあった場合(S503でNO)には、そのコネクションのTCPオプション長を最大TCPオプション長として使用する。こうして算出された最大TCPオプション長は、後述するACKパケットの長さの算出に使用される。
S506,S507では、それぞれ実施形態1のS302,S303と同様の処理を実施するため、詳細な説明を省略する。S508では、実施形態1、実施形態2と同様、ACKパケットの長さと、SRAMのネットワークバッファの空き容量から閾値を決定する処理を行うが、本実施形態では、ACKパケットの長さの導出には以下の式を用いる。

ACKパケットの長さ = Ethernetヘッダ長(14bytes)
+IPv4ヘッダ長(20bytes)
+TCPヘッダ長(20bytes)
+最大TCPオプション長(0〜40bytes)

この式ではIPv4ヘッダを使用することを想定しているが、実施形態2に記載の通り、IPv6ヘッダを使用してもよい。以降、S509乃至S512の処理は実施形態1に記載のS305乃至S308の各ステップと同様の処理を行うため、説明を省略する。
S513では、未送信データがあるか否かを判定する。未送信データがあった場合(S513でYES)はS506に戻り、実施形態1、実施形態2と同様、データパケットの送信を継続して実施する。一方で、未送信データが無かった場合(S513でNO)には使用したコネクションの解放を行うが、このときにS514に進んで最大TCPオプション長の確認を行う。S514では解放するコネクションのTCPオプション長が、そのときに送信側ホスト101の持つ他のコネクションのTCPオプションよりも長いかどうかを判定する。もし解放されるコネクションのTCPオプション長が他のコネクションのTCPオプション長よりも長かった場合(S514でYES)、コネクションの解放に伴って最大TCPオプション長が短くなる。そのため、S515に進み、最大TCPオプション長として他のコネクションの持つ最大のTCPオプションの長さを設定し、他のコネクションがACKパケットの長さを算出する際に使用できるようにする。解放されるコネクションのTCPオプション長が他のコネクションのTCPオプション長よりも長くなかった場合(S514でNO)は、何もせずに処理を終了する。
以上のように、送信側ホスト101の持つ各コネクションで使用するTCPオプションに従って、受信パケットを格納するメモリを振り分ける判断の基となるACKパケットの長さを動的に変更する。そして、計算されたACKパケットの長さに基づいて、受信パケットを保持するバッファへの格納を振り分けるための閾値を決定する。すなわち、通信プロトコルに基づく通信オプションにより用いられうる最大データ長に基づいて、相手装置から送出される確認応答パケットの長さを取得し、この長さに基づいて閾値を決定する。なお、通信プロトコルに基づく通信オプションにより用いられうる最大データ長は、相手装置との通信コネクションを確立する際、又は、通信コネクションを解放する際に取得される。このため、同時に複数のコネクションを確立し得る送信側ホスト101であっても、SRAM204に空き容量がある限り、すべてのコネクションでACKパケットをSRAM204に格納することが可能になる。したがって、効率的なデータ送信を実施することが可能となる。
<実施形態4>
以下、本発明の第四の実施形態(実施形態4)の通信処理を説明する。なお、本実施形態において、実施形態1乃至実施形態3と同様の構成については、同一符号を付して、その詳細説明を省略する。
図8は、本実施形態における送信側ホスト101のSRAM204およびDRAM203に展開されるネットワークバッファ領域の内部構造を表すブロック図である。送信側ホスト101のSRAM204とDRAM203はそれぞれネットワークバッファ領域801を保持している。ネットワークバッファ領域801の中には、データバッファ構造体802、ヘッダバッファ構造体803、及び、パケット管理構造体804が存在する。データバッファ構造体802は、送信・受信を行うデータを格納するためのバッファである。ヘッダバッファ構造体803は、送受信パケット(TCP/IPパケット)のヘッダ部分を格納するためのバッファである。パケット管理構造体804は、データバッファ構造体802とヘッダバッファ構造体803を関連付けて、パケットとして処理するためのバッファである。なお、一つのヘッダバッファ構造体に格納可能なバッファサイズはSRAM204とDRAM203とで同一である。
一般にTCP/IPパケットのヘッダ長とACKパケットの長さとは同程度である。そこで本実施形態では、受信パケットのデータ長がヘッダバッファ構造体803に格納可能なものであるか否かに基づいて、受信パケットをSRAM204とDRAM203とのいずれに格納するかを決定する。
なお、本実施形態ではネットワークバッファ領域801に3種類の構造体がある場合の例を説明するが、パケット管理構造体804を設けない構成としてもよい。すなわち、ヘッダバッファ構造体803と、ヘッダバッファ構造体803よりも多くのデータを格納可能なデータバッファ構造体802の少なくとも2種類のバッファ構造体を持っていればよい。またデータバッファ構造体802として、長さの異なる複数種類の構造体が存在してもよい。
図9は、本実施形態における送信側ホスト101の動作を示したフローチャートである。S901乃至S903は実施形態1に記載のS301乃至S303の各ステップと同様の処理を行うため、説明を省略する。S904で、送信側ホスト101のパケット格納先決定部209は、SRAM204とDRAM203に展開されたネットワークバッファ領域801内のヘッダバッファ構造体803に格納可能なバッファサイズと、受信したパケットの長さとを比較する。もし受信パケットがヘッダバッファ構造体803に格納可能なサイズであった場合(S904でYES)は、S905に進む。一方でヘッダバッファ構造体803に格納不可能なサイズであった場合(S904でNO)は、S906に進み、DRAM203のデータバッファ構造体802に受信パケットを格納する。
S905では、SRAM204に展開されたヘッダバッファ構造体803の中に、未使用のものが存在するか確認する。もし未使用のヘッダバッファ構造体が存在する場合(S905でYES)は、S907に進みSRAM204の持つヘッダバッファ構造体に受信パケットを格納する。一方で未使用のヘッダバッファ構造体が無かったら(S905でNO)、S906に進み、DRAM203の持つヘッダバッファ構造体(ヘッダバッファ構造体がすべて使用済み場合はデータバッファ構造体)に受信パケットを格納する。
以降、S908およびS909の処理は、実施形態1に記載のS308およびS309とそれぞれ同様の処理を行うため、説明を省略する。
以上のように、送信側ホスト101の持つネットワークバッファ領域801に展開されたヘッダバッファ構造体803の長さを用いて、受信パケットの格納先を決定する。すなわち、受信したパケットをDRAM203又はSRAM204に振り分けるために用いるデータ長の閾値を、相手装置との通信に用いられるヘッダのデータ長とする。ただし、受信したパケットの長さがこの閾値を上回らないと判定されたときであっても、SRAM204の空き容量がヘッダのデータ長に満たないときは、このパケットをDRAM203に格納する。このため、TCP/IPパケットのヘッダ長とおおよそ同じ長さを持つACKパケットをSRAM204に格納することが可能になる。したがって、ACKパケットを効率的に解析することが可能となり、データ送信速度を向上させることができる。
以上のように、本発明の各実施形態においては、受信パケットのうち、ACKパケットであると想定される短いパケットのみをSRAMに割り当てられたネットワークバッファに格納する。このため、受信パケットによるSRAMの使用量を抑制して、送信パケットを優先的にSRAMに割り当てられたネットワークバッファに格納することができる。また、ACKパケットは優先的に高速なSRAMに格納されるため、ACKパケットの解析を高速に行うことができる。したがって、全体としてデータ転送を高速に行うことが可能となる。
<その他の実施形態>
上記各実施形態の説明では、確認応答パケットの一例としてTCP/IPにおけるACKパケットを用いて説明したが、確認応答パケットはACKパケットに限るものではない。また、通信プロトコルとしてTCP/IP以外のプロトコルに適用することも可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101:送信側ホスト、102:受信側ホスト、103:ネットワーク、201:CPU、202:ROM、203:DRAM、204:SRAM、205:メディアアクセス制御モジュール(MAC)、206:物理レイヤモジュール、207:Ethernet(登録商標)、208:無線LANアンテナ、209:パケット格納先決定部

Claims (11)

  1. コネクション型の通信プロトコルに基づき相手装置と通信する通信装置であって、
    第一のメモリと、
    前記第一のメモリよりも高速に読み書きが可能な第二のメモリと、
    相手装置からパケットを受信した場合に、当該パケットの長さが、確認応答パケットの長さに基づく所定の閾値を超えるか否かを判定する判定手段と、
    前記相手装置から受信したパケットの長さが前記閾値を超えると判定された場合、当該パケットを前記第一のメモリに格納し、超えないと判定された場合、当該パケットを前記第二のメモリに格納する格納手段と
    を備え
    前記所定の閾値は、前記相手装置から送出される確認応答パケットの長さと、前記第二のメモリの空き容量の大きさとに基づいて決定されることを特徴とする通信装置。
  2. 前記所定の閾値は、前記確認応答パケットの長さと、前記第二のメモリの空き容量の大きさとのいずれか小さい値に決定されることを特徴とする請求項に記載の通信装置。
  3. 前記相手装置との通信で用いるIPアドレスのバージョンに基づいて、前記確認応答パケットの長さを取得する取得手段をさらに備え、
    前記所定の閾値は、前記取得手段が取得した確認応答パケットの長さに基づいて決定される
    ことを特徴とする請求項1又は2に記載の通信装置。
  4. コネクション型の通信プロトコルに基づき相手装置と通信する通信装置であって、
    第一のメモリと、
    前記第一のメモリよりも高速に読み書きが可能な第二のメモリと、
    相手装置からパケットを受信した場合に、当該パケットの長さが、確認応答パケットの長さに基づく所定の閾値を超えるか否かを判定する判定手段と、
    前記相手装置から受信したパケットの長さが前記閾値を超えると判定された場合、当該パケットを前記第一のメモリに格納し、超えないと判定された場合、当該パケットを前記第二のメモリに格納する格納手段と、
    前記相手装置との通信で用いる通信オプションにより用いられうるデータ長に基づいて、前記確認応答パケットの長さを取得する取得手段
    え、
    前記所定の閾値は、前記取得手段が取得した確認応答パケットの長さに基づいて決定されることを特徴とする信装置。
  5. 前記通信オプションにより用いられうるデータ長は、前記相手装置との通信コネクションを確立する際、又は、通信コネクションを解放する際に取得されることを特徴とする請求項に記載の通信装置。
  6. 前記第一及び第二のメモリは、前記相手装置へ送信するパケットを保持するバッファ手段として用いられることを特徴とする請求項1乃至のいずれか1項に記載の通信装置。
  7. 前記確認応答パケットは、TCP(トランスミッション・コントロール・プロトコル)で用いられるACKパケットであることを特徴とする請求項1乃至のいずれか1項に記載の通信装置。
  8. 前記第一のメモリはDRAMであり、前記第二のメモリはSRAMであることを特徴とする請求項1乃至のいずれか1項に記載の通信装置。
  9. 第一のメモリと、前記第一のメモリよりも高速に読み書きが可能な第二のメモリとを備えた、コネクション型の通信プロトコルに基づき相手装置と通信する通信装置の通信方法であって、
    判定手段が、相手装置からパケットを受信した場合に、当該パケットの長さが、確認応答パケットの長さに基づく所定の閾値を超えるか否かを判定する判定工程と、
    格納手段が、前記相手装置から受信したパケットの長さが前記閾値を超えると判定された場合、当該パケットを前記第一のメモリに格納し、超えないと判定された場合、当該パケットを前記第二のメモリに格納する格納工程と
    を備え
    前記所定の閾値は、前記相手装置から送出される確認応答パケットの長さと、前記第二のメモリの空き容量の大きさとに基づいて決定されることを特徴とする通信方法。
  10. 第一のメモリと、前記第一のメモリよりも高速に読み書きが可能な第二のメモリとを備えた、コネクション型の通信プロトコルに基づき相手装置と通信する通信装置の通信方法であって、
    判定手段が、相手装置からパケットを受信した場合に、当該パケットの長さが、確認応答パケットの長さに基づく所定の閾値を超えるか否かを判定する判定工程と、
    格納手段が、前記相手装置から受信したパケットの長さが前記閾値を超えると判定された場合、当該パケットを前記第一のメモリに格納し、超えないと判定された場合、当該パケットを前記第二のメモリに格納する格納工程と、
    取得手段が、前記相手装置との通信で用いる通信オプションにより用いられうるデータ長に基づいて、前記確認応答パケットの長さを取得する取得工程と
    を備え、
    前記所定の閾値は、前記取得工程において取得された確認応答パケットの長さに基づいて決定されることを特徴とする通信方法。
  11. コンピュータを請求項1からのいずれか1項に記載の通信装置が備える各手段として機能させるためのコンピュータプログラム。
JP2015212333A 2015-10-28 2015-10-28 通信装置及びその方法、コンピュータプログラム Active JP6618330B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015212333A JP6618330B2 (ja) 2015-10-28 2015-10-28 通信装置及びその方法、コンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015212333A JP6618330B2 (ja) 2015-10-28 2015-10-28 通信装置及びその方法、コンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2017085378A JP2017085378A (ja) 2017-05-18
JP6618330B2 true JP6618330B2 (ja) 2019-12-11

Family

ID=58712163

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015212333A Active JP6618330B2 (ja) 2015-10-28 2015-10-28 通信装置及びその方法、コンピュータプログラム

Country Status (1)

Country Link
JP (1) JP6618330B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102629782B1 (ko) * 2021-09-29 2024-01-29 주식회사 엘지유플러스 안전 관리 시스템을 위한 실시간 메시지 처리 장치 및 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6892285B1 (en) * 2002-04-30 2005-05-10 Cisco Technology, Inc. System and method for operating a packet buffer
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
JP4502796B2 (ja) * 2004-12-17 2010-07-14 パナソニック株式会社 ストリームパケット受信装置
JP2006211136A (ja) * 2005-01-26 2006-08-10 Matsushita Electric Ind Co Ltd データ処理装置およびデータ処理方法
JP2009020684A (ja) * 2007-07-11 2009-01-29 Kawasaki Microelectronics Kk 端末装置
JP6351363B2 (ja) * 2013-08-01 2018-07-04 キヤノン株式会社 通信装置およびそのデータ処理方法

Also Published As

Publication number Publication date
JP2017085378A (ja) 2017-05-18

Similar Documents

Publication Publication Date Title
US8996718B2 (en) TCP-aware receive side coalescing
JP4477613B2 (ja) AXIプロトコルを適用したNoCシステム
US8566389B2 (en) Thin network protocol
CN109936510A (zh) 多路径rdma传输
JP5049834B2 (ja) データ受信装置、データ受信方法およびデータ処理プログラム
JP2018139448A5 (ja)
JP2009031954A (ja) データ処理装置およびデータ転送方法
US8495241B2 (en) Communication apparatus and method therefor
US9866639B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
JP6351363B2 (ja) 通信装置およびそのデータ処理方法
US20150264141A1 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
JP5304674B2 (ja) データ変換装置、データ変換方法及びプログラム
JP6618330B2 (ja) 通信装置及びその方法、コンピュータプログラム
CN111064704B (zh) 一种基于mptcp启动窗口自适应的数据传输方法、装置和介质
US10372667B2 (en) Communication apparatus and control method thereof
JP2008113327A (ja) ネットワークインターフェース装置
WO2015021878A1 (zh) 一种应用于pci-e的流量控制方法、设备及系统
JP2019114947A (ja) 通信装置、通信装置の制御方法およびプログラム
JPWO2017199913A1 (ja) 送信装置、方法およびプログラム
JP6976786B2 (ja) 通信装置および通信装置の制御方法
US20160112318A1 (en) Information processing system, method, and information processing apparatus
WO2020184381A1 (ja) 処理装置、情報処理システム、情報処理方法、及びプログラム
JP2020178182A (ja) 通信装置、通信装置の制御方法およびプログラム
JP2022161570A (ja) 通信装置、通信方法およびプログラム
JP2009130891A (ja) 情報処理装置及びフレーム中継方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190729

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190924

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191112

R151 Written notification of patent or utility model registration

Ref document number: 6618330

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151