当前位置: 首页 > article >正文

小结:BGP 的自动聚合与手动聚合

BGP 的自动聚合与手动聚合

BGP 在大规模网络中,通常会进行路由聚合(Route Aggregation),即将多个更具体(更小)的路由前缀合并成一个更大(更粗略)的前缀,以减少 BGP 路由表的大小,提高路由收敛速度,优化网络资源。

BGP 提供两种方式进行路由聚合:

  1. 自动聚合(Auto-Summary)
  2. 手动聚合(Manual Summary)

1. BGP 自动聚合(Auto-Summary)

🔹 原理

  • 自动聚合会将所有子网归并到主类网络(Classful Network),即 B 类地址会聚合到 B 类网络,C 类地址会聚合到 C 类网络
  • 仅在**CIDR 关闭(Classful Routing)**的情况下生效。
  • 适用于早期网络(基于类的路由),但现代 BGP 网络多采用CIDR(无类别路由),因此自动聚合通常不使用。

🔹 自动聚合的默认行为

  • 只有当 BGP 学到的所有更具体的子网都在同一大网段内时,才会自动汇总成主网段。
  • eBGP(外部 BGP)场景下,自动聚合不会影响 BGP 的正常传播。
  • iBGP(内部 BGP)场景下,可能会导致部分路由信息丢失。

🔹 华为 BGP 配置自动聚合

bgp 65001auto-summary

示例
如果 BGP 学到了以下路由:

192.168.1.0/24
192.168.2.0/24
192.168.3.0/24

auto-summary 开启的情况下,BGP 会自动汇总为:

192.168.0.0/16

但会导致网络信息丢失,比如 192.168.4.0/24 不属于当前汇总范围时可能无法正确转发。

🔹 自动聚合的缺点

  • 只支持基于类的聚合,不适用于 CIDR(无类别域间路由)。
  • 可能导致部分更具体的路由丢失,影响流量转发。
  • 现代 BGP 网络一般不推荐使用自动聚合,而是采用手动聚合。

2. BGP 手动聚合(Manual Summary)

🔹 原理

  • 手动聚合允许灵活地控制 BGP 路由聚合,并支持 CIDR。
  • 需要手动指定汇总的前缀,可以精确控制汇总范围
  • 更推荐使用手动聚合,而不是自动聚合

🔹 手动聚合配置

bgp 65001aggregate 192.168.0.0 255.255.252.0

此配置会将以下网络汇总为 192.168.0.0/22

192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24

这样,BGP 只公布 192.168.0.0/22,减少 BGP 表项,提高网络效率。


3. BGP 聚合进阶配置

🔹 3.1 允许更具体的子网(as-set)

  • 默认情况下,BGP 只公布汇总路由,而不包含更具体的子网。
  • 如果希望同时公布更具体的路由,可使用 as-set 参数
bgp 65001aggregate 192.168.0.0 255.255.252.0 as-set

此时,BGP 既公布 192.168.0.0/22,也公布 192.168.1.0/24192.168.2.0/24 等更具体的子网。

🔹 3.2 防止黑洞路由(suppress-map / unsuppress-map)

  • 问题:如果 BGP 只公布 192.168.0.0/22 而不公布子网,则某些设备可能无法精确匹配路由,导致部分流量黑洞(无法到达目的地)。
  • 解决方案
    • suppress-map:过滤掉某些子网,确保只公布聚合路由。
    • unsuppress-map:解除对子网的隐藏,确保部分子网仍可传播。

示例:仅隐藏 192.168.1.0/24,但公布 192.168.2.0/24192.168.3.0/24

bgp 65001aggregate 192.168.0.0 255.255.252.0suppress-map FILTER_MAP
route-policy FILTER_MAP permit node 10if-match ip-prefix 192.168.1.0/24

此配置使 192.168.1.0/24 不公布,但 192.168.2.0/24192.168.3.0/24 仍然公布。


4. 自动聚合 vs. 手动聚合 对比

特性自动聚合 (Auto-Summary)手动聚合 (Manual Summary)
是否支持 CIDR❌ 仅支持基于类的路由✅ 支持 CIDR,自定义掩码
控制灵活性❌ 受限(自动生效)✅ 完全可控
是否支持具体子网❌ 仅公布主网段✅ 可公布或隐藏具体子网
是否推荐❌ 一般不推荐✅ 强烈推荐

5. 结论

✅ 何时使用自动聚合?

  • 适用于早期基于类的网络,但现代 BGP 网络通常不使用。
  • 仅在 CIDR 关闭的环境下生效

✅ 何时使用手动聚合?

  • 推荐 在现代 BGP 网络中使用手动聚合,以减少 BGP 路由表大小
  • 可以控制具体子网,避免黑洞路由。
  • 适用于运营商、企业骨干网、跨 AS 网络

