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


文章目錄

  • 一、路由器BGP路由的處理過程
    • 控制平面和轉發平面
    • 選路工具
  • 二、BGP的選路順序
    • 選路的前提
    • 選路順序
  • 三、AS-Path屬性選路原則
    • AS-Path屬性特性
    • AS-Path管進還是管出呢?
    • 使用AS-Path對進本AS的路由進行選路
    • 驗證AS-Path不接收帶本AS號的路由
  • 四、BGP鄰居建立配置

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

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

控制平面和轉發平面

一、控制平面 :是從起點到目的地所使用的IGP,BGP等路由協議從而控制產生路由表,VPNV4路由表,標簽轉發表等,由這些表去控制我們的FIB表,也就是數據轉發表

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

如圖1-1,

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 地址路由器通告的路由

這么多一串順序我們將會逐一進行講解,本文章所分享的是排位第三個的屬性,AS-Path屬性,該屬性即可進行選路們還具有防環的作用

講解Weight屬性的文章:【路由交換方向IE認證】BGP選路原則之Weight屬性-CSDN博客

講解AS-Path屬性的文章:【路由交換方向IE認證】BGP選路原則之Local Preference屬性-CSDN博客

三、AS-Path屬性選路原則

AS-Path屬性特性

AS-Path優選原則,AS-Path長度越短越優先,在AS-Path選路當中,我們的策略機依然是使用route-map

如圖3-1,由于AS-Path屬性的不只含有選路這一個屬性,還可以進行路由的防環

image-20250418144105691

圖3-1

所以我們在調整AS-Path屬性長度進行選路的時候,盡量地不要去減少AS-Path的長度,這樣就產生了AS-Path的第一個調整原則,:只增不減

除此之外,AS-Path的route-map在使用時,in方向或是out方向,都會對結果造成不同

如圖3-2,當route-map使用在in方向的時候,則 AS 號添加到原始AS號的左側;當route-map使用在out方向的時候,則 AS 號添加到原始AS號的右側

image-20250418151839267

圖3-2

由于AS-Path的來源是經過的各個AS-Path,所以對于IBGP Peer和EBGP Peer之間傳遞的AS-Path是否發生改變是不一樣的

結論是:IBGP Peer 之間傳遞路由的時候,由于AS-Path沒有發生了變化,AS-Path值并不會發生改變;EBGP Peer 之間傳遞路由的時候,由于AS-Path發生了變化,所以相對應的AS-Path也會發生變化

如圖3-3,當R1傳遞給R2路由時,由于是EBGP Peer 關系,所以路由中的AS-Path屬性會發生變化;當R2傳遞路由給R4時,由于是IBGP Peer關系,所以傳遞的路由中AS-Path屬性不會發生變化

image-20250418153448856

圖3-3

在特殊的情況下,我們不想讓AS-Path屬性進行選路,而是只讓其發揮防環的作用,可以通過下述命令來使AS-Path屬性不參加選路

R1>en
R1#conf
R1(config)#router bgp 100
R1(config-router)#bgp bestpath as-path ignore    //使得AS-Path不參與選路
R1(config-router)#ex

AS-Path管進還是管出呢?

我們所說的管進還是管出,是相對于本AS來說的,仔細回想起來,我們的AS-Path屬性是公認必遵屬性,可以傳播到BGP網絡中的任意一個角落,相比于Local Preference,不需要考慮跨AS能否傳遞的問題,所以我們AS-Path屬性是能夠管進也能管出的

如圖3-4與圖3-5,分別是AS-Path進入本公司和AS-Path出本公司的選路示意圖

image-20250418164346922

圖3-4

image-20250418164401867

圖3-5

使用AS-Path對進本AS的路由進行選路

在實際的生產環境中,由于我們能進行配置的只有本公司的設備,所以無法在R1上進行配置,我們的AS-Path選路需要在R2或者R3上進行

使用AS-Path進行選路需求: 控制R1進本公司的選路; 控制R1訪問4.4.3.4走R3,控制R1訪問4.4.4.4走R2(奇數走奇數,偶數走偶數);

思路:根據AS-Path長度越小越優先的原則,我們要讓R3發出4.4.4.4路由中的AS-Path屬性更長,讓R2發出4.4.3.4路由中的AS-Path屬性更長,如圖3-7,調整AS-Path值如圖所示

image-20250418190708110

圖3-7

但我們回過頭來一想,4.4.4.4是默認走的就是R2這條路徑,所以,我們并不是非常低有必要去更改R2對于4.4.4.4向R1發出的AS-Path值,如圖3-8

