このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
HUB 同士をループができるようにつなぐと、何が起きるでしょうか? IP で利用しようとすると、必ず ARP を使うことになるので、 Ethernet 上で ブロードキャストが発生します。 するとループを時計回りと反時計回りの双方向にブロードキャストパケットが 送出されます。 これが HUB をどんどん伝搬していきますが、 Ethernet のパケットには TTL がありませんので、一周してきたパケットは消えず、永久にパケットが回るこ とになります。 さらに、二股になっている部分で、ブロードキャストのパケットは二つになり ます。 それがループによって戻ってくると、元々一つのパケットが二つに増えること になります。 つまり、次のようなネットワークでは分岐にパケットが到達する度にパケット 量が倍に増えていきます。 このようにブロードキャストパケットが消失せず、 HUB 間を増殖しながら巡 る状況をブロードキャストストーム と呼びます。
IEEE 802.1d は Ethernet の冗長性を確保するためのプロトコルであるスパン ニングツリーを作ります。 これは、HUB をどのように接続しても、自動的にループを検出し、接続の一部 を使わないようにすることにより、ループを解消するプロトコルです。 その結果、全ての HUB の接続を保ったまま、全ての HUB の接続関係を木構造 にします。 このように全域に渡る木構造をスパンニングツリー(全域木)と呼 びます。 HUB 同士の接続の状況は動的に判断されるため、スパンニングツリー上で回線 故障が発生した場合、その回線を使用しないでスパンニングツリーが作られる ように動的に構造が変えられます。 つまり、この機能はブロードキャストストームを防ぐだけではなく、回線の冗 長構造による耐故障性をも得ることができます。
802.1d は回線異常に対して、当初数十秒で回復するように設計されていまし た。 その後、 802.1w という改良版が出ました。 これは故障してからスパンニングツリーを再構築するのではなく、あらかじめ 計算を行っておくものです。 そして、 802.1d-2004 というバージョンでこの 802.1w を吸収し、LAN の冗 長構成が可能なスパニングツリーのプロトコルは 802.1d という名称で一元化 されました。
802.1d によるスパンニングツリー作成アルゴリズムの概要は次の通りです。
VLAN(Virtual LAN) とは物理的な接続とは異なる LAN 接続を行う ことです。 これは LAN の機器のソフトウェア的な設定により実現されます。 VLAN にはポートベース VLANと タグ VLAN(802.1Q VLAN) の二種類があります。
ここにおける文脈で LAN とはユニキャスト、ブロードキャストが可能な対象 を言います。 つまり同一 VLAN に接続している機器同士はユニキャストもブロードキャスト も可能です。
ポートベース VLAN は HUB の設定によりブロードキャストエリアを区切るも のです。 ハブ内でグループ ID 毎にどのポートが属するかを決定します。 例えば 8 ポートの HUB を考えることにします。 ポートの番号を 1, ..., 8 とします。
グループ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | ○ | ○ | ○ | ○ | ● | ● | ● | ● |
2 | ● | ● | ● | ● | ○ | ○ | ○ | ○ |
このようにすると、8ポートのHUBが 4ポートの二つのHUBに分割できます。 ポートベースVLANのメリットは一旦全ての線をHUBに接続した後に、配線を変 更せずに接続をソフトウェア的に変更ができることです。
なお、一つのポートは二つ以上のグループに属すこともできます。 そのため、つぎのような応用も考えられます。 二つの異なるLAN から一つのサーバを共有する時、 一つの HUB 上に二つの異なるグループを作り、サーバ用のポートだけ両グルー プに属するようにします。 こうすると、グループ間のトラフィックがない以上、互いの通信は相互に届か ないため、LAN のスループットは向上します。 但し、サーバから出るブロードキャストは両方のLANに伝わるため、完全には 分離できません。
グループ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | ○ | ○ | ○ | ○ | ● | ● | ● | ○ |
2 | ● | ● | ● | ● | ○ | ○ | ○ | ○ |
ポートベースの VLAN は単純に HUB のポートをグループ化するだけなので、 複数の HUB にまたがってグループを設定するにはグループ毎の配線が必要に なります。 また、サーバの共有例で説明したように、複数のグループに属するポートから のブロードキャストを特定の VLAN にだけ流すことはできません。
これに対して802.1q VLAN は Ethernet のパケットを拡張し、パケットにタグ を付けることにより、特定の VLAN 宛へのパケットとして流す仕組みです。 VLAN 番号は 1 から 4095 まで選べます。 また、 802.1q では、この他に、優先制御の機能も付加してあります。これに 関しては省略します。
パケットの構造は下記の通りになっています。 VLAN 番号 0 は優先制御のみを伝えます。 また、通常デフォルトの VLAN 番号は 1 になります。
7バイト分の 0xAA=0b10101010 | 1バイトの 0xAB=0b10101011 | 6バイト | 6バイト | 2バイト | 0〜1500バイト | 0〜46バイト | 4バイト |
---|---|---|---|---|---|---|---|
プリアンプル | SFD | 宛先 | 送信者 | 長さ/タイプ | データ | パディング | チェックサム |
7バイト分の 0xAA=0b10101010 | 1バイトの 0xAB=0b10101011 | 6バイト | 6バイト | 2バイト | 2バイト | 2バイト | 0〜1500バイト | 0〜46バイト | 4バイト |
---|---|---|---|---|---|---|---|---|---|
プリアンプル | SFD | 宛先 | 送信者 | TPID | TCI | 長さ/タイプ | データ | パディング | チェックサム |
まず、このタグ付きの Ethernet パケットは、通常の Ethernet と互換性があ りません。そのため、パケットの共存はできません。 TPID は Ethernet では 16 進数で 81-00 と決まっています。 また TCI は以下のようになっています。
3bit | 1bit | 12bit |
---|---|---|
優先度 | CFI(MAC アドレスが標準形式かどうか示すフラグ) | VLAN ID |
ここで、 VLAN ID=0x000 は空、つまり優先度のみの情報を指し、 VLAN ID=0xFFF は実装上の都合により予約されています。 ユーザは 0x001 から 0xFFE までの値を VLAN ID に使います。 0x001 はデフォルトの VLAN ID として使われます。
このように、タグつきの Ether フレームと、タグなしの Ether フレームは互 換性がないため、 HUB のポートはタグ付きのパケットをやり取りするポート と、タグ無しのパケットをやり取りするポートに区分けする必要があります。 次に、各ポートには少なくとも 1 つの VLAN 番号が割り当てられることにな りますが、タグ無しパケット用のポートは、タグを付加する必要があります。 そのため、タグ無しパケットに付加される VLAN 番号は固定する必要がありま すので、 タグ無しポートは一つの VLAN にしか属せません。 一方、タグ有りポートは複数の VLAN 番号のタグ付きパケットが来ても問題あ りません。
さて、パケットが送受されるプロトコルは次のようになります。 まず、タグ無しポートにパケットが入ってきた場合
VLAN n | ○ | ◎ | ○ |
---|---|---|---|
↑ | ↓ | ↓ | |
□ | [n]□ | □ |
一方、タグ付きポートにパケットが入ってきた場合
VLAN n | ◎ | ◎ | ○ |
---|---|---|---|
↑ | ↓ | ↓ | |
[n]□ | [n]□ | □ |
ここで説明した用語は CISCO 社の資料で使われている用語と異なります。 ここで CISCO 社の使用している用語を解説します。
CISCO 社のスイッチ Catalyst において、 IOS という OS における設定条件 について説明します。 上記のタグなしのポートとタグありのポートという区別は switchport のモー ドがaccess と trunk というモードになります。 そして、 access の場合は設定できる VLAN は一つだけ、一方の trunk の場 合はデフォルトでは全ての VLAN が追加できるようになっています。 但し、 VLAN 番号 1 はデフォルト VLANと呼ばれ、タグが付かず、 すべてのポートで使用できます。 つまり access モードのポートにおいて、タグなしのパケットは廃棄されず、 もし 1 番以外の VLAN に属していたら、
複数の VLAN を一本の線にまとめ、 HUB をまたがって VLAN を構築する。
例えば、HUB A, HUB B の二台の HUB で、共に VLAN 番号 1,2 の VLAN を設 定する時、次のように設定することで、両方の HUB の VLAN 1 同士、 VLAN 2 同士が接続されます。
VLAN | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | ○ | ○ | ○ | ○ | ● | ● | ● | ◎ |
2 | ● | ● | ● | ● | ○ | ○ | ○ | ◎ |
VLAN | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | ○ | ○ | ○ | ○ | ● | ● | ● | ◎ |
2 | ● | ● | ● | ● | ○ | ○ | ○ | ◎ |
この状態でポート 8 同士を接続すると、双方の VLAN 1, VLAN 2 がそれぞれ 接続されます。
802.1q は HUB だけの規格ではありません。 これはルータや通常の OS なども対応しています(Windows はネットワークカー ドに対応した設定ツールが必要)。 ルータのポートをタグポートにすることにより、複数の VLAN をそのままルー タに接続することができます。
ルータの VLAN の設定手順は次の通りです。
例えば、CISCO のルータの FastEthernet0 ポートに対して 2 個の VLAN を設定し、 VLAN 1 には 172.16.1.254/24、 VLAN 2 には 172.16.2.254/24 の振るには次 のようにします。
interface FastEthernet0
no ip address
exit
interface FastEthernet0.1
encapsulation dot1Q 1
ip address 172.16.1.254 255.255.255.0
exit
interface FastEthernet0.2
encapsulation dot1Q 2
ip address 172.16.2.254 255.255.255.0
exit
このように設定したルータのポートに HUB のタグポートを接続することで、 ルータポート一つに対して、 2 つの VLAN を接続できることになります。
なお、この VLAN の設定はハードウェアが許す限りできますので、実際はルー タのポート一つだけで、存在する HUB のポート全てを別々の VLAN にするこ ともできます。
ここでは情報通信工学実験のルータネットワーク実験のネットワークと類似し たネットワークを構築することを考えます。 実験書にあるネットワークはルータ同士をシリアルケーブルで接続するように なってますが、ここではルータ同士もイーサネットで接続することを考えます。 また、テスト用に末端のネットワークにはパソコン二台、ルータ同士を接続す るネットワークにもパソコン一台を接続できるようにします。
これを VLAN を使って、ルータ二台はポート一つずつ、 HUB は一台で済ませ ることにします。 二つの末端ネットワークを VLAN 1,2 とし、ルータ同士をつなぐネットワーク を VLAN 3 とします。そして、各ネットワークアドレスを 172.16.1.0/24, 172.16.2.0/24, 172.16.3.0/24 とします。 ルータ A のアドレスは 172.16.1.254 と 172.16.3.1, ルータ B のアドレス は 172.16.2.254 と 172.16.3.2 とします。 論理的なネットワーク接続図は次のようになります。
これを次のような物理的なネットワークで構成します。
これを実現するために HUB の VLAN の設定は次のようにします。
VLAN | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | ○ | ○ | ◎ | ● | ● | ● | ● | ● |
2 | ● | ● | ◎ | ○ | ◎ | ● | ● | ● |
3 | ● | ● | ● | ● | ◎ | ○ | ○ | ● |
このポート 3 にルータAの FastEthernet0 ポートを、ポート 5 にルータBの FastEthernet0 ポートを接続します。 そして、次のようにルータA、ルータBを設定します。
interface FastEthernet0
no ip address
exit
interface FastEthernet0.1
encapsulation dot1Q 1
ip address 172.16.1.254 255.255.255.0
exit
interface FastEthernet0.3
encapsulation dot1Q 3
ip address 172.16.3.1 255.255.255.0
exit
interface FastEthernet0
no ip address
exit
interface FastEthernet0.2
encapsulation dot1Q 1
ip address 172.16.2.254 255.255.255.0
exit
interface FastEthernet0.3
encapsulation dot1Q 3
ip address 172.16.3.2 255.255.255.0
exit
802.1q は 802.1s で定義された VLAN 毎のスパニングツリープロトコルを吸 収し、 VLAN 構造にループが存在しても冗長構成として利用できるようになっ ています。
このように 802.1q VLAN を使用すると、物理的なネットワークの構成と、論 理的なネットワークの構造を切り離すことができ、完全に自由に論理的なネッ トワークを構築できるようになります。 実際に 802.1q の利用できる HUB を紹介します。
Planex の HUB の設定は Web アプリケーションで行います。 一方、 Cisco の Catalyst は、ルータと同様に IOS によるコマンドの指定で 設定します。