相关文章:

小结:BGP 的自动聚合与手动聚合

BGP 的自动聚合与手动聚合 BGP 在大规模网络中,通常会进行路由聚合(Route Aggregation),即将多个更具体(更小)的路由前缀合并成一个更大(更粗略)的前缀,以减少 BGP 路由…...

CTF中pwn shellcode题目

CTF中pwn shellcode题目 下面是一些shellcode代码和绕过技巧。 一些只给payload或者exp一把梭 首先给出两个常用shellcode仓库,可以检索需要的shellcode shellcode databaseexploit-db 基础 基础shellcode shellcode asm(shellcraft.sh())生成指定函数 用法…...

Conda 环境搭建实战:从基础到进阶

在当今复杂多变的软件开发与数据科学领域,拥有一个稳定、可复现且易于管理的开发环境是项目成功的基石。Conda 作为一款强大的跨平台环境管理与包管理工具,为开发者提供了便捷高效的环境搭建与依赖管理解决方案。本文将深入探讨 Conda 环境搭建的实战技巧…...

深入解析:域名转换成 IP 地址的多种方式

深入解析:域名转换成 IP 地址的多种方式 在互联网的世界里,我们日常访问网站时输入的是易于记忆的域名,比如 “www.example.com”,但计算机之间通信实际上依靠的是 IP 地址。那么,域名是如何转换成 IP 地址的呢&#x…...

大模型function calling:让AI函数调用更智能、更高效

大模型function calling:让AI函数调用更智能、更高效 随着大语言模型(LLM)的快速发展,其在实际应用中的能力越来越受到关注。Function Calling 是一种新兴的技术,允许大模型与外部工具或API进行交互,从而扩…...

LeetCode:131. 分割回文串(DP Java)

目录 131. 分割回文串 题目描述: 实现代码与解析: 动态规划 原理思路: 131. 分割回文串 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。…...

计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

虚拟机中的指示命令

1. 复制文件:cp 源文件 目标文件(cp file1.txt file2.txt) 2. 复制文件夹:cp -r 源文件夹 目标文件夹(cp -r dir1 dir2) 3. 创建一个空的文件:touch file1.txt 4. 创建一个空目录&a…...

图像分类项目2:鸟类图像分类

1 数据集处理 1.1数据集下载 数据集来源:kaggle,网址:https://www.kaggle.com/,点击进入网站,左侧选择Datasets。 进入后搜索栏搜索关键词bird。此时出现很多数据集可以选择,推荐选择第一个或者第三个。…...

Redis数据结构-List列表

1.List列表 列表类型适用于存储多个有序的字符串(这里的有序指的是强调数据排列顺序的重要,不是升序降序的意思),列表中的每个字符串称为元素(element),一个列表最多可以存储2^32-1个元素。在R…...

启动你的RocketMQ之旅(三)-Producer启动和发送流程(上)

前言: 👏作者简介:我是笑霸final。 📝个人主页: 笑霸final的主页2 📕系列专栏:java专栏 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一…...

Unity UGUI SuperScrollView介绍

先铺垫一下ScrollView Unity中常用的ScrollView 是 Unity 中的一个常见 UI 组件,主要用于创建可滚动的视图。当内容超过其显示区域时,ScrollView 可以让用户通过滚动查看全部内容。它通常包含一个显示区域和一个内容区域,内容区域可以超过显…...

pandas 数据透视表

数据的透视表 数据的透视表: 使用函数 pivot_table( ) # 引用pandas import pandas as pd # pivot_table 使用 pd.pivot_table(data,values,index,aggfunc,fill_value,columns)参数1:data DataFrame的源数据参数2:values 要进行聚合操作的列参数3:index 进行分组…...

【STM32安全性研究】STM32F103RCT6固件读取

最近从飞哥那买了个stm32固件提取器,效果很好。下面记录对某产品主控STM32F103RCT6固件的提取过程,说明提取时的注意事项。 注意本文的目的仅用于stm32安全性研究,不提供涉及产品本身的内容,包括固件、软件等。 stm32固件提取可参考论坛https://www.aisec.fraunhofer.de/en…...

塔子哥Python算法基础课

【入门题】【输入篇1】AB Problem 题目描述: 给定两个整数 A 和 B,请计算它们的和并输出结果。 输入: 输入包含一行,包含两个整数 A 和 B,以空格分隔。 输出: 输出一行,包含一个整数&#…...

C++ 内存管理:深入理解 new、malloc、delete 和 free

引言 在 C 中,内存管理是一个非常重要的主题。正确使用动态内存分配和释放工具(如 new、malloc、delete 和 free)可以避免内存泄漏和程序崩溃。本文将深入探讨这些工具的区别,并介绍池化计数技术。 1. new 与 malloc 在动态申请内…...

