【路由交換方向IE認證】BGP選路原則之Weight屬性


文章目錄

  • 一、路由器BGP路由的處理過程
    • 控制平面和轉發平面
    • 選路工具
  • 二、BGP的選路順序
    • 選路的前提
    • 選路順序
  • 三、Wight屬性選路原則
    • 規則9與規則11的潛移默化
    • 使用Weight值進行選路
      • 直接更改Weight值進行選路
      • 配合使用route-map進行選路
  • 四、BGP鄰居建立配置

一、路由器BGP路由的處理過程

路由器對BGP路由的處理過程,簡單來說就是BGP中的選路過程

控制平面和轉發平面

一、控制平面 :是從起點到目的地所使用的IGP,BGP等路由協議從而控制產生路由表,VPNV4路由表,標簽轉發表等

二、轉發平面 :也叫做數據平面,根據剛剛產生的路由表,VPNV4路由表,標簽轉發表去進行數據的從起點到目的地的轉發

image-20250410211308046

圖1-1

選路工具

在 BGP 選路中有兩個重要的概念:

一、策略機 : 相當于route-map,能夠對屬性值進行修改,影響路由表的生成(在控制平面上:是一個過程),從而影響用戶的數據轉發

①輸入策略機:路由進入本地時的route-map,我們可以理解為 in 方向,會影響自身和下游的路由器

②輸出策略機:路由離開本地時的route-map,我們可以理解為 out 方向,只會影響下游的路由器,不會影響自身

二、路由決策 : 根據剛剛的策略機(route-map)選擇出最佳的路徑,并且將最佳的路徑添加到路由表中,簡單來說就是去哪里,哪條路比較方便或近

如圖1-2,就是BGP路由的處理過程

image-20250410213600930

圖1-2

二、BGP的選路順序

選路的場景主要面對同一個目的網絡存在多種去的方式

如圖2-1,對于R3來說,去往192.168.10.0/24有去往R1或R2兩條路可以選

image-20250410215455583

圖2-1

選路的前提

我們選路的前提是路由的下一跳可達,如果說路由的下一跳不可達的話,那么選路將不具有任何意義

選路順序

  1. 我們之前學過的那么多個BGP屬性都是能夠應用到BGP路由的選路當中的,但是也是存在依照屬性進行選路的順序的,并且如果較為前的屬性已經選出最佳路徑,那么后面的屬性將不會影響到屬性

  2. 例如:路由器已經依照Local Preference選出了最佳的路徑,而MED值無論在怎么進行修改都是無濟于事的

選路順序如下

  1. 優選Weight值較高的;
  2. 優選Local Preference值較高的;
  3. 優選AS-Path長度較短的;
  4. 按照Origin屬性為IGP、EGP、Incomplete類型的路由進行選路;(IGP > EGP > Incomplete)
  5. 優選MED值較小的路由
  6. 按照EBGP路由,接著是聯盟EBGP路由,最后是IBGP路由的順序
  7. 優越最近的IGP鄰居通告的路由
  8. 執行等價負載均衡(默認是沒有開啟等價負載均衡的)
  9. 優選BGP Router-ID 小的 Peer 通告的路由
  10. 優選Cluster-list長度較短的路由
  11. 優選較小的 Peer 地址路由器通告的路由

這么多一串順序我們將會逐一進行講解,本文章所分享的是排位第一個的屬性:Weight屬性

三、Wight屬性選路原則

1、Wight權重值,Cisco獨有的屬性,但是在銳捷和華為等一系列廠商設備里都有,其原因是Weight屬性僅在本地有效,是傳不出去給其它的BGP Peer的。

2、銳捷的Weight在本地默認值是32768,并且不可修改;Weight選路原則是Weight值越大越優先,BGP Peer學到的路由屬性應該為0

規則9與規則11的潛移默化

如圖3-1,當我們的將IP,bgp鄰居等配置都完成后,其實我們的選路順序已經生效了

文末提供配置過程

image-20250414114436327

圖3-1

在我們沒有進行配置屬性的選路之前,BGP 路由已經自動產生了選路

如圖3-2,從圖中BGP 的路由表上可以看出來R4去往1.1.1.11.1.2.1的下一跳都是走2.2.2.2

