目錄
一、MED 屬性介紹
二、實驗
2.1 實驗目的
2.2 拓撲圖
2.2 實驗說明
2.3 配置腳本
2.4 驗證配置
2.5 問題分析
2.7 題目需求解析
2.8 場景 1:只允許在 AS12 上操作
2.9 場景 2:只允許在 AS34 上操作
正文
一、MED 屬性介紹
- MED 全稱 multi-exit-discriminator,多出口鑒別符。
- discriminator【英/d??skr?m?ne?t?(r)/】n.[電子] 鑒別器;辨別者
- 屬性類型:可選非過度。
- 特性
- 具有類似于 cost 值的特性,其來源也是 cost 值。使用 bgp 引入路由條目時,使用 cost 的值來填寫 MED 值。
- 取值范圍 ?4 bytes(0~4,294,967,296),越小越優。
- 邊界路由器在宣告 IGP 路由時,MED 值會繼承 IGP 的 cost 值,IGP 的度量值(metric)會變成 BGP 的 MED 值。
- MED 值的傳遞特性
- 通常情況下,MED 值在 bgp 網絡中只能傳遞 1 跳。
- 唯一例外:在 ASBR(AS 邊界路由器)從 EBGP 鄰居(始發)接收到路由條目時,需要傳遞給 IBGP 鄰居進行路由優選,此時傳播距離為 2 跳。
- 通過 route-policy 修改 EBGP 鄰居路由條目攜帶的 Cost 值,在 MED 的視角上,可以視作 EBGP 鄰居為這條被修改路由條目的始發地址。
- 應用場景
- 兩個 AS 之間存在多條直連鏈路時,可以通過修改 MED 來區分主備鏈路。
- 在邊界路由器將路由條目通告給 EBGP 時對 MED 值進行修改。
- 參考實驗拓撲圖。
- 特殊命令:default med
- 功能:用來配置 BGP 路由的缺省 MED 值。
- 在默認情況當 MED 為 null 時,視作 MED=0。
- 當使用 default med 命令修改 med 以后,原 MED=null? 的條目的 MED 值將被修改成 default MED 設置的值。
- 在配置了該命令后,對于本地始發起源為 ?(import-route 引入)的路由,在傳遞給 IBGP 鄰居時 MED 值不變;傳遞給 EBGP 鄰居是 MED 值修改為 default med。
- 對于起源為 i(network 宣告)的條目無效。
- !!! 通常不推薦使用這個方法來修改 MED 值,如果在實際應用場景中遇到,一定要謹慎分析。
- 功能:用來配置 BGP 路由的缺省 MED 值。
二、實驗
2.1 實驗目的
- 通過修改 MED 屬性,影響 AS 之間的選路行為。
2.2 拓撲圖
2.2 實驗說明
- 本實驗為【BGP 的選路原則 基礎篇 精講】的擴展實驗,實驗基礎配置與基礎實驗相同。建議先完成基礎實驗的學習,再來進行本實驗。
- 本實驗拓撲參考官方考試題。
- 其他關聯內容學習傳送門
- ospf 基礎
- bgp 基礎:【BGP 基礎實驗 精講】
- 路由策略:
- acl 和 通配符掩碼:【網絡中的通配符掩碼】
- route-policy:【路由策略【ospf】【route-policy】【filter-policy】【ip-prefix】綜合實驗 精講】
- BGP import-route
- 配置腳本中路由策略綜合配置(藍字)的解釋請參考下列章節內容
【BGP 路由優選屬性(4)【手動聚合>自動聚合>network>import>從對等體學到的】綜合實驗【bgp】【acl】【route-policy】精講】<3.2 配置思路及步驟>小節 |
2.3 配置腳本
- 腳本已驗證,可以放心使用
- R1
system-view sysname R1 undo info-center enable interface GigabitEthernet 0/0/0 ip address 12.1.1.1 24 interface GigabitEthernet 0/0/1 ip address 13.1.1.1 24 interface Ethernet 0/0/0 ip address 172.16.1.254 24 interface LoopBack 0 ip address 1.1.1.1 32 ospf 1 router-id 1.1.1.1 area 0 network 12.1.1.1 0.0.0.0 network 1.1.1.1 0.0.0.0 acl number 2000 rule 5 permit source 172.16.0.0 0.0.255.0 ? route-policy BGP-IMPORT-DIRECT permit node 10 if-match acl 2000 bgp 12 router-id 1.1.1.1 peer 13.1.1.3 as-number 34 peer 2.2.2.2 as-number 12 peer 2.2.2.2 connect-interface LoopBack 0 peer 2.2.2.2 next-hop-local import-route direct route-policy BGP-IMPORT-DIRECT |
- R2
system-view sysname R2 undo info-center enable interface GigabitEthernet 0/0/0 ip address 12.1.1.2 24 interface GigabitEthernet 0/0/1 ip address 24.1.1.2 24 interface Ethernet 0/0/0 ip address 172.16.2.254 24 interface LoopBack 0 ip address 2.2.2.2 32 ospf 1 router-id 2.2.2.2 area 0 network 12.1.1.2 0.0.0.0 network 2.2.2.2 0.0.0.0 acl number 2000 rule 5 permit source 172.16.0.0 0.0.255.0 ? route-policy BGP-IMPORT-DIRECT permit node 10 if-match acl 2000 bgp 12 router-id 2.2.2.2 peer 24.1.1.4 as-number 34 peer 1.1.1.1 as-number 12 peer 1.1.1.1 connect-interface LoopBack 0 peer 1.1.1.1 next-hop-local import-route direct route-policy BGP-IMPORT-DIRECT |
- R3
system-view sysname R3 undo info-center enable interface GigabitEthernet 0/0/0 ip address 34.1.1.3 24 interface GigabitEthernet 0/0/1 ip address 13.1.1.3 24 interface Ethernet 0/0/0 ip address 172.16.3.254 24 interface LoopBack 0 ip address 3.3.3.3 32 ospf 1 router-id 3.3.3.3 area 0 network 34.1.1.3 0.0.0.0 network 3.3.3.3 0.0.0.0 acl number 2000 rule 5 permit source 172.16.0.0 0.0.255.0 ? route-policy BGP-IMPORT-DIRECT permit node 10 if-match acl 2000 bgp 34 router-id 3.3.3.3 peer 13.1.1.1 as-number 12 peer 4.4.4.4 as-number 34 peer 4.4.4.4 connect-interface LoopBack 0 peer 4.4.4.4 next-hop-local import-route direct route-policy BGP-IMPORT-DIRECT |
- R4
system-view sysname R4 undo info-center enable interface GigabitEthernet 0/0/0 ip address 34.1.1.4 24 interface GigabitEthernet 0/0/1 ip address 24.1.1.4 24 interface Ethernet 0/0/0 ip address 172.16.4.254 24 interface LoopBack 0 ip address 4.4.4.4 32 ospf 1 router-id 4.4.4.4 area 0 network 34.1.1.4 0.0.0.0 network 4.4.4.4 0.0.0.0 acl number 2000 rule 5 permit source 172.16.0.0 0.0.255.0 ? route-policy BGP-IMPORT-DIRECT permit node 10 if-match acl 2000 bgp 34 router-id 4.4.4.4 peer 24.1.1.2 as-number 12 peer 3.3.3.3 as-number 34 peer 3.3.3.3 connect-interface LoopBack 0 peer 3.3.3.3 next-hop-local import-route direct route-policy BGP-IMPORT-DIRECT |
2.4 驗證配置
- 根據路由之間的連線,確認 bgp 鄰居建立情況
# 此處僅以 R1 為視角進行操作,剩下的路由器請自行驗證。 # 確認和鄰居到達 Established 狀態,則鄰居建立成功。 |
- 確認 bgp 路由表是否學習完所有條目。
# 此處僅以 R1 為視角進行操作,剩下的路由器請自行驗證。 # 確認所有路由器都學習到了 4 臺 PC 所在網段的子網地址。 |
2.5 問題分析
- 這個場景存在什么問題?
# 問題分析 ?????? 根據 BGP 的路由優選原則【(8)優選從 EBGP 學來的路由(EBGP>IBGP)】,我們可以判斷當前路由的走向如下圖所示。 |
# 問題描述 ?????? 【PC1 --> PC4】(發包) 和 【PC4 --> PC1】(回復) 走了兩條不同的路徑,這將導致 ICMP 環路。 ?????? ICMP 環路屬于 最高級別 的網絡故障,它將導致網絡中出現大量的故障,包括路徑不對稱、狀態丟失、TCP 連接建立失敗、HTTPS/SSL 握手中斷、HTTP 請求隨機失敗等,且對于網絡安全有重大影響。 ?????? 在實際應用場景中體現為網頁時好時壞、大量丟包、網絡經常中斷等并發現象。 |
- 驗證 ICMP 環路
# 在 R1 和 R2 的出口節點抓包,然后用 PC1 ping PC4 # 此時 cimp 數據是通的。 # 從 R2 發出的請求,從 R4 回復,明顯發生了 ICMP 環路。 |
2.7 題目需求解析
- 題目需求
需求概括: ??? 讓 PC4 所有通往 PC1 的路徑從 R3 經過。 ??? 場景 1: ??????? 假設網絡工程師為 AS 12 的管理員,只擁有 AS 12 的配置權限。 ??? 場景 2: ??????? 假設網絡工程師為 AS 34 的管理員,只擁有 AS 34 的配置權限。 |
- 根據需求,我們需要實現的路徑為下圖所示。
2.8 場景 1:只允許在 AS12 上操作
- 解題思路:假設我們是 AS 12 的管理員,只有 AS12 的權限,無法查看 AS34 的配置。已知 AS12 和 AS 34 是對稱拓撲,那么我們就觀察 AS12 當前 bgp 的路由條目,來分析情況。
<R1> display bgp routing-table |
# 情況分析 ?????? 由此我們可推測從 R4 --> R1 的優選路由走 R2(EBGP),且 MED 屬性值為 null。 |
- 解題思路:在 R2 上進行配置,修改 med 屬性值
# 配置方法:在 R2 將路由條目 172.16.1.0/24 通告給 R4 時, 修改 Cost 值
[R2] ip ip-prefix 172.16.1.0 index 10 permit 172.16.1.0 24 ? # 2、創建 route-policy 路由策略,命名 COST-1000 [R2] route-policy COST-1000 permit node 10 ? # 3、在 route-policy COST-1000 中匹配 ip-prefix 172.16.1.0 [R2-route-policy] if-match ip-prefix 172.16.1.0 ? # 4、修改 Cost=1000 [R2-route-policy] apply cost 1000 ? # 5、配置兜底策略,放行所有路由條條目 [R2] route-policy COST-1000 permit node 20 ? # 6、進入 bgp,在 R2 將路由條目通告給 R4(peer 24.1.1.4)時,掛載 route-policy COST-1000 路由策略 [R2] bgp 12 [R2-bgp] peer 24.1.1.4 route-policy COST-1000 export # 注意:本設備路由條目發布給其他設備時 route-policy 的方向是 export |
- 驗證
# 注意:bgp 收斂較慢,配置完需要等待一段時間(32 秒),才能觀察到現象。 |
# 在 R4 查看 med 值,并觀察優選路由。 <R4> display bgp routing-table # 通往 24.1.1.2 的路由條目 MED 值修改成功。 # 通往 172.16.1.0/24 的優選路由條目下一跳是 3.3.3.3(R3)。 |
# ping 測試:pc1 ping pc4,并且在 R1 和 R2 的出口抓包觀察。 # 結果:ping 的發包路徑和回包路徑統一了,解決了 ICMP 環路問題。 |
2.9 場景 2:只允許在 AS34 上操作
- 解題思路:在 R4 接收從 R2 通告的路由條目時,修改 cost 值。
- 在 R4 上進行配置
# 1、創建 ip-prefix 前綴列表,命名為 172.16.1.0,抓取 172.16.1.0/24 的路由條目。 [R4] ip ip-prefix 172.16.1.0 index 10 permit 172.16.1.0 24 ? # 2、創建 route-policy 路由策略,命名 COST-4000 [R4] route-policy COST-4000 permit node 10 ? # 3、在 route-policy COST-4000 中匹配 ip-prefix 172.16.1.0 [R4-route-policy] if-match ip-prefix 172.16.1.0 ? # 4、修改 Cost=4000 [R4-route-policy] apply cost 4000 ? # 5、配置兜底策略,放行所有路由條條目 [R4] route-policy COST-4000 permit node 20 ? # 6、進入 bgp,在 R4 接收從 R2(peer 24.1.1.2) 通告的路由條目時,掛載 route-policy COST-4000 路由策略。 [R4] bgp 34 [R4-bgp] peer 24.1.1.2 route-policy COST-4000 import # 注意:本設備從外部路引入路由條目時,策略路由需要使用 import 方向。 |
- 驗證
<R4> display bgp routing-table |
# ping 測試和抓包測試請自行進行測試。 |