iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
IT Operation

網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來系列 第 19 篇

Day 19|Layer 3 Switch 為什麼不用外接 Router,也能讓不同 VLAN 互通?SVI 到底是什麼?

  • 分享至 

  • xImage
  •  

Day 18 做 Router-on-a-Stick 時,我的腦袋已經有一張很清楚的圖:

VLAN 10
   ↓
Switch
   ↓
802.1Q Trunk
   ↓
Router
   ↓
802.1Q Trunk
   ↓
Switch
   ↓
VLAN 20

VLAN 是 Layer 2 的隔離。

如果 VLAN 10 想跟 VLAN 20 溝通,就要找一台會 Routing 的 Layer 3 裝置。

所以 Router-on-a-Stick 很合理。

但接著就遇到一個問題:

企業網路裡常看到的是:

PC
↓
Layer 3 Switch
↓
Server

中間根本沒有另外畫一台 Router。

可是 VLAN 10 和 VLAN 20 還是可以互通。

那 Router 去哪裡了?

今天就追這個問題:

Layer 3 Switch 到底做了什麼,為什麼一台 Switch 自己就能完成 Inter-VLAN Routing?

先不要把 Layer 3 Switch 想得太神祕

一般 Layer 2 Switch 最重要的工作是:

收到 Ethernet Frame
↓
看 Destination MAC
↓
查 MAC Address Table
↓
決定從哪一個 Port 送出去

它主要在 Layer 2 工作。

Router 則是:

收到 IP Packet
↓
看 Destination IP
↓
查 Routing Table
↓
決定下一個 Layer 3 網路

所以以前腦袋會畫:

Switch = Layer 2
Router = Layer 3

這個概念沒有錯。

但 Layer 3 Switch 可以先粗略理解成:

一台同時具備 Switching 與 Routing 能力的 Switch。

也就是:

同 VLAN
→ Layer 2 Switching

不同 VLAN
→ Layer 3 Routing

所以並不是 Router 消失了。

而是:

Routing 能力直接被放進 Switch 裡。

先用最小拓撲來看

假設公司有兩個 VLAN:

VLAN 10
192.168.10.0/24

VLAN 20
192.168.20.0/24

兩台 PC:

PC-A
192.168.10.10/24
Gateway 192.168.10.1
VLAN 10

PC-B
192.168.20.10/24
Gateway 192.168.20.1
VLAN 20

接在同一台 Layer 3 Switch:

PC-A
192.168.10.10
VLAN 10
   |
Fa0/1
   |
+----------------+
| Layer 3 Switch |
+----------------+
   |
Fa0/2
   |
PC-B
192.168.20.10
VLAN 20

問題來了。

PC-A 的 Default Gateway:

192.168.10.1

PC-B 的 Default Gateway:

192.168.20.1

這兩個 IP 到底放在哪?

沒有 Router 啊。

答案就是今天的主角:

SVI

SVI 到底是什麼?

SVI:

Switch Virtual Interface

可以先拆成:

Switch
Virtual
Interface

它不是 Switch 上某一個真的 RJ45 網路孔。

而是一個:

屬於某個 VLAN 的邏輯 Layer 3 Interface。

例如:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0

就可以建立:

VLAN 10
↓
SVI VLAN 10
↓
192.168.10.1

另外:

interface vlan 20
 ip address 192.168.20.1 255.255.255.0

建立:

VLAN 20
↓
SVI VLAN 20
↓
192.168.20.1

所以整台 Layer 3 Switch 在邏輯上就變成:

             Layer 3 Switch

       ┌─────────────────────┐
VLAN10 │ SVI VLAN10          │
──────→│ 192.168.10.1/24     │
       │                     │
       │     Routing         │
       │                     │
VLAN20 │ SVI VLAN20          │
──────→│ 192.168.20.1/24     │
       └─────────────────────┘

這時我才突然發現:

Router-on-a-Stick 裡:

Router G0/0.10
192.168.10.1

跟 Layer 3 Switch 裡:

interface vlan 10
192.168.10.1

其實都在解同一件事:

