(58)【調査した分野】(Int.Cl.,DB名)
前記コントローラはさらに、前記第1の下位スイッチおよび前記第2の下位スイッチにそれぞれの送信時間スロットを交互に割当てることによって、データパケットを前記第1の受動光スプリッタを通して前記上位スイッチに送信するように、前記第1の下位スイッチおよび前記第2の下位スイッチを制御するように構成されている、請求項1〜4のいずれかに記載のコンピュータネットワーク。
前記第2の受動光スプリッタに結合されたミラーをさらに備え、前記ミラーは、前記第2の受動光スプリッタから受信した光信号を、前記第2の受動光スプリッタおよび前記第1の受動光スプリッタを通して前記第2の上位スイッチに反射するように構成されている、請求項12に記載のコンピュータネットワーク。
前記上位スイッチにより、第4のデータパケットを、前記第1の光スプリッタおよび前記第1の下位スイッチに結合された第2の光スプリッタを通して前記第1の下位スイッチに送信するステップをさらに含む、請求項14〜17のいずれかに記載の方法。
【発明を実施するための形態】
【0010】
説明のための特定の実装例の説明
以下において、コンピュータネットワークにおける帯域幅を増大するためのシステムおよび方法に関連するさまざまな概念と、このシステムおよび方法の実装例を、より詳しく説明する。先に紹介し以下でより詳しく述べる上記さまざまな概念は、実装の具体的ないずれの態様にも限定されないので、数多くの方法のうちのどの方法でも実装し得る。具体的な実装およびアプリケーションの例を、主に説明のために提供する。
【0011】
図1は、光スプリッタに基づく代表的なコンピュータネットワーク100である。ネットワーク100は、上位スイッチ105と、2つの下位スイッチ110aおよび110b
(包括的に下位スイッチ110と呼ぶ)と、受動(パッシブ型)光スプリッタ115と、コントローラ120とを含む。上位スイッチ105、下位スイッチ110、光スプリッタ115、およびコントローラ120を結ぶ線は、ネットワーク100内の通信リンクを表わす。上位スイッチ105は、各々が対応する下位スイッチ110に結合されている2つの直接通信リンクを含む。上位スイッチ105からの第3の通信リンクは、光スプリッタ115に結合している。光スプリッタ115も、各下位スイッチ110に結合されている。
【0012】
直接通信リンクのうちの一方は、第1の下位スイッチ110aのポート111を上位スイッチ105のポート106に結合する。もう一方の直接通信リンクは、第2の下位スイッチのポート114を上位スイッチのポート108に結合する。共有通信リンクが上位スイッチのポート107を光スプリッタ115に結合する。上位スイッチ105のポート107から送信された信号は、光スプリッタ115によって分割され、第1の下位スイッチ110aに(ポート112を介して)送信されるとともに第2の下位スイッチ110bに(ポート113を介して)送信される。
【0013】
いくつかの実装例において、上位スイッチ105から下位スイッチ110までの直接通信リンクは、マルチモード光ファイバケーブルによって形成されており、上位スイッチ105から光スプリッタ115までの通信リンクと光スプリッタ115から下位スイッチ110までの通信リンクは、シングルモード光ファイバケーブルによって形成されている。マルチモード光ファイバケーブルは、シングルモード光ファイバケーブルよりも低価格である場合がある。マルチモード光ファイバケーブルの光学特性は、直接通信リンクで使用するのに適しているので、マルチモード光ファイバケーブルを用いて直接通信リンクを形成すると、ネットワーク100の総コストを下げることができる。シングルモード光ファイバケーブルは、マルチモード光ファイバケーブルと比較して、光スプリッタ115等の受動光スプリッタによって分割された光信号をより確実に送信できる。
【0014】
光スプリッタ115によって、ネットワーク100内の帯域幅を、変化する帯域幅需要に応じて割当て直すことができる。たとえば、光スプリッタ115は上位スイッチ105からの光信号を受信できる。その場合、光スプリッタ115は受信した信号を下位スイッチ110双方に受動的に出力することができる。したがって、共有リンクから光スプリッタ115を通して与えられた帯域幅は、第1の下位スイッチ110aまたは第2の下位スイッチ110bいずれかに割当てることができる。いくつかの実装例において、コントローラ120は、共有リンクの帯域幅のうちのより大きな割合を、帯域幅需要がより大きい下位スイッチ110に割当てることができる。共有リンクは、たとえば下位スイッチ110と上位スイッチ105との通信に対して時間領域多重化技術を用いることにより、下位スイッチ100双方が使用できるようになる。
【0015】
いくつかの実装例では、1×2光スプリッタ115を、2×2受動光スプリッタを用いて実現することができる。2×2受動光スプリッタは、多くの光通信ネットワークで見られる、一般的に使用されている装置であり、いくつかの製造会社から容易に入手できる。これは、2つの上側ポートと2つの下側ポートとを含む。上側ポートのうちのいずれかで受信された信号は下側ポート双方に送られ、下側ポートのうちのいずれかで受信された信号は上側ポート双方に送られる。1×2光スプリッタ115を実現するには、2×2光スプリッタの使用されていない上側ポートを切断状態のままにしておけばよい。いくつかの実装例では、
図6A、
図6Bおよび
図7に関連して以下でさらに説明するように、2×2光スプリッタを用いて任意の数の入力と出力を有する1つの光スプリッタを実現できる。
【0016】
いくつかの実装例において、ネットワーク100はデータセンターを表わす。
図1のネットワーク100は、本開示のために大幅に簡略化されている。データセンターは、スイ
ッチを通して階層状に相互接続されたいくつかの計算装置を含み得る。たとえば、上位スイッチ105または下位スイッチ110は、一群の、サーバ等の計算装置に各々が接続されたトップ・オブ・ラック(top-of-rack)(TOR)スイッチを表わし得る。いくつか
の実装例では、データセンターは何百または何千ものサーバを含む。下位のスイッチ110を、上位スイッチ105等の上位スイッチを通して互いに接続することができる。この上位スイッチは、下位スイッチ110間のまたは下位スイッチとネットワーク100の外部に位置する計算装置との間のデータ通信をルーティングする。
【0017】
先に示したように、ネットワークは、下位スイッチ110aおよび110bに加えて多数の下位スイッチを含み得る。各下位スイッチは多数のサーバに結合し得る。いくつかの実装例において、各サーバは、データバスを介して互いに結合された、少なくとも1つのプロセッサと、メモリと、ネットワークインターフェイスカード(NIC)とを含み得る。プロセッサは、メモリに格納されているコンピュータで実行可能な命令を実行することにより、多様な動作を実現できる。たとえば、各サーバのプロセッサは、ネットワーク100によってホストされているクラウドコンピューティングサービスに関連する動作、または、ネットワーク100内のデータ記憶またはアクセスに関連する動作を実現できる。
【0018】
この2つの下位スイッチ110の相対的な帯域幅需要は、時間の関数として大幅に変動し得る。たとえば、ある期間中において、多数のユーザが、第1の下位スイッチ110aに結合されたサーバ上でホストされているファイルまたはアプリケーションへのアクセスを要求する一方で、第2の下位スイッチ110bに結合されたサーバに対するアクセス要求が相対的に少なく、結果として、第1の下位スイッチ110aへのおよび第1の下位スイッチ110aからのトラフィック量が、第2の下位スイッチ110bのネットワークトラフィック量よりも多くなる場合がある。他の期間中では、これらの相対的な帯域幅需要が逆になる、または、下位スイッチ110双方の帯域幅需要が実質的に等しくなる場合がある。光スプリッタ115を経由する共有リンクは、さまざまな期間中に特定の下位スイッチに対する帯域幅の増大を実現するときの柔軟性を提供し、静的構成においてすべてのスイッチに対する全帯域幅を実現するのに必要な物理的機器をインストールするよりも、価格および複雑度が低い。上位スイッチ105から下位スイッチ110への直接リンクはまた、これらが故障しないと想定して、各下位スイッチ110に対して最小の帯域幅を保証する。いくつかの実装例において、直接および/または共有リンクに、直接および/または共有リンクを追加することにより、固定帯域幅と動的帯域幅の比率を変化させてもよい。
【0019】
上位スイッチ105から光スプリッタ115への通信は、光スプリッタ115を通して下位スイッチ110aおよび110b双方に送信される。結果として、このリンクに沿って上位スイッチ105から送信されるデータパケットは、いずれの下位スイッチ110が意図された受信者であるかにかかわらず、下位スイッチ110双方によって受信される。共有リンクに沿って送信されるデータパケットが、正しい下位スイッチ110によって受信され、受信者として意図されていないスイッチによって適切に無視されることを保証するための技術がいくつかある。
【0020】
いくつかの実装例において、上位スイッチ105から光スプリッタ115に送信されるデータパケットは、宛先スイッチの表示を含むヘッダ情報を含み得る。各下位スイッチ110には固有識別子を割当てることができる。たとえば、この識別子は、下位スイッチ110に接続されたサーバに対応付けられた、または下位スイッチ110そのものに対応付けられた、MACアドレス等のハードウェアアドレスまたはIPアドレスであってもよい。あるデータパケットの宛先の固有識別子に対応する情報は、データパケットが上位スイッチ105から光スプリッタ115に送信されるときにこのデータパケットのヘッダに含めることができる。このパケットが下位スイッチ110に送信されるとき、各下位スイッ
チ110は、自身が接続されているサーバの識別子を、パケットのヘッダに含まれている識別子と比較する。一致している場合は下位スイッチ110が意図された受信者であることを示しているので、下位スイッチ110は、たとえばデータパケットを適切なサーバに転送することにより、このデータパケットを適切に処理できる。そうでなければ、下位スイッチ110はこのデータパケットを破棄すればよい。
【0021】
他の実装例では、異なる変調フォーマットを用いてパケットを上位スイッチ105から下位スイッチ110にスプリッタ115を経由して送信することができる。たとえば、第1の下位スイッチ110aを、第1の変調フォーマットに従って送信されるパケットのみを受信するように構成してもよい。第2の下位スイッチ110bを、第2の変調フォーマットで送信されるパケットを受信するように構成してもよい。上位スイッチ105は、第1の下位スイッチ110aを宛先とする第1の変調フォーマットのデータパケットを送信することができ、かつ、下位スイッチ110bを宛先とする第2の変調フォーマットのデータパケットを送信することができる。各下位スイッチ110がデータを受信するとき、スイッチ110は、検査を実行して、入来するパケットが指定された変調フォーマットに従ってフォーマットされているか否か判断し、指定されたフォーマットのパケットのみを処理することができる。異なるフォーマットのパケットは無視することができる。
【0022】
上記技術は各々、受信した各パケットに対するある程度のスイッチパケット処理を伴う。他の実装例では、このようなパケット処理を避けることができる。たとえば、いくつかの実装例において、光スプリッタ115を経由する共有リンクの帯域幅を、時分割多重化(TDM)、波長分割多重化(WDM)、符号分割多重化(CDM)、またはその他いずれかの多重化技術といった多重化技術に従って割当てることができる。たとえば、TDM方式を用いて共有リンクの帯域幅を割当てることができる。下位スイッチ110それぞれにパケットを送信するために別々の時間スロットを割当てることができる。上位スイッチ105から下位スイッチ110各々にパケットを送信するために割当てられる時間スロットの数、期間、および時間的な位置を決定するようにコントローラ120を構成することができる。コントローラ120はまた、上位スイッチ105および下位スイッチ110と通信してこれらのスイッチを同期させることにより、これらのスイッチを時分割方式に準拠させることができる。データセンターという状況でスイッチ間の距離が比較的短ければ、このような同期を容易に高精度で取ることができる。光スプリッタ115を経由する上位スイッチ105から第1の下位スイッチ110aへの送信のために確保された時間スロット中、コントローラ120は、第2の下位スイッチ110bを、共有リンクを通して光スプリッタ115から送信されるデータパケットを無視するように制御することができる。たとえば、コントローラ120は、第2の下位スイッチ110bのトランシーバを、第1の下位スイッチ110aとの通信用に確保された時間スロット中は「オフする」ように制御することができる。この技術によって消費電力を削減できる。なぜなら、第2の下位スイッチ110bは、第1の下位スイッチ110aとの通信用に確保された時間スロット中に送信されるパケットを処理することによって計算パワーを無駄にすることがないからである。同様に、光スプリッタ115を経由する上位スイッチ105から第2の下位スイッチ110bへの送信用に確保された時間スロット中、コントローラ120は、第1の下位スイッチ110aを「オフする」ように制御することにより、この期間中は光スプリッタ115を経由して送信されるパケットを第1の下位スイッチ110aが受信または処理しないようにすることができる。なお、各下位スイッチ110は引続き、時分割方式とは関係なく、その直接通信リンクを経由したデータを受信してもよい。なぜなら、直接通信リンクを介して受信されるデータパケットの宛先は明白であるからである。
【0023】
各時間スロットの絶対および相対期間を、変化する帯域幅需要に応じて変化させてもよい。たとえば、第1の下位スイッチ110aの帯域幅需要が第2の下位スイッチ110bよりも大きい期間中は、光スプリッタ115を経由して第1の下位スイッチ110aにパ
ケットを送信するために割当てられる時間スロットを、第2の下位スイッチ110bにデータを送信するために確保される時間スロットよりも実質的に長い期間にしてもよい。これに代えて、すべての時間スロットを実質的に等しい期間にし、より多くの数の時間スロットに、第1の下位スイッチ110aとの通信を割当てて、利用できる帯域幅を増大することができる。ネットワーク100内の帯域幅需要が変化すると、コントローラ120は、下位スイッチ110各々にデータを送信するために確保される時間スロットの相対期間または数を調整することによって、この変化に応じることができる。
【0024】
いくつかの実装例では、共有リンクの帯域幅を、WDM方式に従って割当てることができる。各下位スイッチに、共有リンクを介してデータパケットを受信するために固有範囲の波長を割当てることができる。上位スイッチ105は、さまざまな波長を用いてデータパケットを送信するように構成することができ、意図された宛先に応じて各データパケットに使用する波長を選択できる。たとえば、いくつかの実装例において、各下位スイッチ110は、他の各下位スイッチ110が受信する波長と異なる特定の波長の光信号を受信するように構成された光受信機を含む。したがって、第1の下位スイッチ110aに送信されたデータを、下位スイッチ110bが受信することはできない。他の実装例において、下位スイッチ110双方に対応付けられた光受信機が受信できる波長が幾分重なっていてもよい。これらの実装例において、各下位スイッチに、固有の波長または一組の波長を割当てることができ、各下位スイッチを、コントローラ120によって、割当てられた波長範囲内で送信されていないデータを無視するように制御することができる。
【0025】
このように、WDMを用いることによって、光スプリッタ115を経由する直接通信リンクを論理的に生成してもよい。たとえば、光の複数の波長を光スプリッタ115を通して送信してもよい。各波長は独立した通信リンクを表わし得る。上位スイッチ105から下位スイッチ110aへのある直接通信リンクを、上位スイッチ105と下位スイッチ110aとの間の直接通信リンクを論理的に表わす、光スプリッタ115を通してポート112に物理的に送信される単一波長チャネルで構成することができる。別の直接通信リンクも、上位スイッチ105と下位スイッチ110bとの間の直接通信リンクを論理的に表わす、光スプリッタ115を通して物理的に送信される別の単一波長チャネルで構成することができる。最後に、第3の波長を用いて上位スイッチ105と下位スイッチ110双方との間の通信を行なうことができる。WDM技術が使用されるいくつかの実装例において、光スプリッタ115を経由する上位スイッチ105から下位スイッチ110双方へのデータパケットの送信は、同時に発生してもよい。したがって、下位スイッチ110それぞれとの通信用に別々の時間スロットを確保する必要がない場合がある。
【0026】
いくつかの実装例において、光スプリッタ115を経由する共有リンクを双方向にし、下位スイッチ110が光スプリッタ115を経由してデータを上位スイッチ105に送信できるようにすることができる。いくつかの実装例において、光スプリッタ115、下位スイッチ110a、下位スイッチ110b、および上位スイッチ105の間に、サーキュレータを配置することにより、2つの別々の光スプリッタのうちの一方を下流通信に用い他方を上流通信に用いるのとは対照的に、1つの光スプリッタ115を経由した双方向通信が容易に行なえるようにしてもよい。上記割当て技術のうちのいずれかを、下位スイッチ110から上位スイッチ105への通信に適用してもよい。たとえば、TDM方式を用いることにより、第1の下位スイッチ110aが指定された時間スロット中にパケットを共有リンクを通して送信する一方で、第2の下位スイッチ110bが他の時間スロット中にパケットを送信できるようにしてもよい。これに代えて、下位スイッチ110各々に、上位スイッチ105に対する送信用のある範囲の波長を割当ててもよい。コントローラ120を用いて、帯域幅需要に基づき適切な割当て比率を決定することができ、かつ、下位スイッチ110を、決定した割当てに従うように制御することができる。下位スイッチ110はまた、データをそれぞれの直接リンクを介して上位スイッチ105に送信すること
ができる。これにより、共有リンクが如何にして割当てられるかにかかわらず、各下位スイッチ110に対して最小帯域幅を保証する。
【0027】
図2Aは、説明のための実装例に従う、
図1に示されるコントローラ120のブロック図である。コントローラ120は、トラフィックモニタモジュール230と、帯域幅割当モジュール240と、データベース260とを含む。コントローラ120の構成要素は、ネットワークパラメータを決定するように機能し、かつ、
図1に示される光スプリッタ115等の光スプリッタを経由して共有されるネットワークリンクの帯域幅を割当てるように機能する。コントローラ120によって行なわれる帯域幅割当ては、帯域幅需要が時間とともに変動するコンピュータネットワーク内のネットワークトラフィックを、より効率的にルーティングするのに役立ち得る。
【0028】
コンピュータ120のモジュールは、さまざまなやり方で実現できる。たとえば、いくつかの実装例において、トラフィックモニタモジュール230および帯域幅割当モジュール240は、汎用プロセッサ上で実行されるコンピュータ命令によって規定することができる。たとえば、トラフィックモニタモジュール230および帯域幅割当モジュール240を、ネットワーク資源のモニタリングと供給に関連する一組の論理演算によって規定することができる。他の実装例において、トラフィックモニタモジュール230および帯域幅割当モジュール240を、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)といった専用論理回路によって実現することができる。たとえば、これらのモジュールは、FPGAまたはASIC内の回路と論理命令の集合体を含み得る。これらのモジュールはまた、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を生成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはこれらを1つ以上組合わせたものを構成するコードを、含み得る。たとえば、トラフィックモニタモジュール230、帯域幅割当モジュール240、およびデータベース260は、1つ以上のデータ処理装置、計算装置、またはプロセッサを含み得るまたは共有し得る。
【0029】
いくつかの実装例において、トラフィックモニタモジュール230は、ネットワーク100全体のネットワークトラフィックをモニタリングすることができる。たとえば、トラフィックモニタモジュール230は、下位スイッチ110および上位スイッチ105から、現在の帯域幅の使用量と各スイッチが送信および受信しているネットワークフローの種類に対応する情報を受けることができる。これに代えて、トラフィックモニタモジュール230は、ネットワークの輻輳をモニタリングすることによって、帯域幅需要を求めることができる。ネットワークモニタモジュール230は、第1の下位スイッチ110aが第2の下位スイッチ110bよりも輻輳していると判断することがある。たとえば、輻輳は、ある期間中に下位スイッチ110各々が落としたデータパケットの相対的な数をモニタリングすることによって判断できる。トラフィックモニタモジュールは、落としたデータパケットがより多い下位スイッチ110が帯域幅の増大を要求するという判断を下すことができる。
【0030】
いくつかの実装例において、ネットワーク100内の帯域幅需要は、時間の経過に伴って変化し得る。たとえば、トラフィックモニタモジュール230は、第1の期間中に、第1の下位スイッチ110aの帯域幅需要が第2の下位スイッチ110bよりも大きいと判断することがある。トラフィックモニタモジュール230は、次の期間中に、第2の下位スイッチ110bの帯域幅需要が第1の下位スイッチ110aよりも大きいと判断するかもしれない。いくつかの実装例において、トラフィックモニタモジュール230は、ネットワークトラフィックのパターンを時間の関数として認識してもよく、帯域幅需要または認識したパターンに対応する情報をデータベース260に格納してもよい。
【0031】
帯域幅割当モジュール240は、第1の下位スイッチ110aおよび第2の下位スイッチ110bに割当てられるべき相対的な帯域幅を求めることができる。いくつかの実装例において、帯域幅割当モジュールは、帯域幅の割当てを、共有通信リンク上で利用できる帯域幅の異なる割合をそれぞれ第1の下位スイッチ110aと第2の下位スイッチ110bに割当てることによって、調整することができる。帯域幅の割当ては、トラフィックモニタ230からの情報に基づいていてもよい。たとえば、帯域幅割当モジュール240は、トラフィックモニタモジュール230と直接通信してもよく、または、データベース260からネットワークトラフィック情報を取出してもよい。次に、帯域幅割当モジュールは、需要がより大きい下位スイッチに、利用できる帯域幅のより大きな割合を割当てることができる。2つの下位スイッチの帯域幅需要が実質的に等しい場合、帯域幅割当モジュールは、共有通信リンクの約50%を2つの下位スイッチ110各々に割当ててもよい。帯域幅割当モジュール240によって決定された帯域幅割当ては、データベース260に格納することができる。
【0032】
帯域幅割当モジュール240はまた、上位スイッチ105および下位スイッチ110と通信することにより、決定した帯域幅割当てに従って確実に帯域幅が割当てられるようにすることができる。帯域幅割当モジュール240は、ネットワーク100内のデータの送信を制御することができる。いくつかの実装例において、帯域幅割当モジュール240は、TDM方式で、光スプリッタ115を経由する下位スイッチ110と上位スイッチ105との間の通信のために確保される時間スロットの相対的な期間または量を調整することができる。たとえば、帯域幅割当モジュール240が、帯域幅を2つの下位スイッチ110間で等しく分割すべきであると判断した場合、帯域幅割当モジュール240は、2つの下位スイッチ110各々に対し、実質的に期間が等しい時間スロットを割当てることができる。時間スロットの相対的な期間は、帯域幅割当ての変更に応じて変更することができる。他の実装例において、帯域幅割当モジュール240は、帯域幅を他の手段によって調整することができる。たとえば、帯域幅割当モジュール240は、2つの下位スイッチ110各々との通信に利用できる波長の数が各スイッチに割当てられた帯域幅に比例するWDM方式を実現することができる。
【0033】
図2Bは、説明のための実装例に従う、
図1に示される上位スイッチ105のブロック図である。上位スイッチ105は、光送信機モジュール265と、ルーティングモジュール270と、メモリ280とを含む。上位スイッチ105のルーティングモジュール270は、さまざまなやり方で実現できる。たとえば、いくつかの実装例において、ルーティングモジュール270は、汎用プロセッサ上で実行されるコンピュータ命令によって規定できる。他の実装例において、上位スイッチ105は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)といった、ルーティングモジュール270を実現しデータパケットの送信および受信に関連するその他のタスクを実行する専用論理回路を含み得る。いくつかの実装例において、メモリ280を用いて、上位スイッチ105によって送信される予定のデータパケットを格納するためのバッファを実現することができる。メモリ280はまた、ネットワークトポロジ情報またはルーティングテーブル等の他の情報を格納することができる。光送信機モジュール265は
図2Bでは1つの装置として示されているが、いくつかの実装例では、光送信機モジュール260を、各々が上位スイッチ105の対応するポートに接続されている別々のトランシーバとして実現してもよい。
【0034】
いくつかの実装例において、ルーティングモジュール270は、データパケットを下位スイッチ110のうちの一方に、直接リンクを用いて(すなわちポート106またはポート108を介して)送信すべきかまたは共有リンクを用いて(すなわちポート107を介して)送信すべきか判断することができる。たとえば、ルーティングモジュール270は
、メモリ280に格納されたスタックまたはキューからデータパケットを取出すことができる。次に、ルーティングモジュール270は、取出したデータパケットを送信するときに経由するポートを決定することができる。いくつかの実装例において、ルーティングモジュール270は、データパケットに含まれている情報を用いてデータパケットを送信するときに経由するポートを選択することができる。また、ルーティングモジュールは、メモリ280に格納されているルーティングテーブルと通信してデータパケットの送信ポートを選択してもよい。
【0035】
いくつかの実装例において、ルーティングモジュール270は、他の情報を用いてデータパケットの送信に適したポートを選択することができる。たとえば、コントローラ120は、上記のように、ポート107に結合された共有リンクに対する帯域幅割当てを決定することができる。ルーティングモジュール270は、この帯域幅割当てを用いてデータパケット送信のためのポートを選択することができる。いくつかの実装例において、ルーティングモジュールは、コントローラ120と直接通信することにより、帯域幅割当てに対応する情報を受信することができる。他の実装例において、コントローラ120は、帯域幅割当てに対応する情報をメモリ280に送信することができ、ルーティングモジュール270は、この情報を、メモリ280に問い合わせることによって取得することができる。
【0036】
いくつかの実装例において、ルーティングモジュール270は、データパケットをメモリ280から取得することができ、最初に、このデータパケットを意図された下位スイッチにそれぞれの直接通信リンクを通して送信することを試みることができる。たとえば、この直接通信リンク上の帯域幅を利用できる場合、ルーティングモジュール270は、光送信機モジュール265を制御して、このデータパケットを、直接リンクに結合された各ポート(すなわちポート106またはポート108)を通して送信することができる。いくつかの実装例において、所与の下位スイッチに結合された直接通信リンクが、そのスイッチとの通信に好ましい経路である場合があり、この直接通信リンクを、これが飽和するまで、または、その帯域幅の予め選択された部分が消費されるまで、使用することができる。次に、ルーティングモジュール270は、共有通信リンクの帯域幅を下位スイッチとの通信に利用できるか否か判断することができ、追加パケットをポート107を経由する共有通信リンクによって送信することができる。
【0037】
他の実装例において、直接通信リンクは、必ずしも下位スイッチとの通信に好ましい経路ではない場合がある。たとえば、直接通信リンクを経由する所与の下位スイッチへの帯域幅が、共有通信リンクを経由するこのスイッチとの通信に利用できる帯域幅と実質的に等しいとき、ルーティングモジュール270は、他の通信リンクよりも好ましい通信リンクがない等コストマルチパス(ECMP)ルーティングという方策を実現することができる。ルーティングモジュール270は、たとえばメモリ280に格納されているECMPテーブルに問い合わせて、データパケットを下位スイッチに各直接通信リンクを通して送信すべきかまたは共有通信リンクを通して送信すべきか判断することができる。
【0038】
直接通信リンクを経由する所与の下位スイッチへの帯域幅が共有通信リンクを経由するこのスイッチとの通信に利用できる帯域幅と等しくない場合、ルーティングモジュール270は、重み付けコストマルチパス(WCMP)ルーティングという方策を実現することにより、データパケットを直接通信リンクによって送信すべきかまたは共有通信リンクによって送信すべきかを判断することができる。たとえば、共有通信リンクは、意図された下位スイッチとの通信に利用できる帯域幅が、このスイッチへの直接通信リンクの3倍である場合がある。ルーティングモジュール270は、データパケットに対してどのリンクを使用すべきか判断するにあたり、この比率を使用することができる。たとえば、ルーティングモジュールは、共有通信リンクに向けられた3つのデータパケットごとに、1つの
データパケットを直接通信リンクに向ける。
【0039】
上記のように、光送信機モジュール265は、各々が対応するポートに結合されたいくつかの光送信機を含み得る。いくつかの実装例において、各ポートは、2つ以上の送信機を有し得る。たとえば、各ポートは、各々が異なる波長で光信号を送信するように構成された多数の送信機に結合されていてもよい。ルーティングモジュール270は、送信機各々を制御することにより、WDMおよび/またはTDMデータ送信方式を実現することができる。
【0040】
図3は、コンピュータネットワークにおいてデータを送信するプロセス300のフロー図である。プロセス300は、上位スイッチにより、第1のデータパケットを、直接通信リンクによって第1の下位スイッチに送信することを含む(段305)。プロセス300は、上位スイッチにより、第2のデータパケットを、共有通信リンクによって上位スイッチに結合されている光スプリッタを通して、第1の下位スイッチに送信することを含む(段310)。プロセス300は、上位スイッチにより、第3のデータパケットを、光スプリッタを通して第2の下位スイッチに送信することを含む(段315)。
【0041】
プロセス300は、上位スイッチにより、第1のデータパケットを、直接通信リンクによって第1の下位スイッチに送信することを含む(段305)。この直接通信リンクは、上位スイッチと第1の下位スイッチとの間の通信専用である。したがって、第1のデータパケットが別の計算装置によって誤って処理されるリスクはなく、第1のデータパケットを、共有リンクによる通信を容易にするように設計された多重化方式に従って送信する必要はない。いくつかの実装例において、直接通信リンクは、上位スイッチおよび第1の下位スイッチのポートに結合されたマルチモード光ファイバケーブルである。マルチモード光ファイバケーブルはシングルモード光ファイバケーブルよりも低価格である場合がある。シングルモード光ファイバケーブルよりも低価格である場合がある。マルチモード光ファイバケーブルの光学特性は、直接通信リンクで使用するのに適しているので、マルチモード光ファイバケーブルを用いて直接通信リンクを形成すると、ネットワークの総コストを下げることができる。
【0042】
プロセス300は、上位スイッチにより、第2のデータパケットを、共有通信リンクによって上位スイッチに結合されている光スプリッタを通して、第1の下位スイッチに送信することを含む(段310)。光スプリッタは、第1の下位スイッチおよび第2の下位スイッチ双方に結合することができる。いくつかの実装例において、光スプリッタは、上位スイッチから受信した信号を受動的に分割しこの信号を下位スイッチ双方に送信する。信号が光スプリッタによって分割されるので、上位スイッチから光スプリッタへの通信リンクと、光スプリッタから第1および第2の下位スイッチへの通信リンクを、シングルモード光ファイバケーブルで形成することができる。シングルモード光ファイバケーブルは、マルチモード光ファイバケーブルと比較して、受動光スプリッタによって分割された光信号をより確実に送信できる。第1の下位スイッチのみによって処理されることが意図されている第2のデータパケットを第2の下位スイッチが処理するのを防止するために、多数の技術を使用できる。
【0043】
いくつかの実装例において、第2のデータパケットは、第2のデータパケットに付加されたヘッダ情報を含み得る。ヘッダ情報は、第1の下位スイッチをデータパケットの宛先として一意に特定する情報を含み得る。第1および第2の下位スイッチ双方が光スプリッタから第2のデータパケットを受信したとき、各下位スイッチは、ヘッダを検査することにより、このスイッチが第2のデータパケットを処理することが意図されているか否か判断することができる。第1の下位スイッチが、このスイッチが意図された宛先であると判断し、それに応じて第2のデータパケットを処理する場合がある。第2の下位スイッチが
、このスイッチが意図された宛先でないと判断し、したがってこのデータパケットを無視する場合がある。
【0044】
他の実装例において、WDMおよび/またはTDM等の多重化方式を用いて第2のデータパケットを送信することができる。たとえば、上位スイッチと下位スイッチに結合されたコントローラは、上位スイッチと第1の下位スイッチとの間の通信のために1つ以上の波長を割当てることができる。いくつかの実装例において、波長の数は、上位スイッチと第2の下位スイッチとの間の通信用に確保された帯域幅の量と比較して、第1の下位スイッチに割当てられるべき帯域幅の量に基づいて、決定される。したがって、第2のデータパケットを光スプリッタを通して第1の下位スイッチに送信することは、第2のデータパケットを、第1の下位スイッチのために確保された波長で送信することを含み得る。
【0045】
他の実装例において、時間スロットをそれぞれ、上位スイッチと2つの下位スイッチとの間の通信用に確保することができる。第2のデータパケットを送信することは、第2のデータパケットを、第1の下位スイッチのために確保された時間スロット中に送信することを含み得る。この時間スロット中、第2の下位スイッチに対応付けられた受信機をオフにすることによって、第2の下位スイッチが第2のデータパケットを処理するのを防ぐことができる。
【0046】
プロセス300は、上位スイッチにより、第3のデータパケットを、光スプリッタを通して第2の下位スイッチに送信することを含む(段315)。第3のデータパケットが第1の下位スイッチによって誤って処理されるのを防ぐために、第3のデータパケットは、第2の下位スイッチを第3のデータパケットの宛先として一意に特定するヘッダ情報を含み得る。第1および第2の下位スイッチ双方が光スプリッタから第3のデータパケットを受信したとき、各下位スイッチは、ヘッダを検査することにより、このスイッチが第3のデータパケットを処理することが意図されているか否か判断することができる。第2の下位スイッチが、このスイッチが意図された宛先であると判断し、それに応じて第3のデータパケットを処理する場合がある。第1の下位スイッチが、このスイッチが意図された宛先でないと判断し、したがってこのデータパケットを無視する場合がある。
【0047】
他の実装例において、コントローラは、上位スイッチと第2の下位スイッチとの間の通信のために1つ以上の波長を割当てることができる。波長の数は、上位スイッチと第1の下位スイッチとの間の通信用に確保された帯域幅の量と比較して、第2の下位スイッチに割当てられるべき帯域幅の量に基づいて、決定される。したがって、第3のデータパケットを光スプリッタを通して第2の下位スイッチに送信することは、第3のデータパケットを、第2の下位スイッチのために確保された波長で送信することを含み得る。
【0048】
他の実装例において、時間スロットをそれぞれ、上位スイッチと2つの下位スイッチとの間の通信用に確保することができる。第3のデータパケットを送信することは、第3のデータパケットを、第2の下位スイッチのために確保された時間スロット中に送信することを含み得る。この時間スロット中、第1の下位スイッチに対応付けられた受信機をオフにすることによって、第1の下位スイッチが第3のデータパケットを処理するのを防ぐことができる。
【0049】
図4は、共有通信リンクが下位スイッチに対して均等に分配されている代表的なコンピュータネットワーク400である。コンピュータネットワーク400は、5つの上位スイッチ405a〜405e(包括的に上位スイッチ405と呼ぶ)と、2つの下位スイッチ410aおよび410b(包括的に下位スイッチ410と呼ぶ)とを含む。各上位スイッチ405は、1つの直接通信リンクを介して各下位スイッチ410に結合している。各上位スイッチ405はまた、それぞれの受動光スプリッタ415a〜415e(包括的に光
スプリッタ415と呼ぶ)に結合している。各光スプリッタ415は、上位スイッチ405から受信した光信号を2つの出力信号に受動的に分割して、受信した光信号が光スプリッタ415を通して出力通信リンク双方に送信されるようにする。
【0050】
各光スプリッタ415の出力は、2つの下位スイッチ410に対して均等に分配される。すなわち、各光スプリッタ415は、1つのリンクを介して各下位スイッチ410に結合されている。この通信リンクの配置により、各下位スイッチ410に対して平均して等しい帯域幅を与えることが可能であり、その一方で、帯域幅の需要がより大きい下位スイッチ410に対して共有通信リンクの帯域幅を割当て直すことにより、ネットワーク400内の帯域幅を調整することができる。
図4に示される各光スプリッタ415は上位スイッチ405から受信した信号を2つの出力信号に分割しているが、他の構成が可能である。たとえば、光スプリッタ415は、上位スイッチ405から受信した入力信号を、下位スイッチ410に送信される3つ以上の信号に分割してもよい。いくつかの実装例において、追加のスプリッタ出力も、第1の下位スイッチ410aと第2の下位スイッチ410bに対して均等に分割されてもよく、または3つ以上の下位スイッチに対して均等に分割されてもよい。
【0051】
図4に示されるバランスのとれた構成は、下位スイッチ410間で帯域幅需要が長期間の平均で実質的に等しいと予測されるが下位スイッチ410が要求する帯域幅に短期間の変動があるかもしれないアプリケーションにおいて、特に有用となり得る。多くのデータセンターでは、特定の計算装置へのデータトラフィックおよび特定の計算装置からのデータトラフィックにバーストがあり、これらのバーストは一般的に短期間でありかつ時間的にランダムに分布している。バランスの取れたネットワーク400の配置はこのようなデータセンターにとって有用となり得る。
【0052】
図1および
図2Aに示されるコントローラ120のようなコントローラ(図示せず)を用いて、ネットワーク400内の共有リンクの帯域幅を割当ててもよい。たとえば、帯域幅を、上記のようにWDMおよび/またはTDMといった多重化方式を用いて割当ててもよい。コントローラは、下位スイッチ410双方の帯域幅需要をモニタリングすることができ、共有リンクへの帯域幅の割当てを、需要をより効率的に満たすように調整することができる。ネットワーク400のバランスが取れているという性質によって、帯域幅を迅速に増減することができ、一方で各上位スイッチ405と各下位スイッチ410との間の直接通信リンクは、下位スイッチ410ごとに、保証された最小帯域幅を提供する。
【0053】
図5は、共有通信リンクが3つ以上の下位スイッチに分配されている代表的なコンピュータネットワーク500である。ネットワーク500は、6つの上位スイッチ505a〜505f(包括的に上位スイッチ505と呼ぶ)と、4つの下位スイッチ510a〜510d(包括的に下位スイッチ510と呼ぶ)とを含む。各上位スイッチ505はまた、それぞれの受動光スプリッタ515a〜515f(包括的に光スプリッタ515と呼ぶ)に結合している。各光スプリッタ515は、上位スイッチ505から受信した光信号を2つの出力信号に受動的に分割して、受信した光信号が光スプリッタ515を通して出力通信リンク双方に送信されるようにする。説明の都合上、上位スイッチ505と下位スイッチ510との間の直接通信リンクは示していない。しかしながら、いくつかの実装例において、各上位スイッチ505は、1つ以上の直接通信リンクによって各下位スイッチ510に結合されていてもよい。このような直接通信リンクは、下位スイッチ510ごとに、保証された最小帯域幅を提供することができる。他の実装例において、ネットワーク500は、追加の光スプリッタ515を含み得る。たとえば、追加の光スプリッタ515は、各々が、それぞれの上位スイッチ505に結合しかつ一対の下位スイッチ510に結合するように構成されてもよい。下位スイッチ510のすべての対に結合された光スプリッタ515を含めることによって、帯域幅をより均等に割当てることができる。
【0054】
各光スプリッタ515の出力は、下位スイッチ510間で不均等に分配されている。たとえば、すべての光スプリッタ515は、第1の下位スイッチ510aへの1つのリンクを含む。しかしながら、他の下位スイッチ510b〜510dは各々、6つの光スプリッタ515のうちの2つにしか結合されていない。この配置では、下位スイッチ510b〜510dへの帯域幅と比較して、より平均的な帯域幅が下位スイッチ510aに与えられる。
図5に示される各光スプリッタ515は、上位スイッチ505から受信した信号を2つの出力信号に分割しているが、他の構成が可能である。たとえば、光スプリッタ515は、上位スイッチ505から受信した入力信号を、下位スイッチ510に送信される3つ以上の信号に分割してもよい。いくつかの実装例において、下位スイッチ510のうちの1つに対する帯域幅を増すために、追加のスプリッタ出力も第1の下位スイッチ510aと第2の下位スイッチ510bの間で不均等に分割してもよい。
【0055】
図6に示される不均等な構成は、下位スイッチ510aの帯域幅需要が、長期間の平均で、下位スイッチ510b〜510dの帯域幅需要を常に上回ると予測されるアプリケーションにおいて有用となり得る。たとえば、データが頻繁に下位スイッチ510b〜510d各々から下位スイッチ510aに転送されるまたはその逆のコンピュータネットワークの場合、ネットワーク500の不均等な構成によって、より効率的にデータを転送できる。
【0056】
いくつかの実装例において、
図1および
図2Aに示されるコントローラ120のようなコントローラ(図示せず)を用いて、ネットワーク500の通信リンクをより効率的に使用することができる。たとえば、下位スイッチ510b〜510dから下位スイッチ510aへの大量のデータ転送を必要とするアプリケーションの場合、コントローラは、共有リンクの帯域幅を割当てることによって、スイッチ510b〜510cが第1の期間中に上位スイッチ505にデータをアップロードできるようにしてもよい。これに続く期間では、コントローラは、上位スイッチ505がデータすべてを下位スイッチ510aにダウンロードできるようにする共有リンクを構成することによって、ネットワーク500のこの不均等な性質を利用してもよい。いくつかの実装例において、コントローラは、WDM方式を実現することによって、下位スイッチ510b〜510dからのアップロードと下位スイッチ510aへのダウンロードが実質的に同時に発生するようにしてもよい。
【0057】
図6Aは、受動光スプリッタ615を含む代表的なコンピュータネットワーク600である。ネットワーク600は、2つの上位スイッチ605aおよび605b(包括的に上位スイッチ605と呼ぶ)と、2つの下位スイッチ610aおよび610b(包括的に下位スイッチ610と呼ぶ)とを含む。ネットワーク600はまた、受動光スプリッタ615を含む。受動光スプリッタ615は4つの通信ポートを含む。ネットワーク600内の各スイッチは、光ファイバ通信リンクによって受動光スプリッタ615のそれぞれのポートに結合される。光スプリッタは、2つの上位スイッチ605のうちのいずれかから受信した信号を、2つの下位スイッチ双方に対して受動的に出力するように構成されている。たとえば、上位スイッチ605aから光スプリッタ615に送信された信号を分割して下位スイッチ610双方に出力することができる。同様に、上位スイッチ605bから光スプリッタ615に送信された信号を分割して下位スイッチ610双方に出力することができる。
【0058】
上述の通り、光ネットワークでは2×2受動光スプリッタ615が使用されることが多く、この受動スプリッタは比較的低コストで広範囲にわたって流通している。いくつかの実装例において、受動光スプリッタ615を用いて
図1に示される3ポートの光スプリッタ115を実現することができる。たとえば、上位スイッチ605aに接続されているポートを
図1の上位スイッチ105のポート107に接続し、下位スイッチ610aに接続
されているポートを
図1の下位スイッチ110aのポート112に接続し、下位スイッチ610bに接続されているポートを
図1の下位スイッチ110bのポート113に接続してもよい。光スプリッタ115に含まれるポートは光スプリッタ615に含まれるポートよりも少ないので、光スプリッタ615の1つのポート(すなわち
図6Aにおいて上位スイッチ605bに結合されているポート)を、接続されていない状態に保つだけでよい。これに代えて、この余分のポートを上位スイッチ105の別のポートに接続してもよい。このような冗長通信リンクを用いることで、上位スイッチ105に対する第1のリンクが故障した場合の信頼性を高くすることができる。
【0059】
光スプリッタ615を他の構成で用いることにより、任意の数の入力ポートと出力ポートを有する光スプリッタを実現することができる。たとえば、上記のように、光スプリッタ615を用いて、その上側ポートのうちの1つを非接続状態のままにしておくことにより、1×2光スプリッタを実現することができる。いくつかの実装例において、いくつかの光スプリッタ615を互いに結合することにより、入力ポートおよび出力ポートの数がより多い光スプリッタを実現することができる。追加の光スプリッタを有するネットワークのいくつかの例を以下で説明する。
【0060】
図6Bは、4つの受動光スプリッタ615a〜615d(包括的に受動光スプリッタ615と呼ぶ)を含む代表的なコンピュータネットワーク601である。このネットワークはまた、4つの上位スイッチ605a〜605d(包括的に上位スイッチ605と呼ぶ)と、4つの下位スイッチ610a〜610d(包括的に下位スイッチ610と呼ぶ)とを含む。受動光スイッチ615は各々、
図6Aに示される受動光スプリッタ615に似ている。たとえば、各受動光スプリッタ615は、4つのポート(すなわち2つの上側ポートと2つの下側ポート)を含み、上側ポートのうちのいずれかで受信した信号を下側ポート双方に送信するように構成される。いくつかの実装例において、ネットワーク601は、簡略化されたデータセンターネットワークを表わし得る。たとえば、下位スイッチ610は、データセンター内のサーバのような他の計算装置に結合できるトップ・オブ・ラックスイッチを表わし得る。上位スイッチ605を用いることにより、下位スイッチ610とこれらが接続されている計算装置との間の通信を容易にすることができる。
【0061】
受動光スプリッタ615は、上位スイッチ605と、下位スイッチ610と、他の3つの光スプリッタ615のうちの2つに結合されている。受動光スプリッタ615aの第1の下側ポートは、受動光スプリッタ615cの第1の上側ポートに結合されている。受動光スプリッタ615aの第2の下側ポートは、受動光スプリッタ615dの第1の上側ポートに結合されている。受動光スプリッタ615bの第1の下側ポートは、受動光スプリッタ615cの第2の上側ポートに結合されている。受動光スプリッタ615bの第2の下側ポートは、受動光スプリッタ615dの第2の上側ポートに結合されている。この構成によって、受動光スプリッタ615を、上位スイッチ605のうちの1つから受信した各信号を下位スイッチ610すべてに出力する1つの光スプリッタとして、論理的に機能させることができる。
【0062】
たとえば、上位スイッチ605aから送信された信号617は、受動光スプリッタ615aが受信することができる。受動光スプリッタ615aは、受信した信号617を、その下側ポート双方から出力して、信号617が受動光スプリッタ615cおよび615dによって受信されるようにすることができる。同様に、受動光スプリッタ615cおよび615dは、受信した信号617を、それぞれの下側ポートを通して下位スイッチ610a〜610dに出力することができる。このように、上位スイッチ605aから送信された信号は、下位スイッチ610a〜610dすべてに送信される。同じ原理で、他の上位スイッチ605b〜605dのうちのいずれから送信される信号も、受動光スプリッタ615を通して下位スイッチ610a〜610dすべてによって受信される。
図6Bに示さ
れる光スプリッタ615の構成をこのようにして用いることにより、1つの4×4光スプリッタを論理的に実現できる。いくつかの実装例において、他の光スプリッタをネットワーク601に追加することにより、可能な入力と出力の数を任意で増加してもよい。上記のように、不必要な入力または出力ポートは、切断状態のままにしておいてもよく、または冗長性のために使用してもよい。
【0063】
いくつかの実装例において、多重化を用いることで、ネットワーク601内のデータの衝突を回避することができ、かつ、上位スイッチ605から送信されたデータが意図された下位スイッチ610のみによって確実に処理されるようにすることができる。たとえば、上述のように、TDM、WDM、またはその他の多重化方式を用いてネットワーク601を通してデータを送信し受信することができる。
【0064】
図7は、4つの受動光スプリッタ715a〜715d(包括的に受動光スプリッタ715と呼ぶ)を含む第2の代表的なコンピュータネットワーク700である。このネットワークはまた、6つのスイッチ705a〜705f(包括的にスイッチ705と呼ぶ)と、6つのサーキュレータ707a〜707f(包括的にサーキュレータ707と呼ぶ)と、2つのミラー709aおよび709b(包括的にミラー709と呼ぶ)とを含む。光スプリッタ715は、
図6Bに示される光スプリッタ615の配置と同様のやり方で互いに結合されている。たとえば、受動光スプリッタ715aの第1の下側ポートは、受動光スプリッタ715cの第1の上側ポートに結合されている。受動光スプリッタ715aの第2の下側ポートは、受動光スプリッタ715dの第1の上側ポートに結合されている。受動光スプリッタ715bの第1の下側ポートは、受動光スプリッタ715cの第2の上側ポートに結合されている。受動光スプリッタ715bの第2の下側ポートは、受動光スプリッタ715dの第2の上側ポートに結合されている。この構成によって、受動光スプリッタ715を、上記のように4つの入力と4つの出力とを有する1つの光スプリッタとして論理的に機能させることができる。いくつかの実装例において、ネットワーク700は、簡略化されたデータセンターネットワークを表わし得る。たとえば、スイッチ705は、データセンター内のサーバのような他の計算装置に結合できるトップ・オブ・ラックスイッチを表わし得る。
【0065】
スイッチ705は各々、それぞれのサーキュレータ707を通して光スプリッタ715のうちの1つの対応するポートに結合されている。サーキュレータによって、光スプリッタ715とスイッチ705との間で双方向通信を行なうことができる。ミラー709aは光スプリッタ715bの上側ポートに結合されており、ミラー709bは光スプリッタ715dの下側ポートに結合されている。各ミラー709は、受信した光信号を反射して、送信元の光スプリッタ715に戻すように構成されている。スイッチ705、サーキュレータ707、ミラー709、および光スプリッタ715の配置により、いずれのスイッチ705からの信号も、他のすべてのスイッチ705で受信することができる。
【0066】
たとえば、データ信号717を、スイッチ705aからサーキュレータ707aを通して光スプリッタ715aに送信することができる。光スプリッタ715aは、受信した信号717を分割し、この信号717をその下側ポート双方で(すなわち光スプリッタ715cおよび715dに)出力することができる。スプリッタ715cおよび715dも同様に、受信信号717を分割して信号717がこれらの下側ポート双方からスイッチ705d、705e、705fとミラー709bに送信されるようにすることができる。ミラー709bは信号717を反射して光スプリッタ715dに戻す。光スプリッタ715dは、再び信号717を分割し、反射された信号717をその上側ポート双方から光スプリッタ715aおよび715bに出力する。次に、信号717は、光スプリッタ715aおよび715bからサーキュレータ707a〜707cを通してスイッチ705a〜705cに出力される。このように、スイッチ705から送信された信号717は、他のスイッ
チ705b〜705fすべてに送信される。いくつかの実装例において、スイッチ705aを、信号717がスイッチ705aに戻されたときは、自身が送信した信号717を無視するように構成することができる。ネットワーク700内の他のスイッチ705によって送信される信号も同様に、他のすべてのスイッチ705によって受信される。
【0067】
いくつかの実装例において、サーキュレータ707およびミラー709を含めることを利用して、所与の数の光スプリッタ707を有するネットワークで実現されるポートの数を増すことができる。たとえば、ネットワーク700および
図6Bに示されるネットワーク601は各々4つの光スプリッタを含む。しかしながら、ネットワーク700は、第1のスイッチ705から受信した信号を他の5つのスイッチ705にブロードキャストすることができ、一方、ネットワーク600は、第1のスイッチから受信した信号を他の4つのスイッチにしか送信することができない。
【0068】
本明細書に記載の主題と動作の実装例は、デジタル電子回路において、または本明細書に開示された構造とこれらの構造上の均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、これらのうちの1つ以上を組合わせたものにおいて、実現し得る。本明細書に記載の主題は、1つ以上のコンピュータプログラムとして実現し得る、すなわち、データ処理装置による実行のためにまたはデータ処理装置の動作を制御するために、1つ以上のコンピュータ記憶媒体上の符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実現し得る。
【0069】
コンピュータ読取可能な媒体は、コンピュータ読取可能な記憶装置、コンピュータ読取可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくは装置、または、これらのうちの1つ以上を組合わせたものであってもよく、またはそれに含まれていてもよい。加えて、コンピュータ読取可能な媒体は伝搬信号ではないが、コンピュータ読取可能な媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であってもよい。また、コンピュータ記憶媒体は、1つ以上の別々の構成要素または媒体(たとえば複数のCD、ディスク、またはその他の記憶装置)であってもよく、またはそれに含まれていてもよい。したがって、このコンピュータ読取可能な媒体は、有形でありかつ非一時的なものである。
【0070】
本明細書に記載の動作は、データ処理装置が、1つ以上のコンピュータ読取可能な記憶装置に格納されたまたは他のソースから受信されたデータに対して実行することができる。「データ処理装置」または「計算装置」という用語は、例として、1つのもしくは複数の、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、またはこれらを組合わせたものを含む、データを処理するためのすべての種類の装置、デバイス、およびマシンを包含する。上記装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASICを含み得る。この装置はまた、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはこれらのうちの1つ以上を組合わせたものを構成するコードを含み得る。この装置および実行環境は、ウェブサービス、分散型計算およびグリッド計算インフラストラクチャといった多様な計算モデルインフラストラクチャを実現し得る。
【0071】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型もしくはインタプリタ型言語、宣言型もしくは手続き型言語を含むプログラミング言語の形態で記述することができ、独立型プログラムとしてまたはモジュールとして、コンポーネント、サブルーチン、オブジェクト、または計算環境で使用するのに適した他のユニットを含む、任意の
形態で導入することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応していてもよいがそうである必要はない。プログラムは、当該プログラム専用の1つのファイルにおける、または複数の統合されたファイル(たとえば1つ以上のモジュール、サブプログラム、またはコードの部分を格納しているファイル)における、他のプログラムまたはデータ(たとえばマークアップ言語文書に格納されている1つ以上のスクリプト)を保持するファイルの一部に格納されていてもよい。コンピュータプログラムを導入して、1つの場所に位置するまたは複数の場所に分散しており通信ネットワークによって相互に接続されている複数の場所に位置する、1つのコンピュータまたは複数のコンピュータ上で実行してもよい。
【0072】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および専用マイクロプロセッサ双方、ならびに、任意の種類のコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、命令とデータを、読出し専用メモリからまたはランダムアクセスメモリからまたはこれら双方から受ける。コンピュータに不可欠な要素は、命令に従って動作を実行するためのプロセッサと、命令とデータを格納するための1つ以上の記憶装置である。一般的に、コンピュータはまた、データを格納するための1つ以上の大容量記憶装置、たとえば磁気、光磁気ディスクまたは光ディスクを含む、または、1つ以上の大容量記憶装置からデータを受信するまたはこれにデータを転送するまたはこれとの間でデータを送信し受信するように大容量記憶装置に機能的に結合されている。
【0073】
本明細書は、具体的な実装の詳細を数多く含んでいるが、これらは、発明の範囲またはクレームし得るものの範囲を限定するものとしてではなく、特定の発明の特定の実装に固有の特徴を説明するものとして解釈されねばならない。本明細書において別々の実装例に関連して記載されている特定の特徴を、1つの実装例において組合わせて実現することもできる。逆に、1つの実装例に関連して記載されているさまざまな特徴を、複数の実装例において別々にまたは適切な下位の組合わせで実現することもできる。加えて、特徴は、特定の組合わせで機能するものとして記載されて最初はそのようにクレームされている場合もあるものの、クレームされている組合わせに含まれる1つ以上の特徴を、場合によってはこの組合わせから除外することができ、クレームされている組合わせは、下位の組合わせにまたは下位の組合わせの変形に関連し得る。
【0074】
同様に、図面では動作を特定の順序で示しているが、これは、所望の結果を得るためには、このような動作を示されている特定の順序でもしくは一連の順序で実行することが必要である、または、示されているすべての動作を実行することが必要であると解釈されてはならない。特定の状況では、マルチタスキングおよび並列処理が好都合であろう。加えて、上記実装例におけるさまざまなシステムコンポーネントの分離は、すべての実装例においてこのような分離を必要とするものとして理解されてはならず、記載されているプログラムコンポーネントおよびシステムは一般的に、1つのプロダクトに統合することができる、または複数のプロダクトにパッケージングすることができることが理解されるはずである。
【0075】
このように本主題の具体的な実装例を説明した。他の実装例は以下の請求項の範囲に含まれる。場合によって、請求項に記載の動作は、異なる順序で実行される可能性があるが、それでもなお所望の結果を達成できる。加えて、添付の図面に記載されているプロセスは、所望の結果を達成するために、示されている順序または連続した順序である必要は必ずしもない。特定の実装例では、マルチタスキングおよび並列処理が好都合な場合がある。