HCIP(BGP基礎)

一、BGP 基礎概念

1.?網絡分類與協議定位
  • IGP(內部網關協議):用于自治系統(AS)內部路由,如 RIP、OSPF、EIGRP,關注選路效率、收斂速度和資源占用。
  • EGP(外部網關協議):用于 AS 之間的路由傳遞,BGP 是主流 EGP 協議,負責跨 AS 路由信息交換。
2.?自治系統(AS)
  • 定義:由單一組織管理的網絡(含設備),通過AS 號唯一標識。
  • 編號規則
    • 傳統 16 位 AS 號范圍:0-65535(如中國骨干網 AS 號為 4134)。
    • 擴展 32 位 AS 號:解決 16 位 AS 號耗盡問題,由 IANA 管理。
3.?BGP 版本特性
  • BGPv4:傳遞 IPv4 路由,是最常用版本。
  • BGPv4+:支持 IPv6 等多網絡環境,適應復雜拓撲。

二、BGP 協議核心特性

1.?路由協議類型
  • 路徑矢量路由協議:以 AS 為單位傳遞路由,下一跳為發送設備,不依賴算法計算路徑,僅傳遞路由表中已存在的路由。
  • 無類別路由協議:路由條目攜帶子網掩碼,支持 CIDR(無類域間路由)。
2.?可靠性與可控性
  • 可靠性
    • 基于 TCP(端口 179)傳輸,通過確認機制保證報文可靠交付,無需周期更新。
    • 唯一使用 TCP 的路由協議,其他 IGP 多基于 UDP 或跨層封裝(如 OSPF)。
  • 可控性:通過路徑屬性(如 AS_PATH、本地優先級 LP、MED 等)干預選路,解決 AS 間路由冗余和策略控制問題。

三、BGP 對等體(鄰居)機制

?

1.?對等體類型與建鄰規則
  • EBGP 對等體
    • 位于不同 AS,需直連建立(默認 TTL=1,僅一跳),路由傳遞時攜帶 AS_PATH 防環。
    • 例:AS100 與 AS200 的邊界設備通過直連接口建立 EBGP 鄰居。
  • IBGP 對等體
    • 同一 AS 內,支持非直連建鄰(TTL=255),推薦使用環回接口(LoopBack)建立邏輯連接,需確保 IGP 可達。
    • 例:AS 內部設備通過環回接口 IP 建立 IBGP 鄰居,需配置connect-interface指定更新源。
2.?建鄰過程與狀態機
  1. TCP 連接建立
    • 雙方發起 TCP 三次握手,建立兩個連接,最終保留 Router ID 較小者發起的連接(Router ID 生成規則與 OSPF 一致,需唯一)。
  2. Open 報文協商
    • 攜帶版本、AS 號、保活時間(默認 180 秒,協商取最小值)、Router ID 等參數,AS 號不一致會導致建鄰失敗。
  3. Keepalive 確認與保活
    • 周期發送 Keepalive 報文(默認 60 秒),確認參數協商成功并維持連接活性。

四、BGP 報文類型與功能

報文類型功能描述關鍵字段 / 特性發送時刻
Open協商建鄰參數,建立對等體關系版本、AS 號、保活時間、Router ID、可選參數(認證、路由刷新)BGP TCP連接建立成功之后
Update發布路由更新(新增 / 撤銷路由),攜帶路徑屬性和可達網絡信息撤銷路由列表、路徑屬性(AS_PATH、MED 等)、NLRI(網絡層可達信息)BGP對等體關系建立之后有路由需要發送或路由變化時向對等體發送Update報文
Keepalive確認 Open 參數,周期保活(默認 60 秒),維持對等體連接無有效負載,僅公共頭部當BGP在運行中發現錯誤時,發送Notification報文將錯誤通告給BGP對等體
Notification報告錯誤(如參數不匹配、路由無效),終止對等體關系錯誤代碼、子代碼、錯誤數據BGP路由器收到對端發送的Keepalive報文,將對等體狀態置為已建立,同時后續定期發送keepalive報文用于保持連接
Route-refresh請求對等體重新發送路由(需雙方支持路由刷新功能)用于策略變更后同步路由,減少人工干預當路由策略發生變化時,觸發請求對等體重新
通告路由

?open報文---建立BGP對等體

update報文--更新報文用來承載BGP路由信息的報文