image-20250418191155594

圖3-8

這就極大的減少了我們配置的工作量,現在只需要在R2上對于4.4.3.4向R1發出的 AS-Path值進行修改

如圖3-9,prepend表示對整個路由的AS-Path值的增加,replace表示對整個路由的AS-Path值的替換

image-20250418193510869

圖3-9

在R2上進行配置操作

R2(config)#access-li 10 per 4.4.4.4 0.0.0.0
R2(config)#route-map AS-P per 10
R2(config-route-map)#mat ip add 10
R2(config-route-map)#set as-path prepend 200
R2(config-route-map)#ex
R2(config)#route-map AS-P per 20
R2(config-route-map)#ex
R2(config)#router bgp 200
R2(config-router)#nei 12.1.1.1 route-map AS-P out 
R2(config-router)#ex

如圖3-10,在R1上執行show ip bgp的命令,可以發現選路情況已經發生了變化,并且已經達到了預期;在標注處也顯示AS-Path的長度修改成功

image-20250418194211679

圖3-10

驗證AS-Path不接收帶本AS號的路由

如圖3-11,我們可以在route-map中設置發出路由的AS 號中增加 AS 100,在R1上觀察BGP路由表會發生什么變化

image-20250418195202505

圖3-11

在R2上的配置如下

R2>en
R2#conf
R2(config)#route-map AS-P per 10
R2(config-route-map)#set as-path prepend 100
R2(config-route-map)#ex

在R1上執行show ip bgp的命令,觀察BGP路由表,如圖3-12,發現對于4.4.4.4這條路由來說,已經中斷了與R2的鄰居關系

image-20250418195313813

圖3-12

四、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/bicheng/77380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77380.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77380.shtml

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

相關文章

2025年熱門項目管理軟件對比:20款工具詳解

本文主要盤點的工具有:1. PingCode; 2. Worktile; 3. Jira; 4. Trello; 5. TAPD; 6. Monday.com; 7. 進度貓; 8. 豬齒魚; 9. 簡道云; 10. Tita項目管理等等20款項目管理軟件(含免費)。 在如今競爭激烈的商業環境中,項目管理軟件已…

yaffs_write_new_chunk()函數解析

yaffs_write_new_chunk() 是 YAFFS(Yet Another Flash File System)文件系統中用于將數據寫入新物理塊(chunk)的關鍵函數。以下是其詳細解析: 函數原型 int yaffs_write_new_chunk(struct yaffs_dev *dev, const u8 *…

網絡安全-Burp Suite基礎篇

聲明 本文主要用做技術分享,所有內容僅供參考。任何使用或者依賴于本文信息所造成的法律后果均與本人無關。請讀者自行判斷風險,并遵循相關法律法規。 1 Burp Suite功能介紹 1.1 Burp Suite 簡介 Burp Suite 是一款極為強大且廣受歡迎的集成化 …

網絡編程 - 2

目錄 UDP 數據報套接字編程 API 介紹 DatagramSocket DatagramPacket 補充: 代碼示例 - 回顯服務器 服務器端: 客戶端: 補充: 代碼演示 梳理代碼: 下面是一個大概的流程圖~ 文字解釋: 圖文并…

【C++深入系列】:模版詳解(上)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 你不需要很厲害才能開始,但你需要開始才能很厲害。 ★★★ 本文前置知識: 類和對象(上) …

java 設計模式之策略模式

簡介 策略模式:策略模式可以定制目標對象的行為,它通過傳入不同的策略實現,來配置目標對象的行為。使用策略模式,就是為了定制目標對象在某個關鍵點的行為。 策略模式中的角色: 上下文類:持有一個策略類…

Perf學習

重要的能解決的問題是這些: perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…

「倉頡編程語言」Demo

倉頡編程語言」Demo python 1)# 倉頡語言寫字樓管理系統示例(虛構語法)# 語法規則:中文關鍵詞 類Python邏輯定義 寫字樓管理系統屬性:租戶庫 列表.新建()報修隊列 列表.新建()費用單價 5 # 元/平方米方法 添加租戶(名稱, 樓層, 面積):…

鎖(Mutex)、信號量(Semaphore)與條件量(Condition Variable)

一、同步機制的核心意義 在多線程/多進程編程中,當多個執行流共享資源(如變量、內存、文件)時,可能因操作順序不確定導致數據競爭(Data Race)。同步機制的作用是: 保證原子性:確保…

前端基礎之《Vue(6)—組件基礎(2)》

