[実施の形態1]
図1に、本実施の形態におけるシステム概要を示す。本実施の形態においては、例えばFCoEに準拠したスイッチであるスイッチSW1乃至SW9がツリー状に接続されており、スイッチSW1乃至SW6はドメインと呼ばれる単位で管理される。具体的には、スイッチSW1及びSW2はドメインAに属し、スイッチSW3及びSW4はドメインBに属し、スイッチSW5及びSW6はドメインCに属する。スイッチSW7にはエンドノード3が接続され、スイッチSW1にはFCoEコントローラ5が接続される。図1においては、エンドノードの数は1であるが、数に限定は無い。
ドメインAとドメインBとの間における複数の物理リンクはMLAG(Multi-chassis Link-Aggregation Group)によって1つの論理リンクとして取り扱われる。ドメインAとドメインCとの間における複数の物理リンクもMLAGによって1つの論理リンクとして取り扱われる。ドメインBとスイッチSW7との間における複数の物理リンクもMLAGによって1つの論理リンクとして取り扱われる。なお、ドメイン間の接続及びドメインと1スイッチとの間の接続を表す論理図は図2のようになる。図2に示すように、ドメイン間の接続及びドメインと1スイッチとの間の接続において論理的なループは禁止される。
FCoEコントローラ5は、FCFのコントロール機能を有する装置(例えばサーバ)である。但し、FCoEコントローラ5は、FCFのデータ中継機能を有しない。
コントロール機能は、ログインを要求するパケットであるFLOGI(Fabric Login)パケットをエンドノードから受け付け、ログインが成功した場合にFCID(Fibre Channel IDentifier)及びFPMA(Fabric Provided MAC Address)を含むFLOGI ACC(ACCept)パケットを出力し、ログインが失敗した場合にFLOGI RJT(ReJecT)パケットを出力する機能を含む。この機能においては、FLOGIによって確立された仮想リンク上でのログインの際に発行されるFDISC(Fabric Discovery)パケットもFLOGIパケットと同様に取り扱われる。また、コントロール機能は、ログアウトを要求するパケットであるLOGO(LOGOut)パケットをエンドノードから受け付けた場合又は仮想リンクの維持についてのタイムアウトが発生した場合に、ログイン状態を解除する機能を含む。後者の場合には、CVL(Clear Virtual Link)コマンドが送信され仮想リンクが削除される。さらに、コントロール機能はネームサーバ機能を含むが、本実施の形態には直接関係しないので説明を省略する。
データ中継機能は、FCoEのパケットを宛先FCIDを有する装置へ中継する機能と、パケットを中継する際にイーサネットヘッダを変換する機能とを有する。なお、エンドノードから送出されるパケットの宛先MAC(Media Access Control)アドレスはFCFのMACアドレスであり、送信元MACアドレスはエンドノードに割り当てられたMACアドレスである。後者の機能においては、宛先MACアドレスは最終的な宛先のエンドノードに割り当てられたMACアドレスに変換され、送信元MACアドレスはFCFのMACアドレスに変換される。 なお、エンドノード3にはMACアドレスMACS0が割り当てられ、FCoEコントローラ5にはMACアドレスMACFCFが割り当てられているとする。
図3に、スイッチSW1乃至SW6の機能ブロック図を示す。スイッチSW1乃至SW6は、外部の装置と接続され且つ外部の装置からパケットを受信する受信ポート1乃至nと、外部の装置と接続され且つ外部の装置に対してパケットを送信する送信ポート1乃至nと、スイッチLSI(Large Scale Integration)151と、例えばプロセッサとプログラムとの組み合わせにて実現されるプロトコル処理部152と、プロトコル処理部152より管理されるFLOGIテーブル153とを有する。プロトコル処理部152についても、専用LSIにて実装される場合もある。なお、スイッチSW7乃至SW9は一般的なEthernetスイッチであってもよい。
ここで、プロトコル処理部152について説明する。図4に、プロトコル処理部152の機能ブロック図を示す。プロトコル処理部152は、初期設定部1521と、第1FIP(FCoE Initialization Protocol)処理部1522と、中継設定部1523と、第2FIP処理部1524と、削除処理部1525とを有する。
初期設定部1521は、スイッチの起動時に初期設定処理を実行する。第1FIP処理部1522は、FLOGIテーブル153に格納されたデータに基づき、FLOGIパケット、FLOGI ACCパケット、FLOGI RJTパケット、FDISCパケット、FDISC ACCパケット、及びFDISC RJTパケットについての処理を実行する。中継設定部1523は、FCoE中継テーブル15152にエントリを追加する。第2FIP処理部1524は、FLOGIテーブル153に格納されたデータに基づき、LOGOパケット、LOGO ACCパケット、LOGO RJTパケット、及びCVLパケットについての処理を実行する。削除処理部1525は、FCoE中継テーブル15152に格納されたエントリを削除する。
図5に、FLOGIテーブル153の一例を示す。図5の例では、FLOGIパケット及びFDISCパケットの送信元MACアドレスと送信元WWPN(World Wide Port Name)とを含む情報と、ポートの識別子と、ログインしたポートに割り当てられるFPMAと、ログインしたポートに割り当てられるFCIDとが格納される。
FCIDは、FCにおいてルーティングに用いられる。FCIDは、3オクテットで指定され、例えば16進数で0xXXYYZZであれば、XXはDomain IDを表し、YYは、Area IDを表し、ZZはPort IDを表す。FCにおいてDomain IDとは、複数のFCスイッチ(FC−SW)でSANを形成する場合に各スイッチに個別に与えられるものである。Domain IDは、8ビットであり、ネットワークにおいて最大239個のスイッチを接続することができる。
図3の説明に戻り、スイッチLSI151は、受信ポート1乃至n及び内部ポートAと接続されるマルチプレクサ1511と、パケットバッファ1512と、パケット処理部1515と、パケット更新部1513と、送信ポート1乃至n及び内部ポートBと接続されるデマルチプレクサ1514とを有する。
マルチプレクサ1511が受信したパケット全体については、パケットバッファ1512に格納される。また、マルチプレクサ1511が受信したパケットのヘッダ情報及び制御情報は、パケット処理部1515に出力される。
パケット更新部1513は、パケット処理部1515による指示に応じてパケットのヘッダを更新する処理(修正又は変換する処理とも呼ぶ)を行う。また、デマルチプレクサ1514は、パケット処理部1515によるポート選択指示に応じて、選択された送信ポートからパケットを出力する。
パケット処理部1515は、本実施の形態に関係する構成要素として、FCoE中継処理部15151と、FCoE中継テーブル15152と、Ethernet中継処理部15153と、パケット識別部15154とを有する。Ethernet中継処理部15153は、Ethernetにおけるパケットの中継についての処理をEthernet中継テーブルに基づき実行し、パケット識別部15154は、スイッチが受信したパケットの識別についての処理をパケット識別テーブルに基づき実行する。但し、Ethernet中継処理部15153及びパケット識別部15154による処理は本実施の形態の主要部ではないので、説明を省略する。
プロトコル処理部152は、内部ポートAと内部ポートBとでスイッチLSI151と接続されている。このプロトコル処理部152は、コネクションの確立やプロトコルの監視、スイッチLSI151への指示などのための処理を行う。この処理については、本実施の形態と直接関係ないのでこれ以上述べない。
図6に、FCoE中継テーブル15152の一例を示す。FCoE中継テーブル15152には、Matchと示される条件部分と、Actionと示され且つ条件が満たされた場合に実行すべき処理とが規定されている。
より具体的には、Match欄には、受信したパケットにおける宛先エンドノードの宛先MACアドレス(DA:Destination MAC address)と照合すべきMACアドレスが設定されるDA欄と、受信したパケットにおける宛先エンドノードのFCIDと照合すべきFCID(D−ID(FC Destination ID))が設定されるD−ID欄と、受信したパケットにおけるFCのエクスチェンジID(OX−ID(FC Exchange ID)。FCフレームのヘッダに含まれる通信管理上のID)と照合すべきOX−IDが設定されるOX−ID欄とを含む。
図6の例で1行目は、受信したパケットにおいて、DAがFCFのMACアドレスを表しており且つD−IDがエンドノードS1のFCIDを表しているという条件を表している。なお、「*」は、ワイルドカードを表し、いずれの値であっても合致していると判断される。なお、N/Aは、適用無しを表す。また、図6の例で2行目は、D−IDがエンドノードS1のFCIDを表している。
また、Action欄には、受信したパケットのヘッダの修正処理を規定するModify欄と、パケットの転送先ポート番号を表すFwd欄とを含む。図6の1行目では、DAに対して、宛先エンドノードS1のMACアドレスを設定し、且つ送信元のMACアドレスであるSA(Source Address)に対して、FCFのMACアドレスを設定する処理が規定され、受信したパケットを送信ポート1に出力するものと規定されている。図6の2行目では、ヘッダの修正は不要で、受信したパケットを送信ポート1に出力するものと規定されている。
このようなFCoE中継テーブル15152においては、上の行ほど優先度が高く、上から下にMatch欄に規定された条件を照合して行き、最初に合致した行に規定された処理を実行するものとする。但し、FCoE中継テーブル15152に優先度のカラムを設け、優先度のカラムに格納された値に従って照合を行ってもよい。
なお、本実施の形態では、当初、宛先MACアドレスとしてFCFのMACアドレスが設定されているが、パケットを中継するスイッチのうちいずれかのスイッチで、宛先MACアドレスに宛先エンドノードのMACアドレスを設定すると共に送信元MACアドレスにFCFのMACアドレスを設定するというヘッダの修正が行われる。
次に、図7乃至図19を用いて、第1の実施の形態において行われる処理の概要を説明する。
例えば、図7に示すように、エンドノード3がFLOGIパケットを出力したとする。エンドノード3からFLOGIパケットを受信したスイッチSW7は、FLOGIパケットをスイッチSW3に中継する。スイッチSW7からFLOGIパケットを受信したスイッチSW3は、FLOGIパケットを受信した論理リンクの識別子等をFLOGIテーブル153に格納し、FLOGIパケットをスイッチSW1に中継する。スイッチSW3からFLOGIパケットを受信したスイッチSW1は、FLOGIパケットを受信した論理リンクの識別子等をFLOGIテーブル153に格納し、FLOGIパケットをFCoEコントローラ5に中継する。
そして、図8に示すように、FCoEコントローラ5は、FLOGI処理(具体的には、ログインを許可するか否かの判断)を実行し、ログインを許可できる場合はエンドノード3にFCIDを割り当てる。そして、FCoEコントローラ5は、FLOGI ACCパケットをスイッチSW1に送信する。
そして、図9に示すように、FCoEコントローラ5からFLOGI ACCパケットを受信したスイッチSW1は、エンドノード3を宛先とするパケットの中継の設定をスイッチSW1に対して行うとともに、同じドメイン(ドメインA)に属するスイッチSW2に、中継設定要求を送信する。中継設定要求は、エンドノード3に割り当てられるFCID、FLOGIパケットを受信した論理リンクの識別子、及びエンドノード3のMACアドレス等を含む。中継設定要求を受信したスイッチSW2は、中継設定要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を行い、応答をスイッチSW1に送信する。図9において、太線の矢印は、エンドノード3についての中継設定が行われたことを表す。
そして、図10に示すように、スイッチSW2から応答を受信したスイッチSW1は、FLOGI ACCパケットをスイッチSW3に送信する。
そして、図11に示すように、スイッチSW1からFLOGI ACCパケットを受信したスイッチSW3は、エンドノード3を宛先とするパケットの中継の設定を行うとともに、同じドメイン(ドメインB)に属するスイッチSW4に、中継設定要求を送信する。中継設定要求を受信したスイッチSW4は、中継設定要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を行い、応答をスイッチSW3に送信する。この時点で、スイッチSW1、スイッチSW2、スイッチSW3、及びスイッチSW4について中継の設定が完了する。
そして、図12に示すように、スイッチSW4から応答を受信したスイッチSW3は、FLOGI ACCパケットをスイッチSW7に送信する。最終的に、FLOGI ACCパケットはエンドノード3に到達する。
図13に、システムにおけるFCoE中継テーブル15152の初期状態を示す。ここでは、説明に関係するスイッチSW1、スイッチSW2、スイッチSW3、スイッチSW4、スイッチSW5、及びスイッチSW6のFCoE中継テーブル15152の初期状態が示されている。そして、図7乃至図12を用いて説明したようにFLOGIパケット及びFLOGI ACCパケットが中継されると、システムにおけるFCoE中継テーブル15152の状態は図14に示すようになる。図14においては、スイッチSW1、スイッチSW2、スイッチSW3、及びスイッチSW4のFCoE中継テーブル15152に、パケットをエンドノード3に中継するためのエントリが追加されている。なお、上で述べたように、エンドノード3にはMACアドレスMACS0が割り当てられ、FCoEコントローラ5にはMAC(Media Access Control)アドレスMACFCFが割り当てられているとする。
例えば、図15に示すように、スイッチSW8がエンドノード3を宛先とするパケットを送信したとする。スイッチSW8からパケットを受信したスイッチSW4は、パケットのヘッダと、FCoE中継テーブル15152においてMatch欄に規定されている条件とを、優先度順に照合し、最初に合致する条件(ここでは、1番目の行の条件)とを特定する。そして、スイッチSW4は、FCoE中継テーブル15152のAction欄に規定されている情報に従い、パケットのヘッダを修正(具体的には、送信元MACアドレス及び宛先MACアドレスを変換)して出力する。スイッチSW7は、スイッチSW4により送信されたパケットを受信し、エンドノード3に中継する。
また、図16に示すように、スイッチSW9がエンドノード3を宛先とするパケットを送信したとする。スイッチSW9からパケットを受信したスイッチSW6は、パケットのヘッダと、FCoE中継テーブル15152においてMatch欄に規定されている条件とを、優先度順に照合し、最初に合致する条件(ここでは、2番目の行の条件とする)とを特定する。そして、スイッチSW6は、FCoE中継テーブル15152のAction欄に規定されている情報に従いパケットを出力する。スイッチSW6からパケットを受信したスイッチSW2は、パケットのヘッダと、FCoE中継テーブル15152においてMatch欄に規定されている条件とを、優先度順に照合し、最初に合致する条件(ここでは、1番目の行の条件とする)とを特定する。そして、スイッチSW2は、FCoE中継テーブル15152のAction欄に規定されている情報に従い、パケットのヘッダを修正(具体的には、送信元MACアドレス及び宛先MACアドレスを変換)して出力する。スイッチSW2からパケットを受信したスイッチSW3は、パケットのヘッダと、FCoE中継テーブル15152においてMatch欄に規定されている条件とを、優先度順に照合し、最初に合致する条件(ここでは、1番目の行の条件)とを特定する。そして、スイッチSW3は、FCoE中継テーブル15152のAction欄に規定されている情報に従い、パケットを出力する。スイッチSW7は、スイッチSW3により送信されたパケットを受信し、エンドノード3に中継する。
また、図17に示すように、エンドノード3がLOGOパケットを出力したとする。エンドノード3からLOGOパケットを受信したスイッチSW7は、LOGOパケットをスイッチSW3に中継する。スイッチSW7からLOGOパケットを受信したスイッチSW3は、LOGOパケットをスイッチSW1に中継する。スイッチSW3からLOGOパケットを受信したスイッチSW1は、LOGOパケットをFCoEコントローラ5に中継する。
そして、FCoEコントローラ5は、LOGO処理(具体的には、ログアウトを許可するか否かの判断)を実行する。ログアウトを許可できる場合、図18に示すように、FCoEコントローラ5はLOGO ACCパケットをスイッチSW1に送信する。FCoEコントローラ5からLOGO ACCパケットを受信したスイッチSW1は、エンドノード3を宛先とするパケットの中継の設定を削除するとともに、同じドメイン(ドメインA)に属するスイッチSW2に、削除要求を送信する。削除要求は、エンドノード3に割り当てられるFCID等を含む。削除要求を受信したスイッチSW2は、削除要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を削除し、応答をスイッチSW1に送信する。そして、スイッチSW2から応答を受信したスイッチSW1は、LOGO ACCパケットをスイッチSW3に送信する。
そして、スイッチSW1からLOGO ACCパケットを受信したスイッチSW3は、エンドノード3を宛先とするパケットの中継の設定を削除するとともに、同じドメイン(ドメインB)に属するスイッチSW4に、削除要求を送信する。削除要求を受信したスイッチSW4は、削除要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を削除し、応答をスイッチSW3に送信する。この時点で、スイッチSW1、スイッチSW2、スイッチSW3、及びスイッチSW4について中継の設定が削除される。そして、スイッチSW4から応答を受信したスイッチSW3は、LOGO ACCパケットをスイッチSW7に送信し、スイッチSW3からLOGO ACCパケットを受信したスイッチSW7は、LOGO ACCパケットをエンドノード3に送信する。
なお、FCoEコントローラ5がCVLパケットを出力する場合に行われる処理は、図19に示すように、LOGO ACCパケットの場合と同様である。
次に、図20乃至図31を用いて、第1の実施の形態において行われる処理を詳細に説明する。まず、図20を用いて、スイッチが起動時に実行する初期設定処理について説明する。
スイッチにおける初期設定部1521は、本スイッチ(本処理を実行するスイッチ。以下同様とする。)に接続された上位ドメインのスイッチが有るか判断する(図20:ステップS1)。本実施の形態において「上位」とは、FCoEコントローラ5により近いことを表す。図2の例であれば、ドメインB及びドメインCの上位ドメインはドメインAである。
上位ドメインのスイッチが無い場合(ステップS1:Noルート)、処理を終了する。一方、上位ドメインのスイッチが有る場合(ステップS1:Yesルート)、初期設定部1521は、上位ドメインに接続する論理リンクのうち未処理の論理リンクを1つ特定する(ステップS3)。
初期設定部1521は、ステップS3において特定された論理リンクに属するポートの集合を特定し、集合Kに設定する(ステップS5)。
初期設定部1521は、2d≧(集合Kの要素数)を満たす最小の整数dを算出する(ステップS7)。dは、OX−ID(本実施の形態においては2進数で表される)の桁数を表す変数である。
初期設定部1521は、ポートの数を計数するための変数であるi(本実施の形態においては2進数で表される)について、i=0と設定する(ステップS9)。
初期設定部1521は、FCoE中継テーブル15152において、以下の中継設定を行う(ステップS13)。具体的には、優先度「0」(Pr0)として、受信パケットのD−IDが*であり且つOX−IDの最下位桁(0桁目)からd−1桁目がiの最下位桁(0桁目)からd−1桁目と一致すれば(D−ID=*,OX−ID[d−1:0]=i[d−1:0])、集合Kにおけるi番目のポートに受信パケットを出力するという処理を中継情報として設定する。Pr<優先度>:<比較条件>→処理というフォーマットで記載すれば、Pr0:<D−ID=*,OX−ID[d−1:0]=i[d−1:0]>→Forward(K[i])と表される。但し、d=0である場合、OX−IDとiの照合条件は設定しない。
初期設定部1521は、i=(集合Kの要素数)−1が満たされるか判断する(ステップS15)。i=(集合Kの要素数)−1が満たされない場合(ステップS15:Noルート)、初期設定部1521はiを1インクリメントし(ステップS16)、ステップS13の処理に戻る。
一方、i=(集合Kの要素数)−1が満たされる場合(ステップS15:Yesルート)、初期設定部1521は、未処理の論理リンクが有るか判断する(ステップS17)。未処理の論理リンクが有る場合(ステップS17:Yesルート)、ステップS3の処理に戻る。未処理の論理リンクが無い場合(ステップS17:Noルート)、処理を終了する。
以上のような初期設定処理はシステムにおける各スイッチにおいて実行される。これにより、システムにおけるFCoE中継テーブル15152の状態は図13に示すようになる。なお、OX−IDに応じてポートが使い分けられるので、トラフィックが分散されるようになる。
次に、図21乃至図23を用いて、FLOGIパケット及びFDISCパケットを受信したスイッチが実行する処理について説明する。なお、FDISCパケットを受信したスイッチが実行する処理はFLOGIパケットを受信したスイッチが実行する処理と同様であるので、ここではFLOGIパケットを例にして説明する。
まず、スイッチが受信したFLOGIパケットは、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第1FIP処理部1522は、受信したFLOGIパケットに含まれるデータ(具体的には、送信元MACアドレス及び送信元WWPN)及び受信ポートの識別子をFLOGIテーブル153に格納する(ステップS21)。本処理の時点においては、FPMA及びFCIDは格納されない。
第1FIP処理部1522は、本スイッチはFCoEコントローラの機能を有する(すなわち、FCoEコントローラ5である)か判断する(ステップS23)。
本スイッチはFCoEコントローラの機能を有しない場合(ステップS23:Noルート)、第1FIP処理部1522は、FLOGIパケットを、FCoEコントローラ5宛のパケットを中継するためのポートに出力する(ステップS25)。具体的には、第1FIP処理部1522は、デマルチプレクサ1514にポートの選択指示を出力する。そして処理を終了する。
一方、本スイッチはFCoEコントローラの機能を有する場合(ステップS23:Yesルート)、第1FIP処理部1522は、FLOGIパケットに基づくログイン処理を実行する(ステップS27)。ログイン処理は、FLOGIパケットの送信元に対してFCIDを割り当てられるか判断する処理である。
第1FIP処理部1522は、ログインが成功した(すなわち、FLOGIパケットの送信元に対してFCIDを割り当てられる)か判断する(ステップS29)。ログインが成功しなかった場合(ステップS29:Noルート)、第1FIP処理部1522は、FLOGI RJTパケットを生成する(ステップS33)。一方、ログインが成功した場合(ステップS29:Yesルート)、第1FIP処理部1522は、FLOGI ACCパケットを生成する(ステップS31)。そして処理は端子Aを介して図22のステップS35に移行する。
図22の説明に移行し、第1FIP処理部1522は、ステップS31において生成されたFLOGI ACCパケット又はステップS33において生成されたFLOGI RJTパケットに対応するエントリを、FLOGIテーブル153から特定する(ステップS35)。ステップS35において特定されるエントリには、FLOGIパケットの送信元MACアドレス及びFLOGIパケットの受信ポートの識別子が含まれる。
第1FIP処理部1522は、生成したパケットはFLOGI ACCパケットであるか判断する(ステップS37)。ステップS31を経由した場合には、生成したパケットはFLOGI ACCパケットである。生成したパケットはFLOGI ACCパケットではない場合(ステップS37:Noルート)、FLOGI RJTパケットを生成したので、第1FIP処理部1522は、ステップS35において特定されたエントリをFLOGIテーブル153から削除する(ステップS41)。そしてステップS49の処理に移行する。
一方、生成したパケットはFLOGI ACCパケットである場合(ステップS37:Yesルート)、第1FIP処理部1522は、宛先MACアドレスを表す変数Mに対して、FPMAを設定し、受信ポートの識別子を表す変数Pに対して、FLOGIパケットの受信ポートの識別子を設定する(ステップS39)。
第1FIP処理部1522は、以下の設定を行う(ステップS43)。具体的には、FCIDを表す変数IDに対してFLOGI ACCパケットに含まれるFCIDを設定し、送信元MACアドレスを表す変数FMに対して、FLOGI ACCパケットの送信元MACアドレスを設定し、使用する論理リンクを表す変数Lに対して、ポートPが属する論理リンクの識別子を設定する。
第1FIP処理部1522は、変数ID、変数M、変数FM、及び変数Lを中継設定部1523に出力する。これに応じ、中継設定部1523は、変数ID、変数M、変数FM、及び変数Lを引数として中継設定処理を実行する(ステップS45)。中継設定処理については、図23を用いて説明する。
まず、中継設定部1523は、論理リンクLに属するポートの集合を特定し、集合Kに設定する(図23:ステップS51)。中継設定部1523は、2d≧(集合Kの要素数)を満たす最小の整数dを算出する(ステップS53)。dは、OX−ID(本実施の形態においては2進数で表される)の桁数を表す変数である。
中継設定部1523は、ポートの数を計数するための変数であるi(本実施の形態においては2進数で表される)について、i=0と設定する(ステップS55)。
中継設定部1523は、FCoE中継テーブル15152において、以下の中継設定を行う(ステップS59)。具体的には、優先度「1」(Pr1)として、受信パケットのD−IDがIDであり且つOX−IDの最下位桁(0桁目)からd−1桁目がiの最下位桁(0桁目)からd−1桁目と一致すれば(D−ID=ID,OX−ID[d−1:0]=i[d−1:0])、受信パケットのDAをMに修正し、SAをFMに修正し、集合Kにおけるi番目のポートに受信パケットを出力するという処理を中継情報として設定する(ステップS59)。Pr<優先度>:<比較条件>→処理というフォーマットで記載すれば、Pr1:<D−ID=ID,OX−ID[d−1:0]=i[d−1:0]>→Modify(DA←M,SA←FM),Forward(K[i])と表される。
中継設定部1523は、i=(集合Kの要素数)−1が満たされるか判断する(ステップS61)。i=(集合Kの要素数)−1が満たされない場合(ステップS61:Noルート)、中継設定部1523はiを1インクリメントし(ステップS60)、ステップS59の処理に戻る。
一方、i=(集合Kの要素数)−1が満たされる場合(ステップS61:Yesルート)、呼び出し元の処理に戻る。
以上のような処理を実行すれば、FLOGIパケットの送信元ノードを宛先とするパケットを中継するためのエントリを、FCoE中継テーブル15152に保存できるようになる。
図22の説明に戻り、第1FIP処理部1522は、本スイッチと同じドメインに属する他のスイッチに中継設定要求を送信し、送信先のスイッチからの応答を待つ(ステップS47)。中継設定要求は、少なくとも変数ID、変数M、変数FM、及び変数Lを含む。中継設定要求を受信したスイッチの処理については後で説明する。
応答を受信すると、第1FIP処理部1522は、ステップS31において生成したFLOGI ACCパケット又はステップS33において生成したFLOGI RJTパケットを、ポートPに出力するようにスイッチLSI151に指示する(ステップS49)。そして処理を終了する。
以上のような処理を実行すれば、中継の設定を各スイッチにおいて実行できるようになるので、ネットワークにおける特定の装置に負荷が集中することを防止できるようになる。
ここで、図24を用いて、中継設定要求を受信したスイッチが実行する処理について説明する。
まず、スイッチが受信した中継設定要求は、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第1FIP処理部1522は、論理リンクLに属するポートを本スイッチが有するか判断する(図24:ステップS91)。論理リンクLの識別子は、中継設定要求に含まれる。
論理リンクLに属するポートを有しない場合(ステップS91:Noルート)、第1FIP処理部1522は、使用する論理リンクを表す変数ILに対して、中継設定要求の受信ポートが属する論理リンクの識別子を設定する(ステップS93)。そして、第1FIP処理部1522は、変数ID、変数M、変数FM、及び変数ILを中継設定部1523に出力する。これに応じ、中継設定部1523は、変数ID、変数M、変数FM、及び変数ILを引数として中継設定処理を実行する(ステップS95)。中継設定処理については、図23を用いて説明したとおりであるので、ここでは説明を省略する。そしてステップS99の処理に移行する。
一方、論理リンクLに属するポートを有する場合(ステップS91:Yesルート)、第1FIP処理部1522は、変数ID、変数M、変数FM、及び変数Lを中継設定部1523に出力する。これに応じ、中継設定部1523は、変数ID、変数M、変数FM、及び変数Lを引数として中継設定処理を実行する(ステップS97)。中継設定処理については、図23を用いて説明したとおりであるので、ここでは説明を省略する。
第1FIP処理部1522は、中継設定が完了したことを表す応答を生成し、中継設定要求の送信元に送信する(ステップS99)。そして処理を終了する。
以上のような処理を実行すれば、FLOGI ACCパケットを生成したスイッチと同じドメインに属するスイッチにおいても、設定に基づき適切に通信を行えるようになる。
なお、FLOGI ACCパケット又はFLOGI RJTパケットを受信したスイッチが実行する処理は、図25に示すようになる。図25に示すとおり、この処理はステップS35乃至ステップS49の処理と同じである。従って、ここでは説明を省略する。
次に、図26乃至図28を用いて、LOGOパケットを受信したスイッチが実行する処理について説明する。
まず、スイッチが受信したLOGOパケットは、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第2FIP処理部1524は、本スイッチはFCoEコントローラの機能を有する(すなわち、FCoEコントローラ5である)か判断する(図26:ステップS101)。
本スイッチはFCoEコントローラの機能を有しない場合(ステップS101:Noルート)、第2FIP処理部1524は、LOGOパケットを、FCoEコントローラ5宛のパケットを中継するためのポートに出力する(ステップS103)。そして処理を終了する。
一方、本スイッチはFCoEコントローラの機能を有する場合(ステップS101:Yesルート)、第2FIP処理部1524は、LOGOパケットに基づくログアウト処理を実行する(ステップS105)。ログアウト処理は、LOGOパケットの送信元に対するFCIDの割り当てを解除できるか判断する処理である。
第2FIP処理部1524は、ログアウトが成功した(すなわち、LOGOパケットの送信元に対するFCIDの割り当てを解除できた)か判断する(ステップS107)。ログアウトが成功しなかった場合(ステップS107:Noルート)、第2FIP処理部1524は、LOGO RJTパケットを生成し、LOGO RJTパケットを送信する(ステップS109)。そして処理を終了する。LOGO RJTパケットは通常のパケットと同様に中継されるので、ここでは詳細な説明を省略する。
一方、ログアウトが成功した場合(ステップS107:Yesルート)、第2FIP処理部1524は、LOGO ACCパケットを生成する(ステップS111)。そして処理は端子Bを介して図27のステップS113に移行する。
図27の説明に移行し、第2FIP処理部1524は、ステップS111において生成されたLOGO ACCパケットに含まれるMACアドレスに対応するFCIDをFLOGIテーブル153から特定する。そして、第2FIP処理部1524は、FCIDを表す変数IDSに対して、特定されたFCIDを設定する(ステップS113)。
第2FIP処理部1524は、変数IDSを削除処理部1525に出力する。これに応じ、削除処理部1525は、変数IDSを引数として設定削除処理を実行する(ステップS115)。設定削除処理については、図28を用いて説明する。
まず、削除処理部1525は、変数IDSに含まれるFCIDのうち未処理のFCIDを1つ特定する(図28:ステップS151)。後で説明するように、CVLパケットを受信した場合にはFCIDが複数の場合があるので、ステップS151の処理が実行される。
削除処理部1525は、FCoE中継テーブル15152から、D−IDがステップS151において特定されたFCIDであるエントリを削除する(ステップS153)。
削除処理部1525は、未処理のFCIDが有るか判断する(ステップS155)。未処理のFCIDが有る場合(ステップS155:Yesルート)、次のFCIDについて処理するため、ステップS151の処理に戻る。一方、未処理のFCIDが無い場合(ステップS155:Noルート)、呼び出し元の処理に戻る。
以上のような処理を実行すれば、ログアウトしたノードに関する設定がFCoE中継テーブル15152に残ったままになることを防止できる。なお、エンドノード3等の接続切断によって発生する暗黙のログアウトが原因で設定が残ったままになる場合には、タイムアウト監視を利用すれば、設定が残らないようにすることができる
図27の説明に戻り、第2FIP処理部1524は、本スイッチと同じドメインに属する他のスイッチに削除要求を送信し、送信先のスイッチからの応答を待つ(ステップS117)。削除要求は、少なくとも変数IDSを含む。削除要求を受信したスイッチの処理については後で説明する。
応答を受信すると、第2FIP処理部1524は、ステップS111において生成したLOGO ACCパケットに対応するエントリをFLOGIテーブル153から削除する(ステップS119)。
第2FIP処理部1524は、LOGO ACCパケットを、LOGO ACCパケットに含まれる宛先MACアドレスに対応するポートに出力する(ステップS121)。そして処理を終了する。
以上のような処理を実行すれば、設定の削除を各スイッチにおいて実行できるようになるので、ネットワークにおける特定の装置(例えばFCoEコントローラ5)に負荷が集中することを防止できるようになる。
次に、図29を用いて、削除要求を受信したスイッチが実行する処理について説明する。
まず、スイッチが受信した削除要求は、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第2FIP処理部1524は、削除要求に含まれる変数IDSを削除処理部1525に出力する。これに応じ、削除処理部1525は、変数IDSを引数として設定削除処理を実行する(図29:ステップS141)。設定削除処理については図28を用いて説明したとおりであるので、説明を省略する。
削除処理部1525は、削除が完了したことを表す応答を生成し、削除要求の送信元に送信する(ステップS143)。そして処理を終了する。
以上のような処理を実行すれば、LOGO ACCパケットを生成したスイッチと同じドメインに属するスイッチにおいても、設定を削除できるようになる。
なお、LOGO ACCパケット又はCVLパケットを受信したスイッチが実行する処理は、図30に示すようになる。図30に示すとおり、この処理はステップS113乃至ステップS121の処理と同様であるので、ここでは説明を省略する。但し、上で述べたように、CVLパケットに含まれるFCIDの数は1に限られず、0である場合もあるし、複数である場合もある。
次に、図31を用いて、パケット処理部1515におけるFCoE中継処理部15151が実行する処理について説明する。
まず、FCoE中継処理部15151は、受信パケットのヘッダ(MACフレーム部分のヘッダ及びFCフレーム部分のヘッダ)と、FCoE中継テーブル15152においてMatch欄に規定されている条件とを、優先度順に照合して行き、最初に合致する条件の行を特定する(図31:ステップS401)。
そして、FCoE中継処理部15151は、合致する条件に対応するAction欄に修正処理(Modify)が規定されていれば、規定どおりの修正をパケット更新部1513に指示する(ステップS403)。パケット更新部1513は、指示に従って、パケットバッファ1512に格納されているパケットに対して上で述べたようなヘッダの修正処理を行った後、修正後のパケットのデータをデマルチプレクサ1514に出力する。なお、指示がなければ、パケット更新部1513は、パケットバッファ1512に格納されているパケットに対して何もせずにデマルチプレクサ1514に出力する。
さらに、FCoE中継処理部15151は、合致する条件に対応するAction欄において指定された送信ポートのポート選択指示を、デマルチプレクサ1514に出力する(ステップS405)。そして処理を終了する。これによって、デマルチプレクサ1514は、指定された送信ポートに対して、パケット更新部1513からのパケットを出力する。
このような処理を実行すれば、受信したパケットを宛先まで適切に中継することができるようになる。
以上のように、本実施の形態においては、特定の装置(例えばFCoEコントローラ5)が各スイッチに対する中継の設定を行うのではなく、中継の設定を各スイッチにおいて実行しているので、設定処理の負荷がその装置に集中しない。
また、各スイッチは、そのスイッチが属するドメイン以外のドメインについての情報(例えば、他のドメインがそのドメインの外部とどのように接続されているかを示す情報)を保持しない。各スイッチは、そのスイッチが属するドメインがそのドメインの外部又は他のドメインとどのように接続されているかを示す情報を保持すればよい。従って、従来のLAG(Link Aggregation Group)と同等の管理を行えばよいので、リソースが少なく済み、また、処理がシンプルになる。
また、ツリーの末端からツリーの根への方向については、個別のFCIDについて中継設定を行わないので、FCoE中継テーブル15152による記憶領域の消費を抑制できるようになる。
また、パケットが無駄な経路を通らずに宛先に到着することができるような中継を行うことができる。すなわち、ネットワークにおけるパケットの中継が効率的に行われるようになる。
[実施の形態2]
第1の実施の形態においては、FLOGIパケットの経路とFLOGI ACCパケットの経路とが同じであることが前提となっているが、場合によってはFLOGIパケットの経路とFLOGI ACCパケットの経路とが異なることがある。例えば、図32に示すように、ドメインBにおいてFLOGIパケットを受信したスイッチがスイッチSW3であり、ドメインBにおいてFLOGI ACCパケットを受信したスイッチがスイッチSW4であるような場合もある。そこで第2の実施の形態においては、FLOGIパケットの経路とFLOGI ACCパケットの経路とが異なる場合においても問題なく動作するための方法について説明する。
第2の実施の形態におけるシステムは第1の実施の形態におけるシステムと基本的には同じであるが、スイッチにおけるFLOGIテーブル153の内容が異なる。図33に、第2の実施の形態におけるFLOGIテーブル153の一例を示す。図33の例では、FLOGIパケット及びFDISCパケットの送信元MACアドレスと送信元WWPNとを含む情報と、FLOGIパケット及びFDISCパケットを受信したスイッチの識別子及びポートの識別子と、ログインしたポートに割り当てられるFPMAと、ログインしたポートに割り当てられるFCIDとが格納される。
次に、図34乃至図38を用いて、第2の実施の形態において行われる処理の概要を説明する。
例えば、図34に示すように、エンドノード3から出力されたFLOGIパケットを、スイッチSW7がスイッチSW4に中継したとする。すると、スイッチSW4は、ドメインBに属するスイッチのうちドメインマスタであるスイッチ(ここでは、スイッチSW3)に、FLOGIパケットに含まれる情報、FLOGIパケットを受信したポートの識別子、及びFLOGIパケットを受信したスイッチ(ここでは、スイッチSW4)の識別子等を送信する。ドメインマスタであるスイッチSW3は、受信した情報をFLOGIテーブル153に格納する。
また、図35に示すように、FCoEコントローラ5から出力されたFLOGI ACCパケットを、スイッチSW1がスイッチSW4に中継したとする。すると、スイッチSW4は、ドメインBに属するスイッチのうちドメインマスタであるスイッチ(ここでは、スイッチSW3)に、FLOGI ACCパケットを送信する。
そして、図36に示すように、ドメインマスタであるスイッチSW3は、受信したFLOGI ACCパケットに基づき、第1の実施の形態と同様の処理を実行する。すなわち、スイッチSW3は、エンドノード3を宛先とするパケットの中継の設定を行い、同じドメイン(ドメインB)に属するスイッチSW4に中継設定要求を送信する。これに応じ、スイッチSW4は、中継設定要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を行い、応答をスイッチSW3に送信する。
また、図37に示すように、FCoEコントローラ5から出力されたLOGO ACCパケットを、スイッチSW1がスイッチSW4に中継したとする。すると、スイッチSW4は、ドメインBに属するスイッチのうちドメインマスタであるスイッチ(ここでは、スイッチSW3)に、LOGO ACCパケットを送信する。
そして、図38に示すように、ドメインマスタであるスイッチSW3は、受信したLOGO ACCパケットに基づき、第1の実施の形態と同様の処理を実行する。すなわち、スイッチSW3は、エンドノード3を宛先とするパケットの中継の設定を削除し、同じドメイン(ドメインB)に属するスイッチSW4に削除要求を送信する。これに応じ、スイッチSW4は、削除要求に含まれる情報に基づき、エンドノード3を宛先とするパケットの中継の設定を削除し、応答をスイッチSW3に送信する。
なお、FCoEコントローラ5がCVLパケットを出力した場合の動作は、LOGO ACCパケットの場合と同じである。
次に、図39乃至図45を用いて、第2の実施の形態において行われる処理を詳細に説明する。なお、スイッチが起動時に実行する初期設定処理は第1の実施の形態における初期設定処理と同じであるので、まず、FLOGIパケット及びFDISCパケットを受信したスイッチが実行する処理について説明する。なお、FDISCパケットを受信したスイッチが実行する処理はFLOGIパケットを受信したスイッチが実行する処理と同様であるので、ここではFLOGIパケットを例にして説明する。
まず、スイッチが受信したFLOGIパケットは、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第1FIP処理部1522は、本スイッチはドメインマスタであるか判断する(図39:ステップS161)。ドメインマスタであるスイッチは、そのスイッチが属するドメインにおけるFLOGIテーブル153を管理するスイッチである。本実施の形態においては、各ドメインにおけるいずれか1台のスイッチがドメインマスタである。
本スイッチはドメインマスタではない場合(ステップS161:Noルート)、第1FIP処理部1522は、受信したFLOGIパケットに含まれるデータ(具体的には、送信元MACアドレス及び送信元WWPN)、受信ポートの識別子、及びスイッチの識別子(ここでは、本スイッチの識別子)を、ドメインマスタに送信する(ステップS163)。なお、本実施の形態においては、ドメインマスタは、ドメイン内の各ポートが属する論理リンクを特定するためのデータ(例えば、ポートの識別子及びスイッチの識別子の組合せと論理リンクの識別子とを対応付けたデータ)を保持しているものとする。
一方、本スイッチはドメインマスタである場合(ステップS161:Yesルート)、第1FIP処理部1522は、受信したFLOGIパケットに含まれるデータ、受信ポートの識別子、及びスイッチの識別子をFLOGIテーブル153に格納する(ステップS165)。本処理の時点においては、FPMA及びFCIDは格納されない。
第1FIP処理部1522は、本スイッチはFCoEコントローラの機能を有する(すなわち、FCoEコントローラ5である)か判断する(ステップS167)。
本スイッチはFCoEコントローラの機能を有しない場合(ステップS167:Noルート)、第1FIP処理部1522は、FLOGIパケットを、FCoEコントローラ5宛のパケットを中継するためのポートに出力する(ステップS169)。そして処理を終了する。
一方、本スイッチはFCoEコントローラの機能を有する場合(ステップS167:Yesルート)、第1FIP処理部1522は、FLOGIパケットに基づくログイン処理を実行する(ステップS171)。ログイン処理は、FLOGIパケットの送信元に対してFCIDを割り当てられるか判断する処理である。
第1FIP処理部1522は、ログインが成功した(すなわち、FLOGIパケットの送信元に対してFCIDを割り当てられる)か判断する(ステップS173)。ログインが成功しなかった場合(ステップS173:Noルート)、第1FIP処理部1522は、FLOGI RJTパケットを生成する(ステップS175)。一方、ログインが成功した場合(ステップS173:Yesルート)、第1FIP処理部1522は、FLOGI ACCパケットを生成する(ステップS177)。そして処理は端子Cを介して図40のステップS179に移行する。
図40の説明に移行し、第1FIP処理部1522は、本スイッチはドメインマスタであるか判断する(ステップS179)。本スイッチはドメインマスタではない場合(ステップS179:Noルート)、第1FIP処理部1522は、ステップS177において生成されたFLOGI ACCパケット又はステップS175において生成されたFLOGI RJTパケットに対応するエントリを、ドメインマスタに送信する(ステップS181)。そして処理を終了する。
一方、本スイッチはドメインマスタである場合(ステップS179:Yesルート)、第1FIP処理部1522は、ステップS177において生成されたFLOGI ACCパケット又はステップS175において生成されたFLOGI RJTパケットに対応するエントリを、FLOGIテーブル153から特定する(ステップS183)。ステップS183において特定されるエントリには、FLOGIパケットの送信元MACアドレス及びFLOGIパケットの受信ポートの識別子が含まれる。
一方、生成したパケットはFLOGI ACCパケットである場合(ステップS187:Yesルート)、第1FIP処理部1522は、生成したパケットはFLOGI ACCパケットであるか判断する(ステップS185)。ステップS177を経由した場合には、生成したパケットはFLOGI ACCパケットである。生成したパケットはFLOGI ACCパケットではない場合(ステップS185:Noルート)、FLOGI RJTパケットを生成したので、第1FIP処理部1522は、ステップS183において特定されたエントリをFLOGIテーブル153から削除する(ステップS189)。そしてステップS197の処理に移行する。
一方、生成したパケットはFLOGI ACCパケットである場合(ステップS185:Yesルート)、第1FIP処理部1522は、宛先MACアドレスを表す変数Mに対して、FPMAを設定し、受信ポートの識別子を表す変数Pに対して、FLOGIパケットの受信ポートの識別子を設定する(ステップS187)。
第1FIP処理部1522は、以下の設定を行う(ステップS191)。具体的には、FCIDを表す変数IDに対してFLOGI ACCパケットに含まれるFCIDを設定し、送信元MACアドレスを表す変数FMに対して、FLOGI ACCパケットの送信元MACアドレスを設定し、使用する論理リンクを表す変数Lに対して、ポートPが属する論理リンクの識別子を設定する。
第1FIP処理部1522は、変数ID、変数M、変数FM、及び変数Lを中継設定部1523に出力する。これに応じ、中継設定部1523は、変数ID、変数M、変数FM、及び変数Lを引数として中継設定処理を実行する(ステップS193)。中継設定処理については、第1の実施の形態において説明したとおりであるので、ここでは説明を省略する。
第1FIP処理部1522は、本スイッチと同じドメインに属する他のスイッチに中継設定要求を送信し、送信先のスイッチからの応答を待つ(ステップS195)。中継設定要求は、少なくとも変数ID、変数M、変数FM、及び変数Lを含む。
応答を受信すると、第1FIP処理部1522は、ステップS177において生成したFLOGI ACCパケット又はステップS175において生成したFLOGI RJTパケットをポートPに出力、又はポートPを有しない場合はポートPを有するスイッチにポートPへの出力指示を送信する(ステップS197)。そして処理を終了する。
以上のような処理を実行すれば、中継の設定を各スイッチにおいて実行できるようになるので、ネットワークにおける特定の装置に負荷が集中することを防止できるようになる。特に、FLOGIテーブル153をドメインマスタが管理するので、FLOGIパケットを受信したスイッチとFLOGI ACCパケットを受信したスイッチとが異なる場合にも対処できるようになる。
次に、図41を用いて、ステップS163において送信された情報を受信したドメインマスタが実行する処理について説明する。
まず、ドメインマスタであるスイッチの第1FIP処理部1522は、FLOGIパケットに含まれるデータ、受信ポートの識別子、及びスイッチの識別子を受信する(図41:ステップS241)。
第1FIP処理部1522は、FLOGIパケットに含まれるデータ、受信ポートの識別子、及びスイッチの識別子を、FLOGIテーブル153に格納する(ステップS243)。そして処理を終了する。
次に、図42を用いて、FLOGI ACCパケット又はFLOGI RJTパケットを受信したスイッチが実行する処理について説明する。
まず、スイッチが受信したFLOGI ACCパケット及びFLOGI RJTパケットは、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第1FIP処理部1522は、本スイッチはドメインマスタであるか判断する(図42:ステップS201)。ドメインマスタではない場合(ステップS201:Noルート)、第1FIP処理部1522は、受信したFLOGI ACCパケット又はFLOGI RJTパケットを、ドメインマスタであるスイッチに送信する(ステップS203)。そして処理を終了する。
一方、本スイッチはドメインマスタである場合(ステップS201:Yesルート)、第1FIP処理部1522は、受信したFLOGI ACCパケット又はFLOGI RJTパケットに対応するエントリを、FLOGIテーブル153から特定する(ステップS205)。ステップS205において特定されるエントリには、FLOGIパケットの送信元MACアドレス及びFLOGIパケットの受信ポートの識別子が含まれる。
第1FIP処理部1522は、受信したパケットはFLOGI ACCパケットであるか判断する(ステップS207)。受信したパケットはFLOGI ACCパケットではない場合(ステップS207:Noルート)、FLOGI RJTパケットを受信したので、第1FIP処理部1522は、ステップS205において特定されたエントリをFLOGIテーブル153から削除する(ステップS211)。そしてステップS219の処理に移行する。
一方、受信したパケットはFLOGI ACCパケットである場合(ステップS207:Yesルート)、第1FIP処理部1522は、宛先MACアドレスを表す変数Mに対して、FLOGIパケットの送信元MACアドレスを設定し、受信ポートの識別子を表す変数Pに対して、FLOGIパケットの受信ポートの識別子を設定する(ステップS209)。
第1FIP処理部1522は、以下の設定を行う(ステップS213)。具体的には、FCIDを表す変数IDに対してFLOGI ACCパケットに含まれるFCIDを設定し、送信元MACアドレスを表す変数FMに対して、FLOGI ACCパケットの送信元MACアドレスを設定し、使用する論理リンクを表す変数Lに対して、ポートPが属する論理リンクの識別子を設定する。
第1FIP処理部1522は、変数ID、変数M、変数FM、及び変数Lを中継設定部1523に出力する。これに応じ、中継設定部1523は、変数ID、変数M、変数FM、及び変数Lを引数として中継設定処理を実行する(ステップS215)。中継設定処理については、第1の実施の形態において説明したとおりであるので、ここでは説明を省略する。
第1FIP処理部1522は、本スイッチと同じドメインに属する他のスイッチに中継設定要求を送信し、送信先のスイッチからの応答を待つ(ステップS217)。中継設定要求は、少なくとも変数ID、変数M、変数FM、及び変数Lを含む。
応答を受信すると、第1FIP処理部1522は、受信したFLOGI ACCパケット又はFLOGI RJTパケットをポートPに出力、又はポートPを有しない場合はポートPを有するスイッチにポートPへの出力指示を送信する(ステップS219)。そして処理を終了する。
以上のような処理を実行すれば、FLOGI ACCパケット及びFLOGI RJTパケットをドメインマスタが処理できるようになる。
なお、中継設定要求を受信したスイッチが実行する処理は、第1の実施の形態において説明したとおりであるので、説明を省略する。
次に、図43及び図44を用いて、LOGOパケットを受信したスイッチが実行する処理について説明する。
まず、スイッチが受信したLOGOパケットは、内部ポートBを経由してプロトコル処理部152に出力される。そして、プロトコル処理部152における第2FIP処理部1524は、本スイッチはFCoEコントローラの機能を有する(すなわち、FCoEコントローラ5である)か判断する(図43:ステップS251)。
本スイッチはFCoEコントローラの機能を有しない場合(ステップS251:Noルート)、第2FIP処理部1524は、LOGOパケットを、FCoEコントローラ5宛のパケットを中継するためのポートに出力する(ステップS253)。そして処理を終了する。
一方、本スイッチはFCoEコントローラの機能を有する場合(ステップS251:Yesルート)、第2FIP処理部1524は、LOGOパケットに基づくログアウト処理を実行する(ステップS255)。ログアウト処理は、LOGOパケットの送信元に対するFCIDの割り当てを解除できるか判断する処理である。
第2FIP処理部1524は、ログアウトが成功した(すなわち、LOGOパケットの送信元に対するFCIDの割り当てを解除できた)か判断する(ステップS257)。ログアウトが成功しなかった場合(ステップS257:Noルート)、第2FIP処理部1524は、LOGO RJTパケットを生成し、LOGO RJTパケットを送信する(ステップS259)。そして処理を終了する。LOGO RJTパケットは通常のパケットと同様に中継されるので、ここでは詳細な説明を省略する。
一方、ログアウトが成功した場合(ステップS257:Yesルート)、第2FIP処理部1524は、LOGO ACCパケットを生成する(ステップS261)。そして処理は端子Dを介して図44のステップS263に移行する。
図44の説明に移行し、第2FIP処理部1524は、本スイッチがドメインマスタであるか判断する(ステップS263)。本スイッチがドメインマスタではない場合(ステップS263:Noルート)、第2FIP処理部1524は、ドメインマスタにLOGO ACCパケットを送信する(ステップS265)。そして処理を終了する。
第2FIP処理部1524は、ステップS261において生成されたLOGO ACCパケットに含まれるMACアドレスに対応するFCIDをFLOGIテーブル153から特定する。そして、第2FIP処理部1524は、FCIDを表す変数IDSに対して、特定されたFCIDを設定する(ステップS269)。
第2FIP処理部1524は、変数IDSを削除処理部1525に出力する。これに応じ、削除処理部1525は、変数IDSを引数として設定削除処理を実行する(ステップS271)。設定削除処理については第1の実施の形態において説明したとおりであるので、説明を省略する。
第2FIP処理部1524は、本スイッチと同じドメインに属する他のスイッチに削除要求を送信し、送信先のスイッチからの応答を待つ(ステップS273)。削除要求は、少なくとも変数IDSを含む。
応答を受信すると、第2FIP処理部1524は、ステップS261において生成したLOGO ACCパケットに対応するエントリをFLOGIテーブル153から削除する(ステップS275)。
第2FIP処理部1524は、LOGO ACCパケットを、LOGO ACCパケットに含まれる宛先MACアドレスに対応するポートに出力する、又はそのポートを有しない場合はそのポートを有するスイッチにそのポートへの出力指示を送信する(ステップS277)。そして処理を終了する。
なお、LOGO ACCパケット又はCVLパケットを受信したスイッチが実行する処理は、図45に示すようになる。図45に示すとおり、この処理はステップS263乃至ステップS277の処理と同様であるので、ここでは説明を省略する。但し、上で述べたように、CVLパケットに含まれるFCIDの数は1に限られず、0である場合もあるし、複数である場合もある。
なお、削除要求を受信したスイッチが実行する処理は、第1の実施の形態において説明したとおりであるので、説明を省略する。
以上のような処理を実行すれば、設定の削除を各スイッチにおいて実行できるようになるので、ネットワークにおける特定の装置(例えばFCoEコントローラ5)に負荷が集中することを防止できるようになる。特に、ドメインマスタを設けているので、LOGO ACCパケットを受信したスイッチとFLOGI ACCパケットを受信したスイッチとが異なる場合にも対処できるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したスイッチSW1乃至SW6の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明したデータ保持構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
例えば、ドメインA内のスイッチがFCoEコントローラの機能を有するようにしてもよい。
また、エンドノード3はスイッチであってもよい。
なお、上で述べたエンドノード3は、コンピュータ装置であって、図46に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係る情報処理システムは、(A)ツリー状に接続された複数のスイッチと、(B)複数のスイッチのうちいずれかのスイッチに接続された情報処理装置と、(C)複数のスイッチのうちいずれかのスイッチに接続され且つ識別子の割り当てを管理する管理装置とを有する。そして、上で述べた情報処理装置は、(b1)複数のスイッチのうち識別子の割り当てを管理する管理装置を宛先とする割当要求を送信し、管理装置は、(c1)受信した割当要求に基づき、情報処理装置に対して識別子を割り当てることができるか判断し、情報処理装置に対して識別子を割り当てることができる場合、情報処理装置に割り当てる識別子を含む応答を送信し、複数のスイッチのうち割当要求及び応答を中継する第1のスイッチは、(c2)割当要求を受信した論理リンクの情報及び応答に含まれる識別子に基づき、情報処理装置を宛先とするパケットを中継するための設定を行うとともに、第1のスイッチが属するドメインである第1のドメインに属する他のスイッチに対し、割当要求を受信した論理リンクの情報及び応答に含まれる識別子を含む設定要求を送信する処理を実行する。
このようにすれば、中継の設定を各スイッチが行うようになるので、設定処理の負荷が特定のスイッチに集中することを防げるようになる。
また、上で述べた第1のドメインに属する他のスイッチは、(c3)設定要求に含まれる論理リンクの情報及び識別子に基づき、情報処理装置を宛先とするパケットを中継するための設定を行ってもよい。このようにすれば、同じドメインに属するスイッチにおいても、設定要求の送信元のスイッチと同じ設定を行えるようになる。
また、上で述べた第1のスイッチは、(c2−1)情報処理装置を宛先とするパケットを受信した場合、当該パケットを設定に基づき中継してもよい。このようにすれば、予め行われた設定に基づきパケットが宛先まで届けられるようになる。
また、上で述べた第1のスイッチは、(c2−3)割当要求に含まれる送信元アドレス及び応答に含まれる送信元アドレスにさらに基づき設定を行い、(c2−4)情報処理装置を宛先とするパケットを受信した場合、当該パケットに含まれるアドレスを設定に基づき変換し、変換後のパケットを設定に基づき中継してもよい。このようにすれば、パケットに含まれるアドレスの変換を各スイッチにおいて行えるようになる。例えばFCoEであれば、FCFが行うアドレスの変換を他のスイッチにおいて行えるようになるので、パケットがFCFを経由しなくても済むようになる。
また、上で述べた情報処理装置は、(b2)管理装置を宛先とする解除要求を送信し、上で述べた管理装置は、(c1−1)受信した解除要求に基づき、情報処理装置に対する識別子の割り当てを解除できるか判断し、情報処理装置に対する識別子の割り当てを解除できる場合、解除要求に対する応答を送信し、複数のスイッチのうち解除要求及び解除要求に対する応答を中継する第1のスイッチは、(c2−5)設定を削除するとともに、第1のドメインに属する他のスイッチに対し、情報処理装置に割り当てられた識別子を含む削除要求を送信してもよい。このようにすれば、同じドメインに属する各スイッチにおいて設定を削除できるようになる。
また、複数のスイッチのうち第2のドメインに属する第2のスイッチは、(c3)割当要求を受信した場合、第2のドメインに属するスイッチのうち設定の管理を行う第3のスイッチに対し割当要求を受信した論理リンクの情報を送信し、複数のスイッチのうち第2のドメインに属する第4のスイッチは、(c4)応答を受信した場合、第3のスイッチに対し応答を送信し、第3のスイッチは、(c5)第2のスイッチから受信した論理リンクの情報及び第4のスイッチから受信した応答に含まれる識別子に基づき、情報処理装置を宛先とするパケットを中継するための設定を行うとともに、第2のドメインに属する他のスイッチに対し、割当要求を受信した論理リンクの情報及び応答に含まれる識別子を含む設定要求を送信してもよい。或るドメインにおいて割当要求を中継するスイッチと応答を中継するスイッチとは、必ずしも一致するわけではない。上で述べたように、設定の管理を行うスイッチを設ければ、割当要求を中継するスイッチと応答を中継するスイッチとが一致しない場合にも対処できるようになる。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ツリー状に接続された複数のスイッチと、
前記複数のスイッチのうちいずれかのスイッチに接続された情報処理装置と、
前記複数のスイッチのうちいずれかのスイッチに接続され且つ識別子の割り当てを管理する管理装置と、
を有し、
前記情報処理装置は、
前記管理装置を宛先とする割当要求を送信し、
前記管理装置は、
受信した前記割当要求に基づき、前記情報処理装置に対して識別子を割り当てることができるか判断し、前記情報処理装置に対して識別子を割り当てることができる場合、前記情報処理装置に割り当てる識別子を含む応答を送信し、
前記複数のスイッチのうち前記割当要求及び前記応答を中継する第1のスイッチは、
前記割当要求を受信した論理リンクの情報及び前記応答に含まれる識別子に基づき、前記情報処理装置を宛先とするパケットを中継するための設定を行うとともに、前記第1のスイッチが属するドメインである第1のドメインに属する他のスイッチに対し、前記割当要求を受信した論理リンクの情報及び前記応答に含まれる識別子を含む設定要求を送信する、
ことを特徴とする情報処理システム。
(付記2)
前記第1のドメインに属する他のスイッチは、
前記設定要求に含まれる前記論理リンクの情報及び前記識別子に基づき、前記情報処理装置を宛先とするパケットを中継するための設定を行う
ことを特徴とする付記1記載の情報処理システム。
(付記3)
前記第1のスイッチは、
前記情報処理装置を宛先とするパケットを受信した場合、当該パケットを前記設定に基づき中継する
ことを特徴とする付記1又は2記載の情報処理システム。
(付記4)
前記第1のスイッチは、
前記割当要求に含まれる送信元アドレス及び前記応答に含まれる送信元アドレスにさらに基づき前記設定を行い、
前記情報処理装置を宛先とするパケットを受信した場合、当該パケットに含まれるアドレスを前記設定に基づき変換し、変換後の前記パケットを前記設定に基づき中継する
ことを特徴とする付記1又は2記載の情報処理システム。
(付記5)
前記情報処理装置は、
前記管理装置を宛先とする解除要求を送信し、
前記管理装置は、
受信した前記解除要求に基づき、前記情報処理装置に対する識別子の割り当てを解除できるか判断し、前記情報処理装置に対する識別子の割り当てを解除できる場合、前記解除要求に対する応答を送信し、
前記複数のスイッチのうち前記解除要求及び前記解除要求に対する応答を中継する前記第1のスイッチは、
前記設定を削除するとともに、前記第1のドメインに属する他のスイッチに対し、前記情報処理装置に割り当てられた識別子を含む削除要求を送信する、
ことを特徴とする付記1乃至4のいずれか1つ記載の情報処理システム。
(付記6)
前記複数のスイッチのうち第2のドメインに属する第2のスイッチは、
前記割当要求を受信した場合、前記第2のドメインに属するスイッチのうち設定の管理を行う第3のスイッチに対し前記割当要求を受信した論理リンクの情報を送信し、
前記複数のスイッチのうち前記第2のドメインに属する第4のスイッチは、
前記応答を受信した場合、前記第3のスイッチに対し前記応答を送信し、
前記第3のスイッチは、
前記第2のスイッチから受信した前記論理リンクの情報及び前記第4のスイッチから受信した前記応答に含まれる識別子に基づき、前記情報処理装置を宛先とするパケットを中継するための設定を行うとともに、前記第2のドメインに属する他のスイッチに対し、前記割当要求を受信した論理リンクの情報及び前記応答に含まれる識別子を含む設定要求を送信する、
ことを特徴とする付記1乃至5のいずれか1つ記載の情報処理システム。
(付記7)
ツリー状に接続された複数のスイッチと、前記複数のスイッチのうちいずれかのスイッチに接続された情報処理装置と、前記複数のスイッチのうちいずれかのスイッチに接続され且つ識別子の割り当てを管理する管理装置とを有する情報処理システムにおいて、
前記情報処理装置は、前記管理装置を宛先とする割当要求を送信し、
前記管理装置は、受信した前記割当要求に基づき、前記情報処理装置に対して識別子を割り当てることができるか判断し、前記情報処理装置に対して識別子を割り当てることができる場合、前記情報処理装置に割り当てる識別子を含む応答を送信し、
前記複数のスイッチのうち前記割当要求及び前記応答を中継する第1のスイッチは、前記割当要求を受信した論理リンクの情報及び前記応答に含まれる識別子に基づき、前記情報処理装置を宛先とするパケットを中継するための設定を行うとともに、前記第1のスイッチが属するドメインである第1のドメインに属する他のスイッチに対し、前記割当要求を受信した論理リンクの情報及び前記応答に含まれる識別子を含む設定要求を送信する、
ことを特徴とする、情報処理システムの制御方法。