公共頭部格式

  • Marker(16 字節):用于認證(若啟用),通常為全 0 或特定值。
  • Length(2 字節):報文總長度(含頭部)。
  • Type(1 字節):標識報文類型(1-5 分別對應 Open 到 Route-refresh)。

五、BGP 工作流程與狀態機

1.?狀態機階段與遷移

BGP 建鄰通過 6 種狀態機實現:

Peer狀態名稱用途
Idle開始準備TCP的連接并監視遠程對等體,啟用BGP時,要準備足夠的資源
Connect正在進行TCP連接,等待完成中,認證都是在TCP建立期間完成的。如果TCP連接建立失敗則進入Active狀態,反復嘗試連接
ActiveTCP連接沒建立成功,反復嘗試TCP連接
OpenSentTCP連接已經建立成功,開始發送Open包,Open包攜帶參數協商對等體的建立
OpenConfirm參數、能力特性協商成功,自己發送Keepalive包,等待對方的Keepalive包
Established已經收到對方的Keepalive包,雙方能力特性經協商發現一致,開始使用Update通告路由信息

Idle--空閑狀態:在指定建立對等體對象時,監測設備是否存在路由,如果存在那么進入下一 個狀態并準備建立三次握手,如果沒有路由,那么停留在idle狀態

?

2.?完整工作流程
  1. 路由可達性:依賴 IGP(如 OSPF、靜態路由)確保 BGP 設備間 IP 連通,為 TCP 連接建立的前提。
  2. 對等體建立:通過 TCP 三次握手和 Open/Keepalive 報文完成參數協商,生成鄰居表。
  3. 路由交換
    • 使用 Update 報文傳遞路由,攜帶 AS_PATH、MED 等屬性,存儲于 BGP 路由表。
    • 僅傳遞最優路由(默認無負載均衡),路由表中標記 “>” 為優選路由。
  4. 選路與安裝:根據路徑屬性篩選最優路由,加載到全局路由表(需下一跳可達)。
  5. 連接維護:周期發送 Keepalive(默認 60 秒);路由變化時觸發 Update,故障時發送 Notification 終止連接。

六、路由黑洞與防環機制

1.?路由黑洞問題與解決方案
  • 問題本質:AS 內部非 BGP 設備無路由,導致控制平面可達但數據平面不可達(如 IGP 與 BGP 路由不一致)。
  • 解決方案
    1. 全互聯 IBGP:AS 內所有設備兩兩建立 IBGP 鄰居(適用于小規模 AS)。
    2. 路由反射器(RR):通過反射器減少鄰居數量,Client 與非客戶機制優化路由傳遞(反射規則:Client→全反射,非客戶→僅反射給 Client)。
    3. MPLS(多協議標簽交換):通過標簽轉發繞過 IGP 路由缺失問題。
    4. 重發布 IGP 到 BGP:將 AS 內路由注入 BGP,但需結合路由策略過濾無關路由。
2.?防環機制
  • EBGP 防環
    • AS_PATH 屬性:路由每經過一個 AS,其 AS 號添加到路徑列表,接收方若發現本地 AS 號在列表中則拒絕路由(核心防環手段)。
  • IBGP 防環
    • 水平分割原則:從 IBGP 鄰居學到的路由不轉發給其他 IBGP 鄰居。
    • 路由反射器輔助防環:通過Originator ID(反射源 RID)和Cluster List(反射器 RID 列表)避免環路。
    • 聯邦防環:將大 AS 劃分為小聯邦 AS(私有 AS 號 64512-65535),內部使用 EBGP 規則防環,外部統一為公共 AS 號。

七、路由發布與聚合

1.?路由發布方式
  • Network 命令
    • 精確發布路由表中存在的網段(需掩碼完全匹配),Origin 屬性為 “i”(IGP)。
    • 例:[r1-bgp] network 1.1.1.0 24?發布直連路由,要求路由表中存在該精確路由。
  • 重分布(Import-route)
    • 引入 IGP 路由(如 OSPF)到 BGP,Origin 屬性為 “?”(Incomplete),需結合路由策略(如 IP 前綴列表、Route-policy)過濾。
    • 例:[r2-bgp] import-route ospf 1 route-policy filter?引入 OSPF 路由并過濾非目標網段。
