一、BGP 基础概念

1. 产生背景

BGP(Border Gateway Protocol)是自治系统(AS)间的动态路由协议,属于外部网关协议(EGP),用于在不同 AS 之间传递路由信息。

2. 自治系统(AS)

  • 定义:一组被统一管理、运行相同 IGP 协议的路由器集合,通常使用相同路由策略。

  • AS 编号

    • 2 字节:范围 0-65535(0 和 65535 保留),其中公有 AS 为 1-64511,私有 AS 为 64512-65535。

    • 4 字节:公有 AS 为 65536–4199999999,私有 AS 为 4200000000–4294967294。

二、路由协议分类

  • IGP(内部网关协议):用于 AS 内部路由,如 RIP、OSPF、IS-IS。

  • EGP(外部网关协议):用于 AS 之间路由,BGP 是目前唯一广泛使用的 EGP。

三、BGP 协议特性

  1. 路由传递范围:仅负责 AS 间路由传递,AS 内部路由扩散依赖 IGP。

  2. 路径矢量协议:一跳代表一个 AS,路由传入 AS 时,下一跳变为上个 AS 的出接口 IP;AS 内部传递时,下一跳不变。

  3. AS 防环机制:通过AS_PATH属性防环,路由每经过一个 AS,会将该 AS 编号按 “右到左” 顺序加入AS_PATH;若收到的路由AS_PATH包含本地 AS 编号,则不学习。

  4. 传输层依赖:基于 TCP 协议,端口号 179,需手动配置邻居。

  5. 更新方式:首次收敛发送完整路由表,后续仅增量更新。

  6. 路由控制:支持多种属性控制选路,支持路由聚合、过滤和策略。

四、BGP 基本术语

  • BGP Speaker:运行 BGP 协议的路由器。

  • BGP Peer(对等体):通过 TCP 连接交换路由信息的 BGP Speaker,分为:

    • EBGP 对等体:跨 AS 的邻居,通常物理直连,从 EBGP 学到的路由会通告给所有对等体(包括 EBGP 和 IBGP)。

    • IBGP 对等体:同一 AS 内的邻居,可非直连,受 “水平分割” 限制(从 IBGP 学到的路由不传给其他 IBGP)。

五、路由黑洞及解决方法

  • 产生原因:IBGP 邻居间存在未运行 BGP 的路由器,无法获取 BGP 路由,导致数据包被丢弃。

  • 解决方法

    1. BGP 引入 IGP;

    2. 在黑洞路由器上配置静态路由;

    3. IBGP 全连接(需所有 IBGP 路由器互建邻居,适用于小规模网络);

    4. 路由反射器(RR,无视 IBGP 水平分割,减少邻居数量);

    5. BGP 联盟(将 AS 划分为子 AS,子 AS 间用 EBGP 连接,减少 IBGP 邻居)。

六、BGP 环路问题(水平分割)

  1. EBGP 水平分割:通过AS_PATH属性,若路由包含本地 AS 编号则拒绝学习。

  2. IBGP 水平分割:从 IBGP 对等体学到的路由,不向其他 IBGP 对等体通告。

七、BGP 消息种类

消息类型

作用

Open

建立对等体连接,携带router-idHold Time(默认 180s)等参数。

Keepalive

周期保活(默认 60s 发送一次),维持连接有效性。

Update

携带路由更新(新增 / 删除),包含Withdrawn Routes(撤销路由)和NLRI(新增路由)。

Notification

检测到错误时发送,随后关闭连接。

Router-refresh

更改路由策略后,请求对等体重发指定地址族的完整路由表。

八、BGP 状态机

  1. Idle:初始化状态,准备 TCP 连接,停留 30 秒。

  2. Connect:TCP 连接建立中,失败则进入 Active 状态。

  3. Active:主动尝试建立 TCP 连接,失败则重试。

  4. OpenSent:TCP 连接建立,发送 Open 报文,等待对方响应。

  5. OpenConfirm:收到 Open 报文,发送 Keepalive,等待对方 Keepalive。

  6. Established:收到 Keepalive,邻居关系建立,开始交换路由。

