JP2010057033A - 通信装置及び方法 - Google Patents
通信装置及び方法 Download PDFInfo
- Publication number
- JP2010057033A JP2010057033A JP2008221498A JP2008221498A JP2010057033A JP 2010057033 A JP2010057033 A JP 2010057033A JP 2008221498 A JP2008221498 A JP 2008221498A JP 2008221498 A JP2008221498 A JP 2008221498A JP 2010057033 A JP2010057033 A JP 2010057033A
- Authority
- JP
- Japan
- Prior art keywords
- checksum
- header
- tcp
- memory
- payload
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 234
- 230000005540 biological transmission Effects 0.000 claims abstract description 66
- 230000006870 function Effects 0.000 claims description 4
- 230000010354 integration Effects 0.000 claims 1
- 238000012546 transfer Methods 0.000 description 44
- 101000880770 Homo sapiens Protein SSX2 Proteins 0.000 description 18
- 102100037686 Protein SSX2 Human genes 0.000 description 18
- 102100039385 Histone deacetylase 11 Human genes 0.000 description 15
- 108700038332 Histone deacetylase 11 Proteins 0.000 description 15
- 230000008569 process Effects 0.000 description 13
- 101000717417 Arabidopsis thaliana Cysteine proteinase RD21A Proteins 0.000 description 8
- 101100523939 Arabidopsis thaliana RD22 gene Proteins 0.000 description 7
- 102100037009 Filaggrin-2 Human genes 0.000 description 5
- 101000878281 Homo sapiens Filaggrin-2 Proteins 0.000 description 5
- 101000985261 Homo sapiens Hornerin Proteins 0.000 description 4
- 102100028627 Hornerin Human genes 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 101150089655 Ins2 gene Proteins 0.000 description 3
- 101100072652 Xenopus laevis ins-b gene Proteins 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】回路規模を増大させること無く、チェックサム付加処理を実行することが可能な通信装置及び方法を提供する。
【解決手段】通信装置1を構成するデータ生成部(例えば、CPU10)は、データを生成してメモリ20に記憶する。チェックサム処理部30は、メモリ20から読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、メモリ20に記憶されたデータ中の予め定められた位置に書き込む。データ送信部(例えば、送信処理部42、MAC処理回路50、及びPHY処理回路60)は、前記チェックサムが書き込まれたデータをメモリ20から読み出し、ネットワークに対して送出する。
【選択図】図1
【解決手段】通信装置1を構成するデータ生成部(例えば、CPU10)は、データを生成してメモリ20に記憶する。チェックサム処理部30は、メモリ20から読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、メモリ20に記憶されたデータ中の予め定められた位置に書き込む。データ送信部(例えば、送信処理部42、MAC処理回路50、及びPHY処理回路60)は、前記チェックサムが書き込まれたデータをメモリ20から読み出し、ネットワークに対して送出する。
【選択図】図1
Description
本発明は、通信装置及び方法に関し、特にインターネットやLAN(Local Area Network)等のネットワークへ送出するデータに対して、誤り検出用のチェックサムを付加する通信装置及び方法に関する。
上記のような通信装置では、近年のネット配信や動画転送等の高画質化に伴い、チェックサム付加処理を高速に行う必要がある。
例えば特許文献1に、TCP(Transmission Control Protocol)/IP(Ineternet Protocol)に則してチェックサム付加処理を行う通信装置が記載されている。この通信装置の構成例を図10に示す。
図10に示す通信装置1xは、CPU(Central Processing Unit)10と、メインメモリ20と、これらのCPU10及びメインメモリ20とのインタフェースとして機能するインタフェース回路110と、TCP/IP送信処理回路120と、TCP/IP受信処理回路120と、これらの回路110及び120に接続されたMAC(Media Access Control)処理回路50と、この回路50とEthernet(登録商標)ケーブル2との間に接続された物理層処理回路(以下、PHY処理回路)60とを有している。ここで、CPU10、メインメモリ20、及びインタフェース回路110は、バス70により相互接続されている。また、バス70には、CPU10により使用されるウェブブラウザプログラムやメールクライアントプログラム等が記録されたHDD(Hard Disk Drive)80、ユーザ(図示せず)からの入力を受け付ける入力部90、及びCPU10による処理結果等をユーザへ表示する表示部100が接続されている。
すなわち、この通信装置1xにおいては、図10に点線で示す如く、MAC処理回路50及びPHY処理回路60が、TCP/IP階層モデルにおけるネットワークインタフェース層Lt1を担う。また、インタフェース回路110、TCP/IP送信処理回路120、及びTCP/IP受信処理回路130が、インターネット層及びトランスポート層Lt2を担う。さらに、CPU10、メインメモリ20、HDD80、入力部90、及び表示部100が、アプリケーション層Lt3を担う。
また、TCP/IP送信処理回路120は、DMA(Direct Memory Access)処理部121と、チェックサム制御部122と、バッファメモリ123と、チェックサム算出部124とを備えている。さらに、チェックサム制御部122は、その内部にIPチェックサムレジスタ125を有する。
データ送出動作においては、まずCPU10が、上記のウェブブラウザプログラムやメールクライアントプログラム等を実行して、メインメモリ20内に図11に示すEthernetフレームFReを生成する。
ここで、EthernetフレームFReは、IPヘッダHD1、TCPヘッダHD2、及びペイロードPLを含むTCP/IPストリームデータSDに、MACヘッダHD3とFCS(Frame Check Sequence)とが付加されたフレームである。但し、FCSは、後述する如く、MAC処理回路50により生成・付加される。
また、IPヘッダHD1は、単独でチェックサムの算出対象となり、その内部に、バージョンと、ヘッダ長と、タイプと、パケット長(TCP/IPストリームデータ長)と、パケット識別番号と、フラグと、フラグメントオフセットと、TTL(Time To Live)と、上位層プロコトル番号と、IPチェックサムフィールドFc1と、送信元IPアドレスと、宛先IPアドレスと、オプションフィールドとを有する。この内、IPチェックサムフィールドFc1は、IPヘッダHD1について算出したチェックサム(以下、IPチェックサムと呼称する)CSiを格納するためのフィールドである。
さらに、TCPヘッダHD2は、ペイロードPL及び図示のTCP疑似ヘッダHD4と共にチェックサムの算出対象となり、その内部に、送信元ポート番号と、宛先ポート番号と、シーケンス番号と、Ack番号と、オフセットと、Reserved領域と、URG、ACK、PSH、RST、SYN、及びFINの各種フラグと、Windowサイズと、TCPチェックサムフィールドFc2と、Urgentポインタと、オプションフィールドとを有する。この内、TCPチェックサムフィールドFc2は、TCPヘッダHD2、ペイロードPL、及びTCP疑似ヘッダについて算出したチェックサム(以下、TCPチェックサムと呼称する)CStを格納するためのフィールドである。
上記のEthernetフレームFRe(FCSを除く)がCPU10によりメインメモリ20内に生成されると、図12に示すように、TCP/IP送信処理回路120内のDMA処理部121が、インタフェース回路110を介して、メインメモリ20からチェックサム制御部122へのフレームFReのDMA転送を行う(ステップS101)。より具体的には、DMA処理部121は、MACヘッダHD3、IPヘッダHD1、TCPヘッダHD2、ペイロードPL、及びTCP疑似ヘッダHD4を、この順にチェックサム制御部122へ転送する。
まず、チェックサム制御部122は、DMA処理部121からMACヘッダHD3を受信する。この時、チェックサム制御部122は、受信したMACヘッダHD3をバッファメモリ123に書き込む(ステップS102)。
次に、チェックサム制御部122は、DMA処理部121からIPヘッダHD1を受信する。この時、チェックサム制御部122は、受信したIPヘッダHD1をバッファメモリ123に書き込む(ステップS103)と共に、チェックサム算出部124へ転送する(ステップS104)。チェックサム算出部124は、IPチェックサムCSiを算出し(ステップS105)、チェックサム制御部122へ返送する(ステップS106)。そして、チェックサム制御部122は、IPチェックサムCSiをIPチェックサムレジスタ125に格納する(ステップS107)。
次に、チェックサム制御部122は、DMA処理部121からTCPヘッダHD2及びペイロードPLを受信する。この時、チェックサム制御部122は、受信したTCPヘッダHD2及びペイロードPLをバッファメモリ123に書き込む(ステップS108)と共に、チェックサム算出部124へ転送する(ステップS109)。
次に、チェックサム制御部122は、DMA処理部121からTCP擬似ヘッダHD4を受信する。この時、チェックサム制御部122は、受信したTCP擬似ヘッダHD4をチェックサム算出部124へ転送する(ステップS110)。なお、TCP疑似ヘッダHD4は、TCPチェックサムCStの算出にのみ使用されるものである(すなわち、ネットワーク上には送出されないものである)ため、チェックサム制御部122は、上記のステップS103及びS108と異なり、TCP擬似ヘッダHD4のバッファメモリ123への書き込みを行わない。従って、バッファメモリ123には、MACヘッダHD3、IPヘッダHD1、TCPヘッダHD2、及びペイロードPLが格納されることとなる。
そして、チェックサム算出部124は、TCPチェックサムCStを算出し(ステップS111)、チェックサム制御部122へ返送する(ステップS112)。
そして、チェックサム制御部122は、バッファメモリ123に記憶されているMACヘッダHD3、IPヘッダHD1、TCPヘッダHD2、及びペイロードPLを読み出し(ステップS113)、下位層(図10に示したMAC処理回路50)への順次転送を開始する。
すなわち、まず、チェックサム制御部122は、バッファメモリ123から読み出したMACヘッダHD3をMAC処理回路50へ転送する(ステップS114)。
次に、チェックサム制御部122は、バッファメモリ123から読み出したIPヘッダHD1中のIPチェックサムフィールドFc1に、IPチェックサムレジスタ125に格納されているIPチェックサムCSiを挿入(書込)して、MAC処理回路50へ転送する(ステップS115)。
次に、チェックサム制御部122は、バッファメモリ123から読み出したTCPヘッダHD2中のTCPチェックサムフィールドFc2に、上記のステップS112で受信したTCPチェックサムCStを挿入して、MAC処理回路50へ転送する(ステップS116)。
最後に、チェックサム制御部122は、バッファメモリ123から読み出したペイロードPLをMAC処理回路50へ転送する(ステップS117)。
MAC処理回路50は、チェックサム制御部122から受信したMACヘッダHD3、IPヘッダHD1、TCPヘッダHD2、及びペイロードPLから成るフレームの末尾にFCSを付加してPHY処理回路60へ転送する。これにより、EthernetフレームFReが、PHY処理回路60を介してEthernetケーブル2(すなわち、ネットワーク)に対して送出されることとなる。
特開2006−303765号公報
特開2001−268159号公報
しかしながら、上記の特許文献1では、TCP/IP送信処理回路内にTCP/IPストリームデータ分のバッファメモリ容量が必要であり、その回路規模が大きくなってしまうという課題があった。
なお、特許文献2には、上位層から受信したチェックサム対象データを記憶するためのバッファメモリと、チェックサム書込後のデータを記憶するためのバッファメモリとを個別に設け、以てチェックサム算出処理とデータ送出処理とを並列に実行する通信装置が記載されている。しかしながら、この通信装置では、チェックサム付加処理に際して上記の特許文献1よりも多くのバッファメモリ容量を必要とし、その回路規模がさらに大きくなってしまう。
本発明の一態様に係る通信装置は、データを生成してメモリに記憶するデータ生成部と、前記メモリから読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、前記メモリに記憶されたデータ中の予め定められた位置に書き込むチェックサム処理部と、前記チェックサムが書き込まれたデータを前記メモリから読み出し、ネットワークに対して送出するデータ送信部とを備える。
また、本発明の一態様に係る通信方法は、データを生成してメモリに記憶するデータ生成ステップと、前記メモリから読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、前記メモリに記憶されたデータ中の予め定められた位置に書き込むチェックサム処理ステップと、前記チェックサムが書き込まれたデータを前記メモリから読み出し、ネットワークに対して送出するデータ送信ステップと、を備える。
すなわち、本発明では、チェックサム付加処理の実行に際して別途バッファメモリを設ける必要が無いため、回路規模の増大を抑止することができる。
本発明によれば、回路規模を増大させること無くチェックサム付加処理を実行することができ、以て通信装置の小型化や低コスト化を図ることが可能となる。
以下、本発明に係る通信装置の実施の形態1〜4を、図1〜図9を参照して説明する。なお、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
まず、実施の形態1〜4に係る通信装置に共通の構成例及びその概略動作例を、図1及び図2を参照して説明する。
図1に示す通信装置1は、図10に示したインタフェース回路110、TCP/IP送信処理回路120、及びTCP/IP受信処理回路130に代えて、チェックサム処理部30と、送受信処理部40とを備えている点が通信装置1xと異なる。
チェックサム処理部30は、インタフェース回路31と、リードDMA処理部32と、チェックサム算出部33と、ライトDMA処理部34とを備えている。インタフェース回路31は、バス70に接続され、CPU10及びメインメモリ20とのインタフェースとして機能する。リードDMA処理部32は、インタフェース回路31を介して、CPU10により生成されたデータをメインメモリ20から読み出す。チェックサム算出部33は、リードDMA処理部32により読み出されたデータに対するチェックサムを算出する。ライトDMA処理部34は、チェックサム算出部33により算出されたチェックサムを、インタフェース回路31を介してメインメモリ20に記憶されたデータ中の所定位置に書き込む。
また、送受信処理部40は、インタフェース回路41と、送信処理部42と、受信処理部43とを備えている。インタフェース回路41は、バス70に接続され、CPU10及びメインメモリ20とのインタフェースとして機能する。また、送信処理部42は、インタフェース回路41を介して、上記のライトDMA処理部34によりチェックサムが書き込まれたデータをメインメモリ20から読み出す送信DMA処理部421と、この送信DMA処理部421により読み出されたデータを格納するための送信用FIFO(First In First Out)バッファ422とを有する。送信用FIFOバッファ422に格納されたデータは、MAC処理回路50により読み出された後、PHY処理回路60を介してEthernetケーブル2(すなわち、ネットワーク)に対して送出されることとなる。さらに、受信処理部43は、MAC処理回路50及びPHY処理回路60によりネットワークから受信されたデータを格納するための受信用FIFOバッファ431と、このFIFOバッファ431からデータを読出し、インタフェース回路41を介してCPU10或いはメインメモリ20へ転送する受信DMA処理部432とを有する。
すなわち、通信装置1においては、図1に点線で示す如く、MAC処理回路50及びPHY処理回路60が、OSI参照モデルにおける物理層Lo1及びデータリンク層Lo2をそれぞれ担う。また、チェックサム処理部30及び送受信処理部40が、ネットワーク層Lo3を担う。さらに、CPU10、メインメモリ20、HDD80、入力部90、及び表示部100が、アプリケーション層Lo7を担う。
なお、通信装置1は、有線ネットワークに限らず、無線ネットワークに適用することもできる。この場合、MAC処理回路50及びPHY処理回路60に、各種の無線通信プロトコルに則して動作するものを用いれば良い。
また、チェックサム処理部30によるメインメモリ20に対する読出及び書込、並びに送信処理部42によるメインメモリ20に対する読出については、例えば、図2に示すデータ読出用ディスクリプタRD及びチェックサム書込用ディスクリプタWD、並びにフレーム(データ)送信用ディスクリプタTDを用いて簡易に行うことができる。
より具体的には、まずCPU10が、チェックサム対象データDTを含むフレームFRを生成してメインメモリ20に記憶する。なお、フレームFR全体を、チェックサム対象としても良い(すなわち、FR=DTが成立しても良い)。この場合も、以降の説明は同様に適用される。
この時、CPU10は、メインメモリ20に、データDTのサイズ(以下、データサイズと呼称する)Sdと、データDTのメインメモリ20上における記憶開始アドレス(以下、データアドレスと呼称する)Adを設定したデータアドレスポインタPdとを含むデータ読出用ディスクリプタRDを記憶する。同時に、CPU10は、メインメモリ20に、データDT中のチェックサムフィールドFcのサイズ(以下、チェックサムサイズと呼称する)Scと、チェックサムフィールドFcのメインメモリ20上におけるアドレス、すなわち、チェックサムの書込開始アドレス(以下、チェックサムフィールドアドレスと呼称する)Acを設定したチェックサムフィールドアドレスポインタPcとを含むチェックサム書込用ディスクリプタWDを記憶する。
そして、チェックサム処理部30内のリードDMA処理部32は、データ読出用ディスクリプタRDを参照して、メインメモリ20からチェックサム対象データDTを読み出す。より具体的には、リードDMA処理部32は、データアドレスポインタPdが示すアドレスから、データサイズSdが示すサイズ分のデータを読み出す。リードDMA処理部32は、読み出したデータDTをチェックサム算出部33へ転送する。
そして、チェックサム算出部33は、データDTに対するチェックサムを算出してライトDMA処理部34へ転送する。
この時、ライトDMA処理部34は、チェックサム書込用ディスクリプタWDを参照して、メインメモリ20にチェックサム算出部33から受信したチェックサムを書き込む。より具体的には、ライトDMA処理部34は、チェックサムフィールドアドレスポインタPcが示すアドレスから始まるチェックサムサイズSc分の領域(すなわち、チェックサムフィールドFc)に、チェックサムを書き込む。
なお、チェックサム処理部30によるメインメモリ20に対する読出及び書込は、データ読出用ディスクリプタRD及びチェックサム書込用ディスクリプタWDを用いたものに限らず、データサイズSd、データアドレスAd、チェックサムサイズSc、及びチェックサムフィールドアドレスAcを、CPU10からチェックサム処理部30に対して直接通知することにより行うようにしても良い。
このように、通信装置1においては、チェックサム付加処理の実行に際して、メインメモリ20以外のバッファメモリの設置が不要である。また、図10に示したTCP/IP送信処理回路120には、チェックサムフィールドFcの位置検出(判定)が必要であるという問題もあったが、通信装置1においては、チェックサム書込用ディスクリプタWDを用いること(或いは、データサイズSd、データアドレスAd、チェックサムサイズSc、及びチェックサムフィールドアドレスAcを直接通知すること)により、チェックサムフィールドFcの位置検出(判定)が不要となる。
一方、ライトDMA処理部34によるチェックサムの書込が完了すると、CPU10は、メインメモリ20に、図2に点線で示す如くフレームFRのサイズ(以下、フレームサイズと呼称する)Sfと、フレームFRのメインメモリ20上における記憶開始アドレス(以下、フレームアドレスと呼称する)Afを設定したフレームアドレスポインタPfとを含むフレーム送信用ディスクリプタTDを記憶する。
そして、送信処理部42内の送信DMA処理部421は、フレーム送信用ディスクリプタTDを参照して、メインメモリ20からフレームFRを読み出す。より具体的には、送信DMA処理部421は、フレームアドレスポインタPfが示すアドレスから、フレームサイズSfが示すサイズ分のデータを読み出す。送信DMA処理部421は、読み出したフレームFRを送信用FIFOバッファ422に格納する。なお、フレームFR全体がチェックサム対象である場合(FR=DTが成立する場合)には、データ読出用ディスクリプタRDをそのままフレーム送信用ディスクリプタTDとして流用できる。すなわち、データ読出用ディスクリプタRDの参照によりフレームFRを読み出すことができ、フレーム送信用ディスクリプタTDの生成は不要である。
これにより、チェックサムが書き込まれたフレームFRが、MAC処理回路50、PHY処理回路60、及びEthernetケーブル2を介して、ネットワークに対して送出されることとなる。
なお、送信処理部42によるメインメモリ20に対する読出は、フレーム送信用ディスクリプタTDを用いたものに限らず、フレームサイズSf及びフレームアドレスAfを、CPU10から送信処理部42に対して直接通知することにより行うようにしても良い。或いは、フレームFRを、CPU10から送信処理部42に対して直接転送するようにしても良い。
以下、実施の形態1〜4を、図3〜図9を参照して詳細に説明する。
[実施の形態1]
本実施の形態では、図1に示した通信装置1が、図11に示したEthernetフレームFReに対するチェックサム付加処理を実行する場合を扱う。
本実施の形態では、図1に示した通信装置1が、図11に示したEthernetフレームFReに対するチェックサム付加処理を実行する場合を扱う。
図3に示すように、まずCPU10が、EthernetフレームFReを生成してメインメモリ20に記憶する(ステップS1)。この時、CPU10は、IPヘッダHD1中のIPチェックサムフィールドFc1と、TCPヘッダHD2中のTCPチェックサムフィールドFc2を"0"でクリア(初期化)する。また、CPU10は、TCP疑似ヘッダHD4を生成してメインメモリ20に記憶する。
そして、CPU10は、メインメモリ20に、図4に示す如くIPヘッダ読出用ディスクリプタRD1、TCPヘッダ読出用ディスクリプタRD2、TCP疑似ヘッダ読出用ディスクリプタRD3、及びペイロード読出用ディスクリプタRD4から成るデータ読出用ディスクリプタチェインRCを記憶する(ステップS2)。
ここで、IPヘッダ読出用ディスクリプタRD1には、データサイズ="Sd1(IPヘッダHD1のサイズ)"と、データアドレスポインタPd1="データアドレスAd1(IPヘッダHD1の記憶開始アドレス)"とが設定される。TCPヘッダ読出用ディスクリプタRD2には、データサイズ="Sd2(TCPヘッダHD2のサイズ)"と、データアドレスポインタPd2="データアドレスAd2(TCPヘッダHD2の記憶開始アドレス)"とが設定される。TCP疑似ヘッダ読出用ディスクリプタRD3には、データサイズ="Sd4(TCP疑似ヘッダHD4のサイズ)"と、データアドレスポインタPd3="データアドレスAd4(TCP疑似ヘッダHD4の記憶開始アドレス)"とが設定される。ペイロード読出用ディスクリプタRD4には、データサイズ="Sd3(ペイロードPLのサイズ)"と、データアドレスポインタPd4="データアドレスAd3(ペイロードPLの記憶開始アドレス)"とが設定される。
また、本実施の形態では、CPU10は、読出用ディスクリプタRD1〜RD4に、それぞれ、制御フラグFLG1_1〜FLG1_4(以下、符号FLG1で総称することがある)を設定する。この制御フラグFLG1は、チェックサム処理部30に対して、当該読出用ディスクリプタを参照して読み出したデータについてのチェックサムを
メインメモリ20へ書き込むべきこと、又は当該チェックサムを次の読出用ディスクリプタを参照して読み出したデータについてのチェックサムと積算すべきことのいずれかを指示するための制御情報である。制御フラグFLG1を設ける理由は、TCPチェックサムとして、TCPヘッダHD1についてのチェックサム、TCP疑似ヘッダHD4についてのチェックサム、及びペイロードPLについてのチェックサムの積算値を求める必要があるためである。このため、CPU10は、制御フラグFLG1_1及びFLG1_4に"1(書込)"を設定する一方、制御フラグFLG1_2及びFLG1_3には"0(積算)"を設定する。
メインメモリ20へ書き込むべきこと、又は当該チェックサムを次の読出用ディスクリプタを参照して読み出したデータについてのチェックサムと積算すべきことのいずれかを指示するための制御情報である。制御フラグFLG1を設ける理由は、TCPチェックサムとして、TCPヘッダHD1についてのチェックサム、TCP疑似ヘッダHD4についてのチェックサム、及びペイロードPLについてのチェックサムの積算値を求める必要があるためである。このため、CPU10は、制御フラグFLG1_1及びFLG1_4に"1(書込)"を設定する一方、制御フラグFLG1_2及びFLG1_3には"0(積算)"を設定する。
そして、CPU10は、メインメモリ20に、IPチェックサム書込用ディスクリプタWD1及びTCPチェックサム書込用ディスクリプタWD2から成るチェックサム書込用ディスクリプタチェインWCを記憶する(ステップS3)。
ここで、IPチェックサム書込用ディスクリプタWD1には、データサイズ="Sc1(IPチェックサムのサイズ)"と、チェックサムフィールドアドレスポインタPc1="チェックサムフィールドアドレスAc1(IPヘッダHD1中のチェックサムフィールドFc1のアドレス)"とが設定される。TCPチェックサム書込用ディスクリプタWD2には、データサイズ="Sc2(TCPチェックサムのサイズ)"と、チェックサムフィールドアドレスポインタPc2="チェックサムフィールドアドレスAc2(TCPヘッダHD2中のチェックサムフィールドFc2のアドレス)"とが設定される。
上記のステップS2及びS3の後、CPU10は、チェックサム処理部30に対してチェックサム算出開始指示INS1を与える(ステップS4)。
指示INS1を受けたチェックサム処理部30内のリードDMA処理部32は、まずデータ読出用ディスクリプタチェインRC中のIPヘッダ読出用ディスクリプタRD1を参照して、IPヘッダHD1をメインメモリ20から読み出し、チェックサム算出部33へ転送する(ステップS5)。この時、IPヘッダ読出用ディスクリプタRD1中の制御フラグFLG1_1に"1(書込)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを反転して出力するよう指示する。これは、IPにおいて、IPチェックサムフィールドFc1にIPチェックサムの反転値を格納することが規定されているためである。
チェックサム算出部33は、受信したIPヘッダHD1からIPチェックサムCSiを算出し、その反転値をライトDMA処理部34へ転送する(ステップS6)。
上記のステップS6と並行して、リードDMA処理部32は、制御フラグFLG1_1="1(書込)"が成立するため、ライトDMA処理部34へ制御権を移す。ライトDMA処理部34は、チェックサム書込用ディスクリプタチェインWC中のIPチェックサム書込用ディスクリプタWD1を参照して、IPチェックサムCSiの書込位置を認識し、以てチェックサムフィールドFc1にIPチェックサムCSi(反転値)を書き込む(ステップS7)。ライトDMA処理部34は、IPチェックサムCSiの書込後、リードDMA処理部32へ制御権を移す。
リードDMA処理部32は、次いでTCPヘッダ読出用ディスクリプタRD2を参照して、TCPヘッダHD2をメインメモリ20から読み出し、チェックサム算出部33へ転送する(ステップS8)。この時、TCPヘッダ読出用ディスクリプタRD2中の制御フラグFLG1_2に"0(積算)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを出力せずに次のデータについてのチェックサムと積算するよう指示する。
従って、チェックサム算出部33は、受信したTCPヘッダHD2についてのチェックサムCS1を算出した後、リードDMA処理部32からの次のデータ入力を待機する(ステップS9)。
そして、リードDMA処理部32は、TCP疑似ヘッダ読出用ディスクリプタRD3を参照して、TCP疑似ヘッダHD4をメインメモリ20から読み出し、チェックサム算出部33へ転送する(ステップS10)。この時、TCP疑似ヘッダ読出用ディスクリプタRD3中の制御フラグFLG1_3に"0(積算)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを出力せずに次のデータについてのチェックサムと積算するよう指示する。
従って、チェックサム算出部33は、受信したTCP疑似ヘッダHD4についてのチェックサムCS2を算出し(ステップS11)、上記のステップS9で算出したチェックサムCS1と積算した後、リードDMA処理部32からの次のデータ入力を待機する(ステップS12)。
そして、リードDMA処理部32は、ペイロード読出用ディスクリプタRD4を参照して、ペイロードPLをメインメモリ20から読み出し、チェックサム算出部33へ転送する(ステップS13)。この時、ペイロード読出用ディスクリプタRD4中の制御フラグFLG1_4に"1(書込)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを反転して出力するよう指示する。これは、TCPにおいて、TCPチェックサムフィールドFc2にTCPチェックサムの反転値を格納することが規定されているためである。
チェックサム算出部33は、受信したペイロードPLについてのチェックサムCS3を算出し(ステップS14)、上記のステップS12で求めたチェックサムCS1及びCS2の積算値と積算してTCPチェックサムCStを算出し、その反転値をライトDMA処理部34へ転送する(ステップS15)。
上記のステップS15と並行して、リードDMA処理部32は、制御フラグFLG1_4="1(書込)"が成立するため、ライトDMA処理部34へ制御権を移す。ライトDMA処理部34は、TCPチェックサム書込用ディスクリプタWD2を参照して、TCPチェックサムCStの書込位置を認識し、以てチェックサムフィールドFc2にTCPチェックサムCSt(反転値)を書き込む(ステップS16)。
この後、CPU10は、IPチェックサムCSi及びTCPチェックサムCStが書き込まれたEthernetフレームFReのフレームサイズ及びフレームアドレスを設定したフレーム送信用ディスクリプタTD(図2参照)をメインメモリ20に記憶し(ステップS17)、送信処理部42に対してフレーム送信開始指示INS2を与える(ステップS18)。
指示INS2を受けた送信処理部42内の送信DMA処理部421は、フレーム送信用ディスクリプタTDを参照して、フレームFReをメインメモリ20から読み出し(ステップS19)、送信用FIFOバッファ422に格納する(ステップS20)。これにより、フレームFReが、MAC処理回路50、PHY処理回路60、及びEthernetケーブル2を介して、ネットワークに対して送出されることとなる。
このように、IPチェックサムCSi及びTCPチェックサムCStの付加処理に際して、図10に示したTCP/IP送信処理回路120で用いられていたEthernetフレームFRe分のバッファメモリ容量が不要となる。また、チェックサム書込用ディスクリプタチェインWCを用いることにより、IPヘッダHD1におけるチェックサムフィールドFc1、及びTCPヘッダHD2におけるチェックサムフィールドFc2の位置検出(判定)が不要となる。さらに、TCP/IP送信処理回路120には、データ識別結果に応じたチェックサム算出範囲の判定(すなわち、データがIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、又はペイロードのいずれであるかを識別し、その識別結果に応じてチェックサムの積算が必要か否かを判定すること)が必要であるという問題もあったが、このようなチェックサム算出範囲の判定は、データ読出用ディスクリプタチェインRC中の読出用ディクリプタRDに制御フラグFLG1を設定することにより不要となる。従って、チェックサム処理部30の回路規模は、TCP/IP送信処理回路120の規模と比較して大幅に小さくなる。
また、ネットワークに対して複数のEthernetフレームを送出する場合、通信装置1は、上記のステップS1〜S20を繰り返して実行し、以て各Ethernetフレームについてのチェックサム付加処理を実行することができる。
より具体的には、CPU10は、上記のステップS1〜S3を繰り返して実行し、データ読出用ディスクリプタチェインRC及びチェックサム書込用ディスクリプタチェインWCに、図5に示す如くEthernetフレームFRe1、FRe2についての読出用ディスクリプタRD(RD11、RD21、RD31、RD41、RD12、RD22、RD32、RD42)及び書込用ディスクリプタWD(WD11、WD21、WD12、WD22)を設定する。チェックサム処理部30は、上記のステップS5〜S16を繰り返して実行し、各EthernetフレームFRe1、FRe2に対してチェックサムを付加する。送信処理部42は、上記のステップS19及びS20を繰り返して実行し、各EthernetフレームFRe1、FRe2をネットワークに対して送出する。
また、通信装置1は、チェックサム付加処理を、TCP/IP以外の通信プロトコルに対応して実行することもできる。その理由は、データ読出用ディスクリプタチェインRC中の各読出用ディスクリプタに各チェックサム対象データのサイズ及び記憶開始アドレスを任意に設定することができるため、すなわち、各チェックサム対象データを、固定長に制限する必要が無く且つ不連続の領域に記憶することができるためである。例えば、UDP(User Datagram Protocol)を適用する場合、CPU10が、メインメモリ20に、TCPヘッダ及びTCP疑似ヘッダ並びにこれらの読出用ディスクリプタに代えて、UDPヘッダ及びUDP疑似ヘッダ並びにこれらの読出用ディスクリプタを記憶し、且つチェックサム処理部30が、メインメモリ20に記憶されたUDPヘッダ中のチェックサムフィールドにUDPヘッダ、UDP疑似ヘッダ、及びペイロードについてのチェックサムの積算値を書き込む際に、当該積算値を反転しないようにすれば良い。
[実施の形態2]
本実施の形態では、図1に示した通信装置1が、図6に示すEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。ここで、図6に示すように、フレームFRe1中のTCP/IPストリームデータSD1及びフレームFRe2中のTCP/IPストリームデータSD2は、ペイロードPL2を共用するものとする。なお、TCP/IPストリームデータSD1及びSD2は、ペイロードとしてペイロードPL2のみを含んでいても良いし、2つ以上のペイロードを共用しても良い。この場合も、以降の説明は同様に適用される。
本実施の形態では、図1に示した通信装置1が、図6に示すEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。ここで、図6に示すように、フレームFRe1中のTCP/IPストリームデータSD1及びフレームFRe2中のTCP/IPストリームデータSD2は、ペイロードPL2を共用するものとする。なお、TCP/IPストリームデータSD1及びSD2は、ペイロードとしてペイロードPL2のみを含んでいても良いし、2つ以上のペイロードを共用しても良い。この場合も、以降の説明は同様に適用される。
動作においては、まずCPU10が、EthernetフレームFRe1及びFRe2を生成してメインメモリ20に記憶する。
また、本実施の形態では、CPU10は、メインメモリ20に、図7に示す如くペイロードPL1〜PL3についてのチェックサムを記憶するための領域(以下、ペイロードチェックサム記憶領域と呼称する)ARを形成する。この例では、ペイロードチェックサム記憶領域ARに、ペイロードPL1についてのチェックサムを記憶するための領域(以下、PL1用記憶領域と呼称する)AR1と、ペイロードPL2についてのチェックサムを記憶するための領域(以下、PL2用記憶領域と呼称する)AR2と、ペイロードPL3についてのチェックサムを記憶するための領域(以下、PL3用記憶領域と呼称する)AR3と、を連続に設けている。但し、領域AR1〜AR3は、必ずしも連続に設ける必要は無く、実施の形態3及び4で後述するように不連続に設けても良い。
そして、CPU10は、メインメモリ20に、ペイロードPL1〜PL3の読出用ディスクリプタRD41〜RD43、IPヘッダHD11の読出用ディスクリプタRD11、TCPヘッダHD21の読出用ディスクリプタRD21、TCP疑似ヘッダHD41の読出用ディスクリプタRD31、PL1用記憶領域AR1及びPL2用記憶領域AR2からの連続読出に用いるディクリプタRDa12、IPヘッダHD12の読出用ディスクリプタRD12、TCPヘッダHD22の読出用ディスクリプタRD22、TCP疑似ヘッダHD42の読出用ディスクリプタRD32、及びPL2用記憶領域AR2及びPL3用記憶領域AR3からの連続読出に用いるディクリプタRDa23から成るデータ読出用ディスクリプタチェインRCを記憶する。
ここで、読出用ディスクリプタRDa12には、領域サイズ="Sa1+Sa2(領域AR1及びAR2の合計サイズ)"と、ペイロードチェックサム記憶領域アドレスポインタPa12="アドレスAa1(領域AR1の開始アドレス)"とが設定される。読出用ディスクリプタRDa23には、領域サイズ="Sa2+Sa3(領域AR2及びAR3の合計サイズ)"と、ペイロードチェックサム記憶領域アドレスポインタPa23="アドレスAa2(領域AR2の開始アドレス)"とが設定される。なお、以降の説明においては、読出用ディスクリプタRDa12及びRDa23を符号RDaで総称することがある。
また、CPU10は、読出用ディスクリプタRD41〜RD43、RD11、RD21、RD31、RDa12、RD12、RD22、RD32、及びRDa23に、上記の実施の形態1で説明した制御フラグFLG1に加えて、制御フラグFLG2_41〜FLG2_43、FLG2_11、FLG2_21、FLG2_31、FLG2_a12、FLG2_12、FLG2_22、FLG2_32、及びFLG2_a23(以下、符号FLG2で総称することがある)をそれぞれ設定する。この制御フラグFLG2は、チェックサム処理部30に対して、当該読出用ディスクリプタを参照して読み出したデータについてのチェックサムをメインメモリ20に書き込む際に、当該チェックサムの反転が必要であるか否かを指示するための制御情報である。
そして、CPU10は、メインメモリ20に、PL1用記憶領域AR1への書込に用いるディクリプタWDa1と、PL2用記憶領域AR2への書込に用いるディクリプタWDa2と、PL3用記憶領域AR3への書込に用いるディクリプタWDa3と、IPヘッダHD11についてのIPチェックサムの書込用ディスクリプタWD11と、TCPヘッダHD21、TCP疑似ヘッダHD41、並びにペイロードPL1及びPL2についてのTCPチェックサムの書込用ディスクリプタWD21と、IPヘッダHD12についてのIPチェックサムの書込用ディスクリプタWD12と、TCPヘッダHD22、TCP疑似ヘッダHD42、並びにペイロードPL2及びPL3についてのTCPチェックサムの書込用ディスクリプタWD22とから成るチェックサム書込用ディスクリプタチェインWCを記憶する。
ここで、書込用ディスクリプタWDa1には、領域サイズ="Sa1(領域AR1のサイズ)"と、ペイロードチェックサム記憶領域アドレスポインタPa1="アドレスAa1"とが設定される。書込用ディスクリプタWDa2には、領域サイズ="Sa2(領域AR2のサイズ)"と、ペイロードチェックサム記憶領域アドレスポインタPa2="アドレスAa2"とが設定される。書込用ディスクリプタWDa3には、領域サイズ="Sa3(領域AR3のサイズ)"と、ペイロードチェックサム記憶領域アドレスポインタPa3="アドレスAa3(領域AR3の開始アドレス)"とが設定される。
この後、CPU10は、上記の実施の形態1と同様、チェックサム処理部30に対してチェックサム算出開始指示INS1を与える。
指示INS1を受けたチェックサム処理部30内のリードDMA処理部32は、まずデータ読出用ディスクリプタチェインRC中の読出用ディスクリプタRD41を参照して、ペイロードPL1をメインメモリ20から読み出し、チェックサム算出部33へ転送する。この時、読出用ディスクリプタRD41中の制御フラグFLG2_41に"1(非反転)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを反転せずに出力するよう指示する。
チェックサム算出部33は、受信したペイロードPL1についてのチェックサムを算出し、そのままライトDMA処理部34へ転送する。
これと並行して、リードDMA処理部32は、制御フラグFLG1_41="1(書込)"が成立するため、ライトDMA処理部34へ制御権を移す。ライトDMA処理部34は、チェックサム書込用ディスクリプタチェインWC中の書込用ディスクリプタWDa1を参照して、PL1用記憶領域AR1にペイロードPL1についてのチェックサムを書き込む。この後、ライトDMA処理部34は、リードDMA処理部32へ制御権を移す。
同様にして、チェックサム処理部30は、読出用ディスクリプタRD42及びRD43並びに書込用ディスクリプタWDa2及びWDa3を参照することにより、PL2用記憶領域AR2及びPL3用記憶領域AR3に、ペイロードPL2及びPL3についてそれぞれ算出したチェックサムをそのまま書き込む。
これにより、各ペイロードについてのチェックサムが、ペイロードチェックサム記憶領域ARに反転されずに格納されることとなる。ここで、ペイロードについてのチェックサムを反転しないのは、読出用ディスクリプタRDaを用いて当該チェックサムを読み出した際に、何ら変換を施すこと無くTCPヘッダ及びTCP疑似ヘッダについてのチェックサムと積算できるようにするため(すなわち、各ペイロードについてのチェックサムを再利用可能にするため)である。
そして、リードDMA処理部32は、読出用ディスクリプタRD11を参照して、IPヘッダHD11をメインメモリ20から読み出し、チェックサム算出部33へ転送する。この時、読出用ディスクリプタRD11中の制御フラグFLG2_11に"0(反転)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを反転して出力するよう指示する。
チェックサム算出部33は、受信したIPヘッダHD11についてのIPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。
これと並行して、リードDMA処理部32は、制御フラグFLG1_11="1(書込)"が成立するため、ライトDMA処理部34へ制御権を移す。ライトDMA処理部34は、書込用ディスクリプタWD11を参照して、メインメモリ20に記憶されたIPヘッダHD11中のチェックサムフィールドFc11に、IPヘッダHD11についてのIPチェックサムの反転値を書き込む。この後、ライトDMA処理部34は、リードDMA処理部32へ制御権を移す。
そして、リードDMA処理部32は、読出用ディスクリプタRD21及びRD31を順次参照して、TCPヘッダHD21及びTCP疑似ヘッダHD41をメインメモリ20から読み出し、チェックサム算出部33へ転送する。この時、制御フラグFLG1_21及びFLG1_31に共に"0(積算)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを出力せずに次のデータについてのチェックサムと積算するよう指示する。
従って、チェックサム算出部33は、受信したTCPヘッダHD21及びTCP疑似ヘッダHD41についてのチェックサムをそれぞれ算出した後、リードDMA処理部32からの次のデータ入力を待機する。
そして、リードDMA処理部32は、読出用ディスクリプタRDa12を参照して、ペイロードPL1及びPL2についてのチェックサムをPL1用記憶領域AR1及びPL2用記憶領域AR2から連続して読み出し、チェックサム算出部33へ転送する。この時、読出用ディスクリプタRDa12中の制御フラグFLG2_a12に"0(反転)"が設定されているため、リードDMA処理部32は、チェックサム算出部33に対して、算出したチェックサムを反転して出力するよう指示する。
チェックサム算出部33は、受信したペイロードPL1及びPL2についてのチェックサムを、TCPヘッダHD21及びTCP疑似ヘッダHD41についてのチェックサムと積算してTCPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。
これと並行して、リードDMA処理部32は、制御フラグFLG1_a12="1(書込)"が成立するため、ライトDMA処理部34へ制御権を移す。ライトDMA処理部34は、書込用ディスクリプタWD21を参照して、メインメモリ20に記憶されたTCPヘッダHD21中のチェックサムフィールドFc21に、TCPヘッダHD21、TCP疑似ヘッダHD41、並びにペイロードPL1及びPL2についてのTCPチェックサムの反転値を書き込む。
これにより、図6に示したEthernetフレームFRe1に対するチェックサム付加処理が完了する。なお、CPU10が、メインメモリ20に、TCPヘッダHD21及びTCP疑似ヘッダHD41並びにこれらの読出用ディスクリプタRD21及びRD31に代えて、UDPヘッダ及びUDP疑似ヘッダ並びにこれらの読出用ディスクリプタを記憶し、且つ読出用ディスクリプタRDa12中の制御フラグFLG2_a12に"1(非反転)"を設定すれば、チェックサム処理部30に、UDPに則したチェックサム付加処理を実行させることもできる。
次いで、チェックサム処理部30は、読出用ディスクリプタRD12、RD22、RD32、及びRDa23、並びに書込用ディスクリプタWD12及びWD22を参照することにより、上記と同様にしてEthernetフレームFRe2に対するチェックサム付加処理を実行する。
この後、送信処理部42内の送信DMA処理部421は、上記の実施の形態1と同様にして、EthernetフレームFRe1及びFRe2をメインメモリ20から読み出し、ネットワークに対して送出する。
このように、データ読出用ディスクリプタチェインRC中の読出用ディクリプタRDに制御フラグFLG2をさらに設定することにより、フレーム同士間で共用されるペイロードについてのチェックサムを再利用することができる(すなわち、フレーム毎の冗長なチェックサムの算出が不要となる)。従って、フレーム生成効率の向上を図ることができる。
[実施の形態3]
本実施の形態では、図1に示した通信装置1が、上記の実施の形態2と同様、図6に示したEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。但し、上記の実施の形態2と異なり、チェックサム処理部30は、メインメモリ20への書込に際してペイロードについてのチェックサム、IPチェックサム、及びTCPチェックサムを無条件に反転する一方、メインメモリ20からの読出に際してペイロードについてのチェックサムの反転値を再反転する。
本実施の形態では、図1に示した通信装置1が、上記の実施の形態2と同様、図6に示したEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。但し、上記の実施の形態2と異なり、チェックサム処理部30は、メインメモリ20への書込に際してペイロードについてのチェックサム、IPチェックサム、及びTCPチェックサムを無条件に反転する一方、メインメモリ20からの読出に際してペイロードについてのチェックサムの反転値を再反転する。
以下、本実施の形態におけるチェック付加処理例を、図8を参照して説明する。なお、フレーム送出処理については上記の実施の形態2と同様であるため、その説明を省略する。
図8に示すように、まずCPU10が、EthernetフレームFRe1及びFRe2を生成してメインメモリ20に記憶する。この例では、上記の実施の形態2と異なり、ペイロードチェックサム記憶領域ARに、PL1用記憶領域AR1、PL2用記憶領域AR2、及びPL3用記憶領域AR3を不連続に設けている。なお、これらの領域AR1〜AR3は、上記の実施の形態2と同様に連続に設けても良い。
この場合、CPU10は、データ読出用ディスクリプタチェインRCに、図7に示した読出用ディクリプタRDa12及びRDa23に代えて、PL1用記憶領域AR1からの読出に用いるディスクリプタRDa1、PL2用記憶領域AR2からの読出に用いるディスクリプタRDa2、及びPL3用記憶領域AR3からの読出に用いるディスクリプタRDa3を含める。
ここで、読出用ディスクリプタRDa1には、領域サイズ="Sa1"と、ペイロードチェックサム記憶領域アドレスポインタPa1="アドレスAa1"とが設定される。読出用ディスクリプタRDa2には、領域サイズ="Sa2"と、ペイロードチェックサム記憶領域アドレスポインタPa2="アドレスAa2"とが設定される。読出用ディスクリプタRDa3には、領域サイズ="Sa3"と、ペイロードチェックサム記憶領域アドレスポインタPa3="アドレスAa3"とが設定される。
また、CPU10は、読出用ディスクリプタRD41〜RD43、RD11、RD21、RD31、RDa1、RDa2、RD12、RD22、RD32、RDa2、及びRDa3に、上記の実施の形態2で説明した制御フラグFLG2に代えて、制御フラグFLG3_41〜FLG3_43、FLG3_11、FLG3_21、FLG3_31、FLG3_a1、FLG3_a2、FLG3_12、FLG3_22、FLG3_32、FLG3_a2、及びFLG3_a3(以下、符号FLG3で総称することがある)をそれぞれ設定する。この制御フラグFLG3は、チェックサム処理部30に対して、当該読出用ディスクリプタを参照してメインメモリ20からデータを読み出す際に、当該データを再反転する必要であるか否かを指示するための制御情報である。
そして、CPU10は、メインメモリ20に、図7と同様のチェックサム書込用ディスクリプタチェインWCを記憶すると共に、チェックサム処理部30に対してチェックサム算出開始指示INS1を与える。
指示INS1を受けたチェックサム処理部30内のリードDMA処理部32は、データ読出用ディスクリプタチェインRC中の読出用ディスクリプタRD41〜RD43を順次参照して、ペイロードPL1〜PL3をメインメモリ20から読み出す。この時、読出用ディスクリプタRD41〜RD43中の制御フラグFLG3_41〜FLG3_43に共に"0(非再反転)"が設定されているため、リードDMA処理部32は、読み出したペイロードPL1〜PL3をそのままチェックサム算出部33へ転送する。チェックサム算出部33は、ペイロードPL1〜PL3についてのチェックサムを順次算出し、各チェックサムの反転値をライトDMA処理部34へ転送する。
ライトDMA処理部34は、チェックサム書込用ディスクリプタチェインWC中の書込用ディスクリプタWDa1〜WDa3を順次参照して、PL1用記憶領域AR1にペイロードPL1についてのチェックサムの反転値を書き込み、PL2用記憶領域AR2にペイロードPL2についてのチェックサムの反転値を書き込み、PL3用記憶領域AR3にペイロードPL3についてのチェックサムの反転値を書き込む。
そして、リードDMA処理部32は、読出用ディスクリプタRD11を参照してIPヘッダHD11をメインメモリ20から読み出す。この時、読出用ディスクリプタRD11中の制御フラグFLG3_11に"0(非再反転)"が設定されているため、リードDMA処理部32は、読み出したIPヘッダHD11をそのままチェックサム算出部33へ転送する。チェックサム算出部33は、受信したIPヘッダHD11についてのIPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。ライトDMA処理部34は、書込用ディスクリプタWD11を参照して、メインメモリ20に記憶されたIPヘッダHD11中のチェックサムフィールドFc11に、IPヘッダHD11についてのIPチェックサムの反転値を書き込む。
そして、リードDMA処理部32は、読出用ディスクリプタRD21及びRD31を順次参照して、TCPヘッダHD21及びTCP疑似ヘッダHD41をメインメモリ20から読み出す。この時、読出用ディスクリプタRD21及びRD31中の制御フラグFLG3_21及びFLG3_31に共に"0(非再反転)"が設定されているため、リードDMA処理部32は、読み出したTCPヘッダHD21及びTCP疑似ヘッダHD41をそのままチェックサム算出部33へ転送する。また、制御フラグFLG1_21及びFLG1_31に共に"0(積算)"が設定されているため、チェックサム算出部33は、受信したTCPヘッダHD21及びTCP疑似ヘッダHD41についてのチェックサムをそれぞれ算出した後、リードDMA処理部32からの次のデータ入力を待機する。
そして、リードDMA処理部32は、読出用ディスクリプタRDa1を参照して、ペイロードPL1についてのチェックサムをPL1用記憶領域AR1から読み出す。この時、読出用ディスクリプタRDa1中の制御フラグFLG3_a1に"1(再反転)"が設定されているため、リードDMA処理部32は、読み出したペイロードPL1についてのチェックサムの反転値を再反転してチェックサム算出部33へ転送する。また、制御フラグFLG1_a1に"0(積算)"が設定されているため、チェックサム算出部33は、再反転されたペイロードPL1についてのチェックサムを保持し、リードDMA処理部32からの次のデータ入力を待機する。
そして、リードDMA処理部32は、読出用ディスクリプタRDa2を参照して、ペイロードPL2についてのチェックサムをPL2用記憶領域AR2から読み出す。この時、読出用ディスクリプタRDa2中の制御フラグFLG3_a2に"1(再反転)"が設定されているため、リードDMA処理部32は、読み出したペイロードPL2についてのチェックサムの反転値を再反転してチェックサム算出部33へ転送する。チェックサム算出部33は、再反転されたペイロードPL2についてのチェックサムを、保持しているTCPヘッダHD21、TCP疑似ヘッダHD41、ペイロードPL1についてのチェックサムと積算してTCPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。
また、制御フラグFLG1_a2="1(書込)"が成立するため、ライトDMA処理部34は、書込用ディスクリプタWD21を参照して、メインメモリ20に記憶されたTCPヘッダHD21中のチェックサムフィールドFc21に、TCPヘッダHD21、TCP疑似ヘッダHD41、並びにペイロードPL1及びPL2についてのTCPチェックサムの反転値を書き込む。
これにより、図6に示したEthernetフレームFRe1に対するチェックサム付加処理が完了する。
次いで、チェックサム処理部30は、読出用ディスクリプタRD12、RD22、RD32、RDa2、及びRDa3、並びに書込用ディスクリプタWD12及びWD22を参照することにより、上記と同様にしてEthernetフレームFRe2に対するチェックサム付加処理を実行する。
このように、制御フラグFLG2に代えて制御フラグFLG3を用いることによっても、フレーム同士間で共用されるペイロードについてのチェックサムを再利用することができ、以て、上記の実施の形態2と同様にフレーム生成効率の向上を図ることができる。
[実施の形態4]
本実施の形態では、図1に示した通信装置1が、上記の実施の形態2及び3と同様、図6に示したEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。チェックサム処理部30は、上記の実施の形態3と同様、メインメモリ20への書込に際してペイロードについてのチェックサム、IPチェックサム、及びTCPチェックサムを無条件に反転するが、上記の実施の形態3と異なり、CPU10に対して、メインメモリ20へ書き込んだペイロードについてのチェックサムの反転値の再反転を要求する。
本実施の形態では、図1に示した通信装置1が、上記の実施の形態2及び3と同様、図6に示したEthernetフレームFRe1及びFRe2に対するチェックサム付加処理を実行する場合を扱う。チェックサム処理部30は、上記の実施の形態3と同様、メインメモリ20への書込に際してペイロードについてのチェックサム、IPチェックサム、及びTCPチェックサムを無条件に反転するが、上記の実施の形態3と異なり、CPU10に対して、メインメモリ20へ書き込んだペイロードについてのチェックサムの反転値の再反転を要求する。
以下、本実施の形態におけるチェック付加処理例を、図9を参照して説明する。なお、フレーム送出処理については上記の実施の形態2と同様であるため、その説明を省略する。
図9に示すように、まずCPU10が、EthernetフレームFRe1及びFRe2を生成してメインメモリ20に記憶する。この例では、上記の実施の形態3と同様、ペイロードチェックサム記憶領域ARに、PL1用記憶領域AR1、PL2用記憶領域AR2、及びPL3用記憶領域AR3を不連続に設けている。なお、これらの領域AR1〜AR3は、上記の実施の形態2と同様に連続に設けても良い。
また、上記の実施の形態3と異なり、CPU10は、データ読出用ディスクリプタチェインRC中の各読出用ディスクリプタには、図8に示した制御フラグFLG3は設定しない。その代わりに、CPU10は、チェックサム書込用ディスクリプタチェインWC中の書込用ディスクリプタWDa1〜WDa3、WD11、WD21、WD12、及びWD22に、制御フラグFLG4_a1〜FLG4_a3、FLG4_11、FLG4_21、FLG4_12、及びFLG4_22(以下、符号FLG4で総称することがある)をそれぞれ設定する。この制御フラグFLG4は、チェックサム処理部30からCPU10に対して、当該書込用ディスクリプタに対応するデータの反転値の再反転を要求するために用いる。CPU10は、チェックサム書込用ディスクリプタチェインWCの記憶時、制御フラグFLGを"0(非再反転)"に設定する。チェックサム処理部30は、再反転を要求する場合、制御フラグFLG4に"1(再反転)"を設定する。
そして、CPU10は、チェックサム処理部30に対してチェックサム算出開始指示INS1を与える。
指示INS1を受けたチェックサム処理部30内のリードDMA処理部32は、データ読出用ディスクリプタチェインRC中の読出用ディスクリプタRD41〜RD43を順次参照して、ペイロードPL1〜PL3をメインメモリ20から読み出し、チェックサム算出部33へ転送する。チェックサム算出部33は、ペイロードPL1〜PL3についてのチェックサムを順次算出し、各チェックサムの反転値をライトDMA処理部34へ転送する。
ライトDMA処理部34は、チェックサム書込用ディスクリプタチェインWC中の書込用ディスクリプタWDa1〜WDa3を順次参照して、PL1用記憶領域AR1にペイロードPL1についてのチェックサムの反転値を書き込み、PL2用記憶領域AR2にペイロードPL2についてのチェックサムの反転値を書き込み、PL3用記憶領域AR3にペイロードPL3についてのチェックサムの反転値を書き込む。
この時、ライトDMA処理部34は、制御フラグFLG4_a1〜FLG4_a3をそれぞれ"1(再反転)"に設定する。この制御FLG4_a1〜FLG4_a3の設定による割り込みを検知すると、CPU10は、ペイロードチェックサム記憶領域ARからペイロードPL1〜PL3についてのチェックサムの反転値をそれぞれ読出すと共に、チェックサム処理部30で再利用可能なように、読み出した各反転値を再反転してペイロードチェックサム記憶領域ARに書き戻す。
そして、リードDMA処理部32は、読出用ディスクリプタRD11を参照してIPヘッダHD11をメインメモリ20から読み出し、チェックサム算出部33へ転送する。チェックサム算出部33は、受信したIPヘッダHD11についてのIPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。ライトDMA処理部34は、書込用ディスクリプタWD11を参照して、メインメモリ20に記憶されたIPヘッダHD11中のチェックサムフィールドFc11に、IPヘッダHD11についてのIPチェックサムの反転値を書き込む。
そして、リードDMA処理部32は、読出用ディスクリプタRD21及びRD31を順次参照して、TCPヘッダHD21及びTCP疑似ヘッダHD41をメインメモリ20から読み出し、チェックサム算出部33へ転送する。この時、制御フラグFLG1_21及びFLG1_31に共に"0(積算)"が設定されているため、チェックサム算出部33は、受信したTCPヘッダHD21及びTCP疑似ヘッダHD41についてのチェックサムをそれぞれ算出した後、リードDMA処理部32からの次のデータ入力を待機する。
そして、リードDMA処理部32は、読出用ディスクリプタRDa1を参照して、再反転されたペイロードPL1についてのチェックサムをPL1用記憶領域AR1から読み出し、チェックサム算出部33へ転送する。この時、制御フラグFLG1_a1に"0(積算)"が設定されているため、チェックサム算出部33は、再反転されたペイロードPL1についてのチェックサムを保持し、リードDMA処理部32からの次のデータ入力を待機する。
そして、リードDMA処理部32は、読出用ディスクリプタRDa2を参照して、再反転されたペイロードPL2についてのチェックサムをPL2用記憶領域AR2から読み出し、チェックサム算出部33へ転送する。チェックサム算出部33は、再反転されたペイロードPL2についてのチェックサムを、保持しているTCPヘッダHD21、TCP疑似ヘッダHD41、ペイロードPL1についてのチェックサムと積算してTCPチェックサムを算出し、その反転値をライトDMA処理部34へ転送する。
この時、制御フラグFLG1_a2="1(書込)"が成立するため、ライトDMA処理部34は、書込用ディスクリプタWD21を参照して、メインメモリ20に記憶されたTCPヘッダHD21中のチェックサムフィールドFc21に、TCPヘッダHD21、TCP疑似ヘッダHD41、並びにペイロードPL1及びPL2についてのTCPチェックサムの反転値を書き込む。
これにより、図6に示したEthernetフレームFRe1に対するチェックサム付加処理が完了する。
次いで、チェックサム処理部30は、読出用ディスクリプタRD12、RD22、RD32、RDa2、及びRDa3、並びに書込用ディスクリプタWD12及びWD22を参照することにより、上記と同様にしてEthernetフレームFRe2に対するチェックサム付加処理を実行する。
このように、CPU10がペイロードについてのチェックサムの反転値の再反転を実行する場合であっても、制御フラグFLG4を用いることにより、フレーム毎の冗長な割り込みの発生を抑止することができる。このため、CPU10の処理負荷を軽減することができる。
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。
1 通信装置
2 Ethernetケーブル
10 CPU
20 メインメモリ
30 チェックサム処理部
31, 41 インタフェース回路
32 リードDMA処理部
33 チェックサム算出部
34 ライトDMA処理部
40 送受信処理部
42 送信処理部
43 受信処理部
50 MAC処理回路
60 PHY処理回路
70 バス
80 HDD
90 入力部
100 表示部
421 送信DMA処理部
422 送信用FIFOバッファ
431 受信用FIFOバッファ
432 受信DMA処理部
RC データ読出用ディスクリプタチェイン
WC チェックサム書込用ディスクリプタチェイン
RD データ読出用ディスクリプタ
RD1 IPヘッダ読出用ディスクリプタ
RD2 TCPヘッダ読出用ディスクリプタ
RD3 TCP疑似ヘッダ読出用ディスクリプタ
RD4 ペイロード読出用ディスクリプタ
WD チェックサム書込用ディスクリプタ
WD1 IPチェックサム書込用ディスクリプタ
WD2 TCPチェックサム書込用ディスクリプタ
TD フレーム送信用ディスクリプタ
Af フレームアドレス
Ad データアドレス
Ac チェックサムフィールドアドレス
Sf フレームサイズ
Sd データサイズ
Sc チェックサムサイズ
Pf フレームアドレスポインタ
Pd データアドレスポインタ
Pc チェックサムフィールドアドレスポインタ
FR フレーム
FRe Ethernetフレーム
DT チェックサム対象データ
SD TCP/IPストリームデータ
HD1 IPヘッダ
HD2 TCPヘッダ
HD3 MACヘッダ
HD4 TCP疑似ヘッダ
PL ペイロード
Fc チェックサムフィールド
Fc1 IPチェックサムフィールド
Fc2 TCPチェックサムフィールド
CSi IPチェックサム
CSt TCPチェックサム
FLG1〜FLG4 制御フラグ
AR ペイロードチェックサム記憶領域
Aa 領域アドレス
Pa ペイロードチェックサム記憶領域アドレスポインタ
INS1 チェックサム算出開始指示
INS2 フレーム送信開始指示
2 Ethernetケーブル
10 CPU
20 メインメモリ
30 チェックサム処理部
31, 41 インタフェース回路
32 リードDMA処理部
33 チェックサム算出部
34 ライトDMA処理部
40 送受信処理部
42 送信処理部
43 受信処理部
50 MAC処理回路
60 PHY処理回路
70 バス
80 HDD
90 入力部
100 表示部
421 送信DMA処理部
422 送信用FIFOバッファ
431 受信用FIFOバッファ
432 受信DMA処理部
RC データ読出用ディスクリプタチェイン
WC チェックサム書込用ディスクリプタチェイン
RD データ読出用ディスクリプタ
RD1 IPヘッダ読出用ディスクリプタ
RD2 TCPヘッダ読出用ディスクリプタ
RD3 TCP疑似ヘッダ読出用ディスクリプタ
RD4 ペイロード読出用ディスクリプタ
WD チェックサム書込用ディスクリプタ
WD1 IPチェックサム書込用ディスクリプタ
WD2 TCPチェックサム書込用ディスクリプタ
TD フレーム送信用ディスクリプタ
Af フレームアドレス
Ad データアドレス
Ac チェックサムフィールドアドレス
Sf フレームサイズ
Sd データサイズ
Sc チェックサムサイズ
Pf フレームアドレスポインタ
Pd データアドレスポインタ
Pc チェックサムフィールドアドレスポインタ
FR フレーム
FRe Ethernetフレーム
DT チェックサム対象データ
SD TCP/IPストリームデータ
HD1 IPヘッダ
HD2 TCPヘッダ
HD3 MACヘッダ
HD4 TCP疑似ヘッダ
PL ペイロード
Fc チェックサムフィールド
Fc1 IPチェックサムフィールド
Fc2 TCPチェックサムフィールド
CSi IPチェックサム
CSt TCPチェックサム
FLG1〜FLG4 制御フラグ
AR ペイロードチェックサム記憶領域
Aa 領域アドレス
Pa ペイロードチェックサム記憶領域アドレスポインタ
INS1 チェックサム算出開始指示
INS2 フレーム送信開始指示
Claims (26)
- データを生成してメモリに記憶するデータ生成部と、
前記メモリから読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、前記メモリに記憶されたデータ中の予め定められた位置に書き込むチェックサム処理部と、
前記チェックサムが書き込まれたデータを前記メモリから読み出し、ネットワークに対して送出するデータ送信部と、
を備えた通信装置。 - 請求項1において、
前記データ生成部が、前記メモリに、前記生成したデータの記憶情報を設定した第1のディスクリプタと、前記チェックサムの書込位置情報を設定した第2のディスクリプタとを記憶し、
前記チェックサム処理部が、前記第1のディスクリプタを参照して前記メモリからのデータ読出を行うと共に、前記第2のディスクリプタを参照して前記メモリへの前記チェックサムの書込を行うことを特徴とした通信装置。 - 請求項2において、
前記記憶情報が、前記生成したデータの、サイズと前記メモリ上における記憶開始アドレスとを含み、
前記書込位置情報が、前記チェックサムの、サイズと前記メモリ上における書込開始アドレスとを含むことを特徴とした通信装置。 - 請求項1において、
前記データ生成部が、前記データとして、IP(Internet Protocolヘッダ、TCP(Transmission Control Protocol)ヘッダ、及びペイロードを含むストリームデータと、前記TCPヘッダ及びペイロードに対するチェックサムの算出に用いるTCP擬似ヘッダとを生成して前記メモリに記憶し、
前記チェックサム処理部が、前記メモリから読み出したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードに対するチェックサムをそれぞれ算出すると共に、前記IPヘッダについてのチェックサムを反転して、前記メモリに記憶されたIPヘッダ中の予め定められた位置に書き込み、前記TCPヘッダ、TCP疑似ヘッダ、及びペイロードについてのチェックサムの積算値を反転して、前記メモリに記憶されたTCPヘッダ中の予め定められた位置に書き込み、
前記データ送信部が、前記IPヘッダについてのチェックサム及び前記積算値各々の反転値が書き込まれたストリームデータを前記メモリから読み出し、前記ネットワークに対して送出することを特徴とした通信装置。 - 請求項4において、
前記データ生成部が、前記メモリに、前記生成したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードの記憶情報をそれぞれ設定したディスクリプタを含む第1のディスクリプタチェインと、前記IPヘッダについてのチェックサムの反転値及び前記積算値の反転値の書込位置情報をそれぞれ設定したディスクリプタを含む第2のディスクリプタチェインとを記憶し、
前記チェックサム処理部が、前記第1のディスクリプタチェインを参照して前記メモリからのIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードの読出を行うと共に、前記第2のディスクリプタチェインを参照して前記メモリへの前記IPヘッダについてのチェックサム及び前記積算値各々の反転値の書込を行うことを特徴とした通信装置。 - 請求項5において、
各記憶情報が、前記生成したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロード各々の、サイズと前記メモリ上における記憶開始アドレスとを含み、
各書込位置情報が、前記IPヘッダについてのチェックサムの反転値及び前記積算値の反転値各々の、サイズと前記メモリ上における書込開始アドレスとを含むことを特徴とした通信装置。 - 請求項5又は6において、
前記データ生成部が、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理部に対して前記積算値の算出又は前記書込のいずれを行うべきかを指示する制御情報をさらに設定することを特徴とした通信装置。 - 請求項1において、
前記データ生成部が、前記データとして、第1のIPヘッダ及び第1のTCPヘッダと少なくとも第1のペイロードを含む第1のデータストリームと、前記第1のペイロードを共用し且つ第2のIPヘッダ及び第2のTCPヘッダを含む第2のデータストリームと、前記第1のTCPヘッダ及び第1のペイロードに対するチェックサムの算出に用いる第1のTCP疑似ヘッダと、前記第2のTCPヘッダ及び第1のペイロードに対するチェックサムの算出に用いる第2のTCP疑似ヘッダとを生成して前記メモリに記憶すると共に、前記メモリ上に前記第1のペイロードについてのチェックサムを記憶するための領域を形成し、
前記チェックサム処理部が、前記メモリから読み出した第1のIPヘッダ、第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードに対するチェックサムをそれぞれ算出し、前記第1のペイロードについてのチェックサムを前記領域に書き込み、前記第1のIPヘッダについてのチェックサムを反転して前記メモリに記憶された第1のIPヘッダ中の予め定められた位置に書き込み、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値を反転して前記メモリに記憶された第1のTCPヘッダ中の予め定められた位置に書き込むと共に、前記メモリから読み出した第2のIPヘッダ、第2のTCPヘッダ、及び第2のTCP疑似ヘッダに対するチェックサムをそれぞれ算出し、前記第2のIPヘッダについてのチェックサムを反転して前記メモリに記憶された第2のIPヘッダ中の予め定められた位置に書き込み、前記第2のTCPヘッダについてのチェックサム、前記第2のTCP疑似ヘッダについてのチェックサム、及び前記領域から読み出した前記第1のペイロードについてのチェックサムの積算値を反転して前記メモリに記憶された第2のTCPヘッダ中の予め定められた位置に書き込み、
前記データ送信部が、前記第1のIPヘッダについてのチェックサム並びに前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値が書き込まれた第1のストリームデータと、前記第2のIPヘッダについてのチェックサム並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値が書き込まれた第2のストリームデータとを前記メモリから読み出し、前記ネットワークに対して送出することを特徴とした通信装置。 - 請求項8において、
前記データ生成部が、前記メモリに、前記生成した第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、並びに第1のペイロードの記憶情報、並びに前記領域の領域情報をそれぞれ設定したディスクリプタを含む第1のディスクリプタチェインと、前記第1及び第2のIPヘッダについてのチェックサムの反転値、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値の書込位置情報、並びに前記領域情報をそれぞれ設定したディスクリプタを含む第2のディスクリプタチェインと、を記憶し、
前記チェックサム処理部が、前記第1のディスクリプタチェインを参照して前記メモリからの第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、第1のペイロード、並びに前記第1のペイロードについてのチェックサムの読出を行うと共に、前記第2のディスクリプタチェインを参照して前記メモリへの前記第1及び第2のIPヘッダについてのチェックサム、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値の書込を行うことを特徴とした通信装置。 - 請求項9において、
各記憶情報が、前記生成した第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、並びに第1のペイロード各々の、サイズと前記メモリ上における記憶開始アドレスとを含み、
前記領域情報が、前記領域のサイズと前記メモリ上における領域開始アドレスとを含み、
各書込位置情報が、前記第1及び第2のIPヘッダについてのチェックサムの反転値、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値各々の、サイズと前記メモリ上における書込開始アドレスとを含むことを特徴とした通信装置。 - 請求項9又は10において、
前記データ生成部が、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理部に対して、前記積算値の算出又は前記書込のいずれを行うべきかを指示する第1の制御情報、並びに前記書込に際しての前記反転の要否を指示する第2の制御情報をさらに設定することを特徴とした通信装置。 - 請求項9又は10において、
前記チェックサム処理部が、前記書込に際して前記反転を行い、
前記データ生成部が、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理部に対して、前記積算値の算出又は前記書込のいずれを行うべきかを指示する第1の制御情報、並びに前記読出に際しての前記反転値の再反転の要否を指示する第2の制御情報をさらに設定することを特徴とした通信装置。 - 請求項9又は10において、
前記チェックサム処理部が、前記書込に際して前記反転を行い、
前記データ生成部が、前記反転値を再反転する再反転機能を有し、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理部に対して前記積算値の算出又は前記書込のいずれを行うべきかを指示する制御情報をさらに設定し、前記第2のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理部が前記再反転を要求するための制御情報領域を設けることを特徴とした通信装置。 - データを生成してメモリに記憶するデータ生成ステップと、
前記メモリから読み出したデータに対するチェックサムを算出すると共に、前記チェックサムを、前記メモリに記憶されたデータ中の予め定められた位置に書き込むチェックサム処理ステップと、
前記チェックサムが書き込まれたデータを前記メモリから読み出し、ネットワークに対して送出するデータ送信ステップと、
を備えた通信方法。 - 請求項14において、
前記データ生成ステップが、前記メモリに、前記生成したデータの記憶情報を設定した第1のディスクリプタと、前記チェックサムの書込位置情報を設定した第2のディスクリプタとを記憶し、
前記チェックサム処理ステップが、前記第1のディスクリプタを参照して前記メモリからのデータ読出を行うと共に、前記第2のディスクリプタを参照して前記メモリへの前記チェックサムの書込を行うことを特徴とした通信方法。 - 請求項15において、
前記記憶情報に、前記生成したデータの、サイズと前記メモリ上における記憶開始アドレスとを含め、
前記書込位置情報に、前記チェックサムの、サイズと前記メモリ上における書込開始アドレスとを含めることを特徴とした通信方法。 - 請求項14において、
前記データ生成ステップが、前記データとして、IP(Internet Protocolヘッダ、TCP(Transmission Control Protocol)ヘッダ、及びペイロードを含むストリームデータと、前記TCPヘッダ及びペイロードに対するチェックサムの算出に用いるTCP擬似ヘッダとを生成して前記メモリに記憶し、
前記チェックサム処理ステップが、前記メモリから読み出したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードに対するチェックサムをそれぞれ算出すると共に、前記IPヘッダについてのチェックサムを反転して、前記メモリに記憶されたIPヘッダ中の予め定められた位置に書き込み、前記TCPヘッダ、TCP疑似ヘッダ、及びペイロードについてのチェックサムの積算値を反転して、前記メモリに記憶されたTCPヘッダ中の予め定められた位置に書き込み、
前記データ送信ステップが、前記IPヘッダについてのチェックサム及び前記積算値各々の反転値が書き込まれたストリームデータを前記メモリから読み出し、前記ネットワークに対して送出することを特徴とした通信方法。 - 請求項17において、
前記データ生成ステップが、前記メモリに、前記生成したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードの記憶情報をそれぞれ設定したディスクリプタを含む第1のディスクリプタチェインと、前記IPヘッダについてのチェックサムの反転値及び前記積算値の反転値の書込位置情報をそれぞれ設定したディスクリプタを含む第2のディスクリプタチェインとを記憶し、
前記チェックサム処理ステップが、前記第1のディスクリプタチェインを参照して前記メモリからのIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロードの読出を行うと共に、前記第2のディスクリプタチェインを参照して前記メモリへの前記IPヘッダについてのチェックサム及び前記積算値各々の反転値の書込を行うことを特徴とした通信方法。 - 請求項18において、
各記憶情報に、前記生成したIPヘッダ、TCPヘッダ、TCP疑似ヘッダ、及びペイロード各々の、サイズと前記メモリ上における記憶開始アドレスとを含め、
各書込位置情報に、前記IPヘッダについてのチェックサムの反転値及び前記積算値の反転値各々の、サイズと前記メモリ上における書込開始アドレスとを含めることを特徴とした通信方法。 - 請求項18又は19において、
前記データ生成ステップが、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理ステップに対して前記積算値の算出又は前記書込のいずれを行うべきかを指示する制御情報をさらに設定することを特徴とした通信方法。 - 請求項14において、
前記データ生成ステップが、前記データとして、第1のIPヘッダ及び第1のTCPヘッダと少なくとも第1のペイロードを含む第1のデータストリームと、前記第1のペイロードを共用し且つ第2のIPヘッダ及び第2のTCPヘッダを含む第2のデータストリームと、前記第1のTCPヘッダ及び第1のペイロードに対するチェックサムの算出に用いる第1のTCP疑似ヘッダと、前記第2のTCPヘッダ及び第1のペイロードに対するチェックサムの算出に用いる第2のTCP疑似ヘッダとを生成して前記メモリに記憶すると共に、前記メモリ上に前記第1のペイロードについてのチェックサムを記憶するための領域を形成し、
前記チェックサム処理ステップが、前記メモリから読み出した第1のIPヘッダ、第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードに対するチェックサムをそれぞれ算出し、前記第1のペイロードについてのチェックサムを前記領域に書き込み、前記第1のIPヘッダについてのチェックサムを反転して前記メモリに記憶された第1のIPヘッダ中の予め定められた位置に書き込み、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値を反転して前記メモリに記憶された第1のTCPヘッダ中の予め定められた位置に書き込むと共に、前記メモリから読み出した第2のIPヘッダ、第2のTCPヘッダ、及び第2のTCP疑似ヘッダに対するチェックサムをそれぞれ算出し、前記第2のIPヘッダについてのチェックサムを反転して前記メモリに記憶された第2のIPヘッダ中の予め定められた位置に書き込み、前記第2のTCPヘッダについてのチェックサム、前記第2のTCP疑似ヘッダについてのチェックサム、及び前記領域から読み出した前記第1のペイロードについてのチェックサムの積算値を反転して前記メモリに記憶された第2のTCPヘッダ中の予め定められた位置に書き込み、
前記データ送信ステップが、前記第1のIPヘッダについてのチェックサム並びに前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値が書き込まれた第1のストリームデータと、前記第2のIPヘッダについてのチェックサム並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値が書き込まれた第2のストリームデータとを前記メモリから読み出し、前記ネットワークに対して送出することを特徴とした通信方法。 - 請求項21において、
前記データ生成ステップが、前記メモリに、前記生成した第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、並びに第1のペイロードの記憶情報、並びに前記領域の領域情報をそれぞれ設定したディスクリプタを含む第1のディスクリプタチェインと、前記第1及び第2のIPヘッダについてのチェックサムの反転値、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値の書込位置情報、並びに前記領域情報をそれぞれ設定したディスクリプタを含む第2のディスクリプタチェインと、を記憶し、
前記チェックサム処理ステップが、前記第1のディスクリプタチェインを参照して前記メモリからの第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、第1のペイロード、並びに前記第1のペイロードについてのチェックサムの読出を行うと共に、前記第2のディスクリプタチェインを参照して前記メモリへの前記第1及び第2のIPヘッダについてのチェックサム、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値各々の反転値の書込を行うことを特徴とした通信方法。 - 請求項22において、
各記憶情報に、前記生成した第1及び第2のIPヘッダ、第1及び第2のTCPヘッダ、第1及び第2のTCP疑似ヘッダ、並びに第1のペイロード各々の、サイズと前記メモリ上における記憶開始アドレスとを含め、
前記領域情報に、前記領域のサイズと前記メモリ上における領域開始アドレスとを含め、
各書込位置情報に、前記第1及び第2のIPヘッダについてのチェックサムの反転値、前記第1のTCPヘッダ、第1のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値、並びに前記第2のTCPヘッダ、第2のTCP疑似ヘッダ、及び第1のペイロードについてのチェックサムの積算値の反転値各々の、サイズと前記メモリ上における書込開始アドレスとを含めることを特徴とした通信方法。 - 請求項21又は22において、
前記データ生成ステップが、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理ステップに対して、前記積算値の算出又は前記書込のいずれを行うべきかを指示する第1の制御情報、並びに前記書込に際しての前記反転の要否を指示する第2の制御情報をさらに設定することを特徴とした通信方法。 - 請求項21又は22において、
前記チェックサム処理ステップが、前記書込に際して前記反転を行い、
前記データ生成ステップが、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理ステップに対して、前記積算値の算出又は前記書込のいずれを行うべきかを指示する第1の制御情報、並びに前記読出に際しての前記反転値の再反転の要否を指示する第2の制御情報をさらに設定することを特徴とした通信方法。 - 請求項21又は22において、
前記チェックサム処理ステップが、前記書込に際して前記反転を行い、
前記データ生成ステップが、前記反転値を再反転する再反転ステップを含み、前記第1のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理ステップに対して前記積算値の算出又は前記書込のいずれを行うべきかを指示する制御情報をさらに設定し、前記第2のディスクリプタチェイン中の各ディスクリプタに、前記チェックサム処理ステップが前記再反転を要求するための制御情報領域を設けることを特徴とした通信方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008221498A JP2010057033A (ja) | 2008-08-29 | 2008-08-29 | 通信装置及び方法 |
| US12/461,469 US8495241B2 (en) | 2008-08-29 | 2009-08-12 | Communication apparatus and method therefor |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008221498A JP2010057033A (ja) | 2008-08-29 | 2008-08-29 | 通信装置及び方法 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2013042936A Division JP2013102556A (ja) | 2013-03-05 | 2013-03-05 | 通信装置及び方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010057033A true JP2010057033A (ja) | 2010-03-11 |
Family
ID=41727096
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008221498A Pending JP2010057033A (ja) | 2008-08-29 | 2008-08-29 | 通信装置及び方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US8495241B2 (ja) |
| JP (1) | JP2010057033A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019106063A (ja) * | 2017-12-13 | 2019-06-27 | キヤノン株式会社 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
| US11336297B2 (en) | 2017-12-13 | 2022-05-17 | Canon Kabushiki Kaisha | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8924836B2 (en) * | 2008-10-30 | 2014-12-30 | Kabushiki Kaisha Toshiba | Data receiving apparatus, data receiving method, and computer-readable recording medium |
| US8561203B2 (en) * | 2011-05-31 | 2013-10-15 | International Business Machines Corporation | Simultaneous mixed protection modes over a virtualized host adapter |
| US10025735B2 (en) * | 2013-01-31 | 2018-07-17 | Seagate Technology Llc | Decoupled locking DMA architecture |
| JP6600241B2 (ja) * | 2015-12-11 | 2019-10-30 | キヤノン株式会社 | 演算装置及び演算方法、通信装置 |
| US10613992B2 (en) * | 2018-03-13 | 2020-04-07 | Tsinghua University | Systems and methods for remote procedure call |
| JP7327029B2 (ja) | 2019-09-19 | 2023-08-16 | 京セラドキュメントソリューションズ株式会社 | 画像形成装置、データ通信方法 |
| US20220263869A1 (en) * | 2021-02-17 | 2022-08-18 | Seagate Technology Llc | Data validation for zero copy protocols |
| CN113438097B (zh) * | 2021-05-21 | 2022-08-23 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004153471A (ja) * | 2002-10-29 | 2004-05-27 | Sanyo Electric Co Ltd | チェックサム算出方法、チェックサム記録方法、およびその方法を利用可能な通信装置 |
| JP2005167544A (ja) * | 2003-12-02 | 2005-06-23 | Sony Corp | データ処理方法およびデータ処理装置 |
| US20060221953A1 (en) * | 2005-04-01 | 2006-10-05 | Claude Basso | Method and apparatus for blind checksum and correction for network transmissions |
| JP2007189296A (ja) * | 2006-01-11 | 2007-07-26 | Renesas Technology Corp | ストリームデータ通信方法及びストリームデータ通信装置 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5826032A (en) * | 1996-02-12 | 1998-10-20 | University Of Southern California | Method and network interface logic for providing embedded checksums |
| US6412092B1 (en) * | 1999-04-14 | 2002-06-25 | Hewlett-Packard Company | Method and apparatus to reduce the cost of preparing the checksum for out bound data in network communication protocols by caching |
| KR20010076328A (ko) | 2000-01-19 | 2001-08-11 | 이정태 | 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법 |
| US7020715B2 (en) * | 2000-08-22 | 2006-03-28 | Adaptec, Inc. | Protocol stack for linking storage area networks over an existing LAN, MAN, or WAN |
| US7079501B2 (en) * | 2001-01-31 | 2006-07-18 | International Business Machines Corporation | Method and system for efficiently delivering content to multiple requesters |
| US6728929B1 (en) * | 2001-02-16 | 2004-04-27 | Spirent Communications Of Calabasas, Inc. | System and method to insert a TCP checksum in a protocol neutral manner |
| US6732329B2 (en) * | 2001-03-27 | 2004-05-04 | Intel Corporation | Providing a header checksum for packet data communications |
| US20040218623A1 (en) * | 2003-05-01 | 2004-11-04 | Dror Goldenberg | Hardware calculation of encapsulated IP, TCP and UDP checksums by a switch fabric channel adapter |
| US7360148B2 (en) * | 2003-07-15 | 2008-04-15 | Agere Systems Inc. | Reduction checksum generator and a method of calculation thereof |
| US7304996B1 (en) * | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
| JP2006303765A (ja) | 2005-04-19 | 2006-11-02 | Seiko Epson Corp | Tcp/ip送信処理回路及びそれを具備する半導体集積回路 |
| JP4845674B2 (ja) * | 2006-10-26 | 2011-12-28 | キヤノン株式会社 | データ処理装置及び方法、通信装置、並びにプログラム |
| US8726132B2 (en) * | 2010-12-14 | 2014-05-13 | International Business Machines Corporation | Checksum verification accelerator |
-
2008
- 2008-08-29 JP JP2008221498A patent/JP2010057033A/ja active Pending
-
2009
- 2009-08-12 US US12/461,469 patent/US8495241B2/en not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004153471A (ja) * | 2002-10-29 | 2004-05-27 | Sanyo Electric Co Ltd | チェックサム算出方法、チェックサム記録方法、およびその方法を利用可能な通信装置 |
| JP2005167544A (ja) * | 2003-12-02 | 2005-06-23 | Sony Corp | データ処理方法およびデータ処理装置 |
| US20060221953A1 (en) * | 2005-04-01 | 2006-10-05 | Claude Basso | Method and apparatus for blind checksum and correction for network transmissions |
| JP2007189296A (ja) * | 2006-01-11 | 2007-07-26 | Renesas Technology Corp | ストリームデータ通信方法及びストリームデータ通信装置 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2019106063A (ja) * | 2017-12-13 | 2019-06-27 | キヤノン株式会社 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
| US11336297B2 (en) | 2017-12-13 | 2022-05-17 | Canon Kabushiki Kaisha | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium |
| JP7145607B2 (ja) | 2017-12-13 | 2022-10-03 | キヤノン株式会社 | Dma転送装置、dma転送装置の制御方法、および通信装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20100058155A1 (en) | 2010-03-04 |
| US8495241B2 (en) | 2013-07-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2010057033A (ja) | 通信装置及び方法 | |
| TWI416334B (zh) | 在匯流排上以封包形式傳送來自複數個客戶的資料傳送請求之方法、匯流排介面裝置及處理器 | |
| US8930618B2 (en) | Smart memory | |
| US20060047849A1 (en) | Apparatus and method for packet coalescing within interconnection network routers | |
| CN109992405A (zh) | 一种处理数据报文的方法和网卡 | |
| US20030225995A1 (en) | Inter-chip processor control plane communication | |
| JP5414506B2 (ja) | データ処理装置、データ処理方法、及びプログラム | |
| JP2013102556A (ja) | 通信装置及び方法 | |
| WO2011095012A1 (zh) | 一种查找引擎实时系统内数据传输的方法和系统 | |
| WO2025157255A1 (zh) | 用于cdn的日志落盘方法、装置、介质和电子设备 | |
| JP2018142853A (ja) | 通信方法、通信装置、及びプログラム | |
| JP3557201B2 (ja) | パケット処理装置、パケット処理方法、およびその方法を利用可能な電話装置 | |
| US12068885B1 (en) | Ring network for specified data type | |
| JP2012039266A (ja) | 通信制御装置及び方法 | |
| JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
| JP4502796B2 (ja) | ストリームパケット受信装置 | |
| JP3904498B2 (ja) | プロセッサ間通信システム | |
| JP6907835B2 (ja) | 計算ノード装置、並列計算機システム、および計算ノード装置の制御方法 | |
| KR20220135562A (ko) | 메모리 액세스를 위한 직렬 통신 방법 및 시스템 | |
| CN120407509B (zh) | 多核处理器片上网络地址映射方法、装置、处理器及介质 | |
| JP6976786B2 (ja) | 通信装置および通信装置の制御方法 | |
| US12457189B1 (en) | Network address translation | |
| CN117785762B (zh) | 一种信息存储方法、装置、设备和存储介质 | |
| JP2026005543A (ja) | 通信装置及びその制御方法、並びにプログラム | |
| JP6873953B2 (ja) | 通信装置、通信装置の制御方法およびプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110519 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121221 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130108 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130507 |