本サイトはPRが含まれています。
-
MACアドレステーブルをみて転送先ポートを判断
-
1ポートに複数のMACアドレスがぶら下がるのはOK
-
同じMACアドレスが複数ポートにぶら下がるのはNG
-
基本的にMACアドレステーブルは自動的に登録される(どうしても必要なケースのみ手動登録)
-
MACアドレステーブルに登録がない場合は全ポートに転送(フラッディング)
-
MACアドレス重複時は通信障害
スイッチングハブはリピータハブと違うって言うけどどういった違いや仕組みなのかしら?
チャーチルさん
ポン先生
リピータハブと違ってちゃんと宛先のポートにデータを転送することができるよ。今日はこの仕組を理解しよう。
本記事ではスイッチングハブの基本的な役割“スイッチング”について解説します。L2通信の中核を成す基本中の基本といえる内容なので必ず把握しておきましょう。
HAL校長
目次
スイッチングハブの仕組み
スイッチングハブはどの企業のネットワークでも使われる機器です。逆に、普通リピータハブは使わないと言った方が良いかもしれません。リピータハブは“宛先に関わらず全てのポートにデータを転送する”という非効率的な方式なのに対し、スイッチングハブは“対象ポートにのみデータを転送します”。ハブ1,2台の話であれば大した差では有りませんが企業ネットワークでは当然規模も大きくなり、無駄なトラフィックも増えてしまいます。そもそも単純なデータ転送以外の機能も求められるため、わざわざ低機能なリピータハブを選定しないという訳です。
リピータハブ・スイッチングハブについて
MACアドレステーブル
では、対象ポートにのみデータを転送するというのは具体的にどういった仕組みなのでしょうか。結論としては、スイッチングハブはMACアドレステーブルに従って適切なポートへデータを転送(スイッチング)しています。
MACアドレステーブルはスイッチングハブが持っている表(ひょう)のようなものです。自身のポート番号とその先にいるMACアドレスが紐付いた形で記録されています。
スイッチングハブにデータが着信した際に、宛先MACアドレステーブルを確認し見つかったらそのポートにデータを転送します。以外に単純ですね。
では下図のようにスイッチングハブの下に別のハブがあり複数のPCが接続されている場合はどうなるでしょう?この場合は同じポートに複数のMACアドレスが登録されます。逆にMACアドレステーブル上、1ポートに複数のMACアドレスが見えている時はその先に別のハブがあるだろうなと予想がつく訳ですね。
MACアドレスの登録
ではMACアドレステーブルはどのように作られるのでしょうか。スイッチングハブは差初期状態では当然何も情報を持っていません。PCに限らずLANに接続されているデバイスは普段ユーザが操作していなくても定期的に何かしらの通信をしています。スイッチングハブはデバイスから来る何かしらの通信を拾い、そこからMACアドレステーブルを自動的に生成します。
また、必要な情報はポート番号とMACアドレスだけです。仮にPCにIPアドレスが設定されておらず、現実的に通信出来ない状態であってもMACアドレステーブルの生成は可能です。これは非常に便利であり、例えば管理者が逐一ユーザPCのMACアドレスを登録する必要もなく、LANに繋げだけなので運用上の手間もありません。
一方、MACアドレステーブルの手動登録も可能です。管理者がスイッチングハブに対しMACアドレステーブル情報を設定します。が、一般的ではなく特別な事情が無い限りは行いません。
特別な事情とは例えばスイッチングハブのbugで一時的にMACアドレステーブルの制御が正常に行われない時や、特定デバイスとの相性が悪く正常登録されない時などレアケースのみです。
ここからは余談ですが、一般的にMACアドレスを管理するという事は非常に手間がかかります。MACアドレスはユーザに紐づくものではなく筐体に紐づく値です。例えばユーザPCぼリプレイスのタイミングでMACアドレスは変わってしまうので、後々どのPCのMACアドレスか分からなくなってしまった、恐らく既に廃棄したPCのMACアドレスだが確証が無いので管理資料や機器設定から消すに消せない、といった事はよくあります。
デバイスの資産管理という意味では型番やシリアルNo.は管理していてもMACアドレスまでは管理出来ていないという話もザラにあります。一度情シスの手を離れPCがユーザに渡ると後からMACアドレスを調べるというのも苦労する所なので、頭の片隅に置いておいても良いかもしれません。
実際MACアドレスを調べようと思うとどうやるのかな?
チャーチルさん
ポン先生
最近はMACアドレスまで簡単に調べられる資産管理用のツールもあるね。ただツールに関してはそもそも導入しておく必要もあるので企業によって対応はマチマチかな。
フラッディング
では、もしデータ通信が来ても宛先のMACアドレスがMACアドレステーブルに無かったどうなるでしょうか。この場合はまずどのポートの先に宛先のデバイスがいるのか探す必要があります。
具体的には全ポートにデータを送信します。この中に宛先のデバイスがあれば応答があるのでその情報をMACアドレステーブルに登録し後続の通信を転送します。この、全ポートに転送する動作をフラッディングと言います。
一方、他のポートのデバイスからすると自分とは関係ないデータが送信されることになりますがこれらは破棄されます。ここの動作はリピータハブと似ていますが、リピータハブはそもそも機能が無いので全ポートに転送しているのに対し、フラッディングは情報が無い時の最終手段であり一度情報が集まればその後は必要無いので位置づけが異なります。
MACアドレスの重複
もし以下のようにMACアドレスが重複してしまったらどうなるのでしょうか?ここではPC2とPC3を別IPアドレスで設定、スイッチングハブの別ポートに接続、MACアドレスのみ重複というケースで考えます。
結論としては通信出来たり出来なかったりします。まずは例としてPC1とPC2が通信するパターンを考えます。流れとしては以下の通りですがこれ自体は通常の流れです。
- PC1はPC2のMACアドレスを知らないのでARPリクエストを投げる(PC2の192.168.0.2に対応するMACアドレス教えてくれ~のブロードキャストを投げる)
- スイッチングハブはPC1から来た ARP リクエストを全ポートへ転送する
- PC2は自分宛のARPリクエストが来たのでARPリプライを返信する(自分のMACアドレスを教える)
- このやり取りの中でスイッチングハブは、00-00-00-AA-AA-AA(PC2のMACアドレス)=2番ポートを学習しMACアドレステーブルを生成する
- その後は通常通りPC1 からPC2へ通信
もちろんPC1とPC3のケースでも同様です。しかしこれらはそれぞれ単独で通信した場合であって、PC2とPC3が同時に通信しようとした際はうまく行きません。PC2とPC3はMACアドレスが重複しているので同時に通信した際はスイッチングハブから見ると00-00-00-AA-AA-AAのMACアドレスがどのポートにいるか分からなくなります。
正確に言うとある時点では、例えば2番ポートに登録されておりその間2番ポートは通信可能、3番ポートは通信不可となります。後にMACアドレステーブルが上書きされポート番号が変わるとPC3が通信可能・PC2が通信不可となります。
※MACアドレステーブル上、同じMACアドレスは同時に複数存在できません。
実環境ではスイッチングハブのMACアドレステーブルキャッシュタイム(情報を保持する時間)や通信状況でタイミングは変わりますが、少なくともPC2とPC3が交互に通信してくれるといった都合の良い事は起きません。そのため正常な通信は出来ないと思っておいた方が良いですが、万が一発生した場合はそれぞれのPCのMACアドレスとスイッチングハブのMACアドレステーブルを確認する必要があります。
ポン先生
ただし、一般的なオフィスで普通にユーザがPCで業務をしているような環境であればMACアドレスが重複するといったことはないかな。検証目的でMACアドレスを変更した、個別のインタフェースを作成した、といったことをしないと普通はおきないので一般的にはレアケースかな。
ネットワークエンジニアを目指すならCCNAを取得しよう!
CCNAとはCisco社のメーカ認定資格です。CCNAの取得はネットワークエンジニアの基本的な知識やCisco製品の理解の証明になります。
特定メーカの資格で役に立つの?実際には他メーカの機種も扱うんじゃないの?
チャーチルさん
ポン先生
確かに業務上Cisco以外の機器を扱うことはあるだろうけど、最初にCiscoを勉強しておくと他の機器も理解しやすくなるんだ。
Ciscoは数あるネットワーク機器メーカの内の1社ですがディファクトスタンダードと言われています。つまり業界標準として位置付けられており、他メーカ機種でもCiscoのコマンドライン等を参考にしている事が多いです。そのため初見の機器でもCiscoと設定方法が似ており、「大体は分かる」なんてケースも多々あります。ネットワークエンジニアとしてはCiscoの学習はむしろ必須と言えるレベルでしょう。
また、Ciscoの資格と言っても独自仕様や製品の話だけでなく、ネットワークの一般的な知識も必要です。Cisco製品と言えベースはネットワークの標準規格に基づいて設計されており、CCNA取得でネットワークの一般的な知識も習得可能です。
上記理由からCCNAは非常におすすめの資格です。ネットワークエンジニアとして本格的に活躍したいのであれば是非チェックすべきでしょう。
【CCNAとは】難しい?勉強は?Cisco資格の登竜門 基本解説
まとめ
-
MACアドレステーブルをみて転送先ポートを判断
-
1ポートに複数のMACアドレスがぶら下がるのはOK
-
同じMACアドレスが複数ポートにぶら下がるのはNG
-
基本的にMACアドレステーブルは自動的に登録される(どうしても必要なケースのみ手動登録)
-
MACアドレステーブルに登録がない場合は全ポートに転送(フラッディング)
-
MACアドレス重複時は通信障害
今回はスイッチングハブの超超基本機能であるスイッチングについて勉強しました。スイッチングは宛先に応じて転送先のポートを決めることです。これによりリピータハブにはあった無駄な通信がなくなり効率的になりました。宛先のポートだけに送るなんて割と当たり前に思うかもしれませんが、ネットワークというのはこうした当たり前や基本の積み重ねで成り立っており、最終的には地球の裏側と一瞬で繋がる事も可能です。L2の通信ができていなければ上位レイヤの通信も成立しないのでまずは確実な一歩として内容は把握しておきましょう。