以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態のストレージセントリックネットワークシステムのブロック図である。
第1の実施の形態のストレージセントリックネットワークシステムは、OSI(Open Systems Interconnection)参照モデルの第3層プロトコルにIPv4プロトコルを使用する場合を例として説明するが、IPv6プロトコルなどこれ以外の第3層プロトコルを使用してもよい。
また、第1の実施の形態のストレージセントリックネットワークシステムは、iSCSIプロトコルを使用する場合を例として説明するが、iSCSI以外のプロトコルを使用してもよい。但し、使用するiSCSI以外のプロトコルは、ユーザ端末からデータを要求するコマンドを送信すれば、要求するデータのサイズが取得できるプロトコルとする。
ストレージセントリックネットワークシステムは、ユーザサイト108、エッジスイッチ103−1、103−2、データセンタ109及び管理コンソール107から構成されている。
ユーザサイト108では、LANスイッチ101及びn台のユーザ端末100−i(i=1〜n)によって、LAN(Local Area Network)が構築されている。LANスイッチ101は、広域ネットワーク102のエッジスイッチ103−1に接続されている。
ユーザ端末100は、データセンタ109内のストレージ105に対して、データを読み書きする。LANスイッチ101は、受信したパケットを転送する。具体的には、LANスイッチ101は、受信したパケットがユーザサイト108の内部宛てであると、宛先のユーザ端末100へパケットを転送する。一方、受信したパケットがユーザサイト108の外部宛てであると、エッジスイッチ103−1へパケットを転送する。
データセンタ109では、パケット転送装置104及びn台のストレージ105−i(i=1〜n)によって、IP−SAN(Internet Protocol Storage Area Network)が構築されている。パケット転送装置104は、広域ネットワーク102のエッジスイッチ103−2に接続されている。
ストレージ105は、ディスク制御装置及びディスクドライブによって構成されるRAID装置やJBOD(Just Bunch Of Disks)等であり、ユーザ端末100のデータを記憶する。
パケット転送装置104は、詳細は後述するが、広域ネットワーク102の帯域を制御しながら、受信したパケットを転送する。
管理コンソール107は、パケット転送装置104と接続され、パケット転送装置104を管理するコンピュータである。なお、パケット転送装置104と管理コンソール107は、ネットワーク経由で接続されてもよい。
ユーザサイト108側のエッジスイッチ103−1とデータセンタ109側のエッジスイッチ103−2とは、帯域保証サービスが適用されている広域ネットワーク102で接続されている。ユーザサイト108は、広域ネットワーク102において、広域ネットワーク事業者と締結した契約帯域の使用が保証される。
なお、エッジスイッチ103−1、103−2は、UPC(User Parameter Control)を備える。UPCは、広域ネットワークのトラヒック量が契約帯域内に収まっているか否かを監視する。これによって、UPCは、契約帯域を越えるトラヒック量を検知すると、契約帯域を超過したパケットを廃棄する。
次に、ユーザ端末100がストレージ105のデータを読み出す処理を説明する。
まず、データの読み出しを要求するユーザ端末100は、iSCSIコマンドのRD要求をストレージ105に送信する。なお、RD要求には、要求RD長が含まれている。要求RD長は、ユーザ端末100がストレージ105に読み出しを要求するデータのサイズである。
RD要求を受信したストレージ105は、該当するRDデータをストレージから読み出す。そして、ストレージ105は、読み出したRDデータをRDデータパケットに格納して、ユーザ端末100に送信する。但し、RDデータのサイズがネットワークの経路MTU(Maximum Transfer Unit)を超える場合、ストレージ105は、RDデータを複数のRDデータパケットに格納して送信する。
ここで、従来のストレージセントリックネットワークシステムにおけるデータ読み出し処理時のパケットの廃棄について説明する。
RD要求のデータのサイズは、106バイト程度である。一方、RDデータのデータサイズは、ユーザ端末100が要求するデータによって異なるが、通常、数十キロバイトから数百キロバイト以上である。
このため、広域ネットワーク102では、RD要求のトラヒック量が契約帯域内であっても、RDデータパケットのトラヒック量が契約帯域を超過する場合がある。契約帯域を超過したRDデータパケットは、エッジスイッチ103−2の帯域制御等によって途中経路で廃棄される。
次に、ユーザ端末100がストレージ105へデータを書き込む処理を説明する。
まず、データの書き込みを要求するユーザ端末100は、iSCSIコマンドのデータWR要求をストレージ105に送信する。
WR要求を受信したストレージ105は、データの書き込みを準備する。ストレージ105は、準備が完了すると、iSCSIパケットのR2T(Ready to Transfer)をユーザ端末100に送信する。R2Tには、要求WR長が含まれている。要求WR長は、ストレージ105が一度に受け入れられるデータのサイズである。
R2Tを受信したユーザ端末100は、R2Tの要求WR長を満たすWRデータをWRデータパケットに格納して、ストレージ105に送信する。但し、WRデータがネットワークの経路MTUを超える場合、ユーザ端末100は、WRデータを複数のWRデータパケットに格納して送信する。
ここで、従来のストレージセントリックネットワークシステムにおけるデータ書き込み処理時のパケットの廃棄について説明する。
データ読み出しの場合と同様に、WR要求及びR2Tのデータサイズは小さく、WRデータパケット302のデータサイズは大きい。
このため、広域ネットワーク102では、WR要求及びR2Tのトラヒック量が契約帯域内であっても、WRデータパケットのトラヒック量が契約帯域を超過する場合がある。契約帯域を超過したWRデータパケットは、エッジスイッチ103−1の帯域制御等によって途中経路で廃棄される。
このように、従来のストレージセントリックネットワークシステムでは、パケットが廃棄されてしまっていた。このパケットの廃棄が問題となるのは以下の理由からである。
iSCSIは、下位層のプロトコルにTCPを用いる。TCPは、送信端末と受信端末との間でのデータ転送の制御を行うプロトコルである。途中経路で廃棄されたパケットは、TCPによって再送制御される。しかし、パケット廃棄によって発生する再送パケットは、広域ネットワーク102の輻輳を悪化させるので、ストレージセントリックネットワークシステムの利用効率を低下させる。
また、TCPは、cwnd(Congestion Window)を用いてパケットを転送制御する。cwndは、パケットを送信端末から受信端末へ転送する際の送信可能なデータの最大サイズである。cwndは、通信開始時、1セグメントである。そして、パケットが廃棄されずに通信が行われると、cwndは、ファードウィンドサイズまで増加する。しかし、パケットが途中経路で廃棄されると、cwndは減少する。
ここで、TCPを用いたデータ転送のスループットは、cwnd/RTT(Round Trip Time)である。そのため、パケットの廃棄は、cwndを減少させるので、スループットを低下させる。
このように、パケットの廃棄は、ストレージセントリックネットワークシステムの利用効率を低下させ、更に、スループットも低下させる。
次に、本実施の形態のストレージセントリックネットワークシステムの通信で使用されるパケットについて説明する。
図2は、本発明の第1の実施の形態のiSCSIパケットの構成図である。
iSCSIパケット600は、IPヘッダ部601、TCPヘッダ部602、iSCSIヘッダ部607及びユーザデータ部608を含む。
IPヘッダ部601は、送信元IPアドレス603及び宛先IPアドレス604を含む。送信元IPアドレス603は、当該パケットを送信する端末のアドレスである。宛先IPアドレス604は、当該パケットを受信する端末のアドレスである。
TCPヘッダ部602は、送信元ポート番号605及び宛先ポート番号606を含む。送信元ポート番号605は、当該パケットを送信する端末のプロトコル又はアプリケーションを示す。宛先ポート番号606は、当該パケットを受信する端末のプロトコル又はアプリケーションを示す。
iSCSIヘッダ部607は、図3又は図4のように構成され、当該パケットのコマンドの種類等を示す。ユーザデータ部608は、当該パケットのメインデータが格納される。
図3は、本発明の第1の実施の形態のユーザ端末100が送信するRD要求又はWR要求のiSCSIヘッダ部607の構成図である。
なお、RD要求とは、ユーザ端末100がデータの読み出しをストレージ105に要求するパケットである。また、WR要求とは、ユーザ端末100がデータの書き込みをストレージ105に要求するパケットである。
RD要求又はWR要求のiSCSIヘッダ部607は、オペコード701、Read(R)ビット702、Write(W)ビット703及び要求データ長704を含む。
オペコード701は、当該パケットのiSCSIコマンドの種別であり、SCSIコマンドを示す0x1が格納される。
Rビット702には、当該パケットがRD要求の場合に“1”が格納される。Wビット703には、当該パケットがWR要求の場合に“1”が格納される。要求データ長704は、当該パケットがRD要求であると、要求RD長が格納され、当該パケットがWR要求であると、WR要求データ長が格納される。
要求RD長は、ユーザ端末100がストレージ105に読み出しを要求するデータのサイズである。WR要求データ長は、ユーザ端末100がストレージ105に書き込みを要求するデータのサイズである。
図4は、本発明の第1の実施の形態のストレージ105が送信するR2TのiSCSIヘッダ部607の構成図である。
なお、R2Tは、ストレージ105がデータの書き込み準備が完了したことを通知するパケットである。
R2TのiSCSIヘッダ部607は、オペコード701及び要求WR長801を含む。オペコード701は、iSCSIコマンドの種別であり、R2Tを示す0x31が格納される。要求WR長801は、ストレージ105がユーザ端末100から一度に受け入れられるデータのサイズである。
図5は、本発明の第1の実施の形態のパケット転送装置104の内部におけるパケットの構成図である。
iSCSIパケット600は、パケット転送装置104の内部において、内部ヘッダ部1000が付加される。
内部ヘッダ部1000は、入力回線番号1001、出力回線番号1002、帯域制御フラグ1003、ユーザ識別番号1004、要求データ長1005、RDフラグ1006及びR2Tフラグ1007を含む。
入力回線番号1001は、当該パケットが入力された回線の識別子である。出力回線番号1002は、当該パケットが出力される回線の識別子である。帯域制御フラグ1003は、当該パケットが帯域制御されるか否かを示す。
ユーザ識別番号1004は、当該パケットを送信したユーザ端末100の属するユーザサイト108の識別子である。要求データ長1005は、当該パケットがRD要求の場合には要求RD長が格納され、R2Tの場合には要求WR長が格納される。RDフラグ1006は、当該パケットの送信元IPアドレス603が、図8で後述するRD制御テーブルに格納されているか否かを示す。R2Tフラグ1007は、当該パケットの宛先IPアドレス604が、図9で後述するR2Tテーブルに格納されているか否かを示す。
図6は、本発明の第1の実施の形態のパケット転送装置104のブロック図である。
パケット転送装置104は、入力回線411、パケット受信回路401、帯域制御部402、経路検索回路403、装置制御部405、パケット送信回路404及び出力回線412から構成される。
入力回線411は、n個設けられ、外部からパケット受信回路401にパケットを入力する回線である。パケット受信回路401は、入力回線と同数のn個設けられ、パケットの受信処理をする。なお、パケット受信回路401は、複数個の入力回線411に対して1個設けられてもよい。
帯域制御部402は、送信間隔を制御しながら、経路探索回路403にパケットを送信する。帯域制御部402の詳細の構成は、図7で説明する。経路検索回路403は、内部に経路検索テーブル(図示省略)を備え、パケットを送信する出力回線を検索する。なお、経路検索テーブルは、宛先IPアドレス604及び宛先IPアドレス604に対応する出力回線412の番号から構成される。
装置制御部405は、信号線413、415を介して、広域ネットワーク102の契約帯域情報や、ユーザサイト108のネットマスクの情報等を帯域制御部402に設定する。また、装置制御部405は、信号線414を介して、パケットの経路検索情報等を経路検索回路403に設定する。なお、これらの情報は、管理コンソール107から装置制御部405に入力される。
出力回線412は、n個設けられ、パケット送信回路から外部にパケットを送信する回線である。パケット送信回路404は、出力回線412と同数のn個設けられ、パケットを送信処理して出力回線412に送る。なお、パケット送信回路404は、複数個の出力回線412に対して1個設けられてもよい。
次に、パケットを受信したときのパケット転送装置104の処理について簡単に説明する。
外部から送信されたパケットは、入力回線411を介して、パケット受信回路401に入力される。パケット受信回路401は、パケットを受信すると、パケットに内部ヘッダ部1000を付加する。なお、付加された内部ヘッダ部1000を構成する各要素には、初期値が設定されている。
次に、パケット受信回路401は、付加した内部ヘッダ部1000の入力回線番号1001に、パケットを受信した入力回線411の回線番号を格納する。そして、パケット受信回路401は、パケットを帯域制御部402へ送る。
帯域制御部402は、受け取ったパケットが、帯域制御パケット又は非帯域制御パケットのどちらであるかを、帯域制御フラグ1003を参照して判定する。
帯域制御部402は、帯域制御パケットであると判定すると、パケットロスが生じないように送信間隔を制御しながら、経路検索回路403へパケットを送る。
一方、帯域制御部402は、非帯域制御パケットであると判定すると、すぐに経路検索回路403へパケットを送る。
経路検索回路403は、パケットを受信すると、当該パケットの宛先IPアドレス604を参照し、パケットを送信する出力回線412を経路検索テーブルから検索する。経路検索回路403は、検索された出力回線412の番号を内部ヘッダ部1000の出力回線番号1002へ格納する。そして、経路検索回路403は、検索された出力回線412と接続するパケット送信回路404へ当該パケットを送る。
パケット送信回路404は、パケットを受信すると、内部ヘッダ部1000の出力回線番号1002を抽出する。次に、パケット送信回路404は、パケットの内部ヘッダ部1000を削除する。そして、パケット送信回路404は、抽出した出力回線番号1002の出力回線412を介して、パケットを外部へ送信する。
図7は、本発明の第1の実施の形態の帯域制御部402のブロック図である。
帯域制御部402は、パケット処理部500及びパケットスケジューリング部510から構成される。
パケット処理部500は、パケット判定部501及びパケットバッファ部502から構成される。パケット判定部501は、パケット受信回路401から受信したパケットの種別を判定し、パケットバッファ部502へ送る。また、パケット判定部501は、図8で説明するRD制御テーブル及び図9で説明するR2T制御テーブルを備えており、装置制御部405から信号線415を介して送られてくる情報によって、これらのテーブルを更新する。パケットバッファ部502は、パケット判定部501から受信したパケットをユーザ識別番号1004ごとに保持する。
パケットスケジューリング部510は、パケット送信キュー決定部511、二分木ソート回路512及びユーザソーティング情報メモリ514から構成される。パケット送信キュー決定部511は、パケットバッファ部502が保持するパケットの送信順序を決定する。なお、パケット送信キュー決定部511は、信号線413を介して、送信順序を決めるための各種情報を設定される。
二分木ソート回路512は、最も早くパケットを送信するユーザ端末100を決定する。ユーザソーティング情報メモリ514には、二分木ソート回路512で使用する情報が格納される。
図8は、本発明の第1の実施の形態のパケット判定部501が備えるRD制御テーブルの構成図である。
RD制御テーブル900は、送信元IPアドレスグループ901、ネットマスク902、ユーザ識別番号903及び制御帯域904を含む。
送信元IPアドレスグループ901は、RD要求を送信するユーザ端末100が属するユーザサイト108のIPアドレスである。ネットマスク902は、ユーザ端末100が属するユーザサイト108のIPアドレスをパケットの送信元IPアドレス603から分離する。ユーザ識別番号903は、ユーザ端末100が属するユーザサイト108の識別子である。制御帯域904は、ユーザ端末100が属するユーザサイト108で締結された広域ネットワーク102の契約帯域である。
図9は、本発明の第1の実施の形態のパケット判定部501が備えるR2T制御テーブルの構成図である。
R2Tテーブル1700は、宛先IPアドレスグループ1701、ネットマスク1702、ユーザ識別番号1703及び制御帯域1704を含む。
宛先IPアドレスグループ1701は、R2Tを受信するユーザ端末100が属するユーザサイト108のIPアドレスである。ネットマスク1702は、ユーザ端末100が属するユーザサイト108のIPアドレスをパケットの宛先IPアドレス604から分離する。ユーザ識別番号1703は、ユーザ端末100が属するユーザサイト108の識別子である。制御帯域1704は、ユーザ端末100が属するユーザサイト108で締結された広域ネットワーク102の契約帯域である。
図10は、本発明の第1の実施の形態のパケットバッファ部502のブロック図である。
パケットバッファ部502は、バッファ書き込み制御回路2001、非帯域制御キューバッファ2002、帯域制御キューバッファ2003、バッファ読み出し制御回路2004及びパケットバッファアドレスメモリ2005から構成される。
バッファ書き込み制御回路2001は、非帯域制御キューバッファ2002又は帯域制御キューバッファ2003に、パケット判定部501から受信したパケットを格納する。
非帯域制御キューバッファ2002は、ユーザ識別番号“0”に対応する1本のキューを備え、非帯域制御パケットを一時的に保持する。帯域制御キューバッファ2003は、ユーザ識別番号ごとに分類された仮想キュー群から構成され、帯域制御パケットを一時的に保持する。仮想キュー群は、一台のユーザ端末100ごとに使用される複数の仮想キューから構成される。なお、仮想キュー群は、同一のユーザサイト108に属する複数のユーザ端末100で共用される仮想キューから構成されたり、一本の仮想キューから構成されてもよい。
バッファ読み出し制御回路2004は、非帯域制御キューバッファ2002又は帯域制御キューバッファ2003からパケットを読み出す。パケットバッファアドレスメモリ2005は、パケットを保持する非帯域制御キューバッファ2002及び帯域制御キューバッファ2003のパケットバッファアドレスを記憶する。
図11は、本発明の第1の実施の形態のパケット送信キュー決定部511のブロック図である。
パケット送信キュー決定部511は、リクエスト振り分け部2101、送信リクエストキュー2102、送信キュー選択部2103及び送信時刻計算部2104から構成される。
送信リクエストキュー2102は、ユーザ識別番号903及びユーザ識別番号1703の合計に対応する数だけ設けられ、送信リクエスト524をユーザ識別番号903、1703ごとに格納する。なお、送信リクエスト524は、パケットバッファ部502が保持しているパケットの送信の許可を要求する。
また、それぞれの送信リクエストキュー2102は、帯域制御用キュー及び非帯域制御用キューを備える。なお、帯域制御用キューは、帯域制御フラグ1003に“1”が格納されている送信リクエスト524を格納する。非帯域制御キューは、帯域制御フラグ1003に“0”が格納されている送信リクエスト524を格納する。
リクエスト振り分け部2101は、パケットバッファ部502から受信した送信リクエスト524を送信リクエストキュー2102へ格納する。
具体的には、リクエスト振り分け部2101は、送信リクエスト524を受信すると、送信リクエスト524の帯域制御フラグ1003の値を判定する。帯域制御フラグ1003に“1”が格納されていると、リクエスト振り分け部2101は、ユーザ識別番号1004に対応する送信リクエストキュー2102の帯域制御用キューへ送信リクエスト524を格納する。次に、リクエスト振り分け部2101は、ユーザ識別番号1004及び要求データ長1005を二分木ソート回路512及び送信時刻計算部2104へ送信する。
一方、帯域制御フラグ1003に"0"が格納されていると、リクエスト振り分け部2101は、ユーザ識別番号1004に対応する送信リクエストキュー2102の非帯域制御用キューへ送信リクエスト524を格納する。なお、この場合、リクエスト振り分け部2101は、ユーザ識別番号1004及び要求データ長1005を二分木ソート回路512及び送信時刻計算部2104へ送信しない。
送信時刻計算部2104は、帯域制御フラグ1003に“1”が格納されている送信リクエスト524の送信時刻を計算し、送信キュー選択部2103に送信時刻を指示する。送信キュー選択部2103は、送信を許可する送信リクエスト524を送信リクエストキュー2102から選択する。
図12は、本発明の第1の実施の形態のユーザソーティング情報メモリ514の説明図である。
ユーザソーティング情報メモリ514は、ユーザソーティング情報を格納する。ユーザソーティング情報は、ユーザ識別番号1100、送信予定時刻1101及びVLD1102を含む。
ユーザ識別番号1100は、ユーザ端末100が属するユーザサイト108の識別子である。送信予定時刻1101は、送信キュー選択部2103が当該レコードのユーザ識別番号の帯域制御キューから送信リクエスト524を読み出す予定の時刻である。VLD1102は、送信リクエスト524が帯域制御用キューに保持されていると、“1”が格納される。
アドレス「1000」から「1111」のエントリは、ユーザ情報エリアであり、アドレス「0000」から「0111」のエントリは、ソーティング情報エリアである。ユーザ情報エリアは、二分木ソート回路512によって、ユーザ0からユーザ7のソーティング情報がユーザ識別番号1100の順に格納される。ソーティング情報エリアは、二分木ソート回路512によって、送信予定時刻が最も早いユーザ(暫定送信ユーザ)を選択するための情報が格納される。
次に、二分木ソート回路512が、ユーザソーティング情報メモリ514に値を格納するソーティング処理を説明する。
図13は、本発明の第1の実施の形態の二分木ソート回路512のソーティング処理の説明図である。
本図は、二分木構造を示す。本図の二分木の頂点(根)、分岐点、先端(葉)には、それぞれエントリがある。二分木の根に位置するエントリを根エントリと呼び、葉に位置するエントリを葉エントリと呼ぶ。また、任意のエントリからみて根側にあるエントリを親エントリと呼び、葉側にある二つのエントリを子エントリと呼ぶ。エントリには、上から順に、ユーザ識別番号、実送信予定時刻、VLDが格納される。
まず、二分木ソート回路512は、すべてのユーザ端末100のユーザ識別番号、実送信予定時刻及びVLDをユーザ情報エリアの葉エントリ1430〜1437に格納する。
次に、二分木ソート回路512は、親エントリの配下の子エントリの一方を選択する。そして、二分木ソート回路512は、選択されたエントリの情報を親エントリに格納する。
具体的には、二分木ソート回路512は、葉エントリ1430〜1437から選択した値をエントリ1420〜1423に格納する。次に、エントリ1420〜1423から選択した値をエントリ1410、1411に格納する。そして、エントリ1410、1411から選択した値をエントリ1400に格納する。
なお、二分木ソート回路512は、以下の(1)〜(3)の規則に従って、子エントリの一方を選択する。
(1)二分木ソート回路512は、一方の子エントリのVLDが“1”で、他方の子エントリのVLDが“0”のときは、VLDが“1”の子エントリを選択する。
例えば、エントリ1422の配下の子エントリは、エントリ1434及びエントリ1435である。二分木ソート回路512は、エントリ1434及びエントリ1435から、VLDが“1”のエントリ1435を選択する。
(2)二分木ソート回路512は、子エントリのVLDが共に“1”のときには、送信予定時刻が早い子エントリを選択する。なお、二分木ソート回路512は、子エントリのVLDが共に“1”であり、且つ送信予定時刻が同じ場合には、ユーザ識別番号の若い方を選択する。
例えば、エントリ1420の配下の子エントリは、エントリ1430及びエントリ1431である。二分木ソート回路512は、エントリ1430とエントリ1431とを比較すると、VLDが共に“1”であるので、実送信時刻が早いエントリ1431を選択する。
(3)二分木ソート回路512は、子エントリのVLDが共に“0”のときは、実送信予定時刻が早い子エントリを選択する。なお、二分木ソート回路512は、子エントリのVLDが共に“0”であり、且つ送信予定時刻が同じ場合には、ユーザ識別番号の若い方を選択する。
例えば、エントリ1421の配下の子エントリは、エントリ1432及びエントリ1433である。二分木ソート回路512は、エントリ1432とエントリ1433を比較すると、VLDが共に“0”であるので、実送信時刻が早いエントリ1432を選択する。
二分木ソート回路512は、以上のような規則に従って、葉エントリから順にエントリを格納することによって、暫定送信ユーザを決定する。
次に、ユーザソーティング情報メモリ514のアドレスの管理について説明する。ここでは、ユーザ数をM(=2のm乗)として説明する。なお、アドレスは2進数(m+1ビット)で示す。
ユーザソーティング情報メモリ514の二分木の根のアドレスは、「000…001」とする。また、アドレス「xyy…yyz」のエントリに対して、親エントリのアドレスは「0xy…yyy」とし、子エントリのアドレスは「yyy…yz0」及び「yyy…yz1」とする。葉エントリのアドレスは、「100…000」から「111…111」とする。
以上のように、ユーザソーティング情報メモリ514のアドレスを管理することによって、ユーザソーティング情報メモリ514にアクセスするためのアドレス生成回路を簡単に構成することができる。なぜなら、アドレス「xyy…yy0」のエントリとアドレス「xyy…yy1」を比較し、その比較結果をアドレス「0xy…yyy」のエントリに書き込めばいいからである。
次に、図13の状態からユーザ4の送信予定時刻が“1”に更新された場合の二分木ソート回路512のソーティング処理について説明する。
図14は、本発明の第1の実施の形態の送信予定時刻更新後の二分木ソート回路512のソーティング処理の説明図である。
まず、二分木ソート回路512は、送信予定時刻が更新されたユーザ4のエントリ1434を書き換える。具体的には、二分木ソート回路512は、エントリ1434の実送信予定時刻を“1”に書き換え、VLDを“1”に書き換える。
次に、二分木ソート回路512は、葉エントリ1430〜1437以外を更新する。但し、二分木ソート回路512は、すべてのエントリを更新する必要はなく、書き換えた葉エントリ1434から根エントリ1400に向かう経路のエントリだけを更新すればよい。本図において、二分木ソート回路512は、前述した規則に従って、エントリ1434、エントリ1422、エントリ1411及びエントリ1400を更新した。
以上のように、二分木ソート回路512は、送信予定時刻が更新されると、暫定送信ユーザを更新する。
次に、帯域制御部402がパケットを受信して送信するまでの処理を説明する。
図15は、本発明の第1の実施の形態のパケット判定部501の処理のフローチャートである。
まず、パケット(入力パケット)を受信すると、TCPヘッダ部602の送信元ポート番号605及び宛先ポート番号606を抽出する。抽出した送信元ポート番号605及び宛先ポート番号606によって、入力パケットがiSCSIパケットであるか否かを判定する(1801)。
入力パケットがiSCSIパケットであると、入力パケットの送信元IPアドレス603がRD制御テーブル900に格納されているか否かを判定する(1802)。
具体的には、入力パケットから送信元IPアドレス603を抽出する。次に、抽出した送信元IPアドレス603とRD制御テーブル900のネットマスク902との論理積を計算する。そして、計算した論理積が、RD制御テーブル900の送信元IPアドレスグループ901に格納されているか否かを判定する。
計算した論理積が格納されているレコードをRD制御テーブル900から発見すると、そのレコードのユーザ識別番号903を抽出する。次に、抽出したユーザ識別番号903をユーザ識別番号1004に格納し、更に、RDフラグ1006に“1”を格納する(1803)。
次に、オペコード701及びRビット702を参照して、入力パケットがRD要求であるか否かを判定する(1804)。なお、iSCSIコマンドの場合、オペコード701に0x1が格納され、且つRビット702に“1”が格納されていると、入力パケットをRD要求と判定する。
入力パケットがRD要求であると、帯域制御フラグ1003に“1”を格納する(1805)。次に、入力パケットのiSCSIヘッダ607から要求データ長704を抽出する(1806)。
次に、抽出した要求データ長704を要求データ長1005に格納する(1807)。そして、入力パケットをパケットバッファ部502へ転送し(1808)、処理を終了する。
一方、ステップ1804で入力パケットがRD要求でないと、帯域制御フラグ1003に“0”を格納する(1809)。次に、入力パケットが非帯域制御パケットであるので、要求データ長を“0”とし(1810)、要求データ長1005に格納する(1807)。そして、入力パケットをパケットバッファ部502へ転送し(1808)、処理を終了する。
一方、ステップ1802で、計算した論理積がRD制御テーブル900から発見できないと、入力パケットの宛先IPアドレス604がR2T制御テーブル1700に格納されているか否かを判定する(1811)。
具体的には、入力パケットから宛先IPアドレス604を抽出する。次に、抽出した宛先IPアドレス604とR2T制御テーブル1700のネットマスク1702との論理積を計算する。そして、計算した論理積がR2T制御テーブル1700の宛先IPアドレス1701に格納されているか否かを判定する。
計算した論理積が格納されているレコードをR2T制御テーブル1700から発見すると、そのレコードのユーザ識別番号1703を抽出する。次に、抽出したユーザ識別番号1703をユーザ識別番号1004へ格納し、更に、R2Tフラグ1007に“1”を格納する(1812)。
次に、オペコード701を参照して、入力パケットがR2Tであるか否かを判定する(1813)。iSCSIコマンドの場合、オペコード701に0x31が格納されていると、入力パケットをR2Tと判定する。
入力パケットがR2Tであると、帯域制御フラグ1003に“1”を格納する(1814)。次に、入力パケットのiSCSIヘッダ607から要求WR長801を抽出する(1815)。
次に、抽出した要求WR長801を要求データ長1005に格納する(1816)。そして、入力パケットをパケットバッファ部502へ転送し(1817)、処理を終了する。
一方、ステップ1813で入力パケットがR2Tでないと、帯域制御フラグ1003に“0”を格納する(1818)。次に、入力パケットが非帯域制御パケットであるので、要求データ長を“0”とし(1819)、要求データ長1005に格納する(1816)。そして、パケット判定部501は、入力パケットをパケットバッファ部502へ転送し(1817)、処理を終了する。
一方、ステップ1801で入力パケットがiSCSIパケットでない場合、又は、ステップ1811で宛先IPアドレス604がR2T制御テーブル1700に格納されていない場合には、帯域制御が必要ないので、ユーザ識別番号1004、RDフラグ1006及びR2Tフラグ1007に“0”をそれぞれ格納する(1820)。
次に、帯域制御フラグ1003に“0”を格納する(1821)。次に、要求データ長1005に“0”を格納する(1822)。そして、入力パケットをパケットバッファ部502へ転送し(1823)、処理を終了する。
以上のように、パケット判定部501は、入力パケットの種別を判定し、判定した種別に対応した値を内部ヘッダ部1000に格納する。すなわち、パケット判定部501は、入力パケットがiSCSIのRD要求又はiSCSIのR2Tであれば、帯域制御が必要なので、帯域制御フラグ1003に"1"を設定し、要求データ長1005にデータ長を設定する。それ以外の場合には、帯域制御が必要ないので、帯域制御フラグ1003及び要求データ長1005に"0"を設定する。
パケット判定部501は、ステップ1803において、送信元IPアドレス603に対応するユーザ識別番号903を、ユーザ識別番号1004に格納する。よって、パケットバッファ部502は、入力パケットが帯域制御パケット又は非帯域制御パケットのいずれであるかに関わらず、ユーザ識別番号1004のキューで入力パケットを保持する。これによって、同一の送信元IPアドレス903から送られてきたパケットの順序が、パケット転送装置104内で入れ替わることを防ぐ。
ここで、本実施の形態でパケットの順序の入れ替わりを防ぐ理由を説明する。
同一の送信端末から送られてきたパケットは、同一のTCPフロー(送信元IPアドレス603、宛先IPアドレス604、送信元ポート番号605及び宛先ポート番号606が同じパケット)に属する可能性が高い。パケットのTCPヘッダ部602には、シーケンス番号が含まれる。シーケンス番号は、同一のTCPフローに属するパケットが送信端末から送信された順番を示す。受信端末は、パケットを受信すると、シーケンス番号を参照して、順番どおりにパケットが届いているか否かを判定する。そして、受信端末は、順番どおりにパケットが届いていないと、正確にパケットを受信することができなくなり、パケットを廃棄してしまう可能性がある。そのため、本実施の形態では、同一のTCPフローのパケットの順序の入れ替わりは許されない。
同様に、パケット判定部501は、ステップ1812において、宛先IPアドレスに対応するユーザ識別番号を1703を、ユーザ識別番号1004に格納する。これによって、同一の宛先IPアドレス604に送るパケットの順序が、パケット転送装置104内で入れ替わることを防ぐ。
図16は、本発明の第1の実施の形態のバッファ書き込み制御回路2001の処理のフローチャートである。
まず、パケット判定部501からパケットを受信すると、受信したパケットからユーザ識別番号1004を抽出する。次に、抽出したユーザ識別番号1004が“0”であるか否かを判定する(2401)。
識別番号1004が“0”であると、非帯域制御キューバッファ2002に当該パケットを格納する(2402)。そして、パケットを格納すると、処理を終了する(2404)。
一方、ユーザ識別番号1004が“0”でないと、抽出したユーザ識別番号1004と帯域制御キューバッファ2003内のユーザ識別番号とが一致する仮想キュー群を選択し、その中から仮想キューを選択して、パケットを格納する(2403)。
具体的には、受信パケットのRDフラグ1006及びR2Tフラグ1007を確認する。RDフラグに“1”が格納されていると、バッファ書き込み制御回路2001は、送信元IPアドレス603に基づいて、パケットを格納する仮想キューを選択する。一方、R2Tフラグに“1”が格納されていると、バッファ書き込み制御回路2001は、宛先IPアドレス604に基づいて、パケットを格納する仮想キューを選択する。このようにパケットを格納する仮想キューを選択することによって、同一のTCPフローのパケットの順序が入れ替わることを防ぐ。
その後、帯域制御キューバッファ2003内の選択された仮想キューにパケットを格納する。
そして、パケットを格納すると、処理を終了する(2404)。
図17は、本発明の第1の実施の形態のバッファ読み出し制御回路2004の処理のフローチャートである。
まず、送信許可信号523を送信キュー選択部2103から受信したか否かを判定する(2501)。
送信許可信号523を受信すると、受信した送信許可信号523に基づいて、帯域制御キューバッファ2003内の仮想キュー又は非帯域制御キューバッファ2002(キュー)からパケットを読み出す(2502)。具体的には、送信許可信号523からパケットバッファアドレスを抽出する。次に、抽出したパケットバッファアドレスに対応するキューからパケットを読み出す。
そして、読み出したパケットを経路検索回路405へ送信する。
次に、パケットを送信すると、送信起動信号525を送信キュー選択部2103へ送信する(2503)。送信起動信号525は、送信許可信号523を要求する信号である。
一方、ステップ2501で送信許可信号523を受信していないと、そのままステップ2504へ進む。
次に、いずれかのキューの先頭が更新されたか否かを判定する(2504)。なお、キューの先頭が更新されるとは、空のキューにパケットが入力されたり、複数のパケットを保持するキューの先頭のパケットが読み出されたりすることである。
キューの先頭が更新されていると、更新されたキューに保持される先頭のパケットから、帯域制御フラグ1003、ユーザ識別番号1004及び要求データ長1005を抽出する。次に、更新されたキューのパケットバッファアドレスをパケットバッファアドレスメモリ2005から取得する。次に、抽出した帯域制御フラグ1003、ユーザ識別番号1004、要求データ長1005及び取得したパケットバッファアドレスを送信リクエスト524とする。そして、送信リクエスト524を送信キュー選択部2103へ送信し(2505)、処理を終了する(2506)。
一方、ステップ2504でキューの先頭が更新されていないと、そのまま処理を終了する(2506)。
図18は、本発明の第1の実施の形態のパケット受信時のパケットスケジューリング部510の処理のフローチャートである。
まず、パケット送信キュー決定部511内のリクエスト振り分け部2101は、送信リクエスト524をバッファ読み出し制御回路2004から受信する(1202)。
リクエスト振り分け部2101は、送信リクエスト524を受信すると、送信リクエスト524に含まれる帯域制御フラグ1003に“1”が格納されているか否かを判定する(1208)。
帯域制御フラグに“1”が格納されていると、リクエスト振り分け部2101は、ユーザ識別番号1004に対応する送信リクエストキュー2102内の帯域制御用キューに送信リクエスト524を格納する。更に、リクエスト振り分け部2101は、格納した送信リクエスト524のユーザ識別番号1004及び要求データ長1005を二分岐ソート回路512及び送信時刻計算部2104へ送信する。
送信時刻計算部2104は、ユーザ識別番号1004及び要求データ長1005を受信する。すると、送信時刻計算部2104は、受信したユーザ識別番号1004のユーザソーティング情報をユーザソーティング情報メモリ514から読み出す。ユーザソーティング情報には、送信予定時刻1101及びVLD1102が含まれる。送信時刻計算部2104は、読み出したソーティング情報に含まれるVLD1102が“1”であるか否かを判定する(1203)。
VLD1102が“1”であると、送信時刻計算部2104は、送信予定時刻1101を変更しないで(1204)、処理を終了する(1211)。なぜなら、VLD1102が“1”の場合に、送信予定時刻1101を変更すると、契約帯域を守ることが出来なくなるからである。
一方、VLD1102が“0”であると、送信時刻計算部2104は、読み出した送信予定時刻1101が末来であるかどうかを判定する(1205)。
送信予定時刻1101が未来であると、送信時刻計算部2104は、送信予定時刻1101を変更しないで(1204)、処理を終了する(1211)。なぜなら、送信予定時刻1101が未来の場合に、送信予定時刻1101を更新すると、契約帯域を守ることが出来なくなるからである。
送信予定時刻1101が未来でないと、送信時刻計算部2104は、送信予定時刻1101を更新する(1206)。更新する新規送信予定時刻は、以下の式(2)で計算する。
新規送信予定時刻=現在時刻+1・・・(2)
新規予定時刻をこのように計算することによって、当該パケットをすぐに送信できる。
次に、送信時刻計算部2104は、VLDを“1”に変更する。そして、ユーザ識別番号1004、新規送信予定時刻及びVLDを二分木ソート回路512に送信する。
二分木ソート回路512は、ユーザ識別番号1004、新規送信予定時刻及びVLDを受信する。すると、二分木ソート回路512は、ユーザソーティングメモリ514のユーザ識別番号1004に対応するエントリに、新規送信予定時刻及びVLDを格納する。そして、二分木ソート回路512は、ユーザソーティングを行うことによって(1207)、ユーザの中で最も早くパケットを送信するユーザ(暫定送信ユーザ)を決定し、処理を終了する。
一方、ステップ1208で帯域制御フラグに“1”が格納されていないと、リクエスト振り分け部2101は、ユーザ識別番号1004に対応する送信リクエストキュー2102内の非帯域制御用キューに送信リクエスト524を格納する。
次に、送信リクエストキュー2102は、当該送信リクエスト524を格納する前の非帯域制御キューが空であったか否かを判定する(1210)。
送信リクエストキュー2102は、非帯域制御用キューが空であったと判定すると、送信キュー選択部2103へスケジューリングリクエストを送信する。
送信キュー選択部2103は、スケジューリングリクエストを受信すると、ラウンドロビンアルゴリズムを用いて、送信リクエスト524を格納している非帯域制御用キューの中から一本を選択する(1209)。そして、送信キュー選択部2103は、選択した非帯域制御用キューの先頭に保持される送信リクエスト524を暫定送信リクエストとする。
なお、送信キュー選択部2103は、送信時刻計算部2104から送信リクエスト選択信号を受信していないときに、送信起動信号525を受信すると、暫定送信リクエストをパケットの送信許可523として送信する。
一方、ステップ1210で非帯域制御キューが空でないと判定すると、そのまま本処理を終了する(1211)。この場合、送信リクエスト524を格納している非帯域制御用キューの数は変更されないので、暫定送信リクエストを変更する必要がないからである。
図19は、本発明の第1の実施の形態のパケット送信時のパケットスケジューリング部510の処理のフローチャートである。
まず、送信時刻計算部2104は、暫定送信ユーザが送信可能状態であるか否かを判定する(1301)。送信可能状態とは、暫定送信ユーザの送信予定時刻が、現在時刻を基準として、過去又は同時刻となっている状態である。
暫定送信ユーザが送信可能状態でないと、送信時刻計算部2104は、送信予定時刻の変更又は時間の経過によって、暫定送信ユーザが送信可能状態になるまで待機する。
一方、送信可能状態であると、送信時刻計算部2104は、送信リクエスト選択信号を送信キュー選択部2103へ送信する。送信リクエスト選択信号には、暫定送信ユーザのユーザ識別番号が含まれている。
送信キュー選択部2103は、送信リクエスト選択信号を受信する。次に、送信キュー選択部2103は、受信した送信リクエスト選択信号からユーザ識別番号を抽出する。次に、送信キュー選択部2103は、抽出したユーザ識別番号に対応する帯域制御用キューから送信リクエスト524を読み出す。次に、送信キュー選択部2103は、読み出された送信リクエスト524からユーザ識別番号1004及び要求データ長1005を抽出する。
次に、送信キュー選択部2103は、読み出された帯域制御キューから送信リクエスト524の保持有無を取得する。次に、送信キュー選択部2103は、抽出したユーザ識別番号1004、要求データ長1005及び取得した送信リクエスト524の保持有無を送信時刻計算部2104へ送信する。送信時刻計算部2104は、これらの情報を受信する。
次に、送信キュー選択部2103は、バッファ読み出し制御回路2004から送信起動信号525を受信したか否かを判定する(1302)。
送信キュー選択部2103は、送信起動信号525を受信していないと、送信起動信号525を受信するまで待機する。
一方、送信キュー選択部2103は、送信起動信号525を受信すると、読み出した送信リクエスト524を送信許可信号523として、バッファ読み出し制御回路2004へ送信する。
次に、ユーザ識別番号1004、要求データ長1005及び送信リクエスト524の保持有無を受信した送信時刻計算部2104は、新規送信予定時刻を計算する(1304)。新規送信予定時刻は、例えば、1Byteのデータを送信する際の時間間隔を記憶しておき、以下の式(3)で求められる。
新規送信予定時刻=今回の送信予定時刻+時間間隔×要求データ長のバイト数・・・(3)
また、新規送信予定時刻は、各ユーザの帯域が、The ATM Forum Specification version 4.0の4.4.2章に記載されているContinuous State Leaky Bucket Algorithmの遵守・超過判定において、遵守と判定されるように求めても良い。このリーキーバケットアルゴリズムについては、図20で説明する。
送信時刻計算部2104は、求めた新規送信予定時刻、受信した送信リクエスト524の保持有無及びユーザ識別番号1004を二分木ソート回路512に送信する。
二分木ソート回路512は、新規送信予定時刻、送信リクエスト524の保持有無及びユーザ識別番号1004を受信すると、これらの情報をユーザソーティング情報メモリ514に格納する。そして、二分木ソート回路512は、ユーザソーティングを行うことによって(1305)、ユーザの中で最も早くパケットを送信するユーザ(暫定送信ユーザ)を決定し、処理を終了する(1306)。
図20は、本発明の第1の実施の形態の送信時刻計算部2104がリーキーバケットアルゴリズムを用いて新規送信予定時刻を求める処理のフローチャートである。
リーキーバケットアルゴリズムは、ある容量を持った穴の空いた漏れバケツのモデルで表される。バケツの穴は、一定量の水が漏れる。漏れる一定量は、送信予定時刻を求める処理においては、ユーザの契約帯域に相当する。
RD要求の読み出し時には、バケツに読み出したRD要求の要求データ長分に相当する水が注ぎ込まれる。バケツは、契約帯域に相当する水の量を保持できる容量を持っている。つまり、リーキーバケットアルゴリズムでは、バケツから水が溢れないうちは、契約帯域を遵守してデータを転送していると判定し、バケツから水が溢れると契約帯域を超過するデータを転送していると判定する。
以下、具体的な送信時刻を求める処理を説明する。
RD要求のパケットkを時間ta(k)に読み出す(1901)。
次に、以下の式(4)を計算する(1902)。
X’=X−(ta(k)−LCT)・・・(4)
なお、LCTは、RD要求を前回読み出した時刻である。ta(k)−LCTは、バケツから漏れる水量に対応する。Xは、前回RD要求を読み出し完了時のバケツの水位に対応する。よって、求めたX’は、現在のバケツの水位に相当する。
次に、X’が負であるか否かを判定する(1903)。X’が負でないとそのままステップ1905に進む。
一方、X’が負であると、X’を0に修正する(1904)。
次に、以下の式(5)を計算する(1905)。
X=X’+I・・・(5)
なお、Iは、RDデータのデータ量であり、加えた水の量に相当する。Xは、RD要求を読み出し完了時のバケツの水位に対応する。
次に、X>Lであるか否かを判定する(1906)。なお、Lは、バケツの容量に対応する。
X>Lであると、新規送信予定時刻を以下の式(6)で求める(1907)。
新規送信予定時刻=ta(k)+(X−L)・・・(6)
X>Lであるときに、すぐにRD要求を送信すると、ストレージ105が契約帯域を超過してRDデータを送信してしまう。新規送信予定時刻を式(6)で求めることによって、バケツから漏れる水の量とバケツへ加える水の量とが一致するので、契約帯域を超過しない。
X≦Lであると、新規送信予定時刻を以下の式(7)で求める(1908)。
新規送信予定時刻=ta(k)+1・・・(7)
X≦Lであるときは、RD要求をすぐに読み出しても契約帯域を超過しない。そこで、新規送信予定時刻は、RD要求を読み出した現在時刻ta(k)の直後とした。
以上のように、リーキーバケットアルゴリズムを用いて、新規送信予定時刻を求めることができる。なお、送信時刻計算部2104は、R2Tの新規送信予定時刻もRD要求と同様にして求めることができる。
本発明の第1の実施の形態のパケット転送装置104は、RDデータ及びWRデータをパケットバッファ部502に保持することなく帯域を制御できる。そのため、パケット転送装置104は、バッファ量を削減することができる。
また、パケット転送装置104は、ユーザの契約帯域を超過しないタイミングで、RD要求及びR2Tを転送する。よって、ストレージ105及びユーザ端末100は、過剰なデータを送信することがなくなり、データ転送リソースを有効利用できる。
従来のパケット転送装置は、RDデータ及びWRデータの帯域を制御するため、ユーザ側及びストレージ側に設けられる必要があった。しかし、本発明の第1の実施の形態のパケット転送装置104は、RDデータ及びWRデータの帯域を一台で制御することができる。
また、ストレージ105は、パケット転送装置104を内部に備えることによって、帯域制御IFを有するディスクアレイ制御装置となる。
(第2の実施の形態)
第2の実施の形態のパケット転送装置104は、複数のネットワークインタフェースをシャーシ型スイッチに組み込むことができる。
図21は、本発明の第2の実施の形態のパケット転送装置104である。
第2の実施の形態のパケット転送装置104は、帯域制御ネットワークインタフェース1620、非帯域制御ネットワークインタフェース1621、スイッチ部1601及び設定情報蓄積部1602から構成される。
スイッチ1601は、受信したパケットから、内部ヘッダ部1000の出力回線番号1002を抽出する。そして、スイッチ1601は、抽出した出力回線番号1002の出力回線412を備える帯域制御ネットワークインタフェース1620又は非帯域制御ネットワークインタフェース1621にパケットを転送する。
設定情報蓄積部1602は、インタフェース制御部1607が使用する情報を蓄積する。
帯域制御ネットワークインタフェース1620は、帯域を制御しながら、パケットをルーティングする。非帯域制御ネットワークインタフェース1621は、帯域を制御せずに、パケットをルーティングする。
帯域制御ネットワークインタフェース1620は、入力回線411、パケット受信回路401、帯域制御部402、経路検索回路1603、パケット送信回路404、出力回線412、インタフェース制御部1607、スイッチ送信回路1605及びスイッチ受信回路1606から構成される。なお、入力回線411、パケット受信回路401、帯域制御部402、パケット送信回路404及び出力回路412は、第1の実施の形態と同じ構成及び動作である。なお、第1の実施形態と同じ構成は同じ符号を付し、その説明は省略する。
スイッチ送信回路1605は、経路検索回路1603から受信したパケットをスイッチ部1061へ転送する。スイッチ受信回路1606は、スイッチ部1061から受信したパケットを経路検索回路1603へ転送する。
インタフェース制御部1607は、帯域制御部402及び経路探索回路1603に各種情報を設定する。各種情報は、ユーザサイト108の契約帯域情報や、パケットの経路検索情報や、ユーザサイト108のネットマスクの情報等である。なお、インタフェース制御部1607は、設定する各種情報を設定情報蓄積部1602から取得する(1610)。
経路検索回路1603は、受信したパケットの経路を検索する。具体的には、経路検索回路1603は、パケットを受信すると、当該パケットの宛先IPアドレス604を抽出する。次に、経路検索回路1603は、抽出した宛先IPアドレス604のパケットを送信する出力回線412を、経路検索テーブルから検索する。次に、経路検索回路1603は、検索した出力回線412の番号を内部ヘッダ部1000の出力回線番号1002へ格納する。次に、経路検索回路1603は、検索した出力回線412が非帯域制御ネットワークインタフェース1621上の出力回線412であると、スイッチ送信回路1605へ当該パケットを送る。一方、経路検索回路1603は、検索した出力回線412が帯域制御ネットワークインタフェース1620上の出力回線412であると、出力回線412と接続するパケット送信回路404へ当該パケットを送る。
非帯域制御ネットワークインタフェース1621は、帯域制御ネットワークインタフェース1620から帯域制御部402を除いた構成であり、詳細の説明は省略する。よって、パケット受信回路401と経路検索回路1603は、直接接続する。
なお、帯域制御ネットワークインタフェース1620及び非帯域制御ネットワークインタフェース1621は、1枚ずつを図示しているが、複数枚備えられていてもよい。
この第2の実施の形態によれば、拡張性に富むシャーシ型スイッチのネットワークインタフェースにおいてストレージデータの帯域制御を行うことができる。
(第3の実施の形態)
本発明の第3の実施の形態は、LANスイッチ101及びパケット転送装置104内にトラヒックシェーピング部を備える。なお、第3の実施の形態は、第1及び第2のどちらの実施の形態に対しても適用することができる。ここでは、第2の実施の形態に適用した場合を説明する。
図22は、本発明の第3の実施の形態のストレージセントリックネットワークシステムのブロック図である。
第3の実施の形態のストレージセントリックネットワークシステムは、LANスイッチ101内にトラヒックシェーピング部2202を備える。それ以外の構成は、第2の実施形態と同一である。但し、第2の実施のストレージセントリックネットワークシステムの構成は、パケット転送装置104の構成を除き、第1の実施の形態(図1)と同一である。
トラヒックシェーピング部2202は、トラヒックシェーピング機能(例えば、特許文献1参照。)を使って、広域ネットワーク102に転送されるすべてのパケットの帯域を制御する。
図23は、本発明の第3の実施の形態のパケット転送装置104のブロック図である。
第3の実施の形態のパケット転送装置104は、帯域制御ネットワークインタフェース1620内の経路検索回路1603とパケット送信回路404との間に、トラヒックシェーピング部2201を備える。それ以外の構成は、第2の実施形態のパケット転送装置104と同一である。なお、第2の実施形態と同じ構成は同じ符号を付し、その説明は省略する。
トラヒックシェーピング部2201は、トラヒックシェーピング機能を使って、広域ネットワークに転送されるすべてのパケットの帯域を制御する。
なお、第3の実施の形態を第1の実施の形態のパケット転送装置104に適用する場合は、経路検索回路403とパケット送信回路404との間にトラヒックシェーピング部2201を設ける。
第1又は第2の実施の形態のデータ転送装置104は、RD要求及びR2Tの転送間隔を制御することによって、RDデータ及びWRデータの転送量を制御する。しかし、RDデータ又はWRデータが複数のIPパケットに分割されて転送される場合、データ転送装置104は、分割されたIPパケットの転送間隔を制御することはできなかった。
エッジスイッチ103は、UPCを利用して広域ネットワークへ転送されるデータ量を監視する。UPCは、単位時間当たりに広域ネットワークに流れ込むパケットの量を監視して、トラヒック量が契約帯域内かどうかを確認する。このとき、監視する単位時間が、短く設定される場合もある。
この場合、第1又は第2の実施の形態のデータ転送装置104が、契約帯域内としてRD要求又はR2Tを転送したとしても、エッジスイッチ103が単位時間当たりのトラヒック量で契約帯域を超過したと判定する可能性がある。エッジスイッチ103は、契約帯域を超過したと判定すると、パケットを廃棄する。
これを防ぐためには、ストレージセントリックネットワークシステムにトラヒックシェーピング部2201、2202を設けることが有効である。
しかし、トラヒックシェーピング部2201、2202だけでは、パケットバッファがオーバーフローする可能性があることを前述した。
そこで、第3の実施の形態では、第1又は第2の実施の形態のデータ転送装置104とトラヒックシェーピング部2201、2202とを組み合わせて使用することによって、監視する単位時間が短く設定されている場合でも、パケットが廃棄されることを防ぐ。
データ転送装置104は、送信間隔を制御しながら、RD要求及びR2Tを転送するので、トラヒックシェーピング部2201、2202のパケットバッファが、オーバーフローすることはない。
なお、トラヒックシェーピング部2201は、パケット転送装置104の外部に別装置として設けてもよい。同様に、トラヒック制御部2202は、LANスイッチ101の外部に別装置として設けてもよい。