這是因為我們在什么屬性都相同的情況下,BGP 選路順序的第9條和第11條就會自動生效

規則9優選BGP Router-ID長度較短的路由

規則11優選較小的Peer地址路由器通告的路由

對于R4而言,很明顯,BGP Router-ID 較小的是R2這條路徑,所以才自動進行了選路

在這里插入圖片描述

圖3-2

使用Weight值進行選路

直接更改Weight值進行選路

如果說我們想讓R4走R3這條路呢?即去往1.1.1.1和1.1.2.1的下一跳是3.3.3.3

我們可以在R4通過直接針對R3,對他傳來的路由進行修改。下述命令就是在R4上配置,使得R3傳來的路由,R4認為其Weight值為10

如圖3-3,很明顯,與各個沒有修改Weight值先比,現在的下一跳變成了3.3.3.3,說明了我們的目的達成了

R4(config)#router bgp 200			//進入BGP進程
R4(config-router)#nei 3.3.3.3 weight 10		//將BGP Peer 3.3.3.3發過來的路由的Weight值都改為10
R4(config-router)#ex

image-20250414122130122

圖3-3

缺陷:但是這樣使用命令直接修改有一個弊端,那就是只走R4-R3這條路的話,R4-R2那條路就已經完全的空閑了下來,只有R3出現了災難的情況在啟用R4-R2的路徑

如圖3-4,也就是說,我們這樣做只起到了主備的作用,沒有起到鏈路負載均衡的作用,非常地浪費帶寬

這樣的情況可以通過我們之前提到過的策略機,也就是route-map解決,起到鏈路負載均衡的作用

image-20250414133239797

圖3-4

配合使用route-map進行選路

如圖3-5,進行負載的分別結果是1.1.1.1–>R3–>R1,1.1.2.1–>R2–>R1

根據Weight值越大越優先的原則,我們可以將對于R2而言,在R4上修改1.1.2.1的Weight值為10

可以將對于R3而言,在R4上修改1.1.1.1的Weight值為10

image-20250414133907655

圖3-5

在R4上增加配置命令如下

R4(config)#access-li 10 per 1.1.1.1 0.0.0.0		//匹配出1.1.1.1的感興趣流
R4(config)#access-li 20 per 1.1.2.1 0.0.0.0		//匹配出1.1.2.1的感興趣流
R4(config)#route-map to_R2 per 10			//創建route-map名為to_R2
R4(config-route-map)#mat ip add 20			//設置一個條件,匹配出ACL 20的流量,類似于編程里面的if語句
R4(config-route-map)#set weight 10			//當match的條件成立的時候,將weight值設為10,if成立后就執行什么的語句
R4(config-route-map)#ex
R4(config)#route-map to_R2 per 20
R4(config-route-map)#ex						//由于route-map末尾有一跳deny any,所以我們這里要寫一個空route-map,用來匹配那幾個感興趣流之外的路由
R4(config)#route-map to_R3 per 10
R4(config-route-map)#mat ip add 10
R4(config-route-map)#set weight 10 
R4(config-route-map)#ex
R4(config)#route-map to_R3 per 20
R4(config-route-map)#ex
R4(config)#router bgp 200
R4(config-router)#nei 2.2.2.2 route-map to_R2 in			//將route-map應用到BGP進程中
R4(config-router)#nei 3.3.3.3 route-map to_R3 in
R4(config-router)#ex

Question:我們可以試想,如果沒有那條空的route-map會這么樣的?

Answer:那么將會出現R4上只收到1.1.1.1和1.1.2.1這兩條路由,卻把中間進行傳輸路由的路由條目給拒絕的,所以說,我們在配置route-map的時候,習慣性的還是需要加一條空路由

如圖3-6,通過查看R4的BGP路由表可以知道,1.1.1.1和1.1.2.1的下一跳都發生了改變

并且也符合我們的預想,實現了鏈路上的負載均衡

image-20250414134534485

圖3-6

四、BGP鄰居建立配置

附上配置過程

R1