基于互联网协议的诊断通信(DoIP)

1、ISO 13400标准和其他汽车网络协议标准有何不同? ISO 13400 标准即 DoIP 协议标准,与其他常见汽车网络协议标准(如 CAN、LIN、FlexRay 等)有以下不同: 通信基础与适用场景 ISO 13400:基于互联网协议&a…...

Android15 am命令 APP安装流程

一. PM 安装命令 使用命令 pm install -r xxx.apk pm命令安装app 会触发PackageManagerShellCommand 中runInstall()方法 frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java1. onCommand 函数: public int onCommand(String cmd…...

SpringMVC学习(初识与复习Web程序的工作流程)(1)

目录 一、SpringMVC(框架)的简要概述。 &#xff08;1&#xff09;SpringMVC与Servlet。 &#xff08;2&#xff09;技术方向。 &#xff08;3&#xff09;最终学习目标。 二、Web程序的基本工作流程。 &#xff08;1&#xff09;工作流程。 <1>浏览器。前后端任务。 <…...

解锁网络防御新思维:D3FEND 五大策略如何对抗 ATTCK

D3FEND 简介 背景介绍 2021年6月22日&#xff08;美国时间&#xff09;&#xff0c;美国MITRE公司正式发布了D3FEND——一个网络安全对策知识图谱。该项目由美国国家安全局&#xff08;NSA&#xff09;资助&#xff0c;并由MITRE的国家安全工程中心&#xff08;NSEC&#xff…...

评估自动驾驶(AD)策略性能的关键指标

以下是针对自动驾驶&#xff08;AD&#xff09;策略性能评测指标的详细解读&#xff0c;结合其物理意义与工程价值&#xff1a; 核心评测指标分类与含义 1. 安全性指标&#xff08;Safety&#xff09; 动态碰撞率&#xff08;Dynamic Collision Ratio, DCR&#xff09; 定义&a…...

【领域】百度OCR识别

一、定义 OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是计算机视觉重要方向之一。传统定义的OCR一般面向扫描文档类对象&#xff0c;现在我们常说的OCR一般指场景文字识别&#xff08;Scene Text Recognition&#xff0c;STR&#xff…...

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其所有依赖&#xff08;代码、运行时、系统工具、库等&#xff09;打包成一个轻量级、可移植的“容器”&#xff0c;实现 “一次构建&#xff0c;随处运行”。 1、容器&#xff08;Container…...

15. C++多线程编程-网络编程-GUI编程(如Qt)学习建议

1. 多线程编程 多线程编程允许程序同时执行多个任务&#xff0c;从而提高性能和响应速度。多线程常用于处理并发任务、提高CPU利用率、优化I/O操作等。 学习内容&#xff1a; 线程与进程的区别&#xff1a;理解线程和进程的基本概念及其区别。 线程的创建与管理&#xff1a;…...

【vscode-解决方案】vscode 无法登录远程服务器的两种解决办法

解决方案一&#xff1a; 查找原因 命令 ps ajx | grep vscode 可能会看到一下这堆信息&#xff08;如果没有大概率不是这个原因导致&#xff09; 这堆信息的含义&#xff1a;当你使用 vscode 远程登录服务器时&#xff0c;我们远程机器服务端要给你启动一个叫做 vscode serv…...

5个GitHub热点开源项目!!

1.自托管 Moonlight 游戏串流服务&#xff1a;Sunshine 主语言&#xff1a;C&#xff0c;Star&#xff1a;14.4k&#xff0c;周增长&#xff1a;500 这是一个自托管的 Moonlight 游戏串流服务器端项目&#xff0c;支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…...

化学工业领域 - 基础化工、精细化工、煤化工极简理解

引入 基础化工、精细化工和煤化工是化学工业中的三个重要分支 它们在原料、产品、工艺、应用方面各有特点 一、基础化工&#xff08;Basic Chemical Industry&#xff09; 1、基本介绍 基础化工是指以石油、天然气、煤炭等为原料&#xff0c;生产大宗化学品和基础化学原料的…...

慢sql治理

一、慢SQL的定义与影响 慢SQL通常指的是执行时间超过合理阈值的SQL语句。这个阈值可以根据系统的实际情况进行设定&#xff0c;例如1秒或更长。慢SQL会导致系统响应时间延迟、资源占用增加、数据库连接池被占满、锁竞争增加等一系列问题&#xff0c;严重影响系统的稳定性和用户…...

基于SpringBoot的美妆购物网站系统设计与实现现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型音乐推荐系统 音乐数据分析 音乐可视化 音乐爬虫 知识图谱 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...