文章目錄
- 一、IPV6
- 二、 二層交換
- 1. 二層交換基礎
- 2. VLAN
- 2.1 VLAN作用
- 2.2 802.1Q幀格式
- 2.3 鏈路類型
- 2.4 PVID
- 2.5 端口類型☆☆☆
- 2.6 VLAN 的類型(劃分方法)
- 2.6.1 基於端口的VLAN(Port-based VLAN)
- 2.6.2 基於Mac地址的VLAN(MAC-based vlan )
- 2.6.3 基於協議的VLAN(Protoclo-based VLAN)
- 2.7 VLAN 的範圍
- 2.8 VLAN成員模式
- 3. VTP(VLAN Trunking Protocol)
- 4. VLAN間路由☆☆☆
- 三、STP 生成樹協議
- 1. 環路問題
- 2. STP 作用
- 3. STP 樹的生成
- 4. STP 報文格式
- 5. STP 端口狀態
- 6. STP 故障問題
- 7. RSTP(STP 優化)
- 四、RSTP(STP 優化)
- 1. STP缺陷
- 2. RSTP
- 五、MSTP (多實例生成樹協議)
- 1. 單生成樹實例弊端
- 2. MSTP 原理
- 六、路由
- 七、RIP
- 1. 路由協議基礎
- 2. RIP協議基本原理
- 3. RIP路由表形成
- 4. RIP消息格式
- 5. RIP-1與RIP-2
- 6. RIP定時器
- 7. RIP環路問題
- 8. 環路解決
- 八、OSPF
- 1. ospf基本原理
- 2. RIP與OSPF
- 3. OSPF區域化結構
- 4. OSPF支持的網絡類型
- 5. 鏈路狀態與LSA
- 6. OSPF報文類型
- 7.鄰居關係與鄰接關係
- 8. DR與BDR
- 九、NAT 網絡地址轉換技術
一、IPV6
1. IPv6的基本概念
1.1 IPv6地址
1.2 IPv6基本報頭
IPv6的基本報頭在IPv4報頭的基礎上,增加了流標籤域,去除了一些冗餘字段,使報文頭的處理更爲簡單、高效。
IPv6報文由IPv6基本報頭、IPv6擴展報頭以及上層協議數據單元三部分組成。
基本報頭中的各字段解釋如下:
- Version:版本號,長度爲4bit。對於IPv6,該值爲6。
- Traffic Class:流類別,長度爲8bit,它等同於IPv4報頭中的TOS字段,表示IPv6數據報文的類或優先級,主要應用於QoS。
- Flow Label:流標籤,長度爲20bit,它用於區分實時流量。流可以理解爲特定應用或進程的來自某一源地址發往一個或多個目的地址的連續單播、組播或任播報文。IPv6中的流標籤字段、源地址字段和目的地址字段一起爲特定數據流指定了網絡中的轉發路徑。這樣,報文在IP網絡中傳輸時會保持原有的順序,提高了處理效率。隨着三網合一的發展趨勢,IP網絡不僅要求能夠傳輸傳統的數據報文,還需要能夠傳輸語音、視頻等報文。這種情況下,流標籤字段的作用就顯得更加重要。
- Payload Length:有效載荷長度,長度爲16bit,它是指緊跟IPv6報頭的數據報文的其它部分。
- Next Header:下一個報頭,長度爲8bit。該字段定義了緊跟在IPv6報頭後面的第一個擴展報頭(如果存在)的類型。
- 跳數限制(Hop Limit),長度爲8bit,該字段類似於IPv4報頭中的Time to Live字段,它定義了IP數據報文所能經過的最大跳數。每經過一個路由器,該數值減去1;當該字段的值爲0時,數據報文將被丟棄。
- Source Address:源地址,長度爲128bit,表示發送方的地址。
- Destination Address:目的地址,長度爲128bit,表示接收方的地址。
與IPv4相比,IPv6報頭去除了IHL、Identifier、Flags、Fragment Offset、Header Checksum、 - Options、Padding域,只增了流標籤域,因此IPv6報文頭的處理較IPv4大大簡化,提高了處理效率。另外,IPv6爲了更好支持各種選項處理,提出了擴展頭的概念。
1.3 IPv6擴展報頭
IPv6擴展報頭是跟在IPv6基本報頭後面的可選報頭,可以有一個或多個。
IPv6增加了擴展報頭,使得IPv6報頭更加簡化。一個IPv6報文可以包含0個、1個或多個擴展報頭,僅當需要路由器或目的節點做某些特殊處理時,才由發送方添加一個或多個擴展頭。IPv6支持多個擴展報頭,各擴展報頭中都含有一個下一個報頭字段,用於指明下一個擴展報頭的類型。這些報頭必須按照以下順序出現:
- IPv6基本報頭
- 逐跳選項擴展報頭
- 目的選項擴展報頭
- 路由擴展報頭
- 分片擴展報頭
- 認證擴展報頭
- 封裝安全有效載荷擴展報頭
- 目的選項擴展報頭(指那些將被分組報文的最終目的地處理的選項)
- 上層協議數據報文
除了目的選項擴展報頭外,每個擴展報頭在一個報文中最多隻能出現一次。目的選項擴展報頭在一個報文中最多也只能出現兩次,一次是在路由擴展報頭之前,另一次是在上層協議擴展報頭之前。
2. IPv6地址格式和地址類型
2.1 IPv6地址格式
IPv6地址長度爲128比特,每16比特劃分爲一段,每段由4個十六進制數表示,並用冒號隔開。
IPv6地址包括網絡前綴和接口標識兩部分。
2. 2 IPv6地址壓縮格式
每一組中的前導“0”都可以省略。
地址中包含的連續全爲0的組,可以用雙冒號“::”來代替。
注意:如果一個IPV6地址中只能出現一個‘::’,否則會出現歧義
2.3 IPv6地址分類
IPv6地址分爲單播地址、任播地址、組播地址三種類型。
單播地址的格式是2000::/3
,代表公共IP網絡上任意可及的地址。IANA負責將該段地址範圍內的地址分配給多個區域互聯網註冊管理機構(RIR)。RIR負責全球5個區域的地址分配。以下幾個地址範圍已經分配:2400::/12 (APNIC)、2600::/12 (ARIN)、2800::/12 (LACNIC)、2A00::/12 (RIPE NCC)和2C00::/12 (AfriNIC),它們使用單一地址前綴標識特定區域中的所有地址。2000::/3地址範圍中還爲文檔示例預留了地址空間,例如2001:0DB8::/32。
鏈路本地地址只能在連接到同一本地鏈路的節點之間使用。可以在自動地址分配
、鄰居發現和鏈路上沒有路由器的情況下使用鏈路本地地址。以鏈路本地地址爲源地址或目的地址的IPv6報文不會被路由器轉發到其他鏈路。鏈路本地地址的前綴是FE80::/10
。
組播地址的前綴是FF00::/8
。組播地址範圍內的大部分地址都是爲特定組播組保留的。跟IPv4一樣,IPv6組播地址還支持路由協議。IPv6中沒有廣播地址。組播地址替代廣播地址可以確保報文只發送給特定的組播組而不是IPv6網絡中的任意終端。
IPv6還包括一些特殊地址,比如未指定地址::/128。如果沒有給一個接口分配IP地址,該接口的地址則爲::/128
。需要注意的是,不能將未指定地址跟默認IP地址::/0
相混淆。默認IP地址::/0跟IPv4中的默認地址0.0.0.0/0類似。環回地址127.0.0.1在IPv6中被定義爲保留地址::1/128
。
2.4 IPv6單播地址
全球單播地址帶有固定前綴,類似於IPv4中的公網地址
鏈路本地單播地址前綴爲FE80::/10。
單播地址主要包含全球單播地址和鏈路本地地址。全球單播地址(例如2000::/3)帶有固定的地址前綴,即前三位爲固定值001。其地址結構是一個三層結構,依次爲全球
路由前綴、子網標識和接口標識
。全球路由前綴由RIR和互聯網服務供應商(ISP)組成,RIR爲ISP分配IP地址前綴。子網標識定義了網絡的管理子網。
2.5 IPv6組播地址
所有IPv6組播地址都以FF開始。
IPv6爲需要使用組播發送數據的協議預留了一些組播組。
1. IPv6的組播與IPv4相同,用來標識一組接口,一般這些接口屬於不同的節點。一個節點可能屬於0到多個組播組。
2. 目的地址爲組播地址的報文會被該組播地址標識的所有接口接收。
3. 一個IPv6組播地址是由前綴、標誌(Flag)字段、範圍(Scope)字段以及組播組ID(Group ID)4個部分組成:
- 前綴:IPv6組播地址的
前綴是FF00::/8(1111 1111)
。 - 標誌字段(Flag):長度4bit,目前只使用了最後一個比特(前三位必須置0),當該位值爲0時,表示當前的組播地址是由IANA所分配的一個
永久分配地址
;當該值爲1時,表示當前的組播地址是一個臨時組播地址(非永久分配地址)
。 - 範圍字段(Scope):長度4bit,用來限制組播數據流在網絡中發送的範圍。
- 組播組ID(Group ID):長度112bit,用以標識組播組。目前,RFC2373並沒有將所有的112位都定義成組標識,而是建議僅使用該112位的最低32位作爲組播組ID,將剩餘的80位都置0,這樣,每個組播組ID都可以映射到一個唯一的以太網組播MAC地址(RFC2464)。
2.6 IPv6任播地址
**任播地址標識一組網絡接口(通常屬於不同的節點)。`目標地址`是任播地址的數據包將發送給其中路由意義上最近的一個網絡接口**。任播過程涉及一個任播報文發起方和一個或多個響應方。任播報文的發起方通常爲請求某一服務(DNS查找)的主機或請求返還特定數據(例如,HTTP網頁信息)的主機。**任播地址與單播地址在格式上無任何差異,唯一的區別是一臺設備可以給多臺具有相同地址的設備發送報文。**企業網絡中運用任播地址有很多優勢。其中一個優勢是業務冗餘。比如,用戶可以通過多臺使用相同地址的服務器獲取同一個服務(例如,HTTP)。這些服務器都是任播報文的響應方。如果不是採用任播地址通信,當其中一臺服務器發生故障時,用戶需要獲取另一臺服務器的地址才能重新建立通信。如果採用的是任播地址,當一臺服務器發生故障時,任播報文的發起方能夠自動與使用相同地址的另一臺服務器通信,從而實現業務冗餘。
使用多服務器接入還能夠提高工作效率。例如,用戶(即任播地址的發起方)瀏覽公司網頁時,與相同的單播地址建立一條連接,連接的對端是具有相同任播地址的多個服務器。用戶可以從不同的鏡像服務器分別下載html文件和圖片。用戶利用多個服務器的帶寬同時下載網頁文件,其效率遠遠高於使用單播地址進行下載。(分佈式
)
3. IPv6無狀態地址配置的過程
3.1 IPv6無狀態地址自動配置
網絡節點向相連的路由器發送RS,請求地址前綴信息。
路由器通過發送路由器通告RA,回覆地址前綴信息。
IPv6支持無狀態地址自動配置,無需使用諸如DHCP之類的輔助協議,主機即可獲取IPv6前綴並自動生成接口ID。路由器發現功能是IPv6地址自動配置功能的基礎,主要通過以下兩種報文實現:
RA報文:每臺路由器爲了讓二層網絡上的主機和其它路由器知道自己的存在,定期以組播方式(FF02::1 所有主機)發送攜帶網絡配置參數的RA報文。RA報文的Type字段值爲134
。
RS報文:主機接入網絡後可以主動發送RS報文。RA報文是由路由器定期發送的,但是如果主機希望能夠儘快收到RA報文,它可以立刻主動發送RS報文給路由器。網絡上的路由器收到該RS報文後會立即向相應的主機單播迴應
RA報文,告知主機該網段的默認路由器和相關配置參數。RS報文的Type字段值爲133
。
3.2 EUI-64規範
將FFFE插入MAC地址的前24位與後24位之間,並將第7位的值取反(比如0改爲1)即可生成接口ID。
爲了通過IPv6網絡進行通信,各接口必須獲取有效的IPv6地址,以下三種方式可以用來配置IPv6地址的接口ID:
- 網絡管理員手動配置;
- 通過系統軟件生成;
- 採用擴展唯一標識符(EUI-64)格式生成。
就實用性而言,EUI-64格式是IPv6生成接口ID的最常用方式。
IEEE EUI-64標準採用接口的MAC地址生成IPv6接口ID。MAC地址只有48位,而接口ID卻要求64位。MAC地址的前24位代表廠商ID,後24位代表製造商分配的唯一擴展標識。
MAC地址的第七高位是一個U/L位,值爲0時表示MAC地址全局唯一,值爲1時表示MAC地址本地唯一。
在MAC地址向EUI-64格式的轉換過程中,在MAC地址的前24位和後24位之間插入了16比特的FFFE
,並將U/L位的值從0變成了1
,這樣就生成了一個64比特的接口ID,且接口ID的值全局唯一。接口ID和接口前綴一起組成接口地址。
3.3 IPv6無狀態地址DAD檢查
當爲接口配置IPv6地址時,DAD用來在本地鏈路範圍內檢測將要使用的IPv6地址是否唯一
。
設備在給接口分配IPv6單播地址之前會進行重複地址檢測(DAD),確認是否有其它的節點使用了該地址。尤其是在地址自動配置的時候,進行DAD檢測是很必要的。一個IPv6單播地址在分配給一個接口之後且通過重複地址檢測之前稱爲試驗地址,
此時該接口不能使用這個試驗地址進行單播通信,但是仍然會加入兩個組播組:ALL-nodes組播組和Solicited-node組播組。Solicited-node組播組
由單播或任播地址的後24位加上地址前綴FF02:0:0:0:0:1:FF00::/104組成。
例如,本示例中配置的試驗地址爲2000::1,該地址被加入Solicited-node組播組FF02::1:FF00:1。
IPv6重複地址檢測技術和IPv4中的免費ARP類似
:用於地址分配或主機連接網絡時檢測重複的IPv4主機地址。
節點向一個自己將使用的試驗地址所在的Solicited-node組播組發送一個以該試驗地址爲請求的目標地址的鄰居請求**(NS)報文
,如果收到某個其它站點回應的鄰居通告(NA)報文
,就證明該地址已被網絡上使用,節點將不能使用該試驗地址進行通信。這種情況下,網絡管理員需要手動爲該節點分配另外一個地址。(回覆NA報文是告訴發送NS報文的主機,該節點已經被使用)**
4. IPv6過渡技術
4.1 雙協議棧技術
同時啓用v4與v6協議棧
雙棧技術
- 同時支持IPv6和IPv4協議
- 應用程序根據DNS解析地址類型選擇使用IPv6或IPv4協議
優點
互通性好,實現簡單,允許應用逐漸從IPv4過渡到IPv6
缺點
- 只適用雙棧節點本身
- 對每個IPv4節點都要升級,成本較大,沒有解決IPv4地址緊缺問題
4.2 隧道技術
v6報文封裝在v4中(主流技術)
4.2.1 GRE隧道技術
IPv6報文被包含在GRE報文中作爲GRE的載荷
優點
- 通用性好
- 技術成熟,易於理解
缺點
維護複雜
GRE隧道流程
- 發送方與接收方
都是雙棧設備
- 隧道已預先建立好
- 發送方封裝報文,接收方解封裝
4.2.2 IPv6 in IPv4隧道技術
IPv6報文被包含在IPv4報文中作爲IPv4的載荷(沒有GRE的封裝)
同GRE隧道有類似的優缺點
6to4隧道流程
- 同自動隧道技術類似6to4中繼
- 通往純IPv6網絡的網關
4.2.3 ISATAP隧道技術
連接IPv4網點內部的IPv6主機和路由器
將IPv4網點作爲一個NBMA鏈路,在IPv4報文中封裝IPv6報文
優點
IPv4網點內部的IPv6主機可自動獲得IPv6前綴
缺點
IPv6地址爲固定格式
4.3 網絡地址轉換
NAT-PT
NAT-PT原理
- 通過中間的
NAT-PT協議轉換服務器
,實現純IPv6節點和純IPv4節點間的互通- NAT-PT服務器分配動態IPv4地址來標識IPv6主機(與DNS配合)
- NAT-PT服務器向相鄰IPv6網絡宣告96位地址前綴信息,用於標識IPv4主機
- NAT-PT服務器負責IPv4-to-IPv6,或IPv6-to-IPv4的報文轉換
優點
只需設置NAT-PT服務器
缺點
資源消耗較大,服務器負載重
NAT-PT種類
靜態NAT-PT
- NAT-PT服務器提供
一對一的IPv6地址和IPv4地址的映射
。- 配置複雜,使用大量的IPv4地址。
動態NAT-PT
- NAT-PT服務器提供
多對一的IPv6地址和IPv4地址的映射
。- 採用上層協議複用的方法。
NAT-PT DNS ALG
- 動態NAT-PT與DNS ALG聯合使用,轉換DNS請求。
- 可利用原有的DNS服務器。
4.3.1 靜態NAT-PT轉換過程
4.3.2 動態NAT-PT轉換過程
4.3.3 NAT-PT DNS ALG轉換過程
5. 常見問題
IPv6主機無狀態地址自動配置的過程是什麼?
IPv6主機首先通過路由器發現功能來獲取地址前綴信息,之後通過向接口已有的48比特MAC地址中插入16比特的FFEE生成接口ID,在生成了IPv6地址後會通過重複地址檢測來確認地址是否唯一。(DAD檢查)
二、 二層交換
分享今日:
引入博客:
二層交換技術
二層交換特點
二層交換(二層通信):交換幀,源和目的MAC地址不會變,但是涉及到路由器(或者具有三層轉發功能的交換機)源MAC地址會改變。
**廣播域:**接收同樣廣播消息的節點的集合;
**衝突域:**連接在同一條線上所有工作站的集合;
區別:
- 廣播域可以劃分網段,衝突域一般在同一個網段;
- 廣播域基於二層,衝突域基於一層;
- 一個局域網就是一個廣播域;
- 集線器(hub)所有端口位於同一個廣播域,衝突域;
- 二層交換機(switch)所有端口在一個廣播域,每一個端口是一個衝突域;
1. 二層交換基礎
1.1 園區網三層結構
-
核心層(CO):高速轉發、服務器接入、
路由選擇
-
匯聚層(GS):流量匯聚、鏈路冗餘、設備冗餘、路由選擇
-
接入層(AS):用戶接入、接入安全、訪問控制
1.2 二層交換機主要功能
- 泛洪:把一個幀從除了進入端口外的所有端口轉發出去;
- 轉發:從某一端口轉發到另一端口;
- 丟棄:不進行轉發,直接丟棄;
1.3 交換機轉發原理
1.3.1 單播轉發
- 收到一個單播幀,交換機
會在Mac地址表中查找這個幀的目的Mac地址
,找不到直接泛洪; - 若找到,先與入接口進行比較;如果與入接口相同,丟棄,如果不同,轉發。
1.3.2 廣播轉發
不會查找Mac地址,直接轉發。
1.3.3 組播轉發
1.4 PC與交換機收到單播與廣播幀
1.4.1 PC 收到
- **單播幀:**將單播幀的目的MAC地址
與自己網卡MAC地址進行比較
,如果與本地網卡MAC地址一致,則根據單播幀的類型字段的值將數據載荷上傳到網絡層的相應處理模塊,如果不一致直接丟棄。(先與本地MAC比較再上送) - 廣播幀:直接根據該廣播幀的類型字段類型直接上送至網絡層的相應模塊處理。(直接上送)
1.4.2 交換機收到
- 單播幀:不會與本地比較MAC地址,而是直接去查Mac地址表
- 廣播幀:直接泛洪。
2. VLAN
2.1 VLAN作用
- 將交換機的端口劃分進特定的VLAN(不同的廣播域);
- 通常把劃分前的,規模較大的廣播域稱爲LAN,吧劃分後,規模較小的廣播域稱爲VLAN。
2.2 802.1Q幀格式
-
IEEE 802.1D定義了不支持VLAN特性交換機的標準規範,IEEE 802.1Q定義了關於支持VLAN特性的交換機標準;
-
通過tag區分不同VLAN;
標籤 | 含義 |
---|---|
TPID | Tag Protocol ID,表示這個幀是否有tag,0x8100表示帶有Tag(固定值) |
PRI | Priority,幀優先級,越大越優先 |
CFI | Canoncial Format Indicator |
VID | VLAN Identification,表示該幀所屬VLAN |
2.3 鏈路類型
VLAN鏈路分爲兩種類型:Access鏈路
和Trunk鏈路
。
接入鏈路(Access Link):連接用戶主機和交換機的鏈路稱爲接入鏈路;在一條Access鏈路上運動的幀**只能是Untagged 幀
。
幹道鏈路(Trunk Link):連接交換機和交換機、交換機與路由器的鏈路稱爲幹道鏈路,在一條trunk鏈路上運動的幀只能是tagged 幀
**。
2.4 PVID
PVID即Port VLAN ID,代表端口的缺省VLAN
。交換機從對端設備收到的幀有可能是Untagged的數據幀,但所有以太網幀在交換機中都是以Tagged的形式來被處理和轉發的,因此交換機必須給端口收到的Untagged數據幀添加上Tag。爲了實現此目的,必須爲交換機配置端口的缺省VLAN。當該端口收到Untagged數據幀時,交換機將給它加上該缺省VLAN的VLAN Tag。
2.5 端口類型☆☆☆
2.5.1 Access 端口
收到幀:Access端口在收到數據後會添加VLAN Tag,VLAN ID和端口的PVID相同
。
發出幀:Access端口在轉發數據前會移除VLAN Tag
。
Access端口收發數據幀的規則如下:
- 如果該端口收到對端設備發送的幀是untagged(不帶VLAN標籤),交換機將強制加上該端口的PVID。(因爲因特網上交換機中所有幀都帶有Tag,所以加上默認tag)
- 如果該端口收到對端設備發送的幀是tagged(帶VLAN標籤),交換機會檢查該標籤內的VLAN ID。
當VLAN ID與該端口的PVID相同時,接收該報文
。當VLAN ID與該端口的PVID不同時,丟棄該報文
。 - Access端口發送數據幀時,總是先剝離幀的Tag,然後再發送。Access端口發往對端設備的以太網幀永遠是不帶標籤的幀。(Access接口與PC相連接,PC不會接受有Tag標記的幀,直接丟棄)
2.5.2 Trunk 端口
- 當一條鏈路,需要承載多VLAN信息的時候,需使用trunk來實現;
- Trunk兩端的交換機需採用相同的幹道協議;
- 一般見於交換機之間或交換機與路由器之間;
在本示例中,SWA和SWB連接主機的端口爲Access端口,PVID如圖所示。SWA和SWB互連的端口爲Trunk端口,PVID都爲1,此Trunk鏈路允許所有VLAN的流量通過。當SWA轉發VLAN1的數據幀時會剝離VLAN標籤,然後發送到Trunk鏈路上。而在轉發VLAN20的數據幀時,不剝離VLAN標籤直接轉發到Trunk鏈路上。
每一個Trunk 除了需要配置PVID之外還需要配置,允許通過VLAN ID的列表。
Trunk端口收發數據幀的規則如下:
- 當接收到對端設備發送的不帶Tag的數據幀時,會添加該端口的PVID,如果PVID在允許通過的VLAN ID列表中,則接收該報文,否則丟棄該報文。
- 當接收到對端設備發送的帶Tag的數據幀時,檢查VLAN ID是否在允許通過的VLAN ID列表中。如果VLAN ID在接口允許通過的VLAN ID列表中,則接收該報文。否則丟棄該報文。
- 端口發送數據幀時,當VLAN ID與端口的PVID相同,且是該端口允許通過的VLAN ID時,去掉Tag,發送該報文。當VLAN ID與端口的PVID不同,且是該端口允許通過的VLAN ID時,保持原有Tag,發送該報文。(
PVID 與 VLAN ID相同去掉Tag,不同保持原有Tag
)
2.6 VLAN 的類型(劃分方法)
2.6.1 基於端口的VLAN(Port-based VLAN)
基於端口的VLAN通常也被稱爲物理層VLAN或一層VLAN
。
劃分原則: 將VLAN編號(VLAN ID)映射到物理端口上,從某一個端口進入交換機的、由終端計算機發送的Untagged 幀都被劃分到該端口的VLAN ID 所表明的那個VLAN。(物理端口與VLAN ID的映射
)
2.6.2 基於Mac地址的VLAN(MAC-based vlan )
基於Mac地址的VLAN也被稱爲二層VLAN
。
**劃分原則:**交換機內部維護了一個MAC地址與VLAN ID的對應表,當交換機接收到計算機的Unragged幀時,交換機分析幀中的源Mac地址,然後查詢對應表,並根據對應關係把這個幀劃分到相應的VLAN中。(MAC地址與VLAN ID的映射
)
2.6.3 基於協議的VLAN(Protoclo-based VLAN)
基於協議的VLAN也被稱爲三層VLAN
。
劃分原則:交換機根據發送的 Untagged 幀的類型字段來決定幀的VLAN歸屬。(協議類型與VLAN ID映射
)
例如:ipv4劃分一個VLAN,ipv6劃分一個VLAN。
2.7 VLAN 的範圍
VLAN ID | 範圍 | 用途 | 是否通過VTP傳播 |
---|---|---|---|
0和4095 | 保留 | 用戶不能使用 | 不適用 |
1 | 常規範圍 | 默認VLAN,不可刪除 | 是 |
2-1000 | 常規範圍 | 用戶能夠創建、使用和刪除 | 是 |
1001 | 常規範圍 | 用戶不能創建、使用和刪除 | 是 |
1002-1005 | 保留 | FDDI和令牌環 | 不適用 |
1006-1009 | 保留 | 不適用 | |
1010-1024 | 保留 | 不適用 | |
1025-4094 | 保留 | 有限使用 | 否 |
2.8 VLAN成員模式
2.8.1 靜態 VLAN
- 交換機上的端口以
手動方式
分配給VLAN;
2.8.2 動態 VLAN
- 使用
VMPS
可以根據連接到交換機端口的設備的源 MAC 地址,動態地將端口分配給 VLAN; - 華爲使用
GVRP
3. VTP(VLAN Trunking Protocol)
- 一個能夠宣告VLAN配置信息的信息系統;
- 通過一個共有的管理域,維持VLAN配置信息的一致性;
- VTP只能在trunk端口發送要宣告的信息;
- 支持混合的介質主幹連接(快速以太網, FDDI, ATM).
3.1 VTP 模式
Server 模式 | Client | Transparent |
---|---|---|
創建vlan | 發送/轉發信息宣告 | 創建VLAN |
修改vlan刪除vlan | 同步 | 刪除VLAN |
發送/轉發信息宣告 | VLAN信息不會存貯於NVRAM | 刪除VLAN |
同步 | 轉發信息宣告 | |
VLAN信息存儲於NVRAM | 不同步 不始發 | |
Catalyst交換機默認是 | VLAN信息存貯於NVRAM | |
server模式 |
3.2 VTP的運作
- VTP協議通過組播地址01-00-0C-CC-CC-CC在Trunk鏈路上發送VTP通告;
- VTP Server和clients通過最高的修訂號來同步數據庫;
- VTP協議每隔5分鐘發送一次VTP通告或者有變化時發生;
4. VLAN間路由☆☆☆
VLAN的侷限:VLAN在分割廣播域的同時也限制了不同VLAN間的主機進行二層通信的能力。
4.1 雙臂路由(每個VLAN一個物理連接)
在二層交換機上配置VLAN,每一個VLAN使用一條獨佔的物理鏈路連接到路由器的一個接口上。(一個VLAN一個接口
)
缺陷: 隨着每個交換機上VLAN數量的增加,這樣做必然需要大量的路由器接口,而路由器的接口數量是極其有限的。並且,某些VLAN之間的主機可能不需要頻繁進行通信,如果這樣配置的話,會導致路由器的接口利用率很低
。因此,實際應用中一般不會採用這種方案來解決VLAN間的通信問題。
4.2 單臂路由
在交換機和路由器之間僅使用一條物理鏈路連接。在交換機上,把連接到路由器的端口配置成Trunk類型
的端口,並允許相關VLAN的幀通過。在路由器上需要創建子接口
,邏輯上把連接路由器的物理鏈路分成了多條。一個子接口代表了一條歸屬於某個VLAN的邏輯鏈路。(創建子接口
)
配置子接口時,需要注意以下幾點:
- 必須爲
每個子接口分配一個IP地址
。該IP地址與子接口所屬VLAN位於同一網段; - 需要在子接口上配置
802.1Q封裝
,來剝掉和添加VLAN Tag,從而實現VLAN間互通; - 在子接口上使能子接口的
ARP廣播功能
; - 子接口G0/0/1.1 與 G0/0/1.2 的
MAC地址是一樣的都是G0/0/1的MAC地址
;
缺點: 如果VLAN數量衆多,VLAN間的通信流量很大時,單臂路由提供的帶寬就無法支撐這些流量。
4.3 三層交換(VLANIF接口)☆☆☆
三層交換機:是二層交換機與路由器的一種集成形式,它除了可以擁有一些二層口之外,還可以擁有一些“混合端口”(簡稱:混合口)
。混合口同時存在二層口和三層口的特徵,所以在VLAN Interface(VLAN IF)接口下,既要考慮二層口的情況又要考慮三層口的情況。
-
在三層交換機上配置
VLANIF接口
來實現VLAN間路由; -
如果網絡上有多個VLAN,則需要給
每個VLAN配置一個VLAN IF接口
,並給每個VLAN IF接口配置一個IP地址
; -
用戶設置的
缺省網關就是三層交換機中VLAN IF接口的IP地址
;此時的VLANIF接口是三層口,但是平時交換機的是二層口。
4.3.1 二層口與三層口的區別☆☆☆
- 二層口只有Mac地址沒有ip地址;三層口既有IP地址又有MAC地址;
- 二層口收到廣播幀後,會將該廣播幀從其他所有接口泛洪出去;
- 三層口收到廣播幀後,會根據這個廣播幀的類型字段的值將這個廣播幀的數據載荷上送至設備的第三層模塊處理;
- 二層口接收到單播幀後,先在自己的Mac地址表中查找這個幀的目的MAC地址,如果查不到,該設備會從其他二層接口泛洪出去;如果查到,會比較這個MAC地址所指示的那個二層接口是不是進入該設備的二層接口,如果是,直接丟棄;如果不是,則會從這個MAC地址對應的二層接口轉發出去;
- 三層口接收到單播幀後,會比較這個幀的目的MAC地址是不是本地MAC地址,如果不是,直接丟棄;如果是,會根據這個單播幀的類型字段的值將這個單播幀的數據載荷上送至設備的第三層模塊處理;
4.3.2 交換機與路由器的區別☆☆
- 交換機的端口都是二層口,一臺交換機的不同二層口之間只存在二層轉發通道,不存在三層轉發通道。交換機內存在MAC地址表,用以二層轉發,交換機不存在IP路由表;
- 路由器的端口都是三層口,一臺路由器的不同二層口之間只存在三層轉發通道,不存在二層轉發通道。路由器內存在IP路由表表,用以三層轉發,路由器不存在MAC地址表;
三、STP 生成樹協議
分享今日:
參考博客鏈接:
思維導圖:
1. 環路問題
1.1 廣播風暴
**產生原因:**根據交換機的轉發原則,如果交換機從一個端口上接收到的是一個廣播幀
,或者是一個目的MAC地址未知的單播幀
,則會將這個幀向除源端口之外的所有其他端口轉發。如果交換網絡中有環路,則這個幀會被無限轉發,此時便會形成廣播風暴,網絡中也會充斥着重複的數據幀。
本例中,主機A向外發送了一個單播幀,假設此單播幀的目的MAC地址在網絡中所有交換機的MAC地址表中都暫時不存在。SWB接收到此幀後,將其轉發到SWA和SWC,SWA和SWC也會將此幀轉發到除了接收此幀的其他所有端口,結果此幀又會被再次轉發給SWB,這種循環會一直持續,於是便產生了廣播風暴。交換機性能會因此急速下降,並會導致業務中斷。
1.2 MAC地址表翻轉
產生原因:交換機是根據所接收到的數據幀的源地址和接收端口
生成MAC地址表項的。
- 主機A向外發送一個單播幀,假設此單播幀的目的MAC地址在網絡中所有交換機的MAC地址表中都暫時不存在。SWB收到此數據幀之後,在MAC地址表中生成一個MAC地址表項,00-05-06-07-08-AA,對應端口爲G0/0/3,並將其從G0/0/1和G0/0/2端口轉發。
此例僅以SWB從G0/0/1端口轉發此幀爲例進行說明。
- SWA接收到此幀後,由於MAC地址表中沒有對應此幀目的MAC地址的表項,所以SWA會將此幀從G0/0/2轉發出去。
- SWC接收到此幀後,由於MAC地址表中也沒有對應此幀目的MAC地址的表項,所以SWC會將此幀從G0/0/2端口發送回SWB,也會發給主機B。
- SWB從G0/0/2接口接收到此數據幀之後,會在MAC地址表中刪除原有的相關表項,生成一個新的表項,,00-05-06-07-08-AA,對應端口爲G0/0/2。此過程會不斷重複,從而導致MAC地址表震盪。
1.3 多幀複製
PC2向PC1發送一個單播幀Y,假設S2的MAC地址表中不存在關於PC1的MAC地址表項,所以S2會對Y幀進行泛洪。假設S1的MAC地址表項中存在“PC1的MAC地址<——>port 3
” ,S3的MAC地址表項中存在“PC1的MAC地址<——>port 1
” ,顯然,S1,S3都會對Y幀進行點對點轉發操作。最後的結果是PC1 會收到兩份Y幀的拷貝。
2. STP 作用
STP通過阻塞端口來消除環路,並能夠實現鏈路備份的目的。
2.1 作用
**消除環路:**通過阻斷冗餘鏈路來消除網絡中可能存在的環路。
**鏈路備份:**當活動路徑發生故障時,激活備份鏈路,及時恢復網絡連通性。
2.2 基本術語
2.2.1 橋(Bridge)
橋和交換機這兩個術語是互用的。
2.2.2 橋MAC地址
一個橋有多個轉發端口,一個端口有一個MAC地址。通常把編號最小的那個端口MAC地址作爲橋的MAC地址。
2.2.3 橋 ID(BID)
-
一個橋的橋ID由兩部分組成,2字節的橋優先級和6字節的橋MAC地址。
-
橋優先級可以人爲指定,缺省值爲0x8000(相當於32768)。
2.2.4 端口 ID(PID)
端口ID有兩種定義方式,不同廠家採用的 PID 定義方式不同,同樣端口優先級也是可以人爲指定的,缺省情況下,端口優先級是128
。
- PID 由兩字節組成,第一個字節表示端口優先級,後一個字節是端口編號;
- PID 由16 bits組成,前4 bit表示端口優先級,後12bit表示端口編號;
3. STP 樹的生成
STP通過構造一棵樹來消除交換網絡中的環路。
- 每個STP網絡中,都會存在一個根橋,其他交換機爲非根橋。根橋或者根交換機位於整個邏輯樹的根部,是STP網絡的邏輯中心,非根橋是根橋的下游設備。當現有根橋產生故障時,非根橋之間會交互信息並重新選舉根橋,交互的這種信息被稱爲BPDU。BPDU中包含交換機在參加生成樹計算時的各種參數信息;
- STP中定義了三種端口角色:指定端口,根端口和預備端口。
- 指定端口是交換機向所連網段轉發配置BPDU的端口,
每個網段有且只能有一個指定端口
。一般情況下,根橋的每個端口總是指定端口。 - 根端口是非根交換機去往根橋路徑最優的端口。在一個運行STP協議的交換機上最多隻有一個根端口,但
根橋上沒有根端口
。 - 如果一個端口既不是指定端口也不是根端口,則此端口爲預備端口。
預備端口將被阻塞
。
STP樹生成過程:
- 選舉一個根橋。
- 每個非根交換機選舉一個根端口。
- 每個網段選舉一個指定端口。
- 阻塞非根、非指定端口。
3.1 選舉根橋
**選取原則:**橋優先級是可以配置的,取值範圍是0~65535,默認值爲32768。優先級最高的設備(數值越小越優先)
會被選舉爲根橋。如果優先級相同,則會比較MAC地址,MAC地址越小則越優先
。(先比優先級——>MAC地址)
交換機啓動後就自動開始進行生成樹收斂計算。**默認情況下,所有交換機啓動時都認爲自己是根橋,自己的所有端口都爲指定端口,這樣BPDU報文就可以通過所有端口轉發。**對端交換機收到BPDU報文後,會比較BPDU中的根橋ID和自己的橋ID。如果收到的BPDU報文中的橋ID優先級低,接收交換機會繼續通告自己的配置BPDU報文給鄰居交換機。如果收到的BPDU報文中的橋ID優先級高,則交換機會
修改自己的BPDU報文的根橋ID字段,宣告新的根橋
。
3.2 確定根端口
-
根橋確定後,其他沒有稱爲根橋的交換機都被稱爲非根橋。
-
非根交換機在選舉根端口時分別依據該端口的根路徑開銷、對端BID(Bridge ID)、對端PID(Port ID)和本端PID。
-
每個非根橋都要選舉一個根端口。根端口是距離根橋最近的端口,這個最近的衡量標準是靠路徑開銷來判定的,即路徑開銷最小的端口就是根端口。
-
根端口是根橋與非根橋之間進行報文交互的端口。一臺非根橋設備上只有一個根端口。
根路徑開銷: 交換機的某個端口到根橋的累計路徑開銷(即從該端口到根橋所經過的所有鏈路的路徑開銷的和
)稱爲這個端口的根路徑開銷(Root Path Cost,RPC)
思科路徑開銷:
Link Speed | Cost (New IEEE Specification) | Cost (Old IEEE Specification) |
---|---|---|
10 Gb/s | 2 | 1 |
1 Gb/s | 4 | 1 |
100 Mb/s | 19 | 10 |
10 Mb/s | 100 | 100 |
華爲路徑開銷:
端口速率 | 路徑開銷(IEEE 802.1t標準) |
---|---|
10 Gbit/s | 2 000 |
1 Gbit/s | 20 000 |
100 Mbit/s | 200 000 |
10 Mbit/s | 2 000 000 |
3.2.1思科選取根端口優先順序
- 選擇最低的BID;
- 選擇最低的路徑開銷(一定是到跟橋的路徑);
- 選擇最低發送者的BID;
- 選擇最低端口優先級;
- 選擇最低端口的PID;
3.2.2 華爲選取根端口優先順序
- 端口收到一個BPDU報文後,抽取該BPDU報文中根路徑開銷字段的值,加上該端口本身的端口開銷即爲本端口路徑開銷。如果有兩個或兩個以上的端口計算得到的
累計路徑開銷
相同,那麼選擇收到發送者BID最小的那個端口
作爲根端口。
- 如果兩個或兩個以上的端口連接到同一臺交換機上,則選擇
發送者PID最小的那個端口
作爲根端口。如果兩個或兩個以上的端口通過Hub連接到同一臺交換機的同一個接口上,則選擇本交換機的這些端口中的PID最小
的作爲根端口。
3.3 確定指定端口
每個網段都應該有一個指定端口,根橋的所有端口都是指定端口(除非根橋在物理上存在環路)。
3.3.1 思科設備指定端口比較
- 最低的根橋ID
- 最低的根路徑代價
- 最低發送者橋ID
- 最低端口ID
3.3.2 華爲設備指定端口比較
- 根路徑開銷
- 端口所在交換機橋ID(BID)
- 端口ID(PID)
指定端口的選舉也是首先比較累計路徑開銷,累計路徑開銷最小的端口就是指定端口。如果累計路徑開銷相同,則比較端口所在交換機的橋ID,所在橋ID最小的端口被選舉爲指定端口。如果通過累計路徑開銷和所在橋ID選舉不出來,則比較端口ID,端口ID最小的被選舉爲指定端口。
3.4 阻塞備用端口
未被選舉爲根端口或指定端口的端口爲預備端口,將會被阻塞。
網絡收斂後,只有指定端口和根端口可以轉發數據
。其他端口爲預備端口,被阻塞,不能轉發由終端計算機產生併發送的數據幀,但是可以接受並處理STP協議幀。只能夠從所連網段的指定交換機接收到BPDU報文,並以此來監視鏈路的狀態。
4. STP 報文格式
-
STP通過交換STP協議幀來建立和維護STP樹,在網絡拓撲發生變化的時候重建新的STP樹。
-
STP協議幀是組播幀,組播地址爲01-80-c2-00-00-00☆☆☆
-
STP協議幀有采用IEEE802.3封裝,有兩種格式:
Configuration BPDU
和TCN BPDU
4.1 Configuration BPDU
初始STP樹的過程中,各STP交換機都會週期性(2s)
主動發送Configuration BPDU。
在STP 穩定後只有根橋週期性發送Configuration BPDU;非根橋會在根端口收
到根橋發來的Configuration BPDU,並觸發產生自己的Configuration BPDU,且從指定端口發
出。(根端口接收,指定端口發出)
4.1.1 BPDU報文格式:
BPDU攜帶的參數可以分爲三類:
- 第一類BPDU自身標識,包括協議標識、版本號、、BPDU類型和flags;
- 第二類是用於STP計算的參數,包括交換機BID,點前根橋BID,發送BPDU的PID和RPC;
- 第三類是時間參數;
字段 | 字節數 | 說明 |
---|---|---|
protocol identifier | 2 | 總是 0x0000 |
protocol version identifier | 1 | 總是 0x00 |
BPDU type | 1 | 0x00:Configuration BPDU 0x80:TCN BPDU |
Flags | 1 | 網絡拓撲變化標誌:僅使用了最高(TCA)最低(TC) |
根橋ID | 8 | 由根橋的優先級和MAC地址組成,每個STP網絡中有且僅有一個根橋 |
根路徑開銷 | 4 | 到根橋的最短路徑開銷 |
指定橋ID | 8 | 由指定橋的優先級和MAC地址組成 |
指定端口ID | 2 | 由指定端口的優先級和端口號組成 |
Message Age | 2 | 配置BPDU在網絡中傳播的生存期(每經過一個橋,-1) |
Max Age | 2 | 配置BPDU在設備中能夠保存的最大生存期(缺省20s ) |
Hello Time | 2 | 配置BPDU發送的週期(2s) |
Forward Delay | 2 | 端口狀態遷移的延時(缺省15s )。控制端口Listening和Learning狀態持續時間,缺省15s |
4.1.2 STP 計時器
- Hello Time是指運行STP協議的設備發送配置BPDU的時間間隔,用於檢測鏈路是否存在故障。交換機每隔Hello Time時間會向周圍的交換機發送配置BPDU報文,以確認鏈路是否存在故障。
當網絡拓撲穩定後,該值只有在根橋上修改纔有效
。 - Message Age是從根橋發送到當前交換機接收到BPDU的總時間,包括傳輸延時等。如果配置BPDU是根橋發出的,則Message Age爲0。實際實現中,配置BPDU報文
每經過一個交換機,Message Age增加1
。 - Forward Delay是指端口狀態遷移時間。STP生成樹需要一定的時間,如果選出來的根端口或者指定端口馬上進入轉發狀態的話,可能就會總成臨時工作環路。forward delay機制:
新選出來的根端口和指定端口需要經過兩倍的forward delay時間延時後纔可以進入用戶數據幀的轉發狀態
,保證此時工作拓撲已無環路。 - Max Age是指BPDU報文的老化時間,可在根橋上通過命令人爲改動這個值。Max Age通過配置BPDU報文的傳遞,可以保證Max Age在整網中一致。非根橋設備收到配置BPDU報文後,會將報文中的Message Age和Max Age進行比較:如果Message Age小於等於Max Age,則該非根橋設備會繼續轉發配置BPDU報文。如果Message Age大於Max Age,則該配置BPDU報文將被老化掉。該非根橋設備將直接丟棄該配置BPDU,並認爲是網絡直徑過大,導致了根橋連接失敗。
4.2 TCN BPDU
TCN BPDU是指下游交換機感知到拓撲發生變化時向上遊發送的拓撲變化通知。
TCN BPDU 只有三個字段:協議標識
,協議版本號
和類型
。
TCN BPDU工作流程:
如果網絡中某條鏈路發生故障,導致拓撲發上變化,位於故障點的交換機可以感知到變化,但是其他交換機無法感知。
- 位於故障點的交換機會以Hello Time爲週期通過
根端口
不斷向上遊交換機發送TCN BPDU,直到從上游交換機收到TCA 標誌置1的configuration BPDU; - 上游交換機收到TCN BPDU後,一方面通過指定端口回覆下游交換機
TCA置1的configuration BPDU
,一方面以hello time爲週期向上遊交換機發送TCN BPDU; - 根橋收到TCN BPDU後,發送
TC 置1 的configuration BPDU
通告所有交換機網絡拓撲發生變化; - 交換機收到TC標誌置1的configuration BPDU,便意識到網絡拓撲已經發生變化,說明自己MAC地址表項可能已經不正確。此時交換機會將MAC地址表的
老化週期(缺省300s)置縮短爲Forward relay
時間長度(缺省15s)。
5. STP 端口狀態
5.1 端口狀態
STP定義了五種端口狀態:去能狀態、阻塞狀態、偵聽狀態、學習狀態和轉發狀態。
端口狀態 | 說明 |
---|---|
去能(Disabled) | 無法接受發送任何幀,端口處於關閉狀態(Down) |
阻塞(Blocking) | 可以接受並分析STP協議幀,但是不能發送STP協議幀,也不能轉發用戶數據幀 |
偵聽(Listening) | 可以接受併發送STP協議幀,但是不能學習MAC地址,也不能轉發用戶數據幀 |
學習(Learning) | 可以接受併發送STP協議幀,可以學習MAC地址,也不能轉發用戶數據幀 |
轉發(Forwarding) | 可以接受併發送STP協議幀,可以學習MAC地址,同時也能轉發用戶數據幀 |
5.2端口狀態遷移
- 端口初始化或使能;
- 端口被選爲根端口或指定端口。
- 端口不再是根端口或指定端口。
- forward delay計時器超時(Listening和Learning之間轉換)。
- 端口禁用或鏈路失效。
-
STP在啓動的時候,端口狀態由
Disabled轉爲Blocking
,此時端口指定接收分析BPDU,不能發送; -
如果Blocking狀態端口被選爲根端口或者指定端口,會
進入Listening
狀態,此時端口接收併發送BPDU,這種狀態會持續一個Forward Delay時間(缺省15s)
; -
沒有意外情況回到Blocking,端口會
進入Learning
狀態,並持續一個Forward Delay時間(缺省15s)
,此時端口可以收發BPDU,同時構建MAC地址表,爲轉發用戶數據幀做準備; -
沒有意外,端口
進入Forwarding
狀態,開始用戶數據幀轉發工作; -
狀態遷移過程中,一旦端口被關閉或者出現鏈路故障,進入去能狀態;
-
狀態遷移過程中,一旦端口不再是根端口或者指定端口,進入阻塞狀態;
5.3 端口狀態轉換舉例
- 假設交換機S1,S2,S3同一時間啓動。各個交換機從Disabled進入Blocking狀態。由於處於Blocking狀態只能接受分析BPDU,不能發送,所以任何端口都收不到BPDU。
等待MAX Age(缺省20s)
時間後,每臺交換機都會認爲自己是根橋,每個端口都是指定端口,端口狀態遷移爲Listening;- 交換機進入learning狀態後就會開始發送自己的Configuration BPDU,同時也會受到其他交換機發送的Configuration BPDU。
- 假設S2先發送Configuration BPDU,S3從自己的G 0/0/2端口收到後,發現S2 的BID比自己的小,於是認爲S2是根橋,將G0/0/2設置爲根端口,然後將自己重新產生的根橋設置爲S2的Configuration BPDU從G0/0/1端口發給S1;
- S1收到S3發來的BPDU後,發現自己的BID是最小的,認爲自己就是根橋。於是向S3發送Configuration BPDU,同樣的也會在G0/0/2 端口受到S2 的Configuration BPDU,也會從G0/0/2端口發送自己的BPDU給S2;
- 端口在listening狀態下
持續15s
,進入learning。此時S3的G0/0/2接口已經被阻塞。- 各個端口相繼進入Learning,持續
Forward time(15s)
後進入。在這段時間內構建MAC地址轉發表,爲用戶數據幀轉發做準備;- 各端口進入Forwarding狀態,開始轉發用戶數據幀。
6. STP 故障問題
6.1 根橋故障
- 在穩定的STP拓撲裏,非根橋會定期收到來自根橋的BPDU報文。
- 如果根橋發生了故障,停止發送BPDU報文,下游交換機就無法收到來自根橋的BPDU報文。
- 如果下游交換機一直收不到BPDU報文,
Max Age定時器就會超時(Max Age的默認值爲20秒)
,從而導致已經收到的BPDU報文失效,此時,非根交換機會互相發送配置BPDU報文,重新選舉新的根橋。根橋故障會導致50秒左右
☆☆☆的恢復時間,恢復時間約等於Max Age加上兩倍的Forward Delay收斂時間。(max age + 2*Forwarding relay)
6.2直連鏈路故障
- SWB檢測到直連鏈路物理故障後,會將預備端口轉換爲根端口;
- SWB新的根端口會在
30 秒後
恢復到轉發狀態。
此例中,SWA和SWB使用了兩條鏈路互連,其中一條是主用鏈路,另外一條是備份鏈路。生成樹正常收斂之後,如果SWB檢測到根端口的鏈路發生物理故障,則其Alternate端口會遷移到Listening、Learning、Forwarding狀態,經過兩倍的Forward Delay後恢復到轉發狀態。
6.3 非直連鏈路故障
非直連鏈路故障後,由於需要等待Max Age加上兩倍的Forward Delay時間,端口需要大約50秒才能恢復到轉發狀態。
本例中,SWB與SWA之間的鏈路發生了某種故障(非物理層故障),SWB因此一直收不到來自SWA的BPDU報文。
- 等待
Max Age定時器超時後
,SWB會認爲根橋SWA不再有效,並認爲自己是根橋,於是開始發送自己的BPDU報文給SWC,通知SWC自己作爲新的根橋。- 在此期間,由於SWC的Alternate端口再也不能收到包含原根橋ID的BPDU報文。其
Max Age定時器超時
後,SWC會切換Alternate端口爲指定端口並且轉發來自其根端口的BPDU報文給SWB。- 所以,Max Age定時器超時後,SWB、SWC幾乎同時會收到對方發來的BPDU。經過STP重新計算後,SWB放棄宣稱自己是根橋並重新確定端口角色。
- 非直連鏈路故障後,SWC的預備端口恢復到轉發狀態大約
需要50秒
。
6.4 拓撲改變導致MAC地址表錯誤
在交換網絡中,交換機依賴MAC地址錶轉發數據幀。缺省情況下,MAC地址表項的老化時間是300秒。如果生成樹拓撲發生變化,交換機轉發數據的路徑也會隨着發生改變,此時MAC地址表中未及時老化掉的表項會導致數據轉發錯誤,因此在拓撲發生變化後需要及時更新MAC地址表項。
本例中,SWB中的MAC地址表項定義了通過端口GigabitEthernet 0/0/3可以到達主機A,通過端口GigabitEthernet 0/0/1可以到達主機B。由於SWC的根端口產生故障,導致生成樹拓撲重新收斂,在生成樹拓撲完成收斂之後,從主機A到主機B的幀仍然不能到達目的地。這是因爲MAC地址表項老化時間是300秒,主機A發往主機B的幀到達SWB後,SWB會繼續通過端口GigabitEthernet 0/0/1轉發該數據幀。
6.5 拓撲改變導致MAC地址表變化
拓撲變化過程中,根橋通過TCN BPDU報文獲知生成樹拓撲裏發生了故障。根橋生成TC用來通知其他交換機加速老化現有的MAC地址表項。
拓撲變更以及MAC地址表項更新的具體過程如下:
- SWC感知到網絡拓撲發生變化後,會不間斷地向SWB發送TCN BPDU報文。
- SWB收到SWC發來的TCN BPDU報文後,會把配置BPDU報文中的Flags的
TCA位設置1
,然後發送給SWC,告知SWC停止發送TCN BPDU報文。 - SWB向根橋轉發TCN BPDU報文。
- SWA把配置BPDU報文中的Flags的
TC位設置爲1
後發送,**通知下游設備把MAC地址表項的老化時間由默認的300秒修改爲Forward Delay的時間(默認爲15秒)。**☆
最多等待15秒之後,SWB中的錯誤MAC地址表項會被自動清除。此後,SWB就能重新開始MAC表項的學習及轉發操作。
7. RSTP(STP 優化)
7.1 STP缺陷
STP生成樹收斂需要依賴定時器計時,端口狀態從Blocking到Forwarding至少需要兩個forward relay的時間長度,收斂時間太長,一般都需要幾十秒。IEEE 802.1w定義了RSTP(Rapid Spanning Tree Protocol)彌補了STP收斂時間慢的缺陷。
7.2 RSTP
7.2.1 RSTP端口角色
角色 | 描述 |
---|---|
Backup | Backup端口作爲指定端口的備份,提供了另外一條從根橋到非根橋的備份鏈路。 |
Alternate | Alternate端口作爲根端口的備份端口,提供了從指定橋到根橋的另一條備份路徑。 |
7.2.2 三種端口狀態
RSTP中定義了三種端口狀態:Discarding、Learning、Forwarding。
RSTP 端口狀態 | 對應STP端口狀態 | 說明 |
---|---|---|
Forwarding | Forwarding | 可以轉發用戶數據幀,可以學習MAC地址 |
Learning | Learning | 不可以轉發用戶數據幀,但是可以學習MAC地址 |
Discarding | Listening、Blocking、Disabled | 不可以轉發用戶數據幀,不可以學習MAC地址 |
7.2.3 P/A機制
在RSTP中,一個端口被指定成爲指定端口後,此端口會先進入discarding,然後通過**P/A(Proposal/Agreement)**機制主動與對端端口協商,通過協商後,就可以立即進入Forwarding狀態。
7.2.4 邊緣端口
- RSTP裏,位於網絡邊緣的指定端口被稱爲邊緣端口。
- 邊緣端口一般與用戶終端設備直接連接,不與任何交換設備連接。邊緣端口不接收配置BPDU報文,不參與RSTP運算,可以由Disabled狀態直接轉到Forwarding狀態,且不經歷時延,就像在端口上將STP禁用了一樣。但是,一旦邊緣端口收到配置BPDU報文,就喪失了邊緣端口屬性,成爲普通STP端口,並重新進行生成樹計算,從而引起網絡震盪。
7.2.5 RSTP收斂過程
RSTP BPDU:RSTP對此進行了改進,即在拓撲穩定後,無論非根橋設備是否接收到根橋傳來的配置BPDU報文,非根橋設備都會仍然按照Hello Timer規定的時間間隔發送配置BPDU,該行爲完全由每臺設備自主進行。
- 每一臺交換機啓動RSTP後,都認爲自己是“根橋”,並且發送RST BPDU。所有端口都爲指定端口,
處於Discarding狀態
。 - 交換機互相發送Proposal置位的
RST BPDU
。每個認爲自己是“根橋”的交換機生成一個RST BPDU報文來協商指定網段的端口狀態,此RST BPDU報文的Flags字段裏面的Proposal位需要置位。當一個端口收到RST BPDU報文時,此端口會比較收到的RST BPDU報文和本地的RST BPDU報文。如果本地的RST BPDU報文優於接收的RST BPDU報文,則端口會丟棄接收的RST BPDU報文,併發送Proposal置位的本地RST BPDU報文來回復對端設備。 - **交換機使用
同步機制
來實現端口角色協商管理。**當收到Proposal置位並且優先級高的BPDU報文時,接收交換機必須設置所有下游指定端口爲Discarding狀態。如果下游端口是Alternate端口或者邊緣端口,則端口狀態保持不變
。 - 當確認下游指定端口遷移到Discarding狀態後,設備發送RST BPDU報文回覆上游交換機發送的Proposal消息。在此過程中,端口已經確認爲根端口,因此RST BPDU報文Flags字段裏面設置了Agreement標記位和根端口角色。
- 在P/A進程的最後階段,上游交換機收到Agreement置位的RST BPDU報文後,指定端口立即從Discarding狀態遷移爲Forwarding狀態。然後,下游網段開始使用同樣的P/A進程協商端口角色。
7.2.6 鏈路故障/根橋失效
- 在STP中,當出現鏈路故障或根橋失效導致交換機收不到BPDU時,交換機需要等待Max Age時間後才能確認出現了故障。
- 而在RSTP中,如果交換機的端口在連續3次Hello Timer規定的時間間隔內沒有收到上游交換機發送的RST BPDU,便會確認本端口和對端端口的通信失敗,從而需要重新進行RSTP的計算來確定交換機及端口角色。
四、RSTP(STP 優化)
思維導圖:
1. STP缺陷
STP生成樹收斂需要依賴定時器計時,端口狀態從Blocking到Forwarding至少需要兩個forward relay的時間長度,收斂時間太長,一般都需要幾十秒。IEEE 802.1w定義了RSTP(Rapid Spanning Tree Protocol)彌補了STP收斂時間慢的缺陷。
2. RSTP
2.1 RSTP端口角色
角色 | 描述 |
---|---|
Backup | Backup端口作爲指定端口的備份,提供了另外一條從根橋到非根橋的備份鏈路。 |
Alternate | Alternate端口作爲根端口的備份端口,提供了從指定橋到根橋的另一條備份路徑。 |
2.2 三種端口狀態
RSTP中定義了三種端口狀態:Discarding、Learning、Forwarding
。
RSTP 端口狀態 | 對應STP端口狀態 | 說明 |
---|---|---|
Forwarding | Forwarding | 可以轉發用戶數據幀,可以學習MAC地址 |
Learning | Learning | 不可以轉發用戶數據幀,但是可以學習MAC地址 |
Discarding | Listening、Blocking、Disabled | 不可以轉發用戶數據幀,不可以學習MAC地址 |
2.3 P/A機制
在RSTP中,一個端口被指定成爲指定端口後,此端口會先進入discarding,然後通過**P/A(Proposal/Agreement)**機制主動與對端端口協商,通過協商後,就可以立即進入Forwarding狀態。
2.4 邊緣端口
- RSTP裏,位於網絡邊緣的指定端口被稱爲邊緣端口。
- 邊緣端口一般與用戶終端設備直接連接,不與任何交換設備連接。邊緣端口不接收配置BPDU報文,不參與RSTP運算,可以由Disabled狀態直接轉到Forwarding狀態,且不經歷時延,就像在端口上將STP禁用了一樣。但是,一旦邊緣端口收到配置BPDU報文,就喪失了邊緣端口屬性,成爲普通STP端口,並重新進行生成樹計算,從而引起網絡震盪。
2.5 RSTP收斂過程
RSTP BPDU:RSTP對此進行了改進,即在拓撲穩定後,無論非根橋設備是否接收到根橋傳來的配置BPDU報文,非根橋設備都會仍然按照Hello Timer規定的時間間隔發送配置BPDU,該行爲完全由每臺設備自主進行。
- 每一臺交換機啓動RSTP後,都認爲自己是“根橋”,並且發送RST BPDU。所有端口都爲指定端口,
處於Discarding狀態
。 - 交換機互相發送Proposal置位的RST BPDU。每個認爲自己是“根橋”的交換機生成一個RST BPDU報文來協商指定網段的端口狀態,此RST BPDU報文的Flags字段裏面的Proposal位需要置位。當一個端口收到RST BPDU報文時,此端口會比較收到的RST BPDU報文和本地的RST BPDU報文。如果本地的RST BPDU報文優於接收的RST BPDU報文,則端口會丟棄接收的RST BPDU報文,併發送Proposal置位的本地RST BPDU報文來回復對端設備。
- **交換機使用同步機制來實現端口角色協商管理。**當收到Proposal置位並且優先級高的BPDU報文時,接收交換機必須設置所有下游指定端口爲Discarding狀態。
如果下游端口是Alternate端口或者邊緣端口,則端口狀態保持不變
。 - 當確認下游指定端口遷移到Discarding狀態後,設備發送RST BPDU報文回覆上游交換機發送的Proposal消息。在此過程中,端口已經確認爲根端口,因此RST BPDU報文Flags字段裏面設置了Agreement標記位和根端口角色。
- 在P/A進程的最後階段,上游交換機收到Agreement置位的RST BPDU報文後,指定端口立即從Discarding狀態遷移爲Forwarding狀態。然後,下游網段開始使用同樣的P/A進程協商端口角色。
2.6 鏈路故障/根橋失效
- 在STP中,當出現鏈路故障或根橋失效導致交換機收不到BPDU時,交換機需要等待Max Age時間後才能確認出現了故障。
- 而在RSTP中,如果交換機的端口在連續3次Hello Timer規定的時間間隔內沒有收到上游交換機發送的RST BPDU,便會確認本端口和對端端口的通信失敗,從而需要重新進行RSTP的計算來確定交換機及端口角色。
思維導圖:
五、MSTP (多實例生成樹協議)
RSTP的缺陷:
RSTP在STP基礎上進行了改進,實現了網絡拓撲快速收斂。但由於局域網內所有的VLAN共享一棵生成樹,因此被阻塞後鏈路將不承載任何流量,無法在VLAN間實現數據流量的負載均衡,從而造成帶寬浪費。
關於MSTP的解釋:
- IEEE 802.1s發佈了MSTP(Multiple STP,多實例生成樹協議);
- MSTP 能夠兼容RSTP 和 STP
- 生成樹
不是基於VLAN運行的,是基於Instance(實例)
運行的。Instance是一個或多個VLAN的集合;
1. 單生成樹實例弊端
1.1 部分VLAN路徑不通
如圖所示,網絡中有SWA、SWB、SWC三臺交換機。配置VLAN2通過兩條上行鏈路,配置VLAN3只通過一條上行鏈路。
爲了解決VLAN2的環路問題,需要運行生成樹。在運行單個生成樹的情況下,假設SWC與SWB相連的端口成爲預備端口(Discarding狀態),那麼VLAN3的路徑就會被斷開,無法上行到SWB。
1.2 無法實現流量分擔
- 爲了實現流量分擔,需要配置兩條上行鏈路爲Trunk鏈路,允許通過所有VLAN;
- SWA和SWB之間的鏈路也配置爲Trunk鏈路,允許通過所有VLAN。將VLAN2的三層接口配置在SWA上,將VLAN3的三層接口配置在SWB上。
- 我們希望VLAN2和VLAN3分別使用不同的鏈路上行到相應的三層接口,但是如果連接到
SWB的端口成爲預備端口(Alternate Port)
並處於Discarding狀態,則VLAN2和VLAN3的數據都只能通過一條上行鏈路上行到SWA,這樣就不能實現流量分擔。
1.3 次優二層路徑
- 如圖所示,SWC與SWA和SWB相連的鏈路配置爲Trunk鏈路,允許通過所有VLAN;SWA與SWB之間的鏈路也配置爲Trunk鏈路,允許通過所有VLAN。
- 運行單個生成樹之後,環路被斷開,VLAN2和VLAN3都直接上行到SWA。
- 在SWA上配置VLAN2的三層接口,在SWB上配置VLAN3的三層接口,那麼,VLAN3到達三層接口的路徑就是次優的。
2. MSTP 原理
- 多生成樹協議即MSTP(Multiple Spanning Tree Protocol)。
- MST域是多生成樹域(Multiple Spanning Tree Region),由交換網絡中的多臺交換設備以及它們之間的網段所構成。
- 同一個MST域的設備具有下列特點:
-
都啓動了MSTP。
-
具有相同的域名。
-
具有相同的VLAN到生成樹實例映射配置。
-
具有相同的MSTP修訂級別配置。
- 一個MST域內可以生成多棵生成樹,每棵生成樹都稱爲一個
MSTI(Mulitiple Instance Spanning Tree Protocol)
,每個MSTI都使用單獨的RSTP算法,計算單獨的生成樹。 - 每個MSTI(MST Instance)都有一個
標識(MSTID)
,MSTID是一個兩字節的整數。一個Instance可以包含多個VLAN,但是一個VLAN只能屬於一個Instance。 - VLAN映射表是MST域的屬性,它描述了VLAN和MSTI之間的映射關係,MSTI可以與一個或多個VLAN對應,但一個VLAN只能與一個MSTI對應。
- MSTP兼容STP和RSTP,既可以快速收斂,又提供了數據轉發的各個冗餘路徑,在數據轉發過程中實現VLAN數據的負載均衡。
六、路由
1. 路由的概念
1.1 路由的基本概念
-
路由(route):是一個網絡層的術語,指從某一網絡設備出發去往某個目的地的路徑。
-
路由表(routing table):是若干條路由信息的集合,一條路由信息也被稱爲一個路由項或者一個路由條目。
-
被動路由協議(Routed protocols ):用來在路由器之間傳遞用戶的信息
-
主動路由協議(Routing protocols ):用於維護路由器的路由表
-
路由只存在終端計算機和路由器(以及三層交換機)中,二層交換機沒有。
-
如果一個路由項的下 一跳IP地址與出接口的IP地址相同,說明該出接口已經連接到了目的網絡,並且處於同一個二層網絡(二層廣播域)中。
1.2 路由表匹配
假設一個IP報文的目的IP地址是X
,路由器的某個路由表項的目的地/掩碼是z/y
,那麼如果x與y逐位相與
,與的結果爲等於Z,那麼這個IP報文就匹配上z/y這個路由表項;如果結果不等於Z那麼說明不匹配。
最長匹配原則:
當一個IP報文匹配上了多個路由項時,路由器根據“最長匹配原則”來確定一條最優路由,匹配的掩碼越多越優;
例如,目的地址爲2.1.0.1 的IP報文既能匹配上2.0.0.0/8 又能匹配上2.0.0.0/16,後者掩碼長度長優先匹配。
1.3 路由信息的來源
路由信息的生成方式有三種:直連路由(Direct Route),手工配置(Static Route),動態路由(Dynamic Route)。
1.3.1 直連路由
-
網絡設備啓動後,接口狀態變爲UP,設備就會自己去發現與自己接口直接相連的網絡的路由;
-
直連指的是這臺設備的接口已經位於這個網絡中;
-
對於直連路由,Cost值爲0;
R1 的路由表:
1.3.2 靜態路由
PC1 ping 12.0.0.1 和 12.0.0.2:只能Ping到R1路由器的接口,R2的接口不能ping通;
R1 R2配置靜態路由:
[R1]ip route-static 192.168.20.0 255.255.255.0 12.0.0.2
[R2]ip route-static 192.168.10.0 24 12.0.0.1
默認路由:
-
目的地/掩碼爲0.0.0.0
的路由稱爲默認路由或者缺省路由(Default Route),任何一個待發送或者待轉發的IP報文都可以和默認路由匹配上; -
如果默認路由是由路由協議產生的稱爲動態默認路由;
-
如果默認路由是由手工配置產生的稱爲靜態默認路由;
1.3.3 動態路由
- 網絡設備可以通過動態路由協議發現路由;
- 一臺路由器可以運行多種路由協議;
- 計算機不運行任何路由協議,計算機上只有一個IP路由表;
2. 路由的優先級
如果同時獲取去往同一個目的地/掩碼的三條不同路由,該怎樣轉發呢?
不同來源的路由規定了不同的優先級(Preference),並且優先級越小,則路由的優先級越高。(越小越優先
)
2.1 華爲路由的優先級
路由來源 | 優先級的缺省值 |
---|---|
直連路由 | 0 |
OSPF | 10 |
靜態路由 | 60 |
RIP | 100 |
BGP | 255 |
2.2 思科路由的優先級
Routing Protocols | AD | 備註 |
---|---|---|
直連接口 | 0 | |
關聯出接口的靜態路由 | 1 | Metric =0 |
關聯下一跳的靜態路由 | 1 | Metric =0 |
EIGRP 彙總路由 | 5 | |
外部 BGP | 20 | |
內部EIGRP | 90 | |
IGRP | 100 | |
OSPF | 110 | |
RIPv1、v2 | 120 | |
外部EIGRP | 170 | |
內部BGP | 200 |
3. 路由的開銷
-
一條路由的開銷指的是到達這條路由
目的地/掩碼
需要付出的代價值; -
同一種路由協議發現有多條路由可以到達同一個目的地/掩碼,選擇開銷最小的;
-
不同路由協議的開銷值不同,RIP是以“跳數”(經過路由器的個數)爲開銷,OSPF是以度量值(OSPF有多種度量方式)作爲開銷;
-
如果去往同一個目的地的路由協議不相同,那麼會先比較路由優先級,並將優先級最小的加入到路由表;
-
如果運行着相同的協議,去往同一個目的地/掩碼具有相同的跳數,也就是說代價(開銷)是相同的,稱爲等價路由;在這種情況下,兩條路有都會被添加進入路由表,並進行負載分擔。
R1,R2,R3都運行着RIP協議,R1去往PC有兩條路由。
一條需要3跳(中途經過R123三臺路由器);一條需要兩跳(中途經過R12兩臺路由)
4. 計算機上的路由表和路由器上的路由表
- 計算機上的IP路由表規
模一般比較小
,通常只包含10,20條路由;- 計算機不運行任何路由協議,所以計算機的IP路由表中的路由要麼是
直連路由
,要麼是手工配置的靜態路由
,或者是操作系統代替我們手工配置
的各種路由;
- 計算機不運行任何路由協議,所以計算機的IP路由表中的路由要麼是
- 路由器上的IP路由表可能又幾條,幾十條,幾百,幾千,幾萬,甚至上百萬級別條路由;
5. Loopback接口
- Loopback接口,也叫回環口,是一個
邏輯的、虛擬的接口
- 創建完成後即可爲接口配置IP地址
- Loopback接口在手工創建後,除非人爲shutdown,否則不會DOWN掉
- Loopback接口常用於
- 模擬路由器的直連網段,可用於測試
- 可用於設備管理(Loopback接口比較穩定)
- 供其他協議使用,例如OSPF、BGP、MPLS等
- 其他用途(Loopback接口的用途十分廣泛)
七、RIP
思維導圖:
1. 路由協議基礎
1.1 自治系統(AS)
自治系統(Autonomous System,AS):在網絡中一個自治系統指的是若干個二層網絡及若干路由器組成的集合
,集合中的這些網絡和這些路由器屬於同一個管理機構。規模大小不同,一個 internet 可以包含一個或多個AS。
1.2 路由協議分類
- 路由協議分爲兩大類,一類是
IGP(Interior Gateway Protocol,內部網關協議)
,一類是EGP(Exterior Gateway Protocol ,外部網關協議 )
。 - IGP成員有
RIP(Routing Information Protocol)
,OSPF(Open Shortest Path First)
,IS-IS(Intermediate System to Intermediate System)
等; - EGP成員雖然也有若干個協議,但是目前使用的就只有一個
BGP(Border Gateway Protocol)
。
2. RIP協議基本原理
-
RIP是一種基於
距離矢量(Distance Vector,簡稱DV)
算法的IGP協議,其協議的優先級爲100(華爲),120(思科); -
以“跳數”作爲開銷,所謂“跳數”就是到達目的地需要經過的路由器個數,跳數>=16時視爲不可達路由,使得RIP只能應用於小規模的網絡;
-
週期性更新路由表,即使在穩定狀態下,路由交換過程仍然會繼續進行;
3. RIP路由表形成
一臺路由器在創建RIP路由表初期,RIP路由表中只包含直連路由。隨後路由器會不斷接收從鄰居發來的路由信息,並根據這些路由信息來完善自己的路由表。同時路由器會每隔30s
向鄰居路由器發起更新請求。
4. RIP消息格式
-
RIP的消息格式有兩種:一種是RIP請求消息(Request),另一種是RIP響應消息(Response);
-
RIP路由器發送請求消息給鄰居路由器,鄰居路由器收到後就會立即發送響應消息給鄰居路由器;
-
RIP路由器可以隨時向鄰居發出請求消息;
-
RIP路由器總是會
每隔30s週期性
向鄰居路由器發送響應消息;RIP請求消息有兩種:
- 請求消息用來請求關於某一些指定的路由信息;
- 請求關於整個RIP網絡的路由信息,
RIP剛剛啓動的時候應該是採用第二種RIP請求消息
;
5. RIP-1與RIP-2
RIP協議有兩個版本,RIP-1和RIP-2,基於UDP協議,使用的端口號爲520
。
5 .1RIP-1的報文格式
RIP-1報文由頭部(Header)和多個路由表項(Route Entries)部分組成。在一個RIP報文中,最多可以有25個路由表項
。RIP是一個基於UDP協議
的,並且RIP-1的數據包不能超過512字節。
字段名 | 長度 | 含義 |
---|---|---|
Command(命令) | 8比特 | 標識報文的類型: 1:Request報文,向鄰居請求全部或部分路由信息; 2:Reponse報文,發送自己全部或部分路由信息,一個Response報文中最多包含25個路由表項。 |
Version(版本) | 8比特 | RIP的版本號: 1:RIP-1 2:RIP-2 |
Must be zero | 16 比特 | 必須爲零字段。 |
AFI(Address Family Identifier)協 議簇 | 16比特 | 地址族標識,其值爲2時表示IP協議。對於Request報文,此字段值爲0。 |
Route Tag | 16比特 | 外部路由標記。 |
IP Address | 32比特 | 該路由的目的IP地址,可以是自然網段的地址,也可以是子網地址或主機地址。 |
Metric | 32比特 | 路由的開銷值。對於Request報文,此字段爲16。 |
5.2 RIP-2的報文格式
字段名 | 長度 | 含義 |
---|---|---|
Command(命令) | 8比特 | 標識報文的類型: 1:Request報文 ,向鄰居請求全部或部分路由信息; 2:Reponse報文 ,發送自己全部或部分路由信息,一個Response報文中最多包含25個路由表項。 |
Version(版本) | 8比特 | RIP的版本號: 1:RIP-1 2:RIP-2 |
Must be zero | 16比特 | 必須爲零字段。 |
AFI(Address Family Identifier)協議簇 | 16比特 | 地址族標識,其值爲2時表示IP協議。對於Request報文,此字段值爲0。 |
Route Tag | 16比特 | 外部路由標記。 |
IP Address | 32比特 | 該路由的目的IP地址,可以是自然網段的地址,也可以是子網地址或主機地址。 |
Subnet Mask | 32比特 | 目的地址的掩碼。 |
Next Hop | 32比特 | 提供一個更好的下一跳地址。如果爲0.0.0.0,則表示發佈此路由的路由器地址就是最優下一跳地址。 |
Metric | 32比特 | 路由的開銷值。對於Request報文,此字段爲16。 |
5.3 運行RIP-1和RIP-2版本的不同
5.3.1 運行RIP-1的時候
-
對於請求消息或週期性的響應消息(情況1),IP報文的
目的地址爲廣播地址255.255.255.255
,源地址爲發送該請求消息或響應消息的接口的IP地址,協議字段的值爲0x11
。 -
爲了迴應請求消息而發送的響應消息(情況2),IP報文的目的地址爲發送請求消息
接口的IP地址
,源地址爲發送響應消息的接口的IP地址,協議字段0x11
。- 接下來,IP報文又是封裝在以太網幀中(假設路由器的接口都是以太網接口):
-
對於情況1,以太網幀的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是發送請求消息或響應消息的接口的MAC地址,類型字段爲0x0800。 -
對於情況2,以太網幀的目的MAC地址是發送請求消息的接口的MAC地址,源地址爲發送該響應消息的接口的MAC地址,類型字段爲0x0800。
5.3.2 運行RIP-2的時候
-
對於請求消息或週期性的相應消息(情況1),IP報文的
目的地址爲組播地址224.0.0.9
,也可以爲廣播地址255.255.255.255
,源地址爲發送該請求消息或響應消息的接口的IP地址,協議字段的值爲0x11。 -
爲了迴應請求消息而發送的響應消息(情況2),IP報文的目的地址爲發送請求消息接口的IP地址,源地址爲發送響應消息的接口的IP地址,協議字段0x11。
-
接下來,IP報文又是封裝在以太網幀中(假設路由器的接口都是以太網接口):
-
對於情況1,以太網幀的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是發送請求消息或響應消息的接口的MAC地址,類型字段爲0x0800。 -
對於情況2,以太網幀的目的MAC地址是發送請求消息的接口的MAC地址,源地址爲發送該響應消息的接口的MAC地址,類型字段爲0x0800。
-
-
5.3.3 RIP-1與RIP-2的不同
- RIP-1只支持有類路由;RIP-2支持無類路由,支持VLSM,CIDP等特性;
- RIP-1不支持認證功能;RIP-2可以支持認證功能,因此安全性得到提高;
- RIP-1不能採用組播方式發佈消息;RIP-2可以採用組播方式發佈消息,因此RIP-2比RIP-1佔用更少的設備處理資源;
6. RIP定時器
RIP協議有三種定時器:分別是更新定時器(Update Timer)
,無效定時器(Invalid Timer)
,垃圾收集定時器(Carbage Collection Timer)
。
6.1 更新定時器
更新定時器也可以稱爲週期定時器(Periodic Timer),每臺RIP路由器都有一個屬於自己的RIP更新定時器。缺省情況下,週期值爲30s
。每當更新定時器倒計時值爲0時,路由器就會向所有鄰居發送RIP響應消息,當路由器收到RIP請求消息時候,會立即發送RIP響應消息,但是不影響基於更新定時器的週期性RIP響應消息的發送
。
6.2 無效定時器
每個路由器都建立並維護一個無效定時器。缺省情況下,無效定時器值爲180s(更新定時器週期的6倍)
。當一個路由項的無效定時器的值倒計時爲0時,就說明該路由表項已經有180s的時間沒有別更新,此時路由表會認爲該路由項已經變爲一個無效的路由項,也就是認爲該路由項所指的所指的目的地已經變爲不可達,於是路由器會將該路由的cost值設置爲16
.
6.3 垃圾收集定時器
-
當無效定時器值倒計時爲0時,該路由項是一個無效路由項,其cost值就會被設置爲16。此時路由器不會立即將這個無效的路由項刪除掉,而是會爲該路由項啓用一個被稱爲垃圾收集定時器的倒數計時器。垃圾收集定時器的缺省值爲120s。
-
在垃圾收集定時器倒計時爲0之前,該路由器仍然會週期性在RIP響應消息中攜帶這條無效的路由信息,其目的是爲了告訴他的所有鄰居這條路由項對於自己來說已經無效,以便路由器能夠及時對各自的RIP路由表中的相應的路由項進行更新。
-
一旦垃圾收集定時器的值倒計時爲0時,路由器就會將這條無效路由項刪除。(注意:在垃圾收集定時器爲0前的某一時刻,該無效路由被更新,即Cost的值更新爲小於16,則該路由項的的無效定時器會被複位成初始值,然後重新計時,相應的垃圾收集定時器則會被刪除掉)
7. RIP環路問題
假設路由器C發生故障(E0接口down掉),RC監測到該故障後會立即向RB發送故障信息(跳數設置爲16)表示10.4.0.0爲無效路由。然而,在RC準備將這條無效路由週期性響應消息發給RB的時候,收到RB週期性的相應消息,其中包含10.4.0.0 網段的路由信息,那麼這個時候RC就會認爲通過RB可以到達10.4.0.0網段,所以RC就在10.4.0.0路由項的跳數上+1,RB又會從RC學習到這條路由並且會通告給自己的鄰居,那麼不斷往復,就產生了環路。
8. 環路解決
華爲的環路解決方案提供了觸發更新
,水平分割
,毒性逆轉
三種
8.1 觸發更新
-
所謂觸發更新,就是指RIP路由表中的某些路由項的內容發生改變時,路由器應立即向它的所有鄰居發佈響應消息,而不用等待更新定時器所規定的下一個響應消息的發送時刻。(立即更新)
-
另外,觸發更新響應消息中只需要包含路由信息發生了改變的路由項,減少帶寬及路由器處理資源的消耗
注意如果對方未收到觸發更新的消息,本端就收到一個週期性響應消息,這種情況下仍然會產生路由。但是觸發更新在一定程度上降低了環路產生的概率。
8.2 水平分割
水平分割的原理是:如果一臺路由器的RIP路由表中目的地/掩碼爲z/y的路由信息是通過該路由器的Interface-x接口學習來的,那麼該路由器在通過Interface-x接口向外發送響應消息時,響應消息一定不要包含關於z/y這個路由項的信息。(從哪裏學到就不發回哪裏
)
8.3 毒性逆轉
毒性逆轉的原理是:如果一臺路由器的RIP路由表中目的地/掩碼爲z/y的路由信息是通過該路由器的Interface-x接口學習來的,那麼該路由通過Interface-x接口向外發送消息時,響應消息中仍然需要包含z/y這個路由項,但是這個路由項的Cost值總是16。
八、OSPF
思維導圖:
1. ospf基本原理
1.1 OSPF原理
原理:OSPF要求每臺運行OSPF的路由器都瞭解整個網絡的鏈路狀態信息,這樣才能計算出到達目的地的最優路徑。OSPF的收斂過程由鏈路狀態公告LSA(Link State Advertisement)
泛洪開始,LSA中包含了路由器已知的接口IP地址、掩碼、開銷和網絡類型等信息。收到LSA的路由器都可以根據LSA提供的信息建立自己的鏈路狀態數據庫LSDB(Link State Database)
,並在LSDB的基礎上使用SPF算法
進行運算,建立起到達每個網絡的最短路徑樹。最後,通過最短路徑樹得出到達目的網絡的最優路由,並將其加入到IP路由表中。
什麼叫鏈路(LINK) =路由器接口
什麼叫狀態(State) =描述接口以及其與鄰居路由器之間的關係
- OSPF是一種
基於鏈路狀態的路由協議
,它從設計上就保證了無路由環路。OSPF支持區域的劃分,區域內部的路由器使用SPF最短路徑算法保證了區域內部的無環路。OSPF還利用區域間的連接規則保證了區域之間無路由環路。 - OSPF支持
觸發更新
,能夠快速檢測並通告自治系統內的拓撲變化。 - OSPF可以解決網絡擴容帶來的問題。當網絡上路由器越來越多,路由信息流量急劇增長的時候,OSPF可以將每個自治系統劃分爲多個區域,並限制每個區域的範圍。OSPF這種分區域的特點,使得OSPF特別適用於大中型網絡。OSPF可以提供認證功能。OSPF路由器之間的報文可以配置成必須經過認證才能進行交換。
1.2 OSPF metric
- OSPF使用開銷cost作爲路由的
度量值
- 在每一個運行OSPF的接口上,都維護着一個接口COST,
接口COST=100M/接口帶寬
,其中100M爲OSPF的參考帶寬。 - 一條路由的COST由該路由從來路由的起源一路過來的所有入接口cost值的總和
1.3 Router-ID
- 用於在一個OSPF域中唯一地標識一臺路由器
- OSPF Router-ID的設定可以通過手工配置的方式,或者通過自動選取的方式。 自動選取的機制是:若有loopback口,則選最大的loopback口IP地址,若無則選活躍的物理接口中IP地址最大的作爲RouterID(
Router-ID不具有搶佔性
)
1.4 OSPF三張表
- 鄰居表(neighbor table):
OSPF用鄰居機制來發現和維持路由的存在,鄰居表存儲了雙向通信的鄰居關係OSPF路由器列表的信息。 - 拓撲數據庫(link-state database):
OSPF用LSA(link state Advertisement 鏈路狀態通告)來描述網絡拓撲信息,然後OSPF路由器用拓撲數據庫來存儲網絡的這些LSA。 - OSPF路由表(routing table):
對鏈路狀態數據庫進行SPF(Dijkstra)計算,而得出的OSPF路由表。
2. RIP與OSPF
2.1 RIP 的缺陷和OSPF改進
RIP特性 | 帶來的問題 | 優化或解決的方式 |
---|---|---|
逐跳收斂 | 收斂慢,故障恢復時間長 | “收到更新->計算路由->發送更新” 改爲“收到更新->發送更新->計算路由” |
傳聞路由更新機制 | 缺少對全局網絡拓撲的瞭解 | 路由器基於拓撲信息,獨立計算路由 |
最多有效跳數爲15 | 環形組網中,使遠端路由不可達 | 不限定跳數 |
以“跳數”爲度量 | 存在選擇次優路徑的風險 | 將鏈路帶寬作爲選路參考值 |
2.2 RIP與OSPF比較
2.2.1 相同點
- OSPF有兩個版本ospf-1(還未正式發佈就夭折)和ospf-2,RIP也是有兩個版本RIP-1和RIP-2;
- OSPF-2與RIP-2一樣是一種無類路由協議,支持VLSM、CIDR等特性;
- OSPF-2與RIP-2一樣都支持認證功能;
- RIP封裝在UDP報文中,OSPF封裝在IP報文中,UDP和IP都是一種無連接、不可靠的通信方式;
- RIP和OSPF協議報文的安全傳輸都是靠協議本身;
2.2.2 不同點☆☆☆
-
OSPF是基於鏈路狀態(Link-State)的路由協議,而RIP是基於距離矢量路與協議(二者的根本性差別);
-
RIP是一種“
傳話
”的方式來傳遞路由有關的路由信息,OSPF是以一種“宣告
”的方式,OSPF的收斂時間明顯小於RIP; -
RIP是一種“
嘈雜
”的路由協議,路由收斂後仍然週期性地持續地存在大量的RIP協議報文流量;OSPF是一種“安靜
”的路由協議,路由收斂後,OSPF網絡中只存在一小部分OSPF報文; -
RIP協議是以UDP作爲其傳輸層協議的,RIP是封裝在UDP報文中,端口號是520;
OSPF沒有傳輸層協議
,OSPF是直接封裝在IP報文中的; -
RIP報文有
兩種
:請求報文和響應報文;OSPF有五種
:hello報文、數據庫描述報文(DD)、鏈路狀態請求報文(LSR)、鏈路狀態更新報文(LSU)和鏈路狀態確認報文(LSAck); -
RIP以“
跳數
”來作爲路由開銷的定義,OSPF理論上可以採取任何參量作文開銷定義,最常見的就是採用鏈路帶寬來定義路由開銷; -
OSPF具有區域化結構,RIP沒有;
-
OSPF網路中路由器有角色之分,不同路由器有着不同的功能和作用,RIP沒有角色之分;
-
OSPF每臺路由器都有獨一無二的路由器身份號(Router-ID),在RIP網絡中是沒有Router-ID的;
3. OSPF區域化結構
OSPF支持將一組網段組合在一起,這樣的一個組合稱爲一個區域。一個OSPF網絡可以劃分成多個區域(Area)。如果一個OSPF網絡只包含一個區域就稱爲單區域OSPF網絡;如果一個OSPF網絡包含了多個區域稱爲多區域OSPF網絡。
- OSPF網絡中,如果一臺路由器所有接口都屬於同一個區域,則這樣的路由器被稱爲
內部路由器(Internal Router)
;- OSPF網絡中如果一臺路由器包含屬於Area 0 的接口,則這樣的路由器被稱爲
骨幹路由器(Backbone Router)
;- OSPF網絡中如果一臺路由器的某些接口屬於Area 0 ,其他接口屬於別的區域,則這樣的路由器被稱爲
區域邊界路由器(ABR)
;- 非骨幹區域之間通信必須要要通過骨幹區域中轉才能進行;
- 單區域只包含一個區域,這個區域必須是area 0;
-
劃分OSPF區域可以縮小路由器的LSDB規模,減少網絡流量;
-
區域內的詳細拓撲信息不向其他區域發送,區域間傳遞的是抽象的路由信息,而不是詳細的描述拓撲結構的鏈路狀態信息。**每個區域都有自己的LSDB,不同區域的LSDB是不同的。**路由器會爲每一個自己所連接到的區域維護一個單獨的LSDB。由於詳細鏈路狀態信息不會被髮布到區域以外,因此LSDB的規模大大縮小了;
-
在OSPF網絡中,每一個區域都有一個編號,稱爲Area-ID。Area 0爲骨幹區域,爲了避免區域間路由環路,非骨幹區域之間不允許直接相互發布路由信息。因此,每個區域都必須連接到骨幹區域;
-
運行在區域之間的路由器叫做區域邊界路由器
ABR(Area Boundary Router)
,它包含所有相連區域的LSDB。自治系統邊界路由器ASBR(Autonomous System Boundary Router)
是指和其他AS中的路由器交換路由信息的路由器,這種路由器會向整個AS通告AS外部路由信息;
4. OSPF支持的網絡類型
OSPF能夠支持的網絡類型,指的是OSPF能夠支持的二層網絡的類型,OSPF能夠支持廣播網絡、NBMA(Non-Boadcat Multi-Access)、點到點網絡(P2P)和點到多點網絡(P2MP)。
在廣播網絡和NBMA網絡中
注意:OSPF路由器的某個接口的類型是與該接口直接相連的二層網絡的類型是一致的。
比如,如果OSPF路由器某個接口連接的是一個廣播網絡,那麼該接口就是一個廣播接口;如果OSPF路由器某個接口連接的是一個P2P網絡,那麼該接口就是一個P2P網絡接口;
4.1 P2P網絡
- 僅兩臺路由互連。
- 支持廣播、組播。
4.2 廣播型網絡
廣播型網絡支持兩臺及兩臺以上的設備接入同一共享鏈路且可以支持廣播、組播報文的轉發,是OSPF最常見的網絡類型。
- 兩臺或兩臺以上的路由器通過共享介質互連。
- 支持廣播、組播。
廣播型網絡的例子:通過以太網鏈路相連的路由器網絡。
4.3 NBMA網絡
- 兩臺或兩臺以上路由器通過
VC互連
。 - 不支持廣播、組播☆☆☆。
與廣播型網絡不同的是NBMA網絡默認不支持廣播與組播報文的轉發。
NBMA方式要求網絡中的路由器組成全連接
在NBMA網絡上,OSPF模擬在廣播型網絡上的操作,但是每個路由器的鄰居需要
手動配置
。NBMA(non-broadcast multiple access)型網絡的例子:通過全互連的
幀中繼鏈路
相連的路由器網絡.
4.4 P2MP網絡
- 多個點到點網絡的集合。
- 支持廣播、組播☆☆☆。
- 將一個非廣播網絡看成是一組P2P網絡,這樣的非廣播網絡便成爲了一個點到多點(P2MP)網絡。在P2MP網絡上,每個路由器的OSPF鄰居可以使用
反向地址解析協議(Inverse ARP)
來發現。- P2MP可以看作是多個P2P的集合,P2MP可以支持廣播、組播的轉發。
- 沒有一種鏈路層協議默認屬於P2MP類型網絡,也就是說必須是由其他的網絡類型強制更改爲P2MP。常見的做法是將非完全連接的幀中繼或ATM改爲P2MP的網絡。
5. 鏈路狀態與LSA
OSPF是一種鏈路狀態協議,所謂的鏈路狀態,其實就是路由器的接口狀態。OSPF核心思想就是,每臺路由器都將自己的各個接口的接口狀態(即鏈路狀態)共享給其他路由器。
5.1 路由器接口狀態
- 該接口的IP地址及掩碼
- 該接口所屬區域的Area-ID
- 該接口所屬路由器的Router-ID
- 該接口的接口類型(也就是該接口的網絡類型,如P2P,廣播型)
- 該接口的接口開銷(通常以接口帶寬來定義接口開銷,帶寬越大,開銷越小)
- 該接口所屬的路由器的Router Priority(這個參數是用來選舉DR與BDR的)
- 該接口所在二層網絡中的DR
- 該接口所在二層網絡中的BDR
- 該接口的HelloDeadInterval(接口發送Hello報文的間隔時間)
- 該接口的RouterDeadInterval(實效時間)
- 該接口所有鄰居路由器
- 該接口認證類型
- 該接口祕鑰等等
5.2 LSA (鏈路狀態通告)
LSA(Link State Advertisement)
是路由器之間鏈路狀態信息的載體。LSA是LSDB的最小組成單位,也就是說LSDB由一條條LSA構成的。LSA有十幾種類型
;
所有的LSA都擁有相同的頭部,關鍵字段的含義如下:
- LS age:此字段表示LSA已經
生存的時間
,單位是秒。 - LS type:此字段標識了LSA的格式和功能。常用的LSA類型有五種。
- Link State ID:此字段是該LSA所描述的那部分鏈路的標識,例如Router ID等。
- Advertising Router:此字段是產生此LSA的路由器的Router ID。
- LS sequence number:此字段用於檢測舊的和重複的LSA。
Type-1 LSA(Router LSA);
Type-2 LSA(Network LSA);
Type-3 LSA(Network Summary LSA);
Type-4 LSA(ASBR Summary LSA);
Type-5 LSA(ASExternal LSA);
…
- 不同類型的LSA中所包含的鏈路狀態的內容是不相同的;
- 不同類型的LSA的功能和作用也是不相同的;
- 不同類型的LSA通告範圍也是不相同的;
- 不同角色的路由器能夠產生的LSA的類型也是不同的;
5.2.1 Type-1 LSA
-
每臺路由器都會產生。Type-1LSA用來描述路由器各個接口的接口類型、IP地址、開銷值等信息。
-
一個Type-1LSA只能在產生它的Area 內泛洪,不能泛洪到其他Area。
5.2.2 Type-2 LSA
- 由DR產生。主要用來描述該DR所在的二層網絡的網絡掩碼以及該二層網絡中總共包含哪些路由器你。
- 一個Type-2LSA只能在產生他的Area內泛洪,不能泛洪到其他區域。
5.2.3 Type-3 LSA
- 由ABR產生。ABR路由器將自己所在的多個Area中的Type-1和Type-2 LSA轉換成爲Type-3 LSA,這些Type-3 LSA描述了Area之間的路由信息。
- Type-3可以泛洪到這個自治系統(整個OSPF網絡)內部,但是不能泛洪到Totally Stub Area和Totally Not-So-Stubby Area。
5.2.4 Type-4 LSA
- 由ASBR產生所在的Area的ABR產生。用來描述去往ASBR的路由信息。
- Type-4可以泛洪到整個自治系統(整個OSPF網絡)內部,但是不能泛洪到Stub Area、Totally Stub Area、NOt-So-Stubby Area和Totally NOt-So-Stubby Area
5.2.5 Type-5 LSA
- 由ASBR產生。用來描述去往自治系統外部的路由。
- Type-5 LSA可以泛洪到整個自治系統(整個OSPF網絡)內部,但是不能泛洪到Stub Area、Totally Stub Area、NOt-So-Stubby Area和Totally NOt-So-Stubby Area
6. OSPF報文類型
OSPF的協議報文是直接封裝在IP報文中
的,IP報文頭部中的協議字段必須爲89
。
OSPF 本身5種類型,分別是Hello報文、DD報文、LSR報文、LSU報文、LSAck報文,各種不同類型的LSA其實只是包含在LSU報文中
。
其他類型的OSPF報文中雖然沒有攜帶LSA,但是仍然會攜帶一些鏈路狀態信息,當然也會攜帶一些其他的信息。
Type | 報文名稱 | 報文功能 |
---|---|---|
1 | Hello | 發現和維護鄰居關係 |
2 | Database Description | 交互鏈路狀態數據庫摘要 |
3 | Link State Request | 請求特定的鏈路狀態信息 |
4 | Link State Update | 發送詳細的鏈路狀態信息 |
5 | Link State Ack | 發送確認報文 |
6.1OSPF協議報文頭部
- Version :對於當前所使用的OSPFv2,該字段的值爲2。
- Type:OSPF報文類型。
- Packet length:表示整個OSPF報文的長度,單位是字節。
- Router ID:表示生成此報文的路由器的Router ID。
- Area ID:表示此報文需要被通告到的區域。
- Checksum:校驗字段,其校驗的範圍是整個OSPF報文,包括OSPF報文頭部。
- Auth Type:爲
0時表示不認證
;爲1時表示簡單的明文密碼認證
;爲2時表示加密(MD5)認證
。- Authentication:認證所需的信息。該字段的內容隨AuType的值不同而不同。
6.2 路由器接口hello報文信息
Hello報文的作用:
- 鄰居發現:自動發現鄰居路由器,並建立相鄰關係,通過
組播地址:224.0.0.5
發送給ALLSPFRouters,通告兩臺路由器建立相鄰關係所必需統一的參數 - 鄰居建立:完成Hello報文中的參數協商,建立鄰居關係。
- 鄰居保持:通過
Keepalive機制
,檢測鄰居運行狀態。
- OSPF的版本號
- 該接口所屬的路由器的Router-ID
- 該接口所屬的區域ID
- 該接口的認證類型
- 該接口的祕鑰
- 該接口的IP地址和掩碼
- 該接口所屬的路由器的Router Priority(這個參數是用來選舉DR與BDR的)
- 該接口所在二層網絡中的DR
- 該接口所在二層網絡中的BDR
- 該接口的HelloDeadInterval(接口發送Hello報文的間隔時間)
- 該接口的RouterDeadInterval(實效時間)
- 該接口所有鄰居路由器
7.鄰居關係與鄰接關係
在RIP網絡中,如果路由器A與路由器B位於同一個二層網絡,那麼就說路由器A與路由器B是“鄰居關係”;
在OSPF網絡中,如果路由器A與路由器B位於同一個二層網絡,只能說路由器A與路由器B“相鄰”,不能說是“鄰居關係”。相鄰不等於鄰居關係更不等於“鄰接關係”
運行OSPF的路由器之間需要交換鏈路狀態信息和路由信息,在交換這些信息之前路由器之間首先需要建立鄰接關係
。
7.1 鄰居關係
OSPF路由器啓動後,便會通過OSPF接口向外發送Hello報文
用於發現鄰居。收到Hello報文的OSPF路由器會檢查報文中所定義的一些參數,如果雙方的參數一致,就會彼此形成鄰居關係,狀態到達2-way 即可稱爲建立了鄰居關係。如果參數不一致,不能形成鄰居關係。
7.1.1 鄰居發現
Hello報文用來發現和維持OSPF鄰居關係
Hello報文的作用:
- 鄰居發現:自動發現鄰居路由器。
- 鄰居建立:完成Hello報文中的參數協商,建立鄰居關係。
- 鄰居保持:通過
Keepalive機制
,檢測鄰居運行狀態。
- Network Mask:發送Hello報文的接口的網絡掩碼。
- Hello Interval:發送Hello報文的
時間間隔
,單位爲秒。 - Options:標識發送此報文的OSPF路由器所支持的可選功能。
- Router Priority:發送Hello報文的
接口的Router Priority
,用於選舉DR和BDR。 - Router Dead Interval:
失效時間
。如果在此時間內未收到鄰居發來的Hello報文,則認爲鄰居失效;單位爲秒,通常爲四倍Hello Interval。 - Designated Router:發送Hello報文的路由器所選舉出的
DR的IP地址
。如果設置爲0.0.0.0,表示未選舉DR路由器。 - Backup Designated Router:發送Hello報文的路由器所選舉出的
BDR的IP地址
。如果設置爲0.0.0.0,表示未選舉BDR。 - Neighbor:
鄰居的Router ID列表
,表示本路由器已經從這些鄰居收到了合法的Hello報文。
7.1.2 鄰居關係建立
狀態含義:
狀態 | 含義 |
---|---|
Down | 這是鄰居的初始狀態,表示沒有從鄰居收到任何信息 |
Init | 在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己的Router ID不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關係 。 |
2- Way | 在此狀態下,路由器發現自己的Router ID存在於收到的Hello報文的鄰居列表中,已確認可以雙向通信 。 |
鄰居建立過程如下:
- RTA和RTB的Router ID分別爲1.1.1.1和2.2.2.2。當RTA啓動OSPF後,RTA會發送第一個Hello報文。此報文中
鄰居列表爲空
,此時狀態爲Down
,RTB收到RTA的這個Hello報文,狀態置爲Init。 - RTB發送Hello報文,此報文中鄰居列表爲空,RTA收到RTB的Hello報文,狀態置爲
Init
。 - RTB向RTA發送鄰居列表爲1.1.1.1的Hello報文,RTA在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置爲
2-way
。 - RTA向RTB發送鄰居列表爲2.2.2.2的Hello報文,RTB在收到的Hello報文鄰居列表中發現自己的Router ID,狀態置爲
2-way
。
因爲鄰居都是未知的,所以Hello報文的目的IP地址不是某個特定的單播地址。鄰居從無到有,OSPF採用組播的形式發送Hello報文(目的地址224.0.0.5
)。
對於不支持組播的網絡可以通過手動配置實現鄰居的發現與維護。
7.2 鄰接關係
形成鄰居關係的雙方不一定都能形成鄰接關係,這要根據網絡類型而定。只有當雙方成功交換DD報文,並同步LSDB後,才形成真正意義上的鄰接關係。
7.2.1 鄰接關係的建立(LSDB同步)
狀態含義:
狀態 | 含義 |
---|---|
ExStart | 鄰居狀態變成此狀態以後,路由器開始向鄰居發送DD報文 。Master/Slave關係是在此狀態下形成的,初始DD序列號也是在此狀態下確定的。在此狀態下發送的DD報文不包含鏈路狀態描述。 |
Exchange | 在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。 |
Loading | 在此狀態下,路由器與鄰居之間相互發送LSR報文、LSU報文、LSAck報文。 |
Full | LSDB同步過程完成,路由器與鄰居之間形成了完全的鄰接關係。 |
LSDB同步過程如下:
- RTA和RTB的Router ID分別爲1.1.1.1和2.2.2.2並且二者已建立了鄰居關係。當RTA的鄰居狀態變爲
ExStart
後,RTA會發送第一個DD報文
。此報文中,DD序列號被隨機設置爲X,I-bit設置爲1,表示這是第一個DD報文,M-bit設置爲1,表示後續還有DD報文要發送,MS-bit設置爲1,表示RTA宣告自己爲Master。 - 當RTB的鄰居狀態變爲
ExStart
後,RTB會發送第一個DD報文。此報文中,DD序列號被隨機設置爲Y(I-bit=1,M-bit=1,MS-bit=1,含義同上)。由於RTB的Router ID較大,所以RTB將成爲真正的Master。收到此報文後,RTA會產生一個Negotiation-Done事件
,並將鄰居狀態從ExStart變爲Exchange。 - 當RTA的鄰居狀態變爲
Exchange
後,RTA會發送一個新的DD報文,此報文中包含了LSDB的摘要信息,序列號設置爲RTB在步驟2中使用的序列號Y,I-bit=0,表示這不是第一個DD報文,M-bit=0,表示這是最後一個包含LSDB摘要信息的DD報文,MS-bit=0,表示RTA宣告自己爲Slave。收到此報文後,RTB會產生一個Negotiation-Done事件
,並將鄰居狀態從ExStart變爲Exchange
。 - 當RTB的鄰居狀態變爲Exchange後,RTB會發送一個新的DD報文,此報文包含了LSDB的摘要信息,DD序列號設置爲Y+1, MS-bit=1,表示RTB宣告自己爲Master。
- 雖然RTA不需要發送新的包含LSDB摘要信息的DD報文,但是作爲Slave,RTA需要對Master發送的每一個DD報文進行確認。所以,RTA向RTB發送一個新的DD報文,序列號爲Y+1,該報文內容爲空。發送完此報文後,RTA產生一個
Exchange-Done事件
,將鄰居狀態變爲Loading。RTB收到此報文後,會將鄰居狀態變爲Full(假設RTB的LSDB是最新最全的,不需要向RTA請求更新)。 - RTA開始向RTB發送
LSR報文
,請求那些在Exchange狀態下通過DD報文發現的、並且在本地LSDB中沒有的鏈路狀態信息。 - RTB向RTA發送
LSU報文
,LSU報文中包含了那些被請求的鏈路狀態的詳細信息。RTA在完成LSU報文的接收之後,會將鄰居狀態從Loading變爲Full。 - RTA向RTB發送
LSAck報文
,作爲對LSU報文的確認。RTB收到LSAck報文後,雙方便建立起了完全的鄰接關係
。
7.2.2 P2P網絡和P2MP網絡
- 如果兩臺鄰居路由器之間的二層網絡是P2P網絡或P2MP網絡,則這兩臺鄰居路由器之間一定會進入LSDB同步的過程;
- 當這兩臺路由器之間完成了LSDB同步的過程說明他們之間建立了鄰接關係,彼此之間成爲了對方的
鄰接路由器
; - LSDB同步的過程是爲了保證參與LSDB同步的路由器最終能夠擁有
完全一樣的LSDB
。 - LSDB同步是交互
DD報文,LSR報文和LSU報文
來實現的;
7.2.3 Broadcast網絡和NBMA網絡
-
如果兩臺鄰居路由器之間的二層網絡是P2P網絡或P2MP網絡,並且其中一臺路由器是這個而層網絡的DR或BDR,那麼這兩臺鄰居路由器一定會進入彼此之間的LSDB同步的過程;
-
當這兩臺路由器之間完成了LSDB同步之後,他們之間建立了鄰接關係;
-
如果這兩臺路由器都不是這個二層網絡的DR或BDR,那麼這兩臺路由器就不會進入彼此之間的LSDB的同步過程,也就是說,彼此之間是不可能建立起鄰居關係;
-
一個OSPF網絡中的鄰接關係一定是小於等於鄰居關係的;
7.3 OSPF鄰居關係狀態機
- Down:這是鄰居的初始狀態,表示沒有從鄰居收到任何信息。在NBMA網絡上,此狀態下仍然可以向靜態配置的鄰居發送Hello報文,發送間隔爲PollInterval,通常和Router DeadInterval間隔相同。
- Attempt:此狀態
只在NBMA網絡上存在
,表示沒有收到鄰居的任何信息,但是已經週期性的向鄰居發送報文,發送間隔爲HelloInterval。如果Router DeadInterval間隔內未收到鄰居的Hello報文,則轉爲Down狀態。 - Init:在此狀態下,路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中,表示尚未與鄰居建立雙向通信關係。在此狀態下的鄰居要被包含在自己所發送的Hello報文的鄰居列表中。
- 2-Way Received:此事件表示路由器發現與鄰居的雙向通信已經開始(發現自己在鄰居發送的Hello報文的鄰居列表中)。Init狀態下產生此事件之後,如果需要和鄰居建立鄰接關係則進入ExStart狀態,開始數據庫同步過程,如果不能與鄰居建立鄰接關係則進入2-Way。
- 2-Way:在此狀態下,雙向通信已經建立,但是沒有與鄰居建立鄰接關係。這是建立鄰接關係以前的最高級狀態。
- 1-Way Received:此事件表示路由器發現自己沒有在鄰居發送Hello報文的鄰居列表中,通常是由於對端鄰居重啓造成的。
- ExStart:這是形成鄰接關係的第一個步驟,鄰居狀態變成此狀態以後,路由器開始向鄰居發送DD報文。主從關係是在此狀態下形成的;初始DD序列號是在此狀態下決定的。在此狀態下發送的DD報文不包含鏈路狀態描述。
- Exchange:此狀態下路由器相互發送包含鏈路狀態信息摘要的DD報文,描述本地LSDB的內容。
- Loading:相互發送LS Request報文請求LSA,發送LS Update通告LSA。
- Full:兩臺路由器的LSDB已經同步。
8. DR與BDR
在P2P或P2MP網絡中完全不存在DR與BDR的概念,DR與BDR只適用於Broadcast網絡或NBMA網絡。
網絡類型 | 是否和鄰居建立鄰接關係 |
---|---|
P2P / P2MP | 是 |
Broadcast / NBMA | DR與BDR 、DRother建立鄰接關係——BDR與DR 、DRother建立鄰接關係 ——DRother之間只建立鄰居關係 |
8.1 DR與BDR的作用
- 每一個含有至少兩個路由器的廣播型網絡和NBMA網絡都有一個DR和BDR。
- DR和BDR可以減少鄰接關係的數量,從而減少鏈路狀態信息以及路由信息的交換次數,這樣可以
節省帶寬
,降低對路由器處理能力的壓力。在沒有DR的廣播網絡上,鄰接關係的數量可以根據公式n(n-1)/2計算出,n代表參與OSPF的路由器接口的數量。 - BDR作用:當DR發生故障的時候,BDR能夠迅速代替DR的角色;
8.2 DR與BDR的選舉
- 在鄰居發現完成之後,路由器會根據網段類型進行DR選舉。在廣播和NBMA網絡上,路由器會根據參與選舉的每個接口的優先級進行DR選舉。
- 優先級取值範圍爲
0-255
,值越高越優先。缺省情況下,接口優先級爲1
。**如果一個接口優先級爲0,那麼該接口將不會參與DR或者BDR的選舉。**如果優先級相同時,則比較Router ID,值越大越優先被選舉爲DR。(越大越優先) - BDR與DR的選舉規則是一樣的,同一個網絡中同一臺路由器 不會即作爲DR又作爲BDR;
- DR與BDR具有非搶佔性。爲了維護網絡上鄰接關係的穩定性,如果網絡中已經存在DR和BDR,則新添加進該網絡的路由器不會成爲DR和BDR,不管該路由器的Router Priority是否最大。如果當前DR發生故障,則當前BDR自動成爲新的DR,網絡中重新選舉BDR;如果當前BDR發生故障,則DR不變,重新選舉BDR;
- 實質上,DR與BDR只是路由器的某個接口的屬性,而不是路由器本身的屬性;
思維導圖:
九、NAT 網絡地址轉換技術
網絡地址轉換技術也稱爲NAT(Network Address Translation)
技術,他的基本作用就是實現私網IP與公網IP地址之間的轉換。
公網:就是公有的IP地址的網絡,公網中是絕對不能使用私有IP地址的。
私網:就是使用私有IP地址的網絡。在私網中,各個網絡接口的 IP地址必須是私有IP地址,但是在有些情況下,私網出現的IP報文,其目的IP地址或源IP地址可以是公有IP地址。
NAT優缺點:
優點 | 缺點 |
---|---|
節省IP地址空間 | 增加轉發延遲 |
解決IP地址重疊問題 | 喪失端到端的尋址能力 |
增加網絡的連入Internet的彈性 | 某些應用不支持NAT |
當網絡變更的時候減少更改ip重編址的麻煩 | 需要一定的內存空間支持動態存儲NAT表項 |
對外隱藏內部地址,增加網絡安全性 | 需要耗費一定CPU資源進行NAT操作 |
NAT術語:
術語 | 解釋 |
---|---|
內部本地 | 轉換之前內部源地址的名字 |
外部本地 | 轉換之前目標主機的名字 |
內部全局 | 轉換之後內部主機的名字 |
外部全局 | 轉換之後外部目標主機的名字 |
1. 靜態NAT
- 靜態NAT實現了私有地址和公有地址的一對一映射。
- 一個公網IP只會分配給唯一且固定的內網主機。
在本示例中,源地址爲192.168.1.1的報文需要發往公網地址100.1.1.1。在網關RTA上配置了一個私網地址192.168.1.1到公網地址200.10.10.1的映射。當網關收到主機A發送的數據包後,會先將報文中的源地址192.168.1.1轉換爲200.10.10.1,然後轉發報文到目的設備。目的設備回覆的報文目的地址是200.10.10.1。當網關收到回覆報文後,也會執行靜態地址轉換,將200.10.10.1轉換成192.168.1.1,然後轉發報文到主機A。和主機A在同一個網絡中其他主機,如主機B,訪問公網的過程也需要網關RTA做靜態NAT轉換。
2. 動態NAT
- 動態NAT基於
地址池
來實現私有地址和公有地址的轉換。 - 動態NAT地址池中的地址用盡以後,只能等待被佔用的公用IP被釋放後,其他主機才能使用它來訪問公網。
本示例中,當內部主機A和主機B需要與公網中的目的主機通信時,網關RTA會從配置的公網地址池中選擇一個未使用的公網地址與之做
映射
。每臺主機都會分配到地址池中的一個唯一地址。當不需要此連接時,對應的地址映射將會被刪除,公網地址也會被恢復到地址池中待用。當網關收到回覆報文後,會根據之前的映射再次進行轉換之後轉發給對應主機。
3. NAPT(端口複用)
- 網絡地址端口轉換NAPT允許多個內部地址映射到同一個公有地址的不同端口。
- 理想狀況下,一個單一的IP地址可以使用的端口數爲4000個
本例中,RTA收到一個私網主機發送的報文,源IP地址是192.168.1.1,源端口號是1025,目的IP地址是100.1.1.1,目的端口是80。RTA會從配置的公網地址池中選擇一個空閒的公網IP地址和端口號,並建立相應的NAPT表項。這些NAPT表項指定了報文的私網IP地址和端口號與公網IP地址和端口號的映射關係。之後,RTA將報文的源IP地址和端口號轉換成公網地址200.10.10.1和端口號2843,並轉發報文到公網。當網關RTA收到回覆報文後,會根據之前的映射表再次進行轉換之後轉發給主機A。主機B同理。
4. NAT服務器
- 通過配置NAT服務器,可以使外網用戶訪問內網服務器
- NAT在使內網用戶訪問公網的同時,也屏蔽了公網用戶訪問私網主機的需求。當一個私網需要向公網用戶提供Web和SFTP服務時,私網中的服務器必須隨時可供公網用戶訪問。
- NAT服務器可以實現這個需求,但是需要配置服務器私網IP地址和端口號轉換爲公網IP地址和端口號併發布出去。路由器在收到一個公網主機的請求報文後,根據報文的目的IP地址和端口號查詢地址轉換表項。路由器根據匹配的地址轉換表項,將報文的目的IP地址和端口號轉換成私網IP地址和端口號,並轉發報文到私網中的服務器。
本例中,主機C需要訪問私網服務器,發送報文的目的IP地址是200.10.10.1,目的端口號是80。RTA收到此報文後會查找地址轉換表項,並將目的IP地址轉換成192.168.1.1,
目的端口號保持不變
。服務器收到報文後會進行響應,RTA收到私網服務器發來的響應報文後,根據報文的源IP地址192.168.1.1和端口號80查詢地址轉換表項。然後,路由器根據匹配的地址轉換表項,將報文的源IP地址和端口號轉換成公網IP地址200.10.10.1和端口號80,並轉發報文到目的公網主機。
5. NAT過程實驗操作解釋
公有地址資源池 |
---|
200.24.5.1 |
200.24.5.2 |
200.24.5.3 |
200.24.5.4 |
200.24.5.5 |
200.24.5.6 |
動態地址及端口號映射:
私有地址:端口號 | 公有地址:端口號 |
---|---|
192.168.1.1:1031 | 200.24.5.1:5531 |
192.168.1.2:1540 | 200.24.5.1:5532 |
報文X1 | 報文X2 |
---|---|
源IP地址:192.168.1.1 | 源IP地址:200.24.5.1 |
源端口號:1031 | 源端口號:5531 |
目的IP地址:211.100.7.34 | 目的IP地址:211.100.7.34 |
目的端口號:Z1 |
目的端口號:Z1 |
報文Y1 | 報文Y2 |
---|---|
源IP地址:211.100.7.34 | 源IP地址:211.100.7.34 |
源端口號:Z2 |
源端口號:5531 |
目的IP地址:200.24.5.1 | 目的IP地址:192.168.1.1 |
目的端口號:5531 | 目的端口號:1031 |
報文U1 | 報文U2 |
---|---|
源IP地址:192.168.1.2 | 源IP地址:200.24.5.1 |
源端口號:1540 | 源端口號:5532 |
目的IP地址:211.100.7.34 | 目的IP地址:211.100.7.34 |
目的端口號:Z3 | 目的端口號:Z3 |
報文V1 | 報文V2 |
---|---|
源IP地址:211.100.7.34 | 源IP地址:211.100.7.34 |
源端口號:Z4 | 源端口號:Z4 |
目的IP地址:200.24.5.1 | 目的IP地址:192.168.1.2 |
目的端口號:5532 | 目的端口號:1540 |
過程:
-
PC1 向Internet發起訪問請求,發送報文爲X。源IP地址:192.168.1.1,源端口號:1031,目的IP地址211.100.7.34,目的端口號Z1。
-
當X1達到R1的時候,NAPT會在公有地址資源池選中了IP地址200.24.5.1,並根據某種規則確定出一個端口5531,然後在動態地址及端口映射表中創建192.168.1.1:1031與200.24.5.1:5531 映射表項;
-
根據這個表項NAPT將源IP地址:192.168.1.1,源端口號:1031,替換成200.24.5.1:5531,從而得到一個新的IP報文X2,併發送到Internet;
-
服務器向PC1 返回一個IP報文Y1,源IP地址:211.100.7.34,源端口號:Z2,目的IP地址:200.24.5.1,目的端口號:5531;
-
Y1進入R2後,NAPT會在動態地址映射表中找到200.24.5.1:5531對應的表項192.168.1.1:1031,進行替換得到一個新的報文Y2,R1將Y2發到私網。
PC2訪問服務器與服務器訪問PC2同理
。