(58)【調査した分野】(Int.Cl.,DB名)
前記判定手段は、前記通信装置が有するメモリの性能が第1のレベル以上である場合に前記補正手段による補正を行い、前記メモリの性能が前記第1のレベル未満である場合に前記第2のチェックサム演算手段によるチェックサムの演算を行うと判定することを特徴とする請求項2に記載の通信装置。
前記判定手段は、前記通信装置が有するプロセッサの性能が第2のレベル以上である場合に前記補正手段による補正を行い、前記プロセッサの性能が前記第2のレベル未満である場合に前記第2のチェックサム演算手段によるチェックサムの演算を行うと判定することを特徴とする請求項2に記載の通信装置。
前記判定手段は、前記プロトコルの種別がIPv4の場合に前記補正手段による補正を行い、当該プロトコルの種別がIPv4以外の場合に前記第2のチェックサム演算手段によるチェックサムの演算を行うと判定することを特徴とする請求項5に記載の通信装置。
【発明を実施するための形態】
【0010】
以下、添付の図面を参照して、本発明をその実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【0011】
(第1実施形態)
第1の実施形態として、通信装置が有するメモリの性能および/または使用するプロトコル種別および/または受信したパケットの構成に基づいて、受信パケットの整合性を確認するために使用するチェックサム演算結果を切り替えることが可能な通信装置について説明する。
【0012】
[装置の構成]
本実施形態における通信装置10のハードウェア構成と機能構成について、
図1と
図2を参照して説明する。
図1は、通信装置10のハードウェア構成例を示すブロック図であり、
図2は通信装置10の機能構成例を示すブロック図である。なお、通信装置10の具体例は、デジタルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、PC(Personal Computer)、ノートPC、サーバ、などである。
【0013】
まず、通信装置10のハードウェア構成について説明する。
図1に示すように、通信装置10は、RAM101、ROM102、CPU103、表示部104、操作部105、タイマ管理部106、第1のチェックサム演算部111を含むデータ転送部110を有する。また、通信装置10は、メディアアクセス制御モジュール(MAC)107と、物理レイヤモジュール(PHY)108も有する。なお、RAMはRandom Access Memory、ROMはRead Only Memory、CPUはCentral Processing Unitを表す。なお、通信装置10がこれらのハードウェア構成要素の全てを有することは必須でない。
【0014】
RAM101は、プログラムやデータを一時記憶する。なお、
図1には、一つのRAM101を図示しているが、通信装置10は、性能の異なる複数のRAM101を有することも可能である。ROM102は、CPU103により実行可能なプログラムやパラメータを格納する。CPU103は、通信装置10全体の動作を制御するプロセッサである。例えば、CPU103は、RAM101をワークメモリとして、ROM102や図示しないHDD(Hard Disc Drive)などの記憶媒体に格納された各種プログラムを実行する。CPU103が実行するプログラムには、ネットワークドライバが含まれる。CPU103がネットワークドライバを実行することにより、後述するパケットの受信処理などを含むプロトコル処理の機能が実現される。
【0015】
表示部104は、各種表示を行う。例えば、表示部104は、ユーザが通信装置10を操作するためのGUI(Graphic User Interface)を表示する。操作部105は、ユーザが通信装置10を操作するための入力インタフェースである。タイマ管理部106は、プログラムの処理などの時間の経過を管理する。MAC107とPHY108は、アンテナ109を介してWi−Fiによる無線LAN(Local Area Network)などのネットワークを介した通信を行う通信部である。CPU103がネットワークドライバを実行することにより、MAC107が制御され、PHY108とアンテナ109を介してデータ(パケット)の送受信が行われる。なお、本実施形態ではWi−Fiによる無線LAN通信機能を用いるが、これに限らず、IP(Internet Protocol)通信が可能であれば、有線LAN通信機能のEthernet(登録商標)など、他の通信方式を利用してもよい。
【0016】
データ転送部110は、DMAC(Direct Memory Access Controller)として構成され、メモリ間のデータ転送を行う。データ転送部110内の第1のチェックサム演算部111は、データ転送時に、転送されるデータのチェックサムを演算する。第1のチェックサム演算部111は、データ転送部110における処理ステップに対してステップ数を増やすことなく、チェックサム演算が可能である。
【0017】
続いて、通信装置10の機能構成について説明する。
図2に示すように、通信装置10は、機能制御部201、無線LAN制御部202、表示制御部203、操作制御部204、記憶制御部205を有する。通信装置10はまた、TCP/IP制御部206、第2のチェックサム演算部207、チェックサム補正部208を有する。これらの機能構成要素の各々の処理は、CPU103がROM102に格納されたプログラムをRAM101に展開して実行することより実現され得る。一方、ハードウェアによりこれらの機能構成要素の各々の処理を実現するためには、これらの機能構成要素の処理に対応させた演算部や回路をハードウェアで構成すればよい。なお、通信装置10がこれらの機能構成要素の全てを有することは必須でない。
【0018】
機能制御部201は、各機能構成要素(無線LAN制御部202〜チェックサム補正部208)を制御する。無線LAN制御部202は、MAC107とPHY108を制御し、他の通信装置と無線LAN通信を行うための制御を行う。通信装置10が外部の無線アクセスポイントを経由して他の通信装置と接続する場合は、無線LAN制御部202は、MAC107とPHY108を制御して無線アクセスポイント(不図示)との無線LAN通信を行う。
【0019】
表示制御部203は、表示部104に各種情報を表示させるための制御を行う。操作制御部204は、操作部105を介して、通信装置10に対するユーザからの操作入力を受け付け、当該入力に応じた制御を行う。記憶制御部205は、RAM101を制御し、処理データや画像コンテンツ、映像コンテンツなどのデータをRAM101に記憶またはRAM101から削除する。
【0020】
TCP/IP制御部206は、他の通信装置との間でTCP(Transmission Control Protocol)/IP(Internet Protocol)方式の通信制御を行う。また、TCP/IP制御部206は、RAM101に格納された受信パケットを解析し、無線ヘッダ、Ethernet(登録商標)ヘッダ(ETHヘッダ)、IPヘッダ、TCPヘッダ、TCPペイロードへ分割する等といった所定のプロトコル処理を行う。なお、本実施形態では、TCP/IP通信を利用する例を示すが、これに限らず、チェックサムを使用する他のプロトコルを利用してもよい。第2のチェックサム演算部207は、TCP/IP制御部206において所定のプロトコル処理が施されたパケットに対してチェックサムの演算を行う。第2のチェックサム演算部207は、TCP/IP制御部206により利用され得る。チェックサム補正部208は、第1のチェックサム演算部111により算出されたチェックサムの値を補正する。チェックサム補正部208は、TCP/IP制御部206により利用され得る。TCP/IP制御部206は、第2のチェックサム演算部207又はチェックサム補正部208において生成されたチェックサムを用いて、受信パケットの整合性を確認する。
【0021】
[チェックサム演算]
次に、本実施形態におけるTCPにおけるチェックサムの演算手法について
図3と
図4を参照して説明する。
【0022】
図3は、第1のチェックサム演算部111とチェックサム補正部208により演算および補正されたチェックサムの演算手順を説明する概要図である。
図3の説明のために、通信装置10が外部の無線アクセスポイントを経由して、Ethernet(登録商標)を伝送経路として他の通信装置と通信することを前提とするが、他の通信形態にも本説明は適用可能である。
【0023】
無線LAN制御部202が、他の通信装置(不図示)から送信されたパケットをアンテナ109、PHY108、MAC107を介して受信すると、データ転送部110は、MAC107内の記憶部(不図示)からRAM101へ受信パケットを転送する。この転送の際、第1のチェックサム演算部111は、受信パケット全体のチェックサム(CS302)を演算する。データ転送部110は、CS302を受信パケット301に関連付けて、RAM101へ転送する。
【0024】
TCP/IP制御部206は、RAM101に格納された受信パケット301に対してプロトコル処理を施すことにより解析する。その結果、無線ヘッダ、Ethernet(登録商標)ヘッダ(ETHヘッダ)、IPヘッダ、TCPヘッダ、TCPペイロードに分割した、解析済受信パケット303が生成される。
【0025】
次に、TCP/IP制御部206は、チェックサム補正部208を使用し、TCPのチェックサムに不要なヘッダ部のチェックサムを、CS302から減算し、TCP仮想ヘッダのチェックサムを加算することにより、TCPのチェックサム305を算出する。ここで、TCPのチェックサムの不要なヘッダ部は、本実施形態では、無線ヘッダ、ETHERNET(登録商標)ヘッダ、IPヘッダである。なお、減算される不要なヘッダ部は、データ転送部110から転送される受信パケットのデータ範囲により変化し得る。また、TCP仮想ヘッダとは、TCPのチェックサムを計算するために必要な周知のヘッダであり、発信元IPアドレスや宛先IPアドレス等から構成されるものである。TCP/IP制御部206は、算出したTCPのチェックサム305を用いて受信パケットの整合性を確認する(誤り検出処理を行う)。
【0026】
整合性の確認の結果、TCP/IP制御部206は、受信パケットに誤りがないことを確認した場合は、アプリケーション306に受信パケットのデータを渡す。一方、TCP/IP制御部206は、受信パケットに誤りがあることを確認した場合は、受信パケットを破棄する。
【0027】
図4は、第2のチェックサム演算部207により演算されたチェックサムの演算手順を説明する概要図である。
図4の説明のために、
図3と同様に、通信装置10が外部の無線アクセスポイントを経由して、Ethernet(登録商標)を伝送経路として他の通信装置と通信することを前提とするが、他の通信形態にも本説明は適用可能である。
【0028】
無線LAN制御部202は、他の通信装置(不図示)から送信されたパケットをアンテナ109、PHY108、MAC107を介して受信すると、データ転送部110は、MAC107内の記憶部(不図示)からRAM101へ受信パケットを転送する。TCP/IP制御部206は、RAM101に格納された受信パケットを解析し、無線ヘッダ、Ethernet(登録商標)ヘッダ(ETHヘッダ)、IPヘッダ、TCPヘッダ、TCPペイロードに分割した、解析済受信パケット303を生成する。
【0029】
TCP/IP制御部206は、第2のチェックサム演算部207を使用し、TCPのチェックサムとして、解析済受信パケット303におけるTCPヘッダ、TCPペイロード、およびTCP仮想ヘッダのチェックサムを算出する。続いて、TCP/IP制御部206は、算出したTCPのチェックサムを用いて受信パケットの整合性を確認する。
【0030】
TCP/IP制御部206は、TCPのチェックサムから受信パケットに誤りがないことを確認した場合はアプリケーション306に受信データを渡し、TCPのチェックサムから受信パケットに誤りがあることを確認した場合は受信パケットを破棄する。
【0031】
次に、
図5を参照して通信装置10の動作について説明する。
図5は、RAM101の性能に基づいて、
図3と
図4を参照して説明した2種類のチェックサムの演算結果の使用を切り替えるパケット受信手順を示すフローチャートである。なお、
図5の説明において、
図3または
図4で示した処理と同じ処理は、
図3または
図4における符号を用いるものとする
【0032】
S501において、無線LAN制御部202が、アンテナ109、PHY108、MAC107を介してパケット受信すると、データ転送部110は、MAC107内の記憶部(不図示)からRAM101へ受信パケットを転送する。データ転送部110による受信パケット301の転送時に、第1のチェックサム演算部111は受信パケット301全体のチェックサム(CS302)を演算する。データ転送部110は、CS302を受信パケット301に関連付けてT、RAM101へ転送する。
【0033】
S502において、TCP/IP制御部206は、RAM101に格納された受信パケット301を解析し、無線ヘッダ、Ethernet(登録商標)ヘッダ(ETHヘッダ)、IPヘッダ、TCPヘッダ、TCPペイロードに分割した解析済受信パケット303を作成する。
【0034】
S503において、TCP/IP制御部206は、RAM101の性能を取得する。RAMの性能とは、例えば、動作クロックの速さ(処理速度)等の処理能力(および処理能力を表す値)を指す。RAM101の性能が高い場合、第1のチェックサム演算部111と第2のチェックサム演算部207の演算結果を使い分けた際の通信性能の差が小さくなる。したがって、RAM101の性能が所定のレベル未満の場合(S503;YES)は、処理はS504に進み、RAM101の性能が当該所定のレベル以上の場合(S503;NO)は、処理はS506に進む。この所定のレベル(所定の閾値)には、第1のチェックサム演算部111により算出されたチェックサムを用いて通信した際に所望の通信性能を維持できる任意のメモリ性能等を示す値が設定され得る。
【0035】
S504において、TCP/IP制御部206は、ネットワーク層のプロトコル種別がIPv4かIPv6のいずれであるかを判定する。IPv4では、IPヘッダにチェックサムフィールドがあり、IPヘッダ分のチェックサムが格納されている。そのため、受信パケットに誤りがない場合、IPv4通信時に第1のチェックサム演算部111が算出するチェックサム302には、IPヘッダ分のチェックサムが相殺されるため含まれない。つまり、IPv4の場合は、チェックサム補正部208によるIPヘッダ分のチェックサムの減算処理は不要となる。しがたって、IPヘッダにチェックサムフィールドがないIPv6を使用している場合(S504;IPv6)は、処理はS505に進み、IPヘッダにチェックサムフィールドがあるIPv4を使用している場合(S504;IPv4)は、処理はS506に進む。なお、S504ではIPv4とIPv6かが判定されたが、これに限定されない。
【0036】
S505において、TCP/IP制御部206は、受信パケットの構成を確認して、処理を分岐する。まず、TCP/IP制御部206は、解析済受信パケット303からヘッダ部の長さとIPペイロード部の長さを取得する。なお、ヘッダ部とは、チェックサム補正部208による減算処理が必要な受信パケット内のヘッダ部分を指し、本実施形態では無線ヘッダとEthernet(登録商標)ヘッダとIPヘッダである。ヘッダ部は、前述の通り、データ転送部110が転送する受信パケットのデータ範囲により変化し得る。ヘッダ長が解析済受信パケット303において所定の割合を占める場合、例えば、ヘッダ長がIPペイロード長未満の場合(S505;YES)は、処理はS506に進む。また、ヘッダ長が解析済受信パケット303において所定の割合を占めない場合、例えば、ヘッダ長がIPペイロード長以上の場合(S505;NO)は、処理はS507に進む。
【0037】
また、S505において、TCP/IP制御部206は、受信パケットのパケット種別を判別してもよい。例えば、受信パケットが確認応答(ACK)パケットのようにペイロードがない、または、ペイロード長が閾値未満のパケット種別の場合(S505;YES)は、処理はS506に進み、データパケットのようにペイロード長が閾値以上のパケット種別の場合(S505;NO)は、処理はS507に進むようにしてもよい。この閾値には、第1のチェックサム演算部111と第2のチェックサム演算部207の演算結果を使い分けることで通信性能が変化する任意のペイロード長が設定され得る。なお、パケット種別としてペイロードの長さを示したが、これに限らず、パケットのフラグやオプション情報などに基づいてパケット種別を判別してもよい。
【0038】
S506において、TCP/IP制御部206は、チェックサム補正部208を使用し、チェックサム302から無線ヘッダ、ETHERNET(登録商標)ヘッダ、IPヘッダ分のチェックサムを減算し、TCP仮想ヘッダのチェックサムを加算することにより、TCPのチェックサム305を算出する。当該チェックサムの算出手法は、
図3を用いて説明した通りである。なお、前述の通り、減算するヘッダ部はデータ転送部110が転送する受信パケットのデータ範囲により変化し得る。なお、上述した通り、受信パケットがIPv4のパケットである場合は、チェックサム補正部208によるIPヘッダ分のチェックサムの減算処理は不要となる。しがたって、S506の処理において、S504でIPv4と判定された上で実行される場合には、IPヘッダ分のチェックサムの減算以外の補正処理が行われることになる。
【0039】
S507において、TCP/IP制御部206は、第2のチェックサム演算部207を使用し、TCPのチェックサム(TCPヘッダ、TCPペイロード、TCP仮想ヘッダのチェックサム)を再計算する。当該チェックサムの算出手法は、
図4を用いて説明した通りである。
【0040】
S508において、TCP/IP制御部206は、S506またはS507で導出されたTCPのチェックサムを用いて、受信パケットの整合性を確認することにより、誤り検出処理を行う。
【0041】
なお、
図5に示すフローチャートでは、S503、S504、およびS505すべての判定が行われるが、これらの判定のいずれか1つ以上が行われても良い。例えば、S503が省略される場合、S502の後、処理はS504へ進む。また、S504が省略される場合、S503でYesと判定された場合に処理はS505へ進む。また、S505が省略される場合、S504でIPv6と判定された場合に処理はS507へ進む。また、S504とS505が省略される場合、S503でYesと判定された場合に処理はS507へ進む。また、S503とS504が省略される場合、S502の後、処理はS505へ進む。また、S503とS505が省略される場合、S502の後、処理はS504へ進み、S504でIPv6と判定された場合に処理はS507へ進む。
【0042】
また、S503とS504の判定は、S501とS502の処理と関係なく実施可能なため、S501の前にS503またはS504の判定を行ってもよい。例えばこの場合、S504でIPv6と判定され、かつ/または、S505でNoと判定された場合は、S501、S502の処理を実施せずに、S507の処理が実施されても良い。これにより、より処理効率が向上し得る。
【0043】
以上、説明したように、本実施形態による通信装置10は、メモリの性能および/または使用するプロトコル種別および/または受信したパケットの構成といった条件に基づいて、受信パケットの整合性を確認するために使用するチェックサム演算結果を切り替える。すなわち、S506のように処理負荷が高い補正処理を必要とするチェックサム演算結果を使用するか、当該補正処理を必要としないチェックサム演算結果を使用するかが切り替えられる。このように、必要に応じて受信パケットのチェックサム計算処理で負荷が軽い手段を用いる否か選択でき、結果として受信の効率が向上し、通信性能が向上する。
【0044】
(第2実施形態)
第2実施形態では、通信装置10が有するCPU103の性能に基づいて、受信パケットの整合性を確認するために使用するチェックサム演算結果を切り替える。なお、第2実施形態において、第1実施形態と同様の図、および図中と同じ要素に関しては説明を省略する。
【0045】
図6は、CPU103の性能に基づいて、
図3と
図4を参照して説明した2種類のチェックサムの演算結果の使用を切り替えるパケット受信手順を示すフローチャートである。なお、
図6の説明において、
図3または
図4で示した処理と同じ処理は、
図3または
図4における符号を用いるものとする。また、S601〜S602およびS604〜S608の処理は、
図5のS501〜S502及びS504〜S508の処理と同様のため、説明を省略する。
【0046】
S603において、TCP/IP制御部206は、CPU103の性能を取得する。CPUの性能とは、例えば、処理速度等の処理能力(および処理能力を表す値)を指す。CPU103の性能が高い場合、第1のチェックサム演算部111と第2のチェックサム演算部207を使い分けた際の通信性能の差が小さくなる。したがって、CPU103の性能が所定のレベル未満の場合(S603;YES)はS604に進み、CPU103の性能が当該所定のレベル以上の場合(S603;NO)は、処理はS606に進む。この所定のレベル(所定の閾値)には、第1のチェックサム演算部111により算出されたチェックサムを用いて通信した際に所望の通信性能を維持できる任意のCPU性能等を示す値が設定され得る。
【0047】
なお、
図6に示すフローチャートでは、S603、S604、およびS605すべての判定が行われるが、S603の判定以外の判定は行われても良い。例えば、S604が省略される場合、S603でYesと判定された場合に処理はS605へ進む。また、S605が省略される場合、S604でIPv4以外の例えばIPv6と判定された場合に処理はS607へ進む。また、S604とS605が省略される場合、S603でYesと判定された場合に処理はS607へ進む。
【0048】
以上、説明したように、本実施形態による通信装置10は、CPU103の性能といった条件に基づいて、受信パケットの整合性を確認するために使用するチェックサム演算結果を切り替える。すなわち、S606のように処理負荷が高い補正処理を必要とするチェックサム演算結果を使用するか、当該補正処理を必要としないチェックサム演算結果を使用するかが切り替えられる。このように、必要に応じて受信パケットのチェックサム計算処理で負荷が軽い手段を用いる否か選択でき、結果として受信の効率が向上し、通信性能が向上する。
【0049】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。