九、BGP 邻居建立条件

1. IBGP 邻居

  • 物理口建邻:建议用直连接口地址。

  • 环回口建邻:需 TCP 可达(路由可达),修改更新源为环回口(peer connect-interface LoopBack 0),默认 TTL 为 255。

2. EBGP 邻居

  • 物理口建邻:建议用直连接口地址。

  • 环回口建邻:需 TCP 可达,修改最大跳数(ebgp-max-hop),默认 TTL 为 1(需改为更大值,如 2)。

注意

  • 若路由器同时有 EBGP 和 IBGP 邻居,需修改 IBGP 邻居的下一跳为本机(next-hop-local),否则路由可能不可达。

十、BGP 基本配置

1. 启动 BGP 并创建连接

[huawei] bgp <as-number>                # 启动BGP,指定AS编号
[huawei-bgp] router-id <router-id>       # 配置Router-id(可选,建议配置)
[huawei-bgp] peer <ip-address> as-number <as-number>  # 指定对等体及AS
[huawei-bgp] address-family ipv4 unicast  # 进入IPv4地址族(华三设备)
[huawei-bgp-ipv4] peer <ip-address> enable  # 使能对等体路由交换

2. 优化配置

[huawei-bgp] peer <ip-address> connect-interface <interface>  # 指定TCP连接源接口
[huawei-bgp] peer <ip-address> ebgp-max-hop <hop-count>       # 修改EBGP最大跳数

3. 发布路由

# 宣告本地路由
[router-bgp] network <ip-address> [mask <mask-length>] [route-policy <name>]
# 引入其他协议路由
[router-bgp] import-route <protocol> [process-id] [route-policy <name>]

4. 查看命令

display bgp peer        # 查看BGP邻居状态
display bgp routing-table  # 查看BGP路由表

十一、BGP 选路原则(13 条)

  1. 丢弃下一跳不可达的路由。

  2. 优选Preferred-value(首选项)最大的路由(默认 0,华为 / H3C 私有属性)。

  3. 优选Local_Pref(本地优先级)最高的路由(默认 100,仅 IBGP 传递)。

  4. 依次选择network生成、import-route引入、聚合的路由。

  5. 优选AS_PATH最短的路由。

  6. 依次选择ORIGIN为 IGP(i)、EGP(e)、Incomplete(?)的路由。

  7. 优选MED(多出口鉴别器)最小的路由(默认 0,相邻 AS 间传递)。

  8. 依次选择从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学到的路由。

  9. 优选下一跳 IGP 度量值最低的路由。

  10. 优选CLUSTER_LIST最短的路由。

  11. 优选ORIGINATOR_ID最小的路由。

  12. 优选 Router ID 最小的路由器发布的路由。

  13. 优选 IP 地址最小的对等体发布的路由。

十二、BGP 属性

1. 公认必遵属性(所有路由必须携带)

  • AS_PATH:记录路由经过的 AS 编号,用于防环和选路(短路径优先)。

  • Next-hop:路由的下一跳 IP,EBGP 邻居间传递时更新,IBGP 邻居间传递时不变(需手动修改为本地)。

  • ORIGIN:路由来源,优先级:IGP(i)> EGP(e)> Incomplete(?)。

2. 公认可选属性(所有路由器识别,非必须携带)

  • Local_Pref:本地优先级,仅 IBGP 传递,值越大越优先(默认 100)。

  • Atomic-aggregate:自动聚合标记。

3. 可选传递属性(可不识别,但会传递)

  • Community(团体属性):标记路由,用于批量控制,如no-export(不传出 AS)、no-advertise(不向任何对等体通告)。