替某個 VLAN 提供一個 Layer 3 Gateway。

只是做法不同。

Router-on-a-Stick vs SVI

Router-on-a-Stick:

Switch
   ||
   || Trunk
   ||
Router
├── G0/0.10 → VLAN 10 Gateway
└── G0/0.20 → VLAN 20 Gateway

Layer 3 Switch:

Layer 3 Switch
├── VLAN 10
│   └── SVI VLAN10 → Gateway
│
└── VLAN 20
    └── SVI VLAN20 → Gateway

最大的畫面差異就是:

Router-on-a-Stick:

Routing 發生在外面的 Router。

Layer 3 Switch:

Routing 直接發生在 Switch 裡。

那封包到底怎麼走?

再回到最熟悉的封包故事。

PC-A:

192.168.10.10/24
Gateway 192.168.10.1

想 ping:

192.168.20.10

第一步仍然完全沒有變。

PC-A 用自己的 Subnet Mask 判斷:

自己:
192.168.10.10/24

目的:
192.168.20.10/24

不是同網段。

所以:

不能直接送給 PC-B
↓
要交給 Default Gateway

也就是:

192.168.10.1

第一個 ARP 還是一樣

PC-A 不知道 192.168.10.1 的 MAC Address。

所以送:

ARP Request

Who has 192.168.10.1?

注意,它不是問:

Who has 192.168.20.10?

因為 PC-B 是遠端網段。

這跟 Day 04、Day 18 完全一樣。

現在回答 ARP 的,不再是外部 Router。

而是:

SVI VLAN 10
192.168.10.1

Layer 3 Switch 回:

192.168.10.1 is at XX:XX:XX:XX:XX:XX

於是 PC-A 可以送出 Frame。

這時 Ethernet Frame 裡裝什麼?

PC-A 傳給不同網段的 PC-B:

Source IP
192.168.10.10

Destination IP
192.168.20.10

但是這一跳:

Destination MAC
=
Default Gateway 的 MAC

所以還是:

IP 看終點

MAC 看這一跳

這件事從 Day 04 到現在都沒有變。

Frame 進入 Layer 3 Switch 之後發生什麼?

Switch 收到 Frame。

它發現這個 Frame 的 Layer 2 Destination 是自己的 SVI。

所以這個封包不是單純:

MAC Table
↓
另一個 Layer 2 Port

而是要進入 Layer 3 Routing。

可以粗略畫成:

PC-A
↓
VLAN 10
↓
SVI VLAN 10
↓
Layer 3 Routing
↓
SVI VLAN 20
↓
VLAN 20
↓
PC-B

這就是 Layer 3 Switch 做 Inter-VLAN Routing 的核心畫面。

Routing Table 又回來了

Layer 3 Switch 有:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0

interface vlan 20
 ip address 192.168.20.1 255.255.255.0

所以它自然知道:

192.168.10.0/24
→ Connected

192.168.20.0/24
→ Connected

這跟 Router 一模一樣。

因為:

只要 Layer 3 裝置有某個 IP Interface,就可以知道這個 Network 是 directly connected。

所以收到:

Destination IP
192.168.20.10

它查 Routing Table:

192.168.20.0/24
→ directly connected
→ VLAN 20

於是決定:

從 VLAN 20 送出去

接著又回到 ARP

Layer 3 Switch 知道:

192.168.20.10
在 VLAN 20

但它如果還不知道 PC-B 的 MAC,還是不能直接組 Ethernet Frame。

所以:

VLAN 20
↓
ARP Request

Who has 192.168.20.10?

PC-B 回:

192.168.20.10 is at BB:BB:BB:BB:BB:BB

Layer 3 Switch 才重新封裝 Frame:

Destination IP
192.168.20.10

Destination MAC
PC-B MAC

最後送給 PC-B。

把整條路一次畫完

PC-A
192.168.10.10
      |
      | 不同網段
      | 找 Gateway
      v
SVI VLAN 10
192.168.10.1
      |
      | Routing Table
      |
      | 192.168.20.0/24
      | directly connected
      v
