JP2006340176A - マルチキャストデータ転送方法及びシステム - Google Patents
マルチキャストデータ転送方法及びシステム Download PDFInfo
- Publication number
- JP2006340176A JP2006340176A JP2005164216A JP2005164216A JP2006340176A JP 2006340176 A JP2006340176 A JP 2006340176A JP 2005164216 A JP2005164216 A JP 2005164216A JP 2005164216 A JP2005164216 A JP 2005164216A JP 2006340176 A JP2006340176 A JP 2006340176A
- Authority
- JP
- Japan
- Prior art keywords
- request
- reception request
- branch
- branch device
- reception
- 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
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】 複数の分岐装置を利用することにより、転送容量を向上させることができるマルチキャストデータ転送方法及びシステムを提供する。
【解決手段】 クライアントからの受信要求を分散装置が受けて分岐装置へ送信し、受信要求を受けた分岐装置は受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求をサーバへ送信する。また、受信要求の要求元に対してデータ送信が不可能であれば、仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、その受信要求を受けた分岐装置も同様の処理を繰り返す。
【選択図】 図1
【解決手段】 クライアントからの受信要求を分散装置が受けて分岐装置へ送信し、受信要求を受けた分岐装置は受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求をサーバへ送信する。また、受信要求の要求元に対してデータ送信が不可能であれば、仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、その受信要求を受けた分岐装置も同様の処理を繰り返す。
【選択図】 図1
Description
本発明は、サーバが送出したデータを、分岐装置が複製することで複数のクライアントに配信するマルチキャストサービスにおけるマルチキャストデータ転送方法及びシステムに関する。
従来から、複数のクライアントに対してデータを同報するマルチキャスト通信を実現する方法として、クライアントからの受信要求を分岐装置が捕獲し、分岐点となることで、木状の配信経路を構築するマルチキャスト方式が知られている(特許文献1参照)。
この方式では、分岐装置は要求元をチャネル(番組)ごとに記録する表(配送表)を管理する。分岐装置がクライアント側から受信要求を受信すると、受信要求からチャネルを読み取り、要求元を配送表に記録する。分岐装置はサーバ宛に受信要求を送信する。分岐装置がサーバ側からデータを受信すると、配送表に記録されている要求元へと転送する。
この方式では、分岐装置は要求元をチャネル(番組)ごとに記録する表(配送表)を管理する。分岐装置がクライアント側から受信要求を受信すると、受信要求からチャネルを読み取り、要求元を配送表に記録する。分岐装置はサーバ宛に受信要求を送信する。分岐装置がサーバ側からデータを受信すると、配送表に記録されている要求元へと転送する。
また、本願の発明者により、受信要求を分散する装置と分岐装置を論理的に組み合わせることで、仮想的な分岐装置を構成する技術についての特許出願が行われている(特願2004−159470)。この技術では、分岐装置のデータ転送性能や信頼性を向上させることが可能であり、次のように動作する。クライアント側から送信されてきた受信要求は、まず分散装置に捕獲される。分散装置は、要求されているチャネルごとに、そのチャネルを担当する分岐装置を決定する。そして、受信要求をその分岐装置へ転送する。分岐装置は、要求元を配送表に記録し、サーバ宛に受信要求を送信する。分岐装置がサーバ側からデータを受信すると、配送表に記録されている要求元へと転送する。このような処理を行うことにより、データ転送負荷を複数の分岐装置に分散させることができる。また、分散装置が分岐装置の状態を監視し、障害が発生した分岐装置を分散対象から外すことで、信頼性を向上させることができる。
特開2003−32300号公報
しかしながら、従来使用されていた技術では、チャネルあたりの要求元の数が分岐装置の転送容量を越えると、転送できなくなるという課題があった。つまり、ひとつのチャネルを複数の分岐装置に担当させることができなかった。このため、チャネルあたりの最大分岐数が、分岐装置1台あたりの転送容量によって制限されていた。
本発明は、上記事情に鑑みてなされたものであり、その目的は、複数の分岐装置を利用することにより、転送容量を向上させることができるマルチキャストデータ転送方法及びシステムを提供することにある。
本発明は、上記課題を解決するためになされたもので、請求項1に記載の発明は、1台以上のサーバと、2台以上のクライアントと、1台以上の分散装置及び2台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信し、前記受信要求を受けた分岐装置は前記受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信し、前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送方法である。
また、請求項2に記載の発明は、自身の識別情報を含んだ受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、分岐装置が前記自身の識別情報を含んだ受信要求を受信した場合には、該受信要求を破棄することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項3に記載の発明は、前記仮想分岐装置を構成する分岐装置数を含む受信要求を、前記リング情報に基づいて定まる次の分岐装置へ転送し、前記分岐装置数を含む受信要求を受信した分岐装置は、分岐装置数を1減算した受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、前記分岐装置数が0である受信要求を受信した分岐装置は、その受信要求を破棄することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項4に記載の発明は、前記分岐装置は配送表に登録されているクライアントから停止要求を受信した場合に、前記分岐装置が受信要求を送信している要求先である分岐装置又はクライアントを、前記リング情報に基づいて前の分岐装置へ通知し、前記前の分岐装置は、前記要求先に対して受信要求を送信することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項5に記載の発明は、前記分岐装置は、受信要求を送信してきた要求元である分岐装置を配送表に登録した場合に、前記リング情報に基づいて次の分岐装置に対して、前記要求元を配送表から削除するように指示することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項6に記載の発明は、前記分岐装置は、受信要求を受信した場合にデータを送信不可能であれば、配送表に受信要求を送信してきた分岐装置である要求元を仮登録し、データを送信可能である場合には前記配送表に本登録されている要求元にのみ送信し、停止要求の送信可否を判断する場合には、前記仮登録されている要求元の数を含めて判断を行うことを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項7に記載の発明は、前記分岐装置は、前記リング情報の前の分岐装置から受信した受信要求により要求するデータについての情報が配送表に登録されていない場合、又は、前記前の分岐装置の配送表から前記要求元を削除するように指示する場合に、前記前の分岐装置が送信する受信要求又は停止要求を前記リング情報の次の分岐装置へ転送することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項8に記載の発明は、前記分散装置又は分岐装置は、同一の仮想分岐装置を構成する分岐装置の状態を監視し、該分岐装置の台数に増減があった場合には新たなリング情報を作成し、分岐装置へ配布することを特徴とする請求項1に記載のマルチキャストデータ転送方法である。
また、請求項9に記載の発明は、1台以上のサーバと、2台以上のクライアントと、1台以上の分散装置及び2台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、前記分散装置は、前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信する送信手段を有し、前記分岐装置は、前記受信要求を受信し、該受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信する送信手段と、前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送する転送手段とを有し、その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送システムである。
本発明では、複数の分岐装置に対してリング状に順番付けたリング情報を設定し、クライアントに対してデータを送信できない場合には、そのリング情報に対して受信要求を転送するようにした。これにより、分岐装置1台あたりの転送容量が制限されることを防ぐことができ、ネットワークにかかる負荷を分散することができる。
以下、図面を参照し、本発明の実施形態について説明する。
図1は、本発明の実施形態による負荷分散システムの構成図である。本実施形態では、サーバV、クライアントL1〜L21、分岐装置S1〜S3を、分散装置Bに接続している。なお、分散装置Bの位置にルータを置き、分散装置Bを分岐装置S1〜S3と同じ位置に接続しても良い。分散装置Bと分岐装置S1〜S3は、仮想的な1台の仮想分岐装置Svとして動作する。動作の詳細は後述する。
なお、ここでは、仮想分岐装置Svが1台しか存在しない場合について説明するが、実際にはネットワーク中に何台存在していても良い。例えば、分散装置BとクライアントL1〜L21の間に仮想分岐装置Svが存在する場合には、分散装置Bからみると仮想分岐装置Svがクライアントのように見えることになる。
図1は、本発明の実施形態による負荷分散システムの構成図である。本実施形態では、サーバV、クライアントL1〜L21、分岐装置S1〜S3を、分散装置Bに接続している。なお、分散装置Bの位置にルータを置き、分散装置Bを分岐装置S1〜S3と同じ位置に接続しても良い。分散装置Bと分岐装置S1〜S3は、仮想的な1台の仮想分岐装置Svとして動作する。動作の詳細は後述する。
なお、ここでは、仮想分岐装置Svが1台しか存在しない場合について説明するが、実際にはネットワーク中に何台存在していても良い。例えば、分散装置BとクライアントL1〜L21の間に仮想分岐装置Svが存在する場合には、分散装置Bからみると仮想分岐装置Svがクライアントのように見えることになる。
図2は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、分岐装置S1〜S3の情報を、分散装置Bの登録表10に登録する処理と、それに関連する処理を示している。サーバVと分岐装置S1〜S3は、それぞれ配送表と呼ばれる表を管理している。配送表には、配送を担当しているチャネルと、そのチャネルを要求しているクライアントや分岐装置の情報が記録される。配送表の詳細な構成は後述する。分散装置Bは、登録表10を管理している。登録表10には、仮想分岐装置Svを構成している分岐装置S1〜S3の情報が記録される。ここで、チャネルとは、番組名やマルチキャストアドレスのようにデータ流を識別するために用いられるIDのことをいう。
分岐装置S1〜S3は、キープアライブと呼ばれるパケットを定期的に分散装置Bに送信する(ステップs101a、s102a、s103a)。分散装置Bは、継続的にキープアライブを受信している分岐装置の情報を、登録表10に記録する。また、分散装置Bは登録表10に記録されている分岐装置S1〜S3に順番をつけ、論理的なリングを作成する。順番を決定する方法は任意であるが、ここでは、S1、S2、S3と順に並べ、最後にS1に戻るようなリング(S1→S2→S3→S1→・・・)を作成する場合について説明する。そして、このリング情報を分岐装置S1〜S3にそれぞれ送信する(ステップs104a、s105a、s106a)。なお、リング情報は更新されたときのみ送信すればよい。このリング情報は、ひとつのチャネルを複数の分岐装置S1〜S3に担当させるために用いる。詳細については後述する。ここで、リング情報とは、仮想分岐装置Svを構成する分岐装置に順番をつけて論理的なリングを構成するための情報をいう。
ここで、分岐装置S3に障害が発生したとする。すると、分岐装置S1及びS2からはキープアライブを受信することはできるものの(ステップs101b、s102b)、分岐装置S3からのキープアライブは途絶える。分散装置Bは、一定時間キープアライブが途絶えると、登録表10から分岐装置S3の情報を削除する。そして、登録表10に登録されている分岐装置S1、S2を用いてリング情報を作成し直し(S1→S2→S1→・・・)、分岐装置S1、S2へ送信する(ステップs104b、s105b)。しばらくして、分岐装置S3が復旧し、またキープアライブを分散装置Bに対して送信するようになると(ステップs103c)、分散装置Bは分岐装置S3の情報を登録表10に登録するとともに、リング情報を作成し直し(S1→S2→S3→S1→・・・)、分岐装置S1〜S3にそれぞれ送信する(ステップs104c、s105c、s106c)。このようにすることで、分散装置Bは、利用可能な分岐装置を知ることができる。また、分岐装置S1〜S3は、リング情報を受け取ることによって、分岐装置間の順序付けを知ることができる。
図3は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、クライアントL1が、サーバVから配信されるチャネルCのデータを受信する処理について示している。分散装置Bの登録表10には、分岐装置S1〜S3の情報が登録されている。分岐装置S1〜S3は、ひとつのチャネルも配信していない。なお、分岐装置S1〜S3は、それぞれ10台までのクライアントを収容できるようになっている。
まず、クライアントL1は、受信要求R1を送信する(ステップs201)。受信要求R1には、要求元のクライアントL1とサーバV、チャネルCの情報が含まれている。クライアントL1からサーバVへの経路上に分散装置Bが置かれていると、分散装置Bは受信要求R1を横取りする。これは、例えば、クライアントL1が送信する受信要求R1の宛先ポート番号を特定番号に定めておき、分散装置Bが自身を通過するパケットの宛先ポート番号を監視することで実現することが可能である。クライアントL1は、受信を要求し続ける限り、受信要求R1を定期的に分散装置Bへ送信する。分散装置Bは、何らかのアルゴリズムを用いて、チャネルCを最初に担当する分岐装置を決定する。このアルゴリズムとしては、分岐装置を順番に選択するアルゴリズムであるラウンドロビンや、乱数のように単純なアルゴリズムや、負荷の小さい分岐装置を選択するようなアルゴリズムなどを使用することができる。ここでは、ラウンドロビンを使用し、分岐装置S1が選択されたものとする。すると、分散装置Bは、登録表10中のS1の行にチャネルCを登録し、受信要求R1を分岐装置S1へ送信する(ステップs202)。
受信要求R1を受信した分岐装置S1は、チャネルCの要求元であるクライアントL1が配送表11aに登録されているか否かについてチェックする。この時点では登録されていない。登録されていない場合には、要求元であるクライアントL1を収容したときに、収容数上限(ここでは、10台のクライアント)を越えるか否かについてチェックする。この時点では収容上限未満である。すると、分岐装置S1は、配送表11a中にチャネルCの行を作り、要求元であるクライアントL1を登録する。ここで、チャネルCの次に括弧で記されている初期担当(ここでは、分岐装置S1)と、矢印の右に記されている要求先(ここでは、サーバV)も登録しておく。初期担当とは、分散装置Bが選択した、チャネルCを最初に担当する分岐装置のことである。
分岐装置S1は、受信要求R1を分散装置Bから受信したため、自身が初期担当であることが分かる。これは、初期担当以外の分岐装置は、リングの前にあたる分岐装置から受信要求R1を受信するからである。配送表11aへの登録を完了した分岐装置S1は、自身を要求元とする受信要求R2を作成し、サーバV宛に送信する(ステップs203)。分散装置Bは、クライアントL1から送信される受信要求R1は横取りしたが、分岐装置S1から送信される受信要求R2は横取りしない。これは、例えば、パケットの送信元アドレスをチェックすることで実現できる。
受信要求R2を受信したサーバVは、チャネルCの要求元である分岐装置S1が配送表11dに登録されているか否かについてチェックする。この時点では登録されていない。すると、サーバVは、配送表11dにチャネルCの行を作り、要求元である分岐装置S1を登録する。
受信要求R2を受信したサーバVは、チャネルCの要求元である分岐装置S1が配送表11dに登録されているか否かについてチェックする。この時点では登録されていない。すると、サーバVは、配送表11dにチャネルCの行を作り、要求元である分岐装置S1を登録する。
その後、サーバVはチャネルCのデータD1を、配送表11dのチャネルCの行に登録されている要求元である分岐装置S1に送信する(ステップs204)。データD1を受信した分岐装置S1も同様に、データD1を配送表11aのチャネルCの行に登録されている要求元であるクライアントL1へ送信する(ステップs205)。なお、詳しくは後述するが、仮想分岐装置Svを構成している分岐装置S1〜S3は、受信したデータD1をリングの前に当たる分岐装置へと転送する。ただし、初期担当の分岐装置だけは転送しない。よって、ここでは、分岐装置S1は、要求元のクライアントL1のみに送信することとなる。
図4は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。図3で説明したシーケンス図による処理の後、クライアントL2〜L10も受信要求R1を送信し、分岐装置S1の配送表11aに登録されたとする。この時点で、分岐装置S1の配送表11aには10台のクライアントが登録されており、収容上限に達している。
ここで、クライアントL11は受信要求R3を分散装置Bに対して送信する(ステップs301)。分散装置Bが受信要求R3を受信すると、チャネルCの初期担当である分岐装置S1に転送する(ステップs302)。分岐装置S1は収容上限に達しているため、次のようにして受信要求R3をリングの次にあたる分岐装置S2へ転送する。
ここで、クライアントL11は受信要求R3を分散装置Bに対して送信する(ステップs301)。分散装置Bが受信要求R3を受信すると、チャネルCの初期担当である分岐装置S1に転送する(ステップs302)。分岐装置S1は収容上限に達しているため、次のようにして受信要求R3をリングの次にあたる分岐装置S2へ転送する。
まず、配送表11aの要求先を、サーバVから分岐装置S2に変更する。受信要求R3に初期担当が分岐装置S1であることを追記し、それを受信要求R4として、分岐装置S2へ送信する(ステップs303)。初期担当を追加するのは、受信要求R4がリングを無限に周回することを避けるためである。あるいは、受信要求R4にカウンタを設けても良い。例えば、リング構成ノード数3を記載し、受信要求R4が分岐装置を転送されるたびに1ずつ減算し、0になったら廃棄するようにすれば、受信要求R4がリングを無限に周回することを回避できる。最後に、停止要求P1を作成し、サーバV宛に送信する(ステップs304)。
受信要求R4を受信した分岐装置S2は、図3において受信要求R1を受信した分岐装置S1とほぼ同様に動作する。まず、チャネルCの要求元L11が配送表に登録されているか否かについてチェックする。この時点では登録されていない。登録されていない場合には、要求元であるクライアントL11を収容したときに、収容数上限を越えるか否かについてチェックする。この時点では収容上限未満である。すると、分岐装置S2は、配送表11bにチャネルCの行を作成し、要求元であるクライアントL11を登録する。配送表11bに登録する初期担当は、受信要求R4に記載された分岐装置S1とする。なお、無限周回を回避するためにカウンタを用いるときには、カウンタの値とリングの順序から、初期担当を推定する。また、要求先としてサーバVを登録する。最後に、自身を要求元とする受信要求R5を作成し、サーバV宛に送信する(ステップs305)。
サーバVは、分岐装置S1から停止要求P1を受信し、分岐装置S2から受信要求R5を受信する。その結果、サーバVの配送表11dには分岐装置S2が登録されることとなる。ただし、配送表11dから分岐装置S1を削除してから分岐装置S2が登録されるまでの間は、サーバVからのデータが停止することとなる。あるいは、分岐装置S2からの受信要求R5が先に届いた場合には、分岐装置S1が配送表11dから削除されるまでの間、サーバVからのデータD2が重複して配信されることとなる。この問題点の回避方法は後述する。
その後、サーバVはチャネルCのデータD2を、配送表11dのチャネルCの行に登録されている要求元である分岐装置S2へ送信する(ステップs306)。データD2を受信した分岐装置S2も同様に、データD2を配送表11bのチャネルCの行に登録されている要求元であるクライアントL11に送信する(ステップs308)。分岐装置S2は、リングの前に当たる分岐装置S1にもデータD2を転送する(ステップs307)。分岐装置S1は、データD2を配送表11aのチャネルCの行に登録されている要求元であるクライアントL1〜L10へ送信する(ステップs309)。このような処理を行うことで、ひとつのチャネルを複数の分岐装置で担当することが可能となり、仮想分岐装置Svとしての転送容量を向上させることができる。
図5は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、クライアントが受信を停止する場合の動作について示している。図4で説明したシーケンス図による処理の後、クライアントL12〜L20が受信要求を送信し、分岐装置S2の配送表11bに登録されたとする。この時点で分岐装置S2が収容上限となったため、その次に受信要求を送信したクライアントL21は、分岐装置S3の配送表11cに登録されたとする。ここでは、クライアントL21が受信を停止したことによって、分岐装置S3の配送表11cから全てのクライアントが削除された状態について説明する。その他の場合については後述する。
クライアントL21は停止要求P2を分散装置Bに対して送信する(ステップs401)。分散装置Bは、停止要求P2を初期担当である分岐装置S1へ転送する(ステップs402)。分岐装置S1は、配送表11aに要求元であるクライアントL21が登録されていないため、停止要求P2を要求先である分岐装置S2へ転送する(ステップs403)。分岐装置S2も同様にして、停止要求P2を要求先である分岐装置S3へ転送する(ステップs404)。
分岐装置S3は、停止要求P2を受信すると、配送表11cから要求元であるクライアントL21の情報を削除する。ここで、チャネルCを要求するクライアントがいなくなったため、要求元であるサーバV宛に停止要求P3を送信する(ステップs405)。また、リングの前にあたる分岐装置S2に、要求先をサーバVに変更するよう指示する(ステップs406)。正確には、分岐装置S3の要求先に変更するように指示する。
分岐装置S2は、指示に従い、要求先をサーバVに変更するとともに、受信要求R6をサーバVへ送信する(ステップs407)。
分岐装置S3は、停止要求P2を受信すると、配送表11cから要求元であるクライアントL21の情報を削除する。ここで、チャネルCを要求するクライアントがいなくなったため、要求元であるサーバV宛に停止要求P3を送信する(ステップs405)。また、リングの前にあたる分岐装置S2に、要求先をサーバVに変更するよう指示する(ステップs406)。正確には、分岐装置S3の要求先に変更するように指示する。
分岐装置S2は、指示に従い、要求先をサーバVに変更するとともに、受信要求R6をサーバVへ送信する(ステップs407)。
サーバVは、停止要求P3を受信すると要求元である分岐装置S3を削除し、受信要求R6を受信すると要求元である分岐装置S2を登録する。その結果、配送表11dには分岐装置S2のみが登録されることとなる。ただし、配送表11dから分岐装置S3を削除してから分岐装置S2が登録されるまでの間は、サーバVからのデータが停止することになる。この問題点の回避方法は後述する。
なお、分岐装置S3が、分岐装置S2に要求先の変更を指示したのは、サーバVからのデータが永久に止まってしまうことを避けるためである。もし、分岐装置S2が受信要求R6をサーバVへ送信しなければ、サーバVの配送表11dは空になったままとなる。
なお、分岐装置S3が、分岐装置S2に要求先の変更を指示したのは、サーバVからのデータが永久に止まってしまうことを避けるためである。もし、分岐装置S2が受信要求R6をサーバVへ送信しなければ、サーバVの配送表11dは空になったままとなる。
図6は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。図6のシーケンス図の初期状態は、図5のシーケンス図の初期状態と同じである。ここでは、クライアントが受信を停止したことによって、分岐装置を要求先とする分岐装置の配送表からクライアントが削除されたときの動作について説明する。ここでは、分岐装置S2の配送表11bからクライアントL20が削除される場合について説明する。
クライアントL20は停止要求P3を分散装置Bに対して送信する(ステップs501)。分散装置Bは、停止要求P3を初期担当である分岐装置S1へ転送する(ステップs502)。分岐装置S1は、配送表11aに要求元であるクライアントL20が登録されていないため、停止要求P3を要求先である分岐装置S2に転送する(ステップs503)。分岐装置S2は、停止要求P3を受信すると、配送表11bから要求元であるクライアントL20を削除する。
クライアントL20は停止要求P3を分散装置Bに対して送信する(ステップs501)。分散装置Bは、停止要求P3を初期担当である分岐装置S1へ転送する(ステップs502)。分岐装置S1は、配送表11aに要求元であるクライアントL20が登録されていないため、停止要求P3を要求先である分岐装置S2に転送する(ステップs503)。分岐装置S2は、停止要求P3を受信すると、配送表11bから要求元であるクライアントL20を削除する。
しばらくすると、クライアントL21が受信要求R7を分散装置Bに対して送信する(ステップs504)。これは、受信中は受信要求R7が繰り返し送信されるためである。分散装置Bは、受信要求R7を初期担当である分岐装置S1へ転送する(ステップs505)。分岐装置S1にとっては、要求元であるクライアントL21は新規クライアントであるが、収容上限を超えるため、受信要求R7を分岐装置S21へ転送する(ステップs506)。
分岐装置S2にとっては、要求元であるクライアントL21は新規クライアントであり、さらに収容可能であるため、配送表11bに登録する。しかし、クライアントL21がリングの後続に登録されている可能性がある。
分岐装置S2にとっては、要求元であるクライアントL21は新規クライアントであり、さらに収容可能であるため、配送表11bに登録する。しかし、クライアントL21がリングの後続に登録されている可能性がある。
そこで、分岐装置S2は、要求元をクライアントL21とした停止要求P4を作成し、リングの後続である分岐装置S3へ送信する(ステップs507)。分岐装置S3は要求元であるクライアントL21を削除する。以後の動作は、図5において分岐装置S3が要求元であるクライアントL21を削除した後の動作と同じである。
図6で説明した処理では、分岐装置S2が停止要求P4を送信することによって、2つの分岐装置S2、S3がクライアントL21にデータを配信してしまうことを回避した。
なお、図6に示したように、分岐装置S2が配送表11bにクライアントL21を登録してから分岐装置S3がクライアントL21を削除するまでの間は、クライアントL21に重複してデータが配信されることとなる。
図6で説明した処理では、分岐装置S2が停止要求P4を送信することによって、2つの分岐装置S2、S3がクライアントL21にデータを配信してしまうことを回避した。
なお、図6に示したように、分岐装置S2が配送表11bにクライアントL21を登録してから分岐装置S3がクライアントL21を削除するまでの間は、クライアントL21に重複してデータが配信されることとなる。
図7〜9は、本実施形態による負荷分散システムによる別の処理の流れを示すシーケンス図である。図7〜9では、図5、6で解決した課題を異なる方法で解決する。ここでは、図4と同じ状態から処理を開始する場合について説明する。分岐装置S1の配送表11aには10台のクライアントが登録されており、収容上限に達している。
ここで、クライアントL11は受信要求R3を分散装置Bに対して送信する(ステップs601)。分散装置Bが受信要求R8を受信すると、チャネルCの初期担当である分岐装置S1へ転送する(ステップs602)。分岐装置S1は、要求元であるクライアントL11を配送表11aに登録する。ただし、収容上限に達しているため、括弧を付けて記録しておく。括弧つきで記載されているクライアントは、リングの後方にそのクライアントが登録されていることを意味し、データの配信対象にはならない。
ここで、クライアントL11は受信要求R3を分散装置Bに対して送信する(ステップs601)。分散装置Bが受信要求R8を受信すると、チャネルCの初期担当である分岐装置S1へ転送する(ステップs602)。分岐装置S1は、要求元であるクライアントL11を配送表11aに登録する。ただし、収容上限に達しているため、括弧を付けて記録しておく。括弧つきで記載されているクライアントは、リングの後方にそのクライアントが登録されていることを意味し、データの配信対象にはならない。
分岐装置S1は収容上限に達したため、配送表11aの要求先をサーバVから分岐装置S2に変更する。受信要求R8に初期担当が分岐装置S1であることを追記し、それを受信要求R9として、分岐装置S2へ送信する(ステップs603)。そして、停止要求P1を作成し、それを受信要求R10としてサーバV宛へ送信する(ステップs604)。
受信要求R10を受信した分岐装置S2の動作は、図4と同じである。
図7に示したように、サーバVが分岐装置S2からの受信要求R10を受信してから、分岐装置S1からの停止要求P5を受信(ステップS605)するまでの間は、サーバVからのデータが重複して配信されることとなる。受信要求R10と停止要求P5の到着順序が逆になったときには、サーバVからのデータが停止することになる。この問題点の回避方法は後述する。
受信要求R10を受信した分岐装置S2の動作は、図4と同じである。
図7に示したように、サーバVが分岐装置S2からの受信要求R10を受信してから、分岐装置S1からの停止要求P5を受信(ステップS605)するまでの間は、サーバVからのデータが重複して配信されることとなる。受信要求R10と停止要求P5の到着順序が逆になったときには、サーバVからのデータが停止することになる。この問題点の回避方法は後述する。
図7で説明した処理の後、クライアントL12〜L20が受信要求を送信することにより、図8に示すように、分岐装置S2の配送表11bに登録される。この時点で分岐装置S2が収容上限となったため、その次に受信要求を送信したクライアントL21は、分岐装置S3の配送表11cに登録される。このときの状態は図5の処理の開始時点とほぼ同じであるが、分岐装置S1の配送表11aに括弧つきでクライアントL11〜L21が登録されており、分岐装置S2の配送表11bに括弧つきでクライアントL21が登録されている点が異なる。
ここでは、クライアントが受信を停止したことによって、分岐装置S3の配送表11cから全てのクライアントが削除された状態について説明する。クライアントL21は停止要求P6を分散装置Bに対して送信する(ステップs701)。分散装置Bは、停止要求P6を初期担当である分岐装置S1へ転送する(ステップs702)。分岐装置S1は、配送表11aから要求元であるクライアントL21を削除する。削除した要求元が配送表11aで括弧つきで記録されていた場合には、その停止要求P6を要求先である分岐装置S2へ転送する(ステップs703)。分岐装置S2も同様にして、要求元であるクライアントL21を配送表から削除し、停止要求P6を要求先である分岐装置S3へ転送する(ステップs704)。これにより、分岐装置S2の配送表11bから括弧つきの要求元がなくなった。これは、リングの後方に要求元がなくなったことを意味しており、分岐装置S2がサーバVに受信要求を送らなければならないことを意味している。そこで、分岐装置S2は、要求先をサーバVに変更し、受信要求R11を送信する(ステップs706)。
分岐装置S3は、停止要求P6を受信すると、配送表11cから要求元であるクライアントL21を削除する。ここで、チャネルCを要求するクライアントがいなくなったため、要求元であるサーバV宛に停止要求P7を送信する(ステップs705)。
サーバVは、停止要求P7を受信すると要求元である分岐装置S3を削除し、受信要求R11を受信すると要求元である分岐装置S2を登録する。その結果、配送表11dには分岐装置S2のみが登録されることとなる。ただし、配送表11dから分岐装置S3を削除してから分岐装置S2が登録されるまでの間は、サーバVからのデータが停止することになる。この問題点の回避方法は後述する。
図5の説明で述べたように、図8に示した状況では、何らかの工夫を行わないとサーバVからのデータが永久に止まってしまう。分岐装置がリングの後方に登録されている要求元を配送表に括弧つきで登録しておくことにより、この問題を回避することができる。
サーバVは、停止要求P7を受信すると要求元である分岐装置S3を削除し、受信要求R11を受信すると要求元である分岐装置S2を登録する。その結果、配送表11dには分岐装置S2のみが登録されることとなる。ただし、配送表11dから分岐装置S3を削除してから分岐装置S2が登録されるまでの間は、サーバVからのデータが停止することになる。この問題点の回避方法は後述する。
図5の説明で述べたように、図8に示した状況では、何らかの工夫を行わないとサーバVからのデータが永久に止まってしまう。分岐装置がリングの後方に登録されている要求元を配送表に括弧つきで登録しておくことにより、この問題を回避することができる。
図9は、クライアントが受信を停止する場合の処理について説明する。ここでは、図6と同じ課題を、異なる方法で解決する。図9の初期状態は、図8の初期状態と同じである。ここでは、クライアントが受信を停止したことによって、分岐装置を要求先とする分岐装置の配送表からクライアントが削除された場合の処理について説明する。この例では、分岐装置S2の配送表11bからクライアントL20が削除される。
クライアントL20は停止要求P8を分散装置Bに対して送信する(ステップS801)。分散装置Bは、停止要求P8を初期担当である分岐装置S1へ転送する(ステップS802)。分岐装置S1は、配送表11aから要求元であるクライアントL20を削除する。削除した要求元が配送表上で括弧つきであるため、その停止要求P8を要求先である分岐装置S2へ転送する(ステップS803)。
クライアントL20は停止要求P8を分散装置Bに対して送信する(ステップS801)。分散装置Bは、停止要求P8を初期担当である分岐装置S1へ転送する(ステップS802)。分岐装置S1は、配送表11aから要求元であるクライアントL20を削除する。削除した要求元が配送表上で括弧つきであるため、その停止要求P8を要求先である分岐装置S2へ転送する(ステップS803)。
分岐装置S2は停止要求P8を受信すると、配送表11bから要求元L20を削除する。しばらくすると、クライアントL21が受信要求R12を分散装置Bに対して送信する(ステップs804)。これは、受信中は受信要求R12が繰り返し送信されるためである。分散装置Bは、受信要求R12を初期担当である分岐装置S1に転送する(ステップs805)。分岐装置S1にとっては、要求元であるクライアントL21は新規クライアントであるが、収容上限を超えるため、受信要求R12を分岐装置S2へ転送する(ステップs806)。
クライアントL20を削除したため、分岐装置S2は新たなクライアントを収容可能である。しかし、要求元であるクライアントL21は括弧つきで登録してあり、このことはリングの後続ノードに登録されていることを意味する。そこで、分岐装置S2は要求元であるクライアントL21を登録せずに、受信要求R12を要求先である分岐装置S3へ転送する(ステップs807)。
クライアントL20を削除したため、分岐装置S2は新たなクライアントを収容可能である。しかし、要求元であるクライアントL21は括弧つきで登録してあり、このことはリングの後続ノードに登録されていることを意味する。そこで、分岐装置S2は要求元であるクライアントL21を登録せずに、受信要求R12を要求先である分岐装置S3へ転送する(ステップs807)。
図6の説明で述べたように、図9に示した状況では、何らかの工夫を行わないと、二つの分岐装置S2、S3がクライアントL21にデータを配信してしまう。分岐装置がリングの後方に登録されている要求元を配送表に括弧つきで登録しておくことにより、この問題を回避することができた。さらに、図6ではデータの重復配信が見られたが、図9ではそのような問題も見られない。
次に、ある分岐装置が送信する受信要求あるいは停止要求を、異なる分岐装置が代理送信する方法について説明する。この方法は、例えば図4に見られたデータ重複を解決する。図4で、分岐装置S2がサーバVに受信要求R5を送信するとき(ステップS305)、受信要求R5と停止要求P1をひとつのメッセージとして送信する。そして、分岐装置S1は停止要求P1の送信を止める。このようにすることで、受信要求R5と停止要求P1の到着時刻差が原因で発生するデータ重複を回避することができる。
同様にして、図5においては、分岐装置S3が停止要求P3と受信要求R6をひとつのメッセージとして送信するようにする。また、分岐装置S3は分岐装置S2への要求先変更指示を停止するようにする。このような処理を行うことで、受信要求R6と停止要求P3の到着時刻差が原因で発生するデータ欠落を回避できる。
同様にして、図5においては、分岐装置S3が停止要求P3と受信要求R6をひとつのメッセージとして送信するようにする。また、分岐装置S3は分岐装置S2への要求先変更指示を停止するようにする。このような処理を行うことで、受信要求R6と停止要求P3の到着時刻差が原因で発生するデータ欠落を回避できる。
同様にして、図7においては、分岐装置S2が受信要求R10と停止要求P5をひとつのメッセージとして送信するようにする。また、分岐装置S1は停止要求P5の送信を止めるようにする。このような処理を行うことで、受信要求R10と停止要求P5の到着時刻差が原因で発生するデータ重複を回避できる。
同様にして、図8においては、分岐装置S3が停止要求P7と受信要求R11をひとつのメッセージとして送信するようにする。また、分岐装置S2は受信要求R11の送信を止めるようにする。このようにすることで、受信要求R11と停止要求P7の到着時刻差が原因で発生するデータ欠落を回避できる。
同様にして、図8においては、分岐装置S3が停止要求P7と受信要求R11をひとつのメッセージとして送信するようにする。また、分岐装置S2は受信要求R11の送信を止めるようにする。このようにすることで、受信要求R11と停止要求P7の到着時刻差が原因で発生するデータ欠落を回避できる。
なお、以上説明した実施形態において、図1の仮想分岐装置Svを構成する分散装置B、分岐装置S1〜S3等の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより負荷分散システムの制御を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
10・・・登録表、11a〜11d・・・配送表、B・・・分散装置、L1〜L21・・・クライアント、S1〜S3・・・分岐装置、Sv・・・仮想分岐装置、V・・・サーバ
Claims (9)
- 1台以上のサーバと、2台以上のクライアントと、1台以上の分散装置及び2台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、
前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、
前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信し、
前記受信要求を受けた分岐装置は前記受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信し、
前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、
その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送方法。 - 自身の識別情報を含んだ受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、
分岐装置が前記自身の識別情報を含んだ受信要求を受信した場合には、該受信要求を破棄することを特徴とする請求項1に記載のマルチキャストデータ転送方法。 - 前記仮想分岐装置を構成する分岐装置数を含む受信要求を、前記リング情報に基づいて定まる次の分岐装置へ転送し、
前記分岐装置数を含む受信要求を受信した分岐装置は、分岐装置数を1減算した受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、
前記分岐装置数が0である受信要求を受信した分岐装置は、その受信要求を破棄する
ことを特徴とする請求項1に記載のマルチキャストデータ転送方法。 - 前記分岐装置は配送表に登録されているクライアントから停止要求を受信した場合に、
前記分岐装置が受信要求を送信している要求先である分岐装置又はクライアントを、前記リング情報に基づいて前の分岐装置へ通知し、
前記前の分岐装置は、前記要求先に対して受信要求を送信する
ことを特徴とする請求項1に記載のマルチキャストデータ転送方法。 - 前記分岐装置は、受信要求を送信してきた要求元である分岐装置を配送表に登録した場合に、前記リング情報に基づいて次の分岐装置に対して、前記要求元を配送表から削除するように指示することを特徴とする請求項1に記載のマルチキャストデータ転送方法。
- 前記分岐装置は、受信要求を受信した場合にデータを送信不可能であれば、配送表に受信要求を送信してきた分岐装置である要求元を仮登録し、データを送信可能である場合には前記配送表に本登録されている要求元にのみ送信し、
停止要求の送信可否を判断する場合には、前記仮登録されている要求元の数を含めて判断を行うことを特徴とする請求項1に記載のマルチキャストデータ転送方法。 - 前記分岐装置は、前記リング情報の前の分岐装置から受信した受信要求により要求するデータについての情報が配送表に登録されていない場合、又は、前記前の分岐装置の配送表から前記要求元を削除するように指示する場合に、前記前の分岐装置が送信する受信要求又は停止要求を前記リング情報の次の分岐装置へ転送することを特徴とする請求項1に記載のマルチキャストデータ転送方法。
- 前記分散装置又は分岐装置は、同一の仮想分岐装置を構成する分岐装置の状態を監視し、該分岐装置の台数に増減があった場合には新たなリング情報を作成し、分岐装置へ配布することを特徴とする請求項1に記載のマルチキャストデータ転送方法。
- 1台以上のサーバと、2台以上のクライアントと、1台以上の分散装置及び2台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、
前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、
前記分散装置は、
前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信する送信手段を有し、
前記分岐装置は、
前記受信要求を受信し、該受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信する送信手段と、
前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送する転送手段とを有し、
その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005164216A JP2006340176A (ja) | 2005-06-03 | 2005-06-03 | マルチキャストデータ転送方法及びシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005164216A JP2006340176A (ja) | 2005-06-03 | 2005-06-03 | マルチキャストデータ転送方法及びシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006340176A true JP2006340176A (ja) | 2006-12-14 |
Family
ID=37560302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005164216A Pending JP2006340176A (ja) | 2005-06-03 | 2005-06-03 | マルチキャストデータ転送方法及びシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006340176A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009049853A (ja) * | 2007-08-22 | 2009-03-05 | Nippon Telegr & Teleph Corp <Ntt> | ストリーム配信システムおよび方法 |
JP2010079581A (ja) * | 2008-09-25 | 2010-04-08 | Fuji Xerox Co Ltd | データ取得管理装置、データ取得管理システム及びプログラム |
-
2005
- 2005-06-03 JP JP2005164216A patent/JP2006340176A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009049853A (ja) * | 2007-08-22 | 2009-03-05 | Nippon Telegr & Teleph Corp <Ntt> | ストリーム配信システムおよび方法 |
JP4669866B2 (ja) * | 2007-08-22 | 2011-04-13 | 日本電信電話株式会社 | ストリーム配信システムおよび方法 |
JP2010079581A (ja) * | 2008-09-25 | 2010-04-08 | Fuji Xerox Co Ltd | データ取得管理装置、データ取得管理システム及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3944168B2 (ja) | ネットワーク環境におけるピアツーピア通信のための方法およびシステム | |
JP5211235B2 (ja) | 冗長なデータを転送する記憶装置 | |
US10146848B2 (en) | Systems and methods for autonomous, scalable, and distributed database management | |
JP5526137B2 (ja) | 選択的データ転送ストレージ | |
EP1107533A2 (en) | Load distribution in a network | |
JP2004246632A (ja) | データ分配サーバ、プログラム及びネットワークシステム | |
JP2006338666A (ja) | 分散カーネルオペレーティングシステム | |
JP2006340354A (ja) | 分散カーネルオペレーティングシステム | |
KR20110034669A (ko) | 멀티홈 데이터 전달 저장 방법 및 장치 | |
JP5526780B2 (ja) | 負荷分散システム、サービス処理サーバ、負荷分散方法及び負荷分散プログラム | |
JP7473025B2 (ja) | コンテンツ配信システム、ユニキャストマルチキャスト変換装置、コンテンツ配信方法及びコンテンツ配信プログラム | |
JP2006340176A (ja) | マルチキャストデータ転送方法及びシステム | |
KR101598577B1 (ko) | 해시를 이용한 게시-구독 네트워크 구성 방법 및 통신 지원 방법 | |
WO2003093975A1 (en) | Single servlets for b2b message routing | |
WO2013047207A1 (ja) | キャッシュシステム、キャッシュ方法、及びキャッシュサーバ | |
US7945644B2 (en) | Dynamic initialization method and system of location server | |
JP2004264911A (ja) | 計算機ノード、クラスタシステム、クラスタ管理方法、クラスタ管理プログラム | |
JP2000200245A (ja) | 情報利用システム及び情報利用方法 | |
US10659330B2 (en) | Channel management in scalable messaging system | |
JP4122328B2 (ja) | 伝送装置 | |
WO2020222683A1 (en) | Load balancing systems and methods | |
JP3705121B2 (ja) | マルチプロセッサ型呼処理方式 | |
CN110958182B (zh) | 一种通信方法及相关设备 | |
JP4362087B2 (ja) | マルチキャスト負荷分散方式およびマルチキャスト負荷分散方法 | |
Fox et al. | IBM's Shared Memory Communications over RDMA (SMC-R) Protocol |