4. 可选非传递属性(可不识别,不传递)

  • MED:多出口鉴别器,用于相邻 AS 间选路,值越小越优先。

  • Cluster_list:路由反射器集群列表,用于防环。

  • Originator_ID:路由反射器中路由的始发者 ID,用于防环。

十三、大规模 BGP 网络优化

1. 对等体组(Peer Group)

  • 定义:将具有相同属性的对等体分组,简化配置。

  • 配置示例

    [R2-bgp] group <group-name> internal  # 创建IBGP对等体组
    [R2-bgp] peer <ip1> group <group-name>  # 加入对等体
    [R2-bgp] peer <group-name> connect-interface LoopBack 0  # 统一配置更新源
    

2. 路由聚合

  • 自动聚合:仅对引入的 IGP 路由聚合到主类(可能产生黑洞),命令:summary automatic

  • 手动聚合:精确汇总,可抑制明细路由,命令:

    [router-bgp] aggregate <network> <mask> detail-suppressed  # 抑制明细路由
    

3. 路由反射器(RR)

  • 作用:替代 IBGP 全连接,减少邻居数量,允许将从 IBGP 学到的路由反射给其他 IBGP 邻居。

  • 角色:RR(反射器)、Client(客户机)、非客户机。

  • 反射规则

    • 从非客户机学到的路由,仅反射给客户机。

    • 从客户机学到的路由,反射给所有客户机和非客户机(除始发者)。

    • 从 EBGP 学到的路由,反射给所有客户机和非客户机。

  • 防环机制Cluster_list(记录经过的 RR 集群 ID)和Originator_ID(路由始发者 ID)。

  • 配置示例

    [R2-bgp] peer <client-ip> reflect-client  # 配置客户机
    [R2-bgp] reflector cluster-id <id>        # 配置集群ID(可选)
    

4. BGP 联盟(Confederation)

  • 作用:将一个 AS 划分为多个子 AS(用私有 AS 编号),子 AS 间用 EBGP 连接,减少 IBGP 邻居。

  • 配置示例

    [R2] bgp <子AS编号>
    [R2-bgp] confederation id <主AS编号>  # 声明主AS
    [R2-bgp] confederation peer-as <其他子AS编号>  # 声明联盟内其他子AS
    

5. 团体属性(Community)

  • 作用:标记路由,批量控制路由发布范围。

  • 公认团体属性

    • Internet:默认,可通告给所有对等体。

    • no-advertise:不向任何对等体通告。

    • no-export:不传出 AS(但可在联盟内子 AS 间传递)。

  • 配置示例

    [R1] route-policy <name> permit node 10
    [R1-route-policy] apply community no-export  # 标记为no-export
    [R1-bgp] peer <ip> route-policy <name> export  # 应用策略
    [R1-bgp] peer <ip> advertise-community  # 允许传递团体属性
    

6. 路由衰减(Route Dampening)

  • 作用:解决路由振荡(频繁上下线),通过惩罚值抑制不稳定路由。

  • 参数:抑制阈值(默认 2000)、重用阈值(默认 750)、半衰期(默认 15 分钟)。

  • 配置示例

    [router-bgp] dampening  # 启用默认参数

十四、BGP 实验实例

1. 基本配置实验

  • 目标:配置 EBGP 和 IBGP 邻居,宣告业务网段,解决路由黑洞。

  • 关键步骤

    1. 配置 IP 和 OSPF(AS 内部互通)。

    2. 建立 EBGP(直连)和 IBGP(环回口)邻居。

    3. 宣告业务网段,通过import-route bgp将 BGP 路由引入 IGP,解决黑洞。

2. 路由控制实验

  • 目标:通过修改属性控制选路(MED、Preferred-value、AS_PATH、Local-pref)。

  • 示例:修改 MED 使路由优选某路径:

    [R2] acl 2000  # 抓取目标网段
    [R2-route-policy] apply cost 100  # 提高MED值
    [R2-bgp] peer <ip> route-policy <name> export  # 应用策略
    

