CiscoのL3スイッチ(Catalystなど)で物理ポートをL3ポート化するためにno switchportを投入し、直接IPアドレスを設定したことはありませんか。

「物理ポートに直接IPを振ったのだから、VLANは使っていない」と思いたくなりますが、実はスイッチの裏側(チップ内部)では専用のVLANが自動的に作成され、1つ消費されています
本記事では、この「内部VLAN(Internal VLAN)」の仕組みと、VLAN IDの衝突を防ぐためのvlan internal allocation policyの使いどころを解説します。

1. なぜ no switchport なのに内部VLANを消費するのか

結論から言うと、Catalystスイッチの転送処理チップ(ASIC)が、すべてのパケットを一旦VLANというグループに所属させてから処理するというL2スイッチの構造を前提に作られているためです。

外から見れば純粋なL3ルーティングポートですが、パケットがスイッチ内部を通過する瞬間だけは、処理を円滑にするために「そのポート専用の、外からは見えないVLANの入れ物」にパケットを収めています。

チップ内部でのパケットの流れ

  1. パケット受信:外部からタグなしのIPパケットがno switchportポートに届く
  2. 内部タグ付与:スイッチに入った瞬間、内部で自動生成された「内部VLAN(例:VLAN 4094)」のタグが付与される
  3. L3ルーティング:内部VLANに乗ってルーティングエンジンへ運ばれ、転送先VLANが判断される
  4. パケット送信:出力ポートから出る際、内部VLANタグは剥ぎ取られ、元のタグなしパケットとして送信される

2. show vlan では見えない:確認コマンドと出力例

この内部VLANは、通常のshow vlanshow vlan briefを叩いても一切表示されません。裏で自動的に動いているものなので、管理者向けの表からは隠されています。

現在どのVLANが内部的に消費されているかを確認するには、専用コマンドを使用します。

Switch# show vlan internal usage

出力例:

VLAN   Usage                             Alternative Link
-----  --------------------------------- ----------------
1006   GigabitEthernet1/0/11
1007   GigabitEthernet1/0/12
4094   GigabitEthernet1/0/1
4093   GigabitEthernet1/0/2

この例では、no switchportを設定している物理ポートGigabitEthernet1/0/11/0/2のために、システムが裏でVLAN 4094と4093をキープして使っていることが分かります。

3. 手動VLANと内部VLANが衝突しない仕組み

ここで浮かぶ疑問が、「スイッチが内部VLANとして消費しているID番号(例:4094)を、知らずに手動でvlan 4094と作ろうとしたらどうなるのか」という点です。

答えは、エラーになって弾かれます。

% Default/Reserved/Internal VLAN 4094 cannot be created.

これでは設計の自由度が下がってしまいますが、Ciscoスイッチにはデフォルトで衝突を避ける仕組みが備わっています。それが自動割り当ての方向(ポリシー)です。

  • 手動VLAN(人間):通常は若い番号(昇順:VLAN 2、10、30…)から順に作っていく
  • 内部VLAN(スイッチ):デフォルト設定(降順:descending)により、一番大きい4094番から下に向かって自動消費していく

下から積み上げる「人間」と、上から削っていく「スイッチ」が中央で出会うまでは衝突しない、という設計になっています。

4. vlan internal allocation policy の使いどころ

では、割り当てポリシーを変更するこのコマンドはいつ使うのでしょうか。

Switch(config)# vlan internal allocation policy ascending
  • descending(降順・デフォルト):4094から下に向かって割り当てる
  • ascending(昇順):1006から上に向かって(1006, 1007…)割り当てる

ユースケースとして分かりやすいのは、社内のナンバリングルールや拠点設計の都合で手動VLANに4000番台(VLAN 4000〜4090など)を使いたいケースです。

デフォルトのままでは内部VLAN(4094から降順)と衝突してしまい、手動でのVLAN作成ができません。そこでポリシーをascendingに変更すると、スイッチは内部VLANを若い番号(1006〜)から消費するようになるため、大きい番号帯を丸ごと手動VLAN用に空けておくことができます

5. よくある不安:既存VLANが後から奪われることはないか

「ルーテッドポート(no switchport)を後から増やしていったら、本番通信で使っているVLANが勝手に内部VLANとして上書きされるのでは」と心配になるかもしれませんが、これはありません。

スイッチは新しい内部VLANを確保する際、すでに手動で作成されているVLANをすべてスキップし、現在完全に空いている(未使用の)VLAN IDだけを選んで割り当てる仕様になっています。既存の通信に影響が出ることはありません。

まとめ

  • no switchportの物理L3ポートは、裏で内部VLANを1つ消費して動いている
  • 確認はshow vlanではなくshow vlan internal usageで行う
  • 手動VLANと内部VLANの衝突を避けるため、割り当てポリシーをdescending(降順)かascending(昇順)で調整できる

普段は見えないところで動いている機能ですが、把握しておくと設計時のVLAN番号設計やトラブルシューティングで役立ちます。実機を触る機会があれば、一度show vlan internal usageを叩いてみてください。