Transcript CH 8
第8章
第 2 層交換與擴展
樹協定 (STP)
本著作僅授權老師於課堂使用, 切勿置放在網路上
播放或供人下載, 除此之外, 未經授權不得將全部
或局部內容以任何形式重製、轉載、變更、散佈或
以其他任何形式、基於任何目的加以利用。
著作權所有 © 旗標出版股份有限公司
本章重點
8 - 1 第 2 層交換技術時期之前
8 - 2 交換服務
8 - 3 擴展樹協定 (STP)
8 - 4 設定 Catalyst 交換器
8 - 5 Cisco 網路助理 (CNA)
8 - 6 摘要
2
第 2 層交換與擴展樹協定 (STP)
Cisco 提到交換時, 除非特別說明, 否則他們指
的就是第 2 層交換。
第 2 層交換是利用區域網路上之裝置的硬體位
址來分割網路的處理程序, 因為您已經有基本概
念了, 所以接下來就讓我們專注於第 2 層交換的
部份, 確定它是如何運作的。
假設您已經知道交換是要將較大的碰撞網域
(collision domain) 分割成較小的區域, 而碰撞網
域則是含有分享相同頻寬之 2 或 2 部以上裝置
的網段 (network segment)。
3
第 2 層交換與擴展樹協定 (STP)
集線器網路就是這類拓樸的典型例子。
但因為交換器的每個埠實際上都是在它自己的
碰撞網域中, 您只要將集線器換成交換器, 就可
得到一個優良許多的乙太區域網路!
交換器真的已經改變了網路的設計與實作方式,
如果正確地實作純粹的交換式設計, 絕對會產生
一個符合成本效益的、復原性佳的互連網路
(internetwork)。
本章中, 我們對於應用交換技術之前與之後的網
路設計, 進行評估與比較。
4
第 2 層交換與擴展樹協定 (STP)
遶送協定 (例如第 6 章所學的 RIP) 在網路層有
防止網路無窮迴圈的程序。
然而, 如果交換器之間有冗餘的實體鏈路, 遶送
協定根本無法做任何事來阻止資料鏈結層的迴
圈發生 - 這正是需要發展擴展樹協定的原因
- 阻止在第 2 層交換式互連網路中發生迴圈。
這個重要協定的特點, 以及它在交換式網路中的
運作方式, 也是本章會深入討論的重要主題。
我們會利用 3 部交換器來學習如何設定交換網
路, 然後第 9 章再延續這些設定。
5
8 - 1 第 2 層交換技術時期之前
在討論如何用交換來對公司的區域網路分段之
前, 先讓我們退回去看看之前的網路情況。
在出現區域網路交換技術之前, 典型的網路設計
看起來就類似圖 8.1 的網路。
6
第 2 層交換技術時期之前
7
第 2 層交換技術時期之前
圖 8.1 的設計稱為疊起來的骨幹 (collapsed
backbone), 因為所有主機都需要連到總部骨幹
上才能抵達其他的網路裝置 (區域網路與大型主
機)。
在更早之前, 也就是在如圖 8.1 所顯示的網路之
前 - 有路由器與集線器等實體的分段裝置之前,
有所謂的大型主機 (mainframe) 網路。
這種網路包括大型主機 (IBM、Honeywell、
DEC 等)、控制器、與連結控制器的純終端機,
所有的遠端網點都利用橋接器 (bridge) 連到大
型主機。
8
第 2 層交換技術時期之前
然後 PC 開始大出風頭, 大型主機連到乙太網路
或符記環的區域網路, 也就是伺服器安裝的地方。
這些伺服器通常是 O / S2 或區域網路管理員
(LAN manager), 因為這是在前 NT 的時代。
每一層樓都利用同軸電纜或雙絞線連到企業骨
幹, 然後再連到路由器。
PC 上跑模擬軟體程式, 讓他們能連接主機服務,
使得這些 PC 可以同時存取大型主機的服務與
區域網路。
9
第 2 層交換技術時期之前
最後 PC 則厲害到應用程式的開發者能比以前
更有效地將應用程式移植到 PC 上 - 這種進步
顯著地降低網路化的價格, 讓業務非常快速地成
長。
在 1980 年代晚期與 1990 年代早期, 當 Novell
變得更普及時, 大量的 OS / 2 與區域網路管理
員伺服器由 NetWare 伺服器取代, 這使得乙太
網路更加普及。
因為它就是 Novell 3.x 伺服器用來與主從式
(client / server) 軟體進行通訊的媒介。
10
第 2 層交換技術時期之前
這就是圖 8.1 的網路如何演變出來的故事, 不過
有個問題於是產生了- 企業骨幹不斷地成長。
而當它成長時, 網路服務也就越來越慢。
另外有個更大的原因是, 就在網路交通大幅成長
的同時, 區域網路服務甚至需要更快的服務, 於
是網路就變得完全飽和了。
每個人都急於拋棄麥金塔與大型主機服務所用
的終端機, 轉向小巧的 PC, 因而可以更容易地
連上企業骨幹與網路服務。
11
第 2 層交換技術時期之前
所有這些都發生在網際網路的快速發展之前, 所
以公司中的每個人都需要存取企業的網路服務。
為什麼?因為沒有網際網路, 所有網路服務都是
內部的。
於是這導致一個急切的需求, 也就是如何分割一
個龐大而繁忙、與老舊緩慢之路由器連結的企
業網路。
12
第 2 層交換技術時期之前
首先, Cisco 只是製造更快的路由器 (不必懷疑
這點), 但卻需要分更多的網路段, 特別是在乙太
區域網路上。
快速乙太網路的發明也非常好, 而且很有用, 但
它仍然無法解決網路分段的需求。
有一種稱為橋接器的裝置卻能分割網路, 我們首
先在網路中使用他們來分割碰撞網域。
13
第 2 層交換技術時期之前
只是橋接器乃受限於連接埠的數量, 以及他們所
能提供的其他網路服務, 而這正是第 2 層交換所
能彌補的地方。
這些交換器分割每個連接埠上的碰撞網域 - 就
像橋接器一樣, 而且交換器可提供數百個埠號!
這種早期的交換式區域網路看起來就像圖 8.2
所示。
14
第 2 層交換技術時期之前
15
第 2 層交換技術時期之前
每部集線器連到一個交換埠, 這種創新大大地改
善了網路。
現在, 不再讓每棟大樓擠入相同的網域, 而是每
部集線器變成它自己個別的碰撞網域。但仍有
一個難題 - 交換埠仍然很新, 因此超級貴。
因為這樣, 只要在每層樓配置一部交換器這件事
尚未發生 - 至少現在還沒有。
多虧一些熱愛這些技術的人, 交換器的價格已經
大幅下滑, 所以現在讓用戶插上交換埠是一件很
棒、而且也可行的事。
16
第 2 層交換技術時期之前
所以, 如果您要進行網路設計與實作, 納入交換
式服務是一定要的。
典型的當代網路設計看起來如圖 8.3 所示, 這是
一個完全的交換式網路設計與實作。
但您會說 "我仍然看到有一部路由器在那兒!"
是的, 這不是幻想 - 是仍然該有一部路由器在
那兒。
但它的任務已經改變, 現在它的目的不再是做實
體的網路分段, 而是產生與處理邏輯的網路分割。
17
第 2 層交換技術時期之前
這些邏輯的網路分段稱為虛擬區域網路 (VLAN),
我們會在本章與下一章深入地加以討論。
18
8 - 2 交換服務
橋接器使用軟體來產生與管理過濾表格 (filter
table), 而交換器則以應用專屬的積體電路
(Application-Specific Integrated Circuits, ASIC)
來建構與維護他們的過濾表格。
不過您仍然可以將第 2 層交換器想成是多埠號
的橋接器, 因為他們基本的存在理由是相同的:
分割碰撞網域。
第 2 層交換器與橋接器的速度比路由器快, 因為
他們不需要花時間檢查網路層的標頭資訊。
19
交換服務
他們只是檢查訊框的硬體位址, 以決定要轉送、
廣播、或丟棄。
不像集線器那樣, 交換器會在每個埠上產生各自
專屬的碰撞網域, 並提供獨立的頻寬。
圖 8.4 顯示有 5 部主機連上一部交換器 - 所有
主機都以 10 Mbps 的半雙工 (half-duplex) 連上
伺服器。
與集線器不同的是, 每部主機與伺服器都有 10
Mbps 的專屬通訊。
20
交換服務
21
交換服務
第 2 層交換提供以下的特性:
硬體式的橋接 (ASIC)
線路速度 (wire speed)
低延遲 (latency)
低成本
第 2 層交換會如此有效率的原因, 是因為它不會
對資料封包進行任何修改, 交換器裝置只會讀取
將封包封裝起來的訊框, 這使得交換程序比遶送
程序還快, 而且比較不易出錯。
22
交換服務
如果您使用第 2 層交換來連結工作群組, 並且分
割網路 (分割碰撞網域), 那麼與傳統的遶送網路
相比, 您會有一個階層較少、且含有許多網段的
網路設計。
此外, 第 2 層交換會增加每個使用者的頻寬, 因
為每條進入交換器的連線 (界面) 都有它自己的
碰撞網域, 這種特性使得您能夠連接多部裝置到
每個界面。
以下幾節將更深入地探討第 2 層交換技術。
23
第 2 層交換的限制
既然我們常常將第 2 層交換與橋接式網路視為
同一類, 那麼也會認為它與橋接式網路一樣有相
同的議題。
記住, 如果我們正確地設計網路, 橋接器是很好
且很有幫助的東西, 請記住他們的特性與限制。
要設計好有橋接器的網路, 有 2 個非常重要的考
量:
絕對必須正確地分割碰撞網域。
24
第 2 層交換的限制
要建置有效果的橋接式網路, 正確的方式是要確
定他們的用戶有 80% 的時間都是在自己的區域
網段上。
橋接式網路會分割碰撞網域, 但請記住, 該網路
仍然是一個大的廣播網域。
預設上第 2 層交換器或橋接器都不會分割廣播
網域 - 這不只會限制網路規模與網路的成長空
間, 也且也會降低整體的效能。
25
第 2 層交換的限制
廣播與多點傳播 (multicast), 以及緩慢的擴展樹
收斂速度都可能在網路成長時帶來重大的災難
。
這也是為什麼在互連網路中, 第 2 層交換器與橋
接器無法完全取代路由器 (第 3 層裝置) 的主要
原因。
26
橋接與區域網路交換
第 2 層交換器真的就只是擁有更大量連接埠的
橋接器, 但您應該要記住, 他們還是有一些重要
的差異:
橋接器是以軟體為基礎, 而交換器是以硬體為基
礎的, 因為他們使用 ASIC 晶片來幫忙進行過濾
的決定。
交換器可視為多個埠的橋接器。
每個橋接器只能有一份擴展樹, 而交換器則可以
有許多。
27
橋接與區域網路交換
比起大部分的橋接器, 交換器有更多數目的埠。
橋接器與交換器都會轉送第 2 層廣播。
橋接器與交換器藉由檢查所接收之每個訊框的來
源位址, 以學得 MAC 位址。
橋接器與交換器都是根據第 2 層位址來進行轉
送的決定。
28
第 2 層之 3 個交換功能
第 2 層交換有 3 個不同的功能 (您必須牢記!):
學習位址、決定轉送或過濾、以及避免迴圈。
學習位址第 2 層交換器與橋接器會記住它從界
面接收之每個訊框的來源硬體位址, 然後輸入這
種資訊到一個稱為轉送 / 過濾表的 MAC 資料庫。
決定轉送或過濾當交換器從界面收到訊框時, 會
檢視其目的硬體位址, 找尋它在 MAC 資料庫中
所學到的離開界面, 該訊框只會從特定的目的埠
轉送出去。
29
第 2 層之 3 個交換功能
避免迴圈如果為了達到冗餘的目而在交換器之間
建置多重連線, 則有可能發生網路迴圈。
擴展樹協定 (Spanning Tree Protocol, STP) 就
是讓我們在提供網路冗餘性的同時、又能防止網
路迴圈。
以下仔細地說明這些功能。
30
學習位址
交換器一開
機時, 其
MAC 轉送 /
過濾表是空
的, 如圖 8.5
所示。
31
學習位址
當裝置傳送訊框, 而界面收到訊框時, 交換器會
將訊框的來源位址放入 AMC 轉送 / 過濾表中,
以記住傳送端裝置是位於那個界面。
然後交換器別無選擇, 只能將這個訊框往其來源
埠之外的每個埠廣播到網路上, 因為這時還不知
道目的裝置實際上位於何處。
如果有個裝置回答這個廣播的訊框, 並傳送一個
訊框回來, 之後交換器就會取得該訊框的來源位
址, 將該 MAC 位址放入資料庫中, 並且將該位
址與收到該訊框的界面對應在一起。
32
學習位址
之後交換器就會在它的過濾表中有這 2 個相關
的 MAC 位址, 於是這兩部裝置就可進行點對點
的連線。
交換器不再需要如第一次那樣地廣播訊框, 因為
現在這種訊框可以、而且只會在這 2 部裝置之
間轉送;這也是為什麼第 2 層交換器比集線器
好的原因。
在集線器的網路中, 每次所有的訊框都會轉送到
所有的連接埠。圖 8.6 展示交換器如何建構
MAC 資料庫的程序。
33
學習位址
34
學習位址
您可從圖中看到有 4 部主機連結一部交換器, 當
交換器開機時, 它的 MAC 位址轉送 / 過濾表是
空的, 就跟圖 8.5 一樣。
但是當主機開始通訊之後, 交換器會將每個訊框
的來源硬體位址, 以及它所對應的埠號一起放入
表格中。
讓我們以一個範例來展示轉送 / 過濾表是如何
產生的。
35
學習位址
1. A 主機送一個訊框給 B 主機, A 主機的 MAC
位址是 0000.8C01.000A, 而 B 主機的 MAC 位
址是 0000.8C01.000B。
2. 交換器從 E0 / 0 界面收到訊框, 並且將來源位
址放入 MAC 位址表中。
3. 因為目的位址不在 MAC 資料庫中, 於是將訊
框轉送到所有的界面 - 除了來源埠之外。
4. B 主機收到該訊框並回應給 A 主機, 交換器從
E0 / 1 收到這個訊框, 並且將其來源硬體位址放
入 MAC 資料庫中。
36
學習位址
5. A 主機與 B 主機現在可以進行點對點的連線,
而且只有這兩部裝置可收到訊框。
C 與 D 主機將無法看到這些訊框, 資料庫中也找
不到他們的 MAC 位址, 因為他們還不曾傳送任
何訊框給交換器。
如果 A 與 B 主機在一定的時間內都沒有與交換
器進行任何通訊, 則交換器會清掉他們在資料庫
的記錄, 以儘可能地保持最新的資料。
37
轉送 / 過濾決策
當訊框抵達交換器界面時, 會以它的目的硬體位
址與轉送 / 過濾 MAC 資料庫進行比較。
如果目的硬體位址是已知的, 而且列在資料庫中,
交換器就會將訊框傳送到對應的離開界面。
除了該目的界面之外, 訊框並不會轉送給任何其
他的界面, 於是保留了其他網段的頻寬;這種機
制我們稱之為訊框過濾 (frame filtering)。
但如果目的硬體位址沒有列在 MAC 資料庫中,
則該訊框會廣播至所有運作中的界面, 除了接收
該訊框的界面之外。
38
轉送 / 過濾決策
如果有個裝置回答該廣播的訊框, 則會以該裝置
的位置 (界面) 來更新 AMC 資料庫。
如果有主機或伺服器在區域網路上傳送廣播封
包, 則根據預設, 交換器會將訊框廣播到除了來
源埠以外的所有埠。
請記住, 交換器只會產生較小的碰撞網域, 但預
設上它仍然是一個大的廣播網域。
在圖 8.7 中, A 主機傳送資料訊框給 D 主機。當
交換器收到來自 A 主機的訊框時, 它會做什麼呢?
39
轉送 / 過濾決策
40
轉送 / 過濾決策
因為 A 主機的 MAC 位址並不在轉送 / 過濾表
中, 交換器會將其來源位址和埠號加入 MAC 位
址表中, 然後將訊框轉送給 D 主機。
如果 D 主機的 MAC 位址也不在轉送 / 過濾表
中, 則交換器會將訊框從 Fa0 / 3 之外的所有埠
廣播出去。
現在讓我們看看 show mac address-table 的
輸出。
41
轉送 / 過濾決策
假設前面的交換器接收到具有下列 MAC 位址
的訊框:
42
轉送 / 過濾決策
交換器如何處理這個訊框呢?答案是:它會在
MAC 位址表中找到目的 MAC 位址, 然後就只
會從 Fa0 / 3 將訊框轉送出去。
請記住如果目的 MAC 位址無法在轉送 / 過濾表
中找到, 它就會將訊框從交換器所有的埠轉送出
去, 以尋找目的裝置。
既然我們已經瞭解 MAC 位址表, 以及交換器如
何將主機位址新增到轉送過濾表中, 那我們要如
何保護它不受到未經授權的存取呢?
43
埠的安全性功能
您要如何阻止別人將一台主機插入您交換器的
一個埠中 - 或者更糟的是將一台集線器、交換
器、或存取點插入辦公室的乙太網路插孔呢?
根據預設, MAC 位址會動態地出現在 MAC 轉
送 / 過濾表中。您可以使用埠的安全性功能來
阻止它們。
下面是可能的做法:
44
埠的安全性功能
您可以從前面的輸出中清楚看到 switchport
port-security 命令具有 4 個選項。
筆者個人喜歡 port-security 命令, 因為它讓我
們可以輕易地控制網路上的使用者。
45
埠的安全性功能
您可以使用 switchport port-security MAC 位址 MAC - 位址命令來將個別的 MAC 位址指
定給個別的交換器埠, 但是如果您選擇這樣做,
您最好要有很多時間!
如果您希望將交換器埠設定為每個埠只能有一
台主機, 而且在違反此項規則時關閉這個埠, 則
可以使用下列命令:
46
埠的安全性功能
這些可能是最常用的命令, 因為它們能夠防止使
用者連到辦公室中的交換器或存取點。
Maximum 設定為 1 表示該埠只能使用 1 個
MAC 位址;如果使用者嘗試在這個網段中加入
另一台主機, 這個埠就會被關閉。
如果發生這種情況, 您必須要手動進入交換器,
並且使用 no shutdown 命令來開啟這個埠。
筆者最喜歡的命令之一是 sticky 命令。它不只
會執行很酷的功能, 而且還有個很酷的名字!
47
埠的安全性功能
您可以在 mac-address 命令之下找到這個命
令:
基本上, 它可以提供靜態 MAC 位址安全性, 而
不必輸入網路上每個人的 MAC 位址。酷斃了!
48
埠的安全性功能
在前面的例子中, 前 2 個進入埠中的 MAC 位址
會被黏住, 成為靜態位址, 並且在 aging 命令所
指定的期間之內一直維持不變。
為什麼這裡筆者要設 2 呢?因為筆者需要 1 個
給 PC / 資料使用, 另 1 個給電信 / 電話使用。
下一章關於 VLAN 的討論中, 會更詳細談到這
種組態設定。
49
避免迴圈
在交換器之間建置冗餘的鏈路是不錯的設計, 因
為他們有助於避免因單一條鏈路停止運作而全
然斷線的情況。
這聽起來不錯, 但雖然冗餘的鏈路可能非常有幫
助, 他們所引起的問題卻經常比他們所解決的問
題還多。
這是因為訊框可以同時從所有的冗餘鏈路廣播
出去, 於是產生了網路迴圈與其他的壞事。
50
避免迴圈
以下列出一些最嚴重的問題:
如果沒有採取任何機制來避免迴圈, 交換器會永
無止境地將廣播封包廣播至整個互連網路, 有時
我們稱之為廣播風暴 (broadcast storm)。
圖 8.8 展示了如何將廣播封包傳播至整個互連網
路, 請您觀察訊框是如何持續地透過互連網路之
實體網路媒介來廣播的。
51
避免迴圈
52
避免迴圈
一個裝置可能收到好幾份相同的訊框, 因為該訊
框可能同時從不同的網段抵達。
圖 8.9 展示了如何同時從多個網段抵達一整串的
訊框。
圖中的伺服器傳送一個單點傳播 (unicast) 的訊
框到 C 路由器, 因為它是一個單點傳播的訊框,
所以 A 交換器轉送該訊框, 而 B 交換器也提供相
同的服務 - 它會轉送廣播封包。
這是不好的, 因為它代表 C 路由器會收到單點傳
播的訊框 2 次, 導致網路上有多餘的額外負擔。
53
避免迴圈
54
避免迴圈
您可能已經想到這一點:MAC 位址過濾表格完
全混淆了裝置的位置, 因為交換器可能從一個以
上的鏈路收到該訊框。
甚至於, 迷惑的交換器可能會不斷地以某個來源
硬體位址的位置來更新 MAC 過濾表, 但卻無法
從那個位置轉送該硬體位址的訊框。
最令人討厭的一件事是, 網路的任何地方都可能
會產生多重迴圈, 亦即迴圈可能發生在其他的迴
圈之中, 而且如果也發生廣播風暴, 則網路將無
法執行訊框交換 - 就是這樣!
55
避免迴圈
所有這些問題會帶來災難 (或至少接近了), 而且
絕對是一定要避免、或至少要修正的, 這也是我
們需要擴展樹協定 (Spanning Tree Protocol,
STP) 的地方。
STP 的發展就是要解決以上所說的每個問題。
56
8 - 3 擴展樹協定 (STP)
有家被 Compaq 公司 (後來 Compaq 又被 HP
併購了) 併購的公司 Digital Equipment
Corporation (DEC) 建立了原始版本的擴展樹協
定 (Spanning Tree Protocol, STP)。
後來 IEEE 建立了它自己的 STP 版本, 稱為
802.1D。
不過壞消息是, 所有的 Cisco 交換器預設上都執
行 IEEE 802.1D 版的 STP, 這與 DEC 版並不相
容。
57
擴展樹協定 (STP)
好消息是, Cisco 的新型交換器正往另一個產業
標準推進 - 802.1W。
本節也會介紹這個版本的 STP, 不過首先讓我們
先來定義一些重要的 STP 基礎。
STP 的主要任務是要預防在第 2 層的網路 (橋
接器或交換器) 上發生網路迴圈, 它警覺地監視
網路以找尋所有的鏈路, 藉由關閉冗餘的鏈路來
確定迴圈不會發生。
58
擴展樹協定 (STP)
STP 使用擴展樹演算法 (Spanning-Tree
Algorithm, STA), 首先產生一個拓樸資料庫, 然
後搜索出冗餘鏈路, 並拿掉它。
執行 STP 之後, 訊框只能在良好的、由 STP 挑
選的鏈路上轉送。
以下幾節將介紹擴展樹協定的核心。
對於圖 8.10 所示的網路, STP 是必要的。
59
擴展樹協定 (STP)
圖 8.10 中有一個含有冗餘拓樸 (交換迴圈) 的
交換式網路。
如果沒有任何第二層的機制來停止網路迴圈, 就
會有我們之前所討論的問題:廣播風暴與多份
重複的訊框。
60
擴展樹專用術語
在討論 STP 如何在網路中運作的細節之前, 您
需要瞭解一些基本的概念與術語, 以及他們彼此
在第 2 層交換式網路中的關係。
根橋接器 (root bridge) 根橋接器是一部有最佳
橋接器 ID 的橋接器, STP 的重點是網路中的所
有交換器要選出一部根橋接器, 以成為網路的焦
點。
網路中的所有其他決定 - 例如那個埠要凍結,
那個埠要設在轉送模式 - 都是從根橋接器的觀
點來進行的。
61
擴展樹專用術語
BPDU 交換器用來交換資訊, 以進行根交換器的
挑選及網路的後續設定。
每部交換器會對他們傳送給鄰居的, 以及他們從
其他鄰居收到之橋接協定資料單元 (Bridge
Protocol Data Unit, BPDU) 中的參數進行比較。
橋接器 ID 橋接器 ID 是 STP 記錄網路之所有交
換器的方式, 它是由橋接器的優先權 (預設上所
有的 Cisco 交換器是 32, 768) 與 MAC 位址共
同決定的。
62
擴展樹專用術語
橋接器 ID 最低的橋接器會成為網路中的根橋接
器。
非根橋接器根橋接器以外的所有橋接器。
非根橋接器與所有橋接器交換 BPDU, 更新所有
交換器上的 STP 拓樸資料庫, 預防迴圈, 並提供
防禦鏈路故障的措施。
埠成本當兩部交換器之間有多條鏈路, 而且沒有
任何鏈路是根埠時, 埠成本可用來決定最佳路徑。
鏈路的成本乃由鏈路的頻寬所決定。
63
擴展樹專用術語
根埠 (root port) 根埠是直接與根橋接器相連的
鏈路, 或抵達根橋接器的最短路徑。
如果有一條以上的鏈路連結到根橋接器, 則藉由
檢查每條鏈路的頻寬來決定埠成本, 並以最低成
本的埠設為根埠。
如果有多條鏈路的成本相同, 則使用宣傳橋接器
ID 較低的橋接器, 但因為多條鏈路可能都是來自
於同一部裝置, 這時就使用最低的埠號。
委任埠 (designed port) 因為有最佳 (低) 成本
而被選定的埠 - 委任埠會被標示成轉送埠。
64
擴展樹專用術語
非委任埠成本比委任埠高的埠, 這種埠會放入凍
結模式 (blocking mode) - 非委任埠不是轉送埠。
轉送埠 (forwarding port) 轉送埠可轉送訊框。
凍結埠 (blocking port) 凍結埠不會轉送訊框,
以預防迴圈;但凍結埠仍會聆聽訊框。
65
擴展樹的運作
如同前面所說的, STP 的工作是要搜索網路中
的所有鏈路, 關閉任何冗餘的鏈路, 以避免發生
網路迴圈。
STP 為了達成這樣的任務, 首先要挑選根橋接
器, 透過所有的埠轉送, 並且扮演 STP 網域中所
有其他裝置的參考點。
一旦所有交換器協議出誰是根橋接器之後, 每部
橋接器必須找出自己的一個根埠, 而且僅只一個
專用的根埠。
66
擴展樹的運作
對於兩部交換器之間的所有鏈路, 必須有一個,
而且僅只一個委任埠 - 提供最高頻寬來抵達根
橋接器之鏈路上的埠。
請記住, 橋接器可以經由很多其它的橋接器來抵
達根橋接器, 這表示它所用的不一定是最短路徑,
但一定是最快 (最高頻寬) 的路徑。
很明顯地, 根交換器上的每個埠都會是委任埠。
67
擴展樹的運作
然後任何埠若不是根埠或委任埠 - 亦即它是非
根埠、非委任埠 - 就會被放入凍結模式, 因此
能切斷交換迴圈。
如果只有一個人在進行決策, 事情似乎會進行地
比較順利。
同理, 網路中只能有一部根橋接器。下節將更詳
細地討論如何挑選根橋接器。
68
挑選根橋接器
在 STP 的領域中, 橋接器 ID 的作用是要挑選根
橋接器, 以及決定根埠。這個 ID 有 8 個位元組
的長度, 包括裝置的優先權與 MAC 位址。
執行 IEEE STP 版的所有裝置, 其預設優先權是
32, 768。
要決定根橋接器, 必須結合每部橋接器的優先權
與 MAC 位址。
如果兩部交換器或橋接器的優先權一樣, 則他們
的 MAC 位址將成為勝負的關鍵, 決定誰有最低
(佳) 的 ID。
69
挑選根橋接器
例如, 如果兩部交換器 A 與 B 都使用預設的優
先權 32, 768, 則以他們的 MAC 位址來決定。
如果 A 交換器的 MAC 位址是 0000.0C00.1111,
而 B 交換器的 MAC 位址是 0000.0C00.2222,
則 A 交換器將成為根橋接器。
您一定要記住, 在挑選根橋接器時, 值越低越好。
根據預設, 橋接器或交換器每隔 2 秒就會從所有
作用中的埠傳送出 BPDU, 而含有最低 (佳) 橋
接器 ID 的橋接器就會被挑選為根橋接器。
70
挑選根橋接器
您可以降低橋接器的 ID, 使得它成為根橋接器。
這種功能在大型的交換式網路中是很重要的 -
它確保我們能選出最佳路徑。
圖 8.11 是具有冗餘交換路徑的典型交換網路。
首先, 讓我們找出哪台交換器是根橋接器;接著
我們可以透過改變交換器的優先權來將非根橋
接器變成根橋接器。
71
挑選根橋接器
檢視圖 8.11, 可以看出 A 交換器是根橋接器, 因
為它具有最低的橋接器 ID。
B 交換器必須關閉它連到 A 交換器的一個埠, 以
預防發生交換迴圈。
72
挑選根橋接器
請記住即使 B 交換器不從凍結的埠進行傳送,
它仍會透過它接收 - 包含 BPDU。
STP 要決定關閉 B 交換器的哪個埠時, 首先要
檢查每條鏈路上的頻寬, 然後關閉具有最低頻寬
值的鏈路。
因為 A 交換器和 B 交換器間的鏈路都是 100
Mbps, 所以 STP 通常會關閉較高的埠號, 但未
必一定如此。
在本例中, 12 高於 11, 所以埠號 12 會被置於凍
結模式。
73
挑選根橋接器
要選擇根橋接器, 最佳的方式就是更改預設的優
先權。
這是很重要的, 因為您一定會希望網路中的核心
交換器 (最靠近網路核心的那一部) 能成為根橋
接器, 因為這樣 STP 才會快速地收斂。
讓我們來娛樂一下, 並且讓 B 交換器成為網路
的根橋接器。
下面是 B 交換器的輸出, 顯示預設的優先權。
我們使用的是 show spanning-tree 命令。
74
挑選根橋接器
這邊有兩件事值得注意:B 交換器正在執行
IEEE 801.d 協定, 而且第一個輸出 (RootID) 是
交換網路的根橋接器資訊。
75
挑選根橋接器
這邊有兩件事值得注意:B 交換器正在執行
IEEE 801.d 協定, 而且第一個輸出 (RootID) 是
交換網路的根橋接器資訊。
但它並不是 B 交換器。B 交換器連到根橋接器
的埠 (稱為根埠) 為 1 號埠。
橋接器 ID 是真正關於 B 交換器和 VLAN 1 (表
示為 VLAN0001) 的擴展樹資訊 - 每個 VLAN
都可以有不同的根橋接器, 雖然這相當少見。
上面也列出 B 交換器的 MAC 位址, 您可以看到
它跟根橋接器的 MAC 位址並不相同。
76
挑選根橋接器
B 交換器的優先權是 32, 768 - 所有交換器的
預設值。
您可以看到上面列出 32769;這是因為加上了
VLAN ID, 所以 VLAN 1 會顯示為 32769。
VLAN 2 是 32770, 依此類推。
如前所述, 您可以改變優先權以強迫某台交換器
成為 STP 網路中的根, 所以現在讓們來設定 B
交換器吧。
使用下列命令來改變 Catalyst 交換器上的橋接
器優先權。
77
挑選根橋接器
您可以將優先權設定為 0 到 61440。
設定為 0 表示這台交換器將永遠扮演根橋接器,
而橋接器優先權的設定是以 4096 為單位遞增。
如果您想要設定某台交換器做為網路中所有
VLAN 的根橋接器, 就必須針對每個 VLAN 改變
該交換器的優先權, 而 0 則是您可以使用的最小
優先權。
78
挑選根橋接器
將所有交換器優先權都設為 0 是十分不好的做
法。
檢視下面的輸出 - 因為我們已經將 B 交換器
對 VLAN 1 的優先權設為 4096, 於是成功地讓
這台交換器成為根橋接器:
79
挑選根橋接器
現在 Root ID 與 Bridge ID 的 MAC 位址一樣了,
表示 B 交換器現在已經是根橋接器了。
show spanning-tree 命令非常重要;我們在
本章後面還會再用到它。
80
擴展樹的埠狀態
執行 STP 的橋接器或交換器上的埠可變換 5 種
不同的狀態:
凍結 (blocking) 凍結埠不會轉送訊框, 它只是聆
聽 BPDU。凍結狀態的目的是為了要避免使用
會產生迴圈的線路。
交換器一開機時, 所有埠的預設都是處於凍結狀
態。
聆聽 (listening) 這種埠在傳送資料訊框之前先
聆聽 BPDU, 以確定網路上沒有迴圈發生。處於
聆聽狀態的埠準備好要轉送資料訊框, 但不會產
生 MAC 位址表。
81
擴展樹的埠狀態
學習 (learning) 這種交換埠會聆聽 BPDU, 並學
習交換式網路中的所有線路。處於學習狀態的埠
會產生 MAC 位址表, 但不會轉送資料訊框。
轉送延遲代表的是一個埠從聆聽模式轉換到學習
模式所需的時間。預設是 15 秒, 您可以在
show spanning-tree 的輸出中看到。
轉送 (forwarding) 這種埠會收送交換埠上的所
有資料訊框。
如果某個埠在學習狀態結束時仍然是委任埠或根
埠, 就會進入這個狀態。
82
擴展樹的埠狀態
關閉 (disabled) (管理上) 處於關閉狀態的埠不
會參與訊框轉送或 STP。
處於關閉狀態的埠實質上是沒有在運作的。
交換埠通常若不是處在凍結、就是在轉送狀態。
轉送埠是因為通往根橋接器的成本最低而決定
出來的, 但如果網路經歷了拓樸的異動 (因為有
故障鏈路或有人新增交換器), 就會發現交換器
上的埠處於聆聽與學習狀態。
83
擴展樹的埠狀態
如之前所說的, 凍結埠是一種預防網路迴圈的策
略, 一旦交換器決定了通往根橋接器的最佳路線,
所有其他的埠就會進入凍結模式。
凍結埠仍然可以收到 BPDU - 他們只是不會送
出任何訊框。
如果交換器因為拓樸的異動而決定一個凍結埠
現在應該成為委任埠或根埠, 它就會進入聆聽模
式, 檢視所有收到的 BPDU, 以確認一旦該埠進
入轉送模式後並不會產生迴圈。
84
收斂
當橋接器與交換器上的所有埠都已經轉換到轉
送埠或凍結埠時, 就是達成收斂。除非達成收斂,
否則沒有資料能被轉送。
在資料可再被轉送之前, 所有裝置都必須更新過。
是的 - 您沒有看錯:當 STP 正在轉換時, 所有
主機資料都會停止傳送!
所以如果您不想丟掉工作, 可千萬要確定您的交
換網路設計相當良好, 能夠讓 STP 迅速地收斂。
85
收斂
圖 8.12 是您在設計和實作交換網路時, 一些讓
STP 能有效率收斂的重要考量。
86
收斂
為了確認所有的裝置有相同的資料庫, 收斂是非
常重要的, 但這可能要花不少時間。
從凍結模式轉換到轉送模式通常要花 50 秒, 我
們並不建議您更改預設的 STP 計時器 (但如果
需要的話, 您可以調整那些計時器)。
藉由以階層方式建立實體的交換器設計, 如圖
8.12, 您可以將核心交換器當作 STP 的根橋接
器;這會讓 STP 很快地收斂。
87
收斂
因為在典型的擴展樹拓樸中, 交換器的埠從凍結
到轉送所需的收斂時間是 50 秒, 所以可能會造
成伺服器或主機的逾時問題 - 例如當您重新開
機的時候。
要解決這個問題, 您可以使用 PostFast 關閉個
別埠上的擴展樹。
88
擴展樹的 PortFast
如果您有伺服器或其他裝置連到交換器, 而且您
確定它在 STP 關閉時也不會造成交換迴圈, 則
可以在這些埠上使用稱為 portfast 的東西。
使用 portfast 表示當 STP 在收斂過程中, 這個
埠並不需要花費平常的 50 秒來進入轉送模式。
下面是這個命令 - 它們相當簡單:
89
擴展樹的 PortFast
我們還沒討論過主幹埠, 但基本上, 它們是用來
將交換器連在一起, 並且在它們之間傳遞 VLAN
資訊。
您必須特別告訴 portfast 是否要在主幹埠上開
啟它。這並不是典型的組態設定, 因為交換器間
的埠通常都應該執行 STP。
所以讓我們來看看當我們在界面上開啟 portfast
時所得到的訊息:
90
擴展樹的 PortFast
f0 / 1 埠開啟了 portfast, 但是請注意您也得到一
個相當長的訊息, 告訴您要小心。
最後要告訴您的一個有用的界面命令是 range
命令, 它可以在交換器上協助您同時設定多個埠。
下面是個例子:
91
擴展樹的 PortFast
前面的 range 命令讓我們只要輸入一個命令,
就可以將所有 12 個交換器埠都設定為 portfast
模式。
當然囉, 希望我們沒有建立任何迴圈。同樣地,
對於 portfast 命令要特別小心。
另外, 還希望您知道 interface range 命令可以
與任何命令一起搭配使用。例如剛剛就是使用
它和 portfast 命令來做為範例。
92
擴展樹的 UplinkFast
UplinkFast 是 Cisco 特有的功能, 可以在有鏈路
故障的情況下改善 STP 的收斂時間。跟使用
portfast 一樣, 使用這個命令要特別小心。
UplinkFast 功能的設計是要在交換器具有至少
一個替代 / 備援根埠 (處於凍結狀態的埠) 的交
換環境下執行。
這是為什麼 Cisco 要建議只有在具有凍結埠、
而且通常是在存取層的交換器才開啟
UplinkFast。
93
擴展樹的 UplinkFast
UplinkFast 讓交換器能夠在主要鏈路故障之前,
就先找出通往根橋接器的替代路徑。
這表示如果主要鏈路故障時, 次要鏈路可以更快
地啟用 - 該埠不用等待正常的 50 秒 STP 收
斂時間。
因此, 如果您是執行 802.1d STP, 而且在存取層
交換器上有冗餘的鏈路, 您絕對會希望開啟
UplinkFast。
94
擴展樹的 UplinkFast
但是不要在不清楚替代 / 備援根鏈路之拓樸的
情況下貿然在交換器上使用。
替代 / 備援根鏈路在 Cisco 多層式設計中通常
是使用在分送和核心層的交換器中。
95
擴展樹的 BackboneFast
UplinkFast 是用來判定並快速修復本地交換器
的鏈路故障, 而另一個 Cisco 專屬的 STP 延伸
命令 BackboneFast 則是在某條沒有直接連到
該交換器的鏈路故障時, 用來加快收斂的速度。
如果執行 BackboneFast 的交換器從委任橋接
器那邊收到較差的 BPDU 時, 它會知道在通往
根的路徑上有一條鏈路故障。
複習一下, 所謂較差的 BPDU 是指根橋接器和
委任橋接器都是相同交換器的 BPDU。
96
擴展樹的 BackboneFast
同樣地, 它不像 UplinkFast 只設定在存取層交
換器, 或是具有冗餘鏈路、而且至少有一條鏈路
處於凍結模式的交換器上。
所有的 Catalyst 交換器都應該開啟
BackboneFast, 以偵測間接鏈路故障問題。
開啟 BackboneFast 還有另一個好處是, 它能更
快速地啟動擴展樹的重新設定 - 它可以對預設
的 50 秒 STP 收斂時間縮短 20 秒。
97
快速擴展樹協定 (RSTP) 802.1w
您想要在您的交換網路 (不論交換器的品牌) 上
執行良好的 STP 組態設定, 並且在每台交換器
上建立並開啟前面討論的所有功能嗎?當然囉!
那麼歡迎進入快速擴展樹協定 (RSTP, Rapid
Spanning Tree Protocol) 的世界。
Cisco 建立了 PortFast、UplinkFast 和
backboneFast 來「修正」 IEEE 802.1d 標準
的漏洞和缺點。
98
快速擴展樹協定 (RSTP) 802.1w
這些改良的唯一缺點只在於它們是 Cisco 專屬
功能, 而且需要額外的設定。
但是新的 802.1w 標準 (RSTP) 則一次處理了所
有這些問題 - 只要開啟 RSTP, 一切就搞定了。
要讓 802.1w 能適當地運作, 您必須確定網路上
所有的交換器都有執行 802.1w 協定。
後面將會說明如何設定 RSTP;它真的相當簡
單。
99
EtherChannel
除了具備冗餘鏈路, 並且讓 STP 將其中一條鏈
路置於凍結模式的做法之外, 我們也可以將鏈路
綁在一起, 並且建立邏輯的聚合 (aggregation),
讓多條鏈路看似單一鏈路。
因為這樣還是能夠提供與 STP 相同的冗餘性,
那我們何不將冗餘的鏈路綁在一起呢?
依照慣例, 我們還是有 Cisco 版本與 IEEE 版本
的 EtherChannel - 您可以自由選擇。
100
EtherChannel
Cisco 的版本稱為埠聚合協定 (PAgP, Port
Affregation Protocol), 而 IEEE 802.3ad 標準則
稱為鏈路聚合控制協定 (LACP, Link
Aggregation Control Protocol)。
這兩個版本都運作得很好, 但設定方式則各不相
同。
本章後面會展示如何將一些鏈路綁在一起 - 純
屬娛樂。別擔心, 下一節會涵蓋 STP 延伸功能
的所有組態設定。
101
8 - 4 設定 Catalyst 交換器
Cisco Catalyst 交換器有許多類型 - 有些的執
行速度為 10 Mbps, 有些則搭配雙絞線和光纖的
組合, 包含高達 10 Gbps 的交換埠。
這些較新的交換器 (特別是 2960 和 3560 系列)
也是比較智慧型的裝置, 可以提供更快速的視訊
和語音資料服務。
現在是詳細檢視的時間了 - 接下來要說明如何
使用 CLI 來開啟和設定 Cisco Catalyst 交換器。
102
設定 Catalyst 交換器
下一章再說明如何設定 VLAN, 以及跨交換器鏈
路 (Inter-Switch Link, ISL)、802.1q 遶送、和
Cisco 的虛擬主幹協定 (Virtual Trunk Protocol,
VTP)。
以下是我們本節要討論的基本工作清單:
管理性功能
設定 IP 位址與子網路遮罩
設定 IP 預設閘道
設定埠的安全性
設定 PortFast
103
設定 Catalyst 交換器
啟動 BPDUGuard 與 BPDUFilter
啟動 UplinkFast
啟動 BackboneFast
啟動 RSTP (802.1w)
啟動 EtherChannel
設定 STP 根交換器
利用 CNA 來設定交換器
104
Catalyst 交換器組態
就像在第 6、7 章設定路由器一樣, 我們將使用
圖 8.13 的交換網路和交換器設置, 來進行本章
和第 9 章的組態設定。
105
Catalyst 交換器組態
我要使用新的 3560、2960、和 3550 交換器。
圖中網路內的主機、電話、和路由器在第 9 章
會更為重要。
但是在真正開始設定 Catalyst 交換器之前, 我
們要先說明這些交換器的開機流程, 就像在第 4
章對路由器的說明一樣。
圖 8.14 是典型 Cisco Catalyst 交換器的細節,
而我們必須跟您說明這個產品的各種界面和特
性。
106
Catalyst 交換器組態
首先希望您知道的是:Catalyst 交換器的控制
台埠通常都位於交換器的背面。
但是在像圖中 3560 之類較小型的交換器中, 控
制台則是位於前面右方以便於使用。
107
Catalyst 交換器組態
(8 埠的 2960 看起來完全一樣。)
如果 POST 成功地完成, 則系統 LED 會變成綠
色;如果 POST 失敗, 則它會轉成黃色。看到
黃光是很慘的事情 - 通常代表致命的故障。
因此, 您可能會希望有個備用的交換器在手邊
- 特別是當呻吟的那台是在營運網路上的交換
器!
底部的按鈕用來顯示哪些燈正在提供乙太網路
電源 (Power over Ethernet, PoE) - 按下
Mode 按鈕就可以看到。
108
Catalyst 交換器組態
PoE 是這些交換器的一項好功能;它讓我們只
要使用乙太網路纜線將存取點或電話插入交換
器就可以使用了。
在交換器開機後, 您可以使用快速安裝的 HTTP
畫面。
圖 8.15 是當您連接一台新的交換器, 並且在瀏
覽器的 HTTP 欄位中輸入 10.0.0.1 之後會看到
的畫面。
當然, 您的主機必須位於相同的子網路中。
109
Catalyst 交換器組態
110
Catalyst 交換器組態
畫面顯示我們可以設定一些基本功能。對筆者
而言, 從 CLI 來設定資訊會比較容易, 但這是您
可能的選擇之一。
您可以設定交換器的 IP 位址、遮罩、和預設閘
道, 外加密碼。
您還可以設定管理性 VLAN, 但是這部分會在下
一章再做說明。
接著, 您還可以選擇性地設定主機名稱、系統聯
絡人、系統位置、並設置 Telent 存取。
111
Catalyst 交換器組態
最後, 快速安裝的 HTTP 畫面還提供您一些簡
單的協助, 讓您能設定交換器的 SNMP, 以便讓
網管系統 (Network Management System,
NMS) 能夠找到它。
現在將交換器如圖 8.13 般地相互連結;首先請
記住交換器間需要交叉式纜線。
筆者的 1960 和 3560 交換器會自動偵測連線類
型, 所以可以使用直穿式纜線。
但是 2950 或 3550 交換器則不會自動偵測纜線
的類型。
112
Catalyst 交換器組態
不同交換器有不同的需要和能力, 所以在您將各
種交換器連在一起的時候一定要記住這點。
當您一開始將交換器的埠彼此相連時, 鏈路的燈
是橘色, 然後再轉為綠色表示運作正常。
這代表擴展樹的收斂, 如您所知, 如果沒有開啟
延伸功能的話, 這個過程大約要 50 秒。
但是如果您連上交換器的埠之後, 這個埠的燈輪
流閃爍綠色和黃色, 就表示它遇到錯誤了。
此時, 請檢查主機的 NIC 卡或纜線。
113
S1
好了, 讓我們連接每台交換器, 並且設定管理功
能吧。我們還要指定每台交換器的 IP 位址, 不
過這並不能讓網路運作。
我們這樣做的唯一理由是因為這樣我們才能夠
管理它。
讓我們使用諸如 192.168.10.16 / 28 之類簡單
的 IP 架構。您應該很熟悉這個遮罩。請檢視下
面的輸出:
114
S1
115
S1
116
S1
首先請注意在交換器的界面上並沒有設定 IP 位
址。因為根據預設, 交換器所有的埠都會開啟,
所以沒有太多需要設定的。
IP 位址是在稱為管理網域或 VLAN 的邏輯界面
下設定。
您通常應該是使用預設的 VLAN 1 來管理交換
網路;就像此處的做法一樣。
剩下的設定基本上跟您在路由器組態設定時的
流程相同。
117
S1
請記住交換器界面上沒有 IP 位址, 沒有遶送協
定等。
在這裡要做的是第二層的交換, 而不是遶送!此
外, 請注意 Cisco 交換器上沒有輔助埠 (aux
port)。
118
S2
下面是 S2 的組態:
119
S2
120
S2
我們現在應該可以從 S2 交換器 ping 到 S1 交
換器。
讓我們試試看:
121
S2
這裡有 2 個問題要考您:如果我們還沒有設定
Core 交換器, 如何能透過它來進行 ping 的工作?
以及為什麼以上的輸出中只有 4 個 ping、而不
是 5 個 ping 能夠成功?
(第一個句點「.」是逾時;而驚嘆號「!」則是
成功) 這 2 個都是好問題。
122
S2
下面是答案:首先, 您不用設定交換器它就能運
作。
所有的埠預設都會開啟, 所以只要打開電源, 主
機間應該就能溝通了。
其次, 第一個 ping 失敗是因為 ARP 需要時間將
IP 位址解析為硬體 MAC 位址。
123
Core
下面是 Core 交換器的組態設定:
124
Core
125
Core
現在讓我們從 Core 交換器來 ping S1 和 S2,
並且看看發生什麼事:
126
Core
在我們繼續往下驗證交換器組態之前, 還有一個
命令您必須知道 - 即使目前的網路上還用不到,
因為我們沒有加入路由器。
它就是 ip default-gateway 命令。
如果您想要從 LAN 的外面管理您的交換器, 就
必須在交換器上設定預設閘道, 跟在主機上一樣。
您要從整體設定模式下做這樣的設定。
127
Core
下面這個範例中, 我們使用子網路範圍的最後一
個 IP 位址來當做路由器的 IP 位址 (下一章的
VLAN 中就會使用到路由器):
現在我們已經完成了 3 台交換器的基本設定, 讓
我們利用它們來娛樂一下吧。
128
埠的安全性
如同本章稍早所述, 讓任何人都能隨意將東西接
上您的交換器可不是件好事。如果您會在意無
線的安全性, 那為什麼不同樣注意交換器的安全
性呢?
藉由使用埠的安全性功能, 您就可以對一個埠設
定靜態的 MAC 位址, 或限制能動態指定給它的
MAC 位址數目。
而且 - 下面是筆者最喜愛的部份 - 還可以針
對違反政策的使用者設定懲罰。
129
埠的安全性
筆者個人喜歡的做法是在違反安全性政策時, 將
埠關閉, 然後要求違反者交給筆者一份有其主管
簽名、解釋為什麼他會違反安全性政策的備忘
錄。
這通常能幫助他們記住規定。
有安全性的交換器埠可以關聯 1 到 8192 個
MAC 位址, 但是 50 系列只能支援 192 個 - 這
對筆者而言也夠了啦!
130
埠的安全性
您可以選擇讓交換器動態學習這些值, 或是使用
switchport port-security MAC-位址 MAC-位
址命令來設定每個埠的靜態位址。
所以讓我們來設定 S1 交換器的埠安全性。
在我們實驗室中, 埠 fa0 / 3 和 fa0 / 4 都只連接
一個裝置。
藉由使用埠的安全性功能, 我們可以確定一旦埠
fa0 / 3 的主機和 fa0 / 4 的電話都連上之後, 就
沒有其他裝置可以連上。
131
埠的安全性
下面是我們的做法:
132
埠的安全性
前面的命令設定 fa0 / 3 和 fa0 / 4 的埠安全性,
以讓它最多只能連結一個 MAC 位址, 而且只有
第一個連到該埠的 MAC 位址能夠透過交換器
傳送訊框。
如果具有不同 MAC 位址的第二台裝置嘗試傳
送訊框到交換器時, 因為我們使用了 violation
命令, 所以該埠會被關閉。
使用 sticky 命令可省得我們手動輸入每個裝置
的 MAC 位址。
133
埠的安全性
違反政策的處理方式除了關閉埠之外, 另外還有
2 種模式可以選擇。
保護模式 (proect) 表示可以連結另一台主機, 但
是它的訊框會被丟棄。
限制模式 (restrict mode) 也很酷 - 它會透過
SNMP 警告您在埠上發生了違反行為。
您就可以打電話給違反規則的人, 並且告訴他們
被逮到了 - 您可以看到他們, 而且知道他們在
幹什麼, 他們現在麻煩大了!
134
埠的安全性
我們的交換器之間的連線中有冗餘的鏈路, 所以
最好是在這些鏈路上執行 STP。
但是在 S1 和 S2 交換器上, 我們還有主機連到
埠 fa0 / 3 和 fa0 / 4 (不是 Core)。
所以要在這些埠上關閉 STP。
135
PortFast
如果我們在交換器上使用 portfast 命令, 就可
以避免因為 STP 花太長時間收斂, 導致主機
DHCP 請求逾時的情況下, 主機可能無法接收到
DHCP 位址的問題。
我以我要在 S1 和 S2 交換器的埠 fa0 / 3 和 fa0
/ 4 上使用 PortFast:
136
PortFast
設好 S1 之後, 就繼續在 S2 的 fa0 / 3 - 4 埠上
啟用 PortFast 吧, 但是就不再展示這個輸出了。
再提醒一次, 使用 PortFast 請務必小心 - 您絕
對不想造成網路迴圈吧!為什麼呢?
137
PortFast
因為如果您讓迴圈發生, 即使網路仍然能運作
(某種程度啦), 但資料的傳送會像烏龜在爬。
而且更糟的是, 您要花上好長的時間才能找出問
題的來源 - 這會讓您很沒有人緣。所以請務必
小心。
幸運的是, 在使用 PortFast 的時候, 有些命令可
以在某人意外地在開啟 PortFast 的埠上造成迴
圈的時候提供保護。
下面就是這些命令。
138
BPDUGuard
現在討論這個還有點早:如果您在交換器埠上
開啟 PortFast, 則開啟 PBDUGuard 是個很不
錯的主意。
如果開啟 PortFast 的交換埠收到 BPDU 的時候,
它會將這個埠置於錯誤關閉狀態。
這能讓管理者不會偶然地將另一個交換器或集
線器的埠連到設定了 PortFast 的交換埠。
139
BPDUGuard
基本上, 您可以防止它發生, 防止它讓網路當掉,
或者至少是嚴重地癱瘓。
您只能在存取層交換器中設定這個命令 - 也就
是使用者直接相連的交換器 - 所以我們不能在
Core 交換器上設定這個命令。
140
BPDUFilter
另一個可以跟 PortFast 一同使用的有用命令是
BPDUFilter。
因為根據預設, 開啟 PortFast 的交換埠還是會
接收 BPDU, 所以您可以用 BPDUFilter 來完全
阻止 BPDU 進入或離開那個埠。
BPDUFilter 的過濾功能會在接收到 BPDU 的時
候立即將埠脫離 PortFast, 並且強迫它再次成為
STP 協定的一部分。
141
BPDUFilter
它跟 BPDUGuard 不同, BPDUGuard 會將埠置
於錯誤關閉狀態, 但是 BPDUFilter 會保持埠的
開啟, 只是沒有執行 PortFast - 沒有理由在設
定 PortFast 的界面上會收到 BPDU。
老實說, 筆者實在不知道為什麼在開啟 PortFast
的時候, 沒有預設要開啟 BPDUGuard 或
BPDUFilter。
142
BPDUFilter
所以, 讓我們來為已經設定 PortFast 的 S1 和
S2 界面設定 BPDUGuard 和 BPDUFilter - 這
很容易:
143
BPDUFilter
因為 bpduguard 和 bpdufilter 完成的是相同
的工作, 所以通常我們只會使用其中之一, 而一
次設定這 2 個命令是有點誇張。
接著, 我們還會設定一些 STP 802.1d 的延伸功
能 - 您在設定 STP 的時候可以使用。
144
UplinkFast
下面是如何在存取層交換器 (S1 和 S2) 上設定
UplinkFast 的方法:
145
UplinkFast
uplinkfast 命令是個整體命令, 而且會在每個埠
上開啟。
146
BackboneFast
下面是如何在交換器上設定 BackboneFast 的
方法:
147
BackboneFast
請注意 BackboneFast 是設定在網路上所有的
交換器上, 而不是像 UplinkFast 只設定在存取
層交換器上。
請記住 BackboneFast 是用來判定遠端交換器
的鏈路故障, 而不像 UplinkFast 是用來判定並
快速修復本地交換器上的鏈路故障。
148
RSTP (802.1w)
設定 RSTP 其實跟設定其他的 802.1d 延伸功
能一樣簡單。
想到它比 802.1d 好這麼多, 您一定會認為它的
設定鐵定會更複雜, 但是我們非常幸運 - 它並
不難。
所以讓我們在 Core 交換器上開啟 RSTP, 並且
看看會發生什麼事情:
149
RSTP (802.1w)
很棒吧!Core 交換器現在已經在執行 802.1w
版本的 STP 了。讓我們來驗證看看:
150
RSTP (802.1w)
很有趣...它看起來好像什麼都沒有發生。我們
可以看到在另外 2 部交換器上, 所有的埠都已經
收斂了。
151
RSTP (802.1w)
一旦所有東西啟動之後, 一切就看起來完全相同
了。802.1d 和 802.1w 似乎能共存而沒有問題。
但是如果我們更仔細看看, 就可以看到 802.1w
交換器已經將連到其他執行 802.1d 交換器的埠
上的 802.1w BPDU 改變為 802.1d BPDU。
S1 和 S2 交換器相信 Core 交換器是執行
802.1d, 因為 Core 會為了它們而回復成 802.1d
版本的 BPDU。
152
RSTP (802.1w)
即使 S1 和 S2 交換器接收到 802.1w BPDU, 它
們也不認識它, 所以它們只會將其丟棄而已。
不過, Core 的確會接收 802.1d BPDU, 並且會
從 S1 和 S2 交換器接受它們, 進而知道哪些埠
是執行 802.1d。
換句話說, 只在一台交換器上開啟 802.1w 對網
路其實一點幫助也沒有。
153
RSTP (802.1w)
一個討厭的小麻煩是, 一旦 Core 交換器知道要
在連到 S1 和 S2 的埠上傳送 802.1d BPDU, 即
使 S1 和 S2 稍後設定了 802.1w, 它也不會自動
改變。
我們還是必須將 Core 交換器重新開機才能停
止 802.1d BPDU。
154
EtherChannel
設定 EtherChannel 最簡單的方法是透過 Cisco
網路助理 (Cisco Network Assistant) - 本章最
後會說明這個部分。
現在, 我們要使用 CLI, 因為您也必須知道它們
的 CLI 命令。要記住 EtherChannel 有 2 個版
本:Cisco 版本與 IEEE 版本。
現在我們要使用 Cisco 版本, 將 S1 交換器和
Core 交換器之間的鏈路綁在一起。
155
EtherChannel
我們要在 S1 和 Core 交換器上使用 interface
port-channel 整體命令, 以及 channel-group
和 channel-protocol 界面命令。
下面是它們的用法:
156
EtherChannel
157
EtherChannel
158
EtherChannel
這裡加上 switchport nonegotiate 界面命令讓
交換器停止自動偵測鏈路類型和自動設定主幹
的嘗試;改為靜態地設定主幹鏈路的狀態。
S1 和 Core 之間的兩條鏈路現在已經使用
PAgP 的 Cisco EtherChannel 版本綁在一起了。
好了 - 但是等一下, 在可以學習下一章的
VLAN 之前, 我們還要先驗證交換器組態, 並且
和根橋接器攪和一下。
159
確認 Cisco Catalyst 交換器組態
我們要對任何路由器或交換器做的第一件事, 就
是使用 show runningconfig 命令檢視整個設
定。
為什麼呢?因為這樣做可以完全瞭解每個裝置。
不過它很花時間, 而且列出所有組態會佔用本書
太多的篇幅。
此外, 我們還可以執行同樣提供相當不錯資訊的
其他命令。
例如要檢查交換器上設定的 IP 位址, 可以使用
show interface 命令。
160
確認 Cisco Catalyst 交換器組態
下面是它的輸出:
161
show mac address-table
本章稍早有用過這個命令;它可用來顯示轉送
過濾表, 又稱為內容可定址記憶體 (content
addressable memory, CAM) 表格。
下面是 S1 交換器的輸出:
162
show mac address-table
交換器使用指定給 CPU 的基底 MAC 位址;
2960 系列使用的是 20。
163
show mac address-table
根據前面的輸出, 您可以看到我們有 5 個 MAC
位址被動態地指定到 EtherChannel 埠 1。
埠 Fa0 / 3、Fa0 / 8、和 Fa0 / 4 只有指定 1 個
MAC 位址, 而且所有埠都被指定到 VLAN 1。
讓我們來看看 S2 交換器的 CAM。
請記住 S2 交換器並沒有設定像 S1 交換器的
EtherChannel, 所以 STP 會關閉其中一條連到
Core 交換器的冗餘鏈路。
164
show mac address-table
165
show mac address-table
我們可以看到前面的輸出中有 4 個 MAC 位址
指定到 Fa0 / 1。
當然, 我們也可以看到埠 3 和 4 分別連到個別
的主機。
但是埠 2 呢?因為埠 2 是冗餘的鏈路, 所以
STP 將 Fa0 / 2 置於凍結模式。稍後將會再討
論這個部份。
166
指定靜態 MAC 位址
您可以在 MAC 位址表中設定靜態 MAC 位址,
但是就像設定靜態 MAC 埠的安全性一樣, 它需
要大量的工作。
如果您真的想這麼做, 下面是它的做法:
167
指定靜態 MAC 位址
您可以看到現在有一個靜態 MAC 位址被永久
地指定到界面 Fa0 / 5, 並且它也只有指定到
VLAN 1。
168
show spanning-tree
您應該已經知道 show spanning-tree 是很重
要的命令。
您可以用它來看誰是根橋接器, 以及每個 VLAN
的優先權設定。
Cisco 交換器會執行所謂的各個 VLAN 擴展樹
(Per-VLAN Spanning Tree, PVST), 基本上它是
指每個 VLAN 執行自己的一份 STP 協定。
如果輸入 show spanning-tree, 我們會收到每
個 VLAN 的資訊 - 從 VLAN 1 開始。
169
show spanning-tree
因此, 假設我們有多個 VLAN, 而且想要看到
VLAN 2 的內容, 就要使用 show spanningtree
vlan 2 命令。
下面是在 S1 交換器上執行 show spanningtree 命令的輸出。因為我們只使用 VLAN 1, 所
以不需要在命令後面加上 VLAN 編號:
170
show spanning-tree
因為我們只有設定 VLAN 1, 所以這個命令的輸
出就到此為止。
171
show spanning-tree
但是如果我們有更多的 VLAN, 交換器上所設定
的每個 VLAN 都會各有對應的一頁輸出。
預設的優先權是 32768, 但是還有稱為系統 ID
延伸 (sys-id-ext) 的 VLAN 識別子。
橋接器的 ID 優先權就是根據 VLAN 編號來增
加。因為我們只有 VLAN 1, 所以加 1 變成
32769。
但是要知道, 根據預設, BackboneFast 會將預
設的優先權提高到 49152, 以防止該橋接器成為
根。
172
show spanning-tree
輸出的最上面顯示出誰是根橋接器:
1 號 EtherChannel 埠是我們的根埠, 這表示它
是我們選擇通往根橋接器的路徑, 而且它的識別
子為 000d.29bd.4b80。
這只可能是 Core 或 S2 交換器;我們稍後就會
知道。
173
show spanning-tree
命令的最後面顯示出執行 STP 並且連到另一裝
置的埠。因為我們有執行 EtherChannel, 所以
就不會有凍結的埠。
要判斷您的橋接器是否為根橋接器, 可以看它是
否有任何 Altn BLK 埠 (代表替代路徑的凍結埠)。
根橋接器的任何界面都不會有凍結埠, 但是因為
我們設定了 EtherChannel, 所以 S1 的所有埠
也都顯示為轉送 (FWD)。
174
決定根橋接器
要判斷根橋接器, 我們顯然得使用 show
spanning-tree 命令。讓我們來看看另外 2 台
交換器, 並且觀察何者是預設的根橋接器。
請先稍微記住 S1 交換器的橋接器 ID MAC 位
址和優先權。下面是 S2 的輸出:
175
決定根橋接器
我們可以看到 Fa0 / 2 埠被凍結了, 所以它不可
能是我們的根橋接器。
176
決定根橋接器
根橋接器不會有任何凍結的埠。請再次注意橋
接器 ID MAC 位址和優先權。下面是 Core 交
換器的輸出:
177
決定根橋接器
找到它了 - 這個橋接器就是根。
但想想看 - 為什麼 Core 交換器的優先權只是
預設的 32, 768, 而不像其他交換器是 49, 152?
因為它執行的是 802.1w 版本的 STP, 而其
BackBoneFast 的預設是關閉的。
178
決定根橋接器
讓我們來看看每台交換器的橋接 MAC 位址:
S1 位址:001b.2b55.7500
S2 位址:001a.e2ce.ff00
Core 位址:000d.29bd.4b80
藉由檢視 MAC 位址, 假設所有交換器都設為預
設優先權, 您認為何者會是根交換器?從左向右
檢視 MAC 位址。
179
決定根橋接器
Core 顯然是最低的 MAC 位址, 而且透過檢查
show spanning-tree 命令的輸出, 可以看到它
確實是我們的根橋接器 (即使所有交換器的優先
權相同)。
偶爾透過比較交換器的 MAC 位址來判斷根橋
接器是個不錯的練習。
180
設定我們的根橋接器
根據預設讓 Core 交換器成為我們的根橋接器
的確是相當方便, 因為我們通常也會選擇它成為
根橋接器。
但是為了娛樂, 讓我們來做個改變。下面是我們
的做法:
181
設定我們的根橋接器
當您將 S1 的優先權降為 16384 時, S1 交換器
立刻就成為根橋接器。
182
設定我們的根橋接器
您可以將優先權設為 0 到 61440 之間的任意值。
0 表示這台交換器將永遠是根橋接器, 而 61440
則表示交換器永遠不可能成為根。
接下來還要介紹的一個命令是您可以在交換器
上執行, 並且將它設為根橋接器的命令:
183
設定我們的根橋接器
請注意這並不能覆蓋掉低優先權的交換器 - 這
個命令只有在您所有交換器都有相同 (或更高)
的優先權時才有效。
順便一提, 您必須在每個 VLAN 上分別設定這
個命令, 而且您也可以設定根的主要和次要交換
器。
這的確比本章之前的做法簡單許多!但是為了
要通過 CCNA 認證, 您務必要學會之前的做法
- 雖然它確實很難!
184
8 - 5 Cisco 網路助理 (CNA)
Cisco 網路助理 (Cisco Network Assistant,
CNA) 可以讓您輕鬆地設定交換器, 而它也和
SDM 一樣, 同時有好與壞兩面。
好處是它讓我們能更簡單地建立比較困難的組
態, 缺點則是它讓所有其他人都可以比較容易做
到這件事。
不過, 它一開始要上手還是有點難度, 所以請下
載 CNA, 並且盡可能去熟悉它。
一旦使用 CNA 連到交換器, 就會得到如下的畫
面。
185
Cisco 網路助理 (CNA)
186
Cisco 網路助理 (CNA)
我們可以從相當清楚的拓樸角度來看到所有的
裝置。
我們可以看到 IP 電話、Core 交換器、和跨
VLAN 的路由器 (IVR) - 這是 2811 路由器的
主機名稱。
但是您必須知道, 在這個輸出中, 我們只能看到
直接相連的裝置, 這表示我們無法看到位於
Core 另外一端的裝置。
CNA 畫面左方的功能選單中最有用的一項, 可
能就是 Smartports。
187
Cisco 網路助理 (CNA)
一旦您點選 Smartports, 就可以得到交換器的
特寫。
188
Cisco 網路助理 (CNA)
您必須要做的是選擇一個埠, 或所有的埠, 然後
按下右鍵, 並且選擇這些埠會連接的裝置類型。
很棒的功能!不過, Smartports 的有趣之處在
於它實際設定的東西。
例如當我們使用 Smartports 來設定 S1 交換器
的 6 號埠要連結到桌上型 PC 時, 下面是它下載
到交換器的命令:
189
Cisco 網路助理 (CNA)
偉大吧!想想看, 我們甚至完全不必瞭解本章所
討論的任何功能, 就可以設定交換器。
反之, 只要選擇連到界面的裝置類型, 然後交換
器就自動使用它「認為」非常適合這種埠的命
令來完成設定 - 這個小東西真是太神奇了!
190
Cisco 網路助理 (CNA)
在我們繼續討論 CNA 之前, 讓我們先聊一下這
個界面的組態。
我們已經討論過 port-security、spanningtree portfast、和 bpduguard, 但什麼是
macro 和 port-security aging 命令呢?
macro 是儲存在新 Cisco 交換器中的預設程式,
會在設定 Smartport 的時候執行。
port-security aging 命令的運作方式則沒有什
麼不同 - 它會設定該埠的老化速率。
191
Cisco 網路助理 (CNA)
aging 命令可以搭配兩個選項 - absolute 和
inactivity。
absolute 選項會在所指定的時間截止之後, 刪
除埠上的安全位址 - 它的時間長度可以從 0 到
1440 分。
inactivity 選項則會在埠不作用 (inactive) 的時
間超過指定時間之後, 刪除它的位址 - 時間的
長度也是 0 到 1440 分。
192
Cisco 網路助理 (CNA)
因此, 當您使用 switchport port-security
aging time 2 加上 switchport port-security
aging type inactivity 命令的時候, 所有對應到
該埠的 MAC 位址都會在 2 分鐘後被刪除。
不僅如此, switchport port-security violation
restrict 表示會有個 trap 被傳送到 SNMP 伺服
器或網管機台 (Network Management Station,
NMS)。
雖然這好像有點過頭了, 不過筆者還是覺得它相
當的酷。
193
Cisco 網路助理 (CNA)
您可以使用下面命令來檢視界面上的埠安全性:
194
Cisco 網路助理 (CNA)
等一下 - 剛才的 macro 命令發生了什麼事?
別擔心, 它只是個讓您建立和執行巨集的交換器
命令, 而且 Cisco 的新交換器中預先設定了 6
個這種命令。
很奇怪的是, 您在運行組態中看不到它們;您只
能使用 show parser 命令來檢視它們。
下面是在我們的 f0 / 6 埠上執行的巨集:
195
Cisco 網路助理 (CNA)
196
Cisco 網路助理 (CNA)
好啦, 一切都很好。
至少現在我們知道在我們交換器上所設定的所
有命令 - 在 Smartports 之下的每種裝置都有
一個巨集, 如下面 show parser macro brief
命令所示:
197
Cisco 網路助理 (CNA)
現在回到 CNA, 在 Ports 下您會找到 Port
Settings。
198
Cisco 網路助理 (CNA)
您可以在這裡檢視和變更所有埠的基本組態資
訊。同樣在 Ports 之下, 您可以找到
EtherChannels。
199
Cisco 網路助理 (CNA)
跟使用 CLI 相比, 這可能是將幾個埠綁在一起比
較容易的方法。透過它, 您可以把交換器之間的
最多 8 個埠綁在一起。
在點選 EtherChannel 之後, 只要選擇群組, 並
且指出想要綁在一起的埠, 以及要使用的協定即
可。
200
Cisco 網路助理 (CNA)
這非常的酷 - 只要點選 Device Properties,
就可以設定交換器的很多功能:IP 位址、主機
名稱、使用者和密碼等等。
201
Cisco 網路助理 (CNA)
在 Topology View 畫面中, 您可以在某個裝置
上按下右鍵, 並且點選多種選項 - Device
Manager 是其中很有趣的一項。
202
Cisco 網路助理 (CNA)
一旦您選擇 Device Manager, 預設的 HTTP 瀏
覽器就會開啟, 現在是從 HTTP 瀏覽器開始設
定和確認交換器組態的時機了。
不過, 它的反應時間比 CNA 慢, 所以筆者個人
並不會去用它。
203
Cisco 網路助理 (CNA)
CNA 還有很多能力, 建議您花時間將它下載, 並
盡可能多玩一玩。
現在老實承認吧 - 雖然這是很長的一章, 但您
真的學到很多, 而且過程中您可能還有些地方會
覺得有趣!
您現在已經設定和確認完所有的交換器, 設定埠
的安全性, 並且經歷了 STP 延伸功能, 以及設定
了根橋接器。
204
Cisco 網路助理 (CNA)
這表示您現在已經準備好要學習 VLAN 了。
我們會將所有交換器的設定儲存起來, 以便在第
9 章時可以從這裡接下去進行。
205
8 - 6 摘要
本章討論了交換器與橋接器的差異, 他們如何在
第 2 層運作, 以及如何產生 MAC 位址轉送或過
濾表, 以決定是否轉送或廣播訊框。
我們也討論了當橋接器 (交換器) 之間存在多條
鏈路時可能發生的問題, 以及如何利用擴展樹協
定來解決這些問題。
我們還詳細討論了 Cisco Catalyst 交換器的設
定, 包括確認組態、設定 Cisco STP 延伸功能,
以及設定橋接器優先權來變更根橋接器。
最後, 我們討論了 Cisco 網路助理;它能在交換
器設定時提供很大的協助。
206