3. 路由反射器实验

  • 目标:配置 RR 减少 IBGP 邻居,实现路由反射。

  • 关键步骤

    1. 配置 OSPF 确保 TCP 可达。

    2. 建立 IBGP 对等体组,配置 RR 及客户机。

    3. 聚合业务网段,抑制明细路由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92394.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92394.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92394.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql-MVCC机制

1. MVCC机制详解 在Read Uncommitted级别下&#xff0c;事务总是读取到最新的数据&#xff0c;因此根本用不到历史版本&#xff0c;所以MVCC不在该级别下工作。 在Serializable级别下&#xff0c;事务总是顺序执行。写会加写锁&#xff0c;读会加读锁&#xff0c;完全用不到MVC…

MySQL面试题及详细答案 155道(061-080)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

大数据中需要知道的监控页面端口号都有哪些

以下是一些大数据中常见组件监控页面的端口号&#xff1a;1. Hadoop&#xff1a;HDFS Web UI在Hadoop2.x版本中默认端口为50070&#xff0c;在Hadoop3.x版本中为9870&#xff0c;用于查看集群文件及目录&#xff1b;YARN Web UI端口为8088&#xff0c;可查看MR执行情况&…

时隔六年!OpenAI 首发 GPT-OSS 120B / 20B 开源模型:性能、安全与授权细节全解

为什么这次开放值得关注&#xff1f; OpenAI 时隔六年再次“放权重”&#xff0c;一次性公布 gpt-oss-120b 与 gpt-oss-20b 两个尺寸&#xff0c;并允许商业化二次开发 —— 采用 Apache 2.0 许可且可直接在 Hugging Face 下载(WIRED)。官方表示&#xff0c;开放旨在 降低门槛…

漏洞全讲解之中间件与框架漏洞(数字基础设施的“阿喀琉斯之踵“)

一、中间件漏洞的严峻现状根据Synopsys《2023年开源安全报告》显示&#xff1a;企业应用中平均包含158个中间件依赖高危漏洞年增长率达62%&#xff08;X-Force数据&#xff09;最危险漏洞&#xff1a;Log4j2&#xff08;CVE-2021-44228&#xff09;影响全球83%企业平均修复延迟…

Leetcode——菜鸟笔记2(移动0)

