JP2007142582A - Data communication device, data communication method, program, and storage medium - Google Patents
Data communication device, data communication method, program, and storage medium Download PDFInfo
- Publication number
- JP2007142582A JP2007142582A JP2005330650A JP2005330650A JP2007142582A JP 2007142582 A JP2007142582 A JP 2007142582A JP 2005330650 A JP2005330650 A JP 2005330650A JP 2005330650 A JP2005330650 A JP 2005330650A JP 2007142582 A JP2007142582 A JP 2007142582A
- Authority
- JP
- Japan
- Prior art keywords
- protocol
- data communication
- management source
- processing
- control block
- 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.)
- Withdrawn
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
Description
本発明は、ネットワークを介して行うデータ通信技術に関するものである。 The present invention relates to a data communication technique performed via a network.
インターネットを中心とするネットワークプロトコルとして、インターネット・プロトコル(IP)、トランスポート・コントロール・プロトコル(TCP)等が用いられている。ここで、IPは、Internet Protocolを示し、TCPは、Transmission Control Protocolを示す。これら一連のプロトコル群はTCP/IPと呼ばれている。 As a network protocol centering on the Internet, the Internet protocol (IP), the transport control protocol (TCP), etc. are used. Here, IP indicates Internet Protocol, and TCP indicates Transmission Control Protocol. A series of these protocols is called TCP / IP.
TCP/IPは、汎用プロセッサ上のソフトウェアモジュールとして、オペレーティングシステムに組み込まれた形で実現されることが多い。近年TCP/IPのプロトコル処理を専門に受け持つハードウェアモジュールとしてTOE (TCP/IP Offload Engine)が用いられるようになってきている。 TCP / IP is often implemented as a software module on a general-purpose processor and incorporated in an operating system. In recent years, a TOE (TCP / IP Offload Engine) has been used as a hardware module that specializes in TCP / IP protocol processing.
TOEは、専用のハードウェア、または専用プロセッサとファームウェアとして構成されることが多いが、汎用プロセッサ上のソフトウェア処理の代替という点で同じものとみなすことができる。TCP/IPに限らず、より上位のプロトコル処理を受け持つハードウェアも存在するが、これらは総称して通信オフロードエンジンと呼ばれている。 The TOE is often configured as dedicated hardware or dedicated processor and firmware, but can be considered the same in terms of an alternative to software processing on a general purpose processor. There is not only TCP / IP but also hardware that handles higher-level protocol processing, but these are collectively referred to as a communication offload engine.
TOEを用いると、チェックサム計算などTCP/IPプロトコル処理に適した機構を備えることから、比較的低いコストで高い性能を得ることができる。更に汎用プロセッサの処理負荷を軽減することで、アプリケーションとして画像処理など負荷の重い処理を実施することができ、システムの機能を高めることもできる。一方、従来のTOEでは、コネクション数の上限が予め制限されていたり、TCP/IPのパラメータ調整範囲が制限されていたりする場合がある。このため、汎用プロセッサ上のソフトウェアモジュールにくらべると柔軟性・拡張性が乏しく、結果的に適用範囲が限られるという問題がある。 When the TOE is used, a mechanism suitable for TCP / IP protocol processing such as checksum calculation is provided, so that high performance can be obtained at a relatively low cost. Furthermore, by reducing the processing load of the general-purpose processor, heavy processing such as image processing can be performed as an application, and the function of the system can be enhanced. On the other hand, in the conventional TOE, the upper limit of the number of connections may be limited in advance, or the TCP / IP parameter adjustment range may be limited. For this reason, there is a problem that flexibility and expandability are poor compared to software modules on a general-purpose processor, and as a result, the application range is limited.
なお、特許文献1には、異なる通信プロトコルをもつ複数のデバイスを接続可能とするために、接続されるデバイスに応じてプログラムを切り換えることが開示されている。
すなわち、TOEを含む従来の通信オフロードエンジンでは、汎用プロセッサ上のソフトウェアモジュールと比べて柔軟性・拡張性が乏しい。特に、TCPのような内部状態の複雑なプロトコルについては、汎用プロセッサ上のソフトウェアモジュールと併用することができないという問題がある。 That is, the conventional communication offload engine including the TOE is less flexible and expandable than the software module on the general-purpose processor. In particular, there is a problem that a complicated protocol having an internal state such as TCP cannot be used together with a software module on a general-purpose processor.
本発明は、上記の従来技術における問題を解決するべく、柔軟性・拡張性に優れたデータ通信技術を提供することを目的とするものである。TCP/IPのプロトコル処理を汎用プロセッサ上のソフトウェアモジュールと通信オフロードエンジンを併用しつつ、通信内容に応じて動的に選択する。これにより、高い柔軟性・拡張性を確保しつつ、通信内容に応じて最適な処理系の選択を実現するデータ通信技術の提供を目的とする。 SUMMARY OF THE INVENTION An object of the present invention is to provide a data communication technology excellent in flexibility and expandability in order to solve the above-described problems in the prior art. TCP / IP protocol processing is dynamically selected according to communication contents while using a software module on a general-purpose processor and a communication offload engine in combination. Accordingly, an object of the present invention is to provide a data communication technique that realizes selection of an optimal processing system according to communication contents while ensuring high flexibility and expandability.
上記の目的を達成するべく、本発明に係るデータ通信装置は、
ソフトウェアモジュールの実行を制御する汎用プロセッサと、通信を制御する通信制御プロセッサとを有するデータ通信装置であって、
データ通信において必要とされるプロトコルの処理が予め設定された管理元で可能か否を判定する判定手段と、
前記判定手段の判定により、前記プロトコルの処理が前記管理元で実行できない場合、前記プロトコルの処理を制御するために生成されたプロトコル・コントロール・ブロックの管理元を切り替える切り替え手段と
を備えることを特徴とする。
In order to achieve the above object, a data communication apparatus according to the present invention provides:
A data communication apparatus having a general-purpose processor for controlling execution of a software module and a communication control processor for controlling communication,
A determination means for determining whether or not a protocol processing required in data communication is possible at a preset management source;
And switching means for switching the management source of the protocol control block generated to control the protocol processing when the processing of the protocol cannot be executed by the management source as determined by the determination means. And
あるいは、本発明に係るデータ通信方法は、
ソフトウェアモジュールの実行を制御する汎用プロセッサと、通信を制御する通信制御プロセッサとを有するデータ通信装置におけるデータ通信方法であって、
データ通信において必要とされるプロトコルの処理が予め設定された管理元で可能か否を判定する判定工程と、
前記判定工程の判定により、前記プロトコルの処理が前記管理元で実行できない場合、前記プロトコルの処理を制御するために生成されたプロトコル・コントロール・ブロックの管理元を切り替える切り替え工程と
を備えることを特徴とする。
Alternatively, the data communication method according to the present invention includes:
A data communication method in a data communication apparatus having a general-purpose processor for controlling execution of a software module and a communication control processor for controlling communication,
A determination step of determining whether or not a protocol process required in data communication is possible at a preset management source;
A switching step of switching the management source of the protocol control block generated to control the protocol processing when the processing of the protocol cannot be executed by the management source due to the determination of the determination step. And
本発明によれば、データ通信の内容に応じて、汎用プロセッサまたは通信を制御する通信制御プロセッサを選択することで、高い柔軟性及び拡張性を確保しつつ、最適な処理系の選択が可能になる。 According to the present invention, it is possible to select an optimum processing system while ensuring high flexibility and expandability by selecting a general-purpose processor or a communication control processor that controls communication according to the contents of data communication. Become.
(第1実施形態)
以下、図面を参照して本発明の実施形態を説明する。図1は、本発明の実施形態に係るデータ通信装置の構成を示すブロック図である。汎用プロセッサ(CPU)101、専用の通信制御プロセッサであるオフロードエンジン(TOE)102、ROM103、RAM104、ネットワーク107と接続するためのネットワークインタフェース(NIC)105は、バス106により接続されている。
(First embodiment)
Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing a configuration of a data communication apparatus according to an embodiment of the present invention. A general-purpose processor (CPU) 101, an offload engine (TOE) 102 that is a dedicated communication control processor, a
汎用プロセッサ101は、例えば、Unix(登録商標)のような汎用オペレーティングシステムを稼動させ、オフロードエンジン102は、組込み用のオペレーティングシステムを稼動させる。両オペレーティングシステムは、それぞれTCP/IPに基づく処理(TCP/IP処理)を行うソフトウェアモジュールを含む。これらのソフトウェアモジュール群は、ROM103に記録されており、RAM104をワークエリアとして用いて動作することが可能である。但し、オフロードエンジン102は、ソフトウェアモジュールを含まないハードウェアとして構成してもよい。以下の説明は、ハードウェアで構成されたオフロードエンジン102についても、同様に適用することができるものとする。
For example, the general-
更に、ネットワークインタフェース105は、必ずしもバス106に独立に接続されている必要はなく、オフロードエンジン102と一体構成であってもよい。
Further, the
例えば、イーサネット(登録商標)のように標準で内蔵されるネットワークインタフェースの場合は、送受信バッファを含めてオフロードエンジン102と一体の構成にすれば、バスの負荷を軽減することが可能である。一方、無線LANなどで、USBデバイスやPCカードのような外部接続型ネットワークインタフェースの場合は、図1に示した構成とすることが多い。
For example, in the case of a network interface built in as standard, such as Ethernet (registered trademark), it is possible to reduce the load on the bus if it is configured integrally with the
本実施形態に係るデータ通信装置は、ネットワーク107を介したデータの送信および受信処理を行うことが可能である。データ通信装置は、データ通信の内容に応じて、ソフトウェアモジュールの実行を制御する汎用プロセッサ(CPU101)または、通信を制御する通信制御プロセッサ(以下、オフロードエンジン(TOE))102を選択する。
The data communication apparatus according to the present embodiment can perform data transmission and reception processing via the
ここで、データ通信装置は、汎用プロセッサ101、オフロードエンジン102、ソフトウェアモジュールの協働により設定部、判定部、切り替え部、特定部及び比較部により構成される。
Here, the data communication apparatus includes a setting unit, a determination unit, a switching unit, a specifying unit, and a comparison unit in cooperation with the general-
設定部は、プロトコルの処理を制御するために生成されたプロトコル・コントロール・ブロック(PCB)の管理元として、汎用プロセッサ101またはオフロードエンジン102のいずれかに設定する。
The setting unit sets either the general-
判定部は、データ通信において必要とされるプロトコルの処理が可能か否を、各管理元において、プロトコル・コントロール・ブロックの有無(管理下にあるか否か)により判定する。 The determination unit determines whether or not processing of a protocol required in data communication is possible based on the presence / absence of a protocol control block (whether or not it is under management) in each management source.
判定部の判定により、プロトコルの処理が設定された管理元で実行できない場合、切り替え部は、プロトコル・コントロール・ブロックの管理元を切り替える。すなわち、切り替え部は、汎用プロセッサ101及びオフロードエンジン102の両方で処理が可能なプロトコル・コントロール・ブロックの有無(オフロードすべきか否か)を判定する。そして、オフロード可能な場合、管理元で実行できないプロトコルの処理を実行するために、両方で処理が可能なプロトコル・コントロール・ブロックの管理元を切り替える。
If it is determined by the determination unit that the protocol processing cannot be executed by the set management source, the switching unit switches the management source of the protocol control block. That is, the switching unit determines whether or not there is a protocol control block that can be processed by both the general-
特定部は、受信したデータ処理要求(HTTPリクエスト)の内容を特定する。すなわち、処理すべきデータが、処理容量の大きいデータ(例えば、映像データの送信)であるか、処理容量の小さいデータ(例えば、カメラの制御データ等)であるかを特定する。 The specifying unit specifies the content of the received data processing request (HTTP request). That is, it is specified whether the data to be processed is data with a large processing capacity (for example, transmission of video data) or data with a small processing capacity (for example, control data for a camera).
比較部は、プロトコル・コントロール・ブロックの通信負荷を設定された閾値と比較し、比較結果によりプロトコル・コントロール・ブロックの管理元を切り替えるためのオフロード開始命令、またはオフロード開始命令を発行する。 The comparison unit compares the communication load of the protocol control block with a set threshold, and issues an offload start command or an offload start command for switching the management source of the protocol control block according to the comparison result.
図2は、TCP/IPの内部処理を制御するためのプロトコル・コントロール・ブロック(PCB:Protocol Control Block)の構成を模式的に示す図である。各プロトコルに対応してIP用PCB201、TCP用PCB202などが用いられる。更に、トランスポート・レベル・セキュリティ(TLS:Transport Level Security)による暗号通信を行う場合は、上位のPCBとしてTLSコネクション用PCB203やTLSセッション用PCB204等が用いられる。一連のPCBはアプリケーションが設定したプロトコルに従って作成され、相互に関連づけられた上で、アプリケーションインタフェースであるソケット(socket)205から参照される。
FIG. 2 is a diagram schematically showing a configuration of a protocol control block (PCB) for controlling TCP / IP internal processing. An IP PCB 201, a TCP PCB 202, etc. are used corresponding to each protocol. Furthermore, in the case of performing encrypted communication using transport level security (TLS), a
図3は、TCP用PCB202の概略的な内容を示す図である。TCP用PCB202には通信を制御するための状態変数と状態フラグ、通信負荷を表わす通信レート、送信と受信の制御に用いられるシーケンス番号、送信及び受信ウインドウが含まれる。更に、TCP用PCB202には、データを一時的に格納するバッファとバッファ管理情報、輻輳ウインドウのようなフロー制御情報、再送や遅延ACK等の送信に用いられるタイマーも含まれる。 FIG. 3 is a diagram showing a schematic content of the TCP PCB 202. The TCP PCB 202 includes a state variable and state flag for controlling communication, a communication rate indicating a communication load, a sequence number used for transmission and reception control, and a transmission and reception window. Further, the TCP PCB 202 includes a buffer for temporarily storing data, buffer management information, flow control information such as a congestion window, and a timer used for transmission such as retransmission and delayed ACK.
受信バッファ301と送信バッファ302は、それぞれ対応するウインドウやシーケンス番号によって内容が管理されている。他のPCBに保持される内容はプロトコル毎に異なる。例えば、IP用のPCB201ではアドレス情報や経路情報、TLSコネクション用PCB203では暗号化鍵や暗号化状態、TLSセッション用PCB204ではセッション識別情報、証明書、暗号化アルゴリズムなどである。
The contents of the
PCBに関する構成上の特徴は、PCBが汎用プロセッサ101とオフロードエンジン102で共有されており、更にいずれの管理下にあるか識別するための情報(図3の「管理元」)を保持している点である。すなわち、PCB(201〜204)はRAM104上に保持されるデータ構造である。そして、PCB(201〜204)相互、あるいはPCB(201〜204)とソケット205は、メモリ空間のアドレスを用いて相互に参照し合っている。汎用プロセッサ101のアドレス空間とオフロードエンジン102のアドレス空間は同一である方が望ましいが、異なる場合でもアドレス変換によって参照できればよい。
A structural feature regarding the PCB is that the PCB is shared by the general-
各PCB(201〜204)を汎用プロセッサ101の管理下に置くか、オフロードエンジン102の管理下に置くかは、アプリケーションから設定される。
Whether each PCB (201 to 204) is placed under the management of the general-
例えば、TCP用PCB202であれば、サーバとしてクライアントからの接続を受け入れるパッシブオープンと、クライアントとしてサーバへの接続を行うアクティブオープンとがある。前者の場合は、例えば、HTTP用のポートを作成して接続要求を受け付けるように(listen)しておき、SYNパケットによる接続要求を受け付けると新たなPCBが作成される。受け付け(listen)用ポートを汎用プロセッサ101側に作成しておけば、新しい接続に対応するPCBも汎用プロセッサ101側に作成される。逆に、受け付け(listen)用ポートをオフロードエンジン102側に作成しておけば、新しい接続に対応するPCBもオフロードエンジン102側に作成される。アプリケーションから受け付け(listen)用ポートを作成する際に、ソケット作成命令においていずれの管理下に置くかを設定することができる。そして、受け付け(listen)用ポートを作成した後も後述するオフロード開始命令、またはオフロード停止命令によって管理元を切り替えることができる。オフロード開始命令、またはオフロード停止命令は、パッシブオープンによって作成されたPCB、またはアクティブオープンによって作成されたPCBについても、全く同様に適用することが可能である。
For example, the
更に、TLSによる暗号通信を行う場合、図2に示すようにTLSコネクション用PCB203やTLSセッション用PCB204が設けられる。各PCBについては個別にオフロード開始、オフロード終了を設定することができる。すなわち、ソケット作成命令においてプロトコル毎に管理元を設定することができるとともに、作成した後でプロトコルを設定して管理元を切り替えることも可能である。
Further, when performing cipher communication by TLS, a
図4は、汎用プロセッサ(CPU)101とオフロードエンジン(TOE)102のプロトコルスタックの構成例を示す図である。汎用プロセッサ101はアプリケーションを実行し、APIを介して通信制御を行う。汎用プロセッサ101側には、TCPとユーザ・データグラム・プロトコル(UDP)、およびTLSハンドシェイクプロトコル(TLS H)に対応したプロトコル処理機能がある。オフロードエンジン102側にはIP、TCPとUDP、およびTLSレコードプロトコル(TLS R)に対応したプロトコル処理機能がある。
FIG. 4 is a diagram illustrating a configuration example of protocol stacks of the general-purpose processor (CPU) 101 and the offload engine (TOE) 102. The general-
この例では、TCPとUDPに対応したプロトコル処理機能が汎用プロセッサ101とオフロードエンジン102の両方に組み込まれている。従って、TCPやUDPについてはオフロード開始命令、またはオフロード停止命令を用いることによって、PCBの管理元を切り替えることができる。
In this example, protocol processing functions corresponding to TCP and UDP are incorporated in both the general-
一方、TLSハンドシェイクプロトコル(TLS H)、TLSレコードプロトコル(TLS R)に対応したプロトコル処理機能は、それぞれ汎用プロセッサ101側、オフロードエンジン102側にのみ組み込まれている。そのため、これらのプロトコル処理ついてはソケット作成時にPCBの管理元が決定されるため、その後のオフロード開始命令・オフロード停止命令によって管理元を切り替えることはできない。すなわち、オフロード開始命令、オフロード停止命令が適用されるには、汎用プロセッサ101側とオフロードエンジン102側の両方に共通のプロトコル処理機能を持つプロトコルスタック要素が組み込まれている必要がある。例えば、TLS Rに対応したプロトコルスタック要素が、汎用プロセッサ101及びオフロードエンジン102の両方に組み込まれていれば、オフロード開始・停止命令によって、PCBの管理元を切り替えることができる。
On the other hand, protocol processing functions corresponding to the TLS handshake protocol (TLS H) and the TLS record protocol (TLS R) are incorporated only in the general-
図5は、PCBの管理元を汎用プロセッサ101とオフロードエンジン102の間で切り替える手順を示すフローチャートである。汎用プロセッサ101からオフロードエンジン102に切り替える命令をオフロード開始命令という。また、オフロードエンジン102から汎用プロセッサ101に切り替える命令をオフロード停止命令という。両者の処理手順は同じであるため、以下の説明では、オフロード開始命令について説明する。
FIG. 5 is a flowchart showing a procedure for switching the PCB management source between the general-
ステップS500において、アプリケーションがソケットとプロトコルを設定してオフロード開始命令を発行する。そして、ステップS501で、初めに設定されたソケットが存在するかどうかを確認する。ソケットが存在すれば(S501−YES)、処理はステップS502に進められ、設定されたプロトコルに対応するPCBが存在するかどうか確認する。続いて、ステップS503において、そのPCBが汎用プロセッサ101の管理下にあり、しかもオフロードエンジン102側に設定されたプロトコルに対応するプロトコルスタック要素が組み込まれているか(オフロード可能)どうかを判定する。オフロード可能と判定されれば、ステップS504において、汎用プロセッサ101の管理下から削除し、ステップS505において、オフロードエンジン102側の管理下への追加を行って、処理を完了する。
In step S500, the application sets the socket and protocol and issues an offload start command. In step S501, it is confirmed whether or not the initially set socket exists. If the socket exists (S501-YES), the process proceeds to step S502, and it is confirmed whether there is a PCB corresponding to the set protocol. In step S503, it is determined whether the PCB is under the control of the general-
一方、ソケットが存在しない場合(S501−NO)、PCBが存在しない場合(S502−NO)、そして、プロトコルスタック要素が組み込まれていない場合(S503−NO)、ステップS506でエラー処理を行う。 On the other hand, if the socket does not exist (S501-NO), the PCB does not exist (S502-NO), and the protocol stack element is not incorporated (S503-NO), error processing is performed in step S506.
ステップS504とS505の処理内容は、汎用プロセッサ101とオフロードエンジン102の組合せによって決まる。一般には汎用プロセッサ101側とオフロードエンジン102側でPCBの構造が異なるので、構造を変換するとともに、関連する付加的な処理、例えば、TCPのタイマーの移動を行う必要がある。具体的には、移動元のPCBを参照して移動先のPCBを作成し、PCB間の相互参照関係を更新した後、移動元のPCBを消去すればよい。尚、この処理を行っている間、パケットの送受信処理は保留されることはいうまでもない。
The processing contents of steps S504 and S505 are determined by the combination of the general-
次に、図4に示したプロトコルスタックに基づいて、送信処理と受信処理における汎用プロセッサ101とオフロードエンジン102の動作について説明する。
Next, operations of the general-
(パケットの送信処理)
初めに、汎用プロセッサ101側のTCPを用いてパケットを送信する場合について説明する。アプリケーションがデータの送信処理を行うと、汎用プロセッサ101側のオペレーティングシステムにおいてソケットが検索され、最上位のPCBとして汎用プロセッサ101の管理下にあるTCP用PCBが取り出される。この結果、汎用プロセッサ101側のTCPが起動され、送信バッファの空き領域に送信データが格納された後、TCPヘッダを作成する。
(Packet transmission processing)
First, a case where a packet is transmitted using TCP on the general-
次に、汎用プロセッサ101は、下位プロトコルであるIP処理を行うが、IPは汎用プロセッサ101側にはなく、オフロードエンジン102側にある。このため、汎用プロセッサ101及びオフロードエンジン102の両方で処理が可能なTCP用PCBを介して管理元(汎用プロセッサ101側)で実行できないIPの処理をオフロードエンジン102側に依頼する。汎用プロセッサ101は、TCPヘッダと送信バッファを合わせてオフロードエンジン102にIPへの送信処理を依頼する。具体的には、オフロードエンジン102に対する割込み要求を行うか、またはオフロードエンジン102の制御レジスタへの書き込みを行うことになる。
Next, the general-
送信処理の依頼がオフロードエンジン102に受け付けられるとTCP以下の送信処理の管理元が切り替えられることになる。送信処理の依頼を受け付けたオフロードエンジン102は、IP処理としてIPヘッダの作成等を行い、通信インタフェースを介してパケットを送出する。
When a request for transmission processing is received by the
オフロードエンジン102側のTCPを用いてパケットを送信する場合は、ソケットから取り出される最上位のPCBはオフロードエンジン102の管理下にあるものである。この場合、汎用プロセッサ101のTCPを起動せず、割込みやレジスタへの書き込みによって、オフロードエンジン102のTCPに対してTCP以下の送信処理を依頼する。オフロードエンジン102はTCPの処理、IPの処理を行ったのち、通信インタフェースを介してパケットを送出する。この間、汎用プロセッサ101は、オフロードエンジン102との間における通信処理には一切関与しない。
When a packet is transmitted using TCP on the
(パケットの受信処理)
次に、パケット受信処理について説明する。ネットワークインタフェース105がパケットを受信すると、ネットワークインタフェース105は、受信データをメモリ(RAM104)に転送した後、オフロードエンジン102に対して、割込み等によってパケットの受信を通知する。
(Packet reception processing)
Next, packet reception processing will be described. When the
オフロードエンジン102はIPヘッダを解析して、上位プロトコルのPCBを検索する。上位プロトコルのPCBがオフロードエンジン102側にあればそのまま上位プロトコルの処理を行う。オフロードエンジン102側に上位のプロトコルのPCBがなく汎用プロセッサ101側にあれば、割込みによって汎用プロセッサ101に上位プロトコルの処理を依頼する。以下これを繰返し、上位プロトコルがなくなった時点で、ソケットを用いてアプリケーションに対して受信データを提供する。
The
以上の処理は、TLSを用いた暗号通信等にもそのまま適用される。すなわち、アプリケーションがTLSコネクションを作成すると、ClientHelloから始まる一連のTLSハンドシェイクメッセージの送受信が行われる。この場合、TLSハンドシェイクプロトコル(TLS H)は汎用プロセッサ101側、TLSレコードプロトコル(TLS R)はオフロードエンジン102側で処理された後、TCP以下の送信処理が行われることになる。
The above processing is directly applied to encryption communication using TLS. That is, when an application creates a TLS connection, a series of TLS handshake messages starting from ClientHello are transmitted and received. In this case, after the TLS handshake protocol (TLS H) is processed on the general-
以上の処理において、TCPの内部処理に関するプロトコル処理を一括して汎用プロセッサ101の管理下とすることで、オフロードエンジン102の負担を軽減するとともに、限られたオフロードエンジン102の資源を有効に利用することも可能である。例えば、TCPの切断処理は「接続終了」を意味するFINパケットの交換によって行われる。FINパケットを送信または受信したとき、TCP用PCBがオフロードエンジン102の管理下にあれば、アプリケーションのオフロード開始・停止命令とは無関係に、汎用プロセッサ101の管理下に切り替えを行えばよい。
In the above processing, the protocol processing related to the TCP internal processing is collectively managed by the general-
切断処理を開始した後、PCBを破棄するまでの期間は一般に長時間に及ぶ可能性がある。しかしながら、この間に大量の通信を行うことは稀であって、汎用プロセッサ101側でプロトコル処理を受け持つことによって、オフロードエンジン102を大量データの送受信処理に集中されることが可能になる。
In general, there is a possibility that the period until the PCB is discarded after the cutting process is started may be long. However, it is rare to perform a large amount of communication during this time, and the
(アプリケーションの構成例)
アプリケーションの構成例として、ハイパーテキスト転送プロトコル(HTTP)を用いて映像送信やカメラ制御を行うサーバの動作ついて説明する。ここで、映像送信はオフロードエンジン102のTCPを使用し、カメラ制御は汎用プロセッサ101のTCPを使用するものとする。HTTPの処理は、汎用プロセッサ101側のオペレーティングシステム上で動作するアプリケーションによって行うものとし、さらにHTTPポートは汎用プロセッサ101側のPCBとして作成されているものとする。
(Application configuration example)
As an application configuration example, an operation of a server that performs video transmission and camera control using a hypertext transfer protocol (HTTP) will be described. Here, it is assumed that TCP of the
クライアントからHTTP接続要求があると、汎用プロセッサ101側のTCPで接続要求が処理され、アプリケーションレベルでHTTPコネクションが確立され、汎用プロセッサ101側に新たにPCBが作成される。
When there is an HTTP connection request from the client, the connection request is processed by TCP on the general-
HTTPコネクションが確立すると、クライアントはHTTPリクエストを送信する。送信されるHTTPリクエストの内容は、例えば、映像送信要求、またはカメラの制御要求である。HTTPリクエストが受信されると、対応するPCBに従って汎用プロセッサ101のTCPでHTTPリクエストが処理された後、アプリケーションにHTTPリクエストが通知される。アプリケーションはHTTPリクエストに含まれる文字列等の情報によって、要求の内容(例えば、映像送信要求、カメラ制御要求)を特定する。そして、通信負荷の大きい映像送信要求であればオフロード開始命令によってPCBをオフロードエンジン102の管理下に切り替える。以下、映像データ送信はオフロードエンジン102によって処理され、カメラ制御は汎用プロセッサ101によって処理されるようになる。
When the HTTP connection is established, the client transmits an HTTP request. The content of the HTTP request to be transmitted is, for example, a video transmission request or a camera control request. When the HTTP request is received, the HTTP request is processed by TCP of the general-
但し、映像データの生成とオフロードエンジン102への供給、カメラ制御要求の解析とカメラ制御コマンドの生成等については、別途既知の手段を用いることによって行われるものとする。
However, generation of video data and supply to the
上記の説明において、HTTP以外のプロトコルを用いて映像送信やカメラ制御を行うサーバについても、全く同様に行うことが可能であることはいうまでもない。 In the above description, it goes without saying that the same can be applied to a server that performs video transmission and camera control using a protocol other than HTTP.
更に上記の説明において、プロトコルの種別や処理内容以外に、例えば、通信形態としてピアツーピア方式を用いる場合、通信形態に基づいてPCBの管理元を選択してもよい。ピアツーピアは小規模なLAN環境で用いられる場合が多く、サーバを介さずに直接通信し合うことから効率が向上する場合がある。ピアツーピア方式を用いる場合、PCBの管理元を固定的にオフロードエンジン102とするようにしてもよい。
Furthermore, in the above description, in addition to the protocol type and processing contents, for example, when using a peer-to-peer method as a communication form, a PCB management source may be selected based on the communication form. Peer-to-peer is often used in a small-scale LAN environment, and efficiency may be improved because direct communication is performed without using a server. When the peer-to-peer method is used, the PCB management source may be fixed to the
PCBの管理元はアプリケーションが発行するオフロード開始命令とオフロード停止命令によって制御されるが、通信負荷状況に応じて自動的に管理元が切り替えられるように制御することも可能である。 The PCB management source is controlled by an offload start command and an offload stop command issued by the application, but it is also possible to control the management source to be automatically switched according to the communication load status.
図6は、通信負荷(通信レート)順に並べられたPCBのリストを示す図である。個々のPCBには管理元とともに通信レートとして単位時間当りの通信量が記録されている(図3を参照)。通信レートはPCBを用いて通信を行うたびに更新され、その値が前後のPCBと逆転したときに並び変えが行われる。更にリスト先頭のPCBは負荷最大のPCB、終端のPCBは負荷最小のPCBとしてRAM104に保持される。
FIG. 6 is a diagram showing a list of PCBs arranged in order of communication load (communication rate). In each PCB, the communication amount per unit time is recorded as a communication rate together with the management source (see FIG. 3). The communication rate is updated each time communication is performed using the PCB, and rearrangement is performed when the value is reversed from the previous and subsequent PCBs. Further, the PCB at the head of the list is held in the
図7は、通信負荷(通信レート)に応じてPCBの管理元を自動的に切り替える手順を示すフローチャートである。この処理手順は、上記の通信レートの値が変化したときに起動されるか、またはタイマーを用いて定期的に起動される。 FIG. 7 is a flowchart showing a procedure for automatically switching the PCB management source in accordance with the communication load (communication rate). This processing procedure is started when the value of the communication rate is changed, or is periodically started using a timer.
ステップS701において、対象とするPCBを負荷最大のPCBとする。ステップS702において、このPCBの通信レートを所定の閾値1と比較する。通信レートが閾値1を上回っていれば(S702−YES)、ステップS703において、管理元が汎用プロセッサ(CPU)101であるかどうかを確認する。管理元が汎用プロセッサ101であれば(S703−YES)、ステップS704において、オフロード開始により管理元をオフロードエンジン102に切り替える。
In step S701, the target PCB is the PCB with the maximum load. In step S702, the PCB communication rate is compared with a
ステップS705において、次に通信レートの大きなPCBの取り出しを行う。ステップS706の判定で、PCBが無ければ(S706−YES)、処理を終了する。一方、PCBがあれば(S706−NO)、処理をステップS702に戻し、ステップS702以降の処理を繰り返す。 In step S705, the PCB having the next highest communication rate is taken out. If it is determined in step S706 that there is no PCB (S706-YES), the process is terminated. On the other hand, if there is a PCB (S706-NO), the process returns to step S702, and the processes after step S702 are repeated.
ステップS702において通信レートが閾値1以下であれば(S702−NO)、処理をステップS707に進め、別の閾値2と比較する。ここで閾値2は閾値1以下の値である。
If the communication rate is equal to or lower than the
ステップS707の判定において、PCBの通信レートが閾値2以下でなければ(S707−NO)、処理をステップS710に進めて、次に通信レートの大きいPCBの取り出しを行う。一方、PCBの通信レートが閾値2以下であれば(S707−YES)、管理元がオフロードエンジン102であるかどうかを確認する(ステップS708)。管理元がオフロードエンジンであれば(S708−YES)、オフロード停止によって管理元を汎用プロセッサ101に切り替える(ステップS709)。続いて、ステップS710において、次に通信レートの大きなPCBの取り出しを行う。次に通信レートの大きなPCBがあれば(S711−NO)、処理をステップS707に戻し、ステップS707以降の処理を繰り返す。ステップS711の判定で、PCが無ければ(S711−YES)、処理を終了する。
If it is determined in step S707 that the PCB communication rate is not less than or equal to the threshold 2 (S707-NO), the process proceeds to step S710, and the PCB having the next highest communication rate is taken out. On the other hand, if the PCB communication rate is equal to or less than the threshold 2 (S707—YES), it is confirmed whether the management source is the offload engine 102 (step S708). If the management source is an offload engine (S708-YES), the management source is switched to the general-
以上説明したように、本実施形態によれば、データ通信の内容に応じて、汎用プロセッサまたは通信を制御する通信制御プロセッサを選択することで、高い柔軟性及び拡張性を確保しつつ、最適な処理系の選択が可能になる。 As described above, according to the present embodiment, by selecting a general-purpose processor or a communication control processor that controls communication in accordance with the contents of data communication, it is possible to achieve an optimum while ensuring high flexibility and expandability. The processing system can be selected.
(他の実施形態)
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給することによっても、達成されることは言うまでもない。また、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
(Other embodiments)
Needless to say, the object of the present invention can also be achieved by supplying a storage medium storing software program codes for realizing the functions of the above-described embodiments to a system or apparatus. Needless to say, this can also be achieved by the computer (or CPU or MPU) of the system or apparatus reading and executing the program code stored in the storage medium.
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。 In this case, the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the storage medium storing the program code constitutes the present invention.
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,不揮発性のメモリカード,ROMなどを用いることができる。 As a storage medium for supplying the program code, for example, a flexible disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a CD-R, a nonvolatile memory card, a ROM, or the like can be used.
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現される。また、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態が実現される場合も含まれることは言うまでもない。 Further, the functions of the above-described embodiment are realized by executing the program code read by the computer. In addition, an OS (operating system) running on a computer performs part or all of actual processing based on an instruction of a program code, and the above-described embodiment is realized by the processing. Needless to say.
Claims (12)
データ通信において必要とされるプロトコルの処理が予め設定された管理元で可能か否を判定する判定手段と、
前記判定手段の判定により、前記プロトコルの処理が前記管理元で実行できない場合、前記プロトコルの処理を制御するために生成されたプロトコル・コントロール・ブロックの管理元を切り替える切り替え手段と
を備えることを特徴とするデータ通信装置。 A data communication apparatus having a general-purpose processor for controlling execution of a software module and a communication control processor for controlling communication,
A determination means for determining whether or not a protocol processing required in data communication is possible at a preset management source;
And switching means for switching the management source of the protocol control block generated to control the protocol processing when the processing of the protocol cannot be executed by the management source as determined by the determination means. A data communication device.
前記特定手段の特定結果に基づき、処理すべきデータの処理容量により前記プロトコル・コントロール・ブロックの管理元が予め設定されることを特徴とする請求項1に記載のデータ通信装置。 Further comprising a specifying means for specifying the content of the received data processing request;
2. The data communication apparatus according to claim 1, wherein a management source of the protocol control block is preset based on a processing capacity of data to be processed based on a specifying result of the specifying unit.
前記切り替え手段は、前記比較手段により発行される命令に従い前記プロトコル・コントロール・ブロックの管理元を切り替えることを特徴とする請求項1に記載のデータ通信装置。 Comparing means for comparing the communication load of the protocol control block with a set threshold and issuing a command for switching the management source of the protocol control block based on a result of the comparison,
2. The data communication apparatus according to claim 1, wherein the switching unit switches a management source of the protocol control block in accordance with an instruction issued by the comparison unit.
データ通信において必要とされるプロトコルの処理が予め設定された管理元で可能か否を判定する判定工程と、
前記判定工程の判定により、前記プロトコルの処理が前記管理元で実行できない場合、前記プロトコルの処理を制御するために生成されたプロトコル・コントロール・ブロックの管理元を切り替える切り替え工程と
を備えることを特徴とするデータ通信方法。 A data communication method in a data communication apparatus having a general-purpose processor for controlling execution of a software module and a communication control processor for controlling communication,
A determination step of determining whether or not a protocol process required in data communication is possible at a preset management source;
A switching step of switching the management source of the protocol control block generated to control the protocol processing when the processing of the protocol cannot be executed by the management source due to the determination of the determination step. Data communication method.
処理すべきデータの処理容量により前記プロトコル・コントロール・ブロックの管理元が予め設定されることを特徴とする請求項6に記載のデータ通信方法。 A specific step of specifying the content of the received data processing request;
7. The data communication method according to claim 6, wherein a management source of the protocol control block is preset according to a processing capacity of data to be processed.
前記切り替え工程は、前記比較工程により発行される命令に従い前記プロトコル・コントロール・ブロックの管理元を切り替えることを特徴とする請求項6に記載のデータ通信方法。 A comparison step of comparing a communication load of the protocol control block with a set threshold value and issuing an instruction to switch a management source of the protocol control block based on a result of the comparison;
7. The data communication method according to claim 6, wherein the switching step switches a management source of the protocol control block in accordance with an instruction issued by the comparison step.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005330650A JP2007142582A (en) | 2005-11-15 | 2005-11-15 | Data communication device, data communication method, program, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005330650A JP2007142582A (en) | 2005-11-15 | 2005-11-15 | Data communication device, data communication method, program, and storage medium |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007142582A true JP2007142582A (en) | 2007-06-07 |
Family
ID=38204963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005330650A Withdrawn JP2007142582A (en) | 2005-11-15 | 2005-11-15 | Data communication device, data communication method, program, and storage medium |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007142582A (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010073671A1 (en) * | 2008-12-25 | 2010-07-01 | パナソニック株式会社 | Tcp transmission control device and method of control of tcp transmission |
JP2013176106A (en) * | 2013-04-09 | 2013-09-05 | Toshiba Corp | Data communication device and communication program |
JP2013179615A (en) * | 2013-04-09 | 2013-09-09 | Toshiba Corp | Data communication device and communication program |
JP2014225769A (en) * | 2013-05-16 | 2014-12-04 | 株式会社リコー | Communication device and communication system |
US8943214B2 (en) | 2009-09-16 | 2015-01-27 | Kabushiki Kaisha Toshiba | Communication apparatus |
US9100332B2 (en) | 2011-02-28 | 2015-08-04 | Kabushiki Kaisha Toshiba | Data transmitting device, data communicating device, and computer readable medium |
US10580797B2 (en) | 2008-05-16 | 2020-03-03 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and manufacturing method of the same |
US10897426B2 (en) | 2013-09-30 | 2021-01-19 | Mitsubishi Electric Corporation | Reception apparatus and communication apparatus |
-
2005
- 2005-11-15 JP JP2005330650A patent/JP2007142582A/en not_active Withdrawn
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10580797B2 (en) | 2008-05-16 | 2020-03-03 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and manufacturing method of the same |
WO2010073671A1 (en) * | 2008-12-25 | 2010-07-01 | パナソニック株式会社 | Tcp transmission control device and method of control of tcp transmission |
JP5517951B2 (en) * | 2008-12-25 | 2014-06-11 | パナソニック株式会社 | TCP transmission control apparatus and TCP transmission control method |
US9042244B2 (en) | 2008-12-25 | 2015-05-26 | Panasonic Intellectual Property Corporation Of America | TCP transmission control device and method of control of TCP transmission |
US8943214B2 (en) | 2009-09-16 | 2015-01-27 | Kabushiki Kaisha Toshiba | Communication apparatus |
US9100332B2 (en) | 2011-02-28 | 2015-08-04 | Kabushiki Kaisha Toshiba | Data transmitting device, data communicating device, and computer readable medium |
JP2013176106A (en) * | 2013-04-09 | 2013-09-05 | Toshiba Corp | Data communication device and communication program |
JP2013179615A (en) * | 2013-04-09 | 2013-09-09 | Toshiba Corp | Data communication device and communication program |
JP2014225769A (en) * | 2013-05-16 | 2014-12-04 | 株式会社リコー | Communication device and communication system |
US10897426B2 (en) | 2013-09-30 | 2021-01-19 | Mitsubishi Electric Corporation | Reception apparatus and communication apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007142582A (en) | Data communication device, data communication method, program, and storage medium | |
US7809966B2 (en) | Information processing apparatus having a low power consumption state and releasing the low power consumption state to perform communication, and power control method therefor | |
EP1622334B1 (en) | Server device, method for controlling a server device, and method for establishing a connection using the server device | |
US7471681B2 (en) | Determining network path transmission unit | |
EP3761591B1 (en) | Tcp link configuration method, apparatus, and computer program product | |
WO2015043413A1 (en) | Method and device for sending requests | |
KR20100080402A (en) | Reduced power state network processing | |
US9794354B1 (en) | System and method for communication between networked applications | |
CN112104744B (en) | Traffic proxy method, server and storage medium | |
JP5084372B2 (en) | Data processing apparatus and data processing apparatus control method | |
WO2011148480A1 (en) | Relay device, relay system, relay method, program, and storage medium capable of reading from computer storing said program | |
US9356989B2 (en) | Learning values of transmission control protocol (TCP) options | |
US8761164B2 (en) | Network offloading with reduced packet loss | |
WO2017107148A1 (en) | Method of transmitting data and network equipment | |
US9106479B1 (en) | System and method for managing network communications | |
US9261948B2 (en) | Image forming apparatus and control method for executing a proxy in response to a heartbeat | |
JP2019114947A (en) | Communication device, control method of communication device, and program | |
JP6640065B2 (en) | Communication device, communication control device, communication method, communication control method, and program | |
JP2018050128A (en) | Processing determination device, processing determination method, and processing determination program | |
JP6949578B2 (en) | Image forming device, control method and program of image forming device | |
JP2011044823A (en) | Communication equipment, communication system, communication method and communication program | |
JP6568571B2 (en) | Data transfer device, data transfer method, and communication device | |
JP7309384B2 (en) | COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD AND PROGRAM | |
JP2017163346A (en) | Communication device, method and program | |
JP2006109016A (en) | Transmitter/receiver, transmission/reception control method, program and memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20090203 |