2.?路由聚合
  • 自動聚合
    • 僅對重分布路由有效,聚合成主類網絡(如 192.168.0.0/16),生成空接口路由防環,但靈活性低,易產生黑洞路由,默認不推薦。
  • 手工聚合
    • 自定義聚合網段和掩碼,支持抑制明細路由(detail-suppressed)和保留 AS_PATH(as-set)。
    • 例:[r1-bgp] aggregate 172.16.0.0 22 detail-suppressed as-set?聚合路由并抑制明細,保留 AS 路徑防止環路。

八、路徑屬性與選路規則

1.?關鍵路徑屬性詳解
屬性名稱類型傳遞范圍選路邏輯典型應用場景
Preferred-Value(PV)本地屬性不傳遞值越大越優(華為私有,僅影響本地選路)單設備多路徑選路策略
Local Preference(LP)公認強制IBGP 內傳遞值越大越優(AS 內出口策略控制)AS 內統一路由出口優先級
MED(多出口鑒別)可選非過渡EBGP 間傳遞值越小越優(影響相鄰 AS 選路)控制相鄰 AS 進入本 AS 的路徑
AS_PATH公認強制所有對等體路徑越短越優,防環核心屬性選路時優先選擇 AS 跳數少的路徑
Origin公認強制所有對等體優先級:i(IGP)> e(EGP)> ?(Incomplete)路由來源可信度判斷
2.?選路規則優先級(自上而下)
  1. 丟棄下一跳不可達的路由:BGP 路由表中 “* valid” 表示可用,下一跳不可達則無效。
  2. 比較 PV 值:華為設備本地屬性,值大優先(如[r4-bgp] peer 3.3.3.3 preferred-value 100)。
  3. 比較 LP 值:AS 內統一策略,值大優先(如[r3-bgp] default local-preference 200全局設置)。
  4. 本地始發路由優先:優先級順序為手工聚合 > 自動聚合 > Network > 重分布。
  5. AS_PATH 最短優先:通過策略添加 AS 號(如apply as-path 123 additive)延長路徑,引導選路。
  6. Origin 類型優先:i > e > ?,可通過策略修改(如apply origin igp將路由來源標記為 IGP)。
  7. MED 值最小優先:僅在相同 AS 的 EBGP 鄰居間比較,跨 AS 比較需配置compare-different-as-med
  8. EBGP 路由優先于 IBGP:相同路由來源時,EBGP 路由優先級更高。
  9. IGP 度量值最小優先:到下一跳的 IGP 路徑開銷越小越優(如 OSPF Cost)。
  10. Cluster List 最短優先:路由反射器環境中,簇列表越短越優,避免環路。
  11. Router ID 或對等體 IP 較小者優先:當所有屬性相同時,取設備標識較小者。

起源者ID--在一個AS內部反射路由的源頭設備的RID--當設備產生反射路由時如果沒有起源者ID 那么將添加該屬性,如果反射器反射路由時該路由已經存在起源者ID那么將僅反射

簇列表--AS_path---每經過一個反射器的反射均會添加該反射器的RID(簇ID)到簇列表中,之 后設備一旦收到一條IBGP路由時,如果路由攜帶的簇ID和自身設備的簇ID一致,那么將拒絕 學習該路由

九、BGP 基礎配置示例

1.?啟動 BGP 與基本參數配置
[r1] bgp 100          # 啟動BGP,指定AS號為100  
[r1-bgp] router-id 1.1.1.1  # 配置Router ID(需全局唯一)  
2.?建立 EBGP 對等體(直連)
[r1-bgp] peer 12.0.0.2 as-number 200  # 對端IP為12.0.0.2,AS號為200  
3.?建立 IBGP 對等體(環回接口,非直連)
[r3-bgp] peer 4.4.4.4 as-number 100    # 對端Router ID為4.4.4.4,同屬AS100  
[r3-bgp] peer 4.4.4.4 connect-interface LoopBack0  # 指定更新源為環回接口  
[r3-bgp] peer 4.4.4.4 ebgp-max-hop 255  # 允許非直連建鄰(默認TTL=1,需調整)  
4.?發布路由與策略配置
  • Network 發布精確路由
    [r1-bgp] network 1.1.1.0 24  # 發布路由表中存在的1.1.1.0/24網段  
    
  • 重分布 IGP 路由并過濾
    [r2] ip ip-prefix filter permit 3.3.3.0/24  # 抓取目標網段  
    [r2] route-policy filter permit node 10     # 創建路由策略  
    [r2-route-policy] if-match ip-prefix filter  # 匹配目標網段  
    [r2-bgp] import-route ospf 1 route-policy filter  # 引入OSPF路由并應用策略  
    
