(57)【要約】  【課題】  少ないメモリで確認応答パケット数の削減を実現可能なＴＣＰ処理回路等を提供する。  【解決手段】  コネクションに関する情報をそれぞれ格納する複数のコネクション管理領域を記録するためのコネクション管理領域記録部２１と、確認応答パケットを格納するための領域を有する確認応答パケット送信バッファ２２と、受信したパケットに係るコネクションに関するコネクション管理領域に格納されている確認応答済み位置を表す情報及びコネクションの接続状態を表す情報を更新し、確認応答パケット送出要求フラグをセットするためのＴＣＰ受信処理部２３と、確認応答パケット送出要求フラグがセットされているコネクション管理領域に格納されている情報に基づいて確認応答パケットを作成するための確認応答パケット送出処理部２４とを具備する。【選択図】  図３
2005278001.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰ（Transmission Control Protocol）処理を行うための回路であって、
コネクションを一意に識別するコネクション識別子、確認応答パケットの送出を要求するための確認応答パケット送出要求フラグ、コネクションの確認応答済み位置を表す情報、及び、コネクションの接続状態を表す情報をそれぞれ格納する複数のコネクション管理領域を記録するためのコネクション管理領域記録部と、
確認応答パケットを下位レイヤに送出するためにバッファリングするためのバッファであって、確認応答パケットを格納するための領域及び前記コネクション識別子を格納するための領域を有する確認応答パケット送信バッファと、
外部装置からのパケットを下位レイヤから受信したときに、受信したパケットに基づくデータを上位レイヤに送出するとともに、前記複数のコネクション管理領域の中の前記パケットに係るコネクションに関する前記コネクション管理領域に格納されている前記確認応答済み位置を表す情報及び前記コネクションの接続状態を表す情報を更新し、前記確認応答パケット送出要求フラグをセットするためのＴＣＰ受信処理部と、
前記複数のコネクション管理領域の中の前記確認応答パケット送出要求フラグがセットされているコネクション管理領域に格納されている前記コネクションの確認応答済み位置を表す情報及び前記コネクションの接続状態を表す情報に基づいて、前記確認応答パケット送信バッファ内に確認応答パケットを作成するための確認応答パケット送出処理部と、
を具備するＴＣＰ処理回路。
【請求項２】
前記確認応答パケット送出処理部が、前記確認応答パケット送信バッファ内の前記確認応答パケットが下位レイヤによって前記外部装置に送信された後に、前記確認応答パケット送信バッファ内の前記コネクション識別子に基づいて前記複数のコネクション管理領域の中の前記パケットに係るコネクションに関する前記コネクション管理領域を特定し、特定した前記コネクション管理領域に格納されている前記確認応答パケット送出要求フラグをクリアする、請求項１記載のＴＣＰ処理回路。
【請求項３】
前記ＴＣＰ受信処理部が、前記複数のコネクション管理領域の中の前記パケットに係るコネクションに関する前記コネクション管理領域に格納されている前記確認応答パケット送出要求フラグの値にかかわらず、前記複数のコネクション管理領域の中の前記パケットに係るコネクションに関する前記コネクション管理領域に格納されている前記確認応答済み位置を表す情報を更新し、前記確認応答パケット送出要求フラグをセットする、請求項１又は２記載のＴＣＰ処理回路。
【請求項４】
前記コネクション管理領域記録部及び前記確認応答パケット送信バッファが、１個のＲＡＭで構成されている、請求項１〜３のいずれか１項に記載のＴＣＰ処理回路。
【請求項５】
前記確認応答パケット送信バッファが、全てのプロトコルからなるツリーの全てのノードを一意に識別することができる識別子を格納するための領域を更に有する、請求項４記載のＴＣＰ処理回路。
【請求項６】
前記確認応答パケット送信バッファが、前記確認応答パケット送信バッファであることを示す値を格納する領域を更に有する、請求項４記載のＴＣＰ処理回路。
【請求項７】
請求項１〜６のいずれか１項に記載のＴＣＰ処理回路を具備する半導体集積回路。
【請求項８】
ＩＰ（Internet Protocol）処理を行う回路を更に具備する、請求項７記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ（Transmission Control Protocol）処理を行うためのＴＣＰ処理回路に関し、さらに、そのようなＴＣＰ処理回路を具備する半導体集積回路に関する。
【背景技術】
【０００２】
現在、インターネット、ＬＡＮ（Local Area Network）等において、ＴＣＰ／ＩＰと呼ばれる通信プロトコルの階層モデルが広く用いられている。図９は、ＴＣＰ／ＩＰ階層モデルの各レイヤとＩＳＯ（International Organization for Standardization）で制定されたＯＳＩ（Open Systems Interconnection）参照モデルの各レイヤとのおおよその対応関係を示す図である。
図９に示すように、ＴＣＰ／ＩＰ階層モデルのトランスポート層（ＯＳＩ参照モデルのトランスポート層にほぼ相当する）の具体的なプロトコルとしては、ＴＣＰ（Transmission Control Protocol）、ＵＤＰ（User Datagram Protocol）が用いられている。これら２つのプロトコルのうち、ＴＣＰでは、通信の信頼性・確実性を確保するため、確認応答、再送制御を行う。
【０００３】
具体的には、ＴＣＰによる通信において、送信側装置がパケットを送信すると、受信側装置は、受信したパケットのシーケンス番号を特定する情報を含む確認応答パケットを送信側装置に返送する。送信側装置は、確認応答パケットを受信することにより、パケットが受信側装置に到着したことを確認することができる。また、送信側装置は、所定の時間内に確認応答パケットを受信しなかった場合には、一度送信したパケットを再送することができる。
【０００４】
ところで、受信側装置が、連続するパケットを受信した場合に、これらのパケットの全てについて確認応答パケットを送信側装置に返送することは、必ずしも必要ではない。このような場合に、確認応答パケット数を削減し、確認応答パケットの作成／解析の処理オーバーヘッドを低減させることができるパケット送信方式が知られている（例えば、特許文献１参照）。
【０００５】
しかしながら、特許文献１に掲載されたパケット送信方式は、確認応答パケットを作成した送信バッファを送信先ごとに必要とするため、メモリの使用量が多くなってしまうという問題があった。また、このパケット送信方式は、確認応答パケットがネットワーク伝送路へ送出されているかを判定し、送出されていなければ送信バッファ内の確認応答パケットを更新し、更新中は確認応答パケットの送出を待つものである。このため、送信バッファ内の確認応答パケットを操作するための排他的な手順を必要とする。
【０００６】
【特許文献１】特開平６−１３２９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、上記の点に鑑み、本発明は、少ないメモリで実現可能であり、確認応答パケットを操作するための排他的な手順を不要とながら、確認応答パケット数を削減することができるＴＣＰ処理回路を提供することを目的とする。また、本発明は、そのようなＴＣＰ処理回路を具備する半導体集積回路を提供することを更なる目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明に係るＴＣＰ処理回路は、ＴＣＰ（Transmission Control Protocol）処理を行うための回路であって、コネクションを一意に識別するコネクション識別子、確認応答パケットの送出を要求するための確認応答パケット送出要求フラグ、コネクションの確認応答済み位置を表す情報、及び、コネクションの接続状態を表す情報をそれぞれ格納する複数のコネクション管理領域を記録するためのコネクション管理領域記録部と、確認応答パケットを下位レイヤに送出するためにバッファリングするためのバッファであって、確認応答パケットを格納するための領域及びコネクション識別子を格納するための領域を有する確認応答パケット送信バッファと、外部装置からのパケットを下位レイヤから受信したときに、受信したパケットに基づくデータを上位レイヤに送出するとともに、複数のコネクション管理領域の中のパケットに係るコネクションに関するコネクション管理領域に格納されている確認応答済み位置を表す情報及びコネクションの接続状態を表す情報を更新し、確認応答パケット送出要求フラグをセットするためのＴＣＰ受信処理部と、複数のコネクション管理領域の中の確認応答パケット送出要求フラグがセットされているコネクション管理領域に格納されているコネクションの確認応答済み位置を表す情報及びコネクションの接続状態を表す情報に基づいて、確認応答パケット送信バッファ内に確認応答パケットを作成するための確認応答パケット送出処理部とを具備する。
【０００９】
このＴＣＰ処理回路において、確認応答パケット送出処理部が、確認応答パケット送信バッファ内の確認応答パケットが下位レイヤによって外部装置に送信された後に、確認応答パケット送信バッファ内のコネクション識別子に基づいて複数のコネクション管理領域の中のパケットに係るコネクションに関するコネクション管理領域を特定し、特定したコネクション管理領域に格納されている確認応答パケット送出要求フラグをクリアすることとしても良い。
また、ＴＣＰ受信処理部が、複数のコネクション管理領域の中のパケットに係るコネクションに関するコネクション管理領域に格納されている確認応答パケット送出要求フラグの値にかかわらず、複数のコネクション管理領域の中のパケットに係るコネクションに関するコネクション管理領域に格納されている確認応答済み位置を表す情報を更新し、確認応答パケット送出要求フラグをセットすることとしても良い。
【００１０】
また、コネクション管理領域記録部及び確認応答パケット送信バッファが、１個のＲＡＭで構成されていることとしても良い。このとき、確認応答パケット送信バッファが、全てのプロトコルからなるツリーの全てのノードを一意に識別することができる識別子を格納するための領域を更に有することとしても良いし、確認応答パケット送信バッファであることを示す値を格納する領域を更に有することとしても良い。
【００１１】
また、本発明に係る半導体集積回路は、上記したＴＣＰ処理回路を具備する。
この半導体集積回路において、ＩＰ（Internet Protocol）処理を行う回路を更に具備することとしても良い。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しながら、本発明を実施するための最良の形態について説明する。なお、同一の構成要素には同一の参照符号を付して、説明を省略する。
図１は、本発明の一実施形態としてのＴＣＰ（Transmission Control Protocol）処理回路を用いたコンピュータの概要を示すブロック図である。このコンピュータ２は、ネットワークインタフェース層（図６参照）を担うネットワークインタフェース回路３と、インターネット層（図６参照）を担うＩＰ（Internet Protocol）処理回路４と、本発明の一実施形態としてトランスポート層（図６参照）を担うＴＣＰ処理回路５と、アプリケーション層（図６参照）を担うＣＰＵ６、メモリ７、表示部８、入力部９、ＨＤＤ（ハードディスクドライブ）１０、及び、インタフェース回路１１とを具備する。
このコンピュータ２は、図２に示すように、ネットワーク伝送路Ｎを介してコンピュータ１に接続されており、このコンピュータ１からＴＣＰによりデータを受信する。
【００１３】
再び図１を参照すると、ＨＤＤ１０には、ウェブブラウザプログラム、メールクライアントプログラム等が記録されており、ＣＰＵ６は、メモリ７を作業領域として使用しながら、これらのプログラムを実行する。
ＴＣＰ処理回路５は、インタフェース回路１１を介してＣＰＵ６に接続されており、ＣＰＵ６からの要求に応じて、データ送信側コンピュータ１との間のコネクションを確立し、データ送信側コンピュータ１からデータを受信して、ＣＰＵ６に送出する。
【００１４】
ＩＰ処理回路４は、ＴＣＰ処理回路５とネットワークインタフェース回路３との間に接続されており、ＴＣＰ処理回路５からパケットを受け取ってネットワークインタフェース回路３にデータグラムを送出し、ネットワークインタフェース回路３からデータグラムを受け取ってＴＣＰ処理回路５にパケットを送出する。
ネットワークインタフェース回路３は、ＩＰ処理回路４とネットワーク伝送路Ｎとの間に接続されており、ＩＰ処理回路４からデータグラムを受け取ってネットワーク伝送路Ｎに信号を送出し、ネットワーク伝送路Ｎから信号を受け取ってＩＰ処理回路４にデータグラムを送出する。
【００１５】
図３は、ＴＣＰ処理回路５の内部構成の概要を示すブロック図である。図３に示すように、ＴＣＰ処理回路５は、コネクション管理領域記録部２１と、確認応答パケット送信バッファ２２と、ＴＣＰ受信処理部２３と、確認応答パケット送出処理部２４とを具備する。
コネクション管理領域記録部２１は、ＴＣＰ処理回路５が確立した複数のコネクションに関する情報をそれぞれ格納する複数のコネクション管理領域を記録する。図４は、コネクション管理領域記録部２１の内容の例を示す図である。図４に示すように、コネクション管理領域の各々は、コネクション番号、確認応答パケットの送出を要求することを表す確認応答パケット送出要求フラグ、確認応答済み位置に関する情報（シーケンス番号）、及び、コネクションの接続状態を表す情報を含む。
【００１６】
再び図３を参照すると、確認応答パケット送信バッファ２２は、外部装置（ここでは、データ送信側コンピュータ１）からパケットを受信した場合に、ＩＰ処理回路４に送出するための確認応答パケットをバッファリングする。図５は、確認応答パケット送信バッファ２２の内容の例を示す図である。図５に示すように、確認応答パケット送信バッファ２２は、管理情報（ここでは、コネクションを一意に識別することができる識別子としてコネクション番号を用いることとする）及び確認応答パケットを記録する。なお、先に説明したコネクション管理領域記録部２１は、複数のコネクション管理領域を記録するが、確認応答パケット送信バッファ２２は、１つの管理情報及び確認応答パケットを記録する。
【００１７】
再び図３を参照すると、ＴＣＰ受信処理部２３は、外部装置（ここでは、データ送信側コンピュータ１）からパケットを受信し、必要に応じて、受信したパケットを正しい順番に整列し又は誤り訂正を行ってデータを復元し、上位レイヤ（ここでは、ＣＰＵ６等）に送出する。それとともに、ＴＣＰ受信処理部２３は、受信したパケットに係るコネクションに関するコネクション管理領域の内容を更新する。
【００１８】
具体的には、例えば、図７（ａ）に示すように、データ送信側コンピュータ１が、シーケンス番号「０」〜「９」のパケットをデータ受信側コンピュータ２に送信した場合について説明する。この場合、ＴＣＰ受信処理部２３は、シーケンス番号「０」〜「９」のパケットを下位レイヤ（ここでは、ＩＰ受信回路４）から受信し、パケットの順番が乱れ又はエラーが存在するときには、パケットを正しい順番に整列し又は誤り訂正を行ってデータを復元し、上位レイヤに送出する。それとともに、ＴＣＰ受信処理部２３は、受信したパケットに係るコネクションに関するコネクション管理領域内の接続状態の情報を更新する。さらに、ＴＣＰ受信処理部２３は、コネクション管理領域内の確認応答送出済み位置として「９」を書き込むとともに、確認応答パケット送出フラグをセットした後、確認応答パケット送出処理部２４を起動する。
【００１９】
確認応答パケット送出処理部２４は、確認応答パケット送出フラグがセットされているコネクション管理領域を確認すると、確認応答パケット送信バッファ２２の確保を試みる。このとき、これより前に受信したパケットに対する確認応答のために、確認応答パケット送信バッファ２２内に確認応答パケットが作成され、確認応答パケット送信バッファ２２が下位レイヤ（ここでは、ＩＰ処理回路４）によって使用されている場合、確認応答パケット送出処理部２４は、確認応答パケット送信バッファ２２を確保することができず、処理を終了する。
【００２０】
一方、確認応答パケット送信バッファ２２を確保することができた場合、確認応答パケット送出処理部２３は、コネクション番号を確認応答パケット送信バッファ２２内の管理領域に格納し、コネクション管理領域内の接続状態の情報及び確認応答済み位置（ここでは、「９」）に基づいて、確認応答パケットを確認応答パケット送信バッファ２２内に作成する。なお、確認応答済み位置の値（ここでは、「９」）をインクリメントした値（ここでは、「１０」）をアクノリッジ番号とする。このようにして確認応答パケット送信バッファ２２内に作成された確認応答パケットは、下位レイヤ（ここでは、ＩＰ処理回路４及びネットワークインタフェース回路３）によってデータ送信側コンピュータ１に送信される（図７（ｂ）参照）。
【００２１】
確認応答パケットがデータ送信側コンピュータ１に送信された後、確認応答パケット送出処理部２３は、確認応答パケット送信バッファ２２内の管理情報（コネクション番号）に基づいてコネクション管理領域を特定する。そして、コネクション管理領域内の確認応答送出済み位置が更新されていなければ、確認応答パケット送出処理部２３は、確認応答パケット送出要求フラグをクリアする。
一方、このとき、図７（ｃ）に示すように、データ送信側コンピュータ１が、シーケンス番号「１０」〜「１９」のパケットをデータ受信側コンピュータ２に送信していた場合、このコネクション管理領域内の確認応答済み位置（シーケンス番号）は、ＴＣＰ受信処理部２３によって「１９」に更新されている。そのため、確認応答パケット送出処理部２４は、アクノリッジ番号が「２０」である確認応答パケットを確認応答パケット送信バッファ２２内に作成する。この確認応答パケットは、下位レイヤ（ここでは、ＩＰ処理回路４及びネットワークインタフェース回路３）によってデータ送信側コンピュータ１に送信される（図７（ｄ）参照）。
上記した処理が終了した後、確認応答パケット送出処理部２４は、確認応答パケット送信バッファ２２を開放し、確認応答パケット送出処理部２４（自分自身）を起動し、次の確認応答パケット送出処理を行う。
【００２２】
ところで、図８（ａ）に示すように、データ送信側コンピュータ１が、シーケンス番号「０」〜「９」のパケットをデータ受信側コンピュータ２に送信すると、ＴＣＰ受信処理部２３は、コネクション管理領域内の確認応答送出済み位置として「９」を書き込む。しかし、確認応答パケット送信バッファ２２が確保できないという理由により、確認応答パケットが送信される前に、シーケンス番号「１０」〜「１９」のパケットが到着する場合がある（図８（ｂ）参照）。
この場合、ＴＣＰ受信処理部２３は、コネクション管理領域内の確認応答送出済み位置を「１９」に更新する。その後、確認応答パケット送信バッファ２２が確保できたときに、確認応答パケット送出処理部２４は、アクノリッジ番号「２０」の確認応答パケットを確認応答パケット送信バッファ２２内に作成する。この確認応答パケットは、下位レイヤによってデータ送信側コンピュータ１に送信される（図８（ｃ）参照）。
【００２３】
このように、ＴＣＰ処理回路５によれば、確認応答パケットを作成するために１個の確認応答パケット送信バッファ２２を具備すれば良いため、少ないメモリで実現することができる。
また、ＴＣＰ受信処理部２２は、確認応答パケットの送出状況にかかわらず、コネクション管理領域を更新することができるので、コネクション管理領域への排他制御を行う必要がなく、アクセスを単純にすることができる。
また、確認応答パケット送信バッファ２２を確保できたか否かによって、確認応答パケットがネットワーク伝送路Ｎに送出されているか否かを判断することができる。そのため、確認応答パケットの送出中は確認応答パケット送信バッファ２２が確保できず、他の全ての確認応答パケットの送出が遅らされるので、タイマやセマフォなどの追加資源を必要としない。
【００２４】
なお、コネクション管理領域記録部２１及び確認応答パケット送信バッファ２２は、１個のＲＡＭで構成することとしても良い。また、他のレイヤ（例えば、ＩＰ処理回路４等）のバッファ等をも併せて１個のＲＡＭで構成することとしても良い。
この場合、確認応答パケット送信バッファ２２の管理領域内に、コネクション番号とともに、コンピュータ２中に含まれる全てのプロトコルからなるツリー（図９参照）の全てのノードを一意に識別することができる識別子を併せて格納することとしても良い。この値により、確認応答パケット送信バッファ２２と他のメモリ領域（他のバッファ等）とを区別することとしても良い。
また、確認応答パケット送信バッファ２２の管理領域には、確認応答パケット作成用のバッファであることを示す値があっても良い。この値により、確認応答パケット送信バッファ２２と他のメモリ領域（他のバッファ等）とを区別することとしても良い。
【００２５】
また、確認応答パケット送出処理部２４が確認応答パケット送信バッファ２２を確保できなかったときに、確認応答パケット送信バッファ２２を要求するフラグをセットし、確認応答パケット送信バッファ２２が下位レイヤから解放された後に、このフラグを参照することにより、確認応答パケット送出処理部２４を起動するか否かを判断することとしても良い。
【００２６】
また、ＴＣＰ受信処理部２３及び確認応答パケット送出処理部２４は、ＣＰＵコアとファームウェアで構成することとしても良い。
また、ＴＣＰ処理回路５とＩＰ処理回路４とを１個の半導体チップ上に形成することとしても良い。
【産業上の利用可能性】
【００２７】
本発明は、ＴＣＰ処理を行うためのＴＣＰ処理回路において利用可能である。さらに、本発明は、そのようなＴＣＰ処理回路を用いた半導体集積回路において利用可能である。これらの回路は、コンピュータ、ＰＤＡ、携帯電話装置等において利用可能である。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態に係るＴＣＰ処理回路を用いたコンピュータの概要図。
【図２】図１のコンピュータ２を用いたシステムの構成例を示す図。
【図３】図１のＴＣＰ処理回路５の内部構成を示すブロック図。
【図４】図３のコネクション管理領域記録部２１の内容を示す図。
【図５】図３の確認応答パケット送信バッファ２２の内容を示す図。
【図６】図２のコンピュータ１、２間の通信を示す図。
【図７】図２のコンピュータ１、２間の通信を示す図。
【図８】図２のコンピュータ２内の全プロトコルのツリーの例を示す図。
【図９】ＯＳＩ参照モデルとＴＣＰ／ＩＰ階層モデルとの対応関係を示す図。
【符号の説明】
【００２９】
１、２  コンピュータ、３  ネットワークインタフェース回路、４  ＩＰ処理回路、５  ＴＣＰ処理回路、６  ＣＰＵ、７  メモリ、８  表示部、９  入力部、１０  ＨＤＤ、１１  インタフェース回路、２１  コネクション管理領域記録部、２２  確認応答パケット送信バッファ、２３  ＴＣＰ受信処理部、２４  確認応答パケット送出処理部
【図１】
2005278001.tif 000003
【図２】
2005278001.tif 000004
【図３】
2005278001.tif 000005
【図４】
2005278001.tif 000006
【図５】
2005278001.tif 000007
【図６】
2005278001.tif 000008
【図７】
2005278001.tif 000009
【図８】
2005278001.tif 000010
【図９】
2005278001.tif 000011