接上一篇。 七、v-model深入學習 <html> <head><title>組件基礎-4</title><style>.score {display: inline-block;}.score>span {display: inline-block;width: 25px;height: 25px;background: url(./assets/star.png) center center / 25p…

SQL:聚合函數(Aggregate Functions)

目錄 第一性原理出發思考 ——我們為什么需要聚合函數&#xff1f; 什么是聚合函數&#xff1f; 常見聚合函數 實例講解 &#x1f538; 1. COUNT() —— 計數 &#x1f538; 2. MAX() / MIN() —— 最大 / 最小值 &#x1f538; 3. SUM() —— 求和 &#x1f538; 4. …

海關總署廣東:廣東外貿一季度進出口2.14萬億元 同期增長4.2%

大灣區經濟網灣區財經報道&#xff0c;據海關總署廣東分署統計&#xff0c;今年一季度&#xff0c;廣東外貿進出口2.14萬億元&#xff0c;較去年同期&#xff08;下同&#xff09;增長4.2%&#xff0c;增速高于全國2.9個百分點。其中&#xff0c;出口1.34萬億元&#xff0c;增長…

MySQL中高級語法

Mysql高級語法 持續更新中… 1、EXISTS語法 一、基本語法結構 SELECT [列名] FROM [主表] WHERE [條件]AND EXISTS (SELECT 1 -- 子查詢內容無關&#xff0c;僅需占位符&#xff08;如1、*、X等&#xff09;FROM [子查詢表]WHERE [關聯條件] -- 必須與外層查詢關聯&#xf…

SpringBoot 調用deepseek

個人學習心得&#xff0c;僅供參考 軟件環境&#xff1a; JDK 17 你用JDK 11 無法支持SpringBoot 3SpringBoot 3 版本以上才支持spring aimavan 3.6.11.獲取Deepseek官網的API-key 官網&#xff1a;https://platform.deepseek.com/api_keys 2.創建項目 這樣創建 添加依賴…

性能測試面試題的詳細解答

以下是性能測試面試題的詳細解答&#xff1a; 1. 性能測試的流程是怎樣的&#xff1f; 性能測試流程通常包括以下幾個步驟&#xff1a; - **需求分析**&#xff1a;明確測試目標、性能指標&#xff08;如響應時間、吞吐量等&#xff09;。 - **環境搭建**&#xff1a;搭建測試環…

C++程序設計基礎實驗:C++對C的擴展特性與應用

C程序設計基礎實驗&#xff1a;C對C的擴展特性與應用 &#x1f525; 本文詳細講解C基礎實驗&#xff0c;包含C對C語言的擴充與增強特性&#xff0c;從零開始掌握函數重載、引用、指針等核心概念&#xff0c;附詳細代碼分析與運行結果。適合C初學者和有C語言基礎想學習C的同學&a…

量子神經網絡編譯器開發指南:從理論突破到產業落地全景解析

本文深度剖析IBM Qiskit 5.0量子經典混合編譯器的技術架構&#xff0c;詳解如何基于含噪量子處理器實現MNIST手寫數字分類任務&#xff08;準確率達89%&#xff09;。結合本源量子云、百度量子等國內平臺免費配額政策&#xff0c;系統性闡述量子神經網絡開發的技術路線與資源獲…

ESP32之本地HTTP服務器OTA固件升級流程,基于VSCode環境下的ESP-IDF開發(附源碼)

背景知識&#xff1a; 本實驗利用編譯鏈內Python內置的 HTTP 服務器&#xff0c;將升級包通過http發送給設備&#xff0c;實現OTA固件升級。 目錄 背景知識&#xff1a; 1.創建工程 1.1 創建OTA基礎工程 3.編寫、修改代碼 3.1 修改menuconfig配置文件 3.1.1 配置WiFi賬…

BootStrap:進階使用(其一)

今天我要講述的是在BootStrap中進一步使用的方法與代碼舉例; 導航條 作為在應用或網站中作為導航頁頭的響應式基礎組件。導航條在移動設備上可以折疊&#xff08;且可開可關&#xff09;&#xff0c;在視口&#xff08;viewport&#xff09;寬度增加時逐漸變為水平展開模式 …

ffmpeg無損轉格式的命令行

將ffmpeg.exe拖入命令行窗口 c:\users\zhangsan>D:\ffmpeg-2025-03-11\bin\ffmpeg.exe -i happy.mp4 -c:v copy -c:a copy 格式轉換后.mkv -c:v copy 僅做拷貝視頻,不重新編碼 -c:a copy 僅做拷貝音頻 ,不重新編碼