Router(config)#hos R1
R1(config)#int g0/0
R1(config-if-GigabitEthernet 0/0)#ip add 12.1.1.1 24
R1(config-if-GigabitEthernet 0/0)#ex
R1(config)#int g0/1
R1(config-if-GigabitEthernet 0/1)#ip add 12.1.2.1 24
R1(config-if-GigabitEthernet 0/1)#ex
R1(config)#int lo0
R1(config-if-Loopback 0)#ip add 1.1.1.1 32
R1(config-if-Loopback 0)#ex
R1(config)#int lo1
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ex
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#nei 12.1.1.2 remote-as 200
R1(config-router)#nei 12.1.2.3 remote-as 200
R1(config-router)#netw 1.1.1.1 mask 255.255.255.255
R1(config-router)#netw 1.1.2.1 mask 255.255.255.255
R1(config-router)#ex

R2

R2>en
R2#conf
R2(config)#hos R2
R2(config)#int g0/0
R2(config-if-GigabitEthernet 0/0)#ip add 12.1.1.2 24
R2(config-if-GigabitEthernet 0/0)#ex
R2(config)#int g0/1
R2(config-if-GigabitEthernet 0/1)#ip add 12.1.3.2 24
R2(config-if-GigabitEthernet 0/1)#ex
R2(config)#int lo0
R2(config-if-Loopback 0)#ip add 2.2.2.2 32
R2(config-if-Loopback 0)#ex
R2(config)#router ospf 10
R2(config-router)#rou 2.2.2.2
Change router-id and update OSPF process! [yes/no]:yes
R2(config-router)#netw 2.2.2.2 0.0.0.0 area 0
R2(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R2(config-router)#ex
R2(config)#router bgp 200
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#nei 12.1.1.1 remote-as 100
R2(config-router)#nei 4.4.4.4 remote-as 200
R2(config-router)#nei 4.4.4.4 update-sou lo0
R2(config-router)#nei 4.4.4.4 next-hop-self
R2(config-router)#ex

R3

Router>en
Router#conf
Router(config)#hos R3
R3(config)#int g0/0
R3(config-if-GigabitEthernet 0/0)#ip add 12.1.2.3 24
R3(config-if-GigabitEthernet 0/0)#ex
R3(config)#int g0/1
R3(config-if-GigabitEthernet 0/1)#ip add 12.1.4.3 24
R3(config-if-GigabitEthernet 0/1)#ex
R3(config)#int lo0
R3(config-if-Loopback 0)#ip add 3.3.3.3 32
R3(config-if-Loopback 0)#ex
R3(config)#router ospf 10
R3(config-router)#rou 3.3.3.3
Change router-id and update OSPF process! [yes/no]:yes
R3(config-router)#netw 3.3.3.3 0.0.0.0 area 0
R3(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R3(config-router)#ex
R3(config)#router bgp 200
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#nei 12.1.2.1 remote-as 100
R3(config-router)#nei 4.4.4.4 remote-as 200
R3(config-router)#nei 4.4.4.4 update-sou lo0
R3(config-router)#nei 4.4.4.4 next-hop-self
R3(config-router)#ex

R4

R4>en
R4#conf
R4(config)#hos R4
R4(config)#int g0/0
R4(config-if-GigabitEthernet 0/0)#ip add 12.1.3.4 24
R4(config-if-GigabitEthernet 0/0)#ex
R4(config)#int g0/1
R4(config-if-GigabitEthernet 0/1)#ip add 12.1.4.4 24
R4(config-if-GigabitEthernet 0/1)#ex
R4(config)#int lo0
R4(config-if-Loopback 0)#ip add 4.4.4.4 32
R4(config-if-Loopback 0)#ex
R4(config)#int lo1
R4(config-if-Loopback 1)#ip add 4.4.3.4 32
R4(config-if-Loopback 1)#ex
R4(config)#router ospf 10
R4(config-router)#rou 4.4.4.4
Change router-id and update OSPF process! [yes/no]:yes
R4(config-router)#netw 4.4.4.4 0.0.0.0 area 0
R4(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R4(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R4(config-router)#ex
R4(config)#router bgp 200
R4(config-router)#nei 2.2.2.2 remote-as 200
R4(config-router)#nei 2.2.2.2 update-sou lo0
R4(config-router)#nei 3.3.3.3 remote-as 200
R4(config-router)#nei 3.3.3.3 update-sou lo0
R4(config-router)#netw 4.4.4.4 mask 255.255.255.255
R4(config-router)#net 4.4.3.4 mask 255.255.255.255
R4(config-router)#ex

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901474.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901474.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Missashe考研日記-day20

Missashe考研日記-day20 1 高數 學習時間:2h30min學習內容: 今天當然是刷題啦,做不等式的證明板塊的真題,證明題懂的都懂,難起來是真的一點思路都沒有,這個板塊還沒做完,做完再總結題型。 2…

了解JVM

一.JVM概述 1.JVM的作用 ?把字節碼編譯為機器碼去執行,負責把字節碼裝載到虛擬機中 ?現在的 JVM 不僅可以執行 java 字節碼文件,還可以執行其他語言編譯后的字節碼文件,是一個跨語言平臺 2.JVM的組成部分 類加載器(ClassLoader)運行時數據區&#x…

LeetCode LCR157 套餐內商品的排列順序

生成字符串的全部排列(去重):從問題到解決方案的完整解析 問題背景 在編程和算法設計中,生成字符串的所有排列是一個經典問題。它不僅出現在算法競賽中,也在實際開發中有著廣泛的應用,比如生成所有可能的…

pgsql:關聯查詢union(并集)、except(差集)、intersect(交集)

pgsql:關聯查詢union(并集)、except(差集)、intersect(交集)_pgsql except-CSDN博客

微信小程序中使用ECharts 并且動態設置數據

項目下載地址 GitHub 地址 https://github.com/ecomfe/echarts-for-weixin 將當前文件夾里的內容拷貝到項目中 目錄&#xff1a; json: {"usingComponents": {"ec-canvas": "../components/ec-canvas/ec-canvas"} }wxml&#xff1a; <ec…

RV1126 人臉識別門禁系統解決方案

1. 方案簡介 本方案為類人臉門禁機的產品級解決方案,已為用戶構建一個帶調度框架的UI應用工程;準備好我司的easyeai-api鏈接調用;準備好UI的開發環境。具備低模塊耦合度的特點。其目的在于方便用戶快速拓展自定義的業務功能模塊,以及快速更換UI皮膚。 2. 快速上手 2.1 開…

深度學習ResNet模型提取影響特征

大家好&#xff0c;我是帶我去滑雪&#xff01; 影像組學作為近年來醫學影像分析領域的重要研究方向&#xff0c;致力于通過從醫學圖像中高通量提取大量定量特征&#xff0c;以輔助疾病診斷、分型、預后評估及治療反應預測。這些影像特征涵蓋了形狀、紋理、灰度統計及波形變換等…

DeepSeek 接入 Word 完整教程

一、前期準備 1.1 注冊并獲取 API 密鑰 訪問 DeepSeek 平臺&#xff1a; 打開瀏覽器&#xff0c;訪問 DeepSeek 官方網站&#xff08;或您使用的相應平臺&#xff09;。注冊并登錄您的賬戶。 創建 API 密鑰&#xff1a; 在用戶控制面板中&#xff0c;找到“API Keys”或“API…

驅動開發硬核特訓 · Day 7:深入掌握 Linux 驅動資源管理機制(Resource Management)

&#x1f50d; B站相應的視屏教程&#xff1a; &#x1f4cc; 內核&#xff1a;博文視頻 - 總線驅動模型實戰全解析 —— 以 PCA9450 PMIC 為例 敬請關注&#xff0c;記得標為原始粉絲。 &#x1f6a9; 在 Linux 驅動開發中&#xff0c;資源管理機制決定了驅動的穩定性與可靠性…

什么是TensorFlow?

TensorFlow 是由 Google Brain 團隊開發的開源機器學習框架&#xff0c;被廣泛應用于深度學習和人工智能領域。它的基本概念包括&#xff1a; 1. 張量&#xff08;Tensor&#xff09;&#xff1a;在 TensorFlow 中&#xff0c;數據以張量的形式進行處理。張量是多維數組的泛化…

【ChCore Lab 01】Bomb Lab 拆炸彈實驗(ARM匯編逆向工程)

文章目錄 1. 前言2. 實驗代碼版本問題3. 關于使用問題4. 宏觀分析5. read_line 函數介紹6. phase_0 函數6.1. read_int 函數6.2. 回到 phase_0 函數繼續分析6.3. 驗證結果 7. phase_1 函數7.2. 驗證結果 8. phase_2 函數8.1. read_8_numbers 函數8.2. 回到 phase_2 函數繼續分析…

《Vue Router實戰教程》20.路由懶加載

歡迎觀看《Vue Router 實戰&#xff08;第4版&#xff09;》視頻課程 路由懶加載 當打包構建應用時&#xff0c;JavaScript 包會變得非常大&#xff0c;影響頁面加載。如果我們能把不同路由對應的組件分割成不同的代碼塊&#xff0c;然后當路由被訪問的時候才加載對應組件&am…

docker 多主機容器組網

一、服務器A 1、初始化Swarm集群&#xff08;管理節點&#xff09; docker swarm init --advertise-addr 主節點ip 2、獲取工作節點??加入Swarm集群所需的Token 和完整命令 docker swarm join-token worker 3、創建Overlay網絡 docker network create -d overlay --subnet…

rancher 解決拉取dashboard-shell鏡像失敗的問題

問題背景 在 Kubernetes 集群中部署 Rancher 后&#xff0c;點擊右上角的 "Shell" 按鈕時&#xff0c;Rancher 會動態創建一個 dashboard-shell-xxxxx Pod&#xff0c;用于提供 Web 終端功能。然而&#xff0c;由于默認鏡像 rancher/shell:v0.1.21 托管在 Docker Hu…

OpenCV day2

Matplotlib相關知識 Matplotlib相關操作&#xff1a; import numpy as np from matplotlib import pyplot as pltx np.linspace(0, 2 * np.pi, 100) y1 np.sin(x) y2 np.cos(x)# 使用紅色虛線&#xff0c;圓點標記&#xff0c;線寬1.5&#xff0c;標記大小為6繪制sin plt.p…

【網絡安全】通過 JS 尋找接口實現權限突破

未經許可,不得轉載。 本文所述所有風險點均已修復。 文章目錄 引言正文引言 以下些漏洞已被起亞方面修復;起亞方面確認,這些漏洞從未被惡意利用過。 2024年6月11日,我們發現起亞汽車存在一系列嚴重安全漏洞,攻擊者僅憑車牌號即可遠程控制車輛的核心功能。該攻擊不需要接觸…

LabVIEW 發電機勵磁系統監測與診斷

在現代工業體系中&#xff0c;發電機作為關鍵的電能轉換設備&#xff0c;其穩定運行對于電力供應的可靠性起著決定性作用。而勵磁系統作為發電機的核心控制部分&#xff0c;直接影響著發電機的性能和電力系統的穩定性。一旦勵磁系統出現故障&#xff0c;可能引發發電機電壓波動…

MacOS紅隊常用攻擊命令

MacOS紅隊常用攻擊命令 1.自動化武器2.系統信息3.服務 & 內核信息4.快捷命令5.網絡相關6.brew相關 / 軟件包相關7.高權限命令8.創建一個管理員權限的后門用戶 1.自動化武器 1、linPEAS LinPEAS 是一個腳本&#xff0c;用于在 Linux/Unix/MacOS 主機上搜索提權路徑 2、me…

【數據結構_8】棧和隊列

一、反向輸出鏈表元素 Ⅰ使用遞歸進行反向輸出 package stack; public class Test2 {static class Node{public String val;public Node next;//構造方法public Node(String val) {this.val val;this.next null;}}//利用遞歸來反向輸出鏈表public static void reverse(Nod…

Java 正則表達式綜合實戰:URL 匹配與源碼解析

在 Web 應用開發中&#xff0c;我們經常需要對 URL 進行格式驗證。今天我們結合 Java 的 Pattern 和 Matcher 類&#xff0c;深入理解正則表達式在實際應用中的強大功能&#xff0c;并剖析一段實際的 Java 示例源碼。 package com.RegExpInfo;import java.util.regex.Matcher; …