SVI VLAN 20
192.168.20.1
      |
      | ARP PC-B
      v
PC-B
192.168.20.10

突然就會發現:

這跟兩台 Router、Router-on-a-Stick 的原理其實沒有換。

核心一直都是:

Subnet 判斷
↓
Default Gateway
↓
ARP Gateway
↓
Layer 3 Routing
↓
ARP 下一個目的地
↓
重新封裝 Ethernet Frame

只是負責 Routing 的設備位置變了。

Packet Tracer 最小 Lab

可以使用支援 Layer 3 Switching 的 Multilayer Switch。

拓撲:

PC-A                         PC-B

192.168.10.10                192.168.20.10
255.255.255.0                255.255.255.0
GW 192.168.10.1              GW 192.168.20.1

      |                           |
    Fa0/1                       Fa0/2
      \                           /
       +-------------------------+
       |     Layer 3 Switch      |
       +-------------------------+

第一步:建立 VLAN

enable
configure terminal

vlan 10
 name STAFF

vlan 20
 name GUEST

第二步:把 Port 放進 VLAN

PC-A:

interface fastEthernet 0/1
 switchport mode access
 switchport access vlan 10

PC-B:

interface fastEthernet 0/2
 switchport mode access
 switchport access vlan 20

目前為止,它跟一般 Layer 2 Switch 沒什麼不同。

第三步:建立 SVI

VLAN 10:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0
 no shutdown

VLAN 20:

interface vlan 20
 ip address 192.168.20.1 255.255.255.0
 no shutdown

這兩個 IP 就是 PC 的 Default Gateway。

所以:

PC-A
Gateway = 192.168.10.1

PC-B
Gateway = 192.168.20.1

第四步:最容易忘記的一行

Layer 3 Switch 上還要啟用 Routing:

ip routing

這行很重要。

因為建立 SVI,只代表:

Switch 有 VLAN 10 的 Layer 3 Interface
Switch 有 VLAN 20 的 Layer 3 Interface

但要讓設備真的在不同 Layer 3 Network 之間 Forward Packet,還需要 Routing 功能。

所以腦袋可以分成:

interface vlan 10
interface vlan 20
↓
我有這些 Layer 3 Interface

ip routing
↓
我要在這些網路之間做 Routing

怎麼驗證?

先看 VLAN:

show vlan brief

預期會看到:

VLAN 10
Fa0/1

VLAN 20
Fa0/2

再看 Layer 3 Interface:

show ip interface brief

預期看到:

Vlan10    192.168.10.1
Vlan20    192.168.20.1

再看 Routing Table:

show ip route

預期可以看到類似:

C 192.168.10.0/24 is directly connected, Vlan10
C 192.168.20.0/24 is directly connected, Vlan20

這兩行超重要。

因為它直接證明:

Layer 3 Switch 已經把 VLAN 10 和 VLAN 20 當成兩個 Layer 3 Network。

然後開始 Ping

先從 PC-A:

ping 192.168.10.1

確認自己的 Gateway。

接著:

ping 192.168.20.1

測另一個 VLAN 的 SVI。

最後:

ping 192.168.20.10

測 PC-B。

可以把 Troubleshooting 順序固定成:

自己的 IP
↓
自己的 Gateway
↓
另一個 VLAN Gateway
↓
另一端 Host

這比看到 Ping 不通就亂改設定有效很多。

SVI 跟實體 Port 最大差別是什麼?

這裡很容易混。

例如:

interface fastEthernet 0/1

這是一個實體 Interface。

真的有一個 Port。

但:

interface vlan 10

是邏輯 Interface。

Switch 機身上沒有一個孔寫:

VLAN 10

SVI 比較像:

整個 VLAN 在 Layer 3 世界裡的代表

所以可以想成:

很多 VLAN 10 的 Access Port
          ↓
       VLAN 10
          ↓
    interface vlan 10
          ↓
    192.168.10.1

那 SVI 是不是一個 VLAN 只能有一台電腦?

當然不是。

假設:

Fa0/1 → VLAN 10 → PC-A
Fa0/2 → VLAN 10 → PC-C
Fa0/3 → VLAN 10 → Printer
Fa0/4 → VLAN 10 → NAS

它們全部都屬於:

192.168.10.0/24

可以共用:

Default Gateway
192.168.10.1

也就是:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0

所以不是:

一個 Port
=
一個 SVI

而比較接近:

一個 VLAN
↓
一個 Layer 3 Gateway
↓
一個 SVI

那 VLAN 內部流量也會經過 SVI 嗎?

這也是很重要的一題。

假設:

PC-A
192.168.10.10

PC-C
192.168.10.20

都是 VLAN 10

PC-A 判斷:

192.168.10.20
跟自己同網段

所以它直接:

ARP PC-C
↓
拿到 PC-C MAC
↓
Switch 做 Layer 2 Forwarding

不需要經過 Default Gateway。

所以:

同 VLAN / 同 Subnet
→ Layer 2 Switching

不同 VLAN / 不同 Subnet
→ Layer 3 Routing

這個分界要非常清楚。

Layer 3 Switch 還是 Switch 嗎?

是。

它並不是因為有 Routing 功能,就不再做 Layer 2 Switching。

例如:

VLAN 10
PC-A ↔ PC-C

還是:

MAC Address Table
↓
Layer 2 Switching

只有需要跨不同 IP Network 時,才進到 Layer 3。

所以:

Layer 3 Switch
=
Layer 2 Switching
+
Layer 3 Routing

先這樣理解就夠了。

那為什麼企業網路喜歡 Layer 3 Switch?

Router-on-a-Stick 的畫面是:

VLAN 10
↓
Switch
↓
Trunk
↓
Router
↓
Trunk
↓
Switch
↓
VLAN 20

大量不同 VLAN 互傳時,流量都要經過 Switch 與外部 Router 之間的連線。

Layer 3 Switch 則可以:

VLAN 10
↓
SVI
↓
Switch 內部 Routing
↓
SVI
↓
VLAN 20

不用為每次 Inter-VLAN Routing 都先送去外部 Router。

對大量內部 VLAN 的網路來說,這是一個很自然的架構。

但這不代表 Router 從企業網路消失。

例如連:

ISP
Internet
WAN
其他 Site
VPN

仍然可能需要 Router、Firewall 或其他 Layer 3 設備。

所以比較合理的企業畫面可能是:

Internet
   |
Firewall / Router
   |
Layer 3 Switch
├── VLAN 10 Users
├── VLAN 20 Guests
├── VLAN 30 Servers
└── VLAN 40 Management

Layer 3 Switch 處理大量內部 Routing。

Router / Firewall 處理外部網路、WAN 或安全邊界。

SVI 還有另一個以前很容易混淆的用途

其實 Layer 2 Switch 也可能看到:

interface vlan 1
 ip address ...

所以看到 SVI 不代表:

這台 Switch 一定在做 Inter-VLAN Routing。

Layer 2 Switch 也可以用 SVI 給自己一個管理 IP。

例如:

Switch Management IP
192.168.10.2

讓工程師可以:

SSH
↓
192.168.10.2

進 Switch 管理。

這時這個 SVI 的用途主要是:

管理 Switch 本身

不是:

幫 VLAN 10 Route 到 VLAN 20

所以要看整體功能,而不是看到:

interface vlan

就直接認定它正在 Routing。

一個很容易踩的坑:SVI 為什麼是 down?

有時候配置:

interface vlan 10
 ip address 192.168.10.1 255.255.255.0
 no shutdown

結果:

show ip interface brief

卻看到 SVI 沒有正常 Up。

這時不能只盯著:

no shutdown

還要回頭看 VLAN 本身是否存在,以及該 VLAN 在設備上是否真的有有效的 Layer 2 連線。

腦袋可以先檢查:

VLAN 建立了嗎?
↓
Port 真的在這個 VLAN 嗎?
↓
相關 Port / Trunk 是 Up 嗎?
↓
SVI 有 no shutdown 嗎?

也就是:

