HCIP(BGP基础)

article/2025/6/8 10:01:28

一、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.hkcw.cn/article/iCZJYWbJjQ.shtml

相关文章

身份证实名认证API接口-透明网络空间-实名认证api

数字化时代,线上交易、社交互动、信息共享等活动已经成为人们日常生活的一部分。但随之而来的是身份盗用、欺诈等网络安全问题的不断上升。为应对这一挑战,身份证实名认证作为网络平台的一项基础安全功能,逐渐成为确保用户身份真实性、保障交…

数据安全中心是什么?如何做好数据安全管理?

目录 一、数据安全中心是什么 (一)数据安全中心的定义 (二)数据安全中心的功能 1. 数据分类分级 2. 访问控制 3. 数据加密 4. 安全审计 5. 威胁检测与响应 二、数据安全管理的重要性 三、如何借助数据安全中心做好数据安…

【Oracle】视图

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 视图基础概述1.1 视图的概念与特点1.2 视图的工作原理1.3 视图的分类 2. 简单视图2.1 创建简单视图2.1.1 基本简单视图2.1.2 带计算列的简单视图 2.2 简单视图的DML操作2.2.1 通过视图进行INSERT操作2.2.2 通…

FastMCP vs MCP:协议标准与实现框架的协同

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

消费者行为变革下开源AI智能名片与链动2+1模式S2B2C商城小程序的协同创新路径

摘要:在信息爆炸与消费理性化趋势下,消费者从被动接受转向主动筛选,企业营销模式面临重构挑战。本文提出开源AI智能名片与链动21模式S2B2C商城小程序的协同创新框架,通过AI驱动的精准触达、链动裂变机制与S2B2C生态赋能&#xff0…

Python与数据分析期末复习笔记

第一次小考自然语言处理 一、单选题(共 29 题,60.0 分) 1.(单选题,3.0 分) 在 matplotlib 中,设置 x 轴标签的方法是? A. title () B. xlabel () C. legend () D. ylabel () 正确答案:B 3.0 分 …

机电工程常用设备

一、通用设备 1. 泵 容积式泵: 往复泵:活塞泵、柱塞泵、隔膜泵()。 回转泵:齿轮泵、螺杆泵、叶片泵()。 叶轮式泵:离心泵、轴流泵、混流泵、旋涡泵(按叶轮和流道结构区…

CSS设置移动端页面底部安全距离

如图:在开发微信小程序时遇到的按钮被iOS设备底部黑线遮挡的问题,以及如何利用CSS中的env(safe-area-inset-bottom)属性来创建安全区域,避免内容被遮挡。通过将该属性应用到padding或height上,成功解决了问题 env(safe-area-inset…

Go语言学习-->第一个go程序--hello world!

Go语言学习–>第一个go程序–hello world! 1 写代码前的准备 1 创建编写代码的文件夹 2 使用vscode打开3 项目初始化 **go mod init*(初始化一个go mod)Go Module 是 Go 1.11 版本引入的官方依赖管理系统,用于替代传统的 GOPATH…

02 C语言程序设计之导言

文章目录 1、入门1-1、引例1-2、练习题1-2-1、Job11-2-2、Job2 2、变量与算术表达式2-1、引例2-2、练习题2-2-1、Job12-2-2、Job2 3、for语句3-1、引例3-2、练习题 4、符号常量5、字符输入/输出5-1、文件复制5-1-1、引例5-1-2、练习题5-1-2-1、Job15-1-2-2、Job2 5-2、字符计数…

血管的三维重建

血管的三维重建 摘 要 断面可用于了解生物组织、器官等的形态,在医学上有重要的作用。用切片机连续不断地将样本切成数十、成百的平行切片,可依次逐片观察。根据平行切片数字图象,运用计算机可重建组织、器官等准确的三维形态。 本文提出了一…

如何在 DataGrip 中 连接 Databend

本文通过详细的步骤演示了如何新建 自定义 Driver 以在 DataGrip 中支持连接 Databend,包括设置 Class、DriverFiles 和URLtemplates。最后,通过新建 Driver 和 DataSource,并在 Databend Cloud 上进行连接测试,确保能成功访问数据…

黑马程序员TypeScript课程笔记2(11-20)

11.数组类型 数组类型可以写为"let numbers:number[][1,2,3] ,也可以写为let numbers:Array[1,2,3] 12.联合类型 联合类型的写法 let arr:(number|string)[][1,a,2,g] 13.类型别名(可以为任意类型起别名,起到一个简化类型名的作用) 14.函数类型(1…

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(六):图片上传功能

在 《Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五)》 中,完成了语音交互功能的优化。本文作为该系列教程的第六篇,将聚焦于图片上传功能的开发。通过集成图片上传与预览能力,我们将进一步完善 AI…

常用工具推荐---QQ截图功能、iLovePDF与Pandoc

常用工具推荐 QQ中的超实用功能截图功能录屏功能屏幕识图以及屏幕翻译 iLovePDFPandocPandoc 安装Pandoc使用 QQ中的超实用功能 比起本地截图,个人使用最多的是QQ截图,CSDN里的插图都是使用QQ截的,我不允许有人不知道这么好用的功能&#x…

核心机制:流量控制

搭配滑动窗口使用的 窗口大小 窗口越大,传输速度就越快,但是也不能无限大,太大了,对于可靠性会有影响 比如发生方以非常快的速度,发送,接收方的处理速度跟不上,也就会导致有效数据被接受方丢弃(又得重传) 流量控制,就是根据接收方的处理能力(如何衡量?),干预到发送方的发送…

如何避免工具过多导致的效率下降

避免工具过多导致效率下降需通过精简工具数量、选择高效工具、明确工具使用规范、加强工具集成与协作等措施,其中,精简工具数量是最关键的一步,通过减少冗余工具的使用,可有效避免工具过多造成的信息分散和沟通障碍,从…

C++ stl容器之string(字符串类)

目录 (0)string和char *的区别 (1)string类对象的构造 (2)容量操作 (3)访问遍历 1.用下标访问和遍历 2.用迭代器访问和遍历 ①迭代器说明 ②迭代首尾注意事项 ③使用举例 …

Python基于局部线性嵌入法和多维缩放方法的S形流行数据降维对比项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在现代数据分析领域,面对高维数据的挑战日益增加,降维技术成为理解和处理复杂数据集的关键工…

ABP-Book Store Application中文讲解 - Part 5: Authorization

ABP-Book Store Application中文讲解 - Part 5: Authorization 1. 汇总 ABP-Book Store Application中文讲解-汇总-CSDN博客 2. 前一章 ABP-Book Store Application中文讲解 - Part 4: Integration Tests-CSDN博客 项目之间的引用关系。 ​ ABP有一套完整的权限控制系统&…