(57)【特許請求の範囲】
【請求項１】
複数のスイッチ回路と、複数のコントローラを有するスイッチ装置であって、
該複数のコントローラに含まれる第１および第２のコントローラの各々は、前記複数のスイッチ回路に含まれる第１のスイッチ回路から受信したフレームを該フレームに含まれる宛先情報に対応した前記複数のスイッチ回路に含まれる第２のスイッチ回路へ転送し、
前記第１のスイッチ回路は、
外部からデータを受信した際、該受信したデータを含むフレームを先発フレームとして前記第１のコントローラへ送信すると共に、前記先発フレームの送信から所定時間後に、該受信したデータを含むフレームを後発フレームとして前記第２のコントローラへ送信し、
前記第２のスイッチ回路は、
前記第１のコントローラより前記先発フレームを受信した際、受信した前記先発フレームに誤りが無い場合、受信した前記先発フレームに含まれるデータを外部へ送信し、受信した前記先発フレームに誤りがありかつ前記第２のコントローラから受信した前記後発フレームに誤りが無い場合、前記第２のコントローラから受信した前記後発フレームに含まれるデータを外部へ送信し、
前記所定時間は、前記第１のスイッチ回路から前記第２のスイッチ回路へ送信されるフレームの列が、前記先発フレーム、前記後発フレーム、および、次の外部からのデータを含む先発フレームの順に時間差を置いて前記第２のスイッチ回路へ到着するように設定される
ことを特徴とするスイッチ装置。
【請求項２】
該所定時間は、前記第１のスイッチ回路から送信されるフレームが前記第１のコントローラを経由して前記第２のスイッチ回路に到達するまでのフレーム転送時間と、前記第１のスイッチ回路から送信されるフレームが前記第２のコントローラを経由して前記第２のスイッチ回路に到達するまでのフレーム転送時間との差分以上の時間である
ことを特徴とする、請求項１に記載のスイッチ装置。
【請求項３】
前記第１のスイッチ回路は、外部から受信したデータを記憶する記憶部を有し、
外部からデータを受信した際、該データを該記憶部に記憶させ、該記憶部に記憶したデータおよび先の送信を示す識別子を含む前記先発フレームを前記第２のコントローラへ送信するとともに、前記先発フレームの送信から前記所定時間後に、該記憶部に記憶したデータおよび後の送信を示す識別子を含む前記後発フレームを前記第２のコントローラへ送信し、
前記第２のスイッチ回路は、前記第１のコントローラより受信した先の送信を示す識別子を含む前記先発フレームに誤りが無い場合、受信した前記先発フレームに含まれるデータを外部へ送信し、受信した前記先発フレームに誤りがあり、前記第２のコントローラから受信した後の送信を示す識別子を含む前記後発フレームに誤りが無い場合に、前記第２のコントローラから受信した前記後発フレームに含まれるデータを外部へ送信する
ことを特徴とする、請求項１に記載のスイッチ装置。
【請求項４】
該記憶部は記憶するデータが送信済みであることを示す制御情報に、該データを識別する識別情報を対応させて記憶し、
該制御部は該制御情報に基づいて該データが送信済みであることを確認後、次のデータを送信する
ことを特徴とする、請求項３に記載のスイッチ装置。
【請求項５】
複数のスイッチ回路と、複数のコントローラを有するスイッチ装置の制御方法であって、
外部からのデータを前記複数のスイッチ回路に含まれる第１のスイッチ回路で受信し、
該受信したデータを含むフレームを先発フレームとして前記複数のコントローラに含まれる第１のコントローラへ送信すると共に、前記先発フレームの送信から所定時間後に、該受信したデータを含むフレームを後発フレームとして前記複数のコントローラに含まれる第２のコントローラへ送信し、
前記第１のスイッチ回路から前記第１および第２のコントローラでそれぞれ受信した前記先発フレームおよび前記後発フレームを、前記先発フレームおよび前記後発フレームに含まれる宛先情報に対応した前記複数のスイッチ回路に含まれる第２のスイッチ回路へ転送し、
前記第１のコントローラより送信された前記先発フレームを前記第２のスイッチ回路で受信し、受信した前記先発フレームに誤りが無い場合、該受信した前記先発フレームに含まれるデータを外部へ送信し、受信した前記先発フレームに誤りがありかつ前記第２のコントローラから受信した前記後発フレームに誤りが無い場合、前記第２のコントローラから受信した前記後発フレームに含まれるデータを外部へ送信し、
前記所定時間は、前記第１のスイッチ回路から前記第２のスイッチ回路へ送信されるフレームの列が、前記先発フレーム、前記後発フレーム、および、次の外部からのデータを含む先発フレームの順に時間差を置いて前記第２のスイッチ回路へ到着するように設定される
ことを特徴とするスイッチ装置の制御方法。
【請求項６】
該所定時間は、前記第１のスイッチ回路から送信されるフレームが前記第１のコントローラを経由して前記第２のスイッチ回路に到達するまでのフレーム転送時間と、前記第１のスイッチ回路から送信されるフレームが前記第２のコントローラを経由して前記第２のスイッチ回路に到達するまでのフレーム転送時間との差分以上の時間である
ことを特徴とする、請求項５に記載のスイッチ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを転送するスイッチ装置に関する。
【背景技術】
【０００２】
複数のサーバ装置によるストレージ装置の共有やデータのバックアップによる信頼性向上のため、複数のサーバ装置と複数のストレージ装置とのデータを転送するスイッチ装置が用いられる。
【０００３】
スイッチ装置は複数のサーバ装置のいずれかからデータを受信し、受信したデータを複数のストレージ装置のいずれかに送信するための複数の伝送経路を有する。スイッチ装置がサーバ装置から受信したデータは、スイッチ装置に実装されたポートモジュールを介してスイッチ装置内部の伝送経路に送信される。ポートモジュールはスイッチ装置内部の伝送経路と外部装置との接続を切り替えるスイッチ回路である。
【０００４】
ポートモジュールはデータを送受信する。外部装置からデータを受信したポートモジュールは、スイッチ装置内部のコントローラにデータを送信する。コントローラはポートモジュールから受信したデータに含まれる情報に基づいて、送信先の装置に接続されたポートモジュールへデータを送信する。コントローラはスイッチ装置内部に複数実装されている。ポートモジュールは複数のコントローラのうちの１つを選択し、データを送信する。よって１つのポートモジュールと他のポートモジュールとの伝送経路は複数存在する。
【０００５】
コントローラからデータを受信したポートモジュールは、ポートモジュールに接続されたストレージ装置に対し、受信したデータを送信する。
【０００６】
スイッチ装置内部に複数のコントローラが存在する場合、１つのコントローラが故障しても、他のコントローラを用いることにより、スイッチ装置はデータの送受信処理を継続することが出来る。しかし、データの送受信中にコントローラが故障すると、故障発生時に送受信中であったデータは破壊される。
【０００７】
以下の特許文献には冗長化されたシステムに信号を伝播させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００５−５３９２８４号公報
【特許文献２】国際公開第９１／０８６３２号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の一実施例では、データの送受信中におけるコントローラでの故障発生に関わらず、データを正確に送受信するスイッチ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、複数のスイッチ回路と、複数のコントローラを有するスイッチ装置であって、該複数のコントローラに含まれる第１および第２のコントローラの各々は、前記複数のスイッチ回路に含まれる第１のスイッチ回路から受信したフレームを該フレームに含まれる宛先情報に対応した前記複数のスイッチ回路に含まれる第２のスイッチ回路へ転送し、前記第１のスイッチ回路は、外部からデータを受信した際、該受信したデータを含むフレームを先発フレームとして前記第１のコントローラへ送信すると共に、前記先発フレームの送信から所定時間後に、該受信したデータを含むフレームを後発フレームとして前記第２のコントローラへ送信し、前記第２のスイッチ回路は、前記第１のコントローラより前記先発フレームを受信した際、受信した前記先発フレームに誤りが無い場合、受信した前記先発フレームに含まれるデータを外部へ送信し、受信した前記先発フレームに誤りがありかつ前記第２のコントローラから受信した前記後発フレームに誤りが無い場合、前記第２のコントローラから受信した前記後発フレームに含まれるデータを外部へ送信し、前記所定時間は、前記第１のスイッチ回路から前記第２のスイッチ回路へ送信されるフレームの列が、前記先発フレーム、前記後発フレーム、および、次の外部からのデータを含む先発フレームの順に時間差を置いて前記第２のスイッチ回路へ到着するように設定される。
【発明の効果】
【００１１】
実施形態によれば、データの送受信中におけるコントローラでの故障発生に関わらず、データを正確に送受信するスイッチ装置を提供することが出来る。
【図面の簡単な説明】
【００１２】
【図１】スイッチ装置のブロック図である。
【図２】先発フレームおよび後発フレームのタイミングチャート図である。
【図３】フレームの形式図である。
【図４】ポートモジュールの詳細ブロック図である。
【図５】フレーム送信時のスイッチ回路のフローチャート図である。
【図６】フレーム受信時のスイッチ回路のフローチャート図である。
【図７】制御情報のテーブル図である。図７のＡはフレームを送信するポートモジュールに記憶される制御情報のテーブル図である。図７のＢはフレームを受信するポートモジュールに記憶される制御情報のテーブル図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について説明する。なお、各実施形態における構成の組み合わせも本発明の実施形態に含まれる。
【００１４】
図１は本実施例におけるスイッチ装置１のブロック図である。スイッチ装置１は１つのポートモジュールで受信したデータのヘッダ情報などに応じて、そのデータを送信するポートモジュールを切り替える。
【００１５】
スイッチ装置１はポートモジュール１１、１４、８７、８８、８９、９０、コントローラ１２、１３を有する。ポートモジュール１１、１４、８７、８８、８９、９０はスイッチ装置１の外部から受信したデータを他のポートモジュールに送信し、他のポートモジュールから受信したデータをスイッチ装置１の外部へ送信する。ポートモジュール１１、１４、８７、８８、８９、９０にはサーバ装置やストレージ装置が接続される。各ポートモジュールはコントローラ１２、１３を介して互いに接続されている。図１において、ポートモジュール１１とポートモジュール１４との間の接続状態を図示し、その他のポートモジュール間の接続状態は省略する。スイッチ装置１は２つ以上のポートモジュール、２つ以上のコントローラを有している。ポートモジュールおよびコントローラはそれぞれ挿抜により交換可能である。ポートモジュールの１１、１４、８７、８８、８９、９０はそれぞれ同一構成および同一機能を有する。よって本実施例ではポートモジュール１１、１４を詳細に説明し、他のポートモジュールの説明を省略する。
【００１６】
本実施例において、ポートモジュール１１にはサーバ装置２、３が接続され、ポートモジュール１４にはストレージ装置４、５が接続される。ポートモジュール１１と１４は２つの伝送路７、８で接続されている。伝送路７はコントローラ１２を経由する。伝送路８はコントローラ１３を経由する。スイッチ装置１はサーバ装置２または３から受信したデータをストレージ装置４または５に送信し、ストレージ装置４または５から受信したデータをサーバ装置２または３に送信する。
【００１７】
ポートモジュール１１は外部ポート３４、３５、内部ポート３８、３９、スイッチ回路１５を有する。外部ポート３４、３５はスイッチ装置１の外部装置とポートモジュール１１とを接続するポートである。外部ポート３４はサーバ装置２に対し伝送路３３で接続されている。外部ポート３５はサーバ装置３に対し伝送路１０で接続されている。各外部ポートで受信したデータはスイッチ回路１５により検知される。
【００１８】
内部ポート３８、３９はスイッチ装置１の内部において、ポートモジュール１１とコントローラ１２、１３を接続するポートである。内部ポート３８はコントローラ１２に対し伝送路７で接続されている。内部ポート３９はコントローラ１３に対し伝送路８で接続されている。各内部ポートで受信したデータは、スイッチ回路１５により検知される。
【００１９】
ポートモジュール１４は外部ポート８５、８６、内部ポート８３、８４、スイッチ回路８２を有する。外部ポート８５、８６はスイッチ装置１の外部装置とポートモジュール１４とを接続するポートである。外部ポート８５はストレージ装置４に接続されている。外部ポート８６はストレージ装置５に接続されている。各外部ポートで受信したデータはスイッチ回路８２により検知される。
【００２０】
内部ポート８３、８４はスイッチ装置１の内部において、ポートモジュール１４とコントローラ１２、１３を接続するポートである。内部ポート８３はコントローラ１２に接続されている。内部ポート８４はコントローラ１３に接続されている。各内部ポートで受信したデータは、スイッチ回路８２により検知される。ポートモジュール１１、１４は同一構成および同一機能を有するので、機能の説明はポートモジュール１１を中心に行う。
【００２１】
スイッチ回路１５は内部ポート３８、３９または外部ポート３４、３５のいずれのポートでデータを受信したかを判断し、データを受信したポートに応じてデータの処理内容を切り替える。外部ポート３４または３５でデータを受信した場合、スイッチ回路１５は受信したデータを複製し、複製したデータの一方を伝送路７で他のスイッチ回路へ送信し、複製したデータの他方を一定時間遅延させて伝送路８で他のスイッチ回路へ送信する。
【００２２】
一方、内部ポート３８、３９でデータを受信した場合、スイッチ回路１５は他のスイッチ回路で複製されたデータの一方をエラー判定し、データが正常であればそのデータを外部へ出力する。データが異常であれば他方のデータをエラー判定し、他方のデータが正常であればそのデータを外部へ出力する。スイッチ回路１５についての詳細は後述する。
【００２３】
コントローラ１２、１３はスイッチ装置１の全体の設定、状態管理、動作制御などを実行する。コントローラ１２、１３は１つのポートモジュールから受信したデータをそのデータに含まれる宛先情報に対応した他のポートモジュールへ転送する。
【００２４】
コントローラ１２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１６、転送回路１７を有する。ＣＰＵ１６は転送回路１７の動作制御を行う。転送回路１７は１つのポートモジュールから受信したデータをそのデータに含まれる宛先情報に対応した他のポートモジュールへ転送する。
【００２５】
コントローラ１３は、ＣＰＵ８０、転送回路８１を有する。ＣＰＵ８０は転送回路８１の動作制御を行う。転送回路８１は転送回路１７と同一の機能を有する。転送回路８１はＣＰＵ８０の命令に応じて受信したデータの送信先ポートモジュールを切り替える。
【００２６】
本実施例において、サーバ装置とストレージ装置との間のデータのやり取りはフレームと呼ばれる単位で行う。例えばあるデータを読み込むコマンドがサーバ装置からストレージ装置に送られた場合、その読み込みコマンドに対応してストレージ装置が出力するデータをシーケンスという。シーケンスをある一定のデータ長に分割し、付加的な情報を追加したものをそれぞれフレームという。付加的な情報としてアドレス情報やヘッダ情報がある。フレーム構造の詳細な説明は後述する。
【００２７】
サーバ装置２から送信されたフレームＡをスイッチ装置１経由でストレージ装置４が受信する手順を以下に説明する。ポートモジュール１１はサーバ装置２からフレームＡを受信する。ポートモジュール１１は受信したフレームＡに基づいてフレームＡｘ、Ａｙを生成する。
【００２８】
ポートモジュール１１はフレームＡｘを内部ポート３８経由でコントローラ１２に送信する。コントローラ１２はフレームＡｘのヘッダ情報に基づき、フレームＡｘの宛先がポートモジュール１４であることを確認すると、受信したフレームＡｘをポートモジュール１４に送信する。複製したフレームのうち、先に送信するフレームを先発フレームと呼ぶ。またポートモジュール１１は先発フレームＡｘの送信から一定時間経過後にフレームＡｙを内部ポート３９経由でコントローラ１３へ送信する。複製したフレームのうち、後で送信するフレームを後発フレームと呼ぶ。先発フレームＡｘと後発フレームＡｙの送信タイミングをずらすことにより、各フレームＡｘ、Ａｙを受信するポートモジュールの受信処理を分散させることができる。コントローラ１３は後発フレームＡｙのヘッダ情報に基づき、フレームＡｙの宛先がポートモジュール１４であることを確認すると、受信した後発フレームＡｙをポートモジュール１４に送信する。
【００２９】
内部ポート８３で先発フレームＡｘを受信したポートモジュール１４は、受信したフレームに異常がないかＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）などのエラーチェック処理を行う。エラーチェック処理の結果、先発フレームＡｘが正常であれば、ポートモジュール１４はストレージ装置４に対し、先発フレームＡｘをフレームＡとして出力する。
【００３０】
先発フレームＡｘをエラーチェック処理した結果、先発フレームＡｘが異常であった場合、ポートモジュール１４は内部ポート８４で受信した後発フレームＡｙのエラーチェック処理を行う。エラーチェック処理の結果、後発フレームＡｙが正常であれば、ポートモジュール１４はストレージ装置４に対し、後発フレームＡｙをフレームＡとして出力する。ポートモジュール１４の処理の詳細については後述する。
【００３１】
図２は先発フレームおよび後発フレームのタイミングチャート図である。矢印７、８はポートモジュール１１から出力されるフレームを伝送する伝送路７、８を示す。矢印Ａ１ｘ、Ａ２ｘ、Ａ３ｘはポートモジュール１１から先発フレームＡ１ｘ、Ａ２ｘ、Ａ３ｘを伝送路７へ出力するタイミングを示す。矢印Ａ１ｙ、Ａ２ｙ、Ａ３ｙはポートモジュール１１から後発フレームＡ１ｙ、Ａ２ｙ、Ａ３ｙを伝送路８へ出力するタイミングを示す。
【００３２】
図２において時間Ｔ１は、先発フレームＡ１ｘを送信してから送信した先発フレームに対応する後発フレームＡ１ｙを送信するまでの待機時間である。時間Ｔ１は伝送路７、８の伝播誤差やコントローラ１２、１３での処理時間のずれなどを考慮し、先発フレームＡ１ｘがポートモジュール１４に到達した後に後発フレームＡ１ｙがポート１４に到達するように設定する。すなわち時間Ｔ１は、スイッチ回路１５が先にデータを送信するコントローラ１２を経由しスイッチ回路８２に到達するまでのデータ転送時間と、スイッチ回路１５が後にデータを送信するコントローラ１３を経由しスイッチ回路８２に到達するまでのデータ転送時間との差分以上の時間である。
【００３３】
図２において時間Ｔ２は、先の順番の後発フレームＡ１ｙを送信してから次の先発フレームＡ２ｘを送信するまでの待機時間である。時間Ｔ２は伝送路７、８の伝播誤差やコントローラ１２、１３での処理時間のずれなどを考慮し、先の順番の後発フレームＡ１ｙがポートモジュール１４に到達した後に次の先発フレームＡ２ｘがポートモジュール１４に到達するように設定する。
【００３４】
以上の通り時間Ｔ１、Ｔ２を設定することにより、１つのシーケンスにおけるフレームの順番を崩すことなくスイッチ装置１の外部装置へフレームを送信することが出来る。フレームの順番を崩さずに外部装置へ送信することにより、外部装置においてフレームの並び替えの必要性をなくし、外部装置の処理負荷を軽減することが出来る。またポートモジュールがフレームを受信するタイミングを適度にずらすことにより、受信側のポートモジュールでのＣＲＣチェック処理や外部へのフレーム出力処理などの処理タイミングを分散させることが出来る。
【００３５】
図３は先発フレームＡ１ｘの形式図である。先発フレームＡ１ｘはシーケンスに含まれる複数のフレームのうちの一つであり、他の先発フレームおよび後発フレームも同一構成を有する。先発フレームＡ１ｘはＳＯＦ（Ｓｔａｒｔ  ｏｆ  Ｆｒａｍｅ  Ｄｅｌｉｍｉｔｅｒ）４１、フラグ５９、ＦＨ（Ｆｒａｍｅ  Ｈｅａｄｅｒ）４２、オプショナルヘッダ４４、ペイロード４５、ＣＲＣ４６、ＥＯＦ（Ｅｎｄ  ｏｆ  Ｆｒａｍｅ  Ｄｅｌｉｍｉｔｅｒ）４７を有する。
【００３６】
ＳＯＦ４１は先発フレームＡ１ｘの開始位置を示すデリミタである。デリミタはフレームの区切り位置を示す符号である。フラグ５９は複製後のフレームに挿入されるフラグである。フラグ５９は先発フレームＡ１ｘと後発フレームＡ１ｙとを区別するために用いられる識別子である。フラグ５９の値は、例えば先発フレームＡ１ｘの場合には論理値‘１’とし、後発フレームＡ１ｙの場合には論理値‘０’とする。フラグ５９を先発フレームＡ１ｘおよび後発フレームＡ１ｙに挿入することにより、受信側のポートモジュールは、受信したフレームが先発フレームＡ１ｘか後発フレームＡ１ｙかを識別することが出来る。
【００３７】
ＦＨ４２はフレームの送信先アドレスやシーケンスにおけるフレームの順番などの情報を有する。ＦＨについての詳細は後述する。オプショナルヘッダ４４、ペイロード４５はデータフィールドを構成する。オプショナルヘッダ４４は予備的に設けられたヘッダ領域である。ペイロード４５は外部装置からのリクエストに応答するデータの一部を記憶する領域である。フラグ５９はオプショナルヘッダ４４の領域に設けても良い。ＣＲＣ４６はフレームヘッダとデータフィールドを対象としたビット誤り検出用チェックコードである。ＥＯＦ４７はフレームの終了位置を示すデリミタである。
【００３８】
ＦＨ４２はフレームを識別するための識別情報である。ＦＨ４２はＲ−ＣＴＬ（Ｒｏｕｔｉｎｇ  Ｃｏｎｔｒｏｌ）４８、ＣＳ−ＣＴＬ（Ｃｌａｓｓ  Ｓｐｅｃｉｆｉｃ  Ｃｏｎｔｒｏｌ）４９、ＴＹＰＥ（Ｄａｔａ  Ｓｔｒｕｃｔｕｒｅ  Ｔｙｐｅ）５０、ＳＥＱ−ＩＤ（Ｓｅｑｕｅｎｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）５１、ＯＸ−ＩＤ（Ｏｒｉｇｉｎａｔｏｒ  Ｅｘｃｈａｎｇｅ  Ｉｄｅｎｔｉｆｉｅｒ）５２、Ｄ−ＩＤ（Ｄｅｓｔｉｎａｔｉｏｎ  Ｉｄｅｎｔｉｆｉｅｒ）５３、Ｓ−ＩＤ（Ｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）５４、Ｆ−ＣＴＬ（Ｆｒａｍｅ  Ｃｏｎｔｒｏｌ）５５、ＤＦ−ＣＴＬ（Ｄａｔａ  Ｆｉｅｌｄ  Ｃｏｎｔｒｏｌ）５６，ＳＥＱ−ＣＮＴ（Ｓｅｑｕｅｎｃｅ  Ｃｏｕｎｔ）５７、ＲＸ−ＩＤ（Ｒｅｓｐｏｎｄｅｒ  Ｅｘｃｈａｎｇｅ  Ｉｄｅｎｔｉｆｉｅｒ）５８を有する。
【００３９】
Ｒ−ＣＴＬ４８はリンク制御フレーム、リンクデータフレーム、データフレーム等のフレームの種類である。ＣＳ−ＣＴＬ４９はフレームの属性やフレーム送信の優先権を示す。ＴＹＰＥ５０はフレームがリンク制御フレームの場合、リンク制御のコマンドコードを示す。ＳＥＱ−ＩＤ５１は混在転送時のフレームの所属するシーケンスを示す。ＯＸ−ＩＤ５２はオリジネータが発行するエクスチェンジ番号である。Ｄ−ＩＤ５３はフレームの宛先ポートアドレスである。Ｓ−ＩＤ５４はフレームの送信元ポートアドレスである。Ｆ−ＣＴＬ５５はフラグ、コードよりなるフレーム転送シーケンスの制御に用いられる。ＤＦ−ＣＴＬ５６はオプショナルヘッダの有無、およびオプショナルヘッダを使用する場合のオプショナルヘッダの長さを表示する。ＳＥＱ−ＣＮＴ５７は１つのシーケンスの中のフレームの順番、または同じエクスチェンジ中のシーケンスの順番を表示する。ＳＥＱ−ＣＮＴ５７は１つのフレームを識別する固有の番号である。ＲＸ−ＩＤ５８はレスポンダが発行するエクスチェンジ番号を表示する。
【００４０】
以上の通り送信側のポートモジュールにおけるスイッチ装置１の内部で外部から受信したフレームを複製し、フラグ５９を挿入することにより、受信側のポートモジュールは先発フレームＡ１ｘ、後発フレームＡ１ｙを判別することが出来る。
【００４１】
図４はポートモジュール１１の詳細ブロック図である。前述の通りポートモジュール１１はスイッチ回路１５、外部ポート３４、３５、内部ポート３８、３９を有する。スイッチ回路１５は記憶部３０、制御部３１、スイッチング処理部３２を有する。他のポートモジュール１４、８７、８８、８９、９０はポートモジュール１１と同一の構成および同一の機能を有するため、その説明を省略する。
【００４２】
スイッチ回路１５はフレームの送信機能、受信機能のいずれの機能も有する。内部ポートまたは外部ポートのいずれのポートからフレームを受信するかによって、スイッチ回路１５は異なる処理を実行する。内部ポートでフレームを受信したときの処理、および外部ポートでフレームを受信したときの処理の詳細については後述する。
【００４３】
スイッチング処理部３２は外部ポート３４、３５、内部ポート３８、３９のいずれのポートでフレームを受信したかを検知する。スイッチング処理部３２は検知結果を検知信号２８として制御部３１に送信する。スイッチング処理部３２は受信したフレームを記憶部３０にフレーム２６として書き込む。スイッチング処理部３２は制御部３１から受信した制御信号２９に応じて記憶部３０から読み出したフレーム２７を外部ポート３４、３５、内部ポート３８、３９のいずれかのポートへ読み出す。
【００４４】
記憶部３０はスイッチング処理部３２から書き込まれたフレームを記憶する。記憶部３０は先発フレーム、後発フレームの送信状態または受信状態を管理する制御情報をフレームの識別情報に対応させて記憶する。記憶部３０は制御部３１から受信した制御信号３６に応じて、記憶したフレームをフレーム２７としてスイッチング処理部３２へ出力する。記憶部３０は記憶したフレームを出力すると、制御部３１から受信した制御信号３６に対し、通知信号３７を制御部３１へ出力する。
【００４５】
制御部３１はスイッチング処理部３２から受信した検知信号２８に応じて記憶部３０およびスイッチング処理部３２を制御する。制御部３１は制御信号２９によってフレームを出力する内部ポートを制御する。制御部３１は制御信号３６によって記憶部３０が記憶するフレームの読み出しタイミングを制御する。
【００４６】
以下にポートモジュール１１における先発フレーム、後発フレームの送信動作を図５のフローチャートに基づいて説明する。またポートモジュール１１における先発フレーム、後発フレームの受信動作を図６のフローチャートに基づいて説明する。他のポートモジュールはポートモジュール１１と同一の構成および機能を有するため、その説明を省略する。
【００４７】
図５はポートモジュール１１が外部装置から受信したフレームを他のポートモジュールに送信する時のスイッチ回路１５の処理を表すフローチャート図である。外部装置から外部ポート３４または３５にフレームを受信すると、スイッチ回路１５のスイッチング処理部３２は外部ポートでフレームを受信したことを検知し、検知信号２８を制御部３１に送信する（Ｓ１）。
【００４８】
スイッチング処理部３２は受信したフレームをフレーム２６として記憶部３０に書き込む。記憶部３０は書き込まれたフレーム２６を記憶する。外部ポートによりフレームを受信した旨の検知信号２８を受信した制御部３１は、記憶部３０に記憶されたフレーム２６を記憶部３０の別のアドレスに複製する（Ｓ２）。
【００４９】
制御部３１は複製したフレームにそれぞれフラグ５９を図３の通り挿入する（Ｓ３）。前述の通り先発フレームと後発フレームとの区別が可能となるように、制御部３１は複製したフレームに対し、別個の論理値を有するフラグ５９を挿入する。
【００５０】
制御部３１は先発フレームおよび後発フレームが送信済であるか否かを示す制御情報をフレーム毎に記憶部３０に記憶させる（Ｓ４）。制御情報はフレームの送信状態を管理するための管理テーブルとして記憶部３０に記憶される。各フレームの制御情報は、そのフレームに対応する識別情報であるＦＨ４２と共に管理テーブルに記憶される。管理テーブルにはＦＨ４２のすべての情報を記憶する必要は無く、フレームを特定できる情報のみでもよい。制御情報は先発フレームおよび後発フレームが送信済であるか否かを示すフラグを有する。制御情報生成時には、ポートモジュール１１はまだフレームを送信していないため、先発フレーム、後発フレームの送信済フラグはいずれもＯＦＦである。制御情報についての詳細は後述する。
【００５１】
制御部３１は記憶部３０に記憶した制御情報を参照し、先発フレームの送信前に、先の順番の後発フレームが送信済であるか否かを制御情報のフラグ値に基づいて判定する（Ｓ５）。先の順番の後発フレームが送信済である場合あるいは先の順番の後発フレームが無い場合（Ｓ５：ＹＥＳ）、制御部３１は次の先発フレームを読み出す制御信号３６を記憶部３０に送信する。制御信号３６を受信した記憶部３０は、記憶した先発フレームをスイッチング処理部３２へ出力する。制御部３１はスイッチング処理部３２に対し、記憶部３０から読み出したフレーム２７を内部ポート３８、３９の何れかから送信するように制御信号２９を送信する（Ｓ６）。
【００５２】
先発フレームを出力した記憶部３０は、制御部３１に通知信号３７を出力する。通知信号３７を受信した制御部３1は、制御情報の先発フレームの送信済フラグをＯＮにする制御信号３６を記憶部３０に出力する（Ｓ７）。制御部３１は先発フレームが送信されたことを通知信号３７により確認後、後発フレームを送信する制御信号３６を記憶部３０に送信することにより、１つのシーケンスにおけるフレームの順番を守ることが出来る。
【００５３】
先の順番の後発フレームが送信済でない場合（Ｓ５：ＮＯ）、制御部３１は先の順番の後発フレームを出力するよう記憶部３０に制御信号３６を送信する（Ｓ１１）。先の順番の後発フレームを出力した記憶部３０は、制御部３１にフレームの送信完了を通知する通知信号３７を出力する。通知信号３７を受信した制御部３１は、記憶部３０に記憶した制御情報において、先の順番の後発フレームの送信済フラグをＯＮにする（Ｓ１２）。
【００５４】
制御部３１は送信した先発フレームのＦＨ４２を参照し、送信した先発フレームがその先発フレームの属するシーケンスの最終フレームか否かを判定する（Ｓ８）。送信した先発フレームが最終フレームであった場合（Ｓ８：ＹＥＳ）、制御部３１は先発フレームを出力してから一定時間経過後に後発フレームを出力するよう記憶部３０に制御信号３６を送信する。制御信号３６を受信した記憶部３０は後発フレームをスイッチング処理部３２に出力する（Ｓ９）。後発フレームを出力後、記憶部３０は後発フレームを出力した旨の通知信号３７を制御部３１に出力する。通知信号３７を受信した制御部３１はスイッチング処理部３２に対し、内部ポート３８、３９のうち先発フレームを送信した内部ポートと別の内部ポートへ後発フレームを送信するように制御信号２９を送信する。制御信号２９を受信したスイッチング処理部３２は、受信した後発フレームを制御部３１に指定された内部ポートへ送信する。
【００５５】
記憶部３０から後発フレームを出力した旨の通知信号３７を受信した制御部３１は制御情報における後発フレームの送信済フラグをＯＮにする（Ｓ１０）。
【００５６】
ステップＳ８において先発フレームが最終フレームで無かった場合（Ｓ８：ＮＯ）、スイッチ回路１５は再びステップＳ１からのフレーム送信処理を繰り返す。
【００５７】
以上の通り外部装置から受信したフレームを処理することにより、スイッチ回路１５はスイッチ装置１の内部の異なる伝送路に対し、異なるタイミングで先発フレームおよび後発フレームを送信することが出来る。
【００５８】
図６はスイッチ装置１内の他のポートモジュールから受信したフレームをスイッチ装置１の外部に送信する時のスイッチ回路１５の処理を表すフローチャート図である。なお本実施例においてすべてのポートモジュールにおけるスイッチ回路はスイッチ回路１５と同一の構成および機能を有するため、その説明を省略する。また、先発受信済フラグ、後発受信済フラグはそれぞれＯＦＦを示す値とする。
【００５９】
他のポートモジュールから内部ポート３８または３９にフレームを受信すると、スイッチ回路１５のスイッチング処理部３２は内部ポートによりフレームを受信したことを検知し、検知信号２８を制御部３１に送信する。スイッチング処理部３２は受信したフレーム２６を記憶部３０に送信する。制御部３１は記憶部３０に記憶されたフラグ５９を読み出し、記憶部３０に書き込まれたフレームが先発フレームであることを認識する（Ｓ２０）。
【００６０】
制御部３1は先発フレームのＣＲＣ４６に基づき、先発フレームのデータフィールド４３に格納されたデータのエラーチェック処理であるＣＲＣ処理を行う（Ｓ２１）。
【００６１】
ＣＲＣの結果、制御部３１は先発フレームのデータが正しいと判断した場合（Ｓ２２：ＹＥＳ）、先発受信済フラグをＯＮにした制御情報を記憶部３０に書き込む（Ｓ２３）。制御部３１は先発受信済フラグの値を参照することにより、受信した先発フレームのデータが正しいか否かを確認することが出来る。
【００６２】
制御部３１は先発フレームのフラグ５９を削除する（Ｓ２４）。制御部３１は記憶部３０に対し、フラグ５９を削除したフレーム２７をスイッチング処理部３２に送信するように制御信号３６を出力する。制御部３１はスイッチング処理部３２に対し、受信したフレーム２７を外部ポート３４または３５のいずれかへ出力するように制御信号２９を出力する。制御信号２９を受信したスイッチング処理部３２は、受信したフレーム２７を外部ポート３４または３５のいずれかへ出力する（Ｓ２５）。
【００６３】
一方、制御部３１は先発フレームのデータが誤っていると判断した場合、または先発フレームを受信していない場合（Ｓ２２：ＮＯ）、先発受信済フラグをＯＦＦのまま保持する（Ｓ２６）。
【００６４】
続いてスイッチング処理部３２は、内部ポート３８または３９からフレームを受信する。内部ポートからフレームを受信したスイッチング処理部３２は、制御部３１に検知信号２８を送信する。スイッチング処理部３２は記憶部３０に対し、受信したフレーム２６を記憶部３０に送信する。制御部３１は記憶部３０に記憶したフラグ５９を読み出し、記憶部３０に記憶されたフレームが後発フレームであることを認識する（Ｓ２７）。
【００６５】
制御部３１は記憶部３０に記憶された後発フレームのＣＲＣ４６に基づいてデータフィールド４３のデータのＣＲＣ処理を実行する（Ｓ２８）。
【００６６】
エラーチェックの結果、後発フレームのデータが正しい場合（Ｓ２９：ＹＥＳ）、制御部３１は後発受信済フラグがＯＮになるように、記憶部３０に記憶した制御情報を書き換える（Ｓ３０）。
【００６７】
一方、エラーチェックの結果、後発フレームのデータが誤っている場合（Ｓ２９：ＮＯ）、記憶部３０に記憶した制御情報の後発受信済フラグをＯＦＦに書き換える（Ｓ３１）。制御部３１は後発受信済フラグの値がＯＦＦである場合、後発フレームの正しいデータが受信できていないことを確認することが出来る。
【００６８】
データが正常な後発フレームを受信後、制御部３１は記憶部３０に記憶された制御情報を参照する。制御部３１は制御情報の先発受信済フラグがＯＮの場合（Ｓ３２：ＹＥＳ）、先発フレームは外部に送信済であると判断し、ステップＳ３５以降を処理する。一方、制御部３１は制御情報の先発受信済フラグがＯＦＦの場合（Ｓ３２：ＮＯ）、先発フレームは外部に未送信であると判断し、後発フレームのフラグ５９を削除する（Ｓ３３）。制御部３１はフラグ５９を削除した後発フレームをスイッチング処理部３２に送信するよう記憶部３０に制御信号３６を送信する。また制御部３１はスイッチング処理部３２に対し、記憶部３０から受信したフレーム２７を外部ポート３４または３５から外部装置へ送信するよう制御信号２９を出力する（Ｓ３４）。
【００６９】
本実施例において、制御情報における先発送信済フラグ、後発送信済フラグがいずれもＯＦＦの場合、そのフレームは外部装置へ送信されない。
【００７０】
制御部３１は記憶部３０に記憶した後発フレームのＦＨ４２を読み出す。制御部３１はＦＨ４２を参照し、全フレームを処理したか否かを確認する（Ｓ３５）。全フレームを処理済の場合（Ｓ３５：ＹＥＳ）、スイッチ回路１５はフレームの受信処理を終了する。一方、全フレームを処理していない場合（Ｓ３５：ＮＯ）、スイッチ回路１５はステップＳ２０に戻り、次の先発フレームの受信処理を開始する（Ｓ２０）。
【００７１】
以上の通り他のポートモジュールから受信したフレームを処理することにより、スイッチ回路１５はスイッチ装置１の外部に接続された外部装置に対し、受信した先発フレームまたは後発フレームのうち正しいデータを受信出来たフレームを送信することが出来る。
【００７２】
なお、図６の実施例では先発フレームの受信処理後に後発フレームを受信処理するが、先発フレームを受信前に後発フレームを受信した場合、ステップＳ２７から処理を開始しても良い。ステップＳ２７から処理を開始することにより、制御部３１は先発フレームを受信しなくても後発フレームを受信処理することが出来る。
【００７３】
図７は制御情報テーブルのテーブル図である。図７のＡはフレームを送信するポートモジュールに記憶される制御情報テーブルのテーブル図である。図７のＢはフレームを受信するポートモジュールに記憶される制御情報テーブルのテーブル図である。
【００７４】
図７のＡに示す制御情報テーブル７０は本実施例において、フレーム送信側のポートモジュール１１に実装された記憶部３０に記憶される。制御情報テーブル７０の生成および記憶部３０への記憶は制御部３１により実行される。
【００７５】
制御情報テーブル７０はＦＨ４２、先発送信済フラグ７１、後発送信済フラグ７２を有する。ＦＨ４２は外部装置から受信したフレームのＦＨ４２をコピーしたものである。
【００７６】
先発送信済フラグ７１は先発フレームが送信済であるか否かを示すフラグである。例えば先発送信済フラグ７１の値が‘１’の場合、先発フレームは送信済であると判定し、先発送信済フラグ７１の値が‘０’の場合、先発フレームは未送信であると判定することが出来る。
【００７７】
後発送信済フラグ７２は後発フレームが送信済であるか否かを示すフラグである。例えば後発送信済フラグ７２の値が‘１’の場合、後発フレームは送信済であると判定し、後発送信済フラグ７２の値が‘０’の場合、後発フレームは未送信であると判定することが出来る。
【００７８】
図７のＢに示す制御情報テーブル７５は本実施例において、フレーム送信側のポートモジュール１４に実装された記憶部３０に記憶される。制御情報テーブル７５の生成および記憶部３０への記憶は制御部３１により実行される。
【００７９】
制御情報テーブル７５はＦＨ４２、先発受信済フラグ７６、後発受信済フラグ７７を有する。ＦＨ４２は外部装置から受信したフレームのＦＨ４２をコピーしたものである。
【００８０】
先発受信済フラグ７６は先発フレームが受信済であるか否かを示すフラグである。例えば先発受信済フラグ７６の値が‘１’の場合、先発フレームは受信済であると判定し、先発受信済フラグ７６の値が‘０’の場合、先発フレームは未受信であると判定することが出来る。
【００８１】
後発受信済フラグ７７は後発フレームが受信済であるか否かを示すフラグである。例えば後発受信済フラグ７７の値が‘１’の場合、後発フレームは受信済であると判定し、後発受信済フラグ７７の値が‘０’の場合、後発フレームは未受信であると判定することが出来る。
【００８２】
以上の通りフレーム送信側、受信側のポートモジュールにそれぞれ制御情報テーブルを記憶させることにより、ポートモジュール間の異なる伝送路を異なるタイミングで伝播する先発フレームおよび後発フレームの送受信を管理することが出来る。
【符号の説明】
【００８３】
１  スイッチ装置
２、３  サーバ装置
４、５  ストレージ装置
７、８  伝送路
１０、３３  伝送路
１１、１４、８７、８８、８９、９０  ポートモジュール
１２、１３  コントローラ
１５、８２  スイッチ回路
１６、８０  ＣＰＵ
１７、８１  転送回路
３０  記憶部
３１  制御部
３２  スイッチング処理部
３４、３５、８５、８６  外部ポート
３８、３９、８３、８４  内部ポート
４２  ＦＨ
５９  フラグ
７０、７５  制御情報テーブル
７１  先発送信済フラグ
７２  後発送信済フラグ
７６  先発受信済フラグ
７７  後発受信済フラグ
【図１】
0005494028.tif 000002
【図２】
0005494028.tif 000003
【図３】
0005494028.tif 000004
【図４】
0005494028.tif 000005
【図５】
0005494028.tif 000006
【図６】
0005494028.tif 000007
【図７】
0005494028.tif 000008