パケット・ロスを低減したネットワーク・オフローデング
【課題】ルータ・バッファの疲労とデータ・パケットの欠落、またはそれらの何れかを避けるか、または最小化する。
【解決手段】第一データ送信速度を持つ送信ユニットからデータ・ネットワーク102を介して第一データ受信速度を持つ第一の送り先にデータの第一セグメント101を送信する手段に関して、第一データ送信速度が第一データ受信速度よりも大きい所では、第一セグメントの少なくとも一部を一つ以上のデータ・パケットとして第一の送り先に送信ユニットから第一の送り先の方向だけに送っている間に送信ユニットから第一の送り先への第一送信速度をスイッチングによって効果的に低減し、第二セグメント101の少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加の送り先に送信ユニットから一つ以上の追加の送り先の方向だけに送る。
【解決手段】第一データ送信速度を持つ送信ユニットからデータ・ネットワーク102を介して第一データ受信速度を持つ第一の送り先にデータの第一セグメント101を送信する手段に関して、第一データ送信速度が第一データ受信速度よりも大きい所では、第一セグメントの少なくとも一部を一つ以上のデータ・パケットとして第一の送り先に送信ユニットから第一の送り先の方向だけに送っている間に送信ユニットから第一の送り先への第一送信速度をスイッチングによって効果的に低減し、第二セグメント101の少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加の送り先に送信ユニットから一つ以上の追加の送り先の方向だけに送る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にネットワーク・オフローデングに関わるものである。
【0002】
特に、本発明はデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一送り先に送信する手段とデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一送り先に送信する装置に関係する。
【0003】
更に、本発明は一つ以上の処理ユニットに本発明による手段を実行させるために、その上に保存された命令を有するコンピュータ読み取り可能な媒体に関係する。
【背景技術】
【0004】
ネットワーク割り込み可能な装置が比較的大きなデータの塊(以後、セグメントと言う)、例えばJPEG画像あるいは何か他種のデータをネットワーク上に送信するとき、物理的な媒体に送信される前にネットワーク割り込み可能な装置によってそのセグメントは普通いくつかのデータ・パケットに分割される。一例として、イーサネット(登録商標)・パケットの最大ペイロード・サイズは1500バイトである。追加として、TCPとIPヘッダーのようなプロトコル・ヘッダーが各データ・パケットに対して生成されなければならず、そしていくつかのプロトコル・スタック(TCP/IP)に対して、一つまたはいくつかのチェックサムが各データ・パケットに関して計算されなければならない。ここで、その一つ以上のチェックサムはデータ・パケットのヘッダーに保存される。
【0005】
普通、データの塊またはセグメントはペイロードのサイズよりも大きい(原理的には、セグメント・サイズは例えば1バイト程度に小さいこともある)。しばしば、それはペイロード・サイズの数倍になる。
【0006】
ヘッダーとチェックサムを含むこれらのパケットを生成するプロセスは伝統的にはソフトウェアで行われる。これは相当な量のCPU動作を使用することがあり、それはCPUの性能とネットワーク・スピードに依存する。
【0007】
これに向けたいろいろな解決法がハードウェアの中でいろいろな機能を実装することによって提案されてきた。そのような処理はまた、しばしばネットワーク・オフローデング(ハードウェア)と言われている。
【0008】
ネットワーク・オフローデングを行うために利用できるハードウェア解決法がいくつか存在する。ハードウェアでネットワーク・オフローデングを行うための従来の方法は以下のように要約することが出来る。
− メモリからデータの1MTU(最大転送単位、すなわち使用したネットワーク媒体上の1パケットの最大ペイロード・サイズ)を読む。
− メモリから読んでいる間にペイロードの上でチェックサムを計算する。
− ヘッダーを生成する。
− ヘッダーとペイロードを含むパケットを送信する。
− 送信している間に、メモリから1つの追加MTUのデータを読む。
− セグメント、即ちデータの塊における全てのパケットが送信されるまで続ける。
【0009】
この解決法の欠点は多くのパケットを高速で送ることがあって、比較的低速で結合された受信クライアントにとって問題を引き起こすかもしれないということである。例として、比較的低速なネットワーク(例えば、1メガビット/秒のネットワーク)に接続されたクライアントに大きなセグメントを送信したいと思っている比較的高速なネットワーク(例えば、1ギガビット/秒のネットワーク)に接続された装置を考えてみよう。この場合には、装置とクライアント間の転送パスにあるルータはクライアントがそれを全部読み終わるまでデータをバッファしなければならない。これはルータ内のバッファの疲労を来たすかも知れない。更に、ルータのバッファ・サイズは制限されていて、かつ他の転送パスのためにデータをバッファする必要もあるとき、このことはデータ・パケットを欠落させ、かつそれによって再送を要求するようになるかも知れない。パケット欠落の可能性はセグメント・サイズが大きくなればなるほど増加する。
【0010】
この問題に対して以前に知られている解決法は、普通ソフトウェアで実施され、各送り先へは限られた数のパケットのみを送り、かつ追加のデータ・パケットを送る前にデータ確認(ACK)のための待機を含むものである。しかしながら、これはCPUの使用を増加し、かつその待機のためにデータを送信するに必要な全体の時間を遅らせることもあるかも知れない。
【0011】
例えば、特許文献1はACKを使用したハードウェア実施について述べている。この欠点はACKの使用を頼りにするTCP/IPのようなプロトコルのみがサポートされうるということである。
【0012】
それ故に、ルータ・バッファの疲労やデータ・パケットの欠落の問題に対処する必要がある。
【0013】
これは、どこでパケットが同じ、または同様な速度でインターリーブされるかということを除いて、パケットを異なった送り先にインターリーブすることによって少なくともある範囲までは対処されてきた。
【0014】
特許文献2は殆どの大きな多重パケット・メッセージと低速パス・メッセージに関するプロトコル処理を避ける高速パスを提供するデータ通信用の通信処理装置(CPD)を開示している。ネットワーク・プロセッサはホストのプロトコル・スタックを含む低速パスからのメッセージか、またはホストのプロトコル・スタックを迂回する高速パスからのメッセージかのどちらかを選択する。
【0015】
特許文献3は、殆どのメッセージを処理し、データ転送を加速し、ホストCPUからの時間集中的な処理問題をオフロードするプロトコルを避ける高速パスを提供するデータ通信のためにホスト・コンピュータと共に動作する装置を開示している。ホストは高速パスか、または低速パスか、どちらかの処理のために選択されたメッセージを有効にするための処理能力を有している。
【0016】
特許文献4は、TCP/IPプロトコル処理演算を並列で行う状態マシーンを含むTCPオフロード・エンジン(TOE)装置を開示している。三つの異なった観点から、それはTCP変数とヘッダーの値、多重TCP状態変数の更新を保存し、DMA手段を設定する。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】米国特許出願公開第2006/034176号明細書
【特許文献2】米国特許第7,174,393号明細書
【特許文献3】米国特許第7,167,926号明細書
【特許文献4】米国特許第6,996,070号明細書
【発明の概要】
【発明が解決しようとする課題】
【0018】
本発明の目的はルータ・バッファの疲労とデータ・パケットの欠落、またはそれらの何れかを避けるか、または最小化する手段(そして対応する装置)を提供することである。
【0019】
更なる目的はセグメント化処理のためのCPU使用を低減することである。
【課題を解決するための手段】
【0020】
これはデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一の送り先に送る手段によって達成され、その送信ユニットは第一のデータ送信速度を有しており、第一の送り先は第一のデータ受信速度を有しており、ここでは第一のデータ送信速度が第一のデータ受信速度よりも大きい。その手段は、前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先へ送信している間に送信ユニットから第一の送り先への第一送信速度を、スイッチングすることによって第一送信速度を効果的に低減することと、その送信は送信ユニットから第一の送り先の方向だけに向いていることと、少なくとも第二セグメントの少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加の送り先に送ることと、その送信は送信ユニットから一つ以上の追加の送り先の方向だけに向いていることと、前記スイッチングは前記第一セグメントと少なくとも前記第二セグメントが送り終わるまで反復されることを包含する。
【0021】
一つ以上の待ち状態を前記の少なくとも第一セグメントのデータ・パケットを第一の送り先に送られている間に挿入することが可能である。
【0022】
この方法で、送信システムの総合パケット速度が維持されている間、クライアントまたは送り先へのパケット速度が低減される。それによって比較的低速のクライアントへのデータが最高速度で送られることがないのでパケット・ロスとルータ・バッファの疲労、またはそれらの何れかの発生する確率の低減が達成される。
【0023】
加えるに、前のクライアントに与えられたデータが完全に送信し終えるまで他のクライアントへの送信は待たないので、全ての送り先は(多重の送り先に送るとき)早くデータを獲得する。クライアントはこの方法で受信データの処理を早く始めることができる。
【0024】
このような方法の有利性は任意のプロトコルに対してサポートを可能にすることにある。即ち、それはACKを用いないプロトコルと同様にACKを用いるプロトコルをサポートする。例えば、UDPの上でRTPのサポートが提供される。これは前述の米国特許出願公開第2006/034176号明細書で記述されているACKに基づいた通信に比べて有利な点である。
【0025】
一実施態様において、この手段は更に、スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを定義する前記第一セグメントの第一ポジションを保存すること、および/または如何に多くの第二セグメントが送信されたか、そしていつ前記第一セグメントまたは第二セグメントの送信が再び切り替えられるかを定義する前記第二ポジションの位置を保存することと、各保存した位置から送信を再開することと、を包含する。
【0026】
一実施態様において、スイッチングは送信するパターンに従って行われる。
【0027】
一実施態様において、送信するパターンは第一送り先の受信速度および/または少なくとも一つの前記の追加送り先の受信速度に基づいて決定される。
【0028】
一実施態様において、少なくとも第一セグメントのデータは前記送信ユニットのメモリに保存される。ここで、前記第一セグメントのデータは前記メモリからダイレクト・メモリ・コントローラ(または、オフローデング装置)によって読まれ、そして前記第一セグメントの前記データをネットワーク・インターフェイスを介して更に与えるダイレクト・メモリ・アクセス装置に与えられる。ここでは、前記ダイレクト・メモリ・コントローラと前記ダイレクト・メモリ・アクセス装置が前記送信ユニットの中央処理装置をオフロードする。
【0029】
一実施態様において、ダイレクト・メモリ・アクセス装置は前記ダイレクト・メモリ・コントローラから前記ダイレクト・メモリ・アクセス装置に与えられたデータの上でチェックサムを計算するチェックサム・ユニットを包含する。
【0030】
一実施態様において、二次元リスト構造は前記スイッチングを制御し、前記二次元リスト構造はメモリ内のヘッダー・データについて少なくとも一つのデータ記述子に関する第一のコンテキスト記述子と、前記第一セグメントのデータについての少なくとも一つのデータ記述子に関係する第二のコンテキスト記述子を包含する。ここで、前記第二のコンテキスト記述子は前記第一セグメントの何バイトがスイッチングの前に送られるかの表示を包含する。そこで前記手段は前記ヘッダー・データを得るための前記第一のコンテキスト記述子の処理と、前記第一セグメントのデータを得るための前記第二のコンテキスト記述子の処理と、前記表示に従って多数バイトのデータを送信することとを包含する。
【0031】
一実施態様において、二次元リスト構造は前記第一セグメントの送信を制御し、前記二次元リスト構造は前記第一セグメントのデータについて少なくとも一つのデータ記述子に関する第一のコンテキスト記述子と、少なくとも二つのデータ記述子に関する第二のコンテキスト記述子と、二つの異なった送り先のためのヘッダー・データに関する各データ記述子とを包含する。ここで前記手段は、前記第一セグメントの少なくとも一部分を得るために前記第一のコンテキスト記述子を処理することと、前記二つの異なった送り先の内の一つのためのヘッダー・データを得るためと前記二つの異なった送り先のもう一つのためのヘッダー・データを得るために前記第二のコンテキスト記述子を処理することと、前記二つの異なった送り先のもう一方に前記第一セグメントの得られた部分を送ることと、を包含する。
【0032】
本発明はまた送信ユニットから第一の送り先へデータ・ネットワークを介してデータの第一セグメントを送信するための装置に関係する。送信ユニットは第一データ送信速度を有し、第一の送り先は第一データ受信速度を有している。ここで、第一データ送信速度は第一データ受信速度よりも大きい。その装置は、前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先に送信する間にスイッチングすることによって送信ユニットから第一の送り先への第一送信速度を効果的に低減するのに適合したダイレクト・メモリ・アクセス装置と、送信が送信ユニットから第一の送り先の方向だけに向いていることと、一つ以上の追加的な送り先に一つ以上のデータ・パケットとして少なくとも第二セグメントの少なくとも一部分を送信することと、送信が送信ユニットから一つ以上の追加的な送り先にだけ向いていることと、前記第一セグメントおよび/または少なくとも前記第二セグメントが送信し終わるまで前記スイッチングが反復されることと、を包含する。
【0033】
本装置の実施態様は本手段の実施態様に対応し、同じ理由によって同じ有利性を有する。本装置の有利な実施態様は請求項で定義され、以下に詳細に記述される。
【0034】
更に、本発明は、本発明にしたがって一つ以上の処理ユニットに本手段を実行させるための命令を保存したコンピュータ読み取り可能な媒体にも関わるものである。
【0035】
本発明のこれらと他の態様は、図で示される実例となる実施態様から明らかであり、また参照することによって明らかになる。
【図面の簡単な説明】
【0036】
【図1】送信中に二つのセグメントをインターリーブするプロセスの実例を図示している。
【図2a】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図2b】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図2c】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図3】一実施態様にしたがっていろいろなインターリーブされた送信のトラックを保つための構造の概観を図示している。
【図4】インターリーブされた送信のトラックを保つための構造の特殊な一例を図示している。
【図5】本発明によるインターリーブ・プロセスの一実施態様のフロー・チャートを図示している。
【図6】メモリから一度だけデータを読んでいる間に同じセグメントをいくつかのクライアントに送るのに有利なリスト構造例の実施態様を図示している。
【図7】ハードウェア・ネットワーク・オフローデングを持つ送信ユニットまたはシステムのブロック図を示している。
【図8】DMAコントローラの一実施態様のブロック図を示している。
【図9】ハードウェア・ネットワーク・オフローデングを有する送信ユニットまたはシステムと、ネットワークに接続された一つ以上のクライアントを含むシステムのブロック図を示している。
【図10】送信ユニットから受信機への送信の信号伝達図である。
【発明を実施するための形態】
【0037】
図1は送信中に二つのセグメント101をインターリーブするプロセスの一例を概略的に示している。第一セグメント(セグメント1)101と第二セグメント(セグメント2)101および各セグメントのパケットがネットワーク102を介して時間とともに送信される方法が示されている。
【0038】
一例として、各セグメントは10キロバイトのペイロードを含んでおり、ここで第一セグメントのペイロード・データは第一クライアント(示されていない)に送られ、これは比較的遅い。そして第二セグメントのデータは第二クライアント(示されていない)に送られる。これは比較的速い。この例ではMTUは1キロバイトである。
【0039】
そのとき、パケットはインターリーブ送信によって(px=クライアントx):p2 p2 p2 p1 p2 p2 p2 p1 p2 p2 p2 p1 p2 p1 p1 p1 p1 p1 p1 p1として送信される。この方法で、クライアント1へのパケット速度が低減されるが、この間送信システムの総合パケット速度は維持されている。送信されるデータ・パケットの特定の順序付けが適切な送信パターンに従って行われる。クライアント1へのパケット送信速度の低減はルータ・バッファの疲労および/またはデータ・パケットの欠落の可能性を避けるか、または少なくとも最小化するだろう。これはパケットがクライアント1へ‘遅れないでついて行ける’ことができるペースで送られるからである。更に、クライアント2へ全てのパケットが送られると、パケット送信速度を低く抑えておくために(それによって、更にバッファの疲労と、送信システムとクライアント1の間でのデータ・パケットの欠落を生じさせるのを避けるために、あるいは少なくともこの突発事故が起こる確率を低減するために)クライアント1への残りのパケットの間に一つ以上の待ち状態を挿入することが可能であろう。一つ以上の待ち状態を挿入する代わりに別の方法として、一つ以上の他のセグメントのためのデータ送信を開始することができる。例えば、今の例では、クライアントへの全てのパケットが送られたとき、クライアント3へのパケット(あるいは、クライアント2への新しいセグメント)がクライアント1への残りのパケットとインターリーブすることもあり得る。
【0040】
パケットはハードウェアでネットワーク・オフローデングを行う従来の方法に従って(前に述べたもののように)p1 p1 p1 p1 p1 p1 p1 p1 p1 p1 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2として送られる(第一セグメントが最初に送られるものと仮定すると)ことになる。
【0041】
もしプロセスがハードウェアで実施されるならば、CPUの使用はハードウェア・オフロードなしの解決方法と較べて劇的に低減される。
【0042】
更なる利点はクライアント2(第一セグメントが従来の方法にしたがって最初に送られるものと仮定すると)が、もしクライアント2へのパッケージの送信が始まる前に全てのパケットがクライアント1に送り終えるまでクライアント2が待つとするならば、それよりも早くデータを取得し、そして、それによって早くデータ処理を始めることができることである。
【0043】
図2a−2cは本発明にしたがってインターリーブするプロセスの実例を概略的に示している。インターリーブ送信中で時間内での三つの異なった点で三つのセグメント101(セグメント1、セグメント2、セグメント3)が示されている。三つのセグメント101は三つの異なったクライアント装置(示されていない)に送られる可能性がある。時間内の最初の点(図2a)は送信が始まる前である。時間内の第二の点(図2b)は送信中であり、時間内の第三の点(図2c)は送信が完了した後である。
【0044】
図2a−2cに於いて、表示が現在のセグメントに与えられている。即ち、そのセグメントが現在送信されるデータを持っている。更に、時間内の各点での各セグメントの黒い矢は既定のセグメントの如何に多くのデータがずっと送信されてきたか、ということを示している。送信された既定のセグメントのデータ量を示す点はネットワーク利用の減少を避けるために完全なパケット境界に位置している。
【0045】
DMA(ダイレクト・メモリ・アクセス)コントローラとDMA装置、DMAクライアント、あるいはネットワーク・オフローデング・ユニット(示されていない。以後、単にDMA装置と示す)は、以下にもっと詳細に説明するように、メモリ内でいくつかのデータ領域へのアクセス(例えば、各セグメントについて一つ)を行う。DMA装置は各データ領域において現在位置のトラックを保持する。送信、またはスイッチング・パターン(以後、単に送信パターンと示す)が得られるか、または導出される。そしてこの点において情報はそれを指示するDMAコントローラに与えられる。つまり、いつデータ領域をスイッチするか、−そしてそれによって他のセグメントへ向けてデータ送信を始める(もし、何か残っているならば)かということである。次にもっと詳細に説明するようにインターリーブ送信は比較的遅いクライアントへの送信速度を効果的に減少するので、その固有の送信パターンは低減されたパケット・ロスと共にネットワークをオフロードする。スイッチングするとき、DMA装置は自動的に送信されるべきデータを更に多く有する次のデータ領域を選択する。
【0046】
図2aはまだ何も行われていない状態を示している。ここで、各セグメントのデータが如何ほど送信されたかを示している、各指示が各セグメントを開始する場所にある。即ち、データはまだ何も送信されていない。セグメント1は、この特別な例では、現在のセグメントとして示されている。
【0047】
図2bはネットワーク・オフローデングとデータの送信が、ある時間行われた状況を示している。ここで、セグメント1の殆ど半分とセグメント3の全データがそれらの各クライアント装置または送り先(以後、単にクライアントとして示す)にネットワークを介して送信されている。現在、データはセグメント2から送信される。これは現在のセグメントとして示されている。DMAコントローラがDMA装置によってスイッチするように指示された後、それはセグメント1からデータを送信するようにスイッチする(セグメント3が完了して、現在は他のセグメントがないので)、そしてセグメント1からのデータの最後の送信の間に停止したところから取り出すことになる。
【0048】
このスイッチは、特定の送信に依存し、セグメント2の全てのデータが送信し終わった時、またはその前に行われる。もし前ならば、セグメント2に戻るときに送信がその点から再開できるようにセグメント2の現在位置が保存される。
【0049】
図2cは三つのセグメントの全てのデータが送信し終わったときの状態を示している。その時、DMAコントローラは仕事が終了したことをDMA装置に知らせ、つぎの命令を待つことになる。
【0050】
説明したように、三つのセグメントからデータを送信する間のジャンプやスイッチは特定の送信パターンに従って行われる。特定の送信パターンはデータを受信するいろいろなクライアントの能力によって影響をうける。考慮すべき一つのパラメータは例えば、いろいろなクライアントのネットワーク速度である。例えば、テストデータ・パケットをクライアントに送り、そして確認を待ちうけることによって、これは容易に測定することができる。代わりには、それは他の方法でも測定できるであろう。
【0051】
特別な例として、クライアント1と2のネットワーク(受信)速度を約2メガビット/秒、そしてクライアント3の(受信)速度を約4メガビット/秒としよう、その時(平均で、または一般に)セグメント3(クライアント3へ)からデータが多くの場合の約2倍送信されるはずである(即ち、セグメント3が現在のセグメントになる)。そして、例えば送信パターンはセグメント1からXデータを送信、セグメント3からXデータを送信、セグメント2からXデータを送信、セグメント3からXデータを送信、セグメント1からXデータを送信、などとなるはずである。
【0052】
他の例としては、二つの異なったクライアントに対して二つのセグメントを取ろう。ここで、一つのクライアントは他のクライアントよりも3倍速い。この時、送信パターンは例えば、セグメント1からXデータを送信、セグメント2から3*Xデータを送信、それから全てのデータが送信されるまで反復されるはずである。
【0053】
前に述べたように、送信速度を低く維持し、かつそうすることによって更にバッファの疲労やデータ・パケットの欠落を避けるために他のセグメントが完全に送信され終わったときに、待ち状態もまた一つ以上のセグメントに対して挿入されることが可能である。代わりに、一つ以上の追加セグメントに関するデータ送信が(例えば、同じまたは新しいクライアントに対して)開始されるはずである。
【0054】
図3は、実施態様に従っていろいろなインターリーブ送信のトラックを保持するための構造の概要を概略的に示している。
【0055】
一つ以上のクライアントにデータ・パケットとして送られるべき、メモリに保存されたデータへのアクセスを制御する記述子301、302を包含する二次元リスト構造が示されている。各記述子はDMA装置にそれがどのデータ型であるか(例えば、ヘッダー・データか、それともペイロード・データか)、かつそれをどのように扱うかを指示するメタデータを含むことがある。記述子はまた、セグメントの終点(EOS)やリストの終点(EOL)のようないろいろな状況を知らせるために一つ以上の制御フラッグを含むことがある。そのようなリスト構造はまた一般にスキャッタ・ギャザー・リスト(SGLs)として知られており、データを不連続なメモリからフェッチできるようにするものである。
【0056】
一つのタイプの記述子は、例えばデータ記述子302であり、それは実際のデータ・バッファ303のトラック、即ちメモリまたは保存ユニットと保存データはどのセグメントに属するか、を保持するために使用される。他のタイプの記述子は例えばコンテキスト301であり、それは(この実施態様によれば)データ記述子302を含む或る状態のリストのトラックを保持するために使用される。
【0057】
DMAの制御の下で、DMAコントローラはいくつかのコンテキストをスイッチすることができる。各コンテキストは、図3と以下の説明から分かるように一個のクライアントと例えば、その一個のクライアントに関するいくつかのセグメントと関連することがある。更に、いくつかのセグメントは同じセグメントに関連することがある−与えられたセグメントのヘッダー・データに関係するコンテキストと同じセグメントのペイロードに関係する他のコンテキストについては後で分かる。
【0058】
各スイッチで、DMA装置はリストの状態を保存する(または、しない)ように指示されることが可能である。リストの中でEOLに到達すると、与えられたコンテキストは無効になり(または、代わりに除去され)、そしてDMA装置は二度とそのコンテキストにスイッチしない。DMA装置は好ましくも一つ(あるいは、それ以上)のコンテキスト記述子を記憶することもある(普通は保存要求を低減するには、単に一個で充分である)。
【0059】
図3で示される特殊な例では、コンテキスト1とコンテキスト2はコンテキスト記述子301であり、一方においてデータ1、データ2、データ3、データ4はデータ記述子302である。
【0060】
それ故に、コンテキスト記述子コンテキスト1とコンテキスト2によって与えられるように、典型的なリスト構造は二つのコンテキストを包含する。
【0061】
コンテキスト1は、データ記述子データ1とデータ3によってそれぞれバッファ1およびバッファ2の303に対してどの点であるかが示されるので、データの一個のセグメントを識別する。もし、セグメントが一個のバッファに保存することができるならば、たった一個のデータ記述子がコンテキスト・リストに存在するだろう。データ記述子データ3は更に二つのセットフラッグを包含する。即ち、EOSとEOLであり、セグメントはもはやコンテキスト1の一部分ではなく(EOS)、そしてデータ3はコンテキスト1の最後のリスト要素である(EOL)であることを伝えている。
【0062】
コンテキスト1が単にデータの一個のセグメントに関係しているということはリスト・コンテキスト1がEOLに到達する前に唯一のEOSのみを言及し、含んでいるということから理解できる。
【0063】
同様な方法によって、データ記述子302データ2とデータ4によってバッファ3とバッファ4の303に対してそれぞれどの点かが示されるので、コンテキスト2は二つのセグメントを識別する。もし、二つのセグメントが単一のバッファに保存されるならば、データ2とデータ4は同じバッファを指定するだろう(しかし、二つの異なった位置で)。データ2はセットEOSフラッグを含み、データ4はセットEOSとセットEOLフラッグを包含する。
【0064】
コンテキスト2記述子はまた、現在もはやDMA装置に処理されているコンテキストはない、即ち現在送信されるべき付加データはない、ということを伝達するセットEOLフラッグを含んでいる。
【0065】
コンテキスト2がデータの二つのセグメントに関係しているということはリスト・コンテキスト2がEOLに到達する前に二つのEOSを含んでいるということから理解できる。
【0066】
最も簡単な場合、一つの送り先に送信されている唯一のセグメントがある。そして、これは最速で(即ち、待ち状態が必要ない)パケットを受信することができ、そのリスト構造は二つのデータ記述子を有する一次元リストに‘収縮する’。二つのデータ記述子のうちの一つはヘッダー・データを指定し、もう一つはセグメントのペイロード・データを指定している。この場合には、インターリーブ送信は必要なく、コンテキスト記述子も必要ない。
【0067】
図4はインターリーブ送信のトラックを保持するための特別な構造の一例を概略的に示している。
【0068】
ここでは、特別なリスト構造が設定され、一例として、四つのコンテキスト301であるコンテキスト1、コンテキスト2、コンテキスト3、コンテキスト4を含んでいる。
【0069】
コンテキスト記述子301のコンテキスト1はデータ記述子302のデータ1とコンテキスト記述子301のコンテキスト2を参照する。データ記述子302のデータ1はメタデータとしてEOLとEOSフラッグを含み、そしてデータがバッファまたは他の適当なメモリに保存されている既知のセグメントであるセグメント1のヘッダー・データ304を参照する。
【0070】
コンテキスト記述子301のコンテキスト2はデータ記述子302のデータ2とコンテキスト記述子301のコンテキスト3を参照する。データ記述子302のデータ2はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント1に関してペイロード・データ305を参照する。
【0071】
コンテキスト記述子301のコンテキスト3はデータ記述子302のデータ3とコンテキスト記述子301のコンテキスト4を参照する。データ記述子のデータ3はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント2に関してヘッダー・データ304を参照する。
【0072】
コンテキスト記述子301のコンテキスト4はデータ記述子302のデータ4とコンテキスト記述子301のコンテキスト1をもう一度戻って参照する。データ記述子302のデータ4はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント2に関してペイロード・データ305を参照する。
【0073】
インターリーブ送信のためのリスト構造は本発明にしたがって送信中に処理され、そしてどう動作するか、どこからデータを読み出すか(DMAコントローラを介して)、データは何の型か、いつセグメントをスイッチするか、などをDMA装置に指示する。
【0074】
示されている典型的な構造について得られたプロセスはそのとき例えば以下のように要約できるだろう。
【0075】
1.そのとき、DMAコントローラにセグメント1に属しているヘッダー・データをDMA装置への配信を始めさせ、そして、それからネットワークを介してそれぞれのクライアントまたは送り先に供給できる、コンテキスト1を処理しなさい。
【0076】
2.ヘッダー・データが送信された後、DMAコントローラはコンテキスト2にスイッチするようにDMA装置に指示される。セグメント2へのデータ送信(即ち、コンテキスト3と4)にスイッチする前に、セグメント1の全てのペイロード・データが送信されるか、されないかに依存するのでコンテキスト1、即ちヘッダー・データが再び必要とされるかどうか、ということはこの段階では知られていない。それ故に、DMAコントローラは現在のコンテキストの位置を保存しているDMA装置なしでコンテキスト2にスイッチするように指示される。DMA装置はこのコンテキスト、即ちコンテキスト1を思い出すように指示される。
【0077】
3.コンテキスト2にスイッチした後、DMAコントローラはセグメント1のペイロード・データ(一つ以上のMTU)をDMA装置に配信し、それから各クライアントまたは送り先にネットワークを介してそれを供給することができる。
【0078】
4.例えば、特定の送信パターンに依存するある量のデータを送った後、DMA装置はコンテキスト3にスイッチするように指示される。例えば、スイッチング時間は、ある特定数のMTUが送信された後で決定される。そうような数はコンテキスト記述子メタデータで特定される。その数は全ての、またはいくつかのいろいろなコンテキストに関して同じであるか、または好ましい送信パターンによって特定されたものとは異なることもある。各送信パケットに関して、内部カウンターがインクリメントされることもある。内部カウンターの値がコンテキスト記述子に保存された値に一致するとDMA装置はコンテキストをスイッチし、内部カウンターをクリアするように指示される。もしスイッチングがセグメント1の全ペイロード・データが送信され終わる前に行われると、コンテキスト2にもう一度戻った時に送信がその点から再開できるようにDMA装置は現在の位置を保存する。例えば、DMA装置はコンテキスト記述子、即ちコンテキスト2の中の変数、フィールドまたは同様なものの中に、位置を保存することができる。一例として、あるフィールドが使用された最後のデータ記述子を保存するために使用され、他のフィールドはそのデータ記述子の中へ如何に深くデータが処理されたかを保存することもある。セグメントの終わりに到達すると、すべてのペイロード・データは送信されており、それ故にコンテキスト1とコンテキスト2はもはや必要とされない。コンテキスト2でEOSフラッグがセットされる。コンテキスト1を無効にするために、DMA装置は前に思い出した(前のステップ2を参照せよ)コンテキストを修復するように指示され、そしてそのコンテキストは再び無効にされる(セグメント1のペイロード・データが送信されてしまうとセグメント1のヘッダー・データもまた必要とされないので)。コンテキスト1はまたEOSフラッグを設定することによって無効にすることができる。コンテキスト1とコンテキスト2を無効にした後、DMA装置は次のコンテキストにスイッチする。この例では、それはコンテキスト3である。
【0079】
5.コンテキスト5で、DMAコントローラはセグメント2に属するヘッダー・データを(セグメント1に関して前のステップ1に従って)DMA装置に配信する。それから、ネットワークを介して各クライアントまたは送り先にそれを供給することができる。
【0080】
6.ヘッダー・データが送信されると、DMA装置はクライアント4にスイッチし、ここで、セグメント2のペイロード・データが送信される。コンテキスト4にスイッチする前に、コンテキスト3は思い出されるが(前のステップ2と同じように)、コンテキスト3の位置は保存されない。
【0081】
7.コンテキスト4にスイッチした後、DMAコントローラはセグメント2のペイロード・データ(一つ以上のMTU)をDMA装置に配信する。それから、ネットワークを介して各クライアントまたは送り先にそれを供給することができる。
【0082】
8.送信パターンに依存する特定の時刻に、DMA装置は次のコンテキストにスイッチする(この例では、コンテキスト1)、ここで、もしセグメント2の全てのペイロード・データが送信される前にスイッチングが起これば、コンテキスト4の送信データの現在の位置が保存される。さもなければ、コンテキスト3は呼び戻されて、無効にされる。そして、コンテキスト4もまた無効にされる(前のステップ4と同じように)。
【0083】
9.コンテキスト1で、DMA装置はセグメント1に関連するヘッダー・データを受信し、かつ送信する。そして保存された位置はなかったので、全ヘッダーは再び送信される。ヘッダー・データが送信された後、プロセスはコンテキスト2にスイッチし、コンテキスト1の位置は保存されない。
【0084】
10.コンテキスト2で、送信が保存された位置から再開される(それは、ステップ4で保存されている)、そしてセグメント1の追加されたペイロード・データの一つ以上のMTUが送信される。
【0085】
プロセスはセグメント1とセグメント2の全てのペイロード・データが送信し終えるまで継続する。述べたように、他が終わる前にセグメントのペイロード・データが送信されると一つ以上の待ち状態が挿入されることがある。
【0086】
一実施態様に於いて、データ記述子302は、データ・バッファの始めと終わり(即ち、関連するデータ(ヘッダーまたはペイロード)が保存されている所定のセグメントのメモリ位置を表わす変数を含む構造を有している。更に、データ記述子の構造はEOSとEOL、および次の記述子を示すポインタと、DMA装置が次に何をしたら良いかを指示するためのメタデータ・フィールドなどを示すための制御フラッグを含むことがある。
【0087】
一実施態様において、コンテキスト記述子の構造はデータ記述子リストの位置のトラックを保持するための変数を保存することがある。コンテキストがスイッチされる時、DMA装置(示されていない。例えば、図7と図8を参照せよ)はコンテキストの中にある位置を更新するように指示される。次回、同じコンテキストが使用されるとき、DMA装置はDMAコントローラに保存された位置で開始するように指示をする。
【0088】
この工程を一般的に図5に関連して示し、そして説明する。
【0089】
図5は本発明によるインターリーブ・プロセスの一実施態様のフロー・チャートを概略的に示している。装置または手段はステップ501でアイドル状態にある。データが送信に利用できるか、どうか、テスト502が行われる(割り込み、リクエスト、タイマーなどによって)。そうでないならば、アイドル状態が再開される。
【0090】
もしデータが転送に利用できるならば、一つのMTUのペイロードを含むデータ・パケットはステップ502で第一クライアントに送信される。その時、コンテキスト中でスイッチが行われるか、どうか(即ち、他のクライアントのために他のセグメントにスイッチされるべきか、どうか)がステップ504でチェックされる。スイッチが行なわれるべきか、どうかということは各コンテキストにあるリスト終点(EOL)への到達、または特定量のデータ(送信パターンに従って)が送信されたことによって始動されることがある。前に説明したように、例えばそのようなデータ量はコンテキスト記述子メタデータの中で特定されることがある。その数は全ての、またはいくつかのいろいろなコンテキストにとって同じかも知れないが、あるいは好ましい送信パターンによって指定された通りに変化することも可能である。
【0091】
もしスイッチが行われないときは、工程はステップ503にも戻り、そして他のMTUのデータを送信し続ける。
【0092】
もしスイッチが行われると、現在のコンテキストがペイロード・データを有するコンテキストか、ヘッダー・データを有するものであるかがステップ505でチェックされる。もし、それがヘッダー・データを有するコンテキストならば、全ての関連するペイロード・データが次のステップで送信されるかどうか(この場合には、後で再び必要とされない)、またはセグメントの一つ以上の追加されたスイッチが全てのペイロード・データが送信し終わる前に行われ(この場合には、ヘッダー・データが必要とされる)、そのために後で説明するように作業が次のコンテキストにスイッチするステップ506に進むかどうかに、これが依存するのでヘッダー・データが再び必要とされるか、どうかに関する情報はない。
【0093】
もし現在のコンテキストがペイロード・データを含むならば、現在のコンテキストに関してリスト終了(EOL)点に到達しているか、どうかをチェックするステップ507で他のテストが行われる。もしコンテキストのリスト終了点でないならば、現在のコンテキストはステップ508で、後で使用するために保存される。そして現在の位置は(即ち、所定のセグメントでデータが送信し終えるまで)ステップ509で保存される。後で説明するように、ステップ509の後、作業は次のコンテキストへスイッチするステップ506に進行する。
【0094】
リスト終了点に到達すると、その時は一つのコンテキストに関して全てのセグメント(単に一つであることもある)が送信し終わっており、ヘッダーとペイロード・データはもはや必要ではない。この場合は、DMA装置はステップ510で現在のコンテキストを保存するように指示され、そしてリスト終了点に到達したのでこのコンテキストもまた無効にされる。
【0095】
それからDMA装置は、前にステップ508の間で保存されたコンテキストを修復し、ステップ512でそのコンテキストを無効にするように、ステップ511で指示され、そしてヘッダー・コンテキストを無効にする。この結果、ヘッダーとペイロードのコンテキストは無効にされる。
【0096】
ステップ512の後、作業は次のコンテキストにスイッチするステップ506に進行する。
【0097】
ステップ506の後、次のコンテキストが存在するか、どうかのテスト513がその時行われる。もし無いならば、即ち全てのコンテキストが十分に処理され、それによって全てのセグメントが送信し終わっているならば、ステップ501で待機状態が再開される。
【0098】
もし、コンテキストが存在するならば、そのコンテキストがまだ有効であるか、どうかがチェック514される。もし無いならば、ステップ506が再び行われ、それによって新しいコンテキストを選択する。もし新しいコンテキストが有効ならば(即ち、完全には処理されていないならば)更なるデータを送信するためにステップ503が再開される。
【0099】
ステップ506と二つの次のテスト513と514はDMA装置に有効なものが見つかるまでコンテキストを自動的にロードさせる。または、有効なものに会うこと無しに無効なコンテキストが再開されるか、どうかを例えばチェックすることによって、全てのコンテキストが無効であることが決定される。全てのコンテキストが無効であるとき、送信は完了している。
【0100】
図6は、メモリからデータを一度だけ読んでいる間に、同じセグメントをいくつかのクライアントへ送るのに有利なリスト構造例の実施態様を概略的に示している。二つのコンテキスト記述子301コンテキスト1とコンテキスト2を含む二次元リスト構造が示されている。ここで、コンテキスト1はコンテキスト2を参照し、コンテキスト2はコンテキスト1を参照し返している。
【0101】
コンテキスト1は、所定のセグメント1のペイロード・データ305を含むバッファを指示するデータ記述子303データ1を含んでいる。
【0102】
コンテキスト2は二つのデータ記述子303のデータ2とデータ3を含んでいる。ここで、データ2は第一クライアントまたは送り先である送り先1のセグメント1に関するヘッダー・データ304を含むバッファ、または他の適切なメモリ位置を指示しており、そしてデータ3は第二クライアントまたは送り先である送り先2のセグメント1に関するヘッダー・データ304を含むバッファ、または他の適切なメモリ位置を指示している。
【0103】
作業中、次のシーケンスが実施される。
【0104】
1.コンテキスト1がアクセスされ、DMAコントローラはセグメント1のペイロード・データの一つ以上のMTU(例えば、コンテキスト1のコンテキスト記述子メタデータの中で定義されるように)をバッファまたはメモリから取得、または読み取る。
【0105】
2.DMA装置は現在の位置を保存し、コンテキスト2にスイッチする。
【0106】
3.コンテキスト2を処理すると、DMAコントローラはデータ記述子データ2を用いた第一送り先へのヘッダー・データを取得する。それから、ステップ1で得られたセグメント1のペイロード・データはDMA装置(示されていない。例えば、図7と図8の704を参照せよ)によって送り先1と定義されるクライアント1に送信される。
【0107】
4.データ2はEOLセットを持っていないので、そのときデータ記述子データ3が処理され、これは第二の送り先、送り先2にヘッダー・データを供与する。そして、それから既に獲得され、セグメント1に向けて送信されたペイロード・データは(ステップ1で与えられたように)DMA装置によって送り先2によって定義されたとおりにクライアントに送信される。データ3のEOLとEOSフラッグが設定されると、次のコンテキストへのスイッチングが行われる。ヘッダーの情報はそのまま再び必要とされるので、位置は保存されない。次のコンテキストはこの例ではコンテキスト1であり、セグメント1の全てのペイロード・データが両方の送り先に送信し終えるまでそのステップが繰り返される。
【0108】
プロセスが二つ以上の送り先にデータを送信することを含むことがあると理解されるべきである。これは各送り先に関連するヘッダー情報を指定する一個のデータ記述子を必要するだけである。
【0109】
図7はハードウェア・ネットワーク・オフローデング700を有する送信ユニットまたはシステムの概略のブロック図を示している。送信ユニットまたはシステムがネットワークに接続される。ここにはまた少なくとも一つのクライアントが接続される(例えば、アド・ホック)。このネットワークは例えば、ローカル、リモート、有線、無線などである。
【0110】
送信されるべきセグメントを含むメモリおよび/または一つ以上のバッファ701(以後、単にメモリと称する)が示されている。ここで、このメモリは送信ユニットまたはシステムの操作を担当している中央処理装置(CPU)702に接続されている。このメモリはまたメモリの中の一つ以上のデータ領域(例えば、一セグメントに一個)に、前に説明したようにインターリーブ風に、アクセスを提供するDMAコントローラ703に接続されている。そして、各データ領域は保存されたセグメントを含んでいる。
【0111】
DMAコントローラはDMA装置、DMAクライアント、あるいは本発明によってDMAコントローラを制御することを担当するネットワーク・オフローダに接続されている。DMA装置は、それを制御するメインCPUと所定のネットワークの上でデータの送信を可能にするネットワーク・インターフェイス705に接続されている。データを送信するとき、送信ユニットまたはシステムはDMA装置を設定してデータを送信する。そしてDMA装置はメインCPUをオフロードするためにセグメンテーション、スイッチングなどを引き受ける。そして、データをネットワーク・インターフェイスに送信する。このネットワーク・インターフェイスは一つ以上のクライアント・ネットワーク・インターフェイスによって受信されるべきネットワークの上でデータを送信する。
【0112】
主CPUはDMA装置を設定するためのインターフェイスを有し、そしてDMA装置はそのときDMAコントローラを用いて説明したように送信データを読む。
【0113】
DMA装置の制御の下でDMAコントローラは各データ領域の中の現在の位置のトラックを保持する。送信パターンが得られるか、または導出され、この点における情報がDMAコントローラに供給される。そしてデータ領域をスイッチする時を指示し、−そして、それによって、他のセグメントのためにデータ送信を始める(もし、何か残っていれば)。次にもっと詳しく説明するようにインターリーブ送信が比較的遅いクライアントへの送信速度を効果的に低減するので特定の送信パターンがパケット・ロスを低減した状態でネットワークをオフロードする。スイッチすると、DMA装置に指示された通りに、前に説明したように、送信されるべきデータを多く持っている次のデータ領域をDMAコントローラは自動的に選択する。
【0114】
DMA装置とDMAコントローラはハードウェアで実施され、ソフトウェアを基にした解決方法に較べて、それよりもオフローデングをネットワーク化するためのCPUの使用を劇的に低減することができる。
【0115】
図8はDMA装置の一実施態様の概略ブロック図を示している。
【0116】
送信イン(TX in)ユニット803と送信アウト(TX out)ユニット804に接続されている送信(TX)メモリ802に接続されたCPU801が示されている。チェックサム計算ユニット805はTX inユニット803に接続されている。データはTX inユニット803によってDMAコントローラからTXメモリ802に読み込まれる(示されていない。例えば、図7の703を参照せよ)(そして、同時にチェックサム・ユニットは読み取りデータ・パケットのチェックサムを計算する)。それから、CPU801によって処理され、ネットワーク・インターフェイス(示されていない。図7の705を参照せよ)にTX outユニット804によって送出される。
【0117】
図9は、送信ユニットまたはハードウェア・ネットワーク・オフローデングとネットワークの中で接続された一つ以上のクライアントを有するシステムを含むシステムの概略ブロック図を示している。送信ユニットまたはハードウェア・ネットワーク・オフローデング700を有するシステムが示されている。これはDMA装置704と所定のネットワークの上でデータ送信を可能にするネットワーク・インターフェイス705を含んでおり、一つ以上のクライアント710もまたネットワーク・インターフェイス705を含んでいる。クライアント710と送信ユニットまたはシステムはネットワーク102を介して接続されている。
【0118】
図10は図7と関連して説明した送信に類似したハードウェア・ネットワーク・オフローデングを利用した送信ユニット1000からの送信の信号伝達図である。送信ユニット1000はネットワークに接続されている。これには多くの受信機1020、1022もまた接続されている。これらの通信構成要素が接続されているネットワークは、例えばローカル、リモート、有線、無線などである。
【0119】
送信ユニット1000は送信されるべきセグメントを保存するメモリ1001とDMAオフローデング・コントローラ1004を含んでいる。図10で概略的に示されているように、メモリ1001とDMAオフローダ1004は、図7の場合と同じように、処理ユニット1002に接続されている。メモリ1001は、前に述べたようにインターリーブの方法で、メモリ1001内の一つ以上のデータ領域(例えば、各セグメントに一つ)にアクセスを与えるDMAオフローデング・コントローラ1004に接続されている。そして、各データ領域は保存されたセグメントを含んでいる。
【0120】
DMAオフローダはネットワーク上でデータの送信を可能にしている。そしてデータを送信するとき、送信ユニット1000は、処理ユニット1002で実行する送信ソフトウェアによって、処理ユニット1002をオフロードするためにデータ、セグメンテーション、スイッチングなどを送信するようにDMAオフローダ1004を設定する。そして、一つ以上の受信機1020、1022ネットワーク・インターフェイスによって受信されるべきデータをネットワーク上に送信する。
【0121】
以下の信号伝達ステップのシーケンスは送信ユニット1000の中で行われる:
第一の信号伝達ステップ1051では、送信ソフトウェア1010はDMAオフローダ1004にセグメントS1とS2について教える。実際のデータは何も送信されないが、セグメントについてメタデータだけが送信される。送信パターンの例は、図10に示されるように、p1 p1 p2 p1で始まり、p1で終わるものである。
【0122】
第二の信号伝達ステップ1052では、DMAオフローダ1004はセグメント1からMTUを読み、第一受信機1020にデータを送る。第三の信号伝達ステップ1054では、DMAオフローダ1004はメモリからセグメント1の第二MTUを読み、第一受信機1020にデータを送る。第四の信号伝達ステップ1056では、DMAオフローダはセグメント2にスイッチする。そして第一MTUを読む。第一パケットは第二受信機1022に送られ、そしてそのデータを送っている間に、DMAオフローダ1004は第一セグメントに戻り、読み、そして第五の信号伝達ステップ1058の第三MTUを送信する。第六の信号伝達ステップ1059によって示されるように、これは全てのパケットが送られるまで続く。そして、ACKまたは同様な形式で受信機からの帰還は必要ではない。信号伝達ステップ1052、1054、1056、1058、1059でMTUの読み取りが受信機へのデータの送信と同時に行われることがあるということに注目すべきである。
【0123】
インターリーブ送信は比較的遅いクライアントに対して、確認(ACK)信号を用いないで、送信速度を効果的に低減するので特定の送信パターンは低減されたパケット・ロスでネットワークをオフロードすることができる。
【0124】
請求項で、括弧内に置かれた如何なる引用符号も請求を制限すると解釈してはならない。“含んでいる”という言葉は請求項で取り上げたもの以外の要素やステップの存在を除外するものではない。要素に先行する“a”または“an”はそのような要素の複数の存在を除外するものではない。
【0125】
本発明は、いくつかの個別部品を含むハードウェアによって、そして適切にプログラムされたコンピュータによって実施することができる。装置請求において、いくつかの手段を列挙すると、これらのいくつかの手段は一つまたは同じ項目のハードウェアによって具現化することができる。ある手段が相互に異なった従属した請求で列挙されているという単なる事実はこれらの手段の組み合わせが有利に用いることができないということを示すものではない。
【技術分野】
【0001】
本発明は一般にネットワーク・オフローデングに関わるものである。
【0002】
特に、本発明はデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一送り先に送信する手段とデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一送り先に送信する装置に関係する。
【0003】
更に、本発明は一つ以上の処理ユニットに本発明による手段を実行させるために、その上に保存された命令を有するコンピュータ読み取り可能な媒体に関係する。
【背景技術】
【0004】
ネットワーク割り込み可能な装置が比較的大きなデータの塊(以後、セグメントと言う)、例えばJPEG画像あるいは何か他種のデータをネットワーク上に送信するとき、物理的な媒体に送信される前にネットワーク割り込み可能な装置によってそのセグメントは普通いくつかのデータ・パケットに分割される。一例として、イーサネット(登録商標)・パケットの最大ペイロード・サイズは1500バイトである。追加として、TCPとIPヘッダーのようなプロトコル・ヘッダーが各データ・パケットに対して生成されなければならず、そしていくつかのプロトコル・スタック(TCP/IP)に対して、一つまたはいくつかのチェックサムが各データ・パケットに関して計算されなければならない。ここで、その一つ以上のチェックサムはデータ・パケットのヘッダーに保存される。
【0005】
普通、データの塊またはセグメントはペイロードのサイズよりも大きい(原理的には、セグメント・サイズは例えば1バイト程度に小さいこともある)。しばしば、それはペイロード・サイズの数倍になる。
【0006】
ヘッダーとチェックサムを含むこれらのパケットを生成するプロセスは伝統的にはソフトウェアで行われる。これは相当な量のCPU動作を使用することがあり、それはCPUの性能とネットワーク・スピードに依存する。
【0007】
これに向けたいろいろな解決法がハードウェアの中でいろいろな機能を実装することによって提案されてきた。そのような処理はまた、しばしばネットワーク・オフローデング(ハードウェア)と言われている。
【0008】
ネットワーク・オフローデングを行うために利用できるハードウェア解決法がいくつか存在する。ハードウェアでネットワーク・オフローデングを行うための従来の方法は以下のように要約することが出来る。
− メモリからデータの1MTU(最大転送単位、すなわち使用したネットワーク媒体上の1パケットの最大ペイロード・サイズ)を読む。
− メモリから読んでいる間にペイロードの上でチェックサムを計算する。
− ヘッダーを生成する。
− ヘッダーとペイロードを含むパケットを送信する。
− 送信している間に、メモリから1つの追加MTUのデータを読む。
− セグメント、即ちデータの塊における全てのパケットが送信されるまで続ける。
【0009】
この解決法の欠点は多くのパケットを高速で送ることがあって、比較的低速で結合された受信クライアントにとって問題を引き起こすかもしれないということである。例として、比較的低速なネットワーク(例えば、1メガビット/秒のネットワーク)に接続されたクライアントに大きなセグメントを送信したいと思っている比較的高速なネットワーク(例えば、1ギガビット/秒のネットワーク)に接続された装置を考えてみよう。この場合には、装置とクライアント間の転送パスにあるルータはクライアントがそれを全部読み終わるまでデータをバッファしなければならない。これはルータ内のバッファの疲労を来たすかも知れない。更に、ルータのバッファ・サイズは制限されていて、かつ他の転送パスのためにデータをバッファする必要もあるとき、このことはデータ・パケットを欠落させ、かつそれによって再送を要求するようになるかも知れない。パケット欠落の可能性はセグメント・サイズが大きくなればなるほど増加する。
【0010】
この問題に対して以前に知られている解決法は、普通ソフトウェアで実施され、各送り先へは限られた数のパケットのみを送り、かつ追加のデータ・パケットを送る前にデータ確認(ACK)のための待機を含むものである。しかしながら、これはCPUの使用を増加し、かつその待機のためにデータを送信するに必要な全体の時間を遅らせることもあるかも知れない。
【0011】
例えば、特許文献1はACKを使用したハードウェア実施について述べている。この欠点はACKの使用を頼りにするTCP/IPのようなプロトコルのみがサポートされうるということである。
【0012】
それ故に、ルータ・バッファの疲労やデータ・パケットの欠落の問題に対処する必要がある。
【0013】
これは、どこでパケットが同じ、または同様な速度でインターリーブされるかということを除いて、パケットを異なった送り先にインターリーブすることによって少なくともある範囲までは対処されてきた。
【0014】
特許文献2は殆どの大きな多重パケット・メッセージと低速パス・メッセージに関するプロトコル処理を避ける高速パスを提供するデータ通信用の通信処理装置(CPD)を開示している。ネットワーク・プロセッサはホストのプロトコル・スタックを含む低速パスからのメッセージか、またはホストのプロトコル・スタックを迂回する高速パスからのメッセージかのどちらかを選択する。
【0015】
特許文献3は、殆どのメッセージを処理し、データ転送を加速し、ホストCPUからの時間集中的な処理問題をオフロードするプロトコルを避ける高速パスを提供するデータ通信のためにホスト・コンピュータと共に動作する装置を開示している。ホストは高速パスか、または低速パスか、どちらかの処理のために選択されたメッセージを有効にするための処理能力を有している。
【0016】
特許文献4は、TCP/IPプロトコル処理演算を並列で行う状態マシーンを含むTCPオフロード・エンジン(TOE)装置を開示している。三つの異なった観点から、それはTCP変数とヘッダーの値、多重TCP状態変数の更新を保存し、DMA手段を設定する。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】米国特許出願公開第2006/034176号明細書
【特許文献2】米国特許第7,174,393号明細書
【特許文献3】米国特許第7,167,926号明細書
【特許文献4】米国特許第6,996,070号明細書
【発明の概要】
【発明が解決しようとする課題】
【0018】
本発明の目的はルータ・バッファの疲労とデータ・パケットの欠落、またはそれらの何れかを避けるか、または最小化する手段(そして対応する装置)を提供することである。
【0019】
更なる目的はセグメント化処理のためのCPU使用を低減することである。
【課題を解決するための手段】
【0020】
これはデータ・ネットワークを介してデータの第一セグメントを送信ユニットから第一の送り先に送る手段によって達成され、その送信ユニットは第一のデータ送信速度を有しており、第一の送り先は第一のデータ受信速度を有しており、ここでは第一のデータ送信速度が第一のデータ受信速度よりも大きい。その手段は、前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先へ送信している間に送信ユニットから第一の送り先への第一送信速度を、スイッチングすることによって第一送信速度を効果的に低減することと、その送信は送信ユニットから第一の送り先の方向だけに向いていることと、少なくとも第二セグメントの少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加の送り先に送ることと、その送信は送信ユニットから一つ以上の追加の送り先の方向だけに向いていることと、前記スイッチングは前記第一セグメントと少なくとも前記第二セグメントが送り終わるまで反復されることを包含する。
【0021】
一つ以上の待ち状態を前記の少なくとも第一セグメントのデータ・パケットを第一の送り先に送られている間に挿入することが可能である。
【0022】
この方法で、送信システムの総合パケット速度が維持されている間、クライアントまたは送り先へのパケット速度が低減される。それによって比較的低速のクライアントへのデータが最高速度で送られることがないのでパケット・ロスとルータ・バッファの疲労、またはそれらの何れかの発生する確率の低減が達成される。
【0023】
加えるに、前のクライアントに与えられたデータが完全に送信し終えるまで他のクライアントへの送信は待たないので、全ての送り先は(多重の送り先に送るとき)早くデータを獲得する。クライアントはこの方法で受信データの処理を早く始めることができる。
【0024】
このような方法の有利性は任意のプロトコルに対してサポートを可能にすることにある。即ち、それはACKを用いないプロトコルと同様にACKを用いるプロトコルをサポートする。例えば、UDPの上でRTPのサポートが提供される。これは前述の米国特許出願公開第2006/034176号明細書で記述されているACKに基づいた通信に比べて有利な点である。
【0025】
一実施態様において、この手段は更に、スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを定義する前記第一セグメントの第一ポジションを保存すること、および/または如何に多くの第二セグメントが送信されたか、そしていつ前記第一セグメントまたは第二セグメントの送信が再び切り替えられるかを定義する前記第二ポジションの位置を保存することと、各保存した位置から送信を再開することと、を包含する。
【0026】
一実施態様において、スイッチングは送信するパターンに従って行われる。
【0027】
一実施態様において、送信するパターンは第一送り先の受信速度および/または少なくとも一つの前記の追加送り先の受信速度に基づいて決定される。
【0028】
一実施態様において、少なくとも第一セグメントのデータは前記送信ユニットのメモリに保存される。ここで、前記第一セグメントのデータは前記メモリからダイレクト・メモリ・コントローラ(または、オフローデング装置)によって読まれ、そして前記第一セグメントの前記データをネットワーク・インターフェイスを介して更に与えるダイレクト・メモリ・アクセス装置に与えられる。ここでは、前記ダイレクト・メモリ・コントローラと前記ダイレクト・メモリ・アクセス装置が前記送信ユニットの中央処理装置をオフロードする。
【0029】
一実施態様において、ダイレクト・メモリ・アクセス装置は前記ダイレクト・メモリ・コントローラから前記ダイレクト・メモリ・アクセス装置に与えられたデータの上でチェックサムを計算するチェックサム・ユニットを包含する。
【0030】
一実施態様において、二次元リスト構造は前記スイッチングを制御し、前記二次元リスト構造はメモリ内のヘッダー・データについて少なくとも一つのデータ記述子に関する第一のコンテキスト記述子と、前記第一セグメントのデータについての少なくとも一つのデータ記述子に関係する第二のコンテキスト記述子を包含する。ここで、前記第二のコンテキスト記述子は前記第一セグメントの何バイトがスイッチングの前に送られるかの表示を包含する。そこで前記手段は前記ヘッダー・データを得るための前記第一のコンテキスト記述子の処理と、前記第一セグメントのデータを得るための前記第二のコンテキスト記述子の処理と、前記表示に従って多数バイトのデータを送信することとを包含する。
【0031】
一実施態様において、二次元リスト構造は前記第一セグメントの送信を制御し、前記二次元リスト構造は前記第一セグメントのデータについて少なくとも一つのデータ記述子に関する第一のコンテキスト記述子と、少なくとも二つのデータ記述子に関する第二のコンテキスト記述子と、二つの異なった送り先のためのヘッダー・データに関する各データ記述子とを包含する。ここで前記手段は、前記第一セグメントの少なくとも一部分を得るために前記第一のコンテキスト記述子を処理することと、前記二つの異なった送り先の内の一つのためのヘッダー・データを得るためと前記二つの異なった送り先のもう一つのためのヘッダー・データを得るために前記第二のコンテキスト記述子を処理することと、前記二つの異なった送り先のもう一方に前記第一セグメントの得られた部分を送ることと、を包含する。
【0032】
本発明はまた送信ユニットから第一の送り先へデータ・ネットワークを介してデータの第一セグメントを送信するための装置に関係する。送信ユニットは第一データ送信速度を有し、第一の送り先は第一データ受信速度を有している。ここで、第一データ送信速度は第一データ受信速度よりも大きい。その装置は、前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先に送信する間にスイッチングすることによって送信ユニットから第一の送り先への第一送信速度を効果的に低減するのに適合したダイレクト・メモリ・アクセス装置と、送信が送信ユニットから第一の送り先の方向だけに向いていることと、一つ以上の追加的な送り先に一つ以上のデータ・パケットとして少なくとも第二セグメントの少なくとも一部分を送信することと、送信が送信ユニットから一つ以上の追加的な送り先にだけ向いていることと、前記第一セグメントおよび/または少なくとも前記第二セグメントが送信し終わるまで前記スイッチングが反復されることと、を包含する。
【0033】
本装置の実施態様は本手段の実施態様に対応し、同じ理由によって同じ有利性を有する。本装置の有利な実施態様は請求項で定義され、以下に詳細に記述される。
【0034】
更に、本発明は、本発明にしたがって一つ以上の処理ユニットに本手段を実行させるための命令を保存したコンピュータ読み取り可能な媒体にも関わるものである。
【0035】
本発明のこれらと他の態様は、図で示される実例となる実施態様から明らかであり、また参照することによって明らかになる。
【図面の簡単な説明】
【0036】
【図1】送信中に二つのセグメントをインターリーブするプロセスの実例を図示している。
【図2a】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図2b】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図2c】本発明にしたがってインターリーブするプロセスの実例を図示している。
【図3】一実施態様にしたがっていろいろなインターリーブされた送信のトラックを保つための構造の概観を図示している。
【図4】インターリーブされた送信のトラックを保つための構造の特殊な一例を図示している。
【図5】本発明によるインターリーブ・プロセスの一実施態様のフロー・チャートを図示している。
【図6】メモリから一度だけデータを読んでいる間に同じセグメントをいくつかのクライアントに送るのに有利なリスト構造例の実施態様を図示している。
【図7】ハードウェア・ネットワーク・オフローデングを持つ送信ユニットまたはシステムのブロック図を示している。
【図8】DMAコントローラの一実施態様のブロック図を示している。
【図9】ハードウェア・ネットワーク・オフローデングを有する送信ユニットまたはシステムと、ネットワークに接続された一つ以上のクライアントを含むシステムのブロック図を示している。
【図10】送信ユニットから受信機への送信の信号伝達図である。
【発明を実施するための形態】
【0037】
図1は送信中に二つのセグメント101をインターリーブするプロセスの一例を概略的に示している。第一セグメント(セグメント1)101と第二セグメント(セグメント2)101および各セグメントのパケットがネットワーク102を介して時間とともに送信される方法が示されている。
【0038】
一例として、各セグメントは10キロバイトのペイロードを含んでおり、ここで第一セグメントのペイロード・データは第一クライアント(示されていない)に送られ、これは比較的遅い。そして第二セグメントのデータは第二クライアント(示されていない)に送られる。これは比較的速い。この例ではMTUは1キロバイトである。
【0039】
そのとき、パケットはインターリーブ送信によって(px=クライアントx):p2 p2 p2 p1 p2 p2 p2 p1 p2 p2 p2 p1 p2 p1 p1 p1 p1 p1 p1 p1として送信される。この方法で、クライアント1へのパケット速度が低減されるが、この間送信システムの総合パケット速度は維持されている。送信されるデータ・パケットの特定の順序付けが適切な送信パターンに従って行われる。クライアント1へのパケット送信速度の低減はルータ・バッファの疲労および/またはデータ・パケットの欠落の可能性を避けるか、または少なくとも最小化するだろう。これはパケットがクライアント1へ‘遅れないでついて行ける’ことができるペースで送られるからである。更に、クライアント2へ全てのパケットが送られると、パケット送信速度を低く抑えておくために(それによって、更にバッファの疲労と、送信システムとクライアント1の間でのデータ・パケットの欠落を生じさせるのを避けるために、あるいは少なくともこの突発事故が起こる確率を低減するために)クライアント1への残りのパケットの間に一つ以上の待ち状態を挿入することが可能であろう。一つ以上の待ち状態を挿入する代わりに別の方法として、一つ以上の他のセグメントのためのデータ送信を開始することができる。例えば、今の例では、クライアントへの全てのパケットが送られたとき、クライアント3へのパケット(あるいは、クライアント2への新しいセグメント)がクライアント1への残りのパケットとインターリーブすることもあり得る。
【0040】
パケットはハードウェアでネットワーク・オフローデングを行う従来の方法に従って(前に述べたもののように)p1 p1 p1 p1 p1 p1 p1 p1 p1 p1 p2 p2 p2 p2 p2 p2 p2 p2 p2 p2として送られる(第一セグメントが最初に送られるものと仮定すると)ことになる。
【0041】
もしプロセスがハードウェアで実施されるならば、CPUの使用はハードウェア・オフロードなしの解決方法と較べて劇的に低減される。
【0042】
更なる利点はクライアント2(第一セグメントが従来の方法にしたがって最初に送られるものと仮定すると)が、もしクライアント2へのパッケージの送信が始まる前に全てのパケットがクライアント1に送り終えるまでクライアント2が待つとするならば、それよりも早くデータを取得し、そして、それによって早くデータ処理を始めることができることである。
【0043】
図2a−2cは本発明にしたがってインターリーブするプロセスの実例を概略的に示している。インターリーブ送信中で時間内での三つの異なった点で三つのセグメント101(セグメント1、セグメント2、セグメント3)が示されている。三つのセグメント101は三つの異なったクライアント装置(示されていない)に送られる可能性がある。時間内の最初の点(図2a)は送信が始まる前である。時間内の第二の点(図2b)は送信中であり、時間内の第三の点(図2c)は送信が完了した後である。
【0044】
図2a−2cに於いて、表示が現在のセグメントに与えられている。即ち、そのセグメントが現在送信されるデータを持っている。更に、時間内の各点での各セグメントの黒い矢は既定のセグメントの如何に多くのデータがずっと送信されてきたか、ということを示している。送信された既定のセグメントのデータ量を示す点はネットワーク利用の減少を避けるために完全なパケット境界に位置している。
【0045】
DMA(ダイレクト・メモリ・アクセス)コントローラとDMA装置、DMAクライアント、あるいはネットワーク・オフローデング・ユニット(示されていない。以後、単にDMA装置と示す)は、以下にもっと詳細に説明するように、メモリ内でいくつかのデータ領域へのアクセス(例えば、各セグメントについて一つ)を行う。DMA装置は各データ領域において現在位置のトラックを保持する。送信、またはスイッチング・パターン(以後、単に送信パターンと示す)が得られるか、または導出される。そしてこの点において情報はそれを指示するDMAコントローラに与えられる。つまり、いつデータ領域をスイッチするか、−そしてそれによって他のセグメントへ向けてデータ送信を始める(もし、何か残っているならば)かということである。次にもっと詳細に説明するようにインターリーブ送信は比較的遅いクライアントへの送信速度を効果的に減少するので、その固有の送信パターンは低減されたパケット・ロスと共にネットワークをオフロードする。スイッチングするとき、DMA装置は自動的に送信されるべきデータを更に多く有する次のデータ領域を選択する。
【0046】
図2aはまだ何も行われていない状態を示している。ここで、各セグメントのデータが如何ほど送信されたかを示している、各指示が各セグメントを開始する場所にある。即ち、データはまだ何も送信されていない。セグメント1は、この特別な例では、現在のセグメントとして示されている。
【0047】
図2bはネットワーク・オフローデングとデータの送信が、ある時間行われた状況を示している。ここで、セグメント1の殆ど半分とセグメント3の全データがそれらの各クライアント装置または送り先(以後、単にクライアントとして示す)にネットワークを介して送信されている。現在、データはセグメント2から送信される。これは現在のセグメントとして示されている。DMAコントローラがDMA装置によってスイッチするように指示された後、それはセグメント1からデータを送信するようにスイッチする(セグメント3が完了して、現在は他のセグメントがないので)、そしてセグメント1からのデータの最後の送信の間に停止したところから取り出すことになる。
【0048】
このスイッチは、特定の送信に依存し、セグメント2の全てのデータが送信し終わった時、またはその前に行われる。もし前ならば、セグメント2に戻るときに送信がその点から再開できるようにセグメント2の現在位置が保存される。
【0049】
図2cは三つのセグメントの全てのデータが送信し終わったときの状態を示している。その時、DMAコントローラは仕事が終了したことをDMA装置に知らせ、つぎの命令を待つことになる。
【0050】
説明したように、三つのセグメントからデータを送信する間のジャンプやスイッチは特定の送信パターンに従って行われる。特定の送信パターンはデータを受信するいろいろなクライアントの能力によって影響をうける。考慮すべき一つのパラメータは例えば、いろいろなクライアントのネットワーク速度である。例えば、テストデータ・パケットをクライアントに送り、そして確認を待ちうけることによって、これは容易に測定することができる。代わりには、それは他の方法でも測定できるであろう。
【0051】
特別な例として、クライアント1と2のネットワーク(受信)速度を約2メガビット/秒、そしてクライアント3の(受信)速度を約4メガビット/秒としよう、その時(平均で、または一般に)セグメント3(クライアント3へ)からデータが多くの場合の約2倍送信されるはずである(即ち、セグメント3が現在のセグメントになる)。そして、例えば送信パターンはセグメント1からXデータを送信、セグメント3からXデータを送信、セグメント2からXデータを送信、セグメント3からXデータを送信、セグメント1からXデータを送信、などとなるはずである。
【0052】
他の例としては、二つの異なったクライアントに対して二つのセグメントを取ろう。ここで、一つのクライアントは他のクライアントよりも3倍速い。この時、送信パターンは例えば、セグメント1からXデータを送信、セグメント2から3*Xデータを送信、それから全てのデータが送信されるまで反復されるはずである。
【0053】
前に述べたように、送信速度を低く維持し、かつそうすることによって更にバッファの疲労やデータ・パケットの欠落を避けるために他のセグメントが完全に送信され終わったときに、待ち状態もまた一つ以上のセグメントに対して挿入されることが可能である。代わりに、一つ以上の追加セグメントに関するデータ送信が(例えば、同じまたは新しいクライアントに対して)開始されるはずである。
【0054】
図3は、実施態様に従っていろいろなインターリーブ送信のトラックを保持するための構造の概要を概略的に示している。
【0055】
一つ以上のクライアントにデータ・パケットとして送られるべき、メモリに保存されたデータへのアクセスを制御する記述子301、302を包含する二次元リスト構造が示されている。各記述子はDMA装置にそれがどのデータ型であるか(例えば、ヘッダー・データか、それともペイロード・データか)、かつそれをどのように扱うかを指示するメタデータを含むことがある。記述子はまた、セグメントの終点(EOS)やリストの終点(EOL)のようないろいろな状況を知らせるために一つ以上の制御フラッグを含むことがある。そのようなリスト構造はまた一般にスキャッタ・ギャザー・リスト(SGLs)として知られており、データを不連続なメモリからフェッチできるようにするものである。
【0056】
一つのタイプの記述子は、例えばデータ記述子302であり、それは実際のデータ・バッファ303のトラック、即ちメモリまたは保存ユニットと保存データはどのセグメントに属するか、を保持するために使用される。他のタイプの記述子は例えばコンテキスト301であり、それは(この実施態様によれば)データ記述子302を含む或る状態のリストのトラックを保持するために使用される。
【0057】
DMAの制御の下で、DMAコントローラはいくつかのコンテキストをスイッチすることができる。各コンテキストは、図3と以下の説明から分かるように一個のクライアントと例えば、その一個のクライアントに関するいくつかのセグメントと関連することがある。更に、いくつかのセグメントは同じセグメントに関連することがある−与えられたセグメントのヘッダー・データに関係するコンテキストと同じセグメントのペイロードに関係する他のコンテキストについては後で分かる。
【0058】
各スイッチで、DMA装置はリストの状態を保存する(または、しない)ように指示されることが可能である。リストの中でEOLに到達すると、与えられたコンテキストは無効になり(または、代わりに除去され)、そしてDMA装置は二度とそのコンテキストにスイッチしない。DMA装置は好ましくも一つ(あるいは、それ以上)のコンテキスト記述子を記憶することもある(普通は保存要求を低減するには、単に一個で充分である)。
【0059】
図3で示される特殊な例では、コンテキスト1とコンテキスト2はコンテキスト記述子301であり、一方においてデータ1、データ2、データ3、データ4はデータ記述子302である。
【0060】
それ故に、コンテキスト記述子コンテキスト1とコンテキスト2によって与えられるように、典型的なリスト構造は二つのコンテキストを包含する。
【0061】
コンテキスト1は、データ記述子データ1とデータ3によってそれぞれバッファ1およびバッファ2の303に対してどの点であるかが示されるので、データの一個のセグメントを識別する。もし、セグメントが一個のバッファに保存することができるならば、たった一個のデータ記述子がコンテキスト・リストに存在するだろう。データ記述子データ3は更に二つのセットフラッグを包含する。即ち、EOSとEOLであり、セグメントはもはやコンテキスト1の一部分ではなく(EOS)、そしてデータ3はコンテキスト1の最後のリスト要素である(EOL)であることを伝えている。
【0062】
コンテキスト1が単にデータの一個のセグメントに関係しているということはリスト・コンテキスト1がEOLに到達する前に唯一のEOSのみを言及し、含んでいるということから理解できる。
【0063】
同様な方法によって、データ記述子302データ2とデータ4によってバッファ3とバッファ4の303に対してそれぞれどの点かが示されるので、コンテキスト2は二つのセグメントを識別する。もし、二つのセグメントが単一のバッファに保存されるならば、データ2とデータ4は同じバッファを指定するだろう(しかし、二つの異なった位置で)。データ2はセットEOSフラッグを含み、データ4はセットEOSとセットEOLフラッグを包含する。
【0064】
コンテキスト2記述子はまた、現在もはやDMA装置に処理されているコンテキストはない、即ち現在送信されるべき付加データはない、ということを伝達するセットEOLフラッグを含んでいる。
【0065】
コンテキスト2がデータの二つのセグメントに関係しているということはリスト・コンテキスト2がEOLに到達する前に二つのEOSを含んでいるということから理解できる。
【0066】
最も簡単な場合、一つの送り先に送信されている唯一のセグメントがある。そして、これは最速で(即ち、待ち状態が必要ない)パケットを受信することができ、そのリスト構造は二つのデータ記述子を有する一次元リストに‘収縮する’。二つのデータ記述子のうちの一つはヘッダー・データを指定し、もう一つはセグメントのペイロード・データを指定している。この場合には、インターリーブ送信は必要なく、コンテキスト記述子も必要ない。
【0067】
図4はインターリーブ送信のトラックを保持するための特別な構造の一例を概略的に示している。
【0068】
ここでは、特別なリスト構造が設定され、一例として、四つのコンテキスト301であるコンテキスト1、コンテキスト2、コンテキスト3、コンテキスト4を含んでいる。
【0069】
コンテキスト記述子301のコンテキスト1はデータ記述子302のデータ1とコンテキスト記述子301のコンテキスト2を参照する。データ記述子302のデータ1はメタデータとしてEOLとEOSフラッグを含み、そしてデータがバッファまたは他の適当なメモリに保存されている既知のセグメントであるセグメント1のヘッダー・データ304を参照する。
【0070】
コンテキスト記述子301のコンテキスト2はデータ記述子302のデータ2とコンテキスト記述子301のコンテキスト3を参照する。データ記述子302のデータ2はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント1に関してペイロード・データ305を参照する。
【0071】
コンテキスト記述子301のコンテキスト3はデータ記述子302のデータ3とコンテキスト記述子301のコンテキスト4を参照する。データ記述子のデータ3はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント2に関してヘッダー・データ304を参照する。
【0072】
コンテキスト記述子301のコンテキスト4はデータ記述子302のデータ4とコンテキスト記述子301のコンテキスト1をもう一度戻って参照する。データ記述子302のデータ4はEOLとEOSフラッグをメタデータとして含み、そしてデータがバッファまたは他の適当なメモリに保存されているセグメントであるセグメント2に関してペイロード・データ305を参照する。
【0073】
インターリーブ送信のためのリスト構造は本発明にしたがって送信中に処理され、そしてどう動作するか、どこからデータを読み出すか(DMAコントローラを介して)、データは何の型か、いつセグメントをスイッチするか、などをDMA装置に指示する。
【0074】
示されている典型的な構造について得られたプロセスはそのとき例えば以下のように要約できるだろう。
【0075】
1.そのとき、DMAコントローラにセグメント1に属しているヘッダー・データをDMA装置への配信を始めさせ、そして、それからネットワークを介してそれぞれのクライアントまたは送り先に供給できる、コンテキスト1を処理しなさい。
【0076】
2.ヘッダー・データが送信された後、DMAコントローラはコンテキスト2にスイッチするようにDMA装置に指示される。セグメント2へのデータ送信(即ち、コンテキスト3と4)にスイッチする前に、セグメント1の全てのペイロード・データが送信されるか、されないかに依存するのでコンテキスト1、即ちヘッダー・データが再び必要とされるかどうか、ということはこの段階では知られていない。それ故に、DMAコントローラは現在のコンテキストの位置を保存しているDMA装置なしでコンテキスト2にスイッチするように指示される。DMA装置はこのコンテキスト、即ちコンテキスト1を思い出すように指示される。
【0077】
3.コンテキスト2にスイッチした後、DMAコントローラはセグメント1のペイロード・データ(一つ以上のMTU)をDMA装置に配信し、それから各クライアントまたは送り先にネットワークを介してそれを供給することができる。
【0078】
4.例えば、特定の送信パターンに依存するある量のデータを送った後、DMA装置はコンテキスト3にスイッチするように指示される。例えば、スイッチング時間は、ある特定数のMTUが送信された後で決定される。そうような数はコンテキスト記述子メタデータで特定される。その数は全ての、またはいくつかのいろいろなコンテキストに関して同じであるか、または好ましい送信パターンによって特定されたものとは異なることもある。各送信パケットに関して、内部カウンターがインクリメントされることもある。内部カウンターの値がコンテキスト記述子に保存された値に一致するとDMA装置はコンテキストをスイッチし、内部カウンターをクリアするように指示される。もしスイッチングがセグメント1の全ペイロード・データが送信され終わる前に行われると、コンテキスト2にもう一度戻った時に送信がその点から再開できるようにDMA装置は現在の位置を保存する。例えば、DMA装置はコンテキスト記述子、即ちコンテキスト2の中の変数、フィールドまたは同様なものの中に、位置を保存することができる。一例として、あるフィールドが使用された最後のデータ記述子を保存するために使用され、他のフィールドはそのデータ記述子の中へ如何に深くデータが処理されたかを保存することもある。セグメントの終わりに到達すると、すべてのペイロード・データは送信されており、それ故にコンテキスト1とコンテキスト2はもはや必要とされない。コンテキスト2でEOSフラッグがセットされる。コンテキスト1を無効にするために、DMA装置は前に思い出した(前のステップ2を参照せよ)コンテキストを修復するように指示され、そしてそのコンテキストは再び無効にされる(セグメント1のペイロード・データが送信されてしまうとセグメント1のヘッダー・データもまた必要とされないので)。コンテキスト1はまたEOSフラッグを設定することによって無効にすることができる。コンテキスト1とコンテキスト2を無効にした後、DMA装置は次のコンテキストにスイッチする。この例では、それはコンテキスト3である。
【0079】
5.コンテキスト5で、DMAコントローラはセグメント2に属するヘッダー・データを(セグメント1に関して前のステップ1に従って)DMA装置に配信する。それから、ネットワークを介して各クライアントまたは送り先にそれを供給することができる。
【0080】
6.ヘッダー・データが送信されると、DMA装置はクライアント4にスイッチし、ここで、セグメント2のペイロード・データが送信される。コンテキスト4にスイッチする前に、コンテキスト3は思い出されるが(前のステップ2と同じように)、コンテキスト3の位置は保存されない。
【0081】
7.コンテキスト4にスイッチした後、DMAコントローラはセグメント2のペイロード・データ(一つ以上のMTU)をDMA装置に配信する。それから、ネットワークを介して各クライアントまたは送り先にそれを供給することができる。
【0082】
8.送信パターンに依存する特定の時刻に、DMA装置は次のコンテキストにスイッチする(この例では、コンテキスト1)、ここで、もしセグメント2の全てのペイロード・データが送信される前にスイッチングが起これば、コンテキスト4の送信データの現在の位置が保存される。さもなければ、コンテキスト3は呼び戻されて、無効にされる。そして、コンテキスト4もまた無効にされる(前のステップ4と同じように)。
【0083】
9.コンテキスト1で、DMA装置はセグメント1に関連するヘッダー・データを受信し、かつ送信する。そして保存された位置はなかったので、全ヘッダーは再び送信される。ヘッダー・データが送信された後、プロセスはコンテキスト2にスイッチし、コンテキスト1の位置は保存されない。
【0084】
10.コンテキスト2で、送信が保存された位置から再開される(それは、ステップ4で保存されている)、そしてセグメント1の追加されたペイロード・データの一つ以上のMTUが送信される。
【0085】
プロセスはセグメント1とセグメント2の全てのペイロード・データが送信し終えるまで継続する。述べたように、他が終わる前にセグメントのペイロード・データが送信されると一つ以上の待ち状態が挿入されることがある。
【0086】
一実施態様に於いて、データ記述子302は、データ・バッファの始めと終わり(即ち、関連するデータ(ヘッダーまたはペイロード)が保存されている所定のセグメントのメモリ位置を表わす変数を含む構造を有している。更に、データ記述子の構造はEOSとEOL、および次の記述子を示すポインタと、DMA装置が次に何をしたら良いかを指示するためのメタデータ・フィールドなどを示すための制御フラッグを含むことがある。
【0087】
一実施態様において、コンテキスト記述子の構造はデータ記述子リストの位置のトラックを保持するための変数を保存することがある。コンテキストがスイッチされる時、DMA装置(示されていない。例えば、図7と図8を参照せよ)はコンテキストの中にある位置を更新するように指示される。次回、同じコンテキストが使用されるとき、DMA装置はDMAコントローラに保存された位置で開始するように指示をする。
【0088】
この工程を一般的に図5に関連して示し、そして説明する。
【0089】
図5は本発明によるインターリーブ・プロセスの一実施態様のフロー・チャートを概略的に示している。装置または手段はステップ501でアイドル状態にある。データが送信に利用できるか、どうか、テスト502が行われる(割り込み、リクエスト、タイマーなどによって)。そうでないならば、アイドル状態が再開される。
【0090】
もしデータが転送に利用できるならば、一つのMTUのペイロードを含むデータ・パケットはステップ502で第一クライアントに送信される。その時、コンテキスト中でスイッチが行われるか、どうか(即ち、他のクライアントのために他のセグメントにスイッチされるべきか、どうか)がステップ504でチェックされる。スイッチが行なわれるべきか、どうかということは各コンテキストにあるリスト終点(EOL)への到達、または特定量のデータ(送信パターンに従って)が送信されたことによって始動されることがある。前に説明したように、例えばそのようなデータ量はコンテキスト記述子メタデータの中で特定されることがある。その数は全ての、またはいくつかのいろいろなコンテキストにとって同じかも知れないが、あるいは好ましい送信パターンによって指定された通りに変化することも可能である。
【0091】
もしスイッチが行われないときは、工程はステップ503にも戻り、そして他のMTUのデータを送信し続ける。
【0092】
もしスイッチが行われると、現在のコンテキストがペイロード・データを有するコンテキストか、ヘッダー・データを有するものであるかがステップ505でチェックされる。もし、それがヘッダー・データを有するコンテキストならば、全ての関連するペイロード・データが次のステップで送信されるかどうか(この場合には、後で再び必要とされない)、またはセグメントの一つ以上の追加されたスイッチが全てのペイロード・データが送信し終わる前に行われ(この場合には、ヘッダー・データが必要とされる)、そのために後で説明するように作業が次のコンテキストにスイッチするステップ506に進むかどうかに、これが依存するのでヘッダー・データが再び必要とされるか、どうかに関する情報はない。
【0093】
もし現在のコンテキストがペイロード・データを含むならば、現在のコンテキストに関してリスト終了(EOL)点に到達しているか、どうかをチェックするステップ507で他のテストが行われる。もしコンテキストのリスト終了点でないならば、現在のコンテキストはステップ508で、後で使用するために保存される。そして現在の位置は(即ち、所定のセグメントでデータが送信し終えるまで)ステップ509で保存される。後で説明するように、ステップ509の後、作業は次のコンテキストへスイッチするステップ506に進行する。
【0094】
リスト終了点に到達すると、その時は一つのコンテキストに関して全てのセグメント(単に一つであることもある)が送信し終わっており、ヘッダーとペイロード・データはもはや必要ではない。この場合は、DMA装置はステップ510で現在のコンテキストを保存するように指示され、そしてリスト終了点に到達したのでこのコンテキストもまた無効にされる。
【0095】
それからDMA装置は、前にステップ508の間で保存されたコンテキストを修復し、ステップ512でそのコンテキストを無効にするように、ステップ511で指示され、そしてヘッダー・コンテキストを無効にする。この結果、ヘッダーとペイロードのコンテキストは無効にされる。
【0096】
ステップ512の後、作業は次のコンテキストにスイッチするステップ506に進行する。
【0097】
ステップ506の後、次のコンテキストが存在するか、どうかのテスト513がその時行われる。もし無いならば、即ち全てのコンテキストが十分に処理され、それによって全てのセグメントが送信し終わっているならば、ステップ501で待機状態が再開される。
【0098】
もし、コンテキストが存在するならば、そのコンテキストがまだ有効であるか、どうかがチェック514される。もし無いならば、ステップ506が再び行われ、それによって新しいコンテキストを選択する。もし新しいコンテキストが有効ならば(即ち、完全には処理されていないならば)更なるデータを送信するためにステップ503が再開される。
【0099】
ステップ506と二つの次のテスト513と514はDMA装置に有効なものが見つかるまでコンテキストを自動的にロードさせる。または、有効なものに会うこと無しに無効なコンテキストが再開されるか、どうかを例えばチェックすることによって、全てのコンテキストが無効であることが決定される。全てのコンテキストが無効であるとき、送信は完了している。
【0100】
図6は、メモリからデータを一度だけ読んでいる間に、同じセグメントをいくつかのクライアントへ送るのに有利なリスト構造例の実施態様を概略的に示している。二つのコンテキスト記述子301コンテキスト1とコンテキスト2を含む二次元リスト構造が示されている。ここで、コンテキスト1はコンテキスト2を参照し、コンテキスト2はコンテキスト1を参照し返している。
【0101】
コンテキスト1は、所定のセグメント1のペイロード・データ305を含むバッファを指示するデータ記述子303データ1を含んでいる。
【0102】
コンテキスト2は二つのデータ記述子303のデータ2とデータ3を含んでいる。ここで、データ2は第一クライアントまたは送り先である送り先1のセグメント1に関するヘッダー・データ304を含むバッファ、または他の適切なメモリ位置を指示しており、そしてデータ3は第二クライアントまたは送り先である送り先2のセグメント1に関するヘッダー・データ304を含むバッファ、または他の適切なメモリ位置を指示している。
【0103】
作業中、次のシーケンスが実施される。
【0104】
1.コンテキスト1がアクセスされ、DMAコントローラはセグメント1のペイロード・データの一つ以上のMTU(例えば、コンテキスト1のコンテキスト記述子メタデータの中で定義されるように)をバッファまたはメモリから取得、または読み取る。
【0105】
2.DMA装置は現在の位置を保存し、コンテキスト2にスイッチする。
【0106】
3.コンテキスト2を処理すると、DMAコントローラはデータ記述子データ2を用いた第一送り先へのヘッダー・データを取得する。それから、ステップ1で得られたセグメント1のペイロード・データはDMA装置(示されていない。例えば、図7と図8の704を参照せよ)によって送り先1と定義されるクライアント1に送信される。
【0107】
4.データ2はEOLセットを持っていないので、そのときデータ記述子データ3が処理され、これは第二の送り先、送り先2にヘッダー・データを供与する。そして、それから既に獲得され、セグメント1に向けて送信されたペイロード・データは(ステップ1で与えられたように)DMA装置によって送り先2によって定義されたとおりにクライアントに送信される。データ3のEOLとEOSフラッグが設定されると、次のコンテキストへのスイッチングが行われる。ヘッダーの情報はそのまま再び必要とされるので、位置は保存されない。次のコンテキストはこの例ではコンテキスト1であり、セグメント1の全てのペイロード・データが両方の送り先に送信し終えるまでそのステップが繰り返される。
【0108】
プロセスが二つ以上の送り先にデータを送信することを含むことがあると理解されるべきである。これは各送り先に関連するヘッダー情報を指定する一個のデータ記述子を必要するだけである。
【0109】
図7はハードウェア・ネットワーク・オフローデング700を有する送信ユニットまたはシステムの概略のブロック図を示している。送信ユニットまたはシステムがネットワークに接続される。ここにはまた少なくとも一つのクライアントが接続される(例えば、アド・ホック)。このネットワークは例えば、ローカル、リモート、有線、無線などである。
【0110】
送信されるべきセグメントを含むメモリおよび/または一つ以上のバッファ701(以後、単にメモリと称する)が示されている。ここで、このメモリは送信ユニットまたはシステムの操作を担当している中央処理装置(CPU)702に接続されている。このメモリはまたメモリの中の一つ以上のデータ領域(例えば、一セグメントに一個)に、前に説明したようにインターリーブ風に、アクセスを提供するDMAコントローラ703に接続されている。そして、各データ領域は保存されたセグメントを含んでいる。
【0111】
DMAコントローラはDMA装置、DMAクライアント、あるいは本発明によってDMAコントローラを制御することを担当するネットワーク・オフローダに接続されている。DMA装置は、それを制御するメインCPUと所定のネットワークの上でデータの送信を可能にするネットワーク・インターフェイス705に接続されている。データを送信するとき、送信ユニットまたはシステムはDMA装置を設定してデータを送信する。そしてDMA装置はメインCPUをオフロードするためにセグメンテーション、スイッチングなどを引き受ける。そして、データをネットワーク・インターフェイスに送信する。このネットワーク・インターフェイスは一つ以上のクライアント・ネットワーク・インターフェイスによって受信されるべきネットワークの上でデータを送信する。
【0112】
主CPUはDMA装置を設定するためのインターフェイスを有し、そしてDMA装置はそのときDMAコントローラを用いて説明したように送信データを読む。
【0113】
DMA装置の制御の下でDMAコントローラは各データ領域の中の現在の位置のトラックを保持する。送信パターンが得られるか、または導出され、この点における情報がDMAコントローラに供給される。そしてデータ領域をスイッチする時を指示し、−そして、それによって、他のセグメントのためにデータ送信を始める(もし、何か残っていれば)。次にもっと詳しく説明するようにインターリーブ送信が比較的遅いクライアントへの送信速度を効果的に低減するので特定の送信パターンがパケット・ロスを低減した状態でネットワークをオフロードする。スイッチすると、DMA装置に指示された通りに、前に説明したように、送信されるべきデータを多く持っている次のデータ領域をDMAコントローラは自動的に選択する。
【0114】
DMA装置とDMAコントローラはハードウェアで実施され、ソフトウェアを基にした解決方法に較べて、それよりもオフローデングをネットワーク化するためのCPUの使用を劇的に低減することができる。
【0115】
図8はDMA装置の一実施態様の概略ブロック図を示している。
【0116】
送信イン(TX in)ユニット803と送信アウト(TX out)ユニット804に接続されている送信(TX)メモリ802に接続されたCPU801が示されている。チェックサム計算ユニット805はTX inユニット803に接続されている。データはTX inユニット803によってDMAコントローラからTXメモリ802に読み込まれる(示されていない。例えば、図7の703を参照せよ)(そして、同時にチェックサム・ユニットは読み取りデータ・パケットのチェックサムを計算する)。それから、CPU801によって処理され、ネットワーク・インターフェイス(示されていない。図7の705を参照せよ)にTX outユニット804によって送出される。
【0117】
図9は、送信ユニットまたはハードウェア・ネットワーク・オフローデングとネットワークの中で接続された一つ以上のクライアントを有するシステムを含むシステムの概略ブロック図を示している。送信ユニットまたはハードウェア・ネットワーク・オフローデング700を有するシステムが示されている。これはDMA装置704と所定のネットワークの上でデータ送信を可能にするネットワーク・インターフェイス705を含んでおり、一つ以上のクライアント710もまたネットワーク・インターフェイス705を含んでいる。クライアント710と送信ユニットまたはシステムはネットワーク102を介して接続されている。
【0118】
図10は図7と関連して説明した送信に類似したハードウェア・ネットワーク・オフローデングを利用した送信ユニット1000からの送信の信号伝達図である。送信ユニット1000はネットワークに接続されている。これには多くの受信機1020、1022もまた接続されている。これらの通信構成要素が接続されているネットワークは、例えばローカル、リモート、有線、無線などである。
【0119】
送信ユニット1000は送信されるべきセグメントを保存するメモリ1001とDMAオフローデング・コントローラ1004を含んでいる。図10で概略的に示されているように、メモリ1001とDMAオフローダ1004は、図7の場合と同じように、処理ユニット1002に接続されている。メモリ1001は、前に述べたようにインターリーブの方法で、メモリ1001内の一つ以上のデータ領域(例えば、各セグメントに一つ)にアクセスを与えるDMAオフローデング・コントローラ1004に接続されている。そして、各データ領域は保存されたセグメントを含んでいる。
【0120】
DMAオフローダはネットワーク上でデータの送信を可能にしている。そしてデータを送信するとき、送信ユニット1000は、処理ユニット1002で実行する送信ソフトウェアによって、処理ユニット1002をオフロードするためにデータ、セグメンテーション、スイッチングなどを送信するようにDMAオフローダ1004を設定する。そして、一つ以上の受信機1020、1022ネットワーク・インターフェイスによって受信されるべきデータをネットワーク上に送信する。
【0121】
以下の信号伝達ステップのシーケンスは送信ユニット1000の中で行われる:
第一の信号伝達ステップ1051では、送信ソフトウェア1010はDMAオフローダ1004にセグメントS1とS2について教える。実際のデータは何も送信されないが、セグメントについてメタデータだけが送信される。送信パターンの例は、図10に示されるように、p1 p1 p2 p1で始まり、p1で終わるものである。
【0122】
第二の信号伝達ステップ1052では、DMAオフローダ1004はセグメント1からMTUを読み、第一受信機1020にデータを送る。第三の信号伝達ステップ1054では、DMAオフローダ1004はメモリからセグメント1の第二MTUを読み、第一受信機1020にデータを送る。第四の信号伝達ステップ1056では、DMAオフローダはセグメント2にスイッチする。そして第一MTUを読む。第一パケットは第二受信機1022に送られ、そしてそのデータを送っている間に、DMAオフローダ1004は第一セグメントに戻り、読み、そして第五の信号伝達ステップ1058の第三MTUを送信する。第六の信号伝達ステップ1059によって示されるように、これは全てのパケットが送られるまで続く。そして、ACKまたは同様な形式で受信機からの帰還は必要ではない。信号伝達ステップ1052、1054、1056、1058、1059でMTUの読み取りが受信機へのデータの送信と同時に行われることがあるということに注目すべきである。
【0123】
インターリーブ送信は比較的遅いクライアントに対して、確認(ACK)信号を用いないで、送信速度を効果的に低減するので特定の送信パターンは低減されたパケット・ロスでネットワークをオフロードすることができる。
【0124】
請求項で、括弧内に置かれた如何なる引用符号も請求を制限すると解釈してはならない。“含んでいる”という言葉は請求項で取り上げたもの以外の要素やステップの存在を除外するものではない。要素に先行する“a”または“an”はそのような要素の複数の存在を除外するものではない。
【0125】
本発明は、いくつかの個別部品を含むハードウェアによって、そして適切にプログラムされたコンピュータによって実施することができる。装置請求において、いくつかの手段を列挙すると、これらのいくつかの手段は一つまたは同じ項目のハードウェアによって具現化することができる。ある手段が相互に異なった従属した請求で列挙されているという単なる事実はこれらの手段の組み合わせが有利に用いることができないということを示すものではない。
【特許請求の範囲】
【請求項1】
送信ユニット(700、1000)が第一データ送信速度を有し、第一の送り先(710、1020)が第一データ受信速度を有し、第一データ送信速度が第一データ受信速度よりも速い、送信ユニット(700、1000)からデータ・ネットワーク(102)を介して第一の送り先(710、1020)にデータの第一セグメント(101)を送信するための手段であって、当該手段は肯定応答、ACK、を用いない通信手段であり、かつ
・ 前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先に送信し、その送信が送信ユニットから第一の送り先の方向にだけ向いていることと、
・ 少なくとも第二セグメント(101)の少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加した送り先(710、1022)に送信し、その送信が送信ユニットから一つ以上の追加した送り先の方向にだけ向いており、前記第一セグメント(101)および/または少なくとも前記第二セグメントを送信し終えるまでスイッチングが繰り返されること
との間で前記スイッチングによって、送信ユニット(700、1000)から第一の送り先(710、1022)への第一送信速度を効果的に低減することを含む手段。
【請求項2】
第一の送り先(710)に送信される前記少なくとも第一セグメント(101)のデータ・パケットの間に一つ以上の待ち状態を挿入することを、さらに含む請求項1に記載の手段。
【請求項3】
請求項1〜2の何れか一項に記載の手段であって、
・ スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを明示する前記第一セグメント(101)の中の第一ポジションを保存すること、および/または保存された各々の位置から送信を再開するために、如何に多くの前記第二セグメントが送信されたか、そして何時前記第一セグメントまたは前記第二セグメントに再びスイッチ・バックされるかを明示する前記第二セグメントの位置を保存することを更に含む手段。
【請求項4】
前記スイッチングが送信パターンに従って行われる、請求項1〜3の何れか一項に記載の手段。
【請求項5】
前記送信パターンが第一送り先(710)の受信速度および/または前記追加した送り先(710)の少なくとも一つの受信速度に基づいて決定される、請求項4に記載の手段。
【請求項6】
データ(101)の前記少なくとも第一セグメントが前記送信ユニット(700)のメモリに保存され、ここで前記第一セグメントのデータが、前記メモリ(701)からダイレクト・メモリ・アクセス・コントローラ(703)によって読み出され、そして前記ダイレクト・メモリ・アクセス・コントローラ(703)と前記ダイレクト・メモリ・アクセス装置(704)が前記送信ユニット(700)の中央処理装置(702)をオフロードするネットワーク・インターフェイス(705)を介して前記ネットワーク(102)に前記第一セグメントの前記データを更に供給するダイレクト・メモリ・アクセス装置(704)に供給される、請求項1〜5の何れか一項に記載の手段。
【請求項7】
前記ダイレクト・メモリ・アクセス装置(704)が前記ダイレクト・メモリ・アクセス・コントローラ(703)から前記ダイレクト・メモリ・アクセス装置(704)に供給されるデータのチェックサムを計算するチェックサム計算ユニット(805)を含む、請求項6に記載の手段。
【請求項8】
二次元リスト構造が前記第一セグメント(101)の送信を制御し、前記二次元リスト構造が
・ 前記第一セグメントのデータに関して少なくとも一つのデータ記述子(302)に関連する第一コンテキスト記述子(301)と、
・ 少なくとも二つのデータ記述子(302)に関連し、各データ記述子(302)が二つの異なった送り先(710)のためのヘッダー・データ(303)に関連する第二コンテキスト記述子(301)
を含み、ここで前記手段が
・ 前記第一セグメント(101)の少なくとも一部分を得るために前記第一コンテキスト記述子(301)を処理することと、
・ 前記二つの異なった送り先(710)のうちの一つのためのヘッダー・データ(304)を得ることと前記二つの異なった送り先(710)のうちの他の一つのためのヘッダー・データ(304)を得るために前記第二コンテキスト記述子(301)を処理することと前記第一セグメントの得られた部分を前記二つの異なった送り先(710)の一つに送信することと前記第一セグメントの得られた部分を前記二つの異なった送り先(710)の他の一つに送信することと
を含む、請求項1〜7の何れか一項に記載の手段。
【請求項9】
送信ユニット(700,1000)が第一データ送信速度を有し、第一の送り先(710,1020)が第一データ受信速度を有し、ここで第一送信速度が第一受信速度よりも大きい、送信ユニット(700、1000)から第一の送り先(710、1020)にデータ・ネットワーク(102)を介してデータの第一セグメント(101)を送信するための装置(700)であって、当該装置は肯定応答、ACK、を用いない通信用に構成された装置であり、
・ 送信が送信ユニットから第一の送り先の方向だけに向いている第一の送り先に一つ以上のデータ・パケットとして前記第一セグメント(101)の少なくとも一部を送信することと、
・ 少なくとも第二セグメント(101)の少なくとも一部を一つ以上のデータ・パケットとして送信が送信ユニットから一つ以上の追加した送り先の方向だけに向いている一つ以上の追加した送り先(710,1022)に送信すること
との間でスイッチングし、前記スイッチングは前記第一セグメント(101)および/または少なくとも第二セグメントが送信し終わるまで反復されることによって、
送信ユニット(700,1000)から第一の送り先(710、1020)への第一送信速度を効果的に低減するのに適応したダイレクト・メモリ・アクセス装置(704、1004)と
を含む装置。
【請求項10】
・ 第一の送り先(710)に送信される前記少なくとも第一セグメント(101)のデータ・パケットの間に一つ以上の待ち状態を挿入すること
に前記ダイレクト・メモリ・アクセス装置(704)が更に適応した、請求項9に記載の装置。
【請求項11】
スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを明示する前記第一セグメント(101)の第一ポジションを保存すること、および/または如何に多くの前記第二セグメントが送信されたかを明示する前記第二セグメントのポジションを保存すること、そして前記第一セグメントまたは前記第二セグメントの送信が再びスイッチ・バックされるとき各保存されたポジションから送信を再開すること
にダイレクト・メモリ・アクセス装置(704)が更に適応した、請求項9〜10の何れか一項に記載の装置。
【請求項12】
前記スイッチングが送信パターンに従って行われる、請求項9〜11の何れか一項に記載の装置。
【請求項13】
前記送信パターンが第一送り先(710)の受信速度、および/または前記追加の送り先(710)の少なくとも一つの受信速度に基づいて決定される、請求項12に記載の装置。
【請求項14】
前記装置(700)がデータ(101)の前記少なくとも第一セグメントをその中に保存したメモリ(701)と前記メモリ(701)から前記第一セグメントのデータを読み、そして前記ダイレクト・メモリ・アクセス装置(704)にそれを供給するのに適応したダイレクト・メモリ・アクセス・コントローラ(703)を含み、前記ダイレクト・メモリ・アクセス装置(704)が前記第一セグメントを前記ネットワーク(102)にネットワーク(705)を介して供給するのに適応しており、前記ダイレクト・メモリ・アクセス・コントローラ(703)と前記ダイレクト・メモリ・アクセス装置(704)が前記送信ユニット(700)の中央処理装置(702)を効果的にオフロードする、請求項9〜13の何れか一項に記載の装置。
【請求項15】
前記ダイレクト・メモリ・アクセス装置(704)が前記ダイレクト・メモリ・アクセス・コントローラ(703)から前記ダイレクト・メモリ・アクセス装置(704)に供給されたデータの上でチェックサムを計算するチェックサム計算ユニット(805)を含む、請求項14に記載の装置。
【請求項16】
前記装置が前記第一セグメント(101)の送信を制御する二次元リスト構造を含み、かつ前記二次元リスト構造が
・ 前記第一セグメントのデータに関する少なくとも一つのデータ記述子(302)に関連する第一コンテキスト記述子(301)と、
・ 各々のデータ記述子(302)が二つの異なった送り先(710)のヘッダー・データ(304)に関連する、少なくとも二つのデータ記述子(302)に関連する第二コンテキスト記述子(301)
を含み、前記イレクト・メモリ・アクセス装置(704)が
・ 前記第一セグメント(101)の少なくとも一部分を得るために前記第一コンテキスト(301)を処理することと
・ 前記二つの異なった送り先(710)の一方のためのヘッダー・データ(304)を獲得し、かつ前記二つの送り先のもう一方のためのヘッダー・データ(304)を獲得し、かつ前記二つの異なった送り先(710)の一つへ前記第一セグメントの獲得された部分を送信し、前記二つの異なった送り先(710)の他の一つへ前記第一セグメントの獲得された部分を送信するために前記第二コンテキスト(301)を処理すること
に適応した、請求項9〜15の何れか一項に記載の装置。
【請求項17】
一つ以上の処理ユニットに請求項1〜8の何れか一項に従って該手段を実行させるために、その上に保存された命令を有するコンピュータ読み取り可能な媒体。
【請求項1】
送信ユニット(700、1000)が第一データ送信速度を有し、第一の送り先(710、1020)が第一データ受信速度を有し、第一データ送信速度が第一データ受信速度よりも速い、送信ユニット(700、1000)からデータ・ネットワーク(102)を介して第一の送り先(710、1020)にデータの第一セグメント(101)を送信するための手段であって、当該手段は肯定応答、ACK、を用いない通信手段であり、かつ
・ 前記第一セグメントの少なくとも一部分を一つ以上のデータ・パケットとして第一の送り先に送信し、その送信が送信ユニットから第一の送り先の方向にだけ向いていることと、
・ 少なくとも第二セグメント(101)の少なくとも一部分を一つ以上のデータ・パケットとして一つ以上の追加した送り先(710、1022)に送信し、その送信が送信ユニットから一つ以上の追加した送り先の方向にだけ向いており、前記第一セグメント(101)および/または少なくとも前記第二セグメントを送信し終えるまでスイッチングが繰り返されること
との間で前記スイッチングによって、送信ユニット(700、1000)から第一の送り先(710、1022)への第一送信速度を効果的に低減することを含む手段。
【請求項2】
第一の送り先(710)に送信される前記少なくとも第一セグメント(101)のデータ・パケットの間に一つ以上の待ち状態を挿入することを、さらに含む請求項1に記載の手段。
【請求項3】
請求項1〜2の何れか一項に記載の手段であって、
・ スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを明示する前記第一セグメント(101)の中の第一ポジションを保存すること、および/または保存された各々の位置から送信を再開するために、如何に多くの前記第二セグメントが送信されたか、そして何時前記第一セグメントまたは前記第二セグメントに再びスイッチ・バックされるかを明示する前記第二セグメントの位置を保存することを更に含む手段。
【請求項4】
前記スイッチングが送信パターンに従って行われる、請求項1〜3の何れか一項に記載の手段。
【請求項5】
前記送信パターンが第一送り先(710)の受信速度および/または前記追加した送り先(710)の少なくとも一つの受信速度に基づいて決定される、請求項4に記載の手段。
【請求項6】
データ(101)の前記少なくとも第一セグメントが前記送信ユニット(700)のメモリに保存され、ここで前記第一セグメントのデータが、前記メモリ(701)からダイレクト・メモリ・アクセス・コントローラ(703)によって読み出され、そして前記ダイレクト・メモリ・アクセス・コントローラ(703)と前記ダイレクト・メモリ・アクセス装置(704)が前記送信ユニット(700)の中央処理装置(702)をオフロードするネットワーク・インターフェイス(705)を介して前記ネットワーク(102)に前記第一セグメントの前記データを更に供給するダイレクト・メモリ・アクセス装置(704)に供給される、請求項1〜5の何れか一項に記載の手段。
【請求項7】
前記ダイレクト・メモリ・アクセス装置(704)が前記ダイレクト・メモリ・アクセス・コントローラ(703)から前記ダイレクト・メモリ・アクセス装置(704)に供給されるデータのチェックサムを計算するチェックサム計算ユニット(805)を含む、請求項6に記載の手段。
【請求項8】
二次元リスト構造が前記第一セグメント(101)の送信を制御し、前記二次元リスト構造が
・ 前記第一セグメントのデータに関して少なくとも一つのデータ記述子(302)に関連する第一コンテキスト記述子(301)と、
・ 少なくとも二つのデータ記述子(302)に関連し、各データ記述子(302)が二つの異なった送り先(710)のためのヘッダー・データ(303)に関連する第二コンテキスト記述子(301)
を含み、ここで前記手段が
・ 前記第一セグメント(101)の少なくとも一部分を得るために前記第一コンテキスト記述子(301)を処理することと、
・ 前記二つの異なった送り先(710)のうちの一つのためのヘッダー・データ(304)を得ることと前記二つの異なった送り先(710)のうちの他の一つのためのヘッダー・データ(304)を得るために前記第二コンテキスト記述子(301)を処理することと前記第一セグメントの得られた部分を前記二つの異なった送り先(710)の一つに送信することと前記第一セグメントの得られた部分を前記二つの異なった送り先(710)の他の一つに送信することと
を含む、請求項1〜7の何れか一項に記載の手段。
【請求項9】
送信ユニット(700,1000)が第一データ送信速度を有し、第一の送り先(710,1020)が第一データ受信速度を有し、ここで第一送信速度が第一受信速度よりも大きい、送信ユニット(700、1000)から第一の送り先(710、1020)にデータ・ネットワーク(102)を介してデータの第一セグメント(101)を送信するための装置(700)であって、当該装置は肯定応答、ACK、を用いない通信用に構成された装置であり、
・ 送信が送信ユニットから第一の送り先の方向だけに向いている第一の送り先に一つ以上のデータ・パケットとして前記第一セグメント(101)の少なくとも一部を送信することと、
・ 少なくとも第二セグメント(101)の少なくとも一部を一つ以上のデータ・パケットとして送信が送信ユニットから一つ以上の追加した送り先の方向だけに向いている一つ以上の追加した送り先(710,1022)に送信すること
との間でスイッチングし、前記スイッチングは前記第一セグメント(101)および/または少なくとも第二セグメントが送信し終わるまで反復されることによって、
送信ユニット(700,1000)から第一の送り先(710、1020)への第一送信速度を効果的に低減するのに適応したダイレクト・メモリ・アクセス装置(704、1004)と
を含む装置。
【請求項10】
・ 第一の送り先(710)に送信される前記少なくとも第一セグメント(101)のデータ・パケットの間に一つ以上の待ち状態を挿入すること
に前記ダイレクト・メモリ・アクセス装置(704)が更に適応した、請求項9に記載の装置。
【請求項11】
スイッチングが行われる前に、如何に多くの前記第一セグメントが送信されたかを明示する前記第一セグメント(101)の第一ポジションを保存すること、および/または如何に多くの前記第二セグメントが送信されたかを明示する前記第二セグメントのポジションを保存すること、そして前記第一セグメントまたは前記第二セグメントの送信が再びスイッチ・バックされるとき各保存されたポジションから送信を再開すること
にダイレクト・メモリ・アクセス装置(704)が更に適応した、請求項9〜10の何れか一項に記載の装置。
【請求項12】
前記スイッチングが送信パターンに従って行われる、請求項9〜11の何れか一項に記載の装置。
【請求項13】
前記送信パターンが第一送り先(710)の受信速度、および/または前記追加の送り先(710)の少なくとも一つの受信速度に基づいて決定される、請求項12に記載の装置。
【請求項14】
前記装置(700)がデータ(101)の前記少なくとも第一セグメントをその中に保存したメモリ(701)と前記メモリ(701)から前記第一セグメントのデータを読み、そして前記ダイレクト・メモリ・アクセス装置(704)にそれを供給するのに適応したダイレクト・メモリ・アクセス・コントローラ(703)を含み、前記ダイレクト・メモリ・アクセス装置(704)が前記第一セグメントを前記ネットワーク(102)にネットワーク(705)を介して供給するのに適応しており、前記ダイレクト・メモリ・アクセス・コントローラ(703)と前記ダイレクト・メモリ・アクセス装置(704)が前記送信ユニット(700)の中央処理装置(702)を効果的にオフロードする、請求項9〜13の何れか一項に記載の装置。
【請求項15】
前記ダイレクト・メモリ・アクセス装置(704)が前記ダイレクト・メモリ・アクセス・コントローラ(703)から前記ダイレクト・メモリ・アクセス装置(704)に供給されたデータの上でチェックサムを計算するチェックサム計算ユニット(805)を含む、請求項14に記載の装置。
【請求項16】
前記装置が前記第一セグメント(101)の送信を制御する二次元リスト構造を含み、かつ前記二次元リスト構造が
・ 前記第一セグメントのデータに関する少なくとも一つのデータ記述子(302)に関連する第一コンテキスト記述子(301)と、
・ 各々のデータ記述子(302)が二つの異なった送り先(710)のヘッダー・データ(304)に関連する、少なくとも二つのデータ記述子(302)に関連する第二コンテキスト記述子(301)
を含み、前記イレクト・メモリ・アクセス装置(704)が
・ 前記第一セグメント(101)の少なくとも一部分を得るために前記第一コンテキスト(301)を処理することと
・ 前記二つの異なった送り先(710)の一方のためのヘッダー・データ(304)を獲得し、かつ前記二つの送り先のもう一方のためのヘッダー・データ(304)を獲得し、かつ前記二つの異なった送り先(710)の一つへ前記第一セグメントの獲得された部分を送信し、前記二つの異なった送り先(710)の他の一つへ前記第一セグメントの獲得された部分を送信するために前記第二コンテキスト(301)を処理すること
に適応した、請求項9〜15の何れか一項に記載の装置。
【請求項17】
一つ以上の処理ユニットに請求項1〜8の何れか一項に従って該手段を実行させるために、その上に保存された命令を有するコンピュータ読み取り可能な媒体。
【図1】
【図2a】
【図2b】
【図2c】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2a】
【図2b】
【図2c】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2013−62854(P2013−62854A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2012−247812(P2012−247812)
【出願日】平成24年11月9日(2012.11.9)
【分割の表示】特願2010−542194(P2010−542194)の分割
【原出願日】平成20年10月29日(2008.10.29)
【出願人】(502208205)アクシス アーベー (39)
【Fターム(参考)】
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成24年11月9日(2012.11.9)
【分割の表示】特願2010−542194(P2010−542194)の分割
【原出願日】平成20年10月29日(2008.10.29)
【出願人】(502208205)アクシス アーベー (39)
【Fターム(参考)】
[ Back to top ]