マルチレイヤスイッチとは
マルチレイヤスイッチとは、OSI参照モデルの複数の層でデータ転送処理を行えるスイッチのことです。一般的には「L3スイッチ」と呼ばれ、企業ネットワークのLANを構築する上で欠かせない存在です。
L2スイッチはVLANによるネットワーク分離は可能ですが、異なるVLAN間の通信(ルーティング)はできません。一方、L3スイッチは1台でVLAN分離とVLAN間ルーティングの両方を実現できるため、ルータを追加せずに効率的なネットワークを作ることができます。
また、L2スイッチが管理用に1つのIPアドレスしか持たないのに対し、L3スイッチはVLANごとに異なるIPアドレス(ゲートウェイ)を持つことができます。さらに、ACL(アクセス制御リスト)を適用して、セグメント間の通信制御やフィルタリングも行えます。
つまり、L3スイッチはLAN内の多くのL2スイッチをまとめ、効率的かつ柔軟にネットワークを管理する中心的な役割を担います。ルータは今では主にWAN接続やインターネット接続用として利用されることが多く、LAN内ではL3スイッチが主役となっています。
マルチレイヤスイッチのポートの分類
L3スイッチは万能ではなく、ポートごとにL2またはL3の機能を持たせることができます。つまり、ポート単位で「スイッチ的な動作」と「ルータ的な動作」を使い分けられるのが特徴です。
Cisco Catalystスイッチの場合、ポートは次のように分類されます。
| 種類 | Layer | ポートの役割 | 説明 |
|---|---|---|---|
| 物理ポート | L2 | アクセスポート | 1つのVLANトラフィックを扱うポート |
| L2 | トランクポート | 複数のVLANトラフィックをまとめて転送するポート | |
| L3 | ルーテッドポート | ルータのようにポート単位でルーティングするポート | |
| 論理ポート | L2 | L2 Port-Channel | L2のリンクアグリゲーション(複数ポートを束ねる) |
| L3 | L3 Port-Channel | L3のリンクアグリゲーション | |
| L3 | SVI(Switch Virtual Interface) | VLANごとに作成するL3インターフェース。VLAN間ルーティングに使用 |
特に実務や試験でよく出てくるのは「トランクポート」「L2 Port-Channel」「SVI」の3つです。アクセスポートはPCやサーバを収容する際に利用しますが、L3スイッチにおいてはトランク接続で他のスイッチをまとめることが多いです。
なお、ルーテッドポート(物理ポートを完全にL3ポート化するもの)はあまり使われません。これは、VLANを使わずに単純なルーティングを行う場合に利用されるからです。
SVI(Switch Virtual Interface)の基本
マルチレイヤスイッチでVLAN同士を通信させるためには、SVIという仮想的なインターフェースを作成します。SVIは各VLANごとに1つずつ必要で、そのVLANにIPアドレスを割り当てることでルーティングが可能になります。言い換えると、SVIは「VLANの代表として振る舞うIP付きの窓口」のような役割を持っています。
IPルーティングの有効化
SVIを設定する前に、スイッチ自身に「ルーティング機能」を有効化する必要があります。通常のL2スイッチにはルーティング機能がありませんが、L3スイッチでは次のコマンドで有効にできます。
(config)# ip routing
これを入力しないと、いくらSVIを作成してもVLAN間通信はできません。試験でもよく問われる「忘れがちな一行」なので必ず覚えておきましょう。
SVIの作成手順
SVIを作成する際は、まず対象となるVLAN番号を指定して、その上にIPアドレスを設定します。作成直後はインターフェースが管理的に停止状態なので、no shutdown で有効化することを忘れないようにします。
(config)# interface vlan 10
(config-if)# ip address 192.168.10.254 255.255.255.0
(config-if)# no shutdown
ここで指定するIPアドレスは、そのVLAN内のホストがデフォルトゲートウェイとして利用するアドレスになります。
設定例
次の例では、VLAN10とVLAN20を作成し、それぞれにSVIを設定しています。こうすることで、異なるVLAN間でパケットが行き来できるようになります。
(config)# vlan 10
(config)# vlan 20
(config)# ip routing
(config)# interface vlan 10
(config-if)# ip address 192.168.10.254 255.255.255.0
(config-if)# no shutdown
(config)# interface vlan 20
(config-if)# ip address 192.168.20.254 255.255.255.0
(config-if)# no shutdown
動作確認
設定後は次のコマンドで状態を確認します。
# show ip interface brief
ここで「Status」と「Protocol」が両方とも「up」となっていればSVIは正しく動作しています。
トラブルシューティングの流れ
もしSVIがupにならない場合、以下の確認が有効です。
show vlanで、そのVLANが正しく作成されているか確認show interfaces statusで、そのVLANに属するポートがリンクアップしているか確認show ip interface briefで、IPアドレスと状態を再確認show ip routeで、割り当てたネットワークが「directly connected」として認識されているか確認
よくある原因
SVIがupしない典型的な理由は次の通りです。試験でも問われやすいため注意しておきましょう。
- VLANそのものがスイッチ上に存在していない
no shutdownを実行していない- VLANに所属するポートが1つもリンクアップしていない
- ポートはリンクアップしているが、STPの影響でフォワーディング状態になっていない
このようにSVIは「VLANの出口」として非常に重要な役割を持ち、L3スイッチの要点として試験に頻出します。
ルーテッドポートとは
ルーテッドポートとは、マルチレイヤスイッチの物理ポートを「L3ポート」として動作させる設定です。通常のスイッチポートはVLANに所属し、そのVLANに対応するSVIを作成してIPを割り当てる必要があります。しかしルーテッドポートは、VLANを介さずに物理ポートに直接IPアドレスを付与でき、ルータの物理インターフェースのように扱えます。
イメージとしては「スイッチポートをルータのLANポートに変える」と考えると理解しやすいでしょう。
SVIとの違い
SVIは「VLANごとに仮想インターフェースを作り、スイッチ内部でVLAN間通信を可能にする仕組み」です。一方でルーテッドポートは「物理ポートをそのままL3として利用する」ため、VLANを作成する必要がありません。
ただし、ルーテッドポートには制約もあります。たとえばサブインターフェースを作成できないため、1つの物理ポートで複数のネットワークを収容するといった柔軟性はありません。そのため、ほとんどの環境ではSVIが一般的に利用されます。
しかし、L3 EtherChannelを実装する際など、ルーテッドポートが必須となるケースも存在します。試験でも「どの場面でSVIを使い、どの場面でルーテッドポートを使うのか」が問われやすいポイントです。
ルーテッドポートの設定手順
ルーテッドポートを使用する場合も、まずはスイッチでルーティング機能を有効化する必要があります。
(config)# ip routing
その後、対象の物理インターフェースを選び、以下の手順で設定します。
(config)# interface gigabitethernet0/1
(config-if)# no switchport
(config-if)# ip address 192.168.10.254 255.255.255.0
(config-if)# no shutdown
ここで重要なのが no switchport です。これを入力することで、そのポートは「L2ポート」ではなく「L3ポート」として動作するようになります。その後、IPアドレスを設定して有効化します。
設定例
以下は2つのルーテッドポートを設定し、それぞれ別のネットワークに属するようにした例です。
(config)# ip routing
(config)# interface gigabitethernet0/1
(config-if)# no switchport
(config-if)# ip address 192.168.10.254 255.255.255.0
(config-if)# no shutdown
(config)# interface gigabitethernet0/2
(config-if)# no switchport
(config-if)# ip address 192.168.20.254 255.255.255.0
(config-if)# no shutdown
この設定により、GigabitEthernet0/1 と GigabitEthernet0/2 はそれぞれL3ポートとして動作し、異なるネットワークを接続できるようになります。
動作確認
設定後は以下のコマンドで状態をチェックします。
show ip interface brief
ルーテッドポートに設定したIPアドレスが正しく表示され、「Status」「Protocol」がともにupであるか確認します。show ip route
割り当てたネットワークが「directly connected」として認識されているか確認します。
音声VLAN(Voice VLAN)の仕組み
Cisco IP Phone には「電話機自身が接続するためのポート」と「PCを接続できるポート」の2つが用意されています。これにより、スイッチ側でポートを2つ消費せずに、1つのポートだけでPCとIP Phoneの両方を接続することが可能になります。
しかし、PCと電話を同じVLANに収容すると、データ通信と音声通信が混在し、ネットワークが混雑したときに音声品質が悪化する危険があります。音声はリアルタイム性が重要で、データ通信のように遅延や再送を許容できないためです。そこで利用されるのが「音声VLAN(Voice VLAN)」です。
Voice VLANの役割
Voice VLANは、Cisco独自の拡張機能であり、1つのスイッチポートに「データ用VLAN」と「音声用VLAN」を共存させることができます。通常、複数のVLANを同じリンクで扱うにはトランクポートが必要ですが、Voice VLANを使えば「アクセスポート」で同様の効果を実現できます。
具体的には以下のように動作します。
- PCからスイッチへ送られるデータトラフィックは Native VLAN を利用して転送されます(タグなしフレーム)。
- IP Phoneからスイッチへ送られる音声トラフィックは Voice VLAN を利用して転送されます(802.1Qタグ付きフレーム)。
つまり、PC ⇔ IP Phone 間はシンプルなアクセスリンクのように見えますが、IP Phone ⇔ スイッチ間は実際にはトランクリンクとして振る舞い、2種類のVLANを使い分けているのです。
| トラフィック | 使用するVLAN |
|---|---|
| データ通信 | Native VLAN |
| 音声通信 | Voice VLAN |
Cisco IP PhoneとCDP
Voice VLANの設定はスイッチ側だけで行えばよく、IP Phoneには特別な設定は不要です。スイッチがVoice VLANを設定していると、CDP(Cisco Discovery Protocol)で「このポートには音声用のVLANは○○番です」という情報がIP Phoneに伝えられます。
その情報を受け取ったIP Phoneは、自動的に音声パケットに802.1Qタグを付与して送信するようになります。つまり、Voice VLANを動作させるには CDPが有効であることが前提条件 です。
Voice VLANの設定手順
Voice VLANを設定する流れは以下の通りです。
- データ用のVLANを作成する
- 音声用のVLANを作成する
- アクセスポートを設定し、データ用VLANを割り当てる
- 同じポートに音声VLANを割り当てる
コンフィグ例
以下は、データ用にVLAN 10、音声用にVLAN 15を割り当てる例です。
(config)# interface fastethernet0/1
(config-if)# switchport mode access
(config-if)# switchport access vlan 10
(config-if)# switchport voice vlan 15
この設定により、FastEthernet0/1ポートにはPCをVLAN 10に、IP PhoneをVLAN 15に収容することができます。
用語の別名
Voice VLANは文献によって「補助VLAN(Auxiliary VLAN, AUX VLAN)」とも呼ばれます。呼び方が異なっても仕組みは同じなので、試験では用語の違いに惑わされないようにしましょう。
音声VLAN(Voice VLAN)の詳細設定
Voice VLANは単に「PCとIP Phoneを同じポートで収容できる仕組み」というだけではなく、音声トラフィックの品質(QoS)を守るための設定も重要になります。ここでは、実際の設定方法とQoSの扱い、さらにCisco以外のIP Phone接続時の違いを整理していきます。
QoSの設定とCoSの信頼
Cisco IP Phoneがスイッチに接続されると、CDPによってVoice VLANの情報だけでなくQoSに関する指示も受け取ります。音声はリアルタイム性が求められるため、遅延や損失を最小限に抑える仕組みが必要です。そのため、IP Phoneが送信する音声パケットに対してスイッチはCoS値を信頼するように設定します。
代表的なコマンドは以下です。
(config)# mls qos
(config-if)# mls qos trust cos
ここで trust cos を指定すると、IP Phoneが付与したCoS値をそのままスイッチが優先制御に利用するようになります。もしIP PhoneでなくPCの送信パケットに対して優先制御を行いたい場合は、trust dscp を使うことも可能です。
switchport voice vlan のオプション
Voice VLANを設定する際の基本コマンドは以下です。
(config-if)# switchport voice vlan [ vlan-id | dot1p | none | untagged ]
オプションの意味は次の通りです。
- vlan-id
もっとも一般的に使われる設定。音声トラフィックを特定のVLANへ収容する。
例:switchport voice vlan 15 - dot1p
VLAN 0(Native VLAN)を利用し、802.1pによるプライオリティ制御だけを適用。主にQoSのみを意識する設定。 - none
IP Phone側の設定に任せ、タグなしの音声パケットをそのまま送信。 - untagged
明示的にタグなし音声パケットを送信するよう指定。
試験では「最もよく使われるのは vlan-id を指定する方法」であることを覚えておきましょう。
PCからのデータトラフィックの制御
Cisco IP Phoneは自分自身が使うポートのほかに、PCを接続できるポートを持ちます。このとき、PCからのフレームに含まれるCoS値をそのままスイッチへ渡すか、あるいは変更するかを制御できます。
設定方法は以下の通りです。
(config-if)# switchport priority extend [ cos value | trust ]
- cos value
PCからのフレームのCoS値を強制的に指定値に書き換える。
例:switchport priority extend cos 2 - trust
PCからのフレームに付けられたCoS値を信頼する。
デフォルトでは信頼せず、すべて0に書き換える動作となっています。
Cisco IP Phone接続時の設定例
以下は、PCをVLAN 10、IP PhoneをVLAN 15に収容する例です。QoSを有効にし、CoS値を信頼する設定を含めています。
(config)# vlan 10
(config-vlan)# name data
(config)# vlan 15
(config-vlan)# name voice
(config)# mls qos
(config)# interface FastEthernet0/1
(config-if)# switchport mode access
(config-if)# switchport access vlan 10
(config-if)# switchport voice vlan 15
(config-if)# mls qos trust cos
(config-if)# mls qos trust cisco-phone
(config-if)# priority-queue out
ここで mls qos trust cisco-phone を設定すると、Cisco IP Phoneからのパケットだけを信頼し、その他の端末からのパケットは信頼しないように制御できます。
他社IP Phone(Avayaなど)の場合
Cisco以外のIP Phoneでは、Voice VLAN機能(CDPによる通知)が使えません。そのため、スイッチポートを通常のトランクポートとして設定し、音声VLANとデータVLANを両方許可する必要があります。
例: Avaya IP Phoneを接続する場合
(config)# vlan 10
(config-vlan)# name data
(config)# vlan 15
(config-vlan)# name voice
(config)# mls qos
(config)# interface FastEthernet0/1
(config-if)# switchport mode trunk
(config-if)# switchport trunk allowed vlan 10,15
(config-if)# switchport native vlan 10
(config-if)# mls qos trust dscp
(config-if)# priority-queue out
(config-if)# no cdp enable
ここで no cdp enable を入れているのは、Avaya PhoneがCDPを利用しないためです。