文章目录题目解题题目 解题 /*nums【0&#xff0c;1&#xff0c;0&#xff0c;3&#xff0c;2】numsSize5 nums【1.3.2.0.0】 1.找非零数&#xff0c;依次放在前面 2.剩下补0 */ void moveZeroes(int* nums, int numsSize) {int count0 0;int temp 0;for (int i 0; i < …

【LINUX网络】应用层自定义协议与序列化——通过实现一个简单的网络计算器来体会自定义协议

在了解了各种协议的使用以及简单的socket接口后&#xff0c;学会了“怎么传”的问题&#xff0c;现在来了解一下“传什么”的问题。 1. 序列化与反序列化 在前面的TCP、UDP的socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一…

电脑一键重装系统win7/win10/win11无需U盘(无任何捆绑软件图文教程)

建议还是使用U盘进行重装系统&#xff0c;如果暂时还不会没有U盘&#xff0c;那就按照我这个来吧。 一&#xff0c;工具下载&#xff1a; 一键重装工具 密码:g5p3 二&#xff0c;镜像下载: 镜像站点&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 可以下载需要重装的系统…

深入探索Supervision库:Python中的AI视觉助手

深入探索Supervision库&#xff1a;Python中的AI视觉助手 在计算机视觉和机器学习领域&#xff0c;数据处理和结果可视化是项目成功的关键环节。今天我们将深入探讨一个强大的Python库——Supervision&#xff0c;它专为简化AI视觉项目的工作流程而设计。 什么是Supervision&am…

面向对象之类、继承和多态

系统是由汇总了数据和过程的“对象”组成的。在面向对象中&#xff0c;软件被定义为“类”&#xff0c;然后创建“实例”并运行。系统是通过“实例”之间的互相交换“消息”而运行的&#xff0c;但由于进行了“封装”&#xff0c;所以无法查看内部的详细内容&#xff0c;这被称…

传统防火墙与下一代防火墙

防火墙的发展过程第一种简单包过滤防火墙工作于&#xff1a;3、4层实现了对于IP、UDP、TCP信息的一些检查优点&#xff1a;速度快、性能高、可用硬件实现&#xff1b;兼容性较好检查IP、UDP、TCP信息缺点&#xff1a;安全性有限&#xff1a;仅能基于数据包的表面层面进行审查&a…

计算机视觉前言-----OpenCV库介绍与计算机视觉入门准备

前言&#xff1a;OpenCV库介绍与计算机视觉入门 OpenCV概述 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;由Intel于1999年首次发布&#xff0c;现由非盈利组织OpenCV.org维护。它包含了超过2500种…

AI面试系统助手深度评测:6大主流工具对比分析

导语&#xff1a;秋招季&#xff0c;企业如何破局高效招聘&#xff1f;随着2024年秋招季临近&#xff0c;企业招聘压力陡增。据牛客调研数据显示&#xff0c;74.2%的求职者已接触过AI面试&#xff0c;89.2%的企业认为AI显著提升了筛选效率。然而&#xff0c;面对市场上琳琅满目…

浮雕软件Artcam安装包百度云网盘下载与安装指南

如你所知&#xff0c;ArtCAM是一款专业的CAD/CAM软件工具&#xff0c;主要用于三维浮雕设计、珠宝加工及CNC数控雕刻&#xff0c;可将二维构思快速转化为三维艺术产品&#xff0c;深受使用者的喜爱。一、主要应用领域‌工艺品与制造业‌&#xff1a;木工雕花、标牌制作、模具制…

六边形架构模式深度解析

在分布式系统设计领域&#xff0c;六边形架构&#xff08;Hexagonal Architecture&#xff0c;又称端口与适配器模式&#xff09;作为一种以领域为中心的架构模式&#xff0c;通过明确分离核心业务逻辑与外部交互&#xff0c;有效提升系统的可测试性、可扩展性与可维护性。本文…

Beelzebub靶机

一、主机发现 arp-scan扫描一下局域网靶机 二、信息收集 nmap -sV -A -T4 -p- 192.168.31.132 22端口ssh服务和80端口web服务是打开的 目录扫描 三、渗透测试 访问一下web服务是个apache的首页 web页面分析 有一个很奇怪的地方&#xff0c;index.php明明是一个200的响应&a…

目前常用于视频会议的视频编码上行/下行带宽对比

视频编码上行/下行带宽对比H.264、VP8和VP9在不同终端数量下的上行与下行带宽需求差异&#xff08;单位&#xff1a;Mbps&#xff09;编码效率说明H.264基准编码标准&#xff0c;上行和下行带宽需求相对较高&#xff0c;硬件兼容性最佳VP8开源编码&#xff0c;上行和下行带宽均…

CrewAI ——构建多智能体协作的框架

CrewAI 是一个用于构建多智能体协作的框架&#xff0c;它的核心目标是通过协调多个智能体&#xff08;Agents&#xff09;来完成复杂任务。这些智能体不仅可以在单一任务中进行合作&#xff0c;还可以在动态、开放的环境中进行交互与协作。CrewAI 的设计和实现使得智能体之间能…

【数据结构初阶】--排序(五)--计数排序,排序算法复杂度对比和稳定性分析

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

InfluxDB 数据备份与恢复高级策略(二)

案例实战&#xff1a;InfluxDB 数据备份恢复业务场景描述假设我们正在参与一个大型的物联网项目&#xff0c;该项目涉及分布在不同区域的数千个传感器设备 &#xff0c;这些设备实时采集环境温度、湿度、设备运行状态等数据&#xff0c;并将这些数据存储在 InfluxDB 数据库中。…