ブリッジはネットワーク内のさまざまなノードを単一のネットワークに接続します。ネットワークセグメントは、単一のブロードキャストネットワークを共有し、接続されると単一のネットワークセグメントであるかように通信を行います。そのため、ルーターを使用してトラフィックをネットワークセグメント間で転送するのではなく、IP などのネットワークプロトコルを使用することによって、各ノードはほかのノードに到達できます。ブリッジを使用しない場合は、ノード間の IP トラフィックの転送を許可するように IP ルーティングを構成する必要があります。
ブリッジングとルーティングはどちらも、ネットワーク上のリソースの場所に関する情報を配布するために使用できますが、いくつかの点で異なります。ルーティングは IP 層 (L3) で実装され、ルーティングプロトコルを使用します。データリンク層では、ルーティングプロトコルは使用されません。
ブリッジングは、ネットワーク上のリソースの場所に関する情報を配布するために使用されます。ブリッジネットワークでは、パケットの転送先は、ブリッジに接続されているリンクで受信されたネットワークトラフィックを検査することで特定されます。ブリッジネットワークは、STP (Spanning Tree Protocol) や TRILL (Transparent Interconnection of Lots of Links) などのプロトコルを使用します。詳細は、ブリッジングプロトコルを参照してください。
![]() | 注意 - ブリッジングを使用する SPARC® ベースのシステムで eeprom コマンドを使用して、local-mac-address? プロパティーを false に設定しないでください。これを設定すると、これらのシステムは同一の MAC アドレスを複数のポートや同じネットワーク上で誤って使用します。 |
次の図は、単純なブリッジネットワーク構成を示しています。
図 11 単純なブリッジネットワーク
ブリッジ goldengate は、ブリッジングが構成された Oracle Solaris システムです。sanfrancisco および sausalito は、物理的にブリッジに接続されたシステムです。ネットワーク A ではハブが使用され、片側では物理的にブリッジに接続され、反対側では 3 つのコンピュータシステムに接続されています。ブリッジポートはリンク net0、net1、および net2 です。
Oracle Solaris では次の図に示すように、ブリッジを同じネットワークスタック実装のデータリンク層で構成できます。
図 12 Oracle Solaris のネットワークスタックでのブリッジ
2 つのインタフェース net0 と videoagg0 がブリッジ bridge0 として構成されています。1 つのインタフェース上で受信されたパケットは、もう一方のインタフェースに転送されます。ブリッジを構成したあとも、引き続き両方のインタフェースを使用して VLAN および IP インタフェースを構成できます。
ブリッジネットワークはリング状に形成して、物理的に複数のブリッジを相互に接続できます。次の図は、ブリッジネットワークリング構成を示しています。
図 13 ブリッジネットワークリング
図は、リング状に構成されたブリッジネットワークを示しています。この構成では、3 台のブリッジがあります。2 台のシステムが物理的に westminister ブリッジに接続されています。1 台のシステムが物理的に waterloo ブリッジに接続されており、もう 1 台のシステムが物理的に tower ブリッジに接続されています。ブリッジは、物理的にブリッジポートを介して相互に接続されています。
このタイプの構成では、古いパケットがリングの周りをエンドレスにループすることによってネットワークリンクが飽和状態になる問題が発生する可能性があります。このようなループ状況から保護するために、Oracle Solaris のブリッジには STP と TRILL の両方のプロトコルが実装されています。大部分のハードウェアブリッジでは、STP ループ保護も実装されています。
ブリッジがパケットを受信すると、そのソースアドレスが検査されます。パケットのソースアドレスには、パケットが受信されたリンクにパケットを送信したノードが関連付けられます。その後、受信されたパケットが宛先アドレスと同じアドレスを使用すると、ブリッジはリンク上のパケットをそのアドレスに転送します。
ソースアドレスに関連付けられたリンクは、ブリッジネットワーク内の別のブリッジに接続された中間リンクである場合があります。時間が経過すると、ブリッジネットワーク内のすべてのブリッジが、どのリンクが特定のノードにパケットを送信するのかを「学習」します。したがって、ホップバイホップのブリッジング方式で最終宛先にパケットを送信する際には、パケットの宛先アドレスが使用されます。
ローカルの「リンク停止」通知は、特定のリンク上のすべてのノードが到達不能になったことを示します。この状況では、リンクへのパケット転送が停止し、リンク上のすべての転送エントリがフラッシュされます。古い転送エントリも時間が経過するとフラッシュされます。リンクが復元されると、リンク上で受信されたパケットは新規として処理されます。パケットのソースアドレスに基づいた学習プロセスが再開されます。このプロセスによって、アドレスが宛先アドレスとして使用されたときに、ブリッジが正常にパケットをそのリンク上に転送できるようになります。
ブリッジネットワークは次のプロトコルを使用します。
STP はブリッジネットワークで使用されるデフォルトのプロトコルです。ブリッジングでは STP メカニズムを使用して、サブネットワークが使用不可になる可能性のあるネットワークループを回避します。パケットを宛先に転送するには、ブリッジに接続されたすべてのリンク上でブリッジがプロミスキャスモードで待機する必要があります。プロミスキャスモードで待機すると、最大回線速度でパケットが無限に循環してしまう転送ループの発生に対して、ブリッジが脆弱になります。
![]() | 注意 - 可能なかぎり高いレベルのパフォーマンスが必要な場合は、ブリッジにリンクを構成しないでください。ブリッジングでは、ベースとなるインタフェースをプロミスキャスモードにして、システムのハードウェア層 (NIC)、ドライバ層、およびそのほかの層で実装されている数多くの重要な最適化を無効にする必要があります。このようなパフォーマンス拡張機能が無効になることは、ブリッジングメカニズムでは避けられない結果です。 このようなパフォーマンスの問題は、ブリッジの一部になるように構成されたリンクにのみ影響を与えます。システムのリンクの一部がブリッジされていないために、これらの制約の対象ではないシステムでは、ブリッジを使用できます。 |
TRILL (Transparent Interconnection of Lots of Links)
Oracle Solaris は、リンクを無効化せずにループを回避する TRILL 保護拡張機能をサポートしています。TRILL は、宛先への複数のパス間のトラフィックを負荷分散するために役立ちます。
STP がループ保護に使用されると、ループ内のいずれかの接続がパケットを転送しないようにすることで、物理的なループが軽減されます。図 13は、westminster と tower ブリッジ間の物理リンクがパケット転送に使用されないことを示しています。
STP とは異なり、TRILL ではループを回避するために物理リンクがシャットダウンされません。その代わりに、TRILL はネットワーク内の TRILL ノードごとに最短パス情報を計算し、その情報を使用して個々の宛先にパケットを転送します。
dladm create-bridge または dladm modify-bridge コマンドで –P trill オプションを指定すれば、TRILL を使用できます。詳細は、ブリッジの作成とブリッジの保護タイプの変更を参照してください。
STP の詳細は、IEEE 802.1D-1998 を参照してください。TRILL の詳細は、Internet Engineering Task Force (IETF) TRILL draft documents (http://tools.ietf.org/wg/trill) を参照してください。
dladm create-bridge コマンドを使用して作成された各ブリッジは、svc:/network/bridge の同じ名前の付いたサービス管理機能 (SMF) インスタンスとして表されます。各インスタンスは、STP を実装する /usr/lib/bridged デーモンのコピーを実行します。
たとえば、次のコマンドは pontevecchio というブリッジを作成します。
# dladm create-bridge pontevecchio
svc:/network/bridge:pontevecchio という SMF サービスインスタンス、および /dev/net/pontevecchio0 という可観測性ノードが作成されます。可観測性ノードは、snoop コマンドおよび wiresha k パケットアナライザで使用することを目的としています。dlstat コマンドを使用してブリッジのランタイム統計を取得できます。
安全のため、デフォルトで標準 STP がすべてのポートで実行されます。STP などの一部のブリッジプロトコル形式が実行されないブリッジでは、ネットワークで長期にわたる転送ループが発生する可能性があります。Ethernet のパケットにはホップ数や有効期間 (TTL) が存在しないため、このようなループはネットワークにとって致命的です。
特定のポートが別のブリッジに接続されていない (たとえば、ポートがシステムに直接ポイントツーポイント接続されているため) ときは、管理上そのポートの STP を無効にできます。ブリッジ上のすべてのポートで STP が無効になっている場合でも、STP デーモンは次の理由で実行されます。
新たに追加されるポートを処理するため
BPDU ガードを実装するため
必要に応じて、ポート上の転送を有効または無効にするため
ポートで STP が無効になっている場合、bridged デーモンは BPDU (BPDU ガード) の待機を続行します。デーモンは syslog を使用してエラーにフラグを付け、ポート上の転送を無効にして、重大なネットワークの構成ミスを示します。リンクが停止してから再起動すると、またはリンクを手動で削除してから再度追加すると、ふたたびリンクが有効になります。
ブリッジの SMF サービスインスタンスを無効にすると、STP デーモンが停止したときに、そのポート上のブリッジも停止します。インスタンスが再起動すると、STP は初期状態から起動します。
dladm create-bridge -P trill コマンドを使用して作成された各ブリッジは、svc:/network/bridge および svc:/network/routing/trill の同じ名前の付いた SMF インスタンスによって表されます。svc:/network/routing/trill の各インスタンスでは、TRILL プロトコルを実装する /usr/lib trilld デーモンのコピーが実行されます。
たとえば、次のコマンドは bridgeofsighs というブリッジを作成します。
# dladm create-bridge -P trill bridgeofsighs
svc:/network/bridge:bridgeofsighs と svc:/network/routing/trill:bridgeofsighs という 2 つの SMF サービスが作成されます。さらに、/dev/net/bridgeofsighs0 という可観測性ノードも作成されます。