JP2008113327A - Network interface device - Google Patents
Network interface device Download PDFInfo
- Publication number
- JP2008113327A JP2008113327A JP2006295755A JP2006295755A JP2008113327A JP 2008113327 A JP2008113327 A JP 2008113327A JP 2006295755 A JP2006295755 A JP 2006295755A JP 2006295755 A JP2006295755 A JP 2006295755A JP 2008113327 A JP2008113327 A JP 2008113327A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- transmission
- packets
- transmitted
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
Description
本発明は、データパケットを、高速かつ安定してネットワークに送信することが可能であるネットワークインターフェース装置に関する。 The present invention relates to a network interface device capable of transmitting data packets to a network at high speed and stably.
現在、図1に示すように、多くの情報端末装置(以下、「端末装置」という。)100乃至600が、LANやインターネットなど規模に関わらず様々なネットワーク700を通じて相互に接続されており、これら端末装置100乃至600間でデータを送受信する場合、データを所定の単位に分割して伝送を行うパケット通信がよく用いられている。
Currently, as shown in FIG. 1, many information terminal devices (hereinafter referred to as “terminal devices”) 100 to 600 are connected to each other through
図16は、従来技術に係る第1のネットワークインターフェース装置301を備えた端末装置300の構成を示すブロック図である。ネットワーク700を通じてパケット通信を行う際、従来のネットワークインターフェース装置301を内部に有する端末装置300は、通信プロトコルに関する処理を主にメインCPU304で行っている。また、パケット通信の際には、端末装置間での信頼性の高い伝送を実現するために、OSI7階層モデルにおける第4層のトランスポート層プロトコル及び第3層のネットワーク層プロトコルのTCP/IPがよく用いられる。TCPは、データを受信する側の端末装置(宛先端末装置)から送信する側の端末装置(発信元端末装置)への伝達確認応答を必要とする通信プロトコルであり、伝達確認応答がされない場合には発信元端末装置は該当パケットの再送を行うので、確実な伝送が要求されるデータを伝送するときに適したものである。IPは、ネットワークを通じてパケットを伝送する際に、経路探索や伝送路に応じたパケットの分割及び再構築を行う通信プロトコルであり、ネットワーク上のすべての端末装置には、端末装置を識別するためのIPアドレスが付加される。以下、図1に示すネットワークにおいて、図16に示す端末装置300からネットワーク700を介して接続されている端末装置600へTCP/IPによりデータを送信する場合を例に、従来のネットワークインターフェース装置301のパケット送信処理手順の説明を行う。
FIG. 16 is a block diagram illustrating a configuration of a
図16の端末装置300は、LANコントローラとして動作するネットワークインターフェース装置301と、プログラム及びデータを格納するシステムメモリ303と、プログラムに従ってデータを処理するメインCPU304と、アプリケーション処理回路305とを内部に備え、これらの構成要素はローカルバス302によって互いに接続されている。端末装置300において、端末装置600へデータを送信するとき、送信されるデータを含む入力信号はまず、アプリケーション処理回路305にてアプリケーション処理がなされ、アプリケーション処理回路305内のバッファメモリ306に格納される。アプリケーション処理回路305内のバッファメモリ306に格納されたデータは、メインCPU304によってローカルバス302経由で読み込まれて、システムメモリ303に格納される。システムメモリ303に格納されたデータは、再びメインCPU304によってローカルバス302経由で読み込まれて、第4層のTCPプロトコル処理及び第3層のIPプロトコル処理が行われた後、システムメモリ303内の通信コネクション毎に用意された領域にパケットの形式で格納される。システムメモリ303に格納されたパケットは、メインCPU304により送信起動されて再び読み込まれると、ローカルバス302を経由してネットワークインターフェース装置301に転送される。ここで、メインCPU304は、システムメモリ303からネットワークインターフェース装置301へパケットを転送する際に、TCPにおけるパケットの再送に備えて、システムメモリ303にパケットのコピーを残しておく。ネットワークインターフェース装置301に転送されたパケットは、一時的に送信FIFOメモリ装置(以下、「送信FIFO」という。)314に格納された後、データリンク層処理回路312にて第2層のデータリンク層処理が行われ、次いで物理層処理回路311にて第1層の物理層処理が行われ、最後にネットワーク700を介して端末装置600へ送信される。
The
データを受信する側の端末装置600は、データパケットを誤りなく受信できたときに、そのデータパケットを送信した端末装置300に対して伝達確認応答のためのACKパケットを送信する。ACKパケットの送信方法は実装に依存するが、2つのデータパケットに対する伝達確認応答を1つのACKパケットを返信することでまとめて行うのが一般的である。ACKパケットは、受信されたデータパケットを特定するための確認応答番号と、受信側の端末装置600が受信可能なデータサイズを示すウインドウサイズの情報とを含む。
When receiving the data packet without error, the
端末装置300に到来して受信されたACKパケットは、ネットワークインターフェース装置301内の物理層処理回路311で物理層処理が行われ、次いでデータリンク層処理回路912でデータリンク層処理が行われ、一時的に受信FIFOメモリ装置(以下、「受信FIFO」という。)313に格納された後、メインCPU304によって、ネットワークインターフェース装置301からローカルバス302経由でシステムメモリ303に格納される。その後、受信されたACKパケットは、再びメインCPU304によって読み込まれて処理される。ここで、メインCPU304は、端末装置600へ伝送できたことがACKパケットにより確認されたデータパケットを、保存していたシステムメモリ303内から消去し、メモリ領域を解放する。そして、メインCPU304は、ACKパケットにより通知されたウインドウサイズ分を満たすように新たなデータパケットをシステムメモリ303から読み出して、読み出されたデータパケットを端末装置600へ新たに送信する。一方、一定期間待ってもACKパケットが返信されてこない場合にはタイムアウトとなり、端末装置300は、端末装置600へのデータパケットの伝送に失敗したものと判断して、システムメモリ303に保存している該当データパケットを再送する。以上説明したように、図16の従来技術に係るネットワークインターフェース装置301を備えた端末装置300では、データパケットの送信処理とACKパケットの受信処理のほとんどがメインCPU304により行われ、その際に、ローカルバス302を経由したデータの転送が行われている。
The ACK packet received and received at the
一方、端末装置300がデータパケットを受信する場合も、送信する場合と同様にその処理のほとんどがメインCPU304により行われ、ローカルバス302を経由してデータが転送される。端末装置300にて受信されるパケットは、ネットワークインターフェース装置301内での処理を経て、ローカルバス302を経由してメインCPU304により読み込まれ、IPプロトコル処理及びTCPプロトコル処理等の通信プロトコル処理が行われる。通信プロトコル処理が終了したパケットは、システムメモリ303に格納され、ある一定量のデータが蓄積された後に、メインCPU304によって再び読み込まれ、ローカルバス302を経由してアプリケーション処理回路305に転送される。このため、データパケットの送信と受信を同時に行う場合には、メインCPU304の負荷や、パケット送受信処理が占有するローカルバス302の帯域幅は、大幅に増大することとなる。一般に、データパケットの送信と受信では、受信処理を優先させることが多いので、メインCPU304の処理能力やローカルバス302の帯域幅が小さいときには、データパケットの送信処理に遅延が発生し、データパケットを送信する時間間隔は長くなる。また、メインCPU304は、上記のパケット送受信処理の他にそれ以外の汎用処理も行うので、特に、家電製品などの組み込み用途向けのマイコンシステムなどでは、パケット送信処理に使用できるメインCPU304の処理能力やローカルバス302の帯域幅はさらに制限され、データの送信速度の低下はより顕著となる。
On the other hand, when the
一方、パケット通信の際には、トランスポート層プロトコルとして、TCPと並んでUDPもよく用いられる。UDPは、データを受信する端末装置から送信する端末装置への伝達確認応答を必要としない通信プロトコルであり、伝達確認応答により生じるオーバーヘッドがなく、プロトコル処理も簡素であるため、TCPと比較して伝送遅延が小さく、高速かつリアルタイム性が要求されるデータを伝送するときに適したものである。特許文献1によれば、オーディオ/ビジュアル(AV)ストリームなどのリアルタイム性が要求されるデータのパケットを伝送するために、ローカルバス302やメインCPU304を経由せずにアプリケーション処理回路305からLANコントローラに直接転送してUDP/IPにより送信を行うデータ送受信装置もある。
On the other hand, in packet communication, UDP is often used as a transport layer protocol alongside TCP. UDP is a communication protocol that does not require a transmission confirmation response from a terminal device that receives data to a terminal device that transmits data, has no overhead caused by the transmission confirmation response, and has a simple protocol process. The transmission delay is small, and it is suitable for transmitting data that requires high speed and real time. According to
図17は、従来技術に係る第2のネットワークインターフェース装置401を備えた端末装置400の構成を示すブロック図である。このネットワークインターフェース装置401は、特許文献1に記載されたデータ送受信装置に対応する構成を有している。なお、図17において図16と同じ構成要素については同じ符号を用い、説明を省略する。以下、図1に示すネットワークにおいて、図17の端末装置400からネットワーク700により接続されている端末装置600へUDP/IPによりデータを送信する場合を例に、特許文献1に記載されたデータ送受信装置のパケット送信処理手順の説明を行う。
FIG. 17 is a block diagram illustrating a configuration of a
図17の端末装置400は、図16のネットワークインターフェース装置301に代えて、ネットワークインターフェース装置401を備える。端末装置400において、アプリケーション処理回路305にて処理されたAVストリームなどのリアルタイム性が要求されるデータは、アプリケーション処理回路305からメインCPU304及びローカルバス302を介さずに直接ネットワークインターフェース装置401内のパケット化回路411に転送される。このとき、データはアプリケーション処理回路305内のバッファメモリ306を介することなくパケット化回路411に転送されてもよく、図17では説明の簡単化のためにバッファメモリ306の図示を省略する。パケット化回路411はメインCPU304の制御に従い、転送されたデータをパケット単位に分割し、分割されたデータに対してUDPプロトコル処理、IPプロトコル処理及びデータリンク層処理を実行した後、送信順序制御回路412へ転送する。一方、その他の制御情報などリアルタイム性が要求されないデータは、上述した図16のネットワークインターフェース装置301と同様にして、メインCPU304によりパケット化された後でネットワークインターフェース装置401内の送信FIFO314に格納され、次いで送信FIFO314から送信順序制御回路412まで転送される。送信順序制御回路412において、パケット化回路411から転送されたリアルタイム性が要求されるパケットは、優先パケットとして取り扱われる一方、送信FIFO314から転送されたリアルタイム性が要求されないパケットは、非優先パケットとして取り扱われる。送信順序制御回路412は、優先パケットのデータに要求されている送信速度を満足するように、優先パケットと非優先パケットの送信順序を並べ替える。その後、パケットは、物理層処理回路311にて物理層処理がなされ、ネットワーク700を介して端末装置600へ送信される。
A
図17の構成のネットワークインターフェース装置401(すなわち特許文献1に開示された構成)では、図16の構成のネットワークインターフェース装置301において課題となっていた、メインCPU304の処理能力やパケット送信処理に使用できるローカルバス302の帯域幅に起因するデータの送信速度の低下を回避することが可能である。しかしながら、特許文献1の構成では、高速に伝送されるべきAVストリームなどのデータのパケットは、UDP/IPにより伝送が行われるものとされているが、UDP/IPによる伝送はパケットの再送などによってデータの伝送品質を補償する手段を持たないので、より高品質なデータ伝送を実現するためには、これらデータのパケットはTCP/IPにより伝送される必要がある。図1に示すネットワークにおいて、図17の端末装置400からネットワーク700により接続されている端末装置600へTCP/IPによりデータを送信する場合には、以下の処理手順が必要となる。
The
端末装置400はデータパケットを送信し、端末装置600は、そのデータパケットを誤りなく受信できた場合に、端末装置400に対してACKパケットを返信する。端末装置400のメインCPU304は、図16の従来例と同様の手順で、受信したACKパケットの処理を行う。ACKパケットを誤りなく受信したことによってデータパケットの伝達が確認できた場合、メインCPU304は、アプリケーション処理回路305に対してウインドウサイズ分の次のデータを送信するよう命令する。一方、パケットの受信誤りやネットワーク700上でのパケットロスなどによってデータパケットの伝送に失敗し、一定期間待ってもACKパケットが返信されてこない場合には、メインCPU304は、アプリケーション処理回路305に対して、該当データパケットを再送するよう命令する。再送されるデータは、上述した図17の構成におけるパケット送信手順と同様に、アプリケーション処理回路305からパケット化回路411に転送され、トランスポート層処理、ネットワーク層処理及びデータリンク層処理が再び行われた後、送信順序制御回路412及び物理層処理回路311を経て、ネットワーク700を介して端末装置600へ向けて再送される。
The
以上、図17の構成のネットワークインターフェース装置401を内部に有する端末装置400においてTCP/IPによりデータの伝送を行う場合には、一度送信したデータパケットを伝達確認応答されるまで保持しておく機能をネットワークインターフェース装置401が持たないので、データパケットを再送するときには、データのパケット化など上位層の処理から再度行う必要がある。よって、図16の従来例の構成のように送信したパケットを伝達確認されるまでシステムメモリ303に保持しておく方法と比較して、逆に処理効率が悪く、伝送遅延の増大や、データの送信速度の低下を招くという課題が生じる。また、端末装置400において、データパケットの送受信を同時に行う場合、送信したデータパケットに対するACKパケットは、受信したデータパケットとともにメインCPU304によって逐次に処理される。ここで、端末装置400は、ACKパケットによって、送信したデータパケットの伝達確認がされないと次のデータパケットを送信することができないので、メインCPU304の処理能力やパケット受信処理に使用できるローカルバス302の帯域幅によってもデータの送信速度が低下するという課題を有する。
As described above, when data is transmitted by TCP / IP in the
本発明の目的は、以上の問題点を解決し、データのパケットを、高速かつ安定してネットワークに送信することが可能であるネットワークインターフェース装置を提供することにある。 An object of the present invention is to provide a network interface apparatus that can solve the above-described problems and can transmit data packets to a network at high speed and stably.
以上説明した従来の課題を解決するために、本発明のパケットを送受信するネットワークインターフェース装置は、
特定の通信コネクションのために送信される優先パケットを格納する第1の格納手段と、
上記優先パケット以外の送信される非優先パケットを格納する第2の格納手段と、
受信されたパケットから、上記優先パケットに対して返信されたACKパケットを分離するパケット分岐手段と、
上記分離されたACKパケットから所定の情報を抽出するACKパケット解析手段と、
上記抽出された情報に基づき上記第1の格納手段を制御する格納制御手段とを備えたことを特徴とする。
In order to solve the conventional problems described above, a network interface device for transmitting and receiving a packet according to the present invention includes:
First storage means for storing priority packets transmitted for a particular communication connection;
Second storage means for storing non-priority packets to be transmitted other than the priority packets;
A packet branching means for separating an ACK packet returned to the priority packet from the received packet;
ACK packet analysis means for extracting predetermined information from the separated ACK packet;
Storage control means for controlling the first storage means based on the extracted information.
上記ネットワークインターフェース装置において、上記優先パケットは、AVストリームデータのパケットであり、上記非優先パケットは、AVストリームデータ以外の一般データ及び制御情報のパケットであることを特徴とする。 In the network interface device, the priority packet is a packet of AV stream data, and the non-priority packet is a packet of general data and control information other than AV stream data.
また、上記ネットワークインターフェース装置は、上記優先パケットと上記非優先パケットとの両方を送信するとき、上記優先パケットを優先的に送信するようにパケットの送信順序を並べ替えるパケット送信順序調停手段をさらに備えたことを特徴とする。 The network interface device further includes a packet transmission order arbitration unit that rearranges the transmission order of the packets so that the priority packets are preferentially transmitted when transmitting both the priority packets and the non-priority packets. It is characterized by that.
さらに、上記ネットワークインターフェース装置において、上記パケット分岐手段は、上記受信されたパケットのIPヘッダに含まれる発信元端末装置IPアドレス、宛先端末装置IPアドレス及びプロトコル番号と、上記受信されたパケットのTCPヘッダに含まれる発信元ポート番号及び宛先ポート番号とのうち少なくとも一部の情報に基づいて、上記優先パケットに対して返信されたACKパケットを上記受信されたパケットから識別して分離することを特徴とする。 Further, in the network interface device, the packet branching means includes a source terminal device IP address, a destination terminal device IP address and a protocol number included in an IP header of the received packet, and a TCP header of the received packet. The ACK packet returned to the priority packet is identified and separated from the received packet based on at least a part of the source port number and the destination port number included in To do.
またさらに、上記ネットワークインターフェース装置において、
上記第1の格納手段は、複数の優先パケットをそれぞれ格納する複数の領域を備え、
上記ACKパケット解析手段は、上記ACKパケットのTCPヘッダに含まれる確認応答番号及びウインドウサイズの情報を抽出して上記格納制御手段に通知し、
上記格納制御手段は、上記第1の格納手段の各領域に特定の優先パケットが格納されているか否かと、上記各領域に格納された優先パケットが送信済みであるか否かとについての状態を管理する管理テーブルを有し、上記ACKパケット解析手段から転送された確認応答番号及びウインドウサイズの情報に基づいて上記管理テーブルを参照することにより、上記第1の格納手段の各領域に格納された特定の優先パケットを送信するか否かを決定するとともに、宛先への伝達が確認された優先パケットが格納されている上記第1の格納手段の領域を解放することを特徴とする。
Furthermore, in the network interface device,
The first storage means includes a plurality of areas each storing a plurality of priority packets,
The ACK packet analysis means extracts the acknowledgment number and window size information included in the TCP header of the ACK packet and notifies the storage control means,
The storage control means manages the status of whether or not a specific priority packet is stored in each area of the first storage means and whether or not the priority packet stored in each area has been transmitted. Specific information stored in each area of the first storage means by referring to the management table based on the acknowledgment number and window size information transferred from the ACK packet analyzing means. And determining whether or not to transmit the priority packet, and releasing the area of the first storage means in which the priority packet confirmed to be transmitted to the destination is stored.
また、上記ネットワークインターフェース装置は、複数の特定の通信コネクションのためにそれぞれ送信される複数の種類の優先パケットを処理するために、上記複数の特定の通信コネクション毎に上記第1の格納手段と上記格納制御手段とを備えたことを特徴とする。 The network interface device may process the first storage unit and the first storage unit for each of the plurality of specific communication connections in order to process a plurality of types of priority packets respectively transmitted for the plurality of specific communication connections. And a storage control means.
本発明によって、TCP/IPにより送信されるデータパケットについて、メインCPUの処理能力や、パケット送受信処理に使用できるローカルバスの帯域幅が制限されることに起因する送信速度の低下がなくなり、また、大容量のデータであっても、メインCPUの負荷を増大させずに処理することが可能である。加えて、ACKパケットをメインCPUではなくネットワークインターフェース装置内の専用手段によって処理し、送信バッファメモリに格納しているパケットを送信もしくは再送することにより、端末装置内の処理遅延時間を短縮することが可能である。以上の効果によれば、本発明におけるネットワークインターフェース装置を用いることにより高速かつ安定したデータの送信が可能となる。 According to the present invention, for data packets transmitted by TCP / IP, there is no reduction in transmission speed due to the limitation of the processing capacity of the main CPU and the bandwidth of the local bus that can be used for packet transmission / reception processing. Even large amounts of data can be processed without increasing the load on the main CPU. In addition, processing delay time in the terminal device can be shortened by processing the ACK packet not by the main CPU but by dedicated means in the network interface device and transmitting or retransmitting the packet stored in the transmission buffer memory. Is possible. According to the above effects, it is possible to transmit data at high speed and stably by using the network interface device of the present invention.
以下に、本発明の実施形態について、図面を参照しながら説明する。なお、図面の全体にわたり、同様の機能を有する構成要素には同一の符号を付与し、その繰り返しの説明は省略する。 Embodiments of the present invention will be described below with reference to the drawings. Note that throughout the drawings, components having similar functions are denoted by the same reference numerals, and repeated description thereof is omitted.
第1の実施形態.
図2は、本発明の第1の実施形態に係るネットワークインターフェース装置101を備えた端末装置100の構成を示すブロック図である。以下、図1に示すネットワークにおいて、図2のネットワークインターフェース装置101を内部に有する端末装置100から、ネットワーク700により接続されている端末装置600へ、TCP/IPによりAVストリームデータを送信する場合を例に、本発明の第1の実施形態におけるネットワークインターフェース装置101のパケット送信処理手順の説明を行う。
First embodiment.
FIG. 2 is a block diagram illustrating a configuration of the
図2の端末装置100は、ネットワーク700を介して通信する機能を備えたオーディオ/ビジュアル(AV)機器やパーソナルコンピュータなどとして構成される。端末装置100は、LANコントローラとして動作するネットワークインターフェース装置101と、プログラム及びデータを格納するシステムメモリ103と、プログラムに従ってデータを処理するメインCPU104と、アプリケーション処理回路105とを内部に備え、これらの構成要素はローカルバス102によって互いに接続されている。ネットワークインターフェース装置101は、図16における構成要素311,312,313,314と同様の物理層処理回路111、データリンク層処理回路112、受信FIFO113及び送信FIFO114を備えたことに加えて、リアルタイム性が要求される特定の通信コネクションのためのデータの送信処理を実行するために設けられたパケット化回路115及び送信バッファメモリ124と、送信バッファメモリ124から転送されるデータパケットと送信FIFO114から転送されるデータパケットとの送信順序を並べ替えてデータリンク層処理回路112に転送するパケット送信順序調停回路125と、送信バッファメモリ124を介して送信されたデータパケットに関して受信された確認応答(ACK)パケットを処理するために設けられたパケット分岐回路121、ACKパケット解析回路122、送信バッファ制御回路123及びタイマ回路126とを備える。
The
本実施形態のネットワークインターフェース装置101によれば、特定の通信コネクションのために送信されるAVストリームデータのパケットを格納する送信バッファメモリ124と、AVストリームデータ以外の送信されるパケットを格納する送信FIFO114と、受信されたパケットから、AVストリームデータのパケットに対して返信されたACKパケットを分離するパケット分岐回路121と、分離されたACKパケットから所定の情報を抽出するACKパケット解析回路122と、抽出された情報に基づき送信バッファメモリ124を制御する送信バッファ制御回路123とを備えたことを特徴とする。
According to the
以下、本実施形態の端末装置100の動作を説明する。図3は、図2のネットワークインターフェース装置101内におけるデータパケットの送信処理手順の概念を示す図である。図2において、端末装置100のアプリケーション処理回路105には、送信すべき入力信号としてAVストリームデータなどのリアルタイム性を必要とする特定の通信コネクションのためのデータが入力される。アプリケーション処理回路105は、送信すべきAVストリームデータに対して、アナログ信号からデジタル信号への変換やデータの圧縮及び符号化などの処理を実行し、処理後のAVストリームデータを、ローカルバス102を経由せずに直接にネットワークインターフェース装置101内のパケット化回路115に転送する。パケット化回路115はローカルバス102を介してメインCPU104に接続され、メインCPU304の制御に従って、アプリケーション処理回路105から転送されたデータをパケット単位に分割し、分割されたデータに対してTCPプロトコル処理、IPプロトコル処理及びデータリンク層処理を実行する。詳しくは、パケット化回路115は、アプリケーション処理回路105から転送された複数パケット分に相当するサイズを有するAVストリームデータをパケット単位に分割し、分割された各パケット単位のデータにTCPヘッダH3、IPヘッダH2及びMACヘッダH1をそれぞれ付加する。これらのヘッダH1,H2,H3の情報は、予め、ローカルバス102を介してメインCPU104から取得されている。データは、次いで、TCPヘッダH3、IPヘッダH2及びMACヘッダH1までが付加されたデータパケットの形式で送信バッファメモリ124に転送されて格納される。送信バッファメモリ124は、最大パケット長単位のサイズをそれぞれ有する複数の領域に分割されていて、これらの領域にデータパケットがそれぞれ格納される。
Hereinafter, the operation of the
パケット化回路115を設けることに代えて、データのパケット化は、送信バッファメモリ124において実行してもよい。図4は、図2のパケット化回路115及び送信バッファメモリ124に代えて設けられる、変形例の送信バッファメモリ124によるパケット化動作を示す概念図である。このとき、送信バッファメモリ124は、所定の最大パケット長単位のサイズをそれぞれ有する複数の領域に分割されていて、分割された各領域の先頭には、予めメインCPU104から取得されたTCPヘッダH3、IPヘッダH2及びMACヘッダH1の情報がそれぞれ格納されている。アプリケーション処理回路105から転送された、例えば4パケット分の長さからなるAVストリームデータはパケット単位D0〜D3に分割され、送信バッファメモリ124内の各領域に予め格納されているヘッダ部分の後ろに、順に格納される。このように、AVストリームデータをパケット化するためには、データを送信バッファメモリ124に格納する際に上記の手順によりパケット化を実行してもよい。また、さらなる代替方法として、TCPヘッダH3、IPヘッダH2及びMACヘッダH1の付加までの処理をアプリケーション処理回路105で行い、パケット化されたデータを直接に送信バッファメモリ124に転送してもよい。
Instead of providing the
図5は、図2のネットワークインターフェース装置101により送受信されるデータパケットの構成を示すデータフォーマットである。図5において、TCPヘッダH3はRFC793に定義され、IPヘッダH2はIPv4と呼ばれる形式のものでありRFC791に定義されているものである。また、MACヘッダH1の形式は、ネットワーク700の通信媒体により異なる。IPヘッダH2において、発信元端末装置IPアドレス及び宛先端末装置IPアドレスは、ネットワーク700内で端末装置を識別するために付与され、プロトコル番号は、トランスポート層プロトコルを識別するために付与されている。TCPヘッダH3において、発信元ポート番号及び宛先ポート番号は、アプリケーションやサービスを識別するために付与されている。
FIG. 5 is a data format showing a configuration of a data packet transmitted and received by the
再び図2を参照すると、アプリケーション処理回路105によって処理されたデータを、パケット化回路115を介して送信バッファメモリ124へ格納するタイミングは、送信バッファメモリ124に接続され、かつローカルバス102を介してアプリケーション処理回路105に接続された送信バッファ制御回路123により決定される。送信バッファ制御回路123はまた、送信バッファメモリ124に格納されたデータパケットが宛先の端末装置600に送信されて、このデータパケットに関して端末装置600からACKパケットが受信されたときにこのACKパケットを識別するために(すなわち、AVストリームデータの通信コネクションを特定するために)、図5のIPヘッダH2に含まれる発信元端末装置IPアドレス、宛先端末装置IPアドレス及びプロトコル番号と、図5のTCPヘッダH3に含まれる発信元ポート番号及び宛先ポート番号とのうち一部又はすべてを、ローカルバス102を介してパケット分岐回路121に予め通知しておく。この通知機能は、メインCPU104が直接にパケット分岐回路121に対して行ってもよい。送信バッファ制御回路123はさらに、送信バッファメモリ124に格納されているAVストリームデータのパケットに対する送信起動を実行し(すなわち、パケットを送信し、また再送するように指示し)、これにより、送信されるパケット数をパケット送信順序調停回路125に通知するとともに、そのパケット数の分のデータパケットを送信バッファメモリ124からパケット送信順序調停回路125に転送させる。送信バッファ制御回路123が送信バッファメモリ124内のパケットを制御する動作については、後でさらに詳細に説明する。パケット送信順序調停回路125には、上述の処理を経て送信バッファメモリ124から転送されたAVストリームデータのパケットと、図16の従来例における手順と同様にメインCPU104による処理を経て送信FIFO114から転送された制御情報など一般データのパケットとが入力される。ここで、パケット送信順序調停回路125は、送信するように指示されたパケット数の分のAVストリームデータのパケットを優先的に連続して送信できるよう、入力されたパケットの送信順序を並べ替えてデータリンク層処理回路112に転送する。その後、送信順序が並べ替えられたパケットは、データリンク層処理回路112にてデータリンク層処理が行われ、物理層処理回路111にて物理層処理が行われ、ネットワーク700を介して端末装置600に送信される。これにより、発信元となる端末装置100から宛先となる端末装置600に、AVストリームデータなどのリアルタイム性が要求されるデータパケットを送信することができる。
Referring to FIG. 2 again, the timing at which the data processed by the
一方、端末装置100から送信されたAVストリームデータのパケットを受信した端末装置600はパケットの受信処理を行い、パケットを誤りなく受信できた場合には、端末装置100に対して伝達確認応答のためのACKパケットを返信する。
On the other hand, the
端末装置100は、当該端末装置100を宛先として送信されたデータパケットや、端末装置600から端末装置100に返信されたACKパケットを受信する。受信されたパケットは、物理層処理回路111にて物理層処理が行われ、データリンク層処理回路112にてデータリンク層処理が行われ、パケット分岐回路121に転送される。図5のデータフォーマットを参照して、パケット分岐回路121の処理を説明する。パケット分岐回路121は、データリンク層処理回路112により転送された図5のデータフォーマットを有する受信パケットから、IPヘッダH2に含まれる発信元端末装置IPアドレス、宛先端末装置IPアドレス及びプロトコル番号と、TCPヘッダH3に含まれる発信元ポート番号及び宛先ポート番号とのうち一部又はすべての情報を読み出して、この読み出された情報を、送信バッファ制御回路123によって予め通知された情報と比較することによって、受信されたパケットが、送信バッファメモリ124を用いて送信したAVストリームデータに対するACKパケットであるか否かを識別する。パケット分岐回路121は、該当するACKパケットをACKパケット解析回路122に分離させて転送し、その他のパケットを受信FIFO113に転送する。ここで、受信したパケットが、端末装置100から送信したAVストリームデータのパケットに対するACKパケットである場合、受信したパケットの伝送方向は送信したAVストリームデータのパケットの伝送方向と逆になるので、受信したパケットの発信元端末装置IPアドレスは端末装置600のIPアドレスであり、宛先端末装置IPアドレスは端末装置100のIPアドレスであり、発信元ポート番号は端末装置600におけるポート番号であり、宛先ポート番号は端末装置100におけるポート番号である。受信FIFO113に転送されるパケットに係るこれ以降の処理は、図16の従来例の構成と同様にメインCPU104によって行われる。一方、ACKパケット解析回路122は、パケット分岐回路122から転送されたACKパケットから、図5に示すTCPヘッダ内の、次に送信すべきデータパケットの番号を示す確認応答番号の情報と、端末装置600が受信可能なデータサイズを示すウインドウサイズの情報とを抽出し、これらの情報を送信バッファ制御回路123に転送する。
The
図6は、送信バッファ制御回路123内の管理テーブル127と送信バッファメモリ124の動作を説明するための概念図である。送信バッファ制御回路123は、最大パケット長単位に分割された送信バッファメモリ124の各領域を管理する。詳しくは、この管理処理は、送信バッファメモリ124の各領域に特定のパケットが格納されているか否かと、各領域に格納されたパケットが送信済みであるか否かとについての状態を管理することを含み、管理処理において、送信バッファ制御回路123は、ACKパケット解析回路122から転送された確認応答番号とウインドウサイズの情報に基づいて管理テーブル127を参照することにより、送信バッファメモリ124に格納されているAVストリームデータのパケットのうちの送信される(又は再送される)パケット数を決定し、決定されたパケット数の分のデータパケットを送信させるように送信バッファメモリ124に指示し、伝達確認応答されたデータパケットが格納されている送信バッファメモリ124内の領域を解放し、解放された領域に新たなデータパケットを格納させる。上記各処理を行うために、送信バッファ制御回路123は、図6に示すような、送信バッファメモリ124の各領域の状態を管理する管理テーブル127を持つ。管理テーブル127は、分割された送信バッファメモリ124の各領域の領域番号A0乃至A19と、各領域に格納されているパケットのシーケンス番号と、宛先端末装置に送信済みであって、その宛先端末装置からの伝達確認応答を待機中のパケットのうちの先頭のパケットが格納されている領域を示す確認応答待ち位置ポインタP1と、次に送信すべきパケット(すなわち、送信バッファメモリ124に格納されて、まだ1度も送信されていないパケット)のうちの先頭のパケットが格納されている領域を示す次回送信位置ポインタP2と、次に送信バッファメモリ124へパケットを格納するときの先頭となる領域を示す格納開始位置ポインタP3との情報を含む。各領域番号A0乃至A19は、送信バッファメモリ124の各領域の先頭アドレスと1対1に対応している。送信バッファメモリ124はリングバッファと呼ばれる形式であり、図6に示すように送信バッファメモリ124が領域番号A0からA19まで20個の領域に分割されている場合、送信バッファメモリ124の最後尾である領域番号A19の領域がアクセスされた次は、送信バッファメモリ124の先頭である領域番号A0の領域がアクセスされる。
FIG. 6 is a conceptual diagram for explaining the operation of the management table 127 and the
図6は、ある時点での送信バッファメモリ124の状態も併せて示している。ここでは、シーケンス番号S1からS18を有するデータパケットが、送信バッファメモリ124内の領域番号A1からA18の領域に格納されている。このうち、シーケンス番号S1乃至S15のパケットは、既に少なくとも一度は端末装置600に送信されていて、ACKパケットにより伝達確認応答されるまで送信バッファメモリ124に保持されているパケットである。一方、シーケンス番号S16乃至S18のパケットは、初回の送信を待っているパケットである。このとき、送信バッファ制御回路123に含まれる管理テーブル127内で、確認応答待ち位置ポインタP1は、確認応答を待つパケットの先頭であるシーケンス番号S1のパケットが格納されている領域番号A1を特定し、次回送信位置ポインタP2は、初回の送信を待つパケットの先頭であるシーケンス番号S16のパケットが格納されている領域番号A16を特定し、格納開始位置ポインタP3は、パケットが格納されていない領域の先頭である領域番号A19を特定することとなる。
FIG. 6 also shows the state of the
ここで、受信したACKパケットにより通知されたウインドウサイズが最大パケット長のパケットで15パケット分であり、確認応答番号がシーケンス番号S3であったとする。まず、送信バッファ制御回路123は、通知された確認応答番号が、確認応答待ち位置ポインタP1が示す領域にあるパケットのシーケンス番号より大きく、かつ、次回送信位置ポインタP2が示す領域にあるパケットのシーケンス番号以下であることを確認する。これは、伝達確認応答を待つデータパケットに対するACKパケットか否かを判別するためであり、パケット伝送経路であるネットワーク700の状態などに起因して受信順序が入れ替わり不要となったACKパケットや、端末装置600が再送したことによって重複しているACKパケットを破棄する。上記の例では、ACKパケットにより通知された確認応答番号はS3であり、確認応答待ち位置ポインタP1が示す領域にあるパケットのシーケンス番号はS1であり、次回送信位置ポインタP2が示す領域にあるパケットのシーケンス番号はS16であるので、受信したACKパケットは、送信バッファメモリ124を介して送信されて伝達確認応答を待機中であるデータパケットに対するACKパケットであると判別される。
Here, it is assumed that the window size notified by the received ACK packet is 15 packets with the maximum packet length, and the confirmation response number is the sequence number S3. First, the transmission
受信したACKパケットが、送信バッファメモリ124を介して送信されて伝達確認応答を待機中であるデータパケットに対するものであると判別された場合、送信バッファ制御回路123は、通知された確認応答番号とウインドウサイズに基づき、送信バッファメモリ124に格納されているAVストリームデータのパケットのうちの送信されるパケット数の決定と、送信バッファメモリ124からパケット送信順序調停回路125へのパケットの転送を以下の手順で行う。端末装置600は、端末装置100が次に送信すべきデータパケットのシーケンス番号を確認応答番号として端末装置100に通知している。これを言い換えると、確認応答番号は、端末装置600が次に受信したいパケットのシーケンス番号を示したものである。確認応答番号としてシーケンス番号S3が通知された場合、既に送信したシーケンス番号S1とS2のパケットは、端末装置600への伝達が確認できたことになる。一方、シーケンス番号S3からS15のパケットは、端末装置600への伝達が未だ確認できていない。送信バッファ制御回路123は、通知された確認応答番号とウインドウサイズに基づき、送信すべきパケット数を決定する。ここで、ウインドウサイズは、ACKパケットによる伝達確認応答を待たずに送信できるデータのサイズを示したものであるので、上記の例の場合、通知されたウインドウサイズが15パケット分であったとしても、新たに送信できるのは、伝達確認応答がされていない13パケット分を除く2パケット分となる。よって、送信バッファ制御回路123は、管理テーブル127の次回送信位置ポインタP2が示す領域から2パケット分の領域に格納されている、シーケンス番号S16とS17のパケットに対して送信起動を実行し、パケットは、送信バッファメモリ124からパケット送信順序調停回路125に転送される。一般に、確認応答番号、シーケンス番号、ウインドウサイズはバイト単位で表現されるので、送信可能なデータバイト数は、ウインドウサイズから、次回送信位置ポインタP2が示す領域に格納されているパケットのシーケンス番号と確認応答番号が示すシーケンス番号の差を引いた数で求めることができる。つまり、新たに送信できるのは、次回送信位置ポインタP2が示す領域に格納されているパケットのシーケンス番号に対応するデータから、確認応答番号が示すシーケンス番号とウインドウサイズとの和で示されるシーケンス番号未満のシーケンス番号に対応するデータまでである。送信バッファメモリ124内のデータはバイト単位ではなく最大パケット長単位で管理されているので、送信バッファ制御回路123は、シーケンス番号と最大パケット長に基づいて送信パケット数を決定することとなる。パケット転送後、管理テープル127の次回送信位置ポインタP2は、シーケンス番号S18のパケットが格納されている領域番号A18に対応する場所を特定するように変化し、送信したデータパケットに対するACKパケットを待機するためのタイマ回路126がリセットされて、計時を0から開始する。送信バッファ制御回路123は、送信されるパケット数をパケット送信順序調停回路125に通知し、パケット送信順序調停回路125は、通知されたパケット数の、送信バッファメモリ124から転送されたパケットを連続的に優先して送信できるようにする。
If it is determined that the received ACK packet is for a data packet that has been transmitted through the
次に、送信バッファ制御回路123は、伝達確認応答されたAVストリームデータのパケットが格納されている送信バッファメモリ124内の領域の解放を行う。通知された確認応答番号S3によって、端末装置600へ伝達されたことが確認できたシーケンス番号S1とS2のパケットが格納されていた領域は解放される。領域の解放は、管理テーブル127の確認応答待ち位置ポインタP1を、確認応答番号により通知されたシーケンス番号のパケットが格納されている場所を特定するように変化させることにより行う。上記の例では、確認応答番号としてシーケンス番号S3が通知されているので、送信バッファメモリ124の領域番号A1を特定していた確認応答待ち位置ポインタP1を、シーケンス番号S3のパケットが格納されている領域番号A3を特定するように変化させる。
Next, the transmission
また、ACKパケットが所定時間内に到着せずにACKパケット待機時間がタイムアウトとなった場合、送信バッファ制御回路123は、確認応答待ち位置ポインタP1が示す領域に格納されているパケットから次回送信位置ポインタP2が示す領域の1つ前に示す領域に格納されているパケットまでに対して再度送信起動を実行し、パケットの再送を行う。パケット再送時には、ACKパケット待機時間を計時するためのタイマ126はリセットされる。
If the ACK packet wait time has timed out without arrival of the ACK packet within the predetermined time, the transmission
送信バッファ制御回路123は、データ送信中、管理テーブル127の確認応答待ち位置ポインタP1と格納開始位置ポインタP3とを常に比較している。図6に示すように、データパケットが格納されている送信バッファメモリ124の領域は、確認応答待ち位置ポインタP1により特定される領域から始まる。確認応答待ち位置ポインタP1が特定する場所と格納開始位置ポインタP3が特定する場所が異なれば、送信バッファ制御回路123は、送信バッファメモリ124に空き領域があると判断し、アプリケーション処理回路105から送信バッファメモリ124へのデータの格納を許可し、ローカルバス102を介してアプリケーション処理回路105にデータの転送を指示する。データが格納された場合、それに応じて格納開始位置ポインタP3が特定する場所も更新される。一方、2つのポインタP1,P3により特定される場所が一致し、かつ、次回送信位置ポインタP2により特定される場所がそれに一致しなければ、送信バッファ制御回路123は、送信バッファメモリ124に空き領域がないと判断し、送信バッファメモリ124のオーバーフローを防ぐため、アプリケーション処理回路105からのデータの格納を受け付けないようにする。このため、管理テーブル127の確認応答待ち位置ポインタP1を、確認応答番号により通知されたシーケンス番号のパケットが格納されている場所を特定するように変化させることで、確認応答されたパケットが格納されていた領域へのデータの上書きを許可し、結果として、送信バッファメモリ124の領域を解放したことと同じになる。また、3つのポインタP1,P2,P3により特定される場所がすべて一致する場合には、送信バッファメモリ124は空の状態であるので、データの格納を許可する。
The transmission
以上のように、送信バッファ制御回路123は、送信バッファメモリ124の状態を管理する管理テーブル127を用いて、送信バッファメモリ124に格納されているAVストリームデータのパケットのうちの送信されるパケット数の決定と、伝達確認応答されたAVストリームデータのパケットが格納されている送信バッファメモリ124内の領域の解放とを実行する。図7は、図6の状態からデータパケットS1,S2を送信した後の送信バッファ制御回路123内の管理テーブル127と送信バッファメモリ124の状態を示す概念図である。図7は、送信バッファ制御回路123が、ACKパケットにより通知された情報に基づき、図6の状態にあった送信バッファメモリ124を制御した後の状態を示している。送信バッファ制御回路123は、送信バッファメモリ124に格納されているAVストリームデータのパケットのうちの送信されるパケット数を決定する処理と、伝達確認応答されたAVストリームデータのパケットが格納されている送信バッファメモリ124内の領域を解放する処理とを順に実行してもよく、それに代わって2つの処理を並列に実行してもよい。
As described above, the transmission
以上説明した送信バッファ制御回路123による処理を、図11乃至図14のフローチャートに示す。図11乃至図13は、送信バッファ制御回路123によって実行される第1の送信バッファ制御処理を示すフローチャートである。この第1の送信バッファ制御処理では、送信バッファメモリ124に格納されたデータパケットの送信及び再送と、領域の解放とを行う。図11のステップS1において、送信バッファ制御回路123は、ACKパケットが端末装置100に到着し、そのACKパケット内の確認応答番号及びウィンドウサイズの情報がACKパケット解析回路122から転送されたか否かを判断し、YESのときはステップS2に進み、NOのときはステップS9に進む。ステップS2において、確認応答番号が、確認応答待ち位置ポインタP1によって示される領域にあるパケットのシーケンス番号より大きいか否かが判断され、ステップS3において、確認応答番号が、次回送信位置ポインタP2によって示される領域にあるパケットのシーケンス番号以下であるか否かが判断され、ステップS2,S3の両方ともYESであるときはステップS4のパケット送信処理を実行し、その少なくとも一方がNOであるときはステップS8に進む。
The processing by the transmission
図12は、パケット送信処理S4のサブルーチンを示すフローチャートである。図12のステップS11において、送信バッファ制御回路123は、ポインタP1,P2,P3が示す領域がすべて一致するか否かを判断し、YESのときは図11のフローに戻り、NOのときはステップS12に進む。前述のように、送信バッファメモリ124が空の場合は、3つのポインタP1,P2,P3によって特定される場所が一致する。ステップS12において、送信すべきパケット数を示すパラメータNを0に初期化し、送信されるバイト数を示すパラメータBを0に初期化する。次いでステップS13において、受信されたACKパケットによって通知されたウィンドウサイズと確認応答番号との和が、次回送信位置ポインタP2により示される領域にあるパケットのシーケンス番号と送信されるバイト数のパラメータBとの和未満であるか否かが判断され、YESのときはステップS16に進み、NOのときはステップS14に進む。図13において、ウィンドウサイズと、確認応答番号と、シーケンス番号と、送信されるバイト数のパラメータBとは、バイトを単位としてそれぞれ表される。ステップS14において、格納開始位置ポインタP3が示す領域は、次回送信位置ポインタP2が示す領域のN個分後ろの領域に一致するか否かが判断され、YESのときはステップS16に進み、NOのときはステップS15に進む。ステップS14がYESである場合には、送信バッファメモリ124内の未送信のデータパケットをすべて送信する。ステップS15において、送信すべきパケット数を示すパラメータNを1だけインクリメントし、送信されるバイト数を示すパラメータBを、送信バッファメモリ124の各領域のサイズに相当する最大パケット長のバイト数だけインクリメントし、ステップS13に戻る。送信すべきパケット数を示すパラメータN及び送信されるバイト数を示すパラメータBが確定するまで、ステップS13乃至S15を繰り返す。次いでステップS16において、送信するパケット数Nをパケット送信順序調停回路125に通知する。次いでステップS17において、送信すべきパケット数を示すパラメータNが0であるか否かを判断し、YESのときはステップS21に進み、NOのときはステップS18に進む。ステップS18では、次回送信位置ポインタP2が示す領域のパケットを送信するために、送信バッファメモリ124からパケット送信順序調停回路125に転送させ、次いでステップS19において、パラメータNを1だけデクリメントし、ステップS20において、次の領域を特定するように次回送信位置ポインタP2を変化させ、ステップS17に戻る。ステップS13乃至S15において確定されたN個のデータパケットがすべて送信されるまで、ステップS17乃至S20を繰り返し、ステップS17がYESになったとき、ステップS21において、タイマ回路126をリセットして計時を0から開始し、図11のフローに戻る。
FIG. 12 is a flowchart showing a subroutine of the packet transmission process S4. In step S11 of FIG. 12, the transmission
ステップS4の後、ステップS5において、送信バッファ制御回路123は、確認応答番号が、確認応答待ち位置ポインタP1によって示される領域にあるパケットのシーケンス番号以下であるか否かを判断し、YESのときはステップS1に戻り、NOのときはステップS6に進む。ステップS6において、ポインタP1,P2が示す領域が互いに一致するか否かを判断し、YESのときはステップS1に戻り、NOのときはステップS7に進む。ステップS6がYESである場合は、ACKパケットの受信を待機している送信済みのデータパケットが送信バッファメモリ124に残っていないときである。ステップS7において、次の領域を特定するように確認応答待ち位置ポインタP1を変化させ、ステップS5に戻る。
After step S4, in step S5, the transmission
ステップS4の処理と、ステップS5乃至S7の処理とは、逆の順序で実行してもよく、また並列に実行してもよい。例えば逆の順序で実行する場合には、ステップS3がYESのときステップS5に進み、ステップS5又はS6がYESのときステップS4を実行してステップS1に戻ることができる。 The process of step S4 and the processes of steps S5 to S7 may be executed in the reverse order or may be executed in parallel. For example, when the processes are executed in the reverse order, the process proceeds to step S5 when step S3 is YES, and step S4 is performed when step S5 or S6 is YES, and the process returns to step S1.
また、ステップS8では、送信バッファ制御回路123は、ACKパケットにより伝達された確認応答番号及びウィンドウサイズの情報を破棄して、ステップS1に戻る。
In step S8, the transmission
ステップS9において、送信バッファ制御回路123は、ACKパケットの待機時間がタイムアウトしたか否かを判断し、YESのときはステップS10のパケット再送処理を実行し、NOのときはステップS1に戻る。
In step S9, the transmission
図13は、パケット再送処理S10のサブルーチンを示すフローチャートである。図13のステップS31において、送信バッファ制御回路123は、再送すべきパケット数を示すパラメータNを0に初期化する。次いでステップS32において、次回送信位置ポインタP2が示す領域は、確認応答待ち位置ポインタP1が示す領域のN個分後ろの領域に一致するか否かが判断され、YESのときはステップS34に進み、NOのときはステップS33でパラメータNを1だけインクリメントしてステップS32の判断を繰り返す。再送すべきパケット数を示すパラメータNが確定するまで、ステップS32及びS33を繰り返す。ステップS34において、送信するパケット数Nをパケット送信順序調停回路125に通知する。次いでステップS35において、送信すべきパケット数を示すパラメータNが0であるか否かを判断し、YESのときはステップS38に進み、NOのときはステップS36に進む。ステップS36では、次回送信位置ポインタP2が示す領域のN個分前の領域のパケットを送信し、ステップS37においてパラメータNを1だけデクリメントして、ステップS35に戻る。再送時には図12のステップS17乃至S20のようにポインタを変化させることができないので、ステップS35乃至S37では、パラメータNをループ変数として用いてパケットを送信している。ステップS32及びS33において確定されたN個のデータパケットがすべて送信されるまで、ステップS35乃至S37を繰り返し、ステップS35がYESになったとき、ステップS38において、タイマ回路126をリセットして計時を0から開始し、図11のフローのステップS1に戻る。
FIG. 13 is a flowchart showing a subroutine of packet retransmission processing S10. In step S31 of FIG. 13, the transmission
図14は、送信バッファ制御回路123によって実行される第2の送信バッファ制御処理を示すフローチャートである。この第1の送信バッファ制御処理では、送信バッファメモリ124への新たなデータの格納を行う。図14のステップS41において、送信バッファ制御回路123は、メインCPU104又はアプリケーション処理回路105からの命令に基づいて、あるいはアプリケーション処理回路105への問い合わせに基づいて、送信すべきデータがまだ残っているか(すなわち、データが送信中であるか)否かを判断し、YESのときはステップS42に進み、NOのときは処理を終了する。ステップS42において、ポインタP1,P3によって示される領域が互いに一致するか否かが判断され、YESのときはステップS43に進み、NOのときはステップS44に進む。ステップS43において、ポインタP1,P2によって示される領域が互いに一致するか否かが判断され、YESのときはステップS44に進み、NOのときはステップS41に戻る。ステップS43がYESであり、3つのポインタP1,P2,P3によって特定される場所が一致する場合は、前述のように、送信バッファメモリ124は完全に空であり、ステップS43がNOである場合は、送信バッファメモリ124がデータパケットによって完全に占有されている(空き領域がない)。ステップS44において、格納開始位置ポインタP3によって示される領域にパケットを格納し、ステップS45において、ステップS44で格納したパケットのシーケンス番号を管理テーブル127に書き込み、ステップS46において、次の領域を特定するように格納開始位置ポインタP3を変化させ、ステップS41に戻る。送信すべきデータが残っている限りは、ステップS41乃至S46の処理を繰り返す。
FIG. 14 is a flowchart showing a second transmission buffer control process executed by the transmission
図8乃至図10は、送信バッファ制御回路123内の管理テーブル127と送信バッファメモリ124の状態を示すさらに別の例を示す概念図である。ここで、図8は、図7の状態からデータパケットS19,S20を格納した後の、データ送信中でありかつ送信バッファメモリ124に空き領域が存在する状態を示し、図9は、図8の状態からデータパケットS21,S22を格納した後の、データ送信中でありかつ送信バッファメモリ124がデータパケットによって完全に占有されている状態を示し、図10は、図9の状態からすべてのデータパケットを送信した後の空き状態を示す。図8において、シーケンス番号S3乃至S5のデータパケットは送信済みでACKパケットを待機している状態にあり、シーケンス番号S6乃至S20のデータパケットはまだ1度も送信されたことがなく、また、送信バッファメモリ124に新たにデータを格納する際は、格納開始位置ポインタP3が示す領域A1に格納する。図9において、シーケンス番号S3乃至S5のデータパケットは、図8の場合と同様に送信済みでACKパケットを待機している状態にあり、シーケンス番号S6乃至S22のデータパケットはまだ1度も送信されたことがない。図10において、格納開始位置ポインタP3は、新たなデータの格納がないので図9の状態から変化していない。確認応答待ち位置ポインタP1は、送信したデータパケットに対応するACKパケットが受信される毎に図9の状態から変化し、次回送信位置ポインタP2は、データパケットを送信する毎に図9の状態から変化し、最終的に図10におけるすべてのポインタP1,P2,P3が一致した状態になる。
FIGS. 8 to 10 are conceptual diagrams illustrating still another example of the state of the management table 127 and the
図2の構成において、パケット分岐回路121、ACKパケット解析回路122、送信バッファ制御回路123、及びパケット送信順序調停回路125は、それぞれハードウェアにより実現してもソフトウェアにより実現してもよい。
In the configuration of FIG. 2, the
また、IPとして、IPv6と呼ばれるRFC2460に定義されているものが用いられる場合、IPヘッダの構成は図5に示すものとは異なるものの、発信元端末装置IPアドレス、宛先端末装置IPアドレス及びプロトコル番号は、IPv6であってもIPヘッダ内に含まれる。従って、パケット分岐回路121は、IPとしてIPv4が用いられる本実施形態と同様、発信元端末装置IPアドレス、宛先端末装置IPアドレス及びプロトコル番号をパケットの分岐条件として参照することができる。
Further, when the IP defined in RFC2460 called IPv6 is used, the IP header configuration is different from that shown in FIG. 5, but the source terminal device IP address, destination terminal device IP address, and protocol number are used. Is included in the IP header even in IPv6. Therefore, the
以上、かかる構成によれば、TCP/IPにより送信されるAVストリームデータのパケットについて、データをアプリケーション処理回路105からネットワークインターフェース装置101に直接転送することと、ACKパケットをネットワークインターフェース装置101内の専用手段により処理することによって、図16の従来例の構成で課題となっていた、メインCPU104の処理能力や、パケット送受信処理に使用できるローカルバス102の帯域幅に起因するデータの送信速度の低下を防ぐことが可能となり、また、AVストリームのような大容量のデータであっても、メインCPU104の負荷を増大させることなく送信することが可能となる。また、ネットワークインターフェース装置101内に送信バッファメモリ124を設け、送信するAVストリームデータのパケットを格納し、TCP/IPにおけるフロー制御と再送制御をその送信バッファメモリ124を用いて行うことによって、端末装置内処理遅延時間を短縮することができ、その結果、データの送信速度を向上させることが可能である。
As described above, according to such a configuration, for AV stream data packets transmitted by TCP / IP, data is directly transferred from the
第2の実施形態.
図15は、本発明の第2の実施形態に係るネットワークインターフェース装置201を備えた端末装置200の構成を示すブロック図である。図15において、第1の実施形態と同じ構成要素については同じ符号を用い、説明を省略する。
Second embodiment.
FIG. 15 is a block diagram illustrating a configuration of a
図15の端末装置200は、上記第1の実施形態における図2の構成とは異なり、別個のアプリケーションを実行するために複数(ここでは2つ)のアプリケーション処理回路105A,105Bを備え、それに対応して、ネットワークインターフェース装置201は、各アプリケーションの通信コネクションのためにそれぞれ送信される複数の種類のパケットを処理するために、パケット化回路、送信バッファメモリ、送信バッファ制御回路及びタイマ回路の処理系を複数備えている。本実施形態では、アプリケーション処理回路105Aから送信されるAVストリームデータAをパケット化して格納するために、パケット化回路115A及び送信バッファメモリ124Aが設けられ、アプリケーション処理回路105Bから送信されるAVストリームデータBをパケット化して格納するために、パケット化回路115B及び送信バッファメモリ124Bが設けられる。また、送信バッファメモリ124Aを制御するために、送信バッファ制御回路123A及びタイマ回路126Aが設けられ、送信バッファメモリ124Bを制御するために、送信バッファ制御回路123B及びタイマ回路126Bが設けられる。送信バッファ制御回路123Aは、送信バッファメモリ124Aを介して送信されるデータパケットの発信元端末装置IPアドレス、宛先端末装置IPアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてをACKパケット解析回路122aに通知し、同様に、送信バッファ制御回路123Bは、送信バッファメモリ124Bを介して送信されるデータパケットの発信元端末装置IPアドレス、宛先端末装置IPアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてを、ローカルバス102を介してACKパケット解析回路122aに通知する。ACKパケット解析回路122aは、パケット分岐回路121から転送されたACKパケットのヘッダと、送信バッファ制御回路123A及び123Bから通知された発信元端末装置IPアドレス、宛先端末装置IPアドレス、発信元ポート番号及び宛先ポート番号のうち一部又はすべてを比較することによって、送信バッファ制御回路123A及び123Bがそれぞれ関与する通信コネクションを識別し、ACKパケットから抽出した確認応答番号とウインドウサイズの情報を、そのACKパケットに関連付けられた送信バッファ制御回路に転送する。
Unlike the configuration of FIG. 2 in the first embodiment, the
送信バッファ制御回路123Aおよび123Bが送信バッファメモリ124A及び124Bをそれぞれ制御する方法は、第1の実施形態の方法と同様である。パケット送信順序調停回路125は、送信バッファメモリ124A、送信バッファメモリ124B及び送信FIFO114からそれぞれ転送されたパケットの送信順序を並べ替えてデータリンク層処理回路112に転送する。送信バッファメモリ124Aと送信バッファメモリ124Bから同時にデータパケットが転送された場合には、一方の送信バッファメモリからのデータパケットを、対応する送信バッファ制御回路から通知されたパケット数の分だけ先に送信し、その後、他方の送信バッファメモリからのデータパケットを、対応する送信バッファ制御回路から通知されたパケット数の分だけ送信することを繰り返して、両方の通信コネクションに係るパケットを交互に送信できるようにする。それに代わって、パケット送信順序調停回路125はまた、送信バッファメモリ124Aからのデータパケットと送信バッファメモリ124Bからのデータパケットとを1つずつ、又は所定個数ずつ交互に送信するように、データパケットの並べ替えを行ってもよい。
The method by which the transmission
図16の従来例の構成では、複数の通信コネクションを取り扱わなければならないとき、各通信コネクションのデータパケットをメインCPU104で逐次にしか送信処理することができなかった。一方、以上説明した本実施形態のネットワークインターフェース装置201によれば、第1の実施形態に係る効果を有することに加えて、通信コネクション毎に送信バッファメモリ124A及び124Bを設けて、パケットの送信処理を各処理系においてそれぞれ独立に行うことにより、通信コネクション毎に並列にパケットを送信処理することができるようになり、同時通信コネクション数が増大しても、処理時間が増大することなく、データを高速に送信することが可能である。
In the configuration of the conventional example of FIG. 16, when a plurality of communication connections have to be handled, the data packet of each communication connection can be transmitted only by the
本発明に係るネットワークインターフェース装置は、データのパケットを高速かつ安定して送信することが可能であるので、ネットワークを通じてAVストリームなどの大容量のデータを再生又は転送する機器などに有用である。 The network interface device according to the present invention can transmit data packets at high speed and stably, and thus is useful for devices that reproduce or transfer large-capacity data such as AV streams over a network.
100乃至600…端末装置、
101,201…ネットワークインターフェース装置、
102…ローカルバス、
103…システムメモリ、
104…メインCPU、
105,105A,105B…アプリケーション処理回路、
111…物理層処理回路、
112…データリンク層処理回路、
113…受信FIFO、
114…送信FIFO、
115,115A,115B…パケット化回路、
121…パケット分岐回路、
122,122a…ACKパケット解析回路、
123,123A,123B…送信バッファ制御回路、
124,124A,124B…送信バッファメモリ、
125…パケット送信順序調停回路、
126,126A,126B…タイマ回路、
127…管理テーブル、
700…ネットワーク。
100 to 600 ... terminal device,
101, 201 ... network interface device,
102 ... Local bus,
103 ... System memory,
104 ... main CPU,
105, 105A, 105B ... Application processing circuit,
111 ... Physical layer processing circuit,
112 ... Data link layer processing circuit,
113 ... Receive FIFO,
114 ... transmission FIFO,
115, 115A, 115B ... packetization circuit,
121 ... Packet branching circuit,
122, 122a ... ACK packet analysis circuit,
123, 123A, 123B ... transmission buffer control circuit,
124, 124A, 124B ... transmission buffer memory,
125: Packet transmission order arbitration circuit,
126, 126A, 126B... Timer circuit,
127 ... management table,
700: Network.
Claims (6)
特定の通信コネクションのために送信される優先パケットを格納する第1の格納手段と、
上記優先パケット以外の送信される非優先パケットを格納する第2の格納手段と、
受信されたパケットから、上記優先パケットに対して返信されたACKパケットを分離するパケット分岐手段と、
上記分離されたACKパケットから所定の情報を抽出するACKパケット解析手段と、
上記抽出された情報に基づき上記第1の格納手段を制御する格納制御手段とを備えたことを特徴とするネットワークインターフェース装置。 In a network interface device that transmits and receives packets,
First storage means for storing priority packets transmitted for a particular communication connection;
Second storage means for storing non-priority packets to be transmitted other than the priority packets;
A packet branching means for separating an ACK packet returned to the priority packet from the received packet;
ACK packet analysis means for extracting predetermined information from the separated ACK packet;
A network interface device comprising storage control means for controlling the first storage means based on the extracted information.
上記ACKパケット解析手段は、上記ACKパケットのTCPヘッダに含まれる確認応答番号及びウインドウサイズの情報を抽出して上記格納制御手段に通知し、
上記格納制御手段は、上記第1の格納手段の各領域に特定の優先パケットが格納されているか否かと、上記各領域に格納された優先パケットが送信済みであるか否かとについての状態を管理する管理テーブルを有し、上記ACKパケット解析手段から転送された確認応答番号及びウインドウサイズの情報に基づいて上記管理テーブルを参照することにより、上記第1の格納手段の各領域に格納された特定の優先パケットを送信するか否かを決定するとともに、宛先への伝達が確認された優先パケットが格納されている上記第1の格納手段の領域を解放することを特徴とする請求項1乃至4のうちのいずれか1つに記載のネットワークインターフェース装置。 The first storage means includes a plurality of areas each storing a plurality of priority packets,
The ACK packet analysis means extracts the acknowledgment number and window size information included in the TCP header of the ACK packet and notifies the storage control means,
The storage control means manages the status of whether or not a specific priority packet is stored in each area of the first storage means and whether or not the priority packet stored in each area has been transmitted. Specific information stored in each area of the first storage means by referring to the management table based on the acknowledgment number and window size information transferred from the ACK packet analyzing means. And determining whether or not to transmit the priority packet, and releasing the area of the first storage means in which the priority packet confirmed to be transmitted to the destination is stored. The network interface device according to any one of the above.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295755A JP2008113327A (en) | 2006-10-31 | 2006-10-31 | Network interface device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295755A JP2008113327A (en) | 2006-10-31 | 2006-10-31 | Network interface device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008113327A true JP2008113327A (en) | 2008-05-15 |
Family
ID=39445584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006295755A Pending JP2008113327A (en) | 2006-10-31 | 2006-10-31 | Network interface device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008113327A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008126810A1 (en) * | 2007-04-06 | 2008-10-23 | Ntt Docomo, Inc. | Window control and retransmission control method, and transmission side device |
JP2011061840A (en) * | 2010-11-02 | 2011-03-24 | Ntt Docomo Inc | Window control and retransmission control method, and transmitting-side apparatus |
CN102598617A (en) * | 2009-07-09 | 2012-07-18 | 高通股份有限公司 | System and method of transmitting content from a mobile device to a wireless display |
JP2020136883A (en) * | 2019-02-19 | 2020-08-31 | キヤノン株式会社 | Communication device, method to control the communication device and program |
-
2006
- 2006-10-31 JP JP2006295755A patent/JP2008113327A/en active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008126810A1 (en) * | 2007-04-06 | 2008-10-23 | Ntt Docomo, Inc. | Window control and retransmission control method, and transmission side device |
US8050228B2 (en) | 2007-04-06 | 2011-11-01 | Ntt Docomo, Inc. | Window control and retransmission control method and transmitting-side apparatus |
CN102598617A (en) * | 2009-07-09 | 2012-07-18 | 高通股份有限公司 | System and method of transmitting content from a mobile device to a wireless display |
JP2012533220A (en) * | 2009-07-09 | 2012-12-20 | クゥアルコム・インコーポレイテッド | System and method for transmitting content from a mobile device to a wireless display |
JP2014168262A (en) * | 2009-07-09 | 2014-09-11 | Qualcomm Incorporated | System and method of transmitting content from mobile device to wireless display |
US8929297B2 (en) | 2009-07-09 | 2015-01-06 | Qualcomm Incorporated | System and method of transmitting content from a mobile device to a wireless display |
CN102598617B (en) * | 2009-07-09 | 2015-06-03 | 高通股份有限公司 | System and method of transmitting content from a mobile device to a wireless display |
JP2011061840A (en) * | 2010-11-02 | 2011-03-24 | Ntt Docomo Inc | Window control and retransmission control method, and transmitting-side apparatus |
JP2020136883A (en) * | 2019-02-19 | 2020-08-31 | キヤノン株式会社 | Communication device, method to control the communication device and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101696776B1 (en) | Enhanced acknowledgement and retransmission mechanism | |
US7953817B2 (en) | System and method for supporting TCP out-of-order receive data using generic buffer | |
JP5816718B2 (en) | Communication apparatus, communication system, and data communication relay method | |
US10630749B2 (en) | Timely delivery of real-time media problem when TCP must be used | |
JP4583691B2 (en) | Method and apparatus for reducing packet delay using scheduling and header compression | |
JP5038425B2 (en) | Optimization process of traffic control in packet telecommunications network | |
US6091710A (en) | System and method for preventing data slow down over asymmetric data transmission links | |
US8259728B2 (en) | Method and system for a fast drop recovery for a TCP connection | |
US9565118B1 (en) | Methods and apparatus for handling management packets in an audio video bridging (AVB) network | |
WO2004010311A2 (en) | Method and apparatus for zero-copy receive buffer management | |
JP2012239238A (en) | Systems and methods for assured communications with quality of service | |
US10505677B2 (en) | Fast detection and retransmission of dropped last packet in a flow | |
US20070291782A1 (en) | Acknowledgement filtering | |
US8838782B2 (en) | Network protocol processing system and network protocol processing method | |
JP2005520374A (en) | Changes to TCP / IP | |
JP2008113327A (en) | Network interface device | |
JP4656415B2 (en) | COMMUNICATION DEVICE, COMMUNICATION METHOD, AND PROGRAM | |
RU2651242C1 (en) | Method of transmitting data | |
US20120063463A1 (en) | Packet aligning apparatus and packet aligning method | |
RU2715016C1 (en) | Transmitting device, method, program and recording medium | |
CN114866477A (en) | Method, system and equipment for testing congestion control mechanism of network equipment | |
CN114826496A (en) | Out-of-order packet processing | |
US7466653B1 (en) | Quality of service for a stackable network switch | |
US20040223506A1 (en) | Packet communication device sending delayed acknowledgement through network | |
JP3148733B2 (en) | Signal processing device and signal processing system |