(57)【特許請求の範囲】
【請求項１】
共通の通信媒体に複数のデバイスを接続する複数のポートを含む前記複数のデバイスを収容するマルチデバイスエンクロージャ内に実装するデータ伝送レートモニタであって、前記データ伝送レートモニタには、
複数の最大データ伝送レートを含む、電子メモリに保存したデータであって、前記複数の最大データ伝送レートの各々が、前記複数のデバイスの各々又は前記複数のポートの各々に対して設定されている、電子メモリに保存したデータと、
前記マルチデバイスエンクロージャ内の前記複数のデバイスの各々又は前記複数のポートの各々に対する現在のデータ伝送レートを判定し、前記複数のデバイスの各々又は前記複数のポートの各々に対する前記現在のデータ伝送レートが、前記電子メモリに保存した前記データにおける前記各デバイス又は前記各ポートに対して設定した前記最大データ伝送レートを超えた場合に、前記複数のデバイスの各々又は前記複数のポートの各々が前記各デバイス又は前記各ポートに対して設定した最大データ伝送レートで動作することができるように前記各デバイス又は前記各ポートに中断コマンドを送信するモニタコンポーネントとを備えるデータ伝送レートモニタ。
【請求項２】
前記データ伝送レートモニタがブレードシステムの仮想接続マネージャ内に実装される請求項１に記載のデータ伝送レートモニタ。
【請求項３】
前記通信媒体をイーサネット（登録商標）リンクとし、前記中断コマンドをイーサネット（登録商標）中断メッセージとし、前記中断メッセージは、前記メッセージが前記中断メッセージ及び中断時間であることを示すタイプ／長さ用フィールドを含む、請求項１に記載のデータ伝送レートモニタ。
【請求項４】
前記マルチデバイスエンクロージャの動作中に間隔を置いて前記モニタコンポーネントを呼出す間隔計時コンポーネントと、
前記複数のデバイスの各々に対して、データ転送を前記データ伝送レートモニタが前記デバイスから受信すると、前記データ転送で前記デバイスが転送したデータ量を、現時間間隔中に前記デバイスが転送した総データ量を蓄積するアキュムレータに加算する、アキュムレータコンポーネントとを更に備えており、
前記アキュムレータコンポーネントは、前記デバイスからの各受信データ転送において転送されたデータ量を、ｎ個のアキュムレータの中から現アキュムレータ参照で参照した１個のアキュムレータに加算し、
各間隔で、前記モニタコンポーネントは、ｎを法とする数の算法で前記現アキュムレータ参照をインクリメントして、前記インクリメントした現アキュムレータ参照が参照した前記アキュムレータをクリアする請求項１ないし請求項３の何れか一項に記載のデータ伝送レートモニタ。
【請求項５】
前記間隔計時コンポーネントは、前記モニタコンポーネントを１／ｎ秒間隔で呼出す請求項４に記載のデータ伝送レートモニタ。
【請求項６】
前記モニタコンポーネントは、前記デバイス又は前記ポートに対する前記現在のデータ伝送レートを、ｎ個の前記アキュムレータに保存した前記値を加算することによって、判定する請求項４又は請求項５に記載のデータ伝送レートモニタ。
【請求項７】
前記モニタコンポーネントは、前記デバイス又は前記ポートに対する前記現在のデータ伝送レートを、ｎ個の前記アキュムレータに保存した前記値を加算して合計を求め、前記合計にｎ／ｎ−１を乗じることによって、判定する請求項４又は請求項５に記載のデータ伝送レートモニタ。
【請求項８】
前記モニタコンポーネントは、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが低閾値より低いか否かを判定し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが前記低閾値より低い場合に、前記中断コマンドを前記デバイス又は前記ポートに送信すべきでないという指示を、バックプレッシャ変数で保存し、
前記デバイス又は前記ポートに対する前記データ伝送レートが、前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高い場合に、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきと指示すると、前記中断コマンドに含まれる中断時間を長くして、前記デバイス又は前記ポートに対する瞬間データ伝送レートが前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高い場合に前記デバイス又は前記ポートを更に減速させ、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきでないと指示すると、
前記中断コマンドを前記デバイス又は前記ポートに送信すべきという指示を、前記バックプレッシャ変数で保存し、
前記中断コマンドに含まれる前記中断時間を計算し、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきと指示すると、前記デバイス又は前記ポートに前記中断時間を含む前記中断コマンドを送信すること、又は、
前記モニタコンポーネントは、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが低閾値より低いか否かを判定し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが前記低閾値より低く、前記バックプレッシャ変数で保存した値が、前記中断コマンドを前記デバイス又は前記ポートに送信したことを指示した場合、再開コマンドを前記デバイス又は前記ポートに送信し、前記中断コマンドを前記デバイス又は前記ポートに送信していないことを示す指示を、前記バックプレッシャ変数で保存し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが、前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高く、前記バックプレッシャ変数で保存した値が、前記中断コマンドを前記デバイス又は前記ポートに送信していないことを指示した場合、前記中断コマンドを前記デバイス又は前記ポートに送信し、前記中断コマンドを前記デバイス又は前記ポートに送信したことを示す指示を前記バックプレッシャ変数で保存する請求項１ないし請求項７の何れか一項に記載のデータ伝送レートモニタ。
【請求項９】
前記データ伝送レートモニタにより、管理者インタフェースを更に提供して、管理者が前記マルチデバイスエンクロージャ内の前記複数のデバイスの各々又は前記複数のポートの各々に対する最大データ伝送レートを設定可能にする請求項１ないし請求項８の何れか一項に記載のデータ伝送レートモニタ。
【請求項１０】
共通の通信媒体に複数のデバイスを接続する複数のポートを含む前記複数のデバイスを収容するマルチデバイスエンクロージャ内の前記デバイス又は前記ポートの最大データ伝送レートを制御する方法であって、前記方法は、前記複数のデバイスの各々又は前記複数のポートの各々に対して、
前記マルチデバイスエンクロージャの動作中間隔において、モニタコンポーネントによって、前記マルチデバイスエンクロージャ内の前記デバイス又は前記ポートに対する現在のデータ伝送レートを判定し、前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが、前記複数のデバイスの各々又は前記複数のポートの各々に対して設定し及び電子メモリに保存した複数の最大データ伝送レートのうち前記デバイス又は前記ポートに対して設定した最大データ伝送レートを超えると、前記デバイス又は前記ポートが該デバイス又は該ポートに対して設定した最大データ伝送レートで動作することができるように中断コマンドを該デバイス又は該ポートに伝送する方法。
【請求項１１】
ブレードシステムの仮想接続マネージャ内で実行すること、又は、
前記通信媒体をイーサネット（登録商標）リンクとし、前記中断コマンドをイーサネット（登録商標）中断メッセージとし、前記中断メッセージは、前記メッセージが前記中断メッセージ及び中断時間であることを示すタイプ／長さ用フィールドを含む請求項１０に記載の方法。
【請求項１２】
データ転送を前記デバイス又は前記ポートから受信すると、前記データ転送で前記デバイスが転送するデータ量を、現在の間隔時間中に前記デバイスが転送する総データ量を蓄積するアキュムレータに加算するステップを更に含み、該加算ステップが、
前記デバイスからの各受信データ転送で転送された前記データ量を、ｎ個のアキュムレータの中から現アキュムレータ参照が参照する１個のアキュムレータに加算し、及び、
各間隔で、ｎを法とする数の算法で前記現アキュムレータ参照をインクリメントして、前記インクリメントした現アキュムレータ参照が参照した前記アキュムレータをクリアすることを更に含む請求項１０又は請求項１１に記載の方法。
【請求項１３】
１／ｎ秒間隔で前記モニタコンポーネントを呼出すことを更に含む請求項１２に記載の方法。
【請求項１４】
前記モニタコンポーネントは、前記デバイス又は前記ポートに対する前記現在のデータ伝送レートを、前記ｎ個のアキュムレータに保存した前記値を加算することで、判定する請求項１２又は請求項１３に記載の方法。
【請求項１５】
前記モニタコンポーネントは、前記デバイス又は前記ポートに対する前記現在のデータ伝送レートを、前記ｎ個のアキュムレータに保存した前記値を加算して合計を求め、前記合計にｎ／ｎ−１を乗じることによって、判定する請求項１２又は請求項１３に記載の方法。
【請求項１６】
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが低閾値より低いか否かを判定し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが前記低閾値より低い場合、前記中断コマンドを前記デバイス又は前記ポートに送信すべきでないという指示をバックプレッシャ変数で保存し、
前記デバイス又は前記ポートに対する前記データ伝送レートが、前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高い場合に、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきと指示すると、前記中断コマンドに含まれる中断時間を長くして、前記デバイス又は前記ポートに対する瞬間データ伝送レートが前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高い場合に前記デバイス又は前記ポートを更に減速させ、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきでないと指示すると、
前記中断コマンドを前記デバイス又は前記ポートに送信すべきという指示を、前記バックプレッシャ変数で保存し、
前記中断コマンドに含む前記中断時間を計算し、
前記バックプレッシャ変数が、前記中断コマンドを前記デバイス又は前記ポートに送信すべきと指示すると、前記中断時間を含む前記中断コマンドを前記デバイス又は前記ポートに送信することを更に含む、又は、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが低閾値より低いか否かを判定し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが前記低閾値より低く、前記バックプレッシャ変数で保存した値が、前記中断コマンドを前記デバイス又は前記ポートに送信したことを指示した場合、再開コマンドを前記デバイス又は前記ポートに送信し、前記中断コマンドを前記デバイス又は前記ポートに送信していないことを示す指示を、前記バックプレッシャ変数で保存し、
前記デバイス又は前記ポートに対する前記現在のデータ伝送レートが、前記デバイス又は前記ポートに対して設定した前記最大データ伝送レートより高く、前記バックプレッシャ変数で保存した値が、前記中断コマンドを前記デバイス又は前記ポートに送信していないことを指示した場合、前記中断コマンドを前記デバイス又は前記ポートに送信し、前記中断コマンドを前記デバイス又は前記ポートに送信したことを示す指示を前記バックプレッシャ変数で保存することを更に含む請求項１０ないし請求項１５の何れか一項に記載の方法。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチサーバエンクロージャ内サーバの外部エンティティとの通信に関し、特に、サーバ及び／又はサーバ内の個々のポートに外部エンティティへの調整可能な最大伝送レートを提供する方法及びシステムに関する。
【背景技術】
【０００２】
個々のコンピュータプロセッサ、データ記憶装置、及び他のコンピュータ構成要素の能力は、この５０年間で、幾何学的に向上しており、そうした構成要素の体積が大幅に減少するにつれて、従来の単一プロセッサや単一大容量記憶装置のコンピュータアーキテクチャは、大きさは同様だが遥かに強力なマルチデバイスエンクロージャに徐々に切り替わっており、マルチデバイスエンクロージャとしては、ディスクアレイといった、単一エンクロージャシステム及びブレードシステムに複数の大容量記憶装置を組込み、単一エンクロージャ内に、各サーバに１つ又は複数のプロセッサを含んだ複数のサーバを組込んだものがある。マルチコンポーネントエンクロージャはただコンポーネント間を接続するだけで、電源と環境規則に対する統合的アプローチを提供し、個々のコンポーネントを外部エンティティに対して抽出するのに役立つ仮想インタフェースを提供できる。
【０００３】
マルチコンポーネントエンクロージャは、同様な能力を有する個々のコンポーネントデバイスの集合体と比べて多大な利点を提供することが多い一方で、マルチコンポーネントエンクロージャは、時には、個々のコンポーネントに対して共通の内部及び外部インタフェースを提供するために、マルチコンポーネントエンクロージャ内のコンポーネントを制約又は限定する場合がある。例えば、ブレードシステムのサーバモジュールの相互運用性や、容易に交換及び差換えする能力を向上させるために、全てのサーバモジュールを、共通のバックプレーンを通して外部通信媒体に接続可能にしており、そうしたために、通信媒体に直接接続すると様々な伝送レートをサポートする能力のサーバにもかかわらず、サーバモジュールとしての伝送レートでは、共通の固定伝送レートに制限されてしまう可能性がある。マルチデバイスエンクロージャの設計者、開発者、ベンダ、及びユーザらは、共有インタフェースによって制限されたマルチコンポーネントエンクロージャ内のコンポーネントに本来備わる柔軟性や能力を、再度有効にする必要があり、またマルチコンポーネントエンクロージャ全体のユーザビリティと柔軟性を向上させるのに、個々のコンポーネントに対して更なる柔軟性及び能力を提供する必要があることを、認識している。
【発明の概要】
【０００４】
本発明の実施例は、マルチデバイスエンクロージャ内の共通通信媒体がデバイスに対する伝送レートを制約又は固定するにもかかわらず、マルチデバイスエンクロージャ内のデバイスに設定可能な伝送レートを提供することを、目的とする。本発明の１実施例では、マルチサーバエンクロージャ内に収容する若しくはマルチサーバエンクロージャと関連する仮想接続マネージャ又は他のモジュール若しくはデバイス内に実装され、仮想接続マネージャは、各サーバに最大伝送レートを割当てられる管理用又は管理インタフェースを提供する。仮想接続マネージャは、従って、サーバ及び／又はサーバのポートで設定最大伝送レートを超えないように、バックプレッシャ又はフロー制御を適用するために、サーバ及び／又はサーバ内のポートの伝送レートを継続的にモニタする。
【図面の簡単な説明】
【０００５】
【図１】マルチサーバブレードシステムの主な構成要素を示す。
【図２】ネットワークインタフェースカードとホストバスアダプタとの信号経路接続を提供するブレードシステムのバックプレーンを示す。
【図３Ａ】ブレードシステムのサーバを外部通信媒体に相互接続する仮想接続マネージャによるアプローチを示す。
【図３Ｂ】ブレードシステムのサーバを外部通信媒体に相互接続する仮想接続マネージャによるアプローチを示す。
【図４Ａ】イーサネット（登録商標、以下同じ）接続したデバイスの半二重及び全二重動作について説明している。
【図４Ｂ】イーサネット接続したデバイスの半二重及び全二重動作について説明している。
【図４Ｃ】イーサネット接続したデバイスの半二重及び全二重動作について説明している。
【図５】典型的なイーサネットＩＩパケットを示す。
【図６】イーサネットリンク用の一般的な帯域幅を示す。
【図７Ａ】伝送レートに関するオートネゴシエーションについて説明している。
【図７Ｂ】伝送レートに関するオートネゴシエーションについて説明している。
【図７Ｃ】伝送レートに関するオートネゴシエーションについて説明している。
【図８Ａ】イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。
【図８Ｂ】イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。
【図８Ｃ】イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。
【図８Ｄ】イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。
【図８Ｅ】イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。
【図９Ａ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｂ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｃ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｄ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｅ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｆ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｇ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｈ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｉ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｊ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図９Ｋ】本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。
【図１０Ａ】本発明の第２実施例について説明している。
【図１０Ｂ】本発明の第２実施例について説明している。
【図１０Ｃ】本発明の第２実施例について説明している。
【図１０Ｄ】本発明の第２実施例について説明している。
【図１１Ａ】本発明の実施例を実装して生じた全体的効果について説明している。
【図１１Ｂ】本発明の実施例を実装して生じた全体的効果について説明している。
【図１２】本発明の２つの異なる実施例のいずれかを実装する仮想接続マネージャに関する制御フローチャートを提供している。
【図１３】本発明の１実施例に従い、図１２のステップ１２０８で呼出した、ハンドラ「新パケット」に関する制御フローチャートを、提供している。
【図１４】本発明の１実施例に従い、図１２のステップ１２１０で呼出した、ハンドラ「タイマ処理」の第１部分に関する制御フローチャートを、提供している。
【図１５】図９Ａ〜図９Ｋを参照して記述した本発明の第１実施例に従い、図１４のステップ１４１０で呼出した、ルーチン「伝送レート調整」に関する制御フローチャートを、提供している。
【図１６】図１０Ａ〜図１０Ｄを参照して記述した本発明の第２実施例に従い、図１４のステップ１４１０で呼出した、ルーチン「伝送レート調整」の第２実装に関する制御フローチャートである。
【発明を実施するための形態】
【０００６】
本発明の１実施例は、サーバ又はポートによる１つ又は複数の通信媒体への最大伝送レートを制御するために、マルチサーバエンクロージャ内のサーバに、又はマルチサーバエンクロージャ内のサーバの個々のポートに対して、バックプレッシャ又はフロー制御を適用する方法及びシステムに関する。まず最初に、以下で本発明の様々な実施例に関して記述する環境を提供するために、マルチサーバエンクロージャについて、説明する。別の実装例では、様々な異なる最大伝送レートを設定し、実行できる。例えば、各サーバの、サーバが接続される全通信媒体への総最大伝送レートを、設定し実行してもよい。或はまた、サーバが接続される通信媒体のクラス又は種類に属する全通信媒体に対する各サーバの総最大伝送レートを、設定し実行してもよい。或はまた、サーバ内の個々のポートの総最大伝送レートを、設定し実行してもよい。
【０００７】
図１では、マルチサーバブレードシステムの主要構成要素について説明している。ブレードシステム１０２は、多数の温度調整部品１０４〜１０８と、２つ以上の電源装置１１０及び１１２と、複数のサーバモジュール１１４〜１２１と、電源供給ライン、制御信号ライン、様々な物理的通信媒体を介してサーバモジュール１１４〜１２１と他の構成要素を相互接続する複数の、異なるタイプの物理的接続を含むバックプレーン１２４とを含むが、物理的通信媒体としては、外部イーサネット、ファイバチャネル、他の通信媒体にデータを転送する、又はこれらからデータを受信する通信媒体が挙げられる。勿論、ブレードシステムは、多くの他の構成要素と共に、管理モジュール内で実行して、ブレードシステム管理者との管理インタフェースを提供し、ブレードシステム内の様々な構成要素の動作をモニタ及び管理する管理モジュール及び管理ルーチンも含む。
【０００８】
図２では、ネットワークインタフェースカードとホストバスアダプタとの信号経路接続を提供するブレードシステムのバックプレーンについて説明している。図２では、ブレードシステムのバックプレーン２０２により、ネットワークインタフェースカード（「ＮＩＣ」）及びホストバスアダプタ（「ＨＢＡ」）、例えばＮＩＣ２０４及びＨＢＡ２０６と、ローカルエリアネットワーク（「ＬＡＮ」）スイッチ及びストレージエリアネットワーク（「ＳＡＮ」）スイッチ内のポートへの、例えばＬＡＮスイッチ２１０のポート２０８及びＳＡＮスイッチ２１４のポート２１２との間に夫々信号経路接続を提供する。スイッチ２１０等の各スイッチにより、様々なネットワークインタフェースカード又はホストバスアダプタを、１つ又は複数のＬＡＮ又はＳＡＮに接続する。通常、各サーバ２１６〜２１９は、２つ以上のＮＩＣ及び２つ以上のＨＢＡを含み、それによりサーバが、外部ＬＡＮ及び／又はＳＡＮとの接続を喪失することなく、ＮＩＣ及び／又はＨＢＡの障害を個々に許容できるようにする。各ＮＩＣは、メーカーが供給するメディアアクセス制御（「ＭＡＣ」）アドレスを含み、各ＨＢＡは、夫々ワールドワイドネーム（「ＷＷＮ」）を含み、ＷＷＮによって、ＮＩＣ及びＨＢＡではＬＡＮ及びＳＡＮ内で夫々アドレスが指定される。バックプレーン２０２はパッシブであり、サーバ内のＮＩＣ及びＨＢＡと、イーサネット及びファイバチャネルスイッチといったＬＡＮスイッチ及びＳＡＮスイッチ内のポートとの間で信号を伝送するのに使用できる信号ラインを提供する。ブレードシステム内のサーバモジュールを、バックプレーンコネクタを介して、バックプレーンにプラグ接続して、それによりサーバモジュールをブレードシステムにインストールする際、又はサーバモジュールを取替える若しくは交換する際に、大きなエラーが発生し易い配線が不要となるようにする。
【０００９】
図３Ａ及び図３Ｂでは、ブレードシステムのサーバを外部通信媒体に相互接続する仮想接続マネージャによるアプローチについて、説明している。図３Ａで示すように、サーバのＮＩＣ及びＨＢＡをバックプレーンを介して直接スイッチに接続するよりはむしろ、ＮＩＣ及びＨＢＡを或はバックプレーンを介して仮想接続マネージャモジュール３０２及び３０４に接続でき、モジュール３０２及び３０４を、次に、ＬＡＮ及びＳＡＮ通信媒体を含む外部通信媒体に接続することができる。
【００１０】
図３Ｂでは、仮想接続マネージャモジュールが提供する機能について説明している。仮想接続マネージャは、仮想接続マネージャモジュール内で実行し、通信ポート用にＭＡＣアドレス、ＷＷＮアドレス及び他の固有アドレスのプール３１０及び３１２を、各アドレスタイプにつき１プールとして、保持する。図３Ｂでは、２つのプール３１０と３１２は、ＭＡＣアドレスとＷＷＮアドレスに対応している。仮想接続マネージャにより、各サーバ３１８〜３２１用の設定プロファイル３１４〜３１７を保持する。仮想接続マネージャにより、初期設定段階中に、ＭＡＣアドレス及びＷＷＮアドレスを、ＭＡＣアドレス及びＷＷＮアドレスのプールから、全サーバのＮＩＣ及びＨＢＡに割当てて、各サーバのＮＩＣ及びＨＢＡ内のメーカーが供給したＭＡＣアドレス及びＷＷＮアドレスを置換える。仮想接続マネージャが使用するＭＡＣアドレス及びＷＷＮアドレスは、ブレードシステム用に、イーサネット及びファイバチャネルのコンソーシアムが確保している。設定プロファイル３１４〜３１７には、各サーバの各ＮＩＣ及びＨＢＡを接続する外部ＬＡＮ及びＳＡＮを特定する情報を含む。仮想接続マネージャは、外部ＬＡＮ及びＳＡＮと、ブレードシステムのサーバモジュール内のＮＩＣ及びＨＢＡとの間の仮想インタフェースとして機能するだけでなく、ブレードシステム管理者との通信管理のための管理者用インタフェースを提供する。外部ＬＡＮ及びＳＡＮと、サーバモジュール内のＮＩＣ及びＨＢＡとの間のインタフェースを仮想化することで、仮想接続マネージャは、サーバモジュールを取外して、取外したサーバモジュールを接続していたそれらのＬＡＮ及びＳＡＮを再設定する必要なく、ブレードシステム又はブレードシステム部品を再配線する必要なく、新たなサーバモジュールと交換することを可能にする。その代わり、仮想接続マネージャは、交換サーバの起動を検知すると、当該サーバ用の設定プロファイルを使用して、交換サーバのＮＩＣ及びＨＢＡカードのＭＡＣアドレス及びＷＷＮアドレスを、取外したサーバが使用したＭＡＣアドレス及びＷＷＮアドレスと置換え、新たにインストールしたサーバを、取外したサーバを以前に接続したそれらの外部ＬＡＮ及びＳＡＮと接続する。
【００１１】
記述した本発明の実施例は、イーサネット相互接続に関するものであり、イーサネット通信に関する様々な態様について次に記述する。しかしながら、本発明で示したアプローチを、更なる種類の通信媒体及びプロトコルに適用してもよい。
【００１２】
図４Ａ〜図４Ｃでは、イーサネット接続したデバイスの半二重及び全二重動作について、説明している。図４Ａ〜図４Ｃは同じ図示規則を用いており、この図示規則は再び後の図面でも使用するが、イーサネットの物理的リンクに接続したＮＩＣを夫々含む２つのデバイス４０２と４０４とが、物理的リンクを介して、データ符号化信号を送受信する。図４Ａ及び図４Ｂでは、半二重動作のイーサネットについて説明している。図４Ａでは、デバイス４０４がデータをデバイス４０２送信し、図４Ｂでは、デバイス４０２が情報を物理的リンクを介してデバイス４０４に送信している。半二重動作では、両デバイスは同時にデータを送信できない。対照的に、図４Ｃで説明した全二重動作では、デバイス４０２と４０４が同時に、物理的リンク４０６を介してデータを送受信している。インターネット接続の種類や動作速度によって、８ビット、１６ビット、又は３２ビットのデータ値が、物理的媒体を通してクロックサイクルあたりで送信される。これらのデータ値は送信側で、メモリに保存したデータのパケットを分解して得られ、また受信側で再度組立てて、パケットを再編成して、メモリにパケットを保存する。
【００１３】
図５では、典型的なイーサネットＩＩのパケットについて説明している。パケットは、７バイトのプリアンブル５０２と、スタートフレームデリミネータ５０４と、パケットが宛てられるＮＩＣの６バイトのＭＡＣ宛先アドレス５０８と、パケットを送信する６バイトのＭＡＣ送信元アドレス５１０と、２バイトのイーサネットのタイプ／長さ用フィールド５１２と、４６〜１５００バイトから成るデータペイロードフィールド５１４と、パケットの送信中に発生したエラーを検出及び修正するのに提供する４バイトのＣＲＣフィールド５１６を含む。物理的リンクでは、各パケットに対応するデータ値を、固定数のクロックサイクルから成るフレーム間ギャップ５１８によって分離する。
【００１４】
イーサネットの物理的リンクは、ブレードシステムのバックプレーン内にツイストペア銅線、光ファイバ、同軸ケーブル、信号線を含むことができる。ポート、物理的リンク、ＮＩＣ、ＮＩＣ及び他の構成要素と通信する制御パラメタに応じて、イーサネットの物理的リンク及びポートを介して異なるレートでデータを送信できる。図６では、イーサネットデバイスの一般的な伝送レートについて説明している。図６で示すように、イーサネットリンク用の一般的な帯域幅としては、１０メガビット／秒６０２、１００メガビット／秒６０４、１０００メガビット／秒、即ち１ギガビット／秒６０６が挙げられる。また、１０ギガビット／秒のイーサネットリンクも現在使用可能であり、１００ギガビット／秒のリンクが数年以内に使用可能になる見込みである。多数のＮＩＣを、図６で示した最大転送レートのいずれかでデータを送信するよう設定できる。
【００１５】
通信デバイス内のＮＩＣにより、特定の動作モードにオートネゴシエーションできる。図７Ａ〜図７Ｃでは、伝送レートに関するオートネゴシエーションについて説明している。図７Ａでは、１００メガビット／秒の設定可能な最大データ伝送レートを有するＮＩＣを含むデバイス７０２を、１ギガビット／秒の設定可能な最大データ伝送レートを有するＮＩＣを含むデバイス７０４と相互接続している。物理的リンク７０６は、１ギガビット／秒で各方向にデータを搬送できる。図７Ｂで示すように、起動後の設定プロセスで、デバイス７０２と７０４が、オートネゴシエーションプロセスの一部として、リンクコードワード７０８と７１０を交換し、それにより各デバイスがリモートデバイスの能力を判定し、次に両デバイスを、２デバイスの遅い方で処理できる最大伝送レートで通信するよう一致させる。図７Ｃで示したように、オートネゴシエーションの結果、デバイス７０２と７０４は、２デバイスの遅い方の最大転送レートである１００メガビット／秒で送信するよう設定される。また、オートネゴシエーションを使用して、半二重或は全二重モードで動作するか否かを判定してもよいが、両デバイスが全二重モードで動作できる場合、全二重モードが好ましい。
【００１６】
特定のブレードシステム内でバックプレーン相互接続するという性質上、オートネゴシエーション及び伝送レート選択は、ブレードシステムのサーバ内のＮＩＣには使用できない。その代わりに、これらブレードシステムでは、全ＮＩＣは、特有の固定最大伝送レートで動作する必要がある。本発明の実施例に関するあるクラスのブレードシステムの場合、ブレードシステムのサーバ内の全ＮＩＣの固定最大伝送レートを、１ギガビット／秒とする。一見、１ギガビット／秒は、サーバ内に組込む多くの一般的に使用可能なＮＩＣがサポートする最高のデータ伝送レートであるため、データ伝送用に妥当な固定レートであるようだが、固定最大データ伝送は、ブレードサーバを含むシステム内では問題を起こす可能性がある。
【００１７】
一つの問題は、ブレードシステムを、旧技術のサーバ又はサーバクラスタを取替えるために、コンピュータ設備に設置する際に、旧技術のサーバ又はサーバクラスタと以前に通信していたコンピュータ設備の様々なコンピュータやコンポーネントを、ブレードシステムにある複数のサーバの高速化した総データ伝送レートが圧倒してしまうことである。スタンドアロンの交換サーバで容易にこの問題を解決できるかも知れない。最大伝送レートを最新のＮＩＣに対して通常設定可能なため、サーバ内のＮＩＣを、１００メガビット／秒又は１０メガビット／秒等低速の最大伝送レートで動作するように、設定することができる。例えば、多くの現在使用可能なＮＩＣでは、図６で説明した３データ伝送レート中１つを選択可能になっている。しかしながら、上記のブレードシステムのクラスでは、バックプレーン接続の制限があるため、サーバ内のＮＩＣを、低速の最大データ伝送レートで動作させるよう設定するのは、不可能である。この問題を解決する別のアプローチは、データ通信サービスを要求するアプリケーションプログラム等のサーバで動作する上位エンティティを、減速させることであろう。しかしながら、上位に対する変更は難しく、不正確で、エラーを起こし易く、多くの場合、アプリケーションプログラムは、オペレーティングシステムへのデータ送信要求で生成されたデータ伝送レートをモニタして減速するように設計されていないため、またアプリケーションプログラムは、特殊事情に合わせてアプリケーションプログラムを修正したがらない外部ベンダが製作するため、不可能である。
【００１８】
本発明の実施例は、ブレードシステムのサーバ内のＮＩＣの固定最大データ伝送レートに関連する問題を解決する別のアプローチに関する。このアプローチでは、図３Ａ及び図３Ｂを参照して記載した仮想接続マネージャインタフェースを、実装して、ブレードシステム管理者が、ブレードシステムのサーバモジュール内のＮＩＣの最大データ伝送レートの設定を、仮想接続マネージャによってブレードシステム管理者に提供される設定インタフェースを介して、提供し、データ伝送レートをモニタし、適宜バックプレッシャを印加し又はフロー制御を行ない、確実に各ＮＩＣが設定最大データ伝送レートより高速でデータを送信しないようにする。
【００１９】
図８Ａ〜図８Ｅでは、イーサネットＩＩ対応デバイスに提供するフロー制御メカニズムについて説明している。第１デバイス８０２が第２デバイス８０４に、第２デバイスの受信データ処理能力を超えるデータ伝送レートで、データを転送している図８Ａで示した状況において、図８Ｂで示した第２デバイスが第１デバイス８０２に中断メッセージを送信して、第１デバイスに所定期間データ伝送を停止させることができる。中断メッセージを、物理的な媒体に接続した全ＮＩＣが受信できるマルチキャストアドレスに送信する。中断メッセージを、２バイトのイーサネットのタイプ／長さ用フィールド（図５の５１２）にエンコードし、中断メッセージは、受信デバイスがデータ送信を停止すべき時間を指定する１６ビット値８０８を含む。この値は、５１２ビット転送時間単位でデータ伝送を停止する時間を表す。図８Ｃで示したように、中断メッセージを受信すると、受信デバイスは、タイマ８１０をセットし、タイマが満了するまで伝送を停止する。図８Ｄで示したように、中断メッセージを送信したデバイスは、以下、タイマをリセットする「再開メッセージ」と呼ばれる、特定の停止期間「０」を含む中断メッセージ８１２を送信することで、中断メッセージを明確に無効にできる。図８Ｅで示したように、中断メッセージを受信したデバイスは、タイマが満了すると又は再開メッセージを受信すると、データ伝送を再開する。
【００２０】
ＮＩＣが中断メッセージを受信し、ＮＩＣがデータ伝送を停止する結果、ＮＩＣを収容するサーバ内で高レベルのフロー制御ができる。データ伝送を十分な時間中断すると、ＮＩＣバッファ及び／又はオペレーティングシステムのバッファが満杯になり、その結果上位データ伝送動作が失敗する可能性がある。そうしたデータ伝送動作の失敗は、オペレーティングシステムで自動的に再試行できる、又は失敗は、アプリケーションプログラムを含む上位エンティティにフローバックでき、この上位エンティティによりその後失敗したデータ伝送動作が再試行される可能性がある。
【００２１】
図９Ａ〜図９Ｋでは、本発明の１実施例による、ブレードシステム内のＮＩＣによって最大データ伝送レートを限定する１アプローチについて、説明している。この実施例では、上述したイーサネットＩＩによって提供する中断メッセージを採用して、ＮＩＣがブレードシステムの設定中に確立した最大データ伝送レートを超えた場合に、ブレードシステム内の仮想接続マネージャによって、ＮＩＣにバックプレッシャを印加する。
【００２２】
図９Ａ〜図９Ｋ及び後述する図１０Ａ〜図１０Ｄは、全て同じ図示規則を用いている。これらの図では、仮想接続マネージャ内で、サーバ／ポート組として指定する特定のサーバ又はサーバ内の特定の個々のポートの最大データ伝送レートを制限するために使用する、特定の変数、データ構造、及び他のエンティティについて、説明している。ある実施例では、仮想接続マネージャを用いて、ブレードシステム内の各サーバに対する最大データ伝送レートを制限でき、他の実施例では、各サーバ内の各ポートを、設定最大データ伝送レートに個別に制限できる。
【００２３】
本実施例によれば、各サーバ又はサーバ／ポート対に対して、仮想接続マネージャは、タイマ９０２と、各アキュムレータが固定期間中にサーバ又はサーバ／ポートから仮想接続マネージャが受信するビット数を蓄積するｎ−１個のアキュムレータ配列９０４と、現在使用中のアキュムレータに対するポインタ９０６と、仮想接続マネージャが、現在、サーバ又はサーバ／ポート組に対してバックプレッシャを印加しているか否かを示すブール値「バックプレッシャ」９０８と、サーバ又はサーバ／ポート組用設定テーブル９１０と、サーバ又はサーバ／ポート組からのイーサネットパケット入力９１２とを、保持する。更に、図９Ａでは図示していないが、仮想接続マネージャは、アキュムレータ配列９０４における第１アキュムレータのアドレス及びアキュムレータ数ｎ、又はアキュムレータ配列における第１及び最終アキュムレータのアドレスを保存する。これらのデータ構造、変数、エンティティの全てを纏めてグループ化し、特定のサーバ又はサーバ／ポートと計算的に関連させ、それにより例えば、イーサネットパケットを受信すると、イーサネットパケットに含まれるソースアドレスを、インデキシング処理又は参照処理において使用して、イーサネットパケット送信元のサーバ又はサーバ／ポートに関する現在の仮想接続マネージャのコンテキストを示すデータ構造、変数、エンティティの群を検索するようにできる。例えば、データ構造を用いて、アキュムレータ配列、現アキュムレータのポインタ、ブール値「バックプレッシャ」、タイマ参照、設定テーブル参照、サーバ又はサーバ／ポート組のＭＡＣアドレスを含み、それによりデータ構造を、受信したイーサネットパケット内のソースアドレスから即座に識別できるようにしてもよい。
【００２４】
図９Ａで示したように、仮想コンテキストマネージャのコンテキストを、アキュムレータポインタ９０６により、アキュムレータ配列９０４の第１アキュムレータ９１４を参照し、タイマを、ｎをアキュムレータ配列におけるアキュムレータ数として、１／ｎ秒後に満了するようセットするように、初期化する。全アキュムレータの値が「０」となるよう初期化する。全サーバを起動及び初期化し、仮想接続マネージャを起動及び初期化したなら、パケットを、仮想接続マネージャによって、ブレードシステム内のサーバモジュールから受信し始める。図９Ｂで示したように、次のパケット９１６が到着すると、パケットのサイズを、ビット単位で、現アキュムレータポインタ９０６が現在参照中のアキュムレータ９１４のコンテンツに加える。図９Ｃでは、第２パケットの到着、及び第２パケットに含まれるビット数を現アキュムレータポインタ９０６が参照するアキュムレータ９１４に加えることを示している。
【００２５】
図９Ｄで示したように、タイマが１／ｎ秒で満了すると、現アキュムレータポインタを、ｎを法とする数の算法によって、インクリメントして、クリアした状態の次のアキュムレータ９１８に向ける。アキュムレータ配列９０４の全アキュムレータを合計して、最終秒中にサーバ又はサーバ／ポートから受信したビット９２０の累計を得る。具体的には、アキュムレータの合計に比率ｎ／ｎ−１を乗じて、その前の秒中に、サーバ又はサーバ／ポートが伝送したビット数の推定数を得てもよい。図９Ｅで示したように、第２のタイマ満了後、現アキュムレータポインタ９０６を再びｎを法とする加算によってインクリメントし、アキュムレータの合計に比率ｎ／ｎ−１を乗じて、その前の秒９２２中に、サーバ又はサーバ／ポートが受信したビット数を生成する。このプロセスを、タイマを１／ｎ秒ずつの連続した間隔で継続する。図９Ｆでは、アキュムレータ配列は値で完全に埋められている。
【００２６】
各１／ｎ秒間隔で、ｎ個のアキュムレータに含まれる比率ｎ／ｎ−１を乗じたビット総数を、設定テーブル９１０に保存したサーバ又はサーバ／ポートに対して設定した最大データ伝送レートと比較する。図９Ｇで示したように、これまでの秒に関して推定したデータ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートを超えた場合は、図９Ｈで示したように、ブール変数「バックプレッシャ」９０８を真にセットし、中断メッセージ９２４をサーバのポート又はサーバ／ポートに送信し、一定時間サーバ又はサーバ／ポートによって伝送を止める。サーバ又はサーバ／ポートがその間ｎ回／秒休止するとした場合、サーバ又はサーバ／ポートのデータ伝送レートが、その現在のデータ伝送レートで、サーバ又はサーバ／ポートに対して設定する最大データ伝送レートより遅くなる時間になるよう、一定時間、又は中断時間を計算する。通常、推定中断時間を、以下で値「スロップ」と呼ぶ更なる関数により延長して、確実にサーバ又はサーバ／ポートのデータ伝送レートがある程度最初のうちは最大データ伝送レートを大幅に下回るようにする。次に、図９Ｉ〜図９Ｊに示したように、通常動作を続ける。各タイマ満了時、又は１／ｎ秒間隔で、ブール変数「バックプレッシャ」９０８を真としたまま、中断メッセージをサーバのポート又はサーバ／ポートに送信する。次に、図９Ｋで示したように、これまでの秒に亘りサーバ又はサーバ／ポートに対して計算したデータ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートより大幅に低い低閾値より低かった場合、ブール値「バックプレッシャ」９０８を偽にセットし、データ伝送レートがサーバ又はサーバ／ポートに対して設定した最大データ伝送レートを再び超えるまで、更なる中断メッセージを送信しない。その結果、上述した本発明の第１実施例によれば、サーバ又はサーバ／ポートのデータ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートを超えるなら、中断メッセージを、固定したタイマ満了検出間隔で送信して、サーバ又はサーバ／ポートのデータ伝送レート全体を、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートより大幅に低下させるために、各時間間隔内で短時間サーバ又はサーバ／ポートを中断する。
【００２７】
図１０Ａ〜図１０Ｄでは、本発明の第２実施例について説明している。図１０Ａを図９Ａと比べて分かるように、第１実施例で用いたのと同じデータ構造を第２実施例でも用いる。図１０Ａでは、アキュムレータレジスタのコンテンツと、タイマ満了後のブール変数「バックプレッシャ」９０８及び現アキュムレータポインタ９０６の現状とについて示している。図１０Ｂでは、次のタイマ満了後のアキュムレータ９０４と、バックプレッシャ用レジスタ９０８と、現アキュムレータレジスタ９０６のコンテンツについて示している。アキュムレータ９３０の値からも明らかなように、前の１／ｎ秒間に、サーバ又はサーバ／ポートのデータ伝送レートが極めて増加している点に注意されたい。これにより、これまでの秒に対して計算したデータ伝送レート９３２が、サーバ又はサーバ／ポートに対して設定した最大データ伝送の２倍より多くなり、遥かに超えている。この時点で、前実施例でのように、ブール変数「バックプレッシャ」を真９０８にセットし、中断メッセージ９３４をサーバ又はサーバ／ポートに送信する。しかしながら、この場合、中断メッセージは、サーバ又はサーバ／ポートの受信ポートがかなりの期間に亘りデータ伝送を単に止められるように、なるべく長い中断時間を含んでいる。その後、上述したように、同じタイマをリセットし、次ぎの満了パターン及び現アキュムレータポインタのモジュロインクリメントを、図１０Ｄに示したように、これまでの秒を計算したデータ伝送レートが、ある程度低閾値９３６を下回るまで、継続する。この時点で、再開メッセージ９３８を、サーバ又はサーバ／ポートに送信して、データ伝送を再び開始させる。
【００２８】
サーバ又はサーバ／ポートに対する設定データ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートを超えないことを確実にするために、イーサネットＩＩで使用可能な中断メッセージを使用して、サーバ又はサーバ／ポートにバックプレッシャをかけるよう実装できる、多くの更なる別の実施例がある。アキュムレータの数は少なくしてもよく、連続して各サーバ又はサーバ／ポートをモニタするために、タイマイベント以外のイベントを使用して、モニタルーチンを起動してもよく、また他の代替実施形態も可能である。しかしながら、全ての場合で、仮想接続マネージャは、各サーバ又はサーバ／ポートの全データ伝送レートを制御するのにイーサネットＩＩの中断メッセージを使用する。
【００２９】
図１１Ａ〜図１１Ｂでは、本発明の実施例を実行して生じた全体的効果について説明している。図１１Ａでは、データ伝送レートを縦軸１１０２にプロットし、横軸１１０４に時間をプロットして、グラフにしている。図１１Ａでは、時間増分は極めて短く、約１／ｎ秒以下である。図１１Ａで示すように、データ伝送レートは、データ伝送レートが最大データ伝送レート１１０６を超えるまで、時間とともに変動し、超えた時点で中断メッセージを送信し、データ伝送レートはしばらくの間零１１０８になる。その後、中断１１１０後に、データ伝送レートは、ある限界値まで急上昇して戻り、再びデータ伝送レートがサーバ又はサーバ／ポート１１１０に対して設定した最大データ伝送レートを超えるまで増減し続け、超えた時点で別の中断メッセージを送信し、別の期間１１１２データ伝送レートが零になる。このように、短い時間増分で見ると、サーバ又はサーバ／ポートに対するデータ伝送レートは殆ど不連続となり、最大データ伝送レートを超えたピークや全くデータ伝送がない期間がある。しかしながら、サーバ又はサーバ／ポートに対するデータ伝送レートを、遥かに長期間に亘って、例えば図１１Ｂの増分１１１４で図１１Ａの増分１１１６を数百表して、グラフ化すると、サーバ又はサーバ／ポート１１１８に対するデータ伝送レートは、連続して、最大データ伝送レートを決して超えないように見える。実際、図１１Ａで示すように極めて短い増分時間を計算した曲線では、データ伝送レートが、時折短期間では最大データ伝送速度を超えているのが分かる。しかしながら、図１１Ｂで示すように、データ伝送レートを長期間に亘り計算すると、短いスパイクは長期間で平均化すると、データ伝送レートは連続的となり、常に最大データ伝送レートの線より下になる。
【００３０】
図１２〜図１５では、図９Ａ〜図９Ｋ及び図１０Ａ〜図１０Ｄを参照して上述した、本発明の２つの異なる実施例について説明する制御フローチャートを、示している。図１２では、本発明の上述した２実施例のいずれかを実行する仮想接続マネージャに関する制御フローチャートを、提供している。ステップ１２０２では、仮想接続マネージャが、起動又は再起動時に、設定テーブルに保存した設定情報に従いブレードシステム内のサーバ及びサーバポート全ての設定を行なう。ステップ１２０４では、ブレードシステムを動作させるために初期化する。次に、ステップ１２０６〜１２１１を含むイベントループにおいて、仮想接続マネージャは、あらゆる多数の異なるタイプのイベントを、待ち、処理する。イベントが、ステップ１２０７で判定した際に、ブレードシステム内のサーバからの到来パケットであった場合には、ハンドラ「新パケット」を、ステップ１２０８で呼出す。ステップ１２０９で判定した際に、イベントが最大データ伝送レートのタイマ満了に関連するタイマ割込みであった場合には、ハンドラ「タイマ処理」をステップ１２１０で呼出す。あらゆる多数の他のタイプのイベントを、ステップ１２１１で、キャッチオールのイベントハンドラによって処理するが、イベントとしては、管理者インタフェースによって生成するイベント、通信媒体障害に関するイベント、ブレードシステム内の電力状態又は環境状態に関するイベント他が挙げられる。このイベントループは、仮想接続マネージャが動作している限り継続する。
【００３１】
図１３では、本発明の１実施例に従い、図１２のステップ１２０８で呼出した、ハンドラ「新パケット」に関する制御フローチャートを、提供する。ステップ１３０２では、仮想接続マネージャにより、パケット送信元のサーバ又はサーバ／ポートを判定する。ステップ１３０４では、仮想接続マネージャは、図９Ａを参照して記述したように、データ構造又はサーバ若しくはサーバ／ポートに対応するデータ構造を検索し、ステップ１３０６では、現アキュムレータポインタ（図９Ａの９０６）が参照する現在のアキュムレータを、受信パケットのサイズ分だけ、ビット単位で、インクリメントする。従って、本発明の実施例で導入した各到来パケットを処理するためのオーバーヘッドは、最小限となる。
【００３２】
図１４では、本発明の１実施例に従い、図１２のステップ１２１０で呼出した、ハンドラ「タイマ処理」の第１部分に関する制御フローチャートを、提供する。ステップ１４０２では、仮想接続マネージャは、満了したタイマに対応するサーバ又はサーバ／ポートを判定する。ステップ１４０４では、仮想接続マネージャは、アキュムレータ数ｎを乗算した現在のアキュムレータのコンテンツとして、サーバ又はサーバ／ポートに対する現在の瞬間データ伝送レートを計算する。ステップ１４０６では、仮想接続マネージャは、ｎを法とする数の算法によって現アキュムレータポインタをインクリメントし、ステップ１４０８では、仮想接続マネージャは、タイマ及びタイマ満了割込みをリセットして、次のモニタ間隔の終端を検出する。ステップ１４１０では、ルーチン「伝送レート調整」を呼出す。
【００３３】
図１５では、図９Ａ〜図９Ｋを参照して記述した本発明の第１実施例に従い、図１４のステップ１４１０で呼出した、ルーチン「伝送レート調整」に関する制御フローチャートを、提供する。ステップ１５０２では、現在の伝送レートを、全アキュムレータ（図９Ａの９０４）の合計に比率ｎ／ｎ−１を乗じて、計算する。ステップ１５０４で判定した際に、現在の伝送レートが低閾値より低ければ、ブール変数「バックプレッシャ」を、ステップ１５０６で偽にセットし、ルーチンを終了する。そうでなければ、ステップ１５０８で判定した際に、現在のデータ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートより高い場合、次にステップ１５１０で判定した際に、ブール変数「バックプレッシャ」が現時点で値が真となっている場合、ステップ１５１２で判定した際に、現在の瞬間データ伝送レート（図１４のステップ１４０４参照）が、最大データ伝送レートより高い場合には、ステップ１５１４で、サーバ又はサーバ／ポートを中断する中断時間をインクリメントして、データ伝送レートが、本デバイスに対して設定した最大データ伝送レートより高い状態に保つという事実を反映する。ステップ１５１２で判定した際に、瞬時データ伝送レートが最大データ伝送レートより高くない場合は、中断期間の再計算は全く必要ない。ステップ１５１０で判定した際に、ブール変数「バックプレッシャ」が真でない場合は、ブール変数「バックプレッシャ」を真にセットし、ステップ１５１６で中断時間を計算する。変数「中断」で保存した中断時間を、サーバ又はサーバ／ポートのデータ伝送レートをサーバ又はサーバ／ポートに対して設定した最大データ伝送レートより低くするために、各１／ｎ秒間にサーバ又はサーバ／ポートを休止すべき時間として計算する。加算値「スロップ」を、確実にサーバ又はサーバ／ポートに対するデータ伝送レートを最大データ伝送レートより低く抑えるために、推定値に加える。次に、ステップ１５１８では、中断メッセージを、変数「中断」の現在値を用いて、サーバ又はサーバ／ポートのポートに送信する。ステップ１５０８で判定した際に、現在のデータ伝送レートが、本デバイスに対して設定した最大データ伝送レートより高くない場合、ステップ１５２０で判定した際に、ブール変数「バックプレッシャ」の現在値が真でなければ、ステップ１５１８で次の中断メッセージを送信し、ルーチンを終了する。
【００３４】
図１６は、図１０Ａ〜図１０Ｄを参照して記述した本発明の第２実施例に従い、図１４のステップ１４１０で呼出した、ルーチン「伝送レート調整」の第２の実行に関する制御フローチャートである。図１５でのように、ステップ１６０２で、現在の伝送レートを計算する。ステップ１６０４で判定した際に、現在の伝送レートが低閾値より高い場合、及びステップ１６０６で判定した際に、ブール変数「バックプレッシャ」が真の場合、次にステップ１６０８で再開メッセージをサーバ又はサーバ／ポートに送信し、ブール変数「バックプレッシャ」を偽にセットする。そうでなければ、ステップ１６１０で判定した際に、現在のデータ伝送レートが、サーバ又はサーバ／ポートに対して設定した最大データ伝送レートを超える場合で、次にステップ１６１２で判定した際に、ブール変数「バックプレッシャ」が現時点で値が偽となっている場合は、ステップ１６１４で、中断メッセージをサーバ又はサーバ／ポートに送信する。
【００３５】
本発明について、特定の実施例に関して記述したが、本発明をこれらの実施例に限定するものではない。本発明の精神の範囲内での変更例は、当業者には明らかであろう。例えば、本発明の実施例を、ブレードシステムの仮想接続マネージャ、又はブレードシステムのサーバ内のポートからのデータ伝送をモニタできるブレードシステムの別の構成要素において存在する、或は実行するハードウェア回路、ファームウェア、及び／又はソフトウェアにおいて、実装してもよい。本発明を、例えばモジュール構成、制御構造、データ構造、変数、論理構造、ルーチンフローといった、一般的なハードウェア設計、ファームウェア設計、及び／又はソフトウェア設計パラメタを変えることで、多様な方法で実装できる。上述したように、サーバを、実装に応じて、特定種類の通信媒体上の、全ての通信媒体上の、又は特定ポートを介した最大伝送レートに設定してもよい。別の実装例では、最大伝送レートを、サーバ群に対して又はブレードシステム全体に対して設定できる。特定の実施例では、個別のサーバ、サーバ内のポート、サーバ群の組合せを、最大データ伝送レートに関して設定し、フロー制御して、確実に設定最大データ伝送レートを超えないようにしてもよい。全ての場合において、制御サーバ、ポート、又はサーバ群のデータ伝送レートをモニタし、フロー制御メッセージ又は信号を使用して、確実に各設定データ伝送レートを超えないようにする。以上、本発明について、マルチサーバエンクロージャのコンテキストに関して記述したが、本発明を、デバイスが通信媒体へのポートを含む他のタイプのマルチデバイスエンクロージャに適用してもよい。上述した実装例では、モニタルーチンを各間隔各サーバ又はサーバ／ポートに対して呼出すが、別の実装例では、モニタルーチンは、１回の呼出し中に、複数のサーバ及び／又はサーバ／ポートをモニタ及びフロー制御してもよい。
【００３６】
以上の記述では、説明を目的として、本発明について完全に理解させるために、特定の用語を使用した。しかしながら、本発明を実施するのに具体的詳細は必要でないことは、当業者には明らかであろう。以上の本発明の特定実施例に関する記述は、例示及び説明目的で提示したものである。そうした記述は、包括的なものではなく、或は本発明を開示した厳密な形に制限するものでもない。上記教示を考慮して、多数の変更例及び変形例が可能である。本発明の原理及びその実用化について最も良く説明して、当技術分野で熟練した他の者が本発明及び様々な実施例を、意図した特定の使用に適するように様々な変更例と共に、最大限に活用可能にするために、実施例を示し、記述した。本発明の範囲については、以下の請求項及びそれらの同等物によって規定されるものとする。
【図１】
0005400135.tif 000002
【図２】
0005400135.tif 000003
【図３Ａ】
0005400135.tif 000004
【図３Ｂ】
0005400135.tif 000005
【図４Ａ】
0005400135.tif 000006
【図４Ｂ】
0005400135.tif 000007
【図４Ｃ】
0005400135.tif 000008
【図５】
0005400135.tif 000009
【図６】
0005400135.tif 000010
【図７Ａ】
0005400135.tif 000011
【図７Ｂ】
0005400135.tif 000012
【図７Ｃ】
0005400135.tif 000013
【図８Ａ】
0005400135.tif 000014
【図８Ｂ】
0005400135.tif 000015
【図８Ｃ】
0005400135.tif 000016
【図８Ｄ】
0005400135.tif 000017
【図８Ｅ】
0005400135.tif 000018
【図９Ａ】
0005400135.tif 000019
【図９Ｂ】
0005400135.tif 000020
【図９Ｃ】
0005400135.tif 000021
【図９Ｄ】
0005400135.tif 000022
【図９Ｅ】
0005400135.tif 000023
【図９Ｆ】
0005400135.tif 000024
【図９Ｇ】
0005400135.tif 000025
【図９Ｈ】
0005400135.tif 000026
【図９Ｉ】
0005400135.tif 000027
【図９Ｊ】
0005400135.tif 000028
【図９Ｋ】
0005400135.tif 000029
【図１０Ａ】
0005400135.tif 000030
【図１０Ｂ】
0005400135.tif 000031
【図１０Ｃ】
0005400135.tif 000032
【図１０Ｄ】
0005400135.tif 000033
【図１１Ａ】
0005400135.tif 000034
【図１１Ｂ】
0005400135.tif 000035
【図１２】
0005400135.tif 000036
【図１３】
0005400135.tif 000037
【図１４】
0005400135.tif 000038
【図１５】
0005400135.tif 000039
【図１６】
0005400135.tif 000040