(57)【要約】【課題】CPUに負荷をかけずに、ネットワークに接続するための機器におけるバッファ溢れを回避することができるようにする。【解決手段】転送レート制御部１６１は、ネットワークカード１１４の送信バッファ１２１の容量を超える送信データが、送信データを記憶するメモリ１１３から送信バッファ１２１に転送される場合、メモリ１１３から送信バッファ１２１への転送レートを制御して、送信バッファ１２１に蓄積される送信データのデータ量を抑制することで、CPUに負荷をかけずに、ネットワーク１０２に接続するためのネットワークカード１１４における送信バッファ１２１のバッファ溢れを回避することができるようになる。本発明は、DMA転送を行う電子機器に適用することが可能である。【選択図】図５
2008172515.tif 000002
【特許請求の範囲】
【請求項１】
送信データを記憶するメモリと、
前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段と、
前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制する第１のレート制御手段と
を備える送信装置。
【請求項２】
前記送信データは、DMA（Direct Memory Access）によって、前記メモリから前記送信バッファに転送される
請求項１に記載の送信装置。
【請求項３】
前記第１のレート制御手段は、前記メモリと前記送信手段とを接続するバスの第１の帯域幅が、前記送信手段の第２の帯域幅よりも大きい場合、前記第１のレートが、前記送信手段から前記ネットワークへの転送速度である第２のレートよりも遅くなるように、前記第１のレートを制御する
請求項１に記載の送信装置。
【請求項４】
前記ネットワークを介して、前記他の機器から、前記他の機器の受信バッファが溢れていることを示す通知が送信されてきた場合、前記第２のレートを制御して、前記送信データのデータ量を抑制する第２のレート制御手段をさらに備える
請求項３に記載の送信装置。
【請求項５】
前記通知は、IEEE（The Institute of Electrical and Electronic Engineers , Inc.）802.3x規格に準拠したポーズフレームである
請求項４に記載の送信装置。
【請求項６】
前記第２のレート制御手段は、前記ポーズフレームによってあらかじめ定められた時間を経過するか、または前記ネットワークを介して、前記他の機器から、前記ポーズフレームによる停止状態を解除させる、IEEE802.3x規格に準拠した解除フレームが送信されてきた場合、前記第２のレートを制御して、前記送信データのデータ量を増加させる
請求項５に記載の送信装置。
【請求項７】
前記第２のレート制御手段は、AIMD（Additive Increase Multiple Decrease）により、前記送信データのデータ量を調整する
請求項６に記載の送信装置。
【請求項８】
前記第１のレート制御手段は、前記DMAの転送の間隔を制御して、前記第１のレートを制御する
請求項２に記載の送信装置。
【請求項９】
送信データを記憶するメモリと、前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段とを有する送信装置の送信方法であって、
前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制する
ステップを含む送信方法。
【請求項１０】
送信データを記憶するメモリと、前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段とを有する送信装置の送信処理を、コンピュータに行わせるプログラムにおいて、
前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制する
ステップを含むプログラム。
【請求項１１】
請求項１に記載の送信装置と、
前記ネットワークを介して、前記他の機器から送信されてくる受信データを受信する受信手段を備える
通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置および方法、通信装置、並びにプログラムに関し、特に、ネットワークに接続するための機器におけるバッファ溢れを回避することができるようにした送信装置および方法、通信装置、並びにプログラムに関する。
【背景技術】
【０００２】
近年、非常に高速なデータバスが登場しており、例えば、10Gbps（Giga bit per second）のネットワークカードが接続されているデータバスが、x8（8レーン）のPCI Expressの規格に準拠している場合、そのデータバスは、16Gbps（2Gbps×8レーン（1レーンごとに2Gbps））の帯域が転送可能となる。
【０００３】
図１は、そのような高速なデータバスを有している従来の通信装置の構成を示すブロック図である。なお、図１においては、通信装置１は、ネットワーク２を介して、自装置と同様の構成を有する通信装置３と通信を行う。
【０００４】
通信装置１は、所定のプログラムを実行することにより通信装置１の各部の動作を制御するCPU（Central Processing Unit）１１と、データバス１２を介してCPU１１に接続されたメモリ１３、およびネットワークカード１４から構成されている。また、ネットワークカード１４は、通信装置３に送信する送信データを蓄積する送信バッファ２１と、通信装置３から受信した受信データを蓄積する受信バッファ２２を有している。
【０００５】
図２は、従来の通信装置１と通信装置３との間で行われる通信について説明する図である。なお、図２において、送信データバスおよび受信データバスは、図１のデータバス１２に相当し、送信ネットワークカードおよび受信ネットワークカードは、図１のネットワークカード１４に相当する。また、送信バッファは、図１の送信バッファ２１に相当し、受信バッファは、図１の受信バッファ２２に相当する。
【０００６】
さらにまた、送信アプリケーションおよび受信アプリケーションは、それぞれ、通信装置１および通信装置３のCPU１１により実行され、図２の四角は、送信アプリケーションによって生成される送信データを表現している。
【０００７】
通信装置１においては、図２に示すように、送信データを格納したパケットを送信する場合、CPU１１により実行される送信アプリケーションによってメモリ１３に記憶された送信データは、通常、CPU１１を占有しないように、メモリ１３からDMA（Direct Memory Access）によって読み出されて、送信データバスを介して、送信ネットワークカードの送信バッファに転送される。その後、送信データを格納したパケットは、送信ネットワークカードからネットワーク２を介して通信装置３に送信される。
【０００８】
ところで、上述したように、8レーンで構成されたPCI Expressの規格に準拠したデータバス１２は、16Gbpsの帯域が転送可能であるので、例えば、ネットワークカード１４の帯域幅が10Gbpsである場合、送信データバスの帯域幅は、送信ネットワークカードの帯域幅よりも広帯域となる。その結果、送信アプリケーション（メモリ１３）から送信バッファ（送信バッファ２１）に対するDMAを送信データバスの帯域幅の限界（16Gbps）で行うと、どれほど迅速に、送信データが格納されたパケットをネットワーク２に送信したとしても、送信データが、送信ネットワークカードの送信バッファから溢れてしまう。
【０００９】
そこで、通信装置１は、ネットワークカード１４の送信バッファ２１に空きがある否かを確認した後、DMAによって、送信データをメモリ１３から送信バッファ２１に転送させる。次に、図３のフローチャートを参照して、DMAによって、メモリ１３に記憶されている送信データを、送信バッファ２１に転送させる処理について説明する。
【００１０】
ステップＳ１１において、CPU１１は、送信データがメモリ１３にあるか否かを判定する。ステップＳ１１において、CPU１１によって実行される送信アプリケーションによって、送信データがメモリ１３に記憶されていない場合、ステップＳ１１に戻り、上述した処理が繰り返される。
【００１１】
一方、ステップＳ１１において、送信データがメモリ１３にあると判定された場合、ステップＳ１２において、CPU１１は、送信バッファ２１に空きがあるか否かを判定する。ステップＳ１２において、送信バッファ２１に空きがないと判定された場合、ステップＳ１２に戻り、上述した処理が繰り返される。
【００１２】
一方、ステップＳ１２において、送信バッファ２１に空きがあると判定された場合、ステップＳ１３において、CPU１１は、例えば、ネットワークカード１４（メモリ１３）に設けられているディスクプリタに、送信データのパケット単位の情報をセットする。
【００１３】
これにより、メモリ１３とネットワークカード１４との間でDMA転送が行われ、メモリ１３に記憶されていた送信データは、パケット単位で送信バッファ２１に転送される（コピーされる）。そして、ネットワークカード１４は、そのパケットを、ネットワーク２を介して、通信装置３に送信する。
【００１４】
すなわち、ステップＳ１１およびＳ１２において、送信データがメモリ１３に存在し、かつ、送信バッファ２１に空きがあると判定された場合にだけ、DMA転送が行われるので、送信データを格納したパケットが、送信バッファ２１から溢れることを防止できる。
【００１５】
その後、処理は、ステップＳ１１に戻り、例えば、送信アプリケーションによる送信処理が終了するまで、ステップＳ１１乃至Ｓ１３の処理が繰り返されて、DMA転送が行われる。
【００１６】
このように、従来の通信装置１では、送信バッファ２１に空きがあることを確認してからDMA転送を行うことで、送信データが送信バッファ２１から溢れることを回避していた。
【００１７】
図２に戻り、また、通信装置１からの送信データを受信する通信装置３においては、送信データを格納したパケットを受信する場合、通信装置１による送信処理と丁度、逆の手順を踏むことになる。すなわち、受信ネットワークカード（ネットワークカード１４）によって、ネットワーク２を介して受信されたパケットは、通常、受信バッファに一度蓄積された後、DMAによって受信データバスを介して受信アプリケーション（メモリ１３）に転送される。そして、（メモリ１３に転送された）受信データは、受信アプリケーションによって処理される。
【００１８】
以上のようにして、従来の通信装置１と通信装置３とは、ネットワーク２を介して通信を行っていた。
【００１９】
また、フロー制御の仕組みを用いて、帯域制御や優先制御を行う技術としては、例えば、特許文献１および特許文献２が知られている。
【００２０】
特許文献１には、ポーズフレームにより送信端末におけるパケット送信の停止および解除を繰り返し調整することで、使用帯域を制限する技術が提案されている。
【００２１】
特許文献２には、イーサーネットスイッチの各ポートごとに優先度を設け、ポーズフレームの送信の必要が生じた際に、その優先度に応じてポーズフレームの送信を行う技術が提案されている。
【００２２】
【特許文献１】特開２００２−３５３９７９号公報
【特許文献２】特表平１１−５０６２８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
ところで、図１の通信装置１においては、送信バッファ２１に空きがなくなると、DMA転送が一時的に中断されて、送信バッファ２１に空きができるのを待つことになる。この際、CPU１１は、その空きができたことを、ネットワークカード１４から割り込み処理で通知されたり、ネットワークカード１４の状態をポーリングして確認する必要があり、そのために、DMA処理用のプログラムが複雑になるという問題があった。
【００２４】
また、送信バッファ２１が溢れない場合と比較すると、同じデータ量の送信データを、同じ時間で送信するにもかかわらず、より多くのCPU時間がかかってしまうという問題もあった。
【００２５】
また、上記特許文献１および２においては、フロー制御の仕組みを用いて、帯域制御や優先制御を実現しているが、フロー制御自体の発生を抑制するものではない。
【００２６】
本発明はこのような状況に鑑みてなされたものであり、CPUに負荷をかけずに、ネットワークに接続するための機器におけるバッファ溢れを回避することができるようにするものである。
【課題を解決するための手段】
【００２７】
本発明の第１の側面の送信装置は、送信データを記憶するメモリと、前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段と、前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制する第１のレート制御手段とを備える。
【００２８】
ネットワークとは、少なくとも２つの装置が接続され、ある装置から、他の装置に対して、情報の伝達をできるようにした仕組みをいう。ネットワークを介して通信する装置は、独立した装置どうしであってもよいし、１つの装置を構成している内部ブロックどうしであってもよい。
【００２９】
また、通信とは、無線通信および有線通信は勿論、無線通信と有線通信とが混在した通信、すなわち、ある区間では無線通信が行われ、他の区間では有線通信が行われるようなものであってもよい。さらに、ある装置から他の装置への通信が有線通信で行われ、他の装置からある装置への通信が無線通信で行われるようなものであってもよい。
【００３０】
前記送信データは、DMAによって、前記メモリから前記送信バッファに転送されるようにすることができる。
【００３１】
前記第１のレート制御手段には、前記メモリと前記送信手段とを接続するバスの第１の帯域幅が、前記送信手段の第２の帯域幅よりも大きい場合、前記第１のレートが、前記送信手段から前記ネットワークへの転送速度である第２のレートよりも遅くなるように、前記第１のレートを制御させることができる。
【００３２】
前記ネットワークを介して、前記他の機器から、前記他の機器の受信バッファが溢れていることを示す通知が送信されてきた場合、前記第２のレートを制御して、前記送信データのデータ量を抑制する第２のレート制御手段をさらに設けることができる。
【００３３】
前記通知は、IEEE802.3x規格に準拠したポーズフレームであるようにすることができる。
【００３４】
前記第２のレート制御手段には、前記ポーズフレームによってあらかじめ定められた時間を経過するか、または前記ネットワークを介して、前記他の機器から、前記ポーズフレームによる停止状態を解除させる、IEEE802.3x規格に準拠した解除フレームが送信されてきた場合、前記第２のレートを制御して、前記送信データのデータ量を増加させることができる。
【００３５】
前記第２のレート制御手段には、AIMDにより、前記送信データのデータ量を調整させることができる。
【００３６】
前記第１のレート制御手段には、前記DMAの転送の間隔を制御して、前記第１のレートを制御させることができる。
【００３７】
本発明の第１の側面の送信方法は、送信データを記憶するメモリと、前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段とを有する送信装置の送信方法であって、前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制するステップを含む。
【００３８】
本発明の第１の側面のプログラムは、送信データを記憶するメモリと、前記送信データを、ネットワークを介して前記ネットワークに接続された他の機器に送信する送信手段とを有する送信装置の送信処理を、コンピュータに行わせるプログラムにおいて、前記送信手段の送信バッファの容量を超える前記送信データが、前記メモリから前記送信バッファに転送される場合、前記メモリから前記送信バッファへの転送速度である第１のレートを制御して、前記送信バッファに蓄積される前記送信データのデータ量を抑制するステップを含む。
【００３９】
本発明の第１の側面においては、送信手段の送信バッファの容量を超える送信データが、メモリから送信バッファに転送される場合、メモリから送信バッファへの転送速度である第１のレートが制御され、送信バッファに蓄積される送信データのデータ量が抑制される。
【００４０】
本発明の第２の側面の通信装置は、請求項１に記載の送信装置と、前記ネットワークを介して、前記他の機器から送信されてくる受信データを受信する受信手段を備える。
【００４１】
本発明の第２の側面においては、送信手段の送信バッファの容量を超える送信データが、メモリから送信バッファに転送される場合、メモリから送信バッファへの転送速度である第１のレートが制御され、送信バッファに蓄積される送信データのデータ量が抑制され、ネットワークを介して、他の機器から送信されてくる受信データが受信する受信される。
【発明の効果】
【００４２】
以上のように、本発明の第１の側面によれば、CPUに負荷をかけずに、ネットワークに接続するための機器におけるバッファ溢れを回避することができる。
【００４３】
本発明の第２の側面によれば、CPUに負荷をかけずに、ネットワークに接続するための機器におけるバッファ溢れを回避することができる。
【発明を実施するための最良の形態】
【００４４】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００４５】
なお、特許請求の範囲における、「メモリ」は、例えば、図５のメモリ１１３に対応し、「送信手段」は、例えば、図５のネットワークカード１１４に対応し、さらに、「第１のレート制御手段」は、例えば、「第１のレート」（例えば、転送レート）を制御する、図５の転送レート制御部１６１に対応する。また、特許請求の範囲における、「第２のレート制御手段」は、例えば、「第２のレート」（例えば、送信レート）を制御する、図５の送信レート制御部１６２に対応するものとなっている。
【００４６】
以下、図面を参照しながら本発明の実施の形態について説明する。
【００４７】
図４は、本発明の一実施の形態である通信装置の構成例を示すブロック図である。この通信装置１０１は、内蔵するメモリ１１３に記憶されている（あるいは蓄積されている）送信データを、レートを制御しながらネットワーク１０２を介して通信装置１０３に送信するものである。また、通信装置１０１は、ネットワーク１０２を介して、ネットワーク１０２に接続された通信装置１０３から送信されてくる受信データを受信する。
【００４８】
なお、図４においては、通信装置１０１は、ネットワーク１０２を介して通信装置１０３と通信を行うが、通信装置１０３は、通信装置１０１と同様の構成を有しており、その説明は、繰り返しになるので省略する。
【００４９】
通信装置１０１は、CPU１１１、メモリ１１３、およびネットワークカード１１４を含むようにして構成され、それらは、データバス１１２を介して、相互に接続されている。
【００５０】
CPU１１１は、通信装置１０１の各部の動作を制御する。また、CPU１１１は、メモリ１１３に記憶されているプログラムを実行することにより、後述する図５に示す機能ブロックを実現する。
【００５１】
メモリ１１３には、CPU１１１によって実行されるプログラム（ネットワークカード１１４を制御するためのデバイスドライバプログラムを含む）が記憶されている。また、メモリ１１３には、送信データや受信データが適宜記憶される。
【００５２】
ネットワークカード１１４は、通信装置１０１をネットワーク１０２に接続させるための機器である。ネットワークカード１１４は、ネットワーク１０２を介して通信装置１０３に送信する送信データを蓄積する送信バッファ１２１と、ネットワーク１０２を介して通信装置１０３から受信した受信データを蓄積する受信バッファ１２２を有している。
【００５３】
ネットワークカード１１４は、CPU１１１によってセットされたディスクプリタにしたがって、DMA転送により、メモリ１１３からパケット単位の送信データを取得し、ネットワーク１０２を介して通信装置１０３に送信する。
【００５４】
ドライブ１０４は、必要に応じて通信装置１０１に接続される。ドライブ１０４には、例えば、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等からなるリムーバブルメディア１０５が適時装着される。ドライブ１０４は、装着されたリムーバブルメディア１０５から記憶されているプログラムを読み出して、読み出したプログラムをCPU１１１に供給する。
【００５５】
ネットワーク１０２は、例えば、有線または無線の、通信回線、ネットワーク、またはインターネット等からなる伝送路であり、所定の遅延時間で、例えば、通信装置１０１から送信された送信データを格納したパケットを通信装置１０３まで伝送する。
【００５６】
なお、通信装置１０１には、メモリ１１３とネットワークカード１１４との間で行われるDMA転送を制御するメモリコントローラを設けるようにしてもよい。
【００５７】
図５は、CPU１１１がプログラムを実行することによって実現される機能ブロックを示す図である。なお、図５のデータバス１１２乃至ネットワークカード１１４は、図４のデータバス１１２乃至ネットワークカード１１４と同様であるので、その説明は適宜省略する。
【００５８】
送信制御部１５１は、通信装置１０１における、送信データのネットワーク１０２に接続された通信装置１０３への送信を制御する。
【００５９】
送信制御部１５１は、転送レート制御部１６１、送信レート制御部１６２、およびDMA制御部１６３を含むようにして構成される。
【００６０】
転送レート制御部１６１は、メモリ１１３とネットワークカード１１４との間に接続されているデータバス１１２の転送レートを制御する。
【００６１】
送信レート制御部１６２は、ネットワークカード１１４によってネットワーク１０２に送信される送信データの送信レートを制御する。
【００６２】
DMA制御部１６３は、ディスクリプタにパケット単位の情報をセットして、メモリ１１３とネットワークカード１１４との間で行われるDMA転送を制御する。
【００６３】
なお、ディスクプリタにセットされるパケット単位の情報は、例えば、対応するパケットのメモリ１１３におけるアドレス（例えば、記録開始アドレスの上位32ビットを示すアドレスおよび下位32ビットを示すアドレス）、そのパケットのサイズ（例えば、16ビットのパケット長）、またはDMA転送の間隔を示す時間（例えば、DMA転送の間隔を調整するための遅延時間）等の情報である。
【００６４】
次に、図６のフローチャートを参照して、送信制御部１５１による、データバス１１２の転送レート制御の処理を説明する。
【００６５】
ステップＳ３１において、転送レート制御部１６１は、設定帯域幅Ｂと、設定時刻Ｔｎを設定する。例えば、転送レート制御部１６１は、設定帯域幅Ｂとして、ネットワークカード１１４（またはネットワーク１０２）の帯域幅10Gbpsを設定し、設定時刻Ｔｎの初期値として現在時刻を設定する。
【００６６】
ステップＳ３２において、送信制御部１５１は、送信データがメモリ１１３にあるか否かを判定する。
【００６７】
ステップＳ３２において、送信データがメモリ１１３に記憶されていないと判定された場合、ステップＳ３２に戻り、上述した処理が繰り返される。すなわち、例えば、CPU１１１によって実行される送信アプリケーションによって、送信データがメモリ１１３に蓄積させられて、ステップＳ３２において、送信データがメモリ１１３にあると判定されるまで、ステップＳ３２の処理が繰り返される。
【００６８】
一方、ステップＳ３２において、送信データがメモリ１１３にあると判定された場合、ステップＳ３３において、送信制御部１５１は、ネットワークカード１１４の送信バッファ１２１に空きがあるか否かを判定する。
【００６９】
ステップＳ３３において、送信バッファ１２１に空きがないと判定された場合、ステップＳ３３に戻り、上述した処理が繰り返される。すなわち、例えば、送信バッファ１２１に蓄積されている送信データを格納したパケットが、ネットワークカード１１４からネットワーク１０２を介して通信装置１０３に送信されて、ステップＳ３３において、送信バッファ１２１に空きがあると判定されるまで、ステップＳ３３の処理が繰り返される。
【００７０】
一方、ステップＳ３３において、送信バッファ１２１に空きがあると判定された場合、ステップＳ３４において、転送レート制御部１６１は、現在時刻Ｔに現在時刻を設定する。
【００７１】
ステップＳ３５において、転送レート制御部１６１は、現在時刻Ｔが設定時刻Ｔｎを経過しているか否かを判定する。
【００７２】
ステップＳ３５において、現在時刻Ｔが設定時刻Ｔｎを経過していないと判定された場合、ステップＳ３４に戻り、現在時刻Ｔが設定時刻Ｔｎを経過するまで、ステップＳ３４およびＳ３５の処理が繰り返される。
【００７３】
一方、ステップＳ３５において、現在時刻Ｔが設定時刻Ｔｎを経過していると判定された場合、すなわち、例えば、ステップＳ３４の処理で設定された現在時刻Ｔの現在時刻は、ステップＳ３１の処理で設定された設定時刻Ｔｎの現在時刻よりも後に設定された時刻であるため、現在時刻Ｔは設定時刻Ｔｎを経過しているので、ステップＳ３６において、DMA制御部１６３は、ディスクプリタにパケット単位の情報をセットする。
【００７４】
例えば、DMA制御部１６３は、ネットワークカード１１４（またはメモリ１１３）のディスクプリタに、対応するパケットのメモリ１１３におけるアドレスと、そのパケットのサイズの情報をセットする。
【００７５】
これにより、例えば、ネットワークカード１１４においては、CPU１１１からのディスクリプタにしたがって、パケット単位の送信データが、DMA転送によって送信バッファ１２１に蓄積される。そして、ネットワークカード１１４は、その送信データを格納したパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【００７６】
ステップＳ３７において、転送レート制御部１６１は、設定時刻Ｔｎを算出する。具体的には、転送レート制御部１６１は、例えば、下記の式（１）を用いて、設定時刻Ｔｎを算出する。
【００７７】
設定時刻Ｔｎ＝現在時刻Ｔ＋（パケット長÷設定帯域幅Ｂ）・・・（１）
【００７８】
つまり、例えば、帯域幅10Gbpsのネットワークカード１１４によって、1,000バイトのパケットを連続して送信する場合について考えると、パケット長÷設定帯域幅Ｂは、1,000（byte）/10（Gbps）=8×1,000（bit）/10×1,000,000,000（bit/sec）=8/10,000,000（sec）=0.00000008=0.8（μs）となる。そして、設定時刻Ｔｎには、現在時刻Ｔに、0.8マイクロ秒を加えた値が代入される。したがって、例えば、100バイトのパケットを送信する場合には、設定時刻Ｔｎは、現在時刻Ｔ＋0.08マイクロ秒となり、10,000バイトのパケットを送信する場合には、設定時刻Ｔｎは、現在時刻Ｔ＋8マイクロ秒となる。
【００７９】
その後、処理は、ステップＳ３２に戻り、ステップＳ３２乃至Ｓ３７において、例えば、CPU１１１によって実行される送信アプリケーションからの送信データがメモリ１１３に存在し、かつ、送信バッファ１２１に空きがある場合、現在時刻Ｔが設定時刻Ｔｎを経過しているかが判定され、現在時刻Ｔが設定時刻Ｔｎ（例えば、現在時刻Ｔ＋0.8マイクロ秒）を経過したとき、そのパケット単位の送信データを、DMAによって送信バッファ１２１に転送させる処理が繰り返される。
【００８０】
つまり、例えば、帯域幅16Gbpsのデータバス１１２においては、DMAによるパケット単位の送信データをメモリ１１３からネットワークカード１１４に転送するときの帯域幅を、データバス１１２の帯域幅の限界（16Gbps）よりも狭いネットワークカード１１４の帯域幅（10Gbps）にあわせることで、ネットワークカード１１４の帯域幅よりもデータバス１１２の帯域幅が広帯域とならず、送信データが、ネットワークカード１１４の送信バッファ１２１から溢れないようにすることが可能となる。
【００８１】
このように、通信装置１０１においては、データバス１１２の転送レート（転送速度）を制御することで、送信バッファ１２１が溢れることを回避することが可能となる。なお、実際には、ネットワーク１０２の状態によっては、帯域幅10Gbpsのネットワークカード１１４だからといって必ずしも、送信データを10Gbpsでネットワーク１０２に送信できるというわけではないが、少なくとも、通信装置１０１自身が原因で送信バッファ１２１が溢れてしまうということは回避できる。
【００８２】
次に、図７のタイミングチャートを参照して、送信制御部１５１（すなわち、CPU１１１）によって実行される図６のデータバス１１２の転送レート制御の処理が行われているときの、CPU１１１、メモリ１１３、およびネットワークカード１１４の動作について説明する。
【００８３】
図７には、図中上から順に、CPU１１１（送信制御部１５１）のタイミングチャート、メモリ１１３のタイミングチャート、ネットワークカード１１４のタイミングチャートを示されている。なお、図７の各タイミングチャートにおいて、水平方向の実線は、時間軸を表わしており、図中下に示されるように、時間の方向は、図中左から右に向かう方向とされている。
【００８４】
例えば、図６のステップＳ３６において、DMA制御部１６３によって、ネットワークカード１１４のディスクプリタにパケット単位の情報がセットされたとき、図７に示されるように、CPU１１１によって、送信データのパケット単位ごとに記述されたディスクリプタＤ11が、データバス１１２を介してネットワークカード１１４にセットされる。
【００８５】
このディスクリプタＤ11には、上述したように、例えば、対応するパケットのメモリ１１３におけるアドレス（例えば、記録開始アドレスの上位32ビットを示すアドレスおよび下位32ビットを示すアドレス）や、そのパケットのサイズ（例えば、16ビットのパケット長）等が記述されている。
【００８６】
ネットワークカード１１４は、ディスクリプタＤ11に記述されている、例えば、パケットのアドレスやサイズの情報に基づいて、メモリ１１３の当該記録開始アドレスを先頭とする当該パケット長のデータを、メモリ１１３から送信バッファ１２１にDMAにより転送させる。これにより、ネットワークカード１１４は、DMA転送されたパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【００８７】
その後、図６のステップＳ３２乃至Ｓ３７の処理が繰り返されることで、送信バッファ１２１に空きがあるときに送信データがメモリ１１３に存在する場合、現在時刻Ｔが設定時刻Ｔｎ（例えば、現在時刻Ｔ＋0.8マイクロ秒）を経過したとき、図６のステップＳ３６において、DMA制御部１６３によって、ディスクリプタにパケット単位の情報がセットされたとき、図７に示されるように、CPU１１１によってディスクリプタＤ12が、データバス１１２を介してネットワークカード１１４にセットされる。
【００８８】
そして、ネットワークカード１１４は、ディスクリプタＤ11と同様にディスクリプタＤ12に記述されている、例えば、パケットのアドレスやサイズの情報に基づいて、メモリ１１３に記憶されている送信データを格納したパケットを、メモリ１１３から送信バッファ１２１にDMAにより転送させて、そのパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【００８９】
同様に、図６のステップＳ３２乃至Ｓ３７の処理が繰り返されることで、図６のステップＳ３６において、DMA制御部１６３によって、ディスクリプタにパケット単位の情報がセットされたとき、図７に示されるように、CPU１１１によってディスクリプタＤ13乃至Ｄ1n（ｎは自然数）（ディスクリプタＤ1nは図示せず）が、それぞれ、データバス１１２を介してネットワークカード１１４に、順次セットされる。
【００９０】
そして、ネットワークカード１１４は、ディスクリプタＤ11と同様にディスクリプタＤ13乃至Ｄ1nにそれぞれ記述されている、例えば、パケットのアドレスやサイズの情報に基づいて、メモリ１１３に記憶されている送信データを格納したパケットを、それぞれ、メモリ１１３から送信バッファ１２１にDMAにより順次転送させて、そのパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【００９１】
このように、CPU１１１（送信制御部１５１）が、ソフトウェアの処理によって、パケット単位の情報をディスクリプタにセットするタイミングを調整することで、メモリ１１３とネットワークカード１１４の送信バッファ１２１との間で行われるDMA転送の間隔を調整している。その結果、通信装置１０１においては、データバス１１２の転送レート（転送速度）が調整され、送信バッファ１２１が溢れることを回避することが可能となる。
【００９２】
ところで、ネットワーク１０２に接続された受信側の通信装置１０３において、帯域幅10Gbpsのネットワークカードが、x4（4レーン）のPCI Expressのデータバス（8Gbps（2Gbps×4レーン）の帯域が転送可能）に接続されている場合、受信ネットワークカードの帯域幅（10Gbps）よりも、受信データバスの帯域幅（8Gbps）のほうが狭くなる。つまり、受信ネットワークカードの受信バッファに、10Gbpsで受信データが受信されたとしても、DMAを利用した受信バッファからメモリへの転送速度は8Gbpsとなり、この場合、受信バッファが溢れてしまう。
【００９３】
このとき、例えば、ネットワークカード１１４がIEEE（The Institute of Electrical and Electronic Engineers , Inc.）802.3x規格に準拠している場合、ポーズフレームと称される送信側のフレーム送出を一時的に停止させるための制御フレームが規定されているので、受信ネットワークカードの帯域幅よりも受信データバスの帯域幅が狭い場合にはこのポーズフレームを利用して、送信側のネットワークカード１１４に対して、受信側の通信装置１０３からポーズフレームを出すことで、所定の時間を指定して送信の一時中断を行うことが可能となる。
【００９４】
すなわち、IEEE802.3x規格に準拠した送信側のネットワークカード１１４は、図８に示すように、「通常状態」でパケットを送信しているとき、ネットワーク１０２を介して受信側の通信装置１０３からポーズフレームを受信すると、その状態が「ポーズ状態」に移行する。また、「ポーズ状態」のIEEE802.3x規格に準拠した送信側のネットワークカード１１４は、ポーズフレームによってあらかじめ定められたポーズ時間が経過するか、またはネットワーク１０２を介して受信側の通信装置１０３から待ち時間ゼロを指定したポーズフレームであるゼロポーズフレームを受信すると、その状態が「通常状態」に戻る。
【００９５】
つまり、受信側の通信装置１０３からのポーズフレームの受信に応じて、送信側の通信装置１０１で、実際に通信装置１０３が受信可能な帯域に送信レートを制御することで、受信側の通信装置１０３からの不要なポーズフレームの発生を抑制するとともに、送信側の通信装置１０１の負荷を軽減することが可能となる。そこで、次に、受信側からのポーズフレームに応じて、送信側で送信データの送信レートを制御する処理について説明する。
【００９６】
図９は、送信制御部１５１による、ネットワークカード１１４の送信レート制御の処理を説明するフローチャートである。
【００９７】
ステップＳ５１において、送信レート制御部１６２は、送信レートに対応する設定帯域幅Ｂを設定する。例えば、送信レート制御部１６２は、設定帯域幅Ｂとして、ネットワークカード１１４（またはネットワーク１０２）の帯域幅10Gbpsを設定する。
【００９８】
ステップＳ５２において、送信制御部１５１は、ネットワークカード１１４によって、ネットワーク１０２を介して受信側の通信装置１０３からポーズフレームが受信されたか否かを判定する。
【００９９】
ステップＳ５２において、ポーズフレームが受信されていないと判定された場合、ステップＳ５３において、送信制御部１５１は、ネットワークカード１１４によって、ネットワーク１０２を介して受信側の通信装置１０３へのパケットの送信が成功したか否かを判定する。
【０１００】
ステップＳ５３において、パケットの送信が失敗したと判定された場合、ステップＳ５２に戻り、上述した処理が繰り返される。
【０１０１】
一方、ステップＳ５３において、パケットの送信が成功したと判定された場合、ステップＳ５５において、送信レート制御部１６２は、設定帯域幅Ｂがネットワークカード１１４（またはネットワーク１０２）の帯域幅よりも小さいか否かを判定する。
【０１０２】
ステップＳ５５において、例えば、ネットワークカード１１４の帯域幅が10Gbpsで、設定帯域幅Ｂに10Gbpsが設定されており、設定帯域幅Ｂがネットワークカード１１４の帯域幅以上であると判定された場合、ステップＳ５２に戻り、上述した処理が繰り返される。すなわち、通信装置１０１は、ポーズフレームを受信せず、かつ、ネットワークカード１１４の帯域幅でパケットの送信が成功している場合、例えば、送信レート10Gbpsで、ネットワーク１０２を介して通信装置１０３にパケットを送信し続ける。
【０１０３】
その後、ステップＳ５２において、ネットワークカード１１４によって、受信側からポーズフレームが受信されたと判定された場合、ステップＳ５４において、送信レート制御部１６２は、設定帯域幅Ｂを狭くする。具体的には、送信レート制御部１６２は、例えば、下記の式（２）を用いて、設定帯域幅Ｂの値を減少させる。
【０１０４】
設定帯域幅Ｂ＝設定帯域幅Ｂ÷２・・・（２）
【０１０５】
つまり、例えば、ネットワークカード１１４の帯域幅10Gbpsが設定帯域幅Ｂに設定されている場合に、受信側の通信装置１０３からポーズフレームを受信したときについて考えると、設定帯域幅Ｂ÷２は、10（Gbps）/2=5（Gbps）となる。これにより、通信装置１０１は、受信側の通信装置１０３からポーズフレームを受信した場合、例えば10Gbpsから5Gbpsに送信レートを下げて、パケットを送信する。
【０１０６】
そして、その後、ステップＳ５２およびＳ５３において、受信側からポーズフレームを受信せず、かつ、パケットの送信が成功していると判定された場合、再度、ステップＳ５５において、送信レート制御部１６２は、設定帯域幅Ｂがネットワークカード１１４（またはネットワーク１０２）の帯域幅よりも小さいか否かを判定する。
【０１０７】
ステップＳ５５において、例えば、ネットワークカード１１４の帯域幅が10Gbpsで、設定帯域幅Ｂに5Gbpsが設定されている場合など、設定帯域幅Ｂがネットワークカード１１４の帯域幅よりも小さいと判定された場合、ステップＳ５６において、送信レート制御部１６２は、設定帯域幅Ｂを広くする。具体的には、送信レート制御部１６２は、例えば、下記の式（３）を用いて、設定帯域幅Ｂの値を増加させる。
【０１０８】
設定帯域幅Ｂ＝設定帯域幅Ｂ＋１（Mbps）・・・（３）
【０１０９】
つまり、例えば、設定帯域幅Ｂが5Gbpsに設定されている場合について考えると、設定帯域幅Ｂ＋１（Mbps）は、5（Gbps）+1（Mbps）=5.001（Gbps）となる。これにより、通信装置１０１は、受信側の通信装置１０３からポーズフレームを受信せず、かつ、パケットの送信が成功している場合、設定帯域幅Ｂの値は、ネットワークカード１１４の帯域幅を超えない範囲で、5.001（Gbps），5.002（Gbps），5.003（Gbps），・・・と増加する。
【０１１０】
すなわち、通信装置１０１は、ポーズフレームを受信せず、かつ、パケットの送信が成功している場合、例えば、5.001（Gbps），5.002（Gbps），5.003（Gbps），・・・のように順次送信レートを上げながら、ネットワーク１０２を介して通信装置１０３にパケットを送信し続ける。
【０１１１】
換言すれば、送信レート制御部１６２は、IEEE802.3x規格に準拠したポーズフレームによってあらかじめ定められた時間を経過するか、またはネットワーク１０２を介して、受信側の通信装置１０３からIEEE802.3x規格に準拠したゼロポーズフレームが送信されてきた場合、送信データのデータ量が増加するように、送信レートを制御しているとも言える。
【０１１２】
以上のように、通信装置１０１においては、ポーズフレームを受信していない場合、ネットワークカード１１４（またはネットワーク１０２）の帯域幅を超えない範囲内で、設定帯域幅Ｂの値は増加し、ポーズフレームを受信した場合、設定帯域幅Ｂの値は減少する。その結果、送信側の通信装置１０１において、設定帯域幅Ｂに対応する送信レートは、受信側の通信装置１０３の処理能力に応じた速度となる。
【０１１３】
なお、送信レートの制御は、一般的に、TCP（Transmission Control Protocol）のレート制御のように、AIMD（Additive Increase Multiple Decrease）によって、帯域を広くするときには少しの値を加えて、帯域を狭くするときには多くの値を減らすように行われる。そこで、本実施の形態では、帯域を広くするときには設定帯域幅Ｂに1Mbpsを加え、帯域を狭くするときには設定帯域幅Ｂの半分となるようにしたが、他の値を加えたり、減じたりしてもよい。要は、受信側でパケットの受信に成功したときには帯域を広くし、ポーズフレームを受信したときには帯域を狭くすればよいのであって、その演算方法は任意である。
【０１１４】
ところで、本出願人は、特開２００６−２９３７９９号公報において、DMA送信間隔制御の処理を先に提案している。本実施の形態では、このようなDMA送信間隔制御の処理を適用して、メモリ１１３上の送信データをDMAにより読み出して送信する際の送信間隔を調整することで、ネットワークカード１１４の送信バッファ１２１におけるバッファ溢れを回避することができる。そこで、次に、このDMA送信間隔制御の処理を適用したデータバス１１２の転送レートを制御する処理を説明する。
【０１１５】
図１０は、送信制御部１５１による、DMA送信間隔制御の処理を適用したデータバス１１２の転送レートを制御する処理を説明するフローチャートである。
【０１１６】
ステップＳ７１において、転送レート制御部１６１は、設定帯域幅Ｂを設定する。例えば、転送レート制御部１６１は、設定帯域幅Ｂとして、ネットワークカード１１４（またはネットワーク１０２）の帯域幅10Gbpsを設定する。
【０１１７】
ステップＳ７２およびＳ７３の処理において、図６のステップＳ３２およびＳ３３における場合と同様に、送信制御部１５１による、メモリ１１３に蓄積される送信データの存在の確認と、送信バッファ１２１の空き状況の確認が行われる。
【０１１８】
ステップＳ７４において、DMA制御部１６３は、ディスクプリタにパケット単位の情報をセットする。
【０１１９】
例えば、DMA制御部１６３は、ネットワークカード１１４（またはメモリ１１３）のディスクプリタに、対応するパケットのメモリ１１３におけるアドレス、そのパケットのサイズ、およびDMAの間隔を示す時間を、ネットワークカード１１４のディスクリプタにセットする。
【０１２０】
具体的には、DMA制御部１６３は、例えば、下記の式（４）を用いて、DMA転送の間隔を調整するための時間を算出する。
【０１２１】
DMA間隔＝パケット長÷設定帯域幅Ｂ・・・（４）
【０１２２】
つまり、例えば、帯域幅10Gbpsのネットワークカード１１４によって、1,000バイトのパケットを連続して送信する場合について考えると、パケット長÷設定帯域幅Ｂは、1,000（byte）/10（Gbps）=8×1,000（bit）/10×1,000,000,000（bit/sec）=8/10,000,000（sec）=0.00000008=0.8（μs）となる。すなわち、DMA間隔は、0.8マイクロ秒となる。
【０１２３】
そして、DMA制御部１６３は、対応するパケットのメモリ１１３におけるアドレスおよびサイズとともに、DMA間隔として、0.8マイクロ秒をネットワークカード１１４のディスクリプタにセットする。
【０１２４】
これにより、例えば、ネットワークカード１１４においては、CPU１１１からのディスクリプタにしたがって、パケット単位の送信データが、DMA転送によって送信バッファ１２１に蓄積される。そして、ネットワークカード１１４は、その送信データを格納したパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【０１２５】
ステップＳ７５において、DMA制御部１６３は、メモリ１１３とネットワークカード１１４の送信バッファ１２１との間で行われるDMA転送が終了したか否かを判定する。
【０１２６】
ステップＳ７５において、DMA転送が終了していないと判定された場合、ステップＳ７５に戻り、上述した処理が繰り返される。
【０１２７】
すなわち、ディスクプリタにセットされたDMA間隔に基づいて、メモリ１１３とネットワークカード１１４の送信バッファ１２１との間でDMA転送が行われるので、そのDMA転送が終了し、ステップＳ７５において、DMA転送が終了したと判定されるまで、ステップＳ７５の処理が繰り返される。
【０１２８】
一方、ステップＳ７５において、DMA転送が終了したと判定された場合、ステップＳ７２に戻り、ステップＳ７２乃至Ｓ７５において、例えば、送信アプリケーションからの送信データがメモリ１１３に存在し、かつ、送信バッファ１２１に空きがある場合、DMA制御部１６３によって、パケットのメモリ１１３におけるアドレス、そのパケットのサイズ、およびDMA間隔がディスクプリタにセットされるので、DMAによって、パケットをメモリ１１３から送信バッファ１２１に転送させる処理が繰り返される。
【０１２９】
このように、通信装置１０１においては、DMA転送の間隔を調整するための遅延時間を示しているDMA間隔に基づいて、データバス１１２の転送レートを制御することで、送信バッファ１２１が溢れることを回避することが可能となる。
【０１３０】
次に、図１１のタイミングチャートを参照して、送信制御部１５１（すなわち、CPU１１１）によって実行される図１０のDMA送信間隔制御の処理を適用したデータバス１１２の転送レート制御の処理が行われているときの、CPU１１１、メモリ１１３、およびネットワークカード１１４の動作について説明する。
【０１３１】
図１１には、図７と同様に、図中上から順に、CPU１１１（送信制御部１５１）のタイミングチャート、メモリ１１３のタイミングチャート、ネットワークカード１１４のタイミングチャートを示されている。なお、図１１の各タイミングチャートにおいて、水平方向の実線は、時間軸を表わしており、図中下に示されるように、時間の方向は、図中左から右に向かう方向とされている。
【０１３２】
例えば、図１０のステップＳ７４において、DMA制御部１６３によって、パケットのメモリ１１３におけるアドレス、そのパケットのサイズ、およびDMA間隔がディスクプリタにセットされたとき、図１１に示されるように、CPU１１１によって、送信データのパケット単位ごとに記述されたディスクリプタＤ21、Ｄ22、およびＤ23乃至Ｄ2m（ｍは自然数）（ディスクリプタＤ2mは図示せず）がデータバス１１２を介してネットワークカード１１４にセットされる。
【０１３３】
つまり、このディスクリプタＤ21、Ｄ22、およびＤ23乃至Ｄ2mには、それぞれ、例えば、対応するパケットのメモリ１１３におけるアドレス、そのパケットのサイズ、およびDMA間隔が記述されている。
【０１３４】
ネットワークカード１１４は、ディスクリプタＤ21に記述されているDMA間隔が経過した後、例えば、ディスクリプタＤ21に記述されているパケットのアドレスおよびサイズの情報に基づいて、メモリ１１３の当該記録開始アドレスを先頭とする当該パケット長のデータを、メモリ１１３から送信バッファ１２１にDMAにより転送させる。これにより、ネットワークカード１１４は、DMA転送されたパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【０１３５】
そして、ディスクリプタＤ22に記述されているDMA間隔が経過した後、ネットワークカード１１４は、ディスクリプタＤ21と同様にディスクリプタＤ22に記述されている、例えば、パケットのアドレスおよびサイズの情報に基づいて、メモリ１１３に記憶されている送信データを格納したパケットを、メモリ１１３から送信バッファ１２１にDMAにより転送させて、そのパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【０１３６】
同様に、ディスクリプタＤ23乃至Ｄ2mにそれぞれ記述されているDMA間隔が経過した後、ネットワークカード１１４は、ディスクリプタＤ23乃至Ｄ2mにそれぞれ記述されている、例えば、パケットのアドレスおよびサイズの情報に基づいて、メモリ１１３に記憶されている送信データを格納したパケットを、メモリ１１３から送信バッファ１２１にDMAにより転送させて、そのパケットを、ネットワーク１０２を介して通信装置１０３に送信する。
【０１３７】
このように、CPU１１１（送信制御部１５１）が、ソフトウェアの処理によって、ディスクリプタにセットするDMA間隔を調整することで、DMA転送の間隔を示す時間にしたがって、ハードウェア側が動作し、メモリ１１３とネットワークカード１１４の送信バッファ１２１との間で行われるDMA転送の間隔を調整することができる。その結果、通信装置１０１において、データバス１１２の転送レートが調整され、送信バッファ１２１が溢れることを回避することが可能となる。
【０１３８】
以上のように、CPUに負荷をかけずに、ネットワークカードの内部に設けられた送信バッファにおけるバッファ溢れを抑制し、回避することができる。つまり、送信バッファに空きができたことを、ネットワークカードから割り込み処理で通知されたり、ネットワークカードの状態をポーリングして確認する必要がないので、DMA処理用のプログラムが簡略化され、CPUの負荷を軽減することが可能となる。
【０１３９】
また、受信側の通信装置でのパケット受信処理負荷を軽減するともに、不要なポーズフレームの発生を抑制することが可能となる。これにより、フロー制御自体の発生を抑制することが可能となる。
【０１４０】
なお、上述した例では、説明を分かり易くするために、CPU１１１は、ネットワークカード１１４にディスクプリタをセットするとして説明したが、メモリ１１３のディスクプリタにセットするようにしてもよい。
【０１４１】
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１４２】
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１４３】
【図１】従来の通信装置の構成を示すブロック図である。
【図２】従来の通信装置と他の通信装置との間で行われる通信について説明する図である。
【図３】DMA制御の処理について説明するフローチャートである。
【図４】本発明の一実施の形態である通信装置の構成例を示すブロック図である。
【図５】CPUがプログラムを実行することによって実現される機能ブロック図である。
【図６】転送レート制御の処理について説明するフローチャートである。
【図７】転送レート制御の処理について説明するタイミングチャートである。
【図８】ポーズフレームによる状態遷移を説明する図である。
【図９】送信レート制御の処理について説明するフローチャートである。
【図１０】DMA送信間隔制御の処理を適用した転送レート制御の処理について説明するフローチャートである。
【図１１】DMA送信間隔制御の処理を適用した転送レート制御の処理について説明するタイミングチャートである。
【符号の説明】
【０１４４】
１０１  通信装置，  １０２  ネットワーク，  １０３  通信装置，  １０４  ドライブ，  １０５  リムーバブルメディア，  １１１  CPU，  １１２  データバス，  １１３  メモリ，  １１４  ネットワークカード，  １２１  送信バッファ，  １２２  受信バッファ，  １５１  送信制御部，  １６１  転送レート制御部，  １６２  送信レート制御部，  １６３  DMA制御部
【図１】
2008172515.tif 000003
【図２】
2008172515.tif 000004
【図３】
2008172515.tif 000005
【図４】
2008172515.tif 000006
【図５】
2008172515.tif 000007
【図６】
2008172515.tif 000008
【図７】
2008172515.tif 000009
【図８】
2008172515.tif 000010
【図９】
2008172515.tif 000011
【図１０】
2008172515.tif 000012
【図１１】
2008172515.tif 000013