5.?路由反射器(RR)配置
[r3-bgp] peer 2.2.2.2 reflect-client  # 將2.2.2.2設為客戶端,允許反射路由  
6.?聯邦(Confederation)配置
[r2] bgp 64512          # 啟動聯邦內AS號(私有AS號)  
[r2-bgp] confederation id 2  # 聲明所屬公共AS號為2  
[r2-bgp] peer 3.3.3.3 as-number 64512  # 聯邦內IBGP鄰居使用私有AS號建鄰  

十、常見問題與解決方案

  1. 下一跳不可達
    • 原因:IBGP 環境中,路由下一跳為對端環回接口 IP,若 IGP 未通告該路由則不可達。
    • 解決:配置[r2-bgp] peer 3.3.3.3 next-hop-local,將下一跳修改為本地接口 IP。
  2. IBGP 全互聯規模問題
    • 原因:AS 內設備較多時,全互聯鄰居數量呈平方級增長(N*(N-1)/2)。
    • 解決:引入路由反射器(RR)或聯邦,減少鄰居數量,優化拓撲。
  3. 聚合路由環路
    • 原因:手工聚合未保留 AS_PATH,導致路由環路風險。
    • 解決:聚合時添加as-set參數(如aggregate ... as-set),繼承明細路由的 AS 路徑。

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

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

相關文章

【HarmonyOS 5】 ArkUI-X開發中的常見問題及解決方案

一、跨平臺編譯與適配問題 1. 平臺特定API不兼容 ?問題現象?:使用Router模塊的replaceUrl或startAbility等鴻蒙專屬API時,編譯跨平臺工程報錯cant support crossplatform application。 ?解決方案?: 改用ohos.router的跨平臺封裝API&a…

Matlab2018a---安裝教程

目錄 壹 | 引 言 貳 | 安裝環境 叁 | 安 裝 肆 | 結 語 壹 | 引 言 大家好,我是子正。 最近想學習一下DSP數字信號處理有關的知識,要用到Matlab進行數據處理,于是又重新把Matlab撿了回來; 記得上學那會兒用的還是Matlab2012a&#xff…

分布式流處理與消息傳遞——Kafka ISR(In-Sync Replicas)算法深度解析

Java Kafka ISR(In-Sync Replicas)算法深度解析 一、ISR核心原理 #mermaid-svg-OQtnaUGNQ9PMgbW0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OQtnaUGNQ9PMgbW0 .error-icon{fill:#55222…

ARM GIC V3概述

中斷類型 locality- specific peripheral interrupt(LPI):LPI是一個有針對性的外設中斷,通過affinity路由到特定的PE。 為非安全group1中斷邊沿觸發可以通過its進行路由沒有active狀態,所以不需要明確的停用操作LPI總…

藍橋杯國賽訓練 day1

目錄 k倍區間 舞獅 交換瓶子 k倍區間 取模后算組合數就行 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {solve();}public static vo…

安裝和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服務器詳細實錄6

前言 昨天更新了四篇博客,我們順利的 安裝了 ubuntu server 服務器,并且配置好了 ssh 免密登錄服務器,安裝好了 服務器常用軟件安裝, 配置好了 zsh 和 vim 以及 通過 NVM 安裝好Nodejs,還有PNPM包管理工具 。 作為服務器的運行…

鴻蒙版Taro 搭建開發環境

鴻蒙版Taro 搭建開發環境 一、配置鴻蒙環境 下載安裝 DevEco 建議使用最新版本的 IDE,當前為 5.0.5Release 版本。 二、創建鴻蒙項目 打開 DevEco,點擊右上角的 Create Project,在 Application 處選擇 Empty Ability,點擊 Ne…

Could not get unknown property ‘mUser‘ for Credentials [username: null]

最近遇到jekins打包報錯: Could not get unknown property mUser for Credentials [username: null] of type org.gradle.internal.credentials.DefaultPasswordCredentials_Decorated。 項目使用的是gradle,通過pipeline打docker包;因為ma…

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例

