JP5481485B2 - 通信装置とそれを用いた受信処理方法及び送信処理方法 - Google Patents

通信装置とそれを用いた受信処理方法及び送信処理方法 Download PDF

Info

Publication number
JP5481485B2
JP5481485B2 JP2011531639A JP2011531639A JP5481485B2 JP 5481485 B2 JP5481485 B2 JP 5481485B2 JP 2011531639 A JP2011531639 A JP 2011531639A JP 2011531639 A JP2011531639 A JP 2011531639A JP 5481485 B2 JP5481485 B2 JP 5481485B2
Authority
JP
Japan
Prior art keywords
protocol processing
processing unit
hardware
software
protocol
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
JP2011531639A
Other languages
English (en)
Other versions
JPWO2011033562A1 (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Publication of JPWO2011033562A1 publication Critical patent/JPWO2011033562A1/ja
Application granted granted Critical
Publication of JP5481485B2 publication Critical patent/JP5481485B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、通信装置に関する。
インターネット等で広く用いられるTCP/IP(Transmission Control Protocol/ Internet Protocol)などのプロトコル処理は、従来、主にCPU(Central Processing Unit)上で動作するソフトウェアにより実現されている。しかしながら、近年のネットワークの高速化に伴い、CPUのTCP/IP処理の負荷が増大している。その対応策として、TCP/IP処理を行う専用のハードウェアを設けることにより、高速な通信を実現する通信装置が提案されている(特許文献1参照。)。
特許文献1に開示される通信装置では、まずデータが高レートかどうかを判別する。次に、高レートの場合には、専用ハードウェアにより各種ヘッダを除去し、アプリケーションデータをメモリ領域に転送する。更に、TCPの場合は、ヘッダのみをネットワーク通信ドライバに引き渡して、ソフトウェアによるTCP/IPスタック処理を行っている。
しかしながら、特許文献1の技術では、高レートと判断されなかったフレームは、データリンク層、ネットワーク層の処理もすべてソフトウェアにより処理されることになる。従って、例えば、TCPのセッション確立のためのセグメントを処理する場合、処理速度が低下するという問題点がある。また、専用ハードウェアに備えられるデータリンク層やネットワーク層の処理部の機能を、ソフトウェアでも二重に備えなければならない。その結果、ソフトウェアのサイズが増大するという問題点がある。
特開2006−31145号公報
本発明は、上記問題点を解決するためになされたもので、通信のスループットを向上できる通信装置を提供することを目的とする。
本発明の一態様の通信装置は、受信データのフレームに対しハードウェアにより、前記フレームの内容に応じて異なるプロトコル処理を行うハードウェアプロトコル処理部と、前記ハードウェアプロトコル処理部とは異なるハードウェアで実現され、前記受信データのフレームに対しソフトウェアによるプロトコル処理を行うソフトウェアプロトコル処理部と、前記受信データのフレーム毎に、前記ハードウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ソフトウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ハードウェアプロトコル処理部によるプロトコル処理によって得られた値を含むプロトコル処理情報を生成するハードウェアプロトコル処理情報生成部と、前記プロトコル処理情報を用いて、前記ハードウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ソフトウェアプロトコル処理部に行わせるソフトウェアプロトコル処理再開部とを具備することを特徴とする。
本発明によれば、通信のスループットを向上させ、ソフトウェアのサイズを削減できる通信装置を提供することができる。
本発明の実施例1に係る通信装置を示すブロック図。 本発明の実施例1に係るEthernet(R)フレームの構成を示す図。 本発明の実施例1に係るIPヘッダの構成を示す図。 本発明の実施例1に係るUDPヘッダの構成を示す図。 本発明の実施例1に係る通信装置の受信処理を示すフロ-チャート。 本発明の実施例1に係る通信装置の送信処理を示すフローチャート。 本発明の実施例1に係るUDP受信を高速化した通信装置を示すブロック図。 本発明の実施例1に係るUDP送信を高速化した通信装置を示すブロック図。 本発明の実施例2に係る通信装置を示すブロック図。 本発明の実施例2に係るTCPヘッダの構成を示す図。 本発明の実施例2に係るTCPのセッション状態を示す図。 本発明の実施例2に係るUDP受信処理を示すフローチャート。 本発明の実施例2に係るTCP受信処理を示すフローチャート。 本発明の実施例2に係るTCP送信処理を示すフローチャート。
以下、本発明の実施例について図面を参照しながら説明する。
まず、本発明の実施例1に係る通信装置について、図面を参照して説明する。図1は、通信装置を示すブロック図である。図2は、Ethernet(R)フレームの構成を示す図である。図3は、IPヘッダの構成を示す図である。図4は、UDPヘッダの構成を示す図である。本実施例では、受信側にハードウェアプロトコル処理情報生成部とソフトウェアプロトコル情報再開部を設けている。また、送信側にソフトウェアプロトコル処理情報生成部とハードウェアプロトコル処理再開部を設けている。
図1に示す通信装置80は、例えば映像送受信装置である。通信装置80は、Ethernet(R)によってネットワーク70に接続されている。通信装置80は、映像情報をディスク装置(Hard Disk Drive等)から読み出してUDP(User Datagram Protocol)によってネットワーク70に接続されているクライアント装置に送信する機能を備える。また、クライアント装置からUDPで受信した映像情報をディスク装置に保存する機能を備える。通信装置80は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などによって実現されるハードウェア処理部1と、CPU上で動作するソフトウェアにより処理が行われるソフトウェア処理部2により構成される。つまり、ハードウェア処理部1とソフトウェア処理部2は、異なる処理機能で構成される。
ハードウェア処理部1には、ネットワークコントローラ11、ハードウェアプロトコル処理部12、ハードウェアプロトコル処理情報生成部13、及びハードウェアプロトコル処理再開部14が設けられる。
ネットワークコントローラ11は、ネットワーク70からEthernet(R)フレームを受信すると、Ethernet(R)物理層の処理、及びEthernet(R)のデータリンク層の一部の処理を行う。具体的には、Ethernet(R)規格によって規定された信号を復調し、図2に示すEthernet(R)フレームを取り出す。Ethernet(R)フレームは、終点MAC(Media Access Control)アドレス111、始点MAC(Media Access Control)アドレス112、タイプ113、データ114、及びFCS(Frame Check Sequence)115から構成される。次に、ネットワークコントローラ11は、Ethernet(R)フレームに破損がないかを検証するためFCS(Frame Check Sequence)の検算処理を行う。なお、終点MACアドレス111は宛先アドレスとも呼称され、始点MACアドレス112は送信元アドレスとも呼称される。
Ethernet(R)フレームの場合、例えば、終点MACアドレス111が6オクテット(48bit)、始点MACアドレス112が6オクテット(48bit)、タイプ113が2オクテット(16bit)、データ114が46〜1500オクテット、FCS(Frame Check Sequence)115が4オクテット(32bit)で構成されている。タイプ113には、IP(Internet Protocol)、ARP(Address Resolution Protocol)、RARP(Reverse Address Resolution Protocol)がある。
ネットワークコントローラ11は、送信処理のとき、ハードウェアプロトコル処理部12で処理された送信情報にFCSを付加し、フレーム変調を施してネットワーク70に送信する。
ハードウェアプロトコル処理部12には、Ethernet(R)処理部15、IPv4(Internet Protocol version 4)処理部16、及びUDP処理部17が設けられる。ハードウェアプロトコル処理部12は、受信及び送信のときにハードウェアによるプロトコル処理を実行する。
Ethernet(R)処理部15は、Ethernet(R)のデータリンク層の一部の処理を行う。IPv4処理部16は、図3に示すIPv4ヘッダの処理を行う。IPv4ヘッダ(IPヘッダ)は、バージョン211、ヘッダ長212、サービスタイプ213、IPパケット長214、識別子215、コントロールフラグ216、フラグメントオフセット217、生存時間218、プロトコル番号219、ヘッダチャックサム220、始点IPアドレス221、及び終点IPアドレス222から構成される。
例えば、バージョン211は4bit、ヘッダ長212は4bit、サービスタイプ213は8bit、IPパケット長214は16bit、識別子215は16bit、コントロールフラグ216は3bit、フラグメントオフセット217は13bit、生存時間218は8bit、プロトコル番号219は8bit、ヘッダチャックサム220は16bit、始点IPアドレス221は32bit、及び終点IPアドレス222は32bitで構成されている。なお、32bitの倍数オプションが任意に設けられる。プロトコル番号219には、ICMP(Internet Control Message Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、DCCP(Datagram Congestion Control Protocol)がある。
UDP処理部17は、図4に示すUDPヘッダの処理を行う。UDPヘッダは、始点ポート番号311、終点ポート番号312、UDPパケット長313、及びUDPチェックサム314から構成される。例えば、始点ポート番号311は16bit、終点ポート番号312は16bit、UDPパケット長313は16bit、及びUDPチェックサム314は16bitで構成されている。
ハードウェアプロトコル処理情報生成部13は、受信のとき、ハードウェアプロトコル処理部12の処理結果からプロトコル処理情報を生成する。そのプロトコル処理情報は、ソフトウェア処理部2に出力される。ハードウェアプロトコル処理再開部14は、送信のとき、ソフトウェアプロトコル処理情報生成部24で生成されたプロトコル処理情報を受信する。ハードウェアプロトコル処理再開部14からプロトコル処理情報を受信したハードウェアプロトコル処理部12は、ハードウェアによるプロトコル処理を行う。
ソフトウェア処理部2には、アプリケーション21、ソフトウェアプロトコル処理部22、ソフトウェアプロトコル処理再開部23、及びソフトウェアプロトコル処理情報生成部24が設けられる。
ソフトウェアプロトコル処理部22は、受信及び送信のときにソフトウェアによるプロトコル処理を実行する。ソフトウェアプロトコル処理部22には、ARP(Address Resolution Protocol)処理部25、IPv6(Internet Protocol version 6)処理部26、ICMPv4(Internet Control Message Protocol version 4)処理部27、及びDCCP(Datagram Congestion Control Protocol)処理部28が設けられる。ARP処理部25は、ARP処理を行う。IPv6処理部26は、IPv6処理を行う。DCCP処理部28は、DCCP処理を行う。
ソフトウェアプロトコル処理再開部23は、受信のとき、ハードウェアプロトコル処理情報生成部13で生成されたプロトコル処理情報を受けて、ソフトウェアプロトコル処理部22を制御する。ソフトウェアプロトコル処理情報生成部24は、送信のとき、ソフトウェアプロトコル処理部22の処理結果からプロトコル処理情報を生成する。そのプロトコル処理情報は、ハードウェアプロトコル処理再開部14へ出力される。ハードウェアプロトコル処理再開部14は、受信したプロトコル処理情報によりハードウェアプロトコル処理部12を制御する。
アプリケーション21は、送信時に映像情報などの送信データを、図示しないディスク装置から読み出す制御をする。また、アプリケーション21は、受信時に映像情報などの受信データをディスク装置に保存する機能を備えている。
次に、実施例1に係る通信装置の動作について、図5及び図6を参照して説明する。図5は、通信装置の受信処理手順を示すフローチャートである。図6は、通信装置の送信処理手順を示すフローチャートである。
通信装置80の受信処理について、図5を参照して説明する。まず、ネットワーク70から伝送されたデータがネットワークコントローラ11に入力される。ネットワークコントローラ11は、Ethernet(R)の物理層の処理、及びEthernet(R)のデータリンク層の一部の処理を行う。具体的には、Ethernet(R)規格によって規定された受信信号を復調し、Ethernet(R)フレーム(図2参照)を取り出す。そして、フレームに破損がないかを検証するためFCS115を用いて検算処理を行う。Ethernet(R)フレームの破損を検出した場合には、当該フレームは破棄される(ステップS11)。
次に、Ethernet(R)フレームに破損がないことが検証されたフレームは、ハードウェアプロトコル処理部12に出力される。ハードウェアプロトコル処理部12は、プロトコル処理を行う(ステップS12)。具体的には、Ethernet(R)処理部15は、受信したEthernet(R)フレームの終点MACアドレス111から、自ホスト宛のフレームであるか、マルチキャストフレームであるか、ブロードキャストフレームであるか、及び他ホスト宛のフレームであるかの判断を行い、宛先種別を識別する。また、必要に応じて始点MACアドレス112、或いは終点MACアドレス111によりフィルタリングを行う。Ethernet(R)フレーム中のタイプ113には、上位層のプロトコル種別(図2のタイプ表を参照)が記録されている。このタイプ113の値がIP(=0800)であれば、ハードウェアプロトコル処理部12での処理を継続し、IPv4処理部16での受信処理が開始される。
IPv4処理部16は、IPv4ヘッダ(図3参照)の処理を行う。Ethernet(R)のタイプ113がIPであってもIPv6である場合もあるため、バージョン211の値が「6」であればハードウェアプロトコル処理部12での処理は終了する。そして、Ethernet(R)処理部15で得られた結果とともに、ネットワーク層のプロトコルがIPv6であることをハードウェアプロトコル処理情報生成部13に通知される。バージョン211の値が「4」であれば、IPv4処理部16は、ヘッダ長212及びIPパケット長214の検証や、ヘッダチェックサム220を検証する。また、IPパケットがフラグメントしている場合には、デフラグメント処理が行われる。
IPヘッダのプロトコル番号219には、上位層のプロトコル種別が記述(図3のプロトコル番号表を参照)されている。このプロトコル番号219の値がDCCP(=33)やICMPv4(=1)などを示すものであれば、ハードウェアプロトコル処理部12での処理は終了する。一方、プロトコル番号219がUDP(=17)であれば、ハードウェアプロトコル処理部12での処理が継続され、UDP処理部17での受信処理が開始される。
UDP処理部17は、UDPヘッダ(図4参照)の処理を行う。UDP処理部17は、UDPパケット長313の検証や、ペイロードのUDPチェックサム314を計算し、データの破損がないかの検証を行う。データの破損を検出すると、ペイロードが破棄され、処理が終了する。
続いて、ハードウェアプロトコル処理部12は、ハードウェア処理による全てのプロトコル処理が完了しているかの判定を行う(ステップS13)。
全てのプロトコル処理が完了していないと判定し、且つEthernet(R)フレーム中のタイプ113がARP(=0806)であれば、ハードウェアプロトコル処理部12は、ハードウェアプロトコル処理情報生成部13に宛先種別と、上位層のプロトコル種別と、データ114をプロトコル処理結果として通知する。また、IPヘッダの値がDCCP(=33)やICMPv4(=1)であれば、ハードウェアプロトコル処理部12は、ハードウェアプロトコル処理情報生成部13に始点IPアドレス221及び終点IPアドレス222、IPパケット長214、ペイロード等を通知する。ハードウェアプロトコル処理情報生成部13は、それらの通知された情報からプロトコル情報を生成する(ステップS14)。
次に、ハードウェアプロトコル処理情報生成部13は、生成したプロトコル情報をソフトウェアプロトコル処理再開部23に伝達する。ソフトウェアプロトコル処理再開部23は、ソフトウェアでのプロトコル処理(ARP、DCCP、ICMPv4)の開始部を決定する(ステップS15)。
続いて、ソフトウェアでのプロトコル処理の開始が指示されたソフトウェアプロトコル処理部22は、ハードウェアプロトコル処理部12で処理されなかったプロトコル処理を実行する(ステップS16)。例えば、受信したフレームがARPであれば、ハードウェアプロトコル処理部12でEthernet(R)処理が行われているので、ARPヘッダの解析を行い、必要ならARPキャッシュの更新やARP応答の送信処理を行う。受信したフレームがDCCPおよびICMPv4の場合は、Ethernet(R)処理およびIPv4処理がハードウェアプロトコル処理部12で行われているため、DCCPのプロトコル処理やICMPv4の処理を行う。
そして、ソフトウェアプロトコル処理部22は、全てのプロトコル処理が完了していると判定した場合(或いは、ソフトウェアによるプロトコル処理後)、処理する映像情報などのデータがあるかを判定する。処理するデータがないと判定した場合は、受信処理は終了する(ステップS17)。一方、処理するデータがあると判定した場合は、アプリケーション21は受信データをディスク装置に格納する処理を実行する(ステップS18)。受信したEthernet(R)フレームがハードウェアプロトコル処理部12全てのプロトコル処理が完了する場合、アプリケーション21は映像情報などのデータをディスク装置に保存する処理が行われる。
このように、受信したEthernet(R)フレームにハードウェアプロトコル処理部12では処理できないプロトコル(ARP、DCCP、ICMPv4など)が含まれている場合、ハードウェアプロトコル処理部12の処理結果から得られたプロトコル処理情報がソフトウェアプロトコル処理部22に通知される。ソフトウェアプロトコル処理部22は、ソフトウェアによるプロトコル処理を終了すると、アプリケーションに渡すデータがあればアプリケーション21にデータを渡し、アプリケーション21は映像情報などの受信データをディスク装置に保存する。
このとき、上述したプロトコル処理情報には、ハードウェアプロトコル処理部12にてプロトコル処理が完了した情報や、プロトコル処理によって得られた値などが含まれる。したがって、ソフトウェアプロトコル処理部22は、ハードウェアプロトコル処理部12で既に処理を終了したプロトコルについては処理を行わず、処理できなかったプロトコルの処理を行う。
次に、通信装置80の送信処理について、図6を参照して説明する。送信処理では、ソフトウェアプロトコル処理部22が送信を行う場合、例えば次の3つのケースがある。第1は、上述した受信処理によりARPやICMPv4が処理された場合に、応答パケットを送信するケース。第2は、相手のMACアドレスを知るために能動的にARP要求パケットを送信するケース。第3は、アプリケーション21からパケットを送信するケースなどがある。ここでは、アプリケーション21或いはソフトウェアプロトコル処理部22によるデータ送信の場合を例にして説明する。
通信装置80の送信処理について、図6を参照して説明する。まず、アプリケーション21により映像情報などのデータがディスク装置から読み出される。アプリケーション21は、プロトコル処理を行うために必要なUDPの始点ポート番号311、終点ポート番号312、UDPパケット長313、IPのバージョン211、サービスタイプ213、IPパケット長214、識別子215、コントロールフラグ216、生存時間218、始点IPアドレス221、終点IPアドレス222、Ethernet(R)の始点MACアドレス112、終点MACアドレス111、ネットワークのMTU(Maximum Transmission Unit)を生成する。これらのプロトコル処理情報は、ソフトウェアプロトコル処理部22に通知される。ソフトウェアプロトコル処理部22は、送信を行うプロトコル処理が全てハードウェアプロトコル処理部12で処理が可能か否かの判定を行う(ステップS21)。
ハードウェアプロトコル処理部12では処理ができないと判定した場合、(例えば、ICMPv4の受信処理を行ったパケットがエコー応答を求めるものであった場合、)ソフトウェアプロトコル処理部22はICMPv4のエコー応答パケットの生成処理を行う。また、ソフトウェアプロトコル処理部22は、ARP要求パケットを受信した場合のARP応答パケットを生成して送信する。なお、プロトコル処理情報中の値がアプリケーション21から指定されなかった場合、ソフトウェアプロトコル処理部22で保持している固定な値を設定してプロトコル処理情報に含めてもよいし、ARP要求パケットを送信して能動的に解決した結果を用いてもよい(ステップS22)。
次に、ソフトウェアプロトコル処理情報生成部24は、IPv4より上位のプロトコル処理が完了したことを示す情報、IPv4処理を行うために必要な始点IPアドレス221、終点IPアドレス222、プロトコル番号219、Ethernet(R)処理を行うために必要な始点MACアドレス112、終点MACアドレス111、ペイロードとペイロードの長さ、を含んだプロトコル処理情報を生成する。また、ソフトウェアプロトコル処理情報生成部24は、下位層であるEthernet(R)の処理に必要な始点MACアドレス112、終点MACアドレス111、タイプ113、ARPまでのプロトコル処理が完了したこと示す情報、をプロトコル処理情報として生成する(ステップS23)。
続いて、ソフトウェアプロトコル処理情報生成部24は、生成したプロトコル処理情報をハードウェアプロトコル処理再開部14に伝達する。ハードウェアプロトコル処理再開部14は、ハードウェアでのプロトコル処理の開始を決定する(ステップS24)。
そして、ハードウェアプロトコル処理部12が全てのプロトコル処理が可能と判定した場合(或いは、ハードウェアでのプロトコル処理の開始が決定された後)、UDP処理部17は、通知されたプロトコル処理情報に含まれる値をUDPヘッダの始点ポート番号311、終点ポート番号312、UDPパケット長313に設定する。また、UDP処理部17は、ヘッダとデータからUDPチェックサム314を計算して、UDPヘッダを作成する。
次に、IPv4処理部16は、必要に応じてフラグメントの処理を行い、パケット毎の識別子215、コントロールフラグ216、フラグメントオフセット217の値を設定する。また、IPヘッダのヘッダチェックサム220以外の値を設定する。最後に、ヘッダチェックサム220を計算して、チェックサムフィールドに値を設定する。
次に、Ethernet(R)処理部15は、Ethernet(R)フレームの始点MACアドレス112、終点MACアドレス111、タイプ113を設定する。また、Ethernet(R)処理部15は、Ethernet(R)のプロトコル処理を行う(ステップS25)。そして、ネットワークコントローラ11は、Ethernet(R)フレームにFCS115を付加し、変調されたEthernet(R)フレームをネットワーク70に送信する(ステップS26)。
このように、アプリケーション21又はソフトウェアプロトコル処理部22からパケット送信を行う場合、ソフトウェアプロトコル処理部22は、送信を行うプロトコル処理が全てハードウェアプロトコル処理部12で処理が可能か否かを判定する。全て処理可能と判断される場合、送信データはハードウェアプロトコル処理部12からネットワークコントローラ11に出力される。ネットワークコントローラ11は、ネットワーク70を介して送信先装置に伝送する。
一方、全て処理ができないと判断される場合、ソフトウェアプロトコル処理部22は、送信プロトコル処理を行う。更に、ソフトウェアプロトコル処理情報生成部24はプロトコル処理情報を生成し、これらのプロトコル処理情報がハードウェアプロトコル処理再開部14を介してハードウェアプロトコル処理部12に送信される。このとき、プロトコル処理情報には、ソフトウェアプロトコル処理部22にてプロトコル処理が完了した部分を示す情報、プロトコル処理により得られた値などが含まれる。ハードウェアプロトコル処理部12では、ソフトウェアプロトコル処理部22で処理できなかったプロトコルのみが処理されることになる。例えば、送信するフレームがARPの場合には、ハードウェアプロトコル処理部12でEthernet(R)の処理が可能であるため、ソフトウェアプロトコル処理部22でARPの処理のみを行い、ハードウェアプロトコル処理部12でEthernet(R)の処理を行う。送信するフレームがDCCPやICMPv4の場合は、ハードウェアプロトコル処理部12でEthernet(R)およびIPv4の処理が可能であるため、ソフトウェアプロトコル処理部22でDCCPまたはICMPv4の処理のみを行い、ハードウェアプロトコル処理部12でIPv4およびEthernet(R)の処理を行う。
図7は、実施例1の第1の変形例を示す。第1の変形例の通信装置80aには、ハードウェア処理部1aとソフトウェア処理部2aが設けられる。ハードウェア処理部1aには、ネットワークコントローラ11a、ハードウェアプロトコル処理部12a、及びハードウェアプロトコル処理情報生成部13aが設けられる。ハードウェアプロトコル処理部12aには、Ethernet(R)受信処理部15a、IPv4受信処理部16a、及びUDP受信処理部17aが設けられる。ソフトウェア処理部2aには、アプリケーション21a、ソフトウェアプロトコル処理部22a、ソフトウェアプロトコル処理再開部23a、及びソフトウェアプロトコル処理部30が設けられる。ソフトウェアプロトコル処理部22aには、ARP処理部25a、IPv6処理部26a、ICMPv4処理部27a、及びDCCP処理部28aが設けられる。ソフトウェアプロトコル処理部30には、IPv4送信処理部31とEthernet(R)送信処理部32が設けられる。
この第1変形例では、受信に対応するハードウェアプロトコル処理情報生成部13aとソフトウェアプロトコル情報再開部23aを通信装置80aに設けている。送信に対応するソフトウェアプロトコル処理部30を通信装置80aのソフトウェア処理部2aに設けている。通信装置80aでは、UDP受信処理を高速化することができる。
この場合、受信データは、ネットワークコントローラ11a、ハードウェアプロトコル処理部12a、ハードウェアプロトコル処理情報生成部13a、ソフトウェアプロトコル処理再開部23a、ソフトウェアプロトコル処理部22a、アプリケーション21aへと順次転送される。送信データは、アプリケーション21a、ソフトウェアプロトコル処理部22a、ソフトウェアプロトコル処理部30、ネットワークコントローラ11aへと順次転送される。
なお、ソフトウェアプロトコル処理部22aとソフトウェアプロトコル処理部30は、同一のCPUによって処理されるものであってもよいし、別々のプロセッサによって処理されるものであってもよい。
図8は、実施例1の第2の変形例を示す。第2の変形例の通信装置80bには、ハードウェア処理部1bとソフトウェア処理部2bが設けられる。ハードウェア処理部1bには、ネットワークコントローラ11b、ハードウェアプロトコル処理部12b、及びハードウェアプロトコル処理再開14bが設けられる。ハードウェアプロトコル処理部12bには、Ethernet(R)送信処理部15b、IPv4送信処理部16b、及びUDP送信処理部17bが設けられる。ソフトウェア処理部2bには、アプリケーション21b、ソフトウェアプロトコル処理部22b、ソフトウェアプロトコル処理情報生成部24b、及びソフトウェアプロトコル処理部40が設けられる。ソフトウェアプロトコル処理部22bには、ARP処理部25b、IPv6処理部26b、ICMPv4処理部27b、及びDCCP処理部28bが設けられる。ソフトウェアプロトコル処理部40には、IPv4受信処理部41とEthernet(R)受信処理部42が設けられる。
この第2変形例では、送信に対応するソフトウェアプロトコル処理情報生成部24bとハードウェアプロトコル情報再開部14bを通信装置80bに設けている。受信に対応するソフトウェアプロトコル処理部40を通信装置80bのソフトウェア処理部2bに設けている。通信装置80bでは、UDP送信処理を高速化することができる。
この場合、送信データは、アプリケーション21b、ソフトウェアプロトコル処理部22b、ソフトウェアプロトコル処理情報生成部24b、ハードウェアプロトコル処理再開部14b、ハードウェアプロトコル処理部12b、ネットワークコントローラ11bへと順次転送される。受信データは、ネットワークコントローラ11b、ソフトウェアプロトコル処理部40、ソフトウェアプロトコル処理部22b、アプリケーション21bへと順次転送される。
なお、ソフトウェアプロトコル処理部22bとソフトウェアプロトコル処理部40は、同一のCPUによって処理されるものであってもよいし、別々のプロセッサによって処理されるものであってもよい。
上述したように、本実施例の通信装置は、フレーム受信処理では、ハードウェアプロトコル処理部12では処理できないフレームの場合、ハードウェアプロトコル処理部12で処理可能なプロトコル処理を行い、ソフトウェアプロトコル処理部22で上位層のプロトコル処理を行う構成としている。また、フレーム送信処理では、ソフトウェアプロトコル処理部22で処理可能なプロトコル処理を行い、ハードウェアプロトコル処理部12で下位層のプロトコル処理を行う構成としている。このため、受信時及び送信時において全てのプロトコル処理がハードウェアプロトコル処理部12で行える場合にも、また一部の処理しかハードウェアプロトコル処理部12で行えない場合にも、できる限り高速にプロトコル処理を実行することができる。したがって、通信装置80の送受信のスループットを大幅に向上させることができる。
また、Ethernet(R)処理とIPv4処理はハードウェアプロトコル処理部12で処理され、ソフトウェアプロトコル処理部22にはEthernet(R)処理部とIPv4処理部を備える必要がないため、ソフトウェアのサイズを削減することができる。更に、ハードウェアプロトコル処理とソフトウェアプロトコル処理を適宜分割することが可能となる。
なお、本実施例では、物理層及びデータリンク層がEthernet(R)であったが、IEEE802.11で定義される規格であってもよい。IEEE802.11を物理層及びデータリンク層に用いる場合、ハードウェアプロトコル処理部12に制御フレーム処理部及びデータフレーム処理部を設けても良い。また、ソフトウェアプロトコル処理部22にマネージメントフレーム処理部を設けてもよい。
また、本実施例ではハードウェアプロトコル処理部12及びソフトウェアプロトコル処理部22の割り当てをプロトコル単位で行った。プロトコル処理情報により未完了部分を通知することにより、これに限定される、例えばIPv4のフラグメント及びデフラグメント処理部をソフトウェアプロトコル処理部22に設けてもよい。また、その他の処理部をハードウェアプロトコル処理部12に設けてもよい。
また、ハードウェアプロトコル処理部12に実装するプロトコルは、HTTP(Hypertext Transfer Protocol)、TCP(Transmission Control Protocol)、RTP(Real-time Transport Protocol)、IP sec(Security Architecture for Internet Protocol)、SCTP(Stream Control Transmission Protocol)、DCCPなど他のプロトコルであってもよい。
更に、プロトコル処理情報を生成する際に、ソフトウェアプロトコル処理部22に固定的な値を保持する構成としたが、ハードウェアプロトコル処理部12に保持してもよい。
次に、本発明の実施例2に係る通信装置について、図面を参照して説明する。図9は通信装置を示すブロック図である。図10は、TCPヘッダの構成を示す図である。図11は、TCPのセッション状態を示す図である。本実施例では、ソケット情報伝達部19をハードウェアプロトコル処理部12cとソフトウェアプロトコル処理部22cの間に設けている点が、実施例1と違う。よって、実施例1と同一構成部分には、同一符号を付してその部分の説明を省略し、異なる部分のみ説明する。
ハードウェアプロトコル処理部12cには、Ethernet(R)処理部15、IPv4処理部16、UDP処理部17の他にTCPデータ処理部18が新たに設けられている。ソフトウェアプロトコル処理部22cには、ARP処理部25、ICMPv4処理部27の他にTCP制御処理部29が新たに設けられている。なお、ソフトウェアプロトコル処理部22cには、IPv6処理部が取り除かれている。
通信装置81は、TCPによりネットワーク70に設けられる装置からの映像データを受信して図示しないディスク装置に保存する機能と、ディスク装置から映像データを読み出してTCPによりネットワーク70に設けられる装置へデータを送信する機能を有している。また、実施例1の機能の他に、ソケット情報をアプリケーション21、ハードウェアプロトコル処理部12c、及びソフトウェアプロトコル処理部22cに伝達するソケット情報伝達部19を有している。
通信装置81では、UDPの送信、或いは受信を行うためにポートが開かれたとき、ソケット情報が作成される。また、TCPの送信、或いは受信を行うためにポートが開かれたとき、ソケット情報が作成される。ソケット情報は、ハードウェアプロトコル処理部12c、及びソフトウェアプロトコル処理部22cから参照可能なメモリ(図示せず)上に設定されている。
ここで、ソケット情報は、プロトコル毎に異なっている。例えば、UDPの場合、本装置のIPアドレス、相手装置のIPアドレス、本装置のポート番号、相手装置のポート番号、セッションの状態、アプリケーションの指定する送信バッファのアドレスと長さ、アプリケーションの指定する受信バッファのアドレスと長さ、IPのサービスタイプ、生存時間、MTU、本装置のMACアドレス、相手装置のMACアドレス等の値が格納されている。UDPのセッションの状態は、オープン或いはクローズのどちらかの状態をとる。
図10は、TCPヘッダの一例を示す。TCPヘッダは、例えば始点ポート番号411、終点ポート番号412、シーケンス番号413、確認応答番号414、データオフセット415、未使用(予約)416、コントロールフラグ417、ウィンドウサイズ418、TCPチェックサム419、及び緊急ポインタ420から構成されている。
例えば、始点ポート番号411は16bit、終点ポート番号412は16bit、シーケンス番号413は32bit、確認応答番号414は32bit、データオフセット415は4bit、未使用(予約)416は6bit、コントロールフラグ417は6bit、ウィンドウサイズ418は16bit、TCPチェックサム419は16bit、及び緊急ポインタ420は16bitである。なお、32bit単位で可変長であるオプションやバディング部が任意に設けられる。コントロールフラグ417のフラグには、URG(Urgent)、ACK(Acknowledge)、PSH(Push)、RST(Reset)、SYN(Synchronize)、及びFIN(Finish)がある。
TCPのセッション情報の場合、本装置のIPアドレス、相手装置のIPアドレス、本装置のポート番号、相手装置のポート番号、セッションの状態、アプリケーションの指定する送信バッファのアドレスと長さ、アプリケーションの指定する受信バッファのアドレスと長さ、IPのサービスタイプ、生存時間、MTU、本装置のMACアドレス、相手装置のMACアドレス、送信したがACKされていないシーケンス番号(SND.UNA)、次に送信するシーケンス番号(SND.NXT)、送信ウィンドウサイズ(SND.WND)、最新のウィンドウ更新のために使ったセグメントシーケンス番号(SND.WL1)、最新のウィンドウ更新のために使われたセグメント確認番号(SND.WL2)、次に受信するべきシーケンス番号(RCV.NXT)、受信ウィンドウサイズ(RCV.WND)等の値が設定される。
TCPのソケット情報については、セグメント送信時或いはセグメント受信時に、ハードウェアプロトコル処理部12c或いはソフトウェアプロトコル処理部22cにて値が更新されるものがある。
図11は、TCPのセッション状態を示す。TCPのセッション状態は、LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLIHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSING、LAST-ACK、TIME-WAIT、及びCLOSEDがある。
次に、実施例2の通信装置の動作について、図12乃至14を参照して説明する。図12は、UDP受信処理を示すフローチャートである。図13は、TCP受信処理を示すフローチャートである。図14は、TCP送信処理を示すフローチャートである。
通信装置81のUDP受信処理について、図12を参照して説明する。まず、ネットワークコントローラ11がネットワーク70から伝送されてきたEthernet(R)フレームを受信する。そして、ネットワークコントローラ11によってハードウェアプロトコル処理部12cが動作し、プロトコル処理が行われる。即ち、UDP処理部17は、UDPヘッダの処理を行い、UDPパケット長313、ペイロードのUDPチェックサム314を計算する。またUDP処理部17は、データの破損がないか否かを検証する。データの破損していることを検知すると、ペイロードを破棄して、処理を終了する(ステップS31)。次に、ハードウェアプロトコル処理部12cは、ソケット情報のセッション状態がオープンかどうかの判定を行う(ステップS32)。
ソケット情報のセッション状態が「クローズ」状態と判定された場合、ハードウェアプロトコル処理情報生成部13はICMPのport unreachableを送信するプロトコル処理情報を生成する(ステップS33)。このプロトコル処理情報はソフトウェアプロトコル処理再開部23に伝達される。ソフトウェアプロトコル処理再開部23は、ソフトウェアでのプロトコル処理の開始を決定して、ソフトウェアプロトコル処理部22cに通知する(ステップS34)。ソフトウェアプロトコル処理部22cのICMPv4処理部27は、port unreachableパケットを作成してアプリケーション21に送信する(ステップS35)。
一方、セッションの状態が「オープン」状態と判定した場合、ハードウェアプロトコル処理部12cは、アプリケーション21で処理する受信データがあるか否かの判定を行う(ステップS36)。アプリケーション21にて処理する受信データがないと判定された場合、受信処理は終了する。
アプリケーション21にて処理する受信データがあると判定された場合、UDP処理部17はソケット情報によって指定されているアプリケーション21の受信バッファに受信データを書き込み、ディスク装置に映像データを格納して、処理を終了する(ステップS37)。
次に、通信装置81のTCP受信処理について、図13を参照して説明する。TCPデータ処理部18は、以下のTCP受信処理を実行する。(1)ソケット情報のセッション状態が「ESTABLISHED」であれば、TCPヘッダの一部の処理を行う。(2)TCPセグメントのチェックサム検証と、シーケンス番号順にデータの並べ替え処理を行う。(3)ペイロードをソケット情報から得られるアプリケーション21の受信バッファに書き込む。(4)TCPセグメントのコントロールフラグ417のACKビットが設定されていれば、確認応答された内部送信バッファの解放処理を行う。(5)TCPセグメントを受信した場合、送信する確認応答セグメントの送信処理を行う(ステップS41)。
ここで、TCPデータ処理部18によって確認応答セグメントが作成されると、ハードウェアプロトコル処理部12cのIPv4処理部16及びEthernet(R)処理部15では、それぞれの送信処理を行う。これにより、確認応答セグメントはネットワークコントローラ11を介してネットワーク11に接続されるクライアント装置に送信される。
次に、TCPデータ処理部18は、TCPセグメントのコントロールフラグ417(図10のコントロールフラグ表を参照)にFIN、SYN、或いはRSTのいずれかが設定されているか否かの判定を行う(ステップS42)。
FIN、SYN、或いはRSTが設定されていると判定した場合、ハードウェアプロトコル処理情報生成部13は、プロトコル処理情報を生成する(ステップS43)。このプロトコル処理情報は、ハードウェアプロトコル処理情報生成部13からソフトウェアプロトコル処理再開部23に伝達される。ソフトウェアプロトコル処理再開部23は、ソフトウェアプロトコル処理部22cに対しソフトウェアでのプロトコル処理の開始を指示する(ステップS44)。ソフトウェアプロトコル処理部22cのTCP制御処理部29は、TCP制御処理を行う(ステップS45)。TCP制御処理部29は、例えばRFC793に従い、TCPコントロールフラグのビット処理を行う。例えば、SYNフラグが設定されていて、ソケット情報のセッション状態がLISTENであれば、セッション情報のSND.NXT、RCV.NXT等の値が設定される。このとき、コントロールフラグにSYNビットとACKビットを立てたセグメントが相手装置に送信され、SYN-RECEIVEDにセッション状態を移行するという処理が行われる。ソフトウェアプロトコル処理部22cは、アプリケーション21にて処理する受信データがあるか否かの判定を行う(ステップS46)。処理する受信データがないと判定した場合は、受信処理を終了する。
処理する受信データがある場合、TCPデータ処理部18はソケット情報によって指定されているアプリケーション21の受信バッファに書き込み、アプリケーション21は受信データをディスク装置に格納する動作を実行する(ステップS47)。
次に、通信装置81のアプリケーション21からTCPセグメントを送信する処理を、図14を参照して説明する。ここでは、アプリケーション21から送信するとしたが、ソフトウェアプロトコル処理部22cから送信する場合も同じである。
まず、アプリケーション21は、ソケット情報に送信する映像情報などの送信データを格納したバッファのアドレス及び長さなど、プロトコル処理を行うために必要なソケット情報を設定して、直接ハードウェアプロトコル処理部12cへ通知する。
次に、コントロールフラグ417のACKフラグ(=02)のみを設定すべきセグメントの場合は以下の送信処理が実行される。ソフトウェアプロトコル処理部22cは、コントロールフラグのFIN、SYN、或いはRSTビットを設定すべきセグメントか否かの判定を行う(ステップS51)。
FIN、SYN、或いはRSTビットを設定すべきセグメントと判定した場合、ソフトウェアプロトコル処理部22cのTCP制御処理部29は、TCPシーケンス番号の制御やTCPヘッダの生成など、TCPの制御処理を行う(ステップS52)。この様なケースは、アプリケーション21からコネクションの確立や切断を要求された場合や、コントロールフラグのSYNビットが設定されたセグメントを受信した場合、TCPセグメントの応答処理を求める場合などで行われる。
次に、ソフトウェアプロトコル処理情報生成部24は、IPv4よりも上位のプロトコル処理が完了されたことを示す情報と、IPv4処理に必要な情報(始点IPアドレス221、終点IPアドレス222、及びプロトコル番号219)と、Ethernet(R)処理に必要な情報(始点MACアドレス112及び終点MACアドレス111)と、ペイロードとペイロードの長さの情報を含むプロトコル処理情報を生成する(ステップS53)。
続いて、このプロトコル処理情報がソフトウェアプロトコル処理情報生成部24からハードウェアプロトコル処理再開部14に伝達される。そして、ハードウェアプロトコル処理再開部14は、ハードウェアでのプロトコル処理の開始を決定する(ステップS54)。
一方、FIN、SYN、或いはRSTビットを設定すべきセグメントでないと判定した場合、ハードウェアプロトコル処理部12cはTCPデータ処理を行う。上述したハードウェアプロトコル処理再開部14から情報が入力された場合も、ハードウェアプロトコル処理部12cはTCPデータ処理を行う(ステップS55)。ハードウェアプロトコル処理部12cは、ソケット情報伝達部19を介して受信したソケット情報からTCPヘッダの始点ポート番号411、終点ポート番号412、シーケンス番号413、確認応答番号414、コントロールフラグ417、ウィンドウサイズ418を設定する。また、ヘッダ長からデータオフセットを計算する。更に、TCPヘッダとデータからTCPチェックサム419を計算する。こうして得られたデータから、TCPヘッダが作成される。
次に、IPv4処理部16は、IPヘッダ(図3参照)のヘッダチェックサム220以外の値を設定する。またIPv4処理部16は、ヘッダチェックサム220を計算して、チェックサムフィールドに設定する。
続いて、Ethernet(R)処理部15では、Ethernet(R)フレーム(図2参照)の始点MACアドレス112、終点MACアドレス111、及びタイプ113を設定する(ステップS55)。
最後に、ネットワークコントローラ11はEthernet(R)フレームにFCS115を付加する。こうして作成されたEthernet(R)フレームは変調されて、ネットワーク70を介して送信先装置に送信データが伝送される(ステップS56)。
このように、アプリケーション21又はソフトウェアプロトコル処理部22cから送信データをパケット送信する場合、まずTCPセグメントのコントロールフラグにACKビット以外のビットを設定すべきパケットかの判断が行われる。もしも、コントロールフラグのACKビットのみが設定されたセグメントである場合、全てハードウェアプロトコル処理部12cによってプロトコル処理されることになる。よって、ソフトウェアプロトコル処理部22cではプロトコル処理は行わない。
一方、コントロールフラグのACK以外のビットを設定すべきセグメントである場合には、ソフトウェアプロトコル処理部22cで少なくとも一部のプロトコル処理が行われる。この場合、ソフトウェアプロトコル処理情報生成部24にて生成されたプロトコル処理情報を用いて、ハードウェアプロトコル処理部12cがプロトコル処理を行うものである。このとき、プロトコル処理情報には、ソフトウェアプロトコル処理部22cにてプロトコル処理が完了した部分を示す情報、及び得られた値などが含まれる。ハードウェアプロトコル処理部12cでは、ソフトウェアプロトコル処理部22cによって既に処理されたプロトコル処理については、処理しない。処理されなかったプロトコル処理のみが行われる。
実施例2では、セッション確立に関するTCPの制御処理をソフトウェアプロトコル処理部22cで行っているが、セッション状態がSYN-SENT状態又はSYN-RECEIVED状態からESTABLISHED状態への変更をハードウェアプロトコル処理部12cで行ってもよい。これにより、セッション確立直後にデータが受信された場合にも、データを取りこぼすことなく受信することが可能となる。
また、TCPの確認応答セグメントの送信処理をハードウェアプロトコル処理部12cで行っているが、確認応答セグメントの送信間隔を開け、これをソフトウェアプロトコル処理部22cで行ってもよい。これにより、確認応答セグメントを送信する回路を削減することができる。
また、データの送信処理は、全てハードウェアプロトコル処理部12cで行うとしているが、再送処理をソフトウェアプロトコル処理部22cで行ってもよい。ロス率の低いネットワークでは再送処理の発生頻度が低いので、再送のための必要な回路を削減しながら高速なプロトコル処理を実現することが可能となる。
また、受信処理において、シーケンス番号が連続しているセグメントの受信はハードウェアプロトコル処理部12cで行い、不連続なセグメントの受信はソフトウェアプロトコル処理部22cで行ってもよい。パケット順序の入れ替わりの発生頻度が低いネットワークでは、ハードウェアプロトコル処理部12cの回路を簡単化し、高速なプロトコル処理を実現することが可能となる。
更に、自装置のMACアドレスと相手装置のMACアドレスは、セッション情報を介してハードウェアプロトコル処理部12cとソフトウェアプロトコル処理部22cで共有したが、ハードウェアプロトコル処理部12cが送信処理を行うときにIPアドレスからMACアドレスを参照できるようにしてもよい。この場合、ソフトウェアプロトコル処理部22cにルーティングテーブルを備えることで実現できる。
上述したように、本実施例の通信装置では、ソケット情報を用いてプロトコル処理を行うことでハードウェアプロトコル処理部12cとソフトウェアプロトコル処理部22cの状態が同期できる。これにより、稼働率の高いデータ処理をハードウェアプロトコル処理部12cで行い、稼働率の低い制御処理をソフトウェアプロトコル処理部22cで行うことができる。したがって、ハードウェアプロトコル処理部12cの回路規模を抑え、さらに通信装置の送受信のスループットを大幅に向上させることができる。
また、Ethernet(R)処理とIPv4処理とTCPデータ処理についてはハードウェアプロトコル処理部12cで処理され、ソフトウェアプロトコル処理部22cに同じ処理部を備える必要がないため、ソフトウェアサイズを削減することができる。
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々、設計変更してもよい。また実施例1,2を適宜組み合わせてもよい。
実施例の通信装置は、例えば汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することができる。また、実施例の通信装置に内蔵或いは外付けされたメモリ、ハードディスク、CD−R、CD−RW、DVD−RAM、DVD−Rなどの記憶媒体などを適宜利用するのが好ましい。
本発明によれば、ネットワーク関連装置へ適用することができる。
1、1a、1b、1c ハードウェア処理部
2、2a、2b、2c ソフトウェア処理部
11、11a、11b ネットワークコントローラ
12、12a、12b ハードウェアプロトコル処理部
13、13a ハードウェアプロトコル処理情報生成部
14、14b ハードウェアプロトコル処理再開部
15、15a、15b Ethernet(R)処理部
16、16a、16b IPv4処理部
17、17a、17b UDP処理部
19 ソケット情報伝達部
21、21a、21b アプリケーション
22、22a、30、40 ソフトウェアプロトコル処理部
23、23a ソフトウェアプロトコル処理再開部
24、24b ソフトウェアプロトコル処理情報生成部
25、25a、25b ARP処理部
26、26a、26b IPv6処理部
27、27a、27b ICMPv4処理部
28、28a、28b DCCP処理部
29 TCP制御処理部
31 IPv4送信処理部
32 Ethernet(R)送信処理部
41 IPv4受信処理部
42 Ethernet(R)受信処理部
70 ネットワーク
80、80a 通信装置
211 バージョン
212 ヘッダ長
213 サービスタイプ
214 IPパケット長
215 識別子
216 コントロールフラグ
217 フラグメントオフセット
218 生存時間
219 プロトコル番号
220 ヘッダチェックサム
221 始点IPアドレス
222 終点IPアドレス
311、411 始点ポート番号
312、412 終点ポート番号
313 UDPパケット長
314 UDPチェックサム
413 シーケンス番号
414 確認応答番号
415 データオフセット
416 未使用(予約)
417 コントロールフラグ
418 ウィンドウサイズ
419 TCPチェックサム
420 緊急ポインタ

Claims (18)

  1. 受信データのフレームに対しハードウェアにより、前記フレームの内容に応じて異なるプロトコル処理を行うハードウェアプロトコル処理部と、
    前記ハードウェアプロトコル処理部とは異なるハードウェアで実現され、前記受信データのフレームに対しソフトウェアによるプロトコル処理を行うソフトウェアプロトコル処理部と、
    前記受信データのフレーム毎に、前記ハードウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ソフトウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ハードウェアプロトコル処理部によるプロトコル処理によって得られた値を含むプロトコル処理情報を生成するハードウェアプロトコル処理情報生成部と、
    前記プロトコル処理情報を用いて、前記ハードウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ソフトウェアプロトコル処理部に行わせるソフトウェアプロトコル処理再開部と、
    を具備することを特徴とする通信装置。
  2. 前記ハードウェアプロトコル処理部によるハードウェアプロトコル処理とソフトウェアプロトコル処理部によるソフトウェアプロトコル処理は、トランスポート層以下の階層のプロトコル処理を互いに分担して実行することを特徴とする請求項1に記載の通信装置。
  3. 前記ハードウェアプロトコル処理部が実行し、前記フレームの内容に応じて異なるプロトコル処理は、前記フレームの内容に応じて異なる階層のプロトコル処理であることを特徴とする請求項1に記載の通信装置。
  4. 前記ソフトウェアプロトコル処理部が実施するプロトコル処理は、前記ハードウェアプロトコル処理部で処理できないプロトコル処理であることを特徴とする請求項1に記載の通信装置。
  5. 前記プロトコル処理情報は、前記ハードウェアプロトコル処理部で処理が完了した層の上位層のプロトコル識別子を含み、
    前記ソフトウェアプロトコル処理再開部は、上位層のプロトコル処理を前記ソフトウェアプロトコル処理部に行わせることを特徴とする請求項1に記載の通信装置。
  6. 送信データのフレームに対しソフトウェアにより、前記フレームの内容に応じて異なるプロトコル処理を行うソフトウェアプロトコル処理部と、
    前記ソフトウェアプロトコル処理部とは異なるハードウェアで実現され、前記送信データのフレームに対しハードウェアによるプロトコル処理を行うハードウェアプロトコル処理部と、
    前記送信データのフレーム毎に、前記ソフトウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ハードウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ソフトウェアプロトコル処理部によるプロトコル処理で得られた値を含むプロトコル処理情報を生成するソフトウェアプロトコル処理情報生成部と、
    前記プロトコル処理情報を用いて、前記ソフトウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ハードウェアプロトコル処理部に行わせるハードウェアプロトコル処理再開部と、
    を具備することを特徴とする通信装置。
  7. 前記ハードウェアプロトコル処理部によるハードウェアプロトコル処理とソフトウェアプロトコル処理部によるソフトウェアプロトコル処理は、トランスポート層以下の階層のプロトコル処理を互いに分担して実行することを特徴とする請求項6に記載の通信装置。
  8. 前記ハードウェアプロトコル処理部が実行し、前記フレームの内容に応じて異なるプロトコル処理は、前記フレームの内容に応じて異なる階層のプロトコル処理であることを特徴とする請求項6に記載の通信装置。
  9. 前記ソフトウェアプロトコル処理部が実施するプロトコル処理は、前記ハードウェアプロトコル処理部で処理できないプロトコル処理であることを特徴とする請求項6に記載の通信装置。
  10. 前記プロトコル処理情報は、前記ソフトウェアプロトコル処理部で処理が完了した層の下位層のプロトコル識別子を含み、
    前記ハードウェアプロトコル処理再開部は、下位層のプロトコル処理を前記ハードウェアプロトコル処理部に行わせることを特徴とする請求項6に記載の通信装置。
  11. 受信データのフレーム及び送信データのフレームに対しハードウェアにより、前記フレームの内容に応じて異なるプロトコル処理を行うハードウェアプロトコル処理部と、
    前記ハードウェアプロトコル処理部とは異なるハードウェアで実現され、前記受信データのフレーム及び前記送信データのフレームに対しソフトウェアによるプロトコル処理を行うソフトウェアプロトコル処理部と、
    受信のときに、前記受信データのフレーム毎に、前記ハードウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ソフトウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ハードウェアプロトコル処理部によるプロトコル処理によって得られた値を含むプロトコル処理情報を生成するハードウェアプロトコル処理情報生成部と、
    受信のときに、前記ハードウェアプロトコル処理情報生成部のプロトコル処理情報を用いて、前記ハードウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ソフトウェアプロトコル処理部に行わせるソフトウェアプロトコル処理再開部と、
    送信のときに、前記送信データのフレーム毎に、前記ソフトウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ハードウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ソフトウェアプロトコル処理部によるプロトコル処理によって得られた値を含むプロトコル処理情報を生成するソフトウェアプロトコル処理情報生成部と、
    送信のときに、前記ソフトウェアプロトコル処理情報生成部のプロトコル処理情報を用いて、前記ソフトウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ハードウェアプロトコル処理部に行わせるハードウェアプロトコル処理再開部と、
    を具備することを特徴とする通信装置。
  12. 前記ハードウェアプロトコル処理部は、Ethernet(R)処理部、IP処理部、及びUDP処理部を有し、
    前記プロトコル処理情報は、前記ハードウェアプロトコル処理部の各処理の完了の有無、始点MACアドレス、終点MACアドレス、フレームのタイプ値、始点IPアドレス、終点IPアドレス、パケット長、プロトコル番号、ペイロードの内少なくとも1つを含み、
    前記ソフトウェアプロトコル処理部は、通信プロトコルの内、前記Ethernet(R)処理部、前記IP処理部、及び前記UDP処理部以外のプロトコル処理部を備えることを特徴とする請求項11に記載の通信装置。
  13. 前記ハードウェアプロトコル処理部は、Ethernet(R)処理部、IP処理部、UDP処理部、及びTCPデータ処理部を有し、
    前記プロトコル処理情報は、前記ハードウェアプロトコル処理部の各処理の完了の有無、TCPのコントロールフラグ、シーケンス番号、確認応答番号、始点IPアドレス、終点IPアドレス、始点ポート番号、終点ポート番号の内少なくとも1つを含み、
    前記ソフトウェアプロトコル処理部は、TCP処理の内、TCPセグメントのコントロールフラグのSYN、FIN、或いはRSTフラグ処理を行うTCP制御処理部を備えることを特徴とする請求項11に記載の通信装置。
  14. 前記ハードウェアプロトコル処理部と前記ソフトウェアプロトコル処理部の間に、ソケット情報を伝達するソケット情報伝達部を有し、
    前記ハードウェアプロトコル処理部或いは前記ソフトウェアプロトコル処理部は、前記ソケット情報を用いてプロトコル処理を行うことを特徴とする請求項11に記載の通信装置。
  15. 前記TCPデータ処理部は、シーケンス番号が連続なセグメントの受信を行い、
    前記ソフトウェアプロトコル処理部はシーケンス番号が不連続なセグメントの受信処理を行うことを特徴とする請求項13に記載の通信装置。
  16. 前記TCPデータ処理部は、再送以外のデータ送信処理を行い、
    前記ソフトウェアプロトコル処理部は再送のデータ送信処理を行うことを特徴とする請求項13に記載の通信装置。
  17. ハードウェアプロトコル処理部が、入力された受信データのフレームに対し、前記フレーム内容に応じて異なるプロトコル処理を実行し、
    前記ハードウェアプロトコル処理部が、ハードウェア処理による全てのプロトコル処理が完了しているかどうかの判定を行い、
    全てのプロトコル処理が完了していない場合、
    ハードウェアプロトコル処理情報生成部が、前記受信データのフレーム毎に、前記ハードウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ソフトウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ハードウェアプロトコル処理部によるプロトコル処理によって得られた値を含むプロトコル処理情報を生成し、
    ソフトウェアプロトコル処理再開部が、前記プロトコル処理情報を用いて、前記ハードウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ソフトウェアプロトコル処理部に実行させる
    を具備することを特徴とする通信装置の受信処理方法。
  18. ソフトウェアプロトコル処理部が、読み出された送信データに対し、全てのプロトコル処理がハードウェアプロトコル処理部で処理を実行できるかどうかの判定を行い、
    前記ハードウェアプロトコル処理部で全てのプロトコル処理を実行できない場合、
    ソフトウェアプロトコル処理情報生成部が、前記送信データのフレーム毎に、前記ソフトウェアプロトコル処理部により処理が完了したプロトコル処理を示す情報又は前記ハードウェアプロトコル処理部で処理すべきプロトコル処理を示す情報と、前記ソフトウェアプロトコル処理部によるプロトコル処理で得られた値を含むプロトコル処理情報を生成し、
    ハードウェアプロトコル処理再開部が、前記プロトコル処理情報を用いて、前記ソフトウェアプロトコル処理部で処理が未完了となっているプロトコル処理を前記ハードウェアプロトコル処理部に実行させる
    を具備することを特徴とする通信装置の送信処理方法。
JP2011531639A 2009-09-16 2009-09-16 通信装置とそれを用いた受信処理方法及び送信処理方法 Active JP5481485B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/004651 WO2011033562A1 (ja) 2009-09-16 2009-09-16 通信装置

Publications (2)

Publication Number Publication Date
JPWO2011033562A1 JPWO2011033562A1 (ja) 2013-02-07
JP5481485B2 true JP5481485B2 (ja) 2014-04-23

Family

ID=43758191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011531639A Active JP5481485B2 (ja) 2009-09-16 2009-09-16 通信装置とそれを用いた受信処理方法及び送信処理方法

Country Status (3)

Country Link
US (1) US8943214B2 (ja)
JP (1) JP5481485B2 (ja)
WO (1) WO2011033562A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5361924B2 (ja) 2011-02-28 2013-12-04 株式会社東芝 データ送信装置、データ通信装置および通信プログラム
JP6080968B2 (ja) 2013-09-30 2017-02-15 三菱電機株式会社 受信装置および通信装置
JP6175389B2 (ja) 2014-03-13 2017-08-02 株式会社東芝 通信装置、情報処理装置、通信方法および通信プログラム
JP6463898B2 (ja) 2014-03-13 2019-02-06 株式会社東芝 通信装置、情報処理装置、通信方法及び通信プログラム
JP6800514B2 (ja) * 2016-12-08 2020-12-16 キヤノン株式会社 通信装置、その制御方法、およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235536A (ja) * 1999-02-15 2000-08-29 Fuji Xerox Co Ltd データ通信方式及び装置
JP2001339462A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 通信プロトコル処理方法および通信プロトコル処理装置
JP2003308262A (ja) * 2002-04-08 2003-10-31 Wiznot Corp ハードウェアプロトコルプロセシングロジックで実現されたインタネット通信プロトコル装置、及びその装置を用いたデータ並列処理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JP3491626B2 (ja) * 2001-05-29 2004-01-26 ソニー株式会社 送信装置、受信装置、及び送受信装置
US7389462B1 (en) * 2003-02-14 2008-06-17 Istor Networks, Inc. System and methods for high rate hardware-accelerated network protocol processing
US8549345B1 (en) * 2003-10-31 2013-10-01 Oracle America, Inc. Methods and apparatus for recovering from a failed network interface card
KR20050049864A (ko) * 2003-11-24 2005-05-27 삼성전자주식회사 소프트웨어 프로토콜 스택과 하드웨어 프로토콜 스택을사용한 멀티미디어 통신 장치 및 그 통신 방법
JP2006031145A (ja) 2004-07-13 2006-02-02 Matsushita Electric Ind Co Ltd データ受信装置
KR100530856B1 (ko) * 2005-05-11 2005-11-23 (주) 위즈네트 임베디드 시스템을 위한 고속 데이터 처리 기능을 가지는통신방법 및 그 장치
US7760741B2 (en) * 2005-05-18 2010-07-20 International Business Machines Corporation Network acceleration architecture
JP2007142582A (ja) 2005-11-15 2007-06-07 Canon Inc データ通信装置、データ通信方法、プログラム及び記憶媒体
JP5587530B2 (ja) 2007-03-29 2014-09-10 日本電気株式会社 エンジン・プロセッサ連携システム及び連携方法
US8054779B2 (en) * 2007-05-08 2011-11-08 Microsoft Corporation Simultaneous wireless support in software defined radio
JP4964683B2 (ja) 2007-06-18 2012-07-04 株式会社リコー 通信装置およびプログラム
JP2009055134A (ja) * 2007-08-23 2009-03-12 Ricoh Co Ltd 通信制御装置、通信制御方法及び通信制御プログラム
JP5049834B2 (ja) 2008-03-26 2012-10-17 株式会社東芝 データ受信装置、データ受信方法およびデータ処理プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235536A (ja) * 1999-02-15 2000-08-29 Fuji Xerox Co Ltd データ通信方式及び装置
JP2001339462A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 通信プロトコル処理方法および通信プロトコル処理装置
JP2003308262A (ja) * 2002-04-08 2003-10-31 Wiznot Corp ハードウェアプロトコルプロセシングロジックで実現されたインタネット通信プロトコル装置、及びその装置を用いたデータ並列処理方法

Also Published As

Publication number Publication date
WO2011033562A1 (ja) 2011-03-24
US8943214B2 (en) 2015-01-27
US20120233344A1 (en) 2012-09-13
JPWO2011033562A1 (ja) 2013-02-07

Similar Documents

Publication Publication Date Title
US7171489B2 (en) Method to synchronize and upload an offloaded network stack connection with a network stack
US7590755B2 (en) Method to offload a network stack
US7526577B2 (en) Multiple offload of network state objects with support for failover events
US7716731B2 (en) Method for dynamically tunneling over an unreliable protocol or a reliable protocol, based on network conditions
US7773546B2 (en) System and method for a software-based TCP/IP offload engine for digital media renderers
US8583831B2 (en) Thin client discovery
JP2010510715A (ja) 冗長の接続を除去する方法
WO2018128597A1 (en) Cross-device segmentation offload
WO2010097978A1 (ja) 通信装置、方法及びプログラム
JP5481485B2 (ja) 通信装置とそれを用いた受信処理方法及び送信処理方法
JP4658546B2 (ja) フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
US8578040B2 (en) Method, system and article for client application control of network transmission loss tolerance
Herrero et al. Network and Transport Layers
JP2017163346A (ja) 通信装置、方法、及びプログラム
JP2020043486A (ja) 通信装置、通信装置の制御方法およびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130729

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R151 Written notification of patent or utility model registration

Ref document number: 5481485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151