ネットワーク内のレイヤ2スイッチングは、一般に、トラフィックループがネットワーク内に形成されるのを阻止するために、スパニングツリープロトコル(STP)(802.1d)などの機能に頼っている。ループを防止するために、冗長リンクをブロックして、STPによって使用されないようにすることができる。さらに、STPは、スイッチ間プロトコル(switch-to-switch protocol)であって、そこでは、全てのデバイスが対等であり、ネットワーク全体のグローバルビューは未知である。
冗長リンクの「ブロック」(ブロッキングともいう)は、ネットワーク機器の浪費となりうるが、これは、ポートやケーブルは、費用がかかり、かつ、アイドル状態にあるからである。STPは、他のところでリンク故障が生じた場合に、冗長リンクをアクティブにできるという利益をもたらすが、それらの冗長リンクは通常は使用されていない。マルチインスタンススパニングツリープロトコル(multiple instancespanning tree protocol:MSTPまたはMISTP)(IEEE 802.1s)は、仮想ローカルエリアネットワーク(VLAN:Virtual Local Area Network)を用いて、スパニングツリーを互いにオーバーラップさせる方法を提供する。たとえば、顧客は2つのVLANを構成することができ、この場合、各々のVLANがそれ自体のMSTPインスタンスを有し、各々のMSTPインスタンスは異なるポートをブロックする。MSTPは、より多くのリンクがアクティブな状態を維持できるようにするが、依然として、多くのリンクがいくつかのVLAN(MSTPインスタンス)において使用されないままとなる。
管理者は、特定のトラフィック(specific traffic)を適切に分類しまたは該特定のトラフィックに優先度の高い順で優先順位を付けるためにQoSやDiffServなどの機能を使用することによって、該特定のトラフィックが途絶えたり遅延したりしない可能性を高くすることができる。これによって、該特定のトラフィックなどのいくつかのタイプのトラフィックに対するネットワーク帯域幅の割り当てを大きくすることができるが、ブロックされているリンクは依然として使用されないままである。
実施形態は、QoS/DiffServが特定のトラフィックの優先度をより高いものとして分類することを期待して、該特定のトラフィックを、混雑している可能性がある正常なリンクを介して送るのではなく、ブロックされているリンクをうまく利用することができる。実施形態は、たとえば、STPネットワークのグローバルビュー、及び、OpenFlow(オープンフロー)などの異なるタイプのプロトコルを用いて、使用されていないブロックされているリンクを介して該特定のトラフィックを送ることができる。たとえば、OpenFlowプロトコルは、顧客/コントローラが、トラフィックフロー内のコンテンツ(内容)に基づいて、該トラフィックがとるべき経路を設定できるようにすることができる。OpenFlowプロトコルはまた、いくつかのルールに基づいてトラフィックを送るようにデバイスに命令することなどによって、トラフィックを識別するためのフレキシブルな分類メカニズムを提供する。
1実施形態では、リンクの状態(ステータス)は、ブロック(遮断)されているかブロックされていないかのいずれかである。ブロックされているリンクは、スパニングツリープロトコル(STP)によっては使用されない。ネットワークスイッチの少なくとも1つが、ブロックされているリンクを通じて(またはリンクに沿って。以下同じ)特定のトラフィックを送るように構成される。いくつかの実施形態では、どのリンクをブロックするかを操作するためにパラメータを変更することもできる。ブロックされているリンクを使用することの利益は、特定のトラフィックが、他のタイプのトラフィックと競合しなくてすむことであるが、これは、該他のタイプのトラフィックは、ブロックされていないSTPリンクを移動するからである。さらに、全く新しいタイプのネットワークを管理者に実装させるのではなく、既存のSTPまたはMSTPネットワークを補完し、及びそれらの既存のネットワークと共存するために、実施形態を使用することができる。
図1は、特定のトラフィックをブロックされているリンクを通じて送るためのコントローラ100の例示的なブロック図である。コントローラ100を別個の独立した要素とすることができ、または、コントローラ100を、スイッチ、ハブ、ルーター、ゲートウェイ、記憶装置、コンピューター、筐体、サーバー、及び/または、ネットワーク要素を管理することができ及び/もしくはネットワークに接続することができる任意のタイプのデバイス(装置)に含めることができる。
図1の実施形態では、コントローラ100は、複数のネットワークスイッチ112−1〜112−4を含むネットワーク110に接続する。ネットワーク110のタイプの例には、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ホームネットワーク、ストレージエリアネットワーク(SAN)、キャンパスネットワーク(campus network:構内ネットワークともいう)、バックボーンネットワーク(backbone network)、メトロポリタンエリアネットワーク(MAN:Metropolitan area network)、広域ネットワーク(WAN)、エンタープライズプライベートネットワーク(enterprise private network)、仮想プライベートネットワーク(VPN)、インターネットワーク(相互接続ネットワーク)などを含めることができる。
ネットワーク110は4つのスイッチ112−1〜112−4を含むものとして示されているが、実施形態は、4より多いか4より少ない数のスイッチを含むことができる。スイッチ112−1〜112−4を、リンク及び/またはネットワーク装置を接続する任意のタイプの装置とすることができる。さらに、スイッチ112−1〜112−4は、リンクとインターフェースする物理ポートを介してデータを送受信することができる。それらのリンクを、ケーブルなどの、データを伝送するために使用されるスイッチ間の任意のタイプの電気的接続手段とすることができる。
コントローラ100及びスイッチ112−1〜112−4は、たとえば、後述の機能を実施するための、制御ロジック(制御回路など)及び/またはメモリ(記憶装置)などの、電子回路を含むハードウェア装置を備えることができる。これに加えてまたはこれの代わりに、コントローラ100及びスイッチ112−1〜112−4を、機械可読記憶媒体(たとえば、コンピューター可読記憶媒体)にある符号化された(または該記憶媒体に符号化されている)、プロセッサによって実行可能な一連の命令として実施することができる。
図1では、スイッチ112−1〜112−4の各々は3つのポートを有しており、各々のポートが1つのリンクとインターフェースしている。たとえば、Aスイッチ112−1は、1つのリンクを介してBスイッチ112−2の第12のポート12に接続する第1のポート1と、1つのリンクを介してDスイッチ112−4の第8のポート8に接続する第2のポート2と、1つのリンクを介してCスイッチ112−3の第4のポート4に接続する第3のポート3を有するものとして図示されている。さらに、Bスイッチ112−2は、1つのリンクを介してDスイッチ112−4の第9のポート9に接続する第10のポート10と、1つのリンクを介してCスイッチ112−3の第5のポート5に接続する第11のポート11を有するものとして図示されている。また、Cスイッチ112−3は、1つのリンクを介してDスイッチ112−4の第7のポート7に接続する第6のポート6を有するものとして図示されている。しかしながら、スイッチ112−1〜112−4の各々の実施形態は、3つより多いかまたは3つより少ない数のポートを含むことができ、さらに、リンクとインターフェースしないポートを含むこともできる。
さらに、スイッチ112−1〜112−4間のリンクのいくつかは実線で示されており、その他のリンクは点線で示されている。たとえば、点線は、Cスイッチ112−3とBスイッチ112−2間のリンク、Cスイッチ112−3とDスイッチ112−4間のリンク、及び、Bスイッチ112−2とDスイッチ112−4間のリンクを示している。一方、実線は、Aスイッチ112−1とBスイッチ112−2間のリンク、Aスイッチ112−1とCスイッチ112−3間のリンク、及び、Aスイッチ112−1とDスイッチ112−4間のリンクを示している。
点線は、ブロックされているリンクを表しており、実線はブロックされていないリンクを表している。ネットワークプロトコルは、ブロックされているリンクを形成するために、スイッチ112−1〜112−4の1以上のポートを、着信トラフィックと発信トラフィックの両方をブロックするように構成することができる。たとえば、STPは、そのようなブロックされているリンクを形成することによって、ネットワーク110がループのないトポロジ(トポロジは、トポロジーともいう)となるようにすることができる。図1において、STPは、Aスイッチ112−1をスパニングツリーのルートとして有するスパニングツリーを形成するために、いくつかのリンクをブロックすることができる。STPの変形形態には、ラピッドスパニングツリープロトコル(RSTP:Rapid Spanning Tree Protocol)、VLANスパニングツリープロトコル(VSTP:VLAN Spanning Tree Protocol)、マルチプルスパニングツリープロトコル(MSTP:Multiple Spanning Tree Protocol)などを含めることができる。
コントローラ100は、STPネットワークのグローバルビューを得るなどのために、ネットワーク110の論理トポロジ(論理トポロジは、論理的なトポロジともいう)を監視する(102)ことができる。論理トポロジは、ネットワーク110の物理トポロジ(物理トポロジは、物理的なトポロジともいう)とアクティブトポロジ(アクティブトポロジはアクティブなトポロジともいう)のうちの少なくとも1つを含むことができる。ネットワーク110の物理トポロジを、リンクのレイアウト(配置)やスイッチの位置などの物理的な設計によって画定することができる。アクティブトポロジは、データがネットワーク110内をある装置から次の装置へとどのように伝送されるかを参照することができ、該アクティブトポロジを、STPなどのネットワークプロトコルによって決定することができる。
したがって、物理トポロジを、スイッチ112−1〜112−4間の距離、物理的相互接続(physical interconnection)、伝送速度、及び/または、信号の種類(タイプ)に関連付けることができ、一方、アクティブトポロジを、物理トポロジの経路もしくはリンクに関連付けることができ、この場合、トラフィックのパケットは、該該経路もしくはリンク上を伝送することができる。それゆえ、論理トポロジ102を監視することによって、コントローラ100は、STPなどによってブロックされている任意のリンクを識別することができる。たとえば、コントローラ100は、ネットワーク110内のスイッチ112−1〜112−4などの全てのデバイスを能動的に監視(モニタ)して、スイッチ112−1〜112−4のどのポートがブロックされているかなどのSTP状態を知ることができる。
次に、コントローラ100は、ブロックされているリンクを通じて特定のトラフィックを送るように、ネットワークスイッチ112−1〜112−4の少なくとも1つを構成することができる。該特定のトラフィックを、ブロックされているリンクを通る(トラバースする)ことができない一般的なトラフィック(general traffic)とは異なるものとすることができる。
該特定のトラフィックを、たとえば、待ち時間、パケットロス、及び/または、該一般的なトラフィックのセキュリティ要件とは異なるセキュリティ要件を有するデータに関連付けることができる。該特定のトラフィックを、たとえば、該特定のトラフィックに含まれているデータのユーザーのタイプ、該データ(または該トラフィック)の優先度、該データ(または該トラフィック)のソース及び/もしくはコンテンツ(内容)に基づくものとすることができ、または、それらに基づいて識別(ないし特定)することができる。待ち時間要件を有しうる特定のトラフィックの例には、マルチキャストストリーム、ビデオトラフィック、VoIPデータなどがある。かかるタイプの特定のトラフィックを、該特定のトラフィックのヘッダーを検査することなどによって、コンテンツのタイプ(種類)に基づいて識別(ないし特定)することができる。セキュリティ要件を有しうる特定のトラフィックの例には、財務データや企業データや個人データなどがある。1実施形態では、かかるタイプの特定のトラフィックを、ユーザーのタイプに基づいて識別(ないし特定)することができる。たとえば、ある会社の重役の電子メールは、該会社のスタッフの電子メールのセキュリティ(安全性)よりも高いセキュリティを有しうる。
優先度要件を有しうる特定のトラフィックの例には、バックアップデータ及び金融サービトランザクションなどがある。たとえば、バックアップデータは、該一般的なトラフィック用に使用することができる帯域幅を消費しないようにするために、該一般的なトラフィック、及び、オフピークの時間帯に送られるかまたはブロックされているリンク上を送られるトラフィックよりも低い優先度を有することができる(または、該バックアップデータの優先度を、該一般的なトラフィック用に使用することができる帯域幅を消費しないようにするために、オフピークの時間帯に送られるかまたはブロックされたリンク上を送られる該一般的なトラフィックの優先度よりも低くすることができる)。一方、証券(たとえば株式)取引やトレーダー(たとえば証券売買業者)取引などの金融サービストランザクションは、高い優先度を有することができる。かかるタイプの特定のトラフィックを、たとえば、データのソース(データの発生源)に基づいて識別(ないし特定)することができる。
コントローラ100は、ブロックされているリンクを該特定のトラフィックが通ることができるように、該ブロックされているリンクに関連付けられているネットワークスイッチ112−1〜112−4のうちの少なくとも1つのブロックされているポート(不図示)を構成することができる。さらに、コントローラ100は、該特定のトラフィックを送るための該リンクに沿った経路を決定ないし画定することができる。該経路は、少なくとも1つのブロックされているリンクを含むことができる。しかしながら、コントローラ100は、該経路を通じて(または該経路に沿って。以下同じ)ネットワークスイッチ112−1〜112−4のうちの1つに接続する全てのリンクがブロックされていないリンクであるときなどには、1以上のブロックされていないリンクを含むように該経路を決定ないし画定することもできる。ブロックされていないリンクを該一般的なトラフィックが使用することもできる。
たとえば、図1では、該特定のトラフィックは、A、B、Cスイッチ112−1〜112−3を通って入り、Dスイッチ112−4に向けて送られる。通常は、B及びCスイッチを通って入った該特定のトラフィックを含む任意のトラフィックは、ブロックされていないリンクを通ってAスイッチ112−1に送られる。次に、該特定のトラフィックは、Aスイッチ112−1から、別のブロックされていないリンクを通って、行き先であるDスイッチ112−4に向けて送られる。しかしながら、図1に示されているように、コントローラ100は、Aスイッチに入った特定のトラフィックをCスイッチ112−3に送るように構成することができる。この場合、Aスイッチ112−1からの該特定のトラフィックを、Cスイッチ112−3に入る他の任意の特定のトラフィックと結合して(または合流させて)、Cスイッチ112−3の第6のポート6とDスイッチ112−4の第7のポート7間のブロックされているリンクを介してDスイッチ112−4に直接送ることができる。
同様に、コントローラ100は、Bスイッチ112−2に入った任意の特定のトラフィックを、Bスイッチ112−2の第10のポート10とDスイッチ112−4の第9のポート9間のブロックされているリンクを介してDスイッチ112−4に直接送るようにすることができる。したがって、ブロックされているリンクを用いて特定のトラフィックを送ることによって、ブロックされていないリンクの混雑が緩和されるだけでなく、該特定のトラフィックを、より少ない数のスイッチ112をホップ(hop)することによってより速く送ることもできる。
コントローラ100は、OpenFlowプロトコルを用いて(または該プロトコルにしたがって)、特定のタイプのトラフィックをブロックされているリンクを通じて送るように、スイッチ112−1〜112−4のうちの任意のスイッチを構成することができる。OpenFlowは、ネットワーク110を介してスイッチ112のフォワーディングプレーン(forwarding plane:転送プレーンともいう)(不図示)にアクセスできるようにするレイヤ2通信プロトコルである。さらに、OpenFlowプロトコルは、スィッチ112−1〜112−4を通る特定のトラフィックの経路を、中央の集中化された位置で動作する、及び/又は、複数のスィッチ112などの分散化形態で動作するソフトウェアまたはファームウェアによって動的に決定できるようにすることができる。
1実施形態では、コントローラ100は、該特定のトラフィックを送るための、リンクに沿った主経路(一次経路)及び副経路(二次経路)を決定ないし画定することができる。この場合、第1の経路もしくは主経路のリンクのうちの1つが故障した場合には、コントローラ100は、故障した(1以上の)リンクを避けるために、該特定のトラフィックを副経路を通じて送るように、ネットワークスィッチ112−1〜112−4のうちの1以上を構成することができる。
コントローラ100がスィッチ112−1〜112−3と通信するために使用できるプロトコルの例には、リンクレイヤ検出プロトコル(LLDP:Link Layer Discovery Protocol)、簡易ネットワーク管理プロトコル(SNMP :Simple Network Management Protocol)、動的ホスト構成プロトコル(DHCP:Dynamic Host Configuration Protocol)、シンプルサービス検出プロトコル(SSDP:Simple Service Discovery Protocol)、ユニバーサルプラグアンドプレイ(UPnP:Universal Plug and Play)などがある。コントローラ100は、スィッチ112を自動的にまたは手動入力にしたがって構成することができる。さらに、スィッチ112−1〜112−4は、OpenFlowプロトコルとSTPの両方にしたがって動作することができる。たとえば、スィッチ112−1〜112−4は、該特定のトラフィックに対してはOpenFlowプロトコルにしたがって動作することができ、該一般的なトラフィックに対しては、及び/又はリンクが故障した場合には、STPにしたがって動作することができる。
図2は、図1のコントローラ100とインターフェースするスイッチ200の別の例示的なブロック図である。コントローラ100を個別の要素とすることができ、または、コントローラ100を、スイッチ、ハブ、ルーター、ゲートウェイ、記憶装置、コンピューター、筐体、サーバー、及び/または、ネットワーク要素を管理することができ及び/もしくはネットワークに接続することができる任意のタイプのデバイス(装置)に含めることができる。
図2のコントローラ100及びスイッチ200は、それぞれ、図1のコントローラ100及びスイッチ112−1〜112−4の機能及び/またはハードウェアを少なくとも含むことができる。たとえば、スイッチ200は、図1のCスイッチ112−3の典型例として示されているが、他のスイッチ112−1、112−2、及び112−4も同様のものとすることができる。
図2の実施形態では、スイッチ200は、コントロールプレーン(control plane。制御プレーンともいう)210及びフォワーディングプレーン220を含むものとして示されている。フォワーディングプレーン220はさらに、ルール222及びポートパラメータ224、並びに、スイッチポート228−1〜228−4とのインターフェースを含むものとして示されている。第1のスイッチポート228−1を、該特定のトラフィックを受け取るCスイッチ112−3のポート(不図示)に対応付けることができる。第2のスイッチポート228−2〜第4のスイッチポート228−4を、Cスイッチ112−3の第4のポート4〜第6のポート6に対応付けることができる。コントロールプレーン210を、ネットワークマップの作成ないし描画に関連付けられた、及び/または、トラフィックの着信パケットをどう扱うか(すなわちどう処理するか)を決定するルーティングテーブルに関連付けられたスイッチアーキテクチャの一部とすることができる。フォワーディングプレーン220を、着信パケットの宛先アドレス及び/または出力インターフェース(outgoing interface)を示すルックアップテーブルなどの、インバウンドインターフェース(inbound interface)に到来する着信パケットをどう扱うか(すなわちどう処理するか)の決定に関連付けられたスイッチアーキテクチャの一部とすることができる。
図1に関して既に説明し、及び、図2において斜線パターンで示しているように、第3のスイッチポート228−3及び第4のスイッチポート228−4はブロックされている。第1のスイッチポート228−1及び第2のスイッチポート228−2はブロックされていない。この場合、図2では、第1のスイッチポート228−1及び第2のスイッチポート228−2は、該特定のトラフィックを受け取るものとして示されており、第2のスイッチポート228−2はまた、該一般的なトラフィックを出力するものとして示されている。コントローラ100によって、図1に示されているように、Aスイッチ112−1の第3のポート3からCスイッチ112−3の第4のポート4(スイッチ200の第2のスイッチポート228−2)へと(該特定のトラフィックが)流れるように、該特定のトラフィック用の例示的な経路を決定ないし画定することができる。さらに、第1のスイッチポート228−1及び第2のスイッチポート228−2から受け取った該特定のトラフィックを、ブロックされているリンクを介してDスイッチ112−4に送るために、該特定のトラフィックをブロックされている第4のスイッチポート228−4へと出力することができる。
スイッチ200は、OpenFlowプロトコルなどの、スイッチ200のフォワーディングプレーン220からコントロールプレーン210を分離するソフトウェア・デファインド・ネットワーキング(Software Defined Networking:SDN)アーキテクチャに基づいて、該特定のトラフィックをブロックされているリンクのうちの1以上のリンクに向けて送ることができる。たとえば、コントローラ100は、OpenFlowを用いて(またはOpenFlowにしたがって)、フォワーディングプレーン220にアクセスして、ブロックされている第4のスイッチポート228−4などのブロックされているポートを通じて該特定のトラフィックを送る1以上のルール222を設定することができる。ルール222を、コントローラ100によって提供される、該特定のトラフィックをどの(1以上の)ポートに(またはどのポートから)出力するかを示す任意のタイプの命令として定義することができる。
図2では、コントローラ100は、スイッチ200とは別個のものとして示されている。しかしながら、コントローラ100を、スイッチ112のうちの1つにまたはスイッチ200に含めることができ、及び/または、コントローラ100を、スイッチ112−1〜112−4もしくはスイッチ200とは別個のより高い(すなわちより高位の)レイヤのデバイス(または装置)とすることができる。たとえば、コントローラ100がより高いレイヤのデバイスである場合には、コントローラ100は、ルール222を設定することに加えて、または、ルール222を設定する代わりに、スイッチ200などの経路に沿ったネットワーク装置(ネットワークデバイス)の1つの1以上のポートパラメータ224を構成することができる。第2のスイッチポート228−2〜第4のスイッチポート228−4などのポートの各々は、1以上の対応するポートパラメータ224を有することができる。(1以上の)構成されたパラメータ224は、対応するポート及びリンクが、STPには望ましくない(または、相対的に望ましくない)ように見えるようにすることができる。その結果、(1以上の)構成されたパラメータ224は、STPに、対応するリンクの状態(ステータス)をブロックされていない状態からブロックされている状態に変更させることができる。たとえば、STPは、ポートプライオリティ(port priority:ポート優先度ともいう)及びパスコスト(path cost:経路コストともいう)などのポートのいくつかのポートパラメータ224を監視して、対応するリンクの望ましさを判定することができる。コントローラ100は、ポートロケーション(ポート位置)、ポート速度、及びホップ数(ホップカウントともいう)などのスイッチ200の値を変更することなどによって、ポートパラメータ224に直接または間接に影響を与えることができる。
ポートプライオリティという用語は、STPがトラフィックを送るために、他のポートに対して(すなわち、他のポートとの比較において)あるポートに与える優先度(プリファランス)を意味するものとすることができる。たとえば、このパラメータを用いて、ポートにより高い(またはより低い)優先順位を割り当てることができ、この場合、数値が高いほど優先順位が低いことを意味する。トラフィックの経路が変更される場合には、VLAN内またはスイッチ200において優先順位が低いポートよりも優先順位が高いポートが選ばれるように、ポートの優先順位に基づいて、ポートの経路(たとえば、トラフィックがどのポートを通るか)が変更される。パスコストという用語は、ルートブリッジまたはルートスイッチに到達するためにポートを使用するコストを意味するものとすることができる。STPは、ルートブリッジに至る複数のリンクの中から選択するときには、一番小さいパスコストを有するリンクを選択して、その他の経路/リンクをブロックする。たとえば、このパラメータを用いて、ポートにより大きいかまたはより小さいパスコストを割り当てることができる。ある所定のポートにより大きな値を割り当てることによって、経路変更の間、トラフィックが該ポートを通らないようにする(この逆も同様)ことができる。
図1において、コントローラ100は、ポートパラメータ224のうちの少なくとも1つのパラメータを自動的にまたは手動で構成することができる。手動構成の場合には、管理者がポートパラメータに異なる値を入力できるようにするために、コントローラ100を、キーボード、マウス、ディスプレイ(表示装置)、グラフィカルユーザーインターフェース(GUI)、タッチスクリーンなどに関連付けることができる。1以上のポートパラメータが変更されると、STPは経路を再計算することができる。いくつかの場合には、これまではブロックされていたリンクをブロックされていないリンクにする(この逆も同様)ことができる。さらに、管理者は、STPトポロジを見て、新しいルールを生成するために手動構成を用いることもできる。
ネットワーク110が複数のVLANを含んでいる場合には、MSTPを用いて該複数のVLANを管理することができ、この場合、該MSTPは、異なるVLANの異なるリンクをブロックする(異なるVLAN同士では異なるリンクがブロックされる)。したがって、MSTPを使用すると、1つのリンクの一部がブロックされるだけである。たとえば、MSTPでは、一部のMSTPインスタンスに対してリンクをブロックすることができるが、全てのMSTPインスタンスに対してリンクをブロックすることができるわけではない。使用の観点からは、これは、一部のインスタンスに対してのみ全てのリンクがアクティブ(有効)となることを可能にする。MSTPインスタンスは、一組のVLANによって画定ないし決定される。
この場合、コントローラ100は、所与の時間(または任意のもしくは所定の時間)においてどのVLANがアクティブ(すなわち有効ないし作動中)であるか、したがって、所与の時間においてどのリンクがブロックされているかに基づいて、ネットワークスイッチ112−1〜112−4の1以上のポートを通じて特定のトラフィックを送るためのルール222を作成することができる。この代わりに、または、これに加えて、コントローラ100は、どのリンクがブロックされるかに影響を与えるようにポートパラメータ224のインスタンスを構成することができる。
図3Aは、図1のコントローラ100によって構成されているネットワークリンクの例示的なブロック図であり、図3Bは、図3Aの構成されたネットワークリンクに沿ったトラフィックフローの例示的なブロック図である。図3A及び図3Bに示されているスイッチ312−1〜312−4を、図1のスイッチ112−1〜112−4と同様ないし類似のものとすることができる。たとえば、図3A及び図3Bのスイッチ312−1〜312−4及びこれらのスイッチのポートに、図1と同様のラベルを付けることができる。最初は、図3Aのスイッチ312−1〜312−4は、図1のスイッチ112−1〜112−4と同様の構成を有するものとして図示されており、Cスイッチ312−3とBスイッチ312−2間、Cスイッチ312−3とDスイッチ312−4間、及び、Bスイッチ312−2とDスイッチ312−4間のリンクはブロックされている。
しかしながら、図2に関して説明したように、コントローラ100は、その後STPがブロックされていないリンクをブロックされているリンクに、または、ブロックされているリンクをブロックされていないリンクに再構成するように、ポートパラメータを構成することができる。このことは、該特定のトラフィック用の経路(該経路では該一般的なトラフィックは低減ないし除去される)を生成するために望ましいものでありうる。たとえば、コントローラ100が、該特定のトラフィックの所期の終点に通じるブロックされているリンクを見つけることができない場合には、コントローラ100は、ブロックされていないリンクのうちの少なくとも1つのリンクをブロックされているリンクに変える。図3Aでは、コントローラ100は、Aスイッチ312−1とCスイッチ312−3間のブロックされていないリンクがブロックされているリンクに変更され、Cスイッチ312−3とBスイッチ312−2間のブロックされているリンクがブロックされていないリンクに変更されるようにポートパラメータを構成するものとして示されている。
図3Bは、コントローラ100と、図3Aの構成されたポートパラメータを有するスイッチ312−1’〜312−4’を備えるネットワーク310とを示している。図3Bのコントローラ100とネットワーク310は、それぞれ、図1のコントローラ100とネットワーク110の機能及び/またはハードウェアを少なくとも含むことができる。この場合、該特定のトラフィックは、ボイスオーバーインターネットプロトコル(VoIP:voice over Internet Protocol)トラフィックとして示されており、該トラフィックをVoIPサーバー314に伝えるために、該トラフィックはDスイッチ312−4’に向けて送られる。図1と同様に、VoIPトラフィックは、A、B、及びCスイッチ312−1’〜312−3’を介して受け取られる。しかしながら、図1とは異なり、コントローラ100が、Aスイッチ312−1’とCスイッチ312−3’間の以前はブロックされていなかったリンクが今ではブロックされているリンクであるようにポートパラメータを構成したために、今や全てのVoIPトラフィックがブロックされているリンクだけを流れることができる。したがって、コントローラ100がVoIPトラフィック用にブロックされているリンクの専用の経路を提供しているので、混雑に起因するVoIPトラフィックのタイミング遅延を低減しまたは最小にすることができる。この結果、今やCスイッチ312−3’がAスイッチ312−1’から2つのホップだけ離れているために、該一般的なトラフィックに対するCスイッチ312−3’までの経路は長くなっている。
図4は、ブロックされているリンクを通じて特定のトラフィックを送るための命令を含むコンピューティング装置400の例示的なブロック図である。図4の実施形態では、コンピューティング装置400は、プロセッサ410及び機械可読記憶媒体(たとえばコンピューター可読記憶媒体)420を備えている。機械可読記憶媒体420はさらに、特定のトラフィックをブロックされているリンクを通じて送るための命令422、424及び426を含んでいる。
コンピューティング装置400を、たとえば、サーバー、ネットワークスイッチ、ハブ、ルーター、ゲートウェイ、ネットワーク要素、または、命令422、424及び426を実行することができる他の任意のタイプのデバイス(装置)とすることも、それらの一部とすることもできる。いくつかの例では、コンピューティング装置400は、メモリ、センサー、ディスプレイ(表示装置)などの追加の構成要素を備えることができ、または、コンピューティング装置400を、該追加の構成要素に接続することができる。
プロセッサ410を、少なくとも1つの中央処理装置(CPU)、もしくは少なくとも1つの半導体ベースのマイクロプロセッサ、もしくは少なくとも1つのグラフィックスプロセッシングユニット(GPU)、もしくは機械可読記憶媒体420に格納されている命令の取り出し及び実行に適したその他のハードウェア装置、もしくはそれらの組み合わせとすることができる。プロセッサ410は、特定のトラフィックをブロックされているリンクを通じて送るための命令422、424及び426を取り出し(フェッチし)、デコードして実行することができる。プロセッサ410は、命令を取り出して実行する代わりに、または、それらに加えて、命令422、424及び426の機能を実行するための複数の電子的構成要素(電子部品など)を有する少なくとも1つの集積回路(IC)、もしくは他の制御ロジック(制御論理回路)、もしくは他の電子回路、もしくはそれらの組み合わせを備えることができる。
機械可読記憶媒体420を、実行可能命令を含んでいるか格納している任意の電子記憶装置もしくは磁気記憶装置もしくは光学式記憶装置もしくはその他の物理的記憶装置とすることができる。したがって、機械可読記憶媒体420を、たとえば、ランダムアクセスメモリ(RAM)、電気的消去可能PROM(EEPROM)、記憶ドライブ(磁気ディスク装置など)、コンパクトディスク読み取り専用メモリ(CD-ROM: Compact Disc Read Only Memory)などとすることができる。そのため、機械可読記憶媒体420を非一時的なものとすることができる。以下で詳細に述べるように、機械可読記憶媒体420を、特定のトラフィックをブロックされているリンクを通じて送るための一連の実行可能命令で符号化することができる。
さらに、命令422、424及び426は、プロセッサによって(たとえば、該プロセッサの1つの処理要素もしくは複数の処理要素によって)実行されると、図5の処理などの処理をプロセッサに実行させることができる。たとえば、収集命令422をプロセッサ410によって実行することによって、ネットワーク(不図示)のスイッチ(不図示)間のリンクに関するトポロジ情報を収集することができる。判定命令424をプロセッサ410によって実行することによって、どのリンクがSTPによってブロックされているかを判定することができる。構成命令(コンフィグレーション命令)426をプロセッサ410によって実行することによって、ブロックされているリンクの少なくとも1つを通じて特定のトラフィックを送ることができるように、OpenFlowプロトコルを用いて(またはOpenFlowプロトコルにしたがって)それらのスイッチのうちの少なくとも1つを構成することができる。しかしながら、それらのスイッチは、STPとOpenFlowプロトコルの両方からの命令にしたがって動作することができる。
図5は、ブロックされているリンクを通じて特定のトラフィックを送るための方法500の例示的なフローチャートである。以下では、方法500の実行をコントローラ100に関して説明するが、方法500を実行するための他の適切な構成要素を使用することができる。さらに、方法500を実行するための構成要素を、複数のシステム及び/もしくは装置(たとえば、入出力装置と通信する処理装置)間に分散させることができる。いくつかの状況では、協働する複数の装置を、方法500を実行する単一の装置とみなすことができる。方法500を、記憶媒体420などの機械可読記憶媒体(たとえばコンピューター可読記憶媒体)に格納されている実行可能命令の形式で、及び/または、電子回路の形式で実施することができる。
ブロック510において、コントローラ100は、ネットワーク110のスイッチ112間のリンクの状態を監視(モニター)する。それらのリンクの状態は、ブロックされている状態とブロックされていない状態のうちの一方である。リンク112のうちのブロックされているリンクはSTPによって使用されない。次に、ブロック520において、コントローラ100は、スイッチ112のうちの少なくとも1つのスイッチの少なくとも1つのポートを、ブロックされているリンクを通じて特定のトラフィックを送るように構成する。STPは、該特定のトラフィックとは別個の(及び/または分離した)一般的なトラフィックを送るためにブロックされているリンクを引き続き使用しない(すなわち、STPは、ブロックされているリンクを該一般的なトラフィックを送るためのリンクとしては使用しない状態を維持する)。コントローラ100は、レイヤ2レベルでスイッチ112を構成することができる。コントローラ100はさらに、ブロック520においてポート228のうちの少なくとも1つのポートを構成する前に、ブロック510においてリンク112の状態を監視することができる。コントローラ100は、たとえば、簡易ネットワーク管理プロトコル(SNMP)を用いて(または該プロトコルにしたがって)、スイッチ112と通信して1以上のポート228を構成することができる。
上記の説明では、実施形態を理解できるようにするために特定の細部が提供されている。しかしながら、それらの特定の細部がなくても実施形態を実施できることが理解されよう。たとえば、システムは、不必要な細部によって実施形態が不明瞭にならないようにブロック図に示されている場合がある。他の例では、実施形態が不明瞭にならないようにするために、周知の処理、構造、及び技術は、不必要な細部を省いて示されている場合がある。