昨天的延續:
1、華爲設備上的 “鏈路捆綁” - 動態
# 在華爲設備,批量配置端口
port-group group-member gi0/0/1 to gi0/0/3
->同時進入 gi0/0/1 , gi0/0/2 , gi0/0/3 端口;
# 在鏈路上使用 LACP 協議的時候,基於平臺和使用的軟件有關係,
有些端口是無法明確的指定端口 Active 或 passive 狀態,
那麼此時,每個參與 LACP 協議中的端口,默認都是 active 狀態。
# 在通過 LACP 動態協商形成 eth-trunk 互聯設備中,設備之間是有
主從關係。從設備對成員鏈路的選擇,完全是跟隨主設備的決定的;
主從關係的確定,是通過比較 LACP 交換機上的以下信息:
系統優先級和系統ID
系統優先級默認是 32768 ,取值範圍是 0 --- 65535
系統ID是 MAC 地址的形式,其實是 eth-trunk(20) 端口的 MAC 地址。
比較原則是:
#首先比較優先級,越小越好;
#如果相同,則比較 MAC地址,越小越好。
# 當設備之間的成員鏈路數據量多餘“活動鏈路數量”時,那“主設備”會
在所有的成員鏈路中,選擇“比較好”的成員鏈路,作爲活動鏈路使用。
選擇原則是:
#首先比較每個端口的優先級,默認是 32768,值越小越好;
#如果端口優先級相同,則比較端口的 PortNo 參數;值越小越好;
配置命令如下:
-修改交換機的額 LACP 優先級
[SW1]lacp priority 0 -->
-修改端口的 LACP 優先級
[SW1]interface gi0/0/1
[SW1-gi0/0/1] lacp priority 40000
-啓用 Eth-trunk 上的“搶佔功能" (建議都開啓)
[SW1]interface eth-trunk 20
[SW1-eth-trunk] lacp preempt enable --> 開啓;默認是關閉的;
[SW1-eth-trunk] lacp preempt delay 10 --> 默認是30s
驗證命令:
display eth-trunk
display trunkmembership eth-trunk 20
==============================================================
STP: spanning tree protocol - 生成樹協議
-where
交換網絡中,即所謂的交換機上;也就是,該技術是一個2層技術。
-why
因爲在傳統的交換網絡中,存在“單點故障”的問題,
所以爲了解決該問題,我們引入了“備份鏈路/設備“解決方案,
但是,帶來了新的問題 - 2層數據環路,
所以,爲了解決該問題,我們提出了 STP 解決方案。
-環路形成:
演示過程 - 自己畫圖,理解。
環路現象 -
交換機上會提示以下信息:
MAC A flapping between Fas0/1 and Fas0/2
通過查看交換機上的端口的 LED 指示燈查看:
瘋狂閃爍
-作用:
在交換網絡中,存在備份鏈路的情況,防止2層數據轉發環路的發生。
-實現:
-報文
BPDU - bridge protocol data unit
橋接 協議 數據 單元
-類型
config BPDU : 配置BPDU
TCN BPDU :拓撲變更通知 BPDU
-原理
1、確定交換機的角色
根交換機
非根交換機
選舉依據:BID - bridge ID , 橋ID
優先級 + MAC地址
2Byte 6Byte
選舉原則:
1、首先比較 BID 的優先級,越小越好;
默認是32768
2、如果優先級相同,則比較 MAC 地址,越小越好。
本質上是交換機的“基MAC地址”,也就是
交換機的主板的MAC地址 - show version
2、確定端口的角色
(root-port) 根端口 :在每一個非根交換機上,有且只有一個,距離根交換機,最近的端口
(designated-port) 指定端口:在每一個網段(衝突域),有且只有一個,距離根交換機,最近的端口
(non-designated-port)非指定端口:其他所有端口,都稱之爲非指定端口。
在 STP 中,如何表示“距離”?
- cost :開銷
表示的是去往根交換機的距離
距離的大小與端口帶寬有關係。
帶寬 cost(默認的對應關係)
10M -- 100
100M -- 19
1G -- 4
3、確定端口狀態
down/disable:表示端口是關閉的,掛掉的;
listening:表示的是偵聽狀態,該狀態是不能收發用戶數據的
learning :表示的是學習狀態,該狀態是不能收發用戶數據的
forwarding:表示的是轉發狀態,該狀態可以正常收發(最終狀態)
blocking:表示的是阻塞狀態,該狀態不能收發使用戶數據(最終狀態)
驗證命令:
show spanning-tree // 查看交換機上的 STP 信息。
--------------------------------------------------------------
BPDU報文結構:
Root-ID //表示的是根交換機的 ID (優先級+base-MAC)
Cost //表示的是發送這個BPDU的交換機到根交換機的距離;
BID //表示的是發送這個BPDU的交換機的名字;
Port-ID //表示的是發送這個BPDU的交換機的出端口
hello-time //表示的是發送BPDU的週期,默認是2s;
forward-delay //表示的是轉發延遲,默認是15s;
max-age //表示的是最大存活時間,默認是20s;
注意:
STP在工作過程中,選擇交換機角色、端口角色時,是通過比較BPDU的
以上的前面的4個字段來進行確定的。
如果 root-id相同,則比較下一個,
cost值越小越好,如果相同,則比較一下個
BID越小越好,如果相同,則比較下一個
Port-id越小越好,不可能相同。
-port-id的組成:
port-優先級 + port-號
默認是128
STP收斂時間
-收斂
所謂的收斂,指的是當網絡出現故障時,到再次恢復聯通所需要的時間。
-時間
30s---50s
隨着網絡的發展,基礎網絡對網絡收斂時間的要求越來越高,
故30-50的時間太長了,所以我們開發了新的公有標準協議 - RSTP ,
快速生成樹。
----------------------------------------------------------------
STP的類型:
公有標準 私有協議(cisco)
IEEE 802.1d(STP) -生成樹 PVST
IEEE 802.1w(RSTP) -快速生成樹 PV-RSTP
IEEE 802.1s(MSTP) -多生成樹 MIST
RSTP的工作過程與傳統的 STP 相似,
但是能夠提高收斂速度的原因,包含以下幾個方面:
1、發現問題的效率提高了:
在傳統的STP中,一個交換機如果發現一個鏈路出現故障,則會產生
一個 TCN BPDU ,爲的是告訴根交換機,然後根交換機,重新產生
一個新的 配置BPDU,然後下發給其他的所有的非根交換機。
在 RSTP 中,一個交換機如果發現一個鏈路出現故障的話,則會產生
一個新的 TCN BPDU ,直接發送給與其相連的所有的交換機
2、 解決問題的效率提高了
細化端口角色:
根端口
指定端口
替代端口 - 是根端口的替代者;
備份端口 - 是指定端口的備份者;
精簡端口狀態:
learning -> 學習(該狀態學習的MAC地址表)
forwarding -> 轉發
discarding -> 丟棄
(相當於STP中的 down / listening / blocking)
----------------------------------------------------------
#交換機默認情況下開啓了 STP 功能,是可以關閉的;
#交換機默認情況下運行的 STP 模式,是 RSTP(不同產品,模式不同)
#STP 模式查看:
SW1#show spanning-tree summary
#STP 模式轉變:
SW1(config)# spanning-tree mode ? ->就可以看到該設備支持的STP其他模式
注意:
在企業項目中,對 STP 最多的操作,也就是僅僅配置一個主根交換機
和輔根交換機的身份。
一般將其配置到具備高性能轉發的交換機上面。
SW1:VLAN10 的主根,VLAN 20 的輔根;
spanning-tree vlan 10 priority 0
spanning-tree vlan 20 priority 4096
SW2:VLAN20 的主根,VLAN 10 的輔根;
spanning-tree vlan 20 priority 0
spanning-tree vlan 10 priority 4096
我們在配置交換機的 STP 優先級的時候,所配置的數值必須是
4096的倍數。因爲在 BID 的2個字節的優先級中,其實表示
優先級本身的,僅僅是4個bit,後面的12bit,表示的sys-id-ext
,即擴展系統ID,其實數值本身爲 VLAN號。主要的目的,就是爲了
引入以VLAN爲基礎而運行的 STP ,比如 PVST。
基於VLAN 設計 STP(PVST) ,可以讓我們在多個交換機之間,以 VLAN 爲基礎
進行流量的負載均衡,從而可以提高設備的利用率。
--------------------------------------------------------------
STP特性
快速收斂
portfast
-該特性可以將端口的狀態,直接從 down 跳轉到 forwarding,
從而略過 listening 和 learning 狀態,節省了 30s ;
-一般該特性都是配置在連接終端的 access 鏈路上。
-配置命令:
access鏈路:
interface fas0/1
spanning-tree portfast
trunk 鏈路:
interface fas0/23
spanning-tree portfast trunk
[一般不建議在交換機之間的trunk鏈路上使用 port-fast]
[因爲會導致一個臨時的環路,最終還是會阻止環路的]
[但是在單臂的 trunk 鏈路上,強烈建議使用該特性]
-驗證命令:
show spanning-tree interface fas0/2 portfast
-------------------------------------------------------------
uplink-fast(由原來的50s,降低到 30s,節省了20s)
默認情況下,當交換機收到一個次級BPDU的時候,會默默的
承受20s,該計時器過了以後,交換機就會將自己本地保存的
根交換機的 BPDU 發送給對方是設備,對方收到真正的根的
BPDU以後,就會進行交換機角色的確定,成爲非根交換機,
隨後會進行端口角色的轉變,由之前的盲目自信狀態下確定的
指定端口,變成根端口,然後再進行端口狀態的轉變,經歷
偵聽、學習狀態,到達轉發,又經過了30s。所以,默認情況下
總共需要花費50s的時間。
但是,
如果我們使用了 uplink-fast 特性,那麼交換機在收到次級BPDU
的時候,該交換機爲了確保安全,會主動的發送一個 BPDU報文給
根交換機,問一下根交換機是否還活着,如果能得到根交換機的
回覆,則說明根交換機是沒問題的。此時,該交換機會立刻將真實
根交換機的信息,發送給對方。那麼虛擬的根交換機,就會立刻進行
交換機角色的轉變,變成非根交換機,然後進行端口角色的轉變,
最後進行端口狀態的轉變,經歷了2個15s, 共30s .
所以,使用了 uplink-fast ,可以保證在交換機的上行鏈路出現
故障的時候,將鏈路的切換時間,由原來的50,,減少到 30s .
即加速了20s 。
安全特性
bpduguard
-bpdu保護
啓用該功能的端口,不能接收BPDU,如果收到,
則會將端口直接轉換爲 err-disable 狀態,
該狀態的端口相當於 shutdown;
-在什麼端口應用?
在access端口上使用。
因爲該端口連接的是終端設備,而默認情況下,終端設備
是不支持發送BPDU,所以正常情況,Acess端口是不會收到
BPDU。如果收到了,只能說明存在“惡意***”,所以纔會
啓動該功能,讓收到BPDU的端口,進入到err-disable狀態
-配置命令:
interface fas0/1 --> 連接終端設備的 Access
spanning-tree bpduguard enable
-恢復 err-disable 端口:
#手動恢復
interface fas0/1
shutdown
no shutdown
#自動恢復
SW1(config)#err-disable recovery cause bpduguard
//指定 錯誤自動恢復的原因是 BPDU 防護;
SW1(config)#err-disable recovery interval 60(單位是s)
//指定 錯誤自動恢復的時間間隔是 60s,默認是 300s ;
SW1(config)#err-disable detected cause bpduguard
bpdufilter
- BPDU過濾
表示啓用該功能的端口,不能收,也不能發;
如果真的收到了,就直接丟棄;
-應用端口:
連接重要設備的 access ,比如連接網絡設備的端口
或者是連接服務器的端口,或者是連接老闆的端口。
-配置命令:
SW1(config)#interface fas0/1
SW1(config-if)#spanning-tree bpdufilter enable
root-guard
-根交換機保護功能
表示啓用該功能的端口,永遠是指定端口。
那麼如果在該端口,收到一個比自己本身保存的BPDU
還牛的BPDU,則將該端口轉換到 “端口非一致” 狀態,
相當於 disable 狀態。
如果對方設備更改了自己本身的 STP 配置,BPDU趕不上
該端口保存的好了,那麼端口會自動恢復到 forwarding
-配置端口:
該功能,不一定非得配置在“根交換機”上。
一般將該特性配置在交換機的“邊緣”端口上,從而可以防止
外部接入的交換機,對原有交換網絡的根的身份造影響。
該端口可以是 access端口,也可以是 trunk 端口。
-配置命令:
interface fas0/1
spanning-tree guard root
-驗證命令:
show spanning-tree inconsistenports // 查看設備上的非一致的端口。
---------------------------------------------------------------