Spring Boot + MyBatis-Plus 讀寫分離與多 Slave 負載均衡示例 一、項目結構 src/main/java/com/example/demo/ ├── config/ │ ├── DataSourceConfig.java # 數據源配置 │ ├── MyBatisPlusConfig.java # MyBatis-Plus配置 ├── constant/ │…

android binder(1)基本原理

一、IPC 進程間通信(IPC,Inter-Process Communication)機制,用于解決不同進程間的數據交互問題。 不同進程之間用戶地址空間的變量和函數是不能相互訪問的,但是不同進程的內核地址空間是相同和共享的,我們可…

高密爆炸警鐘長鳴:AI為化工安全戴上“智能護盾”

一、高密爆炸:一聲巨響,撕開化工安全“傷疤” 2025年5月27日,山東高密友道化學有限公司的車間爆炸聲,像一把利刃劃破了化工行業的平靜。劇烈的沖擊波將車間夷為平地,黑色蘑菇云騰空而起,刺鼻的化學氣味彌漫…

雙擎驅動:華為云數字人與DeepSeek大模型的智能交互升級方案

一、技術融合概述 華為云數字人 華為云數字人,全稱:數字內容生產線 MetaStudio。數字內容生產線,提供數字人視頻制作、視頻直播、智能交互、企業代言等多種服務能力,使能千行百業降本增效。另外,數字內容生產線&#…

Linux運維筆記:1010實驗室電腦資源規范使用指南

文章目錄 一. 檢查資源使用情況,避免沖突1. 檢查在線用戶2. 檢查 CPU 使用情況3. 檢查 GPU 使用情況4. 協作建議 二. 備份重要文件和數據三. 定期清理硬盤空間四. 退出 ThinLinc 時注銷,釋放內存五. 校外使用時配置 VPN注意事項 總結 實驗室的電腦配備了…

手機郵箱APP操作

收發電子郵件方式 郵箱可以在網絡段登錄,也可以在手機端登錄。 大學網絡服務 收發電子郵件有三種方式: 1、Web方式: 1)登錄“網絡服務”(https://its.pku.edu.cn),點頁面頂端“郵箱”。 2&…

Dockerfile 使用多階段構建(build 階段 → release 階段)后端配置

錯誤Dockerfile配置示例: FROM python:3.11 as buildENV http_proxyhttp://172.17.0.1:7890 ENV https_proxyhttp://172.17.0.1:7890WORKDIR /appENV PYTHONPATH/app# Install Poetry # RUN curl -sSL https://install.python-poetry.org | POETRY_HOME/opt/poetry…

webstrom中git插件勾選提交部分文件時卻出現提交全部問題怎么解決

原因是我有個.husky的文件制定了執行提交的時候就是提交所有的文件 修改.husky/pre-commit文件就可以啦 #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh"# 獲取通過 WebStorm 提交的暫存文件(僅勾選的部分) STAGED_FILES$(gi…

OSG編譯wasm嘗試

最近遇到一個情況,需要嘗試一下OSG到webassembly 發現官網有教程 于是順著看了看,默認教程是xubuntu的一個系統跑的,但是我本著試一試的想法,拉下來直接在windows上跑,奇奇怪怪的報錯簡直頭皮發麻 然后怎么辦呢&#x…

QT中子線程觸發主線程彈窗并阻塞等待用戶響應-傳統信號槽實現

目錄 QT中子線程觸發主線程彈窗并阻塞等待用戶響應傳統信號槽實現實現思路具體步驟1. 定義信號與槽2. 異步任務中觸發彈窗3. 主線程處理彈窗4. 連接信號與槽關鍵點總結 更簡單實現 QT中子線程觸發主線程彈窗并阻塞等待用戶響應 傳統信號槽實現 場景需求:在子線程執…

STM32學習之WWDG(原理+實操)

📢:如果你也對機器人、人工智能感興趣,看來我們志同道合? 📢:不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸對你有幫助,可點贊 👍…

【端午安康】龍舟爭渡Plug-In

文章目錄 正文附錄A:關于Python的錄屏方法總結(來自DeepSeek的回答)1. 使用 pyautogui 和 OpenCV 錄制屏幕2. 使用 mss 庫(高效屏幕捕獲)3. 使用 PIL.ImageGrab 錄制屏幕4. 使用 Windows 原生快捷鍵錄制(非…