(57)【要約】【課題】データパケットを高速かつ安定してネットワークに送信することが可能であるネットワークインターフェース装置を提供する。【解決手段】ネットワークインターフェース装置１０１において、送信バッファメモリ１２４は、特定の通信コネクションのために送信されるＡＶストリームデータのパケットを格納し、送信ＦＩＦＯ１１４は、ＡＶストリームデータ以外の送信されるパケットを格納する。また、パケット分岐回路１２１は、受信されたパケットから、ＡＶストリームデータのパケットに対して返信されたＡＣＫパケットを分離し、ＡＣＫパケット解析回路１２２は、分離されたＡＣＫパケットから所定の情報を抽出し、送信バッファ制御回路１２３は、抽出された情報に基づき送信バッファメモリ１２４を制御する。【選択図】図２
2008113327.tif 000002
【特許請求の範囲】
【請求項１】
パケットを送受信するネットワークインターフェース装置において、
特定の通信コネクションのために送信される優先パケットを格納する第１の格納手段と、
上記優先パケット以外の送信される非優先パケットを格納する第２の格納手段と、
受信されたパケットから、上記優先パケットに対して返信されたＡＣＫパケットを分離するパケット分岐手段と、
上記分離されたＡＣＫパケットから所定の情報を抽出するＡＣＫパケット解析手段と、
上記抽出された情報に基づき上記第１の格納手段を制御する格納制御手段とを備えたことを特徴とするネットワークインターフェース装置。
【請求項２】
上記優先パケットは、ＡＶストリームデータのパケットであり、上記非優先パケットは、ＡＶストリームデータ以外の一般データ及び制御情報のパケットであることを特徴とする請求項１に記載のネットワークインターフェース装置。
【請求項３】
上記ネットワークインターフェース装置は、上記優先パケットと上記非優先パケットとの両方を送信するとき、上記優先パケットを優先的に送信するようにパケットの送信順序を並べ替えるパケット送信順序調停手段をさらに備えたことを特徴とする請求項１又は２記載のネットワークインターフェース装置。
【請求項４】
上記パケット分岐手段は、上記受信されたパケットのＩＰヘッダに含まれる発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号と、上記受信されたパケットのＴＣＰヘッダに含まれる発信元ポート番号及び宛先ポート番号とのうち少なくとも一部の情報に基づいて、上記優先パケットに対して返信されたＡＣＫパケットを上記受信されたパケットから識別して分離することを特徴とする請求項１乃至３のうちのいずれか１つに記載のネットワークインターフェース装置。
【請求項５】
上記第１の格納手段は、複数の優先パケットをそれぞれ格納する複数の領域を備え、
上記ＡＣＫパケット解析手段は、上記ＡＣＫパケットのＴＣＰヘッダに含まれる確認応答番号及びウインドウサイズの情報を抽出して上記格納制御手段に通知し、
上記格納制御手段は、上記第１の格納手段の各領域に特定の優先パケットが格納されているか否かと、上記各領域に格納された優先パケットが送信済みであるか否かとについての状態を管理する管理テーブルを有し、上記ＡＣＫパケット解析手段から転送された確認応答番号及びウインドウサイズの情報に基づいて上記管理テーブルを参照することにより、上記第１の格納手段の各領域に格納された特定の優先パケットを送信するか否かを決定するとともに、宛先への伝達が確認された優先パケットが格納されている上記第１の格納手段の領域を解放することを特徴とする請求項１乃至４のうちのいずれか１つに記載のネットワークインターフェース装置。
【請求項６】
上記ネットワークインターフェース装置は、複数の特定の通信コネクションのためにそれぞれ送信される複数の種類の優先パケットを処理するために、上記複数の特定の通信コネクション毎に上記第１の格納手段と上記格納制御手段とを備えたことを特徴とする請求項１乃至５のうちのいずれか１つに記載のネットワークインターフェース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパケットを、高速かつ安定してネットワークに送信することが可能であるネットワークインターフェース装置に関する。
【背景技術】
【０００２】
現在、図１に示すように、多くの情報端末装置（以下、「端末装置」という。）１００乃至６００が、ＬＡＮやインターネットなど規模に関わらず様々なネットワーク７００を通じて相互に接続されており、これら端末装置１００乃至６００間でデータを送受信する場合、データを所定の単位に分割して伝送を行うパケット通信がよく用いられている。
【０００３】
図１６は、従来技術に係る第１のネットワークインターフェース装置３０１を備えた端末装置３００の構成を示すブロック図である。ネットワーク７００を通じてパケット通信を行う際、従来のネットワークインターフェース装置３０１を内部に有する端末装置３００は、通信プロトコルに関する処理を主にメインＣＰＵ３０４で行っている。また、パケット通信の際には、端末装置間での信頼性の高い伝送を実現するために、ＯＳＩ７階層モデルにおける第４層のトランスポート層プロトコル及び第３層のネットワーク層プロトコルのＴＣＰ／ＩＰがよく用いられる。ＴＣＰは、データを受信する側の端末装置（宛先端末装置）から送信する側の端末装置（発信元端末装置）への伝達確認応答を必要とする通信プロトコルであり、伝達確認応答がされない場合には発信元端末装置は該当パケットの再送を行うので、確実な伝送が要求されるデータを伝送するときに適したものである。ＩＰは、ネットワークを通じてパケットを伝送する際に、経路探索や伝送路に応じたパケットの分割及び再構築を行う通信プロトコルであり、ネットワーク上のすべての端末装置には、端末装置を識別するためのＩＰアドレスが付加される。以下、図１に示すネットワークにおいて、図１６に示す端末装置３００からネットワーク７００を介して接続されている端末装置６００へＴＣＰ／ＩＰによりデータを送信する場合を例に、従来のネットワークインターフェース装置３０１のパケット送信処理手順の説明を行う。
【０００４】
図１６の端末装置３００は、ＬＡＮコントローラとして動作するネットワークインターフェース装置３０１と、プログラム及びデータを格納するシステムメモリ３０３と、プログラムに従ってデータを処理するメインＣＰＵ３０４と、アプリケーション処理回路３０５とを内部に備え、これらの構成要素はローカルバス３０２によって互いに接続されている。端末装置３００において、端末装置６００へデータを送信するとき、送信されるデータを含む入力信号はまず、アプリケーション処理回路３０５にてアプリケーション処理がなされ、アプリケーション処理回路３０５内のバッファメモリ３０６に格納される。アプリケーション処理回路３０５内のバッファメモリ３０６に格納されたデータは、メインＣＰＵ３０４によってローカルバス３０２経由で読み込まれて、システムメモリ３０３に格納される。システムメモリ３０３に格納されたデータは、再びメインＣＰＵ３０４によってローカルバス３０２経由で読み込まれて、第４層のＴＣＰプロトコル処理及び第３層のＩＰプロトコル処理が行われた後、システムメモリ３０３内の通信コネクション毎に用意された領域にパケットの形式で格納される。システムメモリ３０３に格納されたパケットは、メインＣＰＵ３０４により送信起動されて再び読み込まれると、ローカルバス３０２を経由してネットワークインターフェース装置３０１に転送される。ここで、メインＣＰＵ３０４は、システムメモリ３０３からネットワークインターフェース装置３０１へパケットを転送する際に、ＴＣＰにおけるパケットの再送に備えて、システムメモリ３０３にパケットのコピーを残しておく。ネットワークインターフェース装置３０１に転送されたパケットは、一時的に送信ＦＩＦＯメモリ装置（以下、「送信ＦＩＦＯ」という。）３１４に格納された後、データリンク層処理回路３１２にて第２層のデータリンク層処理が行われ、次いで物理層処理回路３１１にて第１層の物理層処理が行われ、最後にネットワーク７００を介して端末装置６００へ送信される。
【０００５】
データを受信する側の端末装置６００は、データパケットを誤りなく受信できたときに、そのデータパケットを送信した端末装置３００に対して伝達確認応答のためのＡＣＫパケットを送信する。ＡＣＫパケットの送信方法は実装に依存するが、２つのデータパケットに対する伝達確認応答を１つのＡＣＫパケットを返信することでまとめて行うのが一般的である。ＡＣＫパケットは、受信されたデータパケットを特定するための確認応答番号と、受信側の端末装置６００が受信可能なデータサイズを示すウインドウサイズの情報とを含む。
【０００６】
端末装置３００に到来して受信されたＡＣＫパケットは、ネットワークインターフェース装置３０１内の物理層処理回路３１１で物理層処理が行われ、次いでデータリンク層処理回路９１２でデータリンク層処理が行われ、一時的に受信ＦＩＦＯメモリ装置（以下、「受信ＦＩＦＯ」という。）３１３に格納された後、メインＣＰＵ３０４によって、ネットワークインターフェース装置３０１からローカルバス３０２経由でシステムメモリ３０３に格納される。その後、受信されたＡＣＫパケットは、再びメインＣＰＵ３０４によって読み込まれて処理される。ここで、メインＣＰＵ３０４は、端末装置６００へ伝送できたことがＡＣＫパケットにより確認されたデータパケットを、保存していたシステムメモリ３０３内から消去し、メモリ領域を解放する。そして、メインＣＰＵ３０４は、ＡＣＫパケットにより通知されたウインドウサイズ分を満たすように新たなデータパケットをシステムメモリ３０３から読み出して、読み出されたデータパケットを端末装置６００へ新たに送信する。一方、一定期間待ってもＡＣＫパケットが返信されてこない場合にはタイムアウトとなり、端末装置３００は、端末装置６００へのデータパケットの伝送に失敗したものと判断して、システムメモリ３０３に保存している該当データパケットを再送する。以上説明したように、図１６の従来技術に係るネットワークインターフェース装置３０１を備えた端末装置３００では、データパケットの送信処理とＡＣＫパケットの受信処理のほとんどがメインＣＰＵ３０４により行われ、その際に、ローカルバス３０２を経由したデータの転送が行われている。
【０００７】
一方、端末装置３００がデータパケットを受信する場合も、送信する場合と同様にその処理のほとんどがメインＣＰＵ３０４により行われ、ローカルバス３０２を経由してデータが転送される。端末装置３００にて受信されるパケットは、ネットワークインターフェース装置３０１内での処理を経て、ローカルバス３０２を経由してメインＣＰＵ３０４により読み込まれ、ＩＰプロトコル処理及びＴＣＰプロトコル処理等の通信プロトコル処理が行われる。通信プロトコル処理が終了したパケットは、システムメモリ３０３に格納され、ある一定量のデータが蓄積された後に、メインＣＰＵ３０４によって再び読み込まれ、ローカルバス３０２を経由してアプリケーション処理回路３０５に転送される。このため、データパケットの送信と受信を同時に行う場合には、メインＣＰＵ３０４の負荷や、パケット送受信処理が占有するローカルバス３０２の帯域幅は、大幅に増大することとなる。一般に、データパケットの送信と受信では、受信処理を優先させることが多いので、メインＣＰＵ３０４の処理能力やローカルバス３０２の帯域幅が小さいときには、データパケットの送信処理に遅延が発生し、データパケットを送信する時間間隔は長くなる。また、メインＣＰＵ３０４は、上記のパケット送受信処理の他にそれ以外の汎用処理も行うので、特に、家電製品などの組み込み用途向けのマイコンシステムなどでは、パケット送信処理に使用できるメインＣＰＵ３０４の処理能力やローカルバス３０２の帯域幅はさらに制限され、データの送信速度の低下はより顕著となる。
【０００８】
一方、パケット通信の際には、トランスポート層プロトコルとして、ＴＣＰと並んでＵＤＰもよく用いられる。ＵＤＰは、データを受信する端末装置から送信する端末装置への伝達確認応答を必要としない通信プロトコルであり、伝達確認応答により生じるオーバーヘッドがなく、プロトコル処理も簡素であるため、ＴＣＰと比較して伝送遅延が小さく、高速かつリアルタイム性が要求されるデータを伝送するときに適したものである。特許文献１によれば、オーディオ／ビジュアル（ＡＶ）ストリームなどのリアルタイム性が要求されるデータのパケットを伝送するために、ローカルバス３０２やメインＣＰＵ３０４を経由せずにアプリケーション処理回路３０５からＬＡＮコントローラに直接転送してＵＤＰ／ＩＰにより送信を行うデータ送受信装置もある。
【０００９】
図１７は、従来技術に係る第２のネットワークインターフェース装置４０１を備えた端末装置４００の構成を示すブロック図である。このネットワークインターフェース装置４０１は、特許文献１に記載されたデータ送受信装置に対応する構成を有している。なお、図１７において図１６と同じ構成要素については同じ符号を用い、説明を省略する。以下、図１に示すネットワークにおいて、図１７の端末装置４００からネットワーク７００により接続されている端末装置６００へＵＤＰ／ＩＰによりデータを送信する場合を例に、特許文献１に記載されたデータ送受信装置のパケット送信処理手順の説明を行う。
【００１０】
図１７の端末装置４００は、図１６のネットワークインターフェース装置３０１に代えて、ネットワークインターフェース装置４０１を備える。端末装置４００において、アプリケーション処理回路３０５にて処理されたＡＶストリームなどのリアルタイム性が要求されるデータは、アプリケーション処理回路３０５からメインＣＰＵ３０４及びローカルバス３０２を介さずに直接ネットワークインターフェース装置４０１内のパケット化回路４１１に転送される。このとき、データはアプリケーション処理回路３０５内のバッファメモリ３０６を介することなくパケット化回路４１１に転送されてもよく、図１７では説明の簡単化のためにバッファメモリ３０６の図示を省略する。パケット化回路４１１はメインＣＰＵ３０４の制御に従い、転送されたデータをパケット単位に分割し、分割されたデータに対してＵＤＰプロトコル処理、ＩＰプロトコル処理及びデータリンク層処理を実行した後、送信順序制御回路４１２へ転送する。一方、その他の制御情報などリアルタイム性が要求されないデータは、上述した図１６のネットワークインターフェース装置３０１と同様にして、メインＣＰＵ３０４によりパケット化された後でネットワークインターフェース装置４０１内の送信ＦＩＦＯ３１４に格納され、次いで送信ＦＩＦＯ３１４から送信順序制御回路４１２まで転送される。送信順序制御回路４１２において、パケット化回路４１１から転送されたリアルタイム性が要求されるパケットは、優先パケットとして取り扱われる一方、送信ＦＩＦＯ３１４から転送されたリアルタイム性が要求されないパケットは、非優先パケットとして取り扱われる。送信順序制御回路４１２は、優先パケットのデータに要求されている送信速度を満足するように、優先パケットと非優先パケットの送信順序を並べ替える。その後、パケットは、物理層処理回路３１１にて物理層処理がなされ、ネットワーク７００を介して端末装置６００へ送信される。
【００１１】
【特許文献１】特開２００３−２７３９２０号公報。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
図１７の構成のネットワークインターフェース装置４０１（すなわち特許文献１に開示された構成）では、図１６の構成のネットワークインターフェース装置３０１において課題となっていた、メインＣＰＵ３０４の処理能力やパケット送信処理に使用できるローカルバス３０２の帯域幅に起因するデータの送信速度の低下を回避することが可能である。しかしながら、特許文献１の構成では、高速に伝送されるべきＡＶストリームなどのデータのパケットは、ＵＤＰ／ＩＰにより伝送が行われるものとされているが、ＵＤＰ／ＩＰによる伝送はパケットの再送などによってデータの伝送品質を補償する手段を持たないので、より高品質なデータ伝送を実現するためには、これらデータのパケットはＴＣＰ／ＩＰにより伝送される必要がある。図１に示すネットワークにおいて、図１７の端末装置４００からネットワーク７００により接続されている端末装置６００へＴＣＰ／ＩＰによりデータを送信する場合には、以下の処理手順が必要となる。
【００１３】
端末装置４００はデータパケットを送信し、端末装置６００は、そのデータパケットを誤りなく受信できた場合に、端末装置４００に対してＡＣＫパケットを返信する。端末装置４００のメインＣＰＵ３０４は、図１６の従来例と同様の手順で、受信したＡＣＫパケットの処理を行う。ＡＣＫパケットを誤りなく受信したことによってデータパケットの伝達が確認できた場合、メインＣＰＵ３０４は、アプリケーション処理回路３０５に対してウインドウサイズ分の次のデータを送信するよう命令する。一方、パケットの受信誤りやネットワーク７００上でのパケットロスなどによってデータパケットの伝送に失敗し、一定期間待ってもＡＣＫパケットが返信されてこない場合には、メインＣＰＵ３０４は、アプリケーション処理回路３０５に対して、該当データパケットを再送するよう命令する。再送されるデータは、上述した図１７の構成におけるパケット送信手順と同様に、アプリケーション処理回路３０５からパケット化回路４１１に転送され、トランスポート層処理、ネットワーク層処理及びデータリンク層処理が再び行われた後、送信順序制御回路４１２及び物理層処理回路３１１を経て、ネットワーク７００を介して端末装置６００へ向けて再送される。
【００１４】
以上、図１７の構成のネットワークインターフェース装置４０１を内部に有する端末装置４００においてＴＣＰ／ＩＰによりデータの伝送を行う場合には、一度送信したデータパケットを伝達確認応答されるまで保持しておく機能をネットワークインターフェース装置４０１が持たないので、データパケットを再送するときには、データのパケット化など上位層の処理から再度行う必要がある。よって、図１６の従来例の構成のように送信したパケットを伝達確認されるまでシステムメモリ３０３に保持しておく方法と比較して、逆に処理効率が悪く、伝送遅延の増大や、データの送信速度の低下を招くという課題が生じる。また、端末装置４００において、データパケットの送受信を同時に行う場合、送信したデータパケットに対するＡＣＫパケットは、受信したデータパケットとともにメインＣＰＵ３０４によって逐次に処理される。ここで、端末装置４００は、ＡＣＫパケットによって、送信したデータパケットの伝達確認がされないと次のデータパケットを送信することができないので、メインＣＰＵ３０４の処理能力やパケット受信処理に使用できるローカルバス３０２の帯域幅によってもデータの送信速度が低下するという課題を有する。
【００１５】
本発明の目的は、以上の問題点を解決し、データのパケットを、高速かつ安定してネットワークに送信することが可能であるネットワークインターフェース装置を提供することにある。
【課題を解決するための手段】
【００１６】
以上説明した従来の課題を解決するために、本発明のパケットを送受信するネットワークインターフェース装置は、
特定の通信コネクションのために送信される優先パケットを格納する第１の格納手段と、
上記優先パケット以外の送信される非優先パケットを格納する第２の格納手段と、
受信されたパケットから、上記優先パケットに対して返信されたＡＣＫパケットを分離するパケット分岐手段と、
上記分離されたＡＣＫパケットから所定の情報を抽出するＡＣＫパケット解析手段と、
上記抽出された情報に基づき上記第１の格納手段を制御する格納制御手段とを備えたことを特徴とする。
【００１７】
上記ネットワークインターフェース装置において、上記優先パケットは、ＡＶストリームデータのパケットであり、上記非優先パケットは、ＡＶストリームデータ以外の一般データ及び制御情報のパケットであることを特徴とする。
【００１８】
また、上記ネットワークインターフェース装置は、上記優先パケットと上記非優先パケットとの両方を送信するとき、上記優先パケットを優先的に送信するようにパケットの送信順序を並べ替えるパケット送信順序調停手段をさらに備えたことを特徴とする。
【００１９】
さらに、上記ネットワークインターフェース装置において、上記パケット分岐手段は、上記受信されたパケットのＩＰヘッダに含まれる発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号と、上記受信されたパケットのＴＣＰヘッダに含まれる発信元ポート番号及び宛先ポート番号とのうち少なくとも一部の情報に基づいて、上記優先パケットに対して返信されたＡＣＫパケットを上記受信されたパケットから識別して分離することを特徴とする。
【００２０】
またさらに、上記ネットワークインターフェース装置において、
上記第１の格納手段は、複数の優先パケットをそれぞれ格納する複数の領域を備え、
上記ＡＣＫパケット解析手段は、上記ＡＣＫパケットのＴＣＰヘッダに含まれる確認応答番号及びウインドウサイズの情報を抽出して上記格納制御手段に通知し、
上記格納制御手段は、上記第１の格納手段の各領域に特定の優先パケットが格納されているか否かと、上記各領域に格納された優先パケットが送信済みであるか否かとについての状態を管理する管理テーブルを有し、上記ＡＣＫパケット解析手段から転送された確認応答番号及びウインドウサイズの情報に基づいて上記管理テーブルを参照することにより、上記第１の格納手段の各領域に格納された特定の優先パケットを送信するか否かを決定するとともに、宛先への伝達が確認された優先パケットが格納されている上記第１の格納手段の領域を解放することを特徴とする。
【００２１】
また、上記ネットワークインターフェース装置は、複数の特定の通信コネクションのためにそれぞれ送信される複数の種類の優先パケットを処理するために、上記複数の特定の通信コネクション毎に上記第１の格納手段と上記格納制御手段とを備えたことを特徴とする。
【発明の効果】
【００２２】
本発明によって、ＴＣＰ／ＩＰにより送信されるデータパケットについて、メインＣＰＵの処理能力や、パケット送受信処理に使用できるローカルバスの帯域幅が制限されることに起因する送信速度の低下がなくなり、また、大容量のデータであっても、メインＣＰＵの負荷を増大させずに処理することが可能である。加えて、ＡＣＫパケットをメインＣＰＵではなくネットワークインターフェース装置内の専用手段によって処理し、送信バッファメモリに格納しているパケットを送信もしくは再送することにより、端末装置内の処理遅延時間を短縮することが可能である。以上の効果によれば、本発明におけるネットワークインターフェース装置を用いることにより高速かつ安定したデータの送信が可能となる。
【発明を実施するための最良の形態】
【００２３】
以下に、本発明の実施形態について、図面を参照しながら説明する。なお、図面の全体にわたり、同様の機能を有する構成要素には同一の符号を付与し、その繰り返しの説明は省略する。
【００２４】
第１の実施形態．
図２は、本発明の第１の実施形態に係るネットワークインターフェース装置１０１を備えた端末装置１００の構成を示すブロック図である。以下、図１に示すネットワークにおいて、図２のネットワークインターフェース装置１０１を内部に有する端末装置１００から、ネットワーク７００により接続されている端末装置６００へ、ＴＣＰ／ＩＰによりＡＶストリームデータを送信する場合を例に、本発明の第１の実施形態におけるネットワークインターフェース装置１０１のパケット送信処理手順の説明を行う。
【００２５】
図２の端末装置１００は、ネットワーク７００を介して通信する機能を備えたオーディオ／ビジュアル（ＡＶ）機器やパーソナルコンピュータなどとして構成される。端末装置１００は、ＬＡＮコントローラとして動作するネットワークインターフェース装置１０１と、プログラム及びデータを格納するシステムメモリ１０３と、プログラムに従ってデータを処理するメインＣＰＵ１０４と、アプリケーション処理回路１０５とを内部に備え、これらの構成要素はローカルバス１０２によって互いに接続されている。ネットワークインターフェース装置１０１は、図１６における構成要素３１１，３１２，３１３，３１４と同様の物理層処理回路１１１、データリンク層処理回路１１２、受信ＦＩＦＯ１１３及び送信ＦＩＦＯ１１４を備えたことに加えて、リアルタイム性が要求される特定の通信コネクションのためのデータの送信処理を実行するために設けられたパケット化回路１１５及び送信バッファメモリ１２４と、送信バッファメモリ１２４から転送されるデータパケットと送信ＦＩＦＯ１１４から転送されるデータパケットとの送信順序を並べ替えてデータリンク層処理回路１１２に転送するパケット送信順序調停回路１２５と、送信バッファメモリ１２４を介して送信されたデータパケットに関して受信された確認応答（ＡＣＫ）パケットを処理するために設けられたパケット分岐回路１２１、ＡＣＫパケット解析回路１２２、送信バッファ制御回路１２３及びタイマ回路１２６とを備える。
【００２６】
本実施形態のネットワークインターフェース装置１０１によれば、特定の通信コネクションのために送信されるＡＶストリームデータのパケットを格納する送信バッファメモリ１２４と、ＡＶストリームデータ以外の送信されるパケットを格納する送信ＦＩＦＯ１１４と、受信されたパケットから、ＡＶストリームデータのパケットに対して返信されたＡＣＫパケットを分離するパケット分岐回路１２１と、分離されたＡＣＫパケットから所定の情報を抽出するＡＣＫパケット解析回路１２２と、抽出された情報に基づき送信バッファメモリ１２４を制御する送信バッファ制御回路１２３とを備えたことを特徴とする。
【００２７】
以下、本実施形態の端末装置１００の動作を説明する。図３は、図２のネットワークインターフェース装置１０１内におけるデータパケットの送信処理手順の概念を示す図である。図２において、端末装置１００のアプリケーション処理回路１０５には、送信すべき入力信号としてＡＶストリームデータなどのリアルタイム性を必要とする特定の通信コネクションのためのデータが入力される。アプリケーション処理回路１０５は、送信すべきＡＶストリームデータに対して、アナログ信号からデジタル信号への変換やデータの圧縮及び符号化などの処理を実行し、処理後のＡＶストリームデータを、ローカルバス１０２を経由せずに直接にネットワークインターフェース装置１０１内のパケット化回路１１５に転送する。パケット化回路１１５はローカルバス１０２を介してメインＣＰＵ１０４に接続され、メインＣＰＵ３０４の制御に従って、アプリケーション処理回路１０５から転送されたデータをパケット単位に分割し、分割されたデータに対してＴＣＰプロトコル処理、ＩＰプロトコル処理及びデータリンク層処理を実行する。詳しくは、パケット化回路１１５は、アプリケーション処理回路１０５から転送された複数パケット分に相当するサイズを有するＡＶストリームデータをパケット単位に分割し、分割された各パケット単位のデータにＴＣＰヘッダＨ３、ＩＰヘッダＨ２及びＭＡＣヘッダＨ１をそれぞれ付加する。これらのヘッダＨ１，Ｈ２，Ｈ３の情報は、予め、ローカルバス１０２を介してメインＣＰＵ１０４から取得されている。データは、次いで、ＴＣＰヘッダＨ３、ＩＰヘッダＨ２及びＭＡＣヘッダＨ１までが付加されたデータパケットの形式で送信バッファメモリ１２４に転送されて格納される。送信バッファメモリ１２４は、最大パケット長単位のサイズをそれぞれ有する複数の領域に分割されていて、これらの領域にデータパケットがそれぞれ格納される。
【００２８】
パケット化回路１１５を設けることに代えて、データのパケット化は、送信バッファメモリ１２４において実行してもよい。図４は、図２のパケット化回路１１５及び送信バッファメモリ１２４に代えて設けられる、変形例の送信バッファメモリ１２４によるパケット化動作を示す概念図である。このとき、送信バッファメモリ１２４は、所定の最大パケット長単位のサイズをそれぞれ有する複数の領域に分割されていて、分割された各領域の先頭には、予めメインＣＰＵ１０４から取得されたＴＣＰヘッダＨ３、ＩＰヘッダＨ２及びＭＡＣヘッダＨ１の情報がそれぞれ格納されている。アプリケーション処理回路１０５から転送された、例えば４パケット分の長さからなるＡＶストリームデータはパケット単位Ｄ０〜Ｄ３に分割され、送信バッファメモリ１２４内の各領域に予め格納されているヘッダ部分の後ろに、順に格納される。このように、ＡＶストリームデータをパケット化するためには、データを送信バッファメモリ１２４に格納する際に上記の手順によりパケット化を実行してもよい。また、さらなる代替方法として、ＴＣＰヘッダＨ３、ＩＰヘッダＨ２及びＭＡＣヘッダＨ１の付加までの処理をアプリケーション処理回路１０５で行い、パケット化されたデータを直接に送信バッファメモリ１２４に転送してもよい。
【００２９】
図５は、図２のネットワークインターフェース装置１０１により送受信されるデータパケットの構成を示すデータフォーマットである。図５において、ＴＣＰヘッダＨ３はＲＦＣ７９３に定義され、ＩＰヘッダＨ２はＩＰｖ４と呼ばれる形式のものでありＲＦＣ７９１に定義されているものである。また、ＭＡＣヘッダＨ１の形式は、ネットワーク７００の通信媒体により異なる。ＩＰヘッダＨ２において、発信元端末装置ＩＰアドレス及び宛先端末装置ＩＰアドレスは、ネットワーク７００内で端末装置を識別するために付与され、プロトコル番号は、トランスポート層プロトコルを識別するために付与されている。ＴＣＰヘッダＨ３において、発信元ポート番号及び宛先ポート番号は、アプリケーションやサービスを識別するために付与されている。
【００３０】
再び図２を参照すると、アプリケーション処理回路１０５によって処理されたデータを、パケット化回路１１５を介して送信バッファメモリ１２４へ格納するタイミングは、送信バッファメモリ１２４に接続され、かつローカルバス１０２を介してアプリケーション処理回路１０５に接続された送信バッファ制御回路１２３により決定される。送信バッファ制御回路１２３はまた、送信バッファメモリ１２４に格納されたデータパケットが宛先の端末装置６００に送信されて、このデータパケットに関して端末装置６００からＡＣＫパケットが受信されたときにこのＡＣＫパケットを識別するために（すなわち、ＡＶストリームデータの通信コネクションを特定するために）、図５のＩＰヘッダＨ２に含まれる発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号と、図５のＴＣＰヘッダＨ３に含まれる発信元ポート番号及び宛先ポート番号とのうち一部又はすべてを、ローカルバス１０２を介してパケット分岐回路１２１に予め通知しておく。この通知機能は、メインＣＰＵ１０４が直接にパケット分岐回路１２１に対して行ってもよい。送信バッファ制御回路１２３はさらに、送信バッファメモリ１２４に格納されているＡＶストリームデータのパケットに対する送信起動を実行し（すなわち、パケットを送信し、また再送するように指示し）、これにより、送信されるパケット数をパケット送信順序調停回路１２５に通知するとともに、そのパケット数の分のデータパケットを送信バッファメモリ１２４からパケット送信順序調停回路１２５に転送させる。送信バッファ制御回路１２３が送信バッファメモリ１２４内のパケットを制御する動作については、後でさらに詳細に説明する。パケット送信順序調停回路１２５には、上述の処理を経て送信バッファメモリ１２４から転送されたＡＶストリームデータのパケットと、図１６の従来例における手順と同様にメインＣＰＵ１０４による処理を経て送信ＦＩＦＯ１１４から転送された制御情報など一般データのパケットとが入力される。ここで、パケット送信順序調停回路１２５は、送信するように指示されたパケット数の分のＡＶストリームデータのパケットを優先的に連続して送信できるよう、入力されたパケットの送信順序を並べ替えてデータリンク層処理回路１１２に転送する。その後、送信順序が並べ替えられたパケットは、データリンク層処理回路１１２にてデータリンク層処理が行われ、物理層処理回路１１１にて物理層処理が行われ、ネットワーク７００を介して端末装置６００に送信される。これにより、発信元となる端末装置１００から宛先となる端末装置６００に、ＡＶストリームデータなどのリアルタイム性が要求されるデータパケットを送信することができる。
【００３１】
一方、端末装置１００から送信されたＡＶストリームデータのパケットを受信した端末装置６００はパケットの受信処理を行い、パケットを誤りなく受信できた場合には、端末装置１００に対して伝達確認応答のためのＡＣＫパケットを返信する。
【００３２】
端末装置１００は、当該端末装置１００を宛先として送信されたデータパケットや、端末装置６００から端末装置１００に返信されたＡＣＫパケットを受信する。受信されたパケットは、物理層処理回路１１１にて物理層処理が行われ、データリンク層処理回路１１２にてデータリンク層処理が行われ、パケット分岐回路１２１に転送される。図５のデータフォーマットを参照して、パケット分岐回路１２１の処理を説明する。パケット分岐回路１２１は、データリンク層処理回路１１２により転送された図５のデータフォーマットを有する受信パケットから、ＩＰヘッダＨ２に含まれる発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号と、ＴＣＰヘッダＨ３に含まれる発信元ポート番号及び宛先ポート番号とのうち一部又はすべての情報を読み出して、この読み出された情報を、送信バッファ制御回路１２３によって予め通知された情報と比較することによって、受信されたパケットが、送信バッファメモリ１２４を用いて送信したＡＶストリームデータに対するＡＣＫパケットであるか否かを識別する。パケット分岐回路１２１は、該当するＡＣＫパケットをＡＣＫパケット解析回路１２２に分離させて転送し、その他のパケットを受信ＦＩＦＯ１１３に転送する。ここで、受信したパケットが、端末装置１００から送信したＡＶストリームデータのパケットに対するＡＣＫパケットである場合、受信したパケットの伝送方向は送信したＡＶストリームデータのパケットの伝送方向と逆になるので、受信したパケットの発信元端末装置ＩＰアドレスは端末装置６００のＩＰアドレスであり、宛先端末装置ＩＰアドレスは端末装置１００のＩＰアドレスであり、発信元ポート番号は端末装置６００におけるポート番号であり、宛先ポート番号は端末装置１００におけるポート番号である。受信ＦＩＦＯ１１３に転送されるパケットに係るこれ以降の処理は、図１６の従来例の構成と同様にメインＣＰＵ１０４によって行われる。一方、ＡＣＫパケット解析回路１２２は、パケット分岐回路１２２から転送されたＡＣＫパケットから、図５に示すＴＣＰヘッダ内の、次に送信すべきデータパケットの番号を示す確認応答番号の情報と、端末装置６００が受信可能なデータサイズを示すウインドウサイズの情報とを抽出し、これらの情報を送信バッファ制御回路１２３に転送する。
【００３３】
図６は、送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の動作を説明するための概念図である。送信バッファ制御回路１２３は、最大パケット長単位に分割された送信バッファメモリ１２４の各領域を管理する。詳しくは、この管理処理は、送信バッファメモリ１２４の各領域に特定のパケットが格納されているか否かと、各領域に格納されたパケットが送信済みであるか否かとについての状態を管理することを含み、管理処理において、送信バッファ制御回路１２３は、ＡＣＫパケット解析回路１２２から転送された確認応答番号とウインドウサイズの情報に基づいて管理テーブル１２７を参照することにより、送信バッファメモリ１２４に格納されているＡＶストリームデータのパケットのうちの送信される（又は再送される）パケット数を決定し、決定されたパケット数の分のデータパケットを送信させるように送信バッファメモリ１２４に指示し、伝達確認応答されたデータパケットが格納されている送信バッファメモリ１２４内の領域を解放し、解放された領域に新たなデータパケットを格納させる。上記各処理を行うために、送信バッファ制御回路１２３は、図６に示すような、送信バッファメモリ１２４の各領域の状態を管理する管理テーブル１２７を持つ。管理テーブル１２７は、分割された送信バッファメモリ１２４の各領域の領域番号Ａ０乃至Ａ１９と、各領域に格納されているパケットのシーケンス番号と、宛先端末装置に送信済みであって、その宛先端末装置からの伝達確認応答を待機中のパケットのうちの先頭のパケットが格納されている領域を示す確認応答待ち位置ポインタＰ１と、次に送信すべきパケット（すなわち、送信バッファメモリ１２４に格納されて、まだ１度も送信されていないパケット）のうちの先頭のパケットが格納されている領域を示す次回送信位置ポインタＰ２と、次に送信バッファメモリ１２４へパケットを格納するときの先頭となる領域を示す格納開始位置ポインタＰ３との情報を含む。各領域番号Ａ０乃至Ａ１９は、送信バッファメモリ１２４の各領域の先頭アドレスと１対１に対応している。送信バッファメモリ１２４はリングバッファと呼ばれる形式であり、図６に示すように送信バッファメモリ１２４が領域番号Ａ０からＡ１９まで２０個の領域に分割されている場合、送信バッファメモリ１２４の最後尾である領域番号Ａ１９の領域がアクセスされた次は、送信バッファメモリ１２４の先頭である領域番号Ａ０の領域がアクセスされる。
【００３４】
図６は、ある時点での送信バッファメモリ１２４の状態も併せて示している。ここでは、シーケンス番号Ｓ１からＳ１８を有するデータパケットが、送信バッファメモリ１２４内の領域番号Ａ１からＡ１８の領域に格納されている。このうち、シーケンス番号Ｓ１乃至Ｓ１５のパケットは、既に少なくとも一度は端末装置６００に送信されていて、ＡＣＫパケットにより伝達確認応答されるまで送信バッファメモリ１２４に保持されているパケットである。一方、シーケンス番号Ｓ１６乃至Ｓ１８のパケットは、初回の送信を待っているパケットである。このとき、送信バッファ制御回路１２３に含まれる管理テーブル１２７内で、確認応答待ち位置ポインタＰ１は、確認応答を待つパケットの先頭であるシーケンス番号Ｓ１のパケットが格納されている領域番号Ａ１を特定し、次回送信位置ポインタＰ２は、初回の送信を待つパケットの先頭であるシーケンス番号Ｓ１６のパケットが格納されている領域番号Ａ１６を特定し、格納開始位置ポインタＰ３は、パケットが格納されていない領域の先頭である領域番号Ａ１９を特定することとなる。
【００３５】
ここで、受信したＡＣＫパケットにより通知されたウインドウサイズが最大パケット長のパケットで１５パケット分であり、確認応答番号がシーケンス番号Ｓ３であったとする。まず、送信バッファ制御回路１２３は、通知された確認応答番号が、確認応答待ち位置ポインタＰ１が示す領域にあるパケットのシーケンス番号より大きく、かつ、次回送信位置ポインタＰ２が示す領域にあるパケットのシーケンス番号以下であることを確認する。これは、伝達確認応答を待つデータパケットに対するＡＣＫパケットか否かを判別するためであり、パケット伝送経路であるネットワーク７００の状態などに起因して受信順序が入れ替わり不要となったＡＣＫパケットや、端末装置６００が再送したことによって重複しているＡＣＫパケットを破棄する。上記の例では、ＡＣＫパケットにより通知された確認応答番号はＳ３であり、確認応答待ち位置ポインタＰ１が示す領域にあるパケットのシーケンス番号はＳ１であり、次回送信位置ポインタＰ２が示す領域にあるパケットのシーケンス番号はＳ１６であるので、受信したＡＣＫパケットは、送信バッファメモリ１２４を介して送信されて伝達確認応答を待機中であるデータパケットに対するＡＣＫパケットであると判別される。
【００３６】
受信したＡＣＫパケットが、送信バッファメモリ１２４を介して送信されて伝達確認応答を待機中であるデータパケットに対するものであると判別された場合、送信バッファ制御回路１２３は、通知された確認応答番号とウインドウサイズに基づき、送信バッファメモリ１２４に格納されているＡＶストリームデータのパケットのうちの送信されるパケット数の決定と、送信バッファメモリ１２４からパケット送信順序調停回路１２５へのパケットの転送を以下の手順で行う。端末装置６００は、端末装置１００が次に送信すべきデータパケットのシーケンス番号を確認応答番号として端末装置１００に通知している。これを言い換えると、確認応答番号は、端末装置６００が次に受信したいパケットのシーケンス番号を示したものである。確認応答番号としてシーケンス番号Ｓ３が通知された場合、既に送信したシーケンス番号Ｓ１とＳ２のパケットは、端末装置６００への伝達が確認できたことになる。一方、シーケンス番号Ｓ３からＳ１５のパケットは、端末装置６００への伝達が未だ確認できていない。送信バッファ制御回路１２３は、通知された確認応答番号とウインドウサイズに基づき、送信すべきパケット数を決定する。ここで、ウインドウサイズは、ＡＣＫパケットによる伝達確認応答を待たずに送信できるデータのサイズを示したものであるので、上記の例の場合、通知されたウインドウサイズが１５パケット分であったとしても、新たに送信できるのは、伝達確認応答がされていない１３パケット分を除く２パケット分となる。よって、送信バッファ制御回路１２３は、管理テーブル１２７の次回送信位置ポインタＰ２が示す領域から２パケット分の領域に格納されている、シーケンス番号Ｓ１６とＳ１７のパケットに対して送信起動を実行し、パケットは、送信バッファメモリ１２４からパケット送信順序調停回路１２５に転送される。一般に、確認応答番号、シーケンス番号、ウインドウサイズはバイト単位で表現されるので、送信可能なデータバイト数は、ウインドウサイズから、次回送信位置ポインタＰ２が示す領域に格納されているパケットのシーケンス番号と確認応答番号が示すシーケンス番号の差を引いた数で求めることができる。つまり、新たに送信できるのは、次回送信位置ポインタＰ２が示す領域に格納されているパケットのシーケンス番号に対応するデータから、確認応答番号が示すシーケンス番号とウインドウサイズとの和で示されるシーケンス番号未満のシーケンス番号に対応するデータまでである。送信バッファメモリ１２４内のデータはバイト単位ではなく最大パケット長単位で管理されているので、送信バッファ制御回路１２３は、シーケンス番号と最大パケット長に基づいて送信パケット数を決定することとなる。パケット転送後、管理テープル１２７の次回送信位置ポインタＰ２は、シーケンス番号Ｓ１８のパケットが格納されている領域番号Ａ１８に対応する場所を特定するように変化し、送信したデータパケットに対するＡＣＫパケットを待機するためのタイマ回路１２６がリセットされて、計時を０から開始する。送信バッファ制御回路１２３は、送信されるパケット数をパケット送信順序調停回路１２５に通知し、パケット送信順序調停回路１２５は、通知されたパケット数の、送信バッファメモリ１２４から転送されたパケットを連続的に優先して送信できるようにする。
【００３７】
次に、送信バッファ制御回路１２３は、伝達確認応答されたＡＶストリームデータのパケットが格納されている送信バッファメモリ１２４内の領域の解放を行う。通知された確認応答番号Ｓ３によって、端末装置６００へ伝達されたことが確認できたシーケンス番号Ｓ１とＳ２のパケットが格納されていた領域は解放される。領域の解放は、管理テーブル１２７の確認応答待ち位置ポインタＰ１を、確認応答番号により通知されたシーケンス番号のパケットが格納されている場所を特定するように変化させることにより行う。上記の例では、確認応答番号としてシーケンス番号Ｓ３が通知されているので、送信バッファメモリ１２４の領域番号Ａ１を特定していた確認応答待ち位置ポインタＰ１を、シーケンス番号Ｓ３のパケットが格納されている領域番号Ａ３を特定するように変化させる。
【００３８】
また、ＡＣＫパケットが所定時間内に到着せずにＡＣＫパケット待機時間がタイムアウトとなった場合、送信バッファ制御回路１２３は、確認応答待ち位置ポインタＰ１が示す領域に格納されているパケットから次回送信位置ポインタＰ２が示す領域の１つ前に示す領域に格納されているパケットまでに対して再度送信起動を実行し、パケットの再送を行う。パケット再送時には、ＡＣＫパケット待機時間を計時するためのタイマ１２６はリセットされる。
【００３９】
送信バッファ制御回路１２３は、データ送信中、管理テーブル１２７の確認応答待ち位置ポインタＰ１と格納開始位置ポインタＰ３とを常に比較している。図６に示すように、データパケットが格納されている送信バッファメモリ１２４の領域は、確認応答待ち位置ポインタＰ１により特定される領域から始まる。確認応答待ち位置ポインタＰ１が特定する場所と格納開始位置ポインタＰ３が特定する場所が異なれば、送信バッファ制御回路１２３は、送信バッファメモリ１２４に空き領域があると判断し、アプリケーション処理回路１０５から送信バッファメモリ１２４へのデータの格納を許可し、ローカルバス１０２を介してアプリケーション処理回路１０５にデータの転送を指示する。データが格納された場合、それに応じて格納開始位置ポインタＰ３が特定する場所も更新される。一方、２つのポインタＰ１，Ｐ３により特定される場所が一致し、かつ、次回送信位置ポインタＰ２により特定される場所がそれに一致しなければ、送信バッファ制御回路１２３は、送信バッファメモリ１２４に空き領域がないと判断し、送信バッファメモリ１２４のオーバーフローを防ぐため、アプリケーション処理回路１０５からのデータの格納を受け付けないようにする。このため、管理テーブル１２７の確認応答待ち位置ポインタＰ１を、確認応答番号により通知されたシーケンス番号のパケットが格納されている場所を特定するように変化させることで、確認応答されたパケットが格納されていた領域へのデータの上書きを許可し、結果として、送信バッファメモリ１２４の領域を解放したことと同じになる。また、３つのポインタＰ１，Ｐ２，Ｐ３により特定される場所がすべて一致する場合には、送信バッファメモリ１２４は空の状態であるので、データの格納を許可する。
【００４０】
以上のように、送信バッファ制御回路１２３は、送信バッファメモリ１２４の状態を管理する管理テーブル１２７を用いて、送信バッファメモリ１２４に格納されているＡＶストリームデータのパケットのうちの送信されるパケット数の決定と、伝達確認応答されたＡＶストリームデータのパケットが格納されている送信バッファメモリ１２４内の領域の解放とを実行する。図７は、図６の状態からデータパケットＳ１，Ｓ２を送信した後の送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示す概念図である。図７は、送信バッファ制御回路１２３が、ＡＣＫパケットにより通知された情報に基づき、図６の状態にあった送信バッファメモリ１２４を制御した後の状態を示している。送信バッファ制御回路１２３は、送信バッファメモリ１２４に格納されているＡＶストリームデータのパケットのうちの送信されるパケット数を決定する処理と、伝達確認応答されたＡＶストリームデータのパケットが格納されている送信バッファメモリ１２４内の領域を解放する処理とを順に実行してもよく、それに代わって２つの処理を並列に実行してもよい。
【００４１】
以上説明した送信バッファ制御回路１２３による処理を、図１１乃至図１４のフローチャートに示す。図１１乃至図１３は、送信バッファ制御回路１２３によって実行される第１の送信バッファ制御処理を示すフローチャートである。この第１の送信バッファ制御処理では、送信バッファメモリ１２４に格納されたデータパケットの送信及び再送と、領域の解放とを行う。図１１のステップＳ１において、送信バッファ制御回路１２３は、ＡＣＫパケットが端末装置１００に到着し、そのＡＣＫパケット内の確認応答番号及びウィンドウサイズの情報がＡＣＫパケット解析回路１２２から転送されたか否かを判断し、ＹＥＳのときはステップＳ２に進み、ＮＯのときはステップＳ９に進む。ステップＳ２において、確認応答番号が、確認応答待ち位置ポインタＰ１によって示される領域にあるパケットのシーケンス番号より大きいか否かが判断され、ステップＳ３において、確認応答番号が、次回送信位置ポインタＰ２によって示される領域にあるパケットのシーケンス番号以下であるか否かが判断され、ステップＳ２，Ｓ３の両方ともＹＥＳであるときはステップＳ４のパケット送信処理を実行し、その少なくとも一方がＮＯであるときはステップＳ８に進む。
【００４２】
図１２は、パケット送信処理Ｓ４のサブルーチンを示すフローチャートである。図１２のステップＳ１１において、送信バッファ制御回路１２３は、ポインタＰ１，Ｐ２，Ｐ３が示す領域がすべて一致するか否かを判断し、ＹＥＳのときは図１１のフローに戻り、ＮＯのときはステップＳ１２に進む。前述のように、送信バッファメモリ１２４が空の場合は、３つのポインタＰ１，Ｐ２，Ｐ３によって特定される場所が一致する。ステップＳ１２において、送信すべきパケット数を示すパラメータＮを０に初期化し、送信されるバイト数を示すパラメータＢを０に初期化する。次いでステップＳ１３において、受信されたＡＣＫパケットによって通知されたウィンドウサイズと確認応答番号との和が、次回送信位置ポインタＰ２により示される領域にあるパケットのシーケンス番号と送信されるバイト数のパラメータＢとの和未満であるか否かが判断され、ＹＥＳのときはステップＳ１６に進み、ＮＯのときはステップＳ１４に進む。図１３において、ウィンドウサイズと、確認応答番号と、シーケンス番号と、送信されるバイト数のパラメータＢとは、バイトを単位としてそれぞれ表される。ステップＳ１４において、格納開始位置ポインタＰ３が示す領域は、次回送信位置ポインタＰ２が示す領域のＮ個分後ろの領域に一致するか否かが判断され、ＹＥＳのときはステップＳ１６に進み、ＮＯのときはステップＳ１５に進む。ステップＳ１４がＹＥＳである場合には、送信バッファメモリ１２４内の未送信のデータパケットをすべて送信する。ステップＳ１５において、送信すべきパケット数を示すパラメータＮを１だけインクリメントし、送信されるバイト数を示すパラメータＢを、送信バッファメモリ１２４の各領域のサイズに相当する最大パケット長のバイト数だけインクリメントし、ステップＳ１３に戻る。送信すべきパケット数を示すパラメータＮ及び送信されるバイト数を示すパラメータＢが確定するまで、ステップＳ１３乃至Ｓ１５を繰り返す。次いでステップＳ１６において、送信するパケット数Ｎをパケット送信順序調停回路１２５に通知する。次いでステップＳ１７において、送信すべきパケット数を示すパラメータＮが０であるか否かを判断し、ＹＥＳのときはステップＳ２１に進み、ＮＯのときはステップＳ１８に進む。ステップＳ１８では、次回送信位置ポインタＰ２が示す領域のパケットを送信するために、送信バッファメモリ１２４からパケット送信順序調停回路１２５に転送させ、次いでステップＳ１９において、パラメータＮを１だけデクリメントし、ステップＳ２０において、次の領域を特定するように次回送信位置ポインタＰ２を変化させ、ステップＳ１７に戻る。ステップＳ１３乃至Ｓ１５において確定されたＮ個のデータパケットがすべて送信されるまで、ステップＳ１７乃至Ｓ２０を繰り返し、ステップＳ１７がＹＥＳになったとき、ステップＳ２１において、タイマ回路１２６をリセットして計時を０から開始し、図１１のフローに戻る。
【００４３】
ステップＳ４の後、ステップＳ５において、送信バッファ制御回路１２３は、確認応答番号が、確認応答待ち位置ポインタＰ１によって示される領域にあるパケットのシーケンス番号以下であるか否かを判断し、ＹＥＳのときはステップＳ１に戻り、ＮＯのときはステップＳ６に進む。ステップＳ６において、ポインタＰ１，Ｐ２が示す領域が互いに一致するか否かを判断し、ＹＥＳのときはステップＳ１に戻り、ＮＯのときはステップＳ７に進む。ステップＳ６がＹＥＳである場合は、ＡＣＫパケットの受信を待機している送信済みのデータパケットが送信バッファメモリ１２４に残っていないときである。ステップＳ７において、次の領域を特定するように確認応答待ち位置ポインタＰ１を変化させ、ステップＳ５に戻る。
【００４４】
ステップＳ４の処理と、ステップＳ５乃至Ｓ７の処理とは、逆の順序で実行してもよく、また並列に実行してもよい。例えば逆の順序で実行する場合には、ステップＳ３がＹＥＳのときステップＳ５に進み、ステップＳ５又はＳ６がＹＥＳのときステップＳ４を実行してステップＳ１に戻ることができる。
【００４５】
また、ステップＳ８では、送信バッファ制御回路１２３は、ＡＣＫパケットにより伝達された確認応答番号及びウィンドウサイズの情報を破棄して、ステップＳ１に戻る。
【００４６】
ステップＳ９において、送信バッファ制御回路１２３は、ＡＣＫパケットの待機時間がタイムアウトしたか否かを判断し、ＹＥＳのときはステップＳ１０のパケット再送処理を実行し、ＮＯのときはステップＳ１に戻る。
【００４７】
図１３は、パケット再送処理Ｓ１０のサブルーチンを示すフローチャートである。図１３のステップＳ３１において、送信バッファ制御回路１２３は、再送すべきパケット数を示すパラメータＮを０に初期化する。次いでステップＳ３２において、次回送信位置ポインタＰ２が示す領域は、確認応答待ち位置ポインタＰ１が示す領域のＮ個分後ろの領域に一致するか否かが判断され、ＹＥＳのときはステップＳ３４に進み、ＮＯのときはステップＳ３３でパラメータＮを１だけインクリメントしてステップＳ３２の判断を繰り返す。再送すべきパケット数を示すパラメータＮが確定するまで、ステップＳ３２及びＳ３３を繰り返す。ステップＳ３４において、送信するパケット数Ｎをパケット送信順序調停回路１２５に通知する。次いでステップＳ３５において、送信すべきパケット数を示すパラメータＮが０であるか否かを判断し、ＹＥＳのときはステップＳ３８に進み、ＮＯのときはステップＳ３６に進む。ステップＳ３６では、次回送信位置ポインタＰ２が示す領域のＮ個分前の領域のパケットを送信し、ステップＳ３７においてパラメータＮを１だけデクリメントして、ステップＳ３５に戻る。再送時には図１２のステップＳ１７乃至Ｓ２０のようにポインタを変化させることができないので、ステップＳ３５乃至Ｓ３７では、パラメータＮをループ変数として用いてパケットを送信している。ステップＳ３２及びＳ３３において確定されたＮ個のデータパケットがすべて送信されるまで、ステップＳ３５乃至Ｓ３７を繰り返し、ステップＳ３５がＹＥＳになったとき、ステップＳ３８において、タイマ回路１２６をリセットして計時を０から開始し、図１１のフローのステップＳ１に戻る。
【００４８】
図１４は、送信バッファ制御回路１２３によって実行される第２の送信バッファ制御処理を示すフローチャートである。この第１の送信バッファ制御処理では、送信バッファメモリ１２４への新たなデータの格納を行う。図１４のステップＳ４１において、送信バッファ制御回路１２３は、メインＣＰＵ１０４又はアプリケーション処理回路１０５からの命令に基づいて、あるいはアプリケーション処理回路１０５への問い合わせに基づいて、送信すべきデータがまだ残っているか（すなわち、データが送信中であるか）否かを判断し、ＹＥＳのときはステップＳ４２に進み、ＮＯのときは処理を終了する。ステップＳ４２において、ポインタＰ１，Ｐ３によって示される領域が互いに一致するか否かが判断され、ＹＥＳのときはステップＳ４３に進み、ＮＯのときはステップＳ４４に進む。ステップＳ４３において、ポインタＰ１，Ｐ２によって示される領域が互いに一致するか否かが判断され、ＹＥＳのときはステップＳ４４に進み、ＮＯのときはステップＳ４１に戻る。ステップＳ４３がＹＥＳであり、３つのポインタＰ１，Ｐ２，Ｐ３によって特定される場所が一致する場合は、前述のように、送信バッファメモリ１２４は完全に空であり、ステップＳ４３がＮＯである場合は、送信バッファメモリ１２４がデータパケットによって完全に占有されている（空き領域がない）。ステップＳ４４において、格納開始位置ポインタＰ３によって示される領域にパケットを格納し、ステップＳ４５において、ステップＳ４４で格納したパケットのシーケンス番号を管理テーブル１２７に書き込み、ステップＳ４６において、次の領域を特定するように格納開始位置ポインタＰ３を変化させ、ステップＳ４１に戻る。送信すべきデータが残っている限りは、ステップＳ４１乃至Ｓ４６の処理を繰り返す。
【００４９】
図８乃至図１０は、送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示すさらに別の例を示す概念図である。ここで、図８は、図７の状態からデータパケットＳ１９，Ｓ２０を格納した後の、データ送信中でありかつ送信バッファメモリ１２４に空き領域が存在する状態を示し、図９は、図８の状態からデータパケットＳ２１，Ｓ２２を格納した後の、データ送信中でありかつ送信バッファメモリ１２４がデータパケットによって完全に占有されている状態を示し、図１０は、図９の状態からすべてのデータパケットを送信した後の空き状態を示す。図８において、シーケンス番号Ｓ３乃至Ｓ５のデータパケットは送信済みでＡＣＫパケットを待機している状態にあり、シーケンス番号Ｓ６乃至Ｓ２０のデータパケットはまだ１度も送信されたことがなく、また、送信バッファメモリ１２４に新たにデータを格納する際は、格納開始位置ポインタＰ３が示す領域Ａ１に格納する。図９において、シーケンス番号Ｓ３乃至Ｓ５のデータパケットは、図８の場合と同様に送信済みでＡＣＫパケットを待機している状態にあり、シーケンス番号Ｓ６乃至Ｓ２２のデータパケットはまだ１度も送信されたことがない。図１０において、格納開始位置ポインタＰ３は、新たなデータの格納がないので図９の状態から変化していない。確認応答待ち位置ポインタＰ１は、送信したデータパケットに対応するＡＣＫパケットが受信される毎に図９の状態から変化し、次回送信位置ポインタＰ２は、データパケットを送信する毎に図９の状態から変化し、最終的に図１０におけるすべてのポインタＰ１，Ｐ２，Ｐ３が一致した状態になる。
【００５０】
図２の構成において、パケット分岐回路１２１、ＡＣＫパケット解析回路１２２、送信バッファ制御回路１２３、及びパケット送信順序調停回路１２５は、それぞれハードウェアにより実現してもソフトウェアにより実現してもよい。
【００５１】
また、ＩＰとして、ＩＰｖ６と呼ばれるＲＦＣ２４６０に定義されているものが用いられる場合、ＩＰヘッダの構成は図５に示すものとは異なるものの、発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号は、ＩＰｖ６であってもＩＰヘッダ内に含まれる。従って、パケット分岐回路１２１は、ＩＰとしてＩＰｖ４が用いられる本実施形態と同様、発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス及びプロトコル番号をパケットの分岐条件として参照することができる。
【００５２】
以上、かかる構成によれば、ＴＣＰ／ＩＰにより送信されるＡＶストリームデータのパケットについて、データをアプリケーション処理回路１０５からネットワークインターフェース装置１０１に直接転送することと、ＡＣＫパケットをネットワークインターフェース装置１０１内の専用手段により処理することによって、図１６の従来例の構成で課題となっていた、メインＣＰＵ１０４の処理能力や、パケット送受信処理に使用できるローカルバス１０２の帯域幅に起因するデータの送信速度の低下を防ぐことが可能となり、また、ＡＶストリームのような大容量のデータであっても、メインＣＰＵ１０４の負荷を増大させることなく送信することが可能となる。また、ネットワークインターフェース装置１０１内に送信バッファメモリ１２４を設け、送信するＡＶストリームデータのパケットを格納し、ＴＣＰ／ＩＰにおけるフロー制御と再送制御をその送信バッファメモリ１２４を用いて行うことによって、端末装置内処理遅延時間を短縮することができ、その結果、データの送信速度を向上させることが可能である。
【００５３】
第２の実施形態．
図１５は、本発明の第２の実施形態に係るネットワークインターフェース装置２０１を備えた端末装置２００の構成を示すブロック図である。図１５において、第１の実施形態と同じ構成要素については同じ符号を用い、説明を省略する。
【００５４】
図１５の端末装置２００は、上記第１の実施形態における図２の構成とは異なり、別個のアプリケーションを実行するために複数（ここでは２つ）のアプリケーション処理回路１０５Ａ，１０５Ｂを備え、それに対応して、ネットワークインターフェース装置２０１は、各アプリケーションの通信コネクションのためにそれぞれ送信される複数の種類のパケットを処理するために、パケット化回路、送信バッファメモリ、送信バッファ制御回路及びタイマ回路の処理系を複数備えている。本実施形態では、アプリケーション処理回路１０５Ａから送信されるＡＶストリームデータＡをパケット化して格納するために、パケット化回路１１５Ａ及び送信バッファメモリ１２４Ａが設けられ、アプリケーション処理回路１０５Ｂから送信されるＡＶストリームデータＢをパケット化して格納するために、パケット化回路１１５Ｂ及び送信バッファメモリ１２４Ｂが設けられる。また、送信バッファメモリ１２４Ａを制御するために、送信バッファ制御回路１２３Ａ及びタイマ回路１２６Ａが設けられ、送信バッファメモリ１２４Ｂを制御するために、送信バッファ制御回路１２３Ｂ及びタイマ回路１２６Ｂが設けられる。送信バッファ制御回路１２３Ａは、送信バッファメモリ１２４Ａを介して送信されるデータパケットの発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてをＡＣＫパケット解析回路１２２ａに通知し、同様に、送信バッファ制御回路１２３Ｂは、送信バッファメモリ１２４Ｂを介して送信されるデータパケットの発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてを、ローカルバス１０２を介してＡＣＫパケット解析回路１２２ａに通知する。ＡＣＫパケット解析回路１２２ａは、パケット分岐回路１２１から転送されたＡＣＫパケットのヘッダと、送信バッファ制御回路１２３Ａ及び１２３Ｂから通知された発信元端末装置ＩＰアドレス、宛先端末装置ＩＰアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてを比較することによって、送信バッファ制御回路１２３Ａ及び１２３Ｂがそれぞれ関与する通信コネクションを識別し、ＡＣＫパケットから抽出した確認応答番号とウインドウサイズの情報を、そのＡＣＫパケットに関連付けられた送信バッファ制御回路に転送する。
【００５５】
送信バッファ制御回路１２３Ａおよび１２３Ｂが送信バッファメモリ１２４Ａ及び１２４Ｂをそれぞれ制御する方法は、第１の実施形態の方法と同様である。パケット送信順序調停回路１２５は、送信バッファメモリ１２４Ａ、送信バッファメモリ１２４Ｂ及び送信ＦＩＦＯ１１４からそれぞれ転送されたパケットの送信順序を並べ替えてデータリンク層処理回路１１２に転送する。送信バッファメモリ１２４Ａと送信バッファメモリ１２４Ｂから同時にデータパケットが転送された場合には、一方の送信バッファメモリからのデータパケットを、対応する送信バッファ制御回路から通知されたパケット数の分だけ先に送信し、その後、他方の送信バッファメモリからのデータパケットを、対応する送信バッファ制御回路から通知されたパケット数の分だけ送信することを繰り返して、両方の通信コネクションに係るパケットを交互に送信できるようにする。それに代わって、パケット送信順序調停回路１２５はまた、送信バッファメモリ１２４Ａからのデータパケットと送信バッファメモリ１２４Ｂからのデータパケットとを１つずつ、又は所定個数ずつ交互に送信するように、データパケットの並べ替えを行ってもよい。
【００５６】
図１６の従来例の構成では、複数の通信コネクションを取り扱わなければならないとき、各通信コネクションのデータパケットをメインＣＰＵ１０４で逐次にしか送信処理することができなかった。一方、以上説明した本実施形態のネットワークインターフェース装置２０１によれば、第１の実施形態に係る効果を有することに加えて、通信コネクション毎に送信バッファメモリ１２４Ａ及び１２４Ｂを設けて、パケットの送信処理を各処理系においてそれぞれ独立に行うことにより、通信コネクション毎に並列にパケットを送信処理することができるようになり、同時通信コネクション数が増大しても、処理時間が増大することなく、データを高速に送信することが可能である。
【産業上の利用可能性】
【００５７】
本発明に係るネットワークインターフェース装置は、データのパケットを高速かつ安定して送信することが可能であるので、ネットワークを通じてＡＶストリームなどの大容量のデータを再生又は転送する機器などに有用である。
【図面の簡単な説明】
【００５８】
【図１】従来技術及び本発明に係る、ネットワーク７００を介して互いに接続された複数の端末装置１００乃至６００を示す概念図である。
【図２】本発明の第１の実施形態に係るネットワークインターフェース装置１０１を備えた端末装置１００の構成を示すブロック図である。
【図３】図２のネットワークインターフェース装置１０１内におけるデータパケットの送信処理手順の概念を示す図である。
【図４】図２のパケット化回路１１５及び送信バッファメモリ１２４に代えて設けられる、変形例の送信バッファメモリ１２４Ａによるパケット化動作を示す概念図である。
【図５】図２のネットワークインターフェース装置１０１により送受信されるデータパケットの構成を示すデータフォーマットである。
【図６】送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の動作を説明するための概念図である。
【図７】図６の状態からデータパケットＳ１，Ｓ２を送信した後の送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示す概念図である。
【図８】図７の状態からデータパケットＳ１９，Ｓ２０を格納した後の送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示す概念図である。
【図９】図８の状態からデータパケットＳ２１，Ｓ２２を格納した後の送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示す概念図である。
【図１０】図９の状態からすべてのデータパケットを送信した後の送信バッファ制御回路１２３内の管理テーブル１２７と送信バッファメモリ１２４の状態を示す概念図である。
【図１１】図２の送信バッファ制御回路１２３によって実行される第１の送信バッファ制御処理を示すフローチャートである。
【図１２】図１１のパケット送信処理Ｓ４のサブルーチンを示すフローチャートである。
【図１３】図１１のパケット再送処理Ｓ１０のサブルーチンを示すフローチャートである。
【図１４】図２の送信バッファ制御回路１２３によって実行される第２の送信バッファ制御処理を示すフローチャートである。
【図１５】本発明の第２の実施形態に係るネットワークインターフェース装置２０１を備えた端末装置２００の構成を示すブロック図である。
【図１６】従来技術に係る第１のネットワークインターフェース装置３０１を備えた端末装置３００の構成を示すブロック図である。
【図１７】従来技術に係る第２のネットワークインターフェース装置４０１を備えた端末装置４００の構成を示すブロック図である。
【符号の説明】
【００５９】
１００乃至６００…端末装置、
１０１，２０１…ネットワークインターフェース装置、
１０２…ローカルバス、
１０３…システムメモリ、
１０４…メインＣＰＵ、
１０５，１０５Ａ，１０５Ｂ…アプリケーション処理回路、
１１１…物理層処理回路、
１１２…データリンク層処理回路、
１１３…受信ＦＩＦＯ、
１１４…送信ＦＩＦＯ、
１１５，１１５Ａ，１１５Ｂ…パケット化回路、
１２１…パケット分岐回路、
１２２，１２２ａ…ＡＣＫパケット解析回路、
１２３，１２３Ａ，１２３Ｂ…送信バッファ制御回路、
１２４，１２４Ａ，１２４Ｂ…送信バッファメモリ、
１２５…パケット送信順序調停回路、
１２６，１２６Ａ，１２６Ｂ…タイマ回路、
１２７…管理テーブル、
７００…ネットワーク。
【図１】
2008113327.tif 000003
【図２】
2008113327.tif 000004
【図３】
2008113327.tif 000005
【図４】
2008113327.tif 000006
【図５】
2008113327.tif 000007
【図６】
2008113327.tif 000008
【図７】
2008113327.tif 000009
【図８】
2008113327.tif 000010
【図９】
2008113327.tif 000011
【図１０】
2008113327.tif 000012
【図１１】
2008113327.tif 000013
【図１２】
2008113327.tif 000014
【図１３】
2008113327.tif 000015
【図１４】
2008113327.tif 000016
【図１５】
2008113327.tif 000017
【図１６】
2008113327.tif 000018
【図１７】
2008113327.tif 000019