小结:BGP 的自动聚合与手动聚合
BGP 的自动聚合与手动聚合
BGP 在大规模网络中,通常会进行路由聚合(Route Aggregation),即将多个更具体(更小)的路由前缀合并成一个更大(更粗略)的前缀,以减少 BGP 路由表的大小,提高路由收敛速度,优化网络资源。
BGP 提供两种方式进行路由聚合:
- 自动聚合(Auto-Summary)
- 手动聚合(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/24、192.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/24 和 192.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/24 和 192.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(框架)的简要概述。 (1)SpringMVC与Servlet。 (2)技术方向。 (3)最终学习目标。 二、Web程序的基本工作流程。 (1)工作流程。 <1>浏览器。前后端任务。 <…...
解锁网络防御新思维:D3FEND 五大策略如何对抗 ATTCK
D3FEND 简介 背景介绍 2021年6月22日(美国时间),美国MITRE公司正式发布了D3FEND——一个网络安全对策知识图谱。该项目由美国国家安全局(NSA)资助,并由MITRE的国家安全工程中心(NSECÿ…...
评估自动驾驶(AD)策略性能的关键指标
以下是针对自动驾驶(AD)策略性能评测指标的详细解读,结合其物理意义与工程价值: 核心评测指标分类与含义 1. 安全性指标(Safety) 动态碰撞率(Dynamic Collision Ratio, DCR) 定义&a…...
【领域】百度OCR识别
一、定义 OCR(Optical Character Recognition,光学字符识别)是计算机视觉重要方向之一。传统定义的OCR一般面向扫描文档类对象,现在我们常说的OCR一般指场景文字识别(Scene Text Recognition,STRÿ…...
Docker 学习(一)
一、Docker 核心概念 Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的“容器”,实现 “一次构建,随处运行”。 1、容器(Container…...
15. C++多线程编程-网络编程-GUI编程(如Qt)学习建议
1. 多线程编程 多线程编程允许程序同时执行多个任务,从而提高性能和响应速度。多线程常用于处理并发任务、提高CPU利用率、优化I/O操作等。 学习内容: 线程与进程的区别:理解线程和进程的基本概念及其区别。 线程的创建与管理:…...
【vscode-解决方案】vscode 无法登录远程服务器的两种解决办法
解决方案一: 查找原因 命令 ps ajx | grep vscode 可能会看到一下这堆信息(如果没有大概率不是这个原因导致) 这堆信息的含义:当你使用 vscode 远程登录服务器时,我们远程机器服务端要给你启动一个叫做 vscode serv…...
5个GitHub热点开源项目!!
1.自托管 Moonlight 游戏串流服务:Sunshine 主语言:C,Star:14.4k,周增长:500 这是一个自托管的 Moonlight 游戏串流服务器端项目,支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…...
化学工业领域 - 基础化工、精细化工、煤化工极简理解
引入 基础化工、精细化工和煤化工是化学工业中的三个重要分支 它们在原料、产品、工艺、应用方面各有特点 一、基础化工(Basic Chemical Industry) 1、基本介绍 基础化工是指以石油、天然气、煤炭等为原料,生产大宗化学品和基础化学原料的…...
慢sql治理
一、慢SQL的定义与影响 慢SQL通常指的是执行时间超过合理阈值的SQL语句。这个阈值可以根据系统的实际情况进行设定,例如1秒或更长。慢SQL会导致系统响应时间延迟、资源占用增加、数据库连接池被占满、锁竞争增加等一系列问题,严重影响系统的稳定性和用户…...
基于SpringBoot的美妆购物网站系统设计与实现现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型音乐推荐系统 音乐数据分析 音乐可视化 音乐爬虫 知识图谱 大数据毕业设计
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