SVI 不是獨立漂在空中的 Interface,它跟底下的 VLAN 狀態有關。

Router-on-a-Stick 和 Layer 3 Switch,到底誰比較「正確」?

不是誰比較正確。

它們是在不同架構下解同一類問題。

Router-on-a-Stick:

Switch
↓
Trunk
↓
Router Subinterface

Layer 3 Switch:

VLAN
↓
SVI
↓
Internal Routing

CCNA 真正需要懂的,不是背:

企業一定用 L3 Switch
小公司一定用 Router-on-a-Stick

而是能回答:

Default Gateway 在哪裡?

哪個 Interface 屬於哪個 Subnet?

Routing Table 裡有沒有目的 Network?

Frame 什麼時候只是 Switching?

Packet 什麼時候需要 Routing?

只要這些回答得出來,換設備型號也比較不容易亂掉。

把 Day 16~19 串起來

Day 16:

VLAN
↓
把一台 Switch 切成多個 Layer 2 Broadcast Domain

Day 17:

Access Port
↓
一個 VLAN

Trunk
↓
一條線承載多個 VLAN
↓
802.1Q Tag

Day 18:

不同 VLAN 要互通
↓
Router-on-a-Stick
↓
Subinterface
↓
Inter-VLAN Routing

Day 19:

不同 VLAN 要互通
↓
Layer 3 Switch
↓
SVI
↓
Inter-VLAN Routing

其實一路都在回答同一件事:

Layer 2 到底在哪裡結束,Layer 3 又從哪裡開始?

先別往下看,想四題

1.

PC-A:

192.168.10.10/24

要送給:

192.168.20.10/24

第一個 ARP 的對象是誰?

2.

interface vlan 10 是 Switch 上真的第 10 個網路孔嗎?

3.

VLAN 10 裡兩台 PC 互傳資料,需要先經過 SVI 嗎?

4.

Layer 3 Switch 有:

Vlan10 192.168.10.1/24
Vlan20 192.168.20.1/24

為什麼 Routing Table 會出現兩個 Connected Network?

  1. 自己的 Default Gateway,例如 192.168.10.1,而不是遠端 PC。
  2. 不是。SVI 是代表某個 VLAN 的邏輯 Layer 3 Interface。
  3. 不需要。同 Subnet、同 VLAN 的 Host 可以直接透過 Layer 2 Switching 溝通。
  4. 因為 Layer 3 Switch 自己擁有這兩個 Layer 3 Interface,因此 192.168.10.0/24 與 192.168.20.0/24 都是 directly connected network。

如果今天只記得一件事

SVI 就是 VLAN 在 Layer 3 世界裡的 Interface。Layer 3 Switch 替不同 VLAN 建立 SVI,再透過 Routing Table 在這些 VLAN 之間轉送 IP Packet。

Router-on-a-Stick:

VLAN
↓
Trunk
↓
Router Subinterface
↓
Routing

Layer 3 Switch:

VLAN
↓
SVI
↓
Routing
↓
SVI
↓
VLAN

設備長得不一樣,但最底下的邏輯還是:

同網段
→ Layer 2

不同網段
→ Default Gateway
→ Layer 3 Routing

下一個「為什麼」

現在 VLAN 10 和 VLAN 20 已經可以互通了。

但這時突然發現一件事情。

假設:

VLAN 10
員工

VLAN 20
訪客

VLAN 30
內部 Server

如果 Layer 3 Switch Routing Table 裡全部都有 Route:

192.168.10.0/24
192.168.20.0/24
192.168.30.0/24

那是不是代表:

Guest VLAN
↓
也可以直接連 Server VLAN?

前面說 VLAN 是為了隔離。

結果一開 Inter-VLAN Routing,好像又全部打通了。


上一篇
Day 18|VLAN 10 和 VLAN 20 明明被隔開了,為什麼 Router-on-a-Stick 又能讓它們互通?
下一篇
Day 20|路由明明通了,為什麼封包還是過不去?ACL 在擋什麼?
系列文
網路為什麼筆記本:從一個封包開始,把 Router、Switch 與 Routing 串起來 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言