计算机网络-BGP路由负载分担
在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况。
通过配置BGP负载分担,可以使得设备同时将多条等代价的BGP路由加载到路由表,实现流量负载均衡,减少网络拥塞。
值得注意的是,尽管配置了BGP负载分担,设备依然只会在多条到达同一目的地的BGP路由中优选一条路由,并只将这条路由通告给其他对等体。
只有满足条件的多条BGP路由才会成为等价路由,进行负载分担。
一、形成BGP路由等价负载分担的条件
-
Preferred-Value属性值相同。 -
Local_Preference属性值相同。 -
都是聚合路由或者非聚合路由。 -
AS_Path属性长度相同。 -
Origin类型(IGP、EGP、Incomplete)相同。 -
MED属性值相同。 -
都是EBGP路由或都是IBGP路由。 -
AS内部IGP的Metric相同。 -
AS_Path属性完全相同。
可以简单理解为满足前八条选路规则一致的路由才具备形成等价路由的条件。
实例分析:
BGP路由类型有两种:IBGP路由
和EBGP路由
,因此对应的负载分担类似也有两种,一般在AS内部的为IBGP,即通过多出口到达目的网段,在AS边界的可能配置EBGP路由负载分担。

属性值 | AR4 | AR5 |
---|---|---|
Preferred-Value属性值 | 0 | 0 |
Local_Preference属性值 | 100 | 100 |
是否聚合路由 | 否 | 否 |
AS_Path属性长度 | 200 | 300 |
Origin类型 | igp | igp |
MED属性值 | 0 | 0 |
路由类型 | IBGP | IBGP |
AS内部IGP的Metric | 1 | 1 |
AS_Path属性完全相同 | 200 | 300 |
上面的属性除了最后一条AS-Path属性完全一致是不满足的其它都是相同的,但是在实际情况中AR1作为AS内部路由器拥有多出口情况下AS-Path只能做到AS的长度一致。默认情况下设备只会对AS_Path完全相同的路由进行负载分担,可以使用load-balancing as-path-ignore
忽略AS_Path路径不一致。
查看AR1的路由表:
现在AR1的BGP路由表优选AR2到达192.168.1.0/24,然后BGP路由条目下发到IP全局路由表类型为IBGP路由,最终下发到FIB转发表。
配置负载分担:在AR1上配置负载分担。
bgp 100peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0peer 3.3.3.3 as-number 100 peer 3.3.3.3 connect-interface LoopBack0#ipv4-family unicastundo synchronizationmaximum load-balancing ibgp 2 # 配置最大的负载分担路由条数load-balancing as-path-ignore # 忽略AS号完全一致检查peer 2.2.2.2 enablepeer 3.3.3.3 enable
#
配置示例:maximum load-balancing {ibgp | ebgp | number(1-8)}
-
ibgp :表示对于IBGP学习到的路由进行负载分担 -
ebgp :表示对于EBGP学习到的路由进行负载分担,如果不设置ibgp或者ebgp则表示全局负载均衡 -
number:默认是1,默认不进行负载分担,最大数量视设备性能型号而定
查看负载分担后的AR1路由表:
发现BGP路由表依然只有一条最优路由,但是在IP全局路由表出现了两条,而且FIB转发表也是两条路由,这样就实现了IBGP路由的负载分担。
二、EBGP路由负载分担

分别配置好IP地址,不同AS间配置EBGP邻居,在AR1上通过network通过Lookback 0的网段192.168.1.0/24.
在AR2上查看邻居与路由。

在AR2配置路由负载分担:
bgp 100peer 10.1.23.3 as-number 200 peer 10.1.24.4 as-number 200 #ipv4-family unicastundo synchronizationmaximum load-balancing ebgp 2 # 配置针对EBGP路由的负载分担为2peer 10.1.23.3 enablepeer 10.1.24.4 enable# 这里为什么不需要忽略AS属性一致呢,因为AR2通过AR3和AR4的AS-Path路径都为200 300 。
最后查看路由表:

总结:通过配置BGP路由分担可以实现流量负载均衡,减少网络拥塞。通过使用load-balancing as-path-ignore
忽略AS_Path路径不一致。通过maximum load-balancing {ibgp | ebgp | number(1-8)}
配置负载分担。最终效果在BGP路由表还是优选一条,但是在全局路由表会有两条负载分担的等价路由。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布
相关文章:

计算机网络-BGP路由负载分担
在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况。 通过配置BGP负载分担,可以使得设备同时将多条等代…...

Python爬取中国福彩网彩票数据并以图表形式显示
网页分析 首先打开中国福彩网,点击双色球,选择往期开奖栏目 进入栏目后,选定往期的奖金数目作为我们想要爬取的目标内容 明确目标后,开始寻找数据所在的位置 鼠标右击页面,打开网页源代码,在源代码中搜索…...
0621作业
目录 多线程并发服务器模型服务器实现 select的TCP服务器模型服务器实现 select的TCP客户端实现 多线程并发服务器 模型 sfd socket(); bind(); listen(); while(1){newfd accept();pthread_create(&tid, NULL, do_cli_msg, [newfd, cin]集合);pthread_detach(tid); } …...

ps基础入门
1.基础 1.1新建文件 1.2创建指定形状 1.4移动工具 1.41移动画布中的任意元素 1.42移动画布 1.43修改画布大小 1.44修改图像大小 1.5框选工具 1.6矩形工具 1.7图层 1.71图层颜色修改 1.72…...

c语言常用易错记录
c语言常用易错记录 文章目录 c语言常用易错记录1.for循环 1.for循环 示例: #include <stdio.h>int main() {int i;for (i 0; i < 10; i) {printf("%d\n", i);}return 0; }执行顺序 备注:此图来源于b站鹏哥C语言视频课截图…...

制造业ERP五大生产模式详解!
制造业面临着从成本控制、生产效率到供应链管理的挑战,每一个环节都需要精细化的管理和高效的协同。而ERP系统,作为一种集信息技术与管理思想于一体的管理工具,正逐渐成为制造业转型升级的关键。那么,通过本文你将会了解到&#x…...

Python20 Numpy基础
NumPy(Numerical Python)是一个开源的Python库,广泛用于科学计算。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具和函数。NumPy是数据分析、机器学习、工程和科学研究中不可或缺的工具之一,因为它提供…...

暴雨虐长沙,生灵受煎熬
今天,“湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖”这消息,终于登上互联网社交平台热搜榜。 截图:来源社交网站 综合多家媒体消息概述如下。 昨(24日)天,湖南长沙市遭遇强降雨,一…...

iptables(5)常用扩展模块iprange、string、time、connlimit、limit
简介 之前我们已经介绍过扩展模块的简单使用,比如使用-m tcp/udp ,-m multiport参数通过--dports,--sports可以设置连续和非连续的端口范围。那么我们如何匹配其他的一些参数呢,比如源地址范围,目的地址范围,时间范围等,这就是我们这篇文章介绍的内容。 iprange扩展模块…...

Mars3d实现汽车尾气粒子效果从汽车屁股开始发射效果
本身的汽车尾气粒子效果:在汽车模型的中间发射的↓↓↓↓↓↓↓↓↓↓↓ Mars3d实例中是使用transY偏移值实现汽车尾气粒子效果从汽车屁股开始发射效果: // 动态运行车辆的尾气粒子效果 function addDemoGraphic4(graphicLayer) {const fixedRoute new…...
01_RISC-V 入门及指令集学习
参考文档 risc-v入门:https://blog.csdn.net/bebebug/article/details/128039038RISC-V OS:https://blog.csdn.net/bebebug/article/details/130551378riscv-spec文档:https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pd…...

Facebook与地方文化:数字平台的多元表达
在当今数字化时代,社交媒体不仅仅是人们交流的工具,更是促进地方文化传播和表达的重要平台。作为全球最大的社交网络之一,Facebook在连接世界各地用户的同时,也成为了地方文化多元表达的重要舞台。本文将深入探讨Facebook如何通过…...

ArmSoM-Sige7/5/1 和树莓派5规格比较
引言 在当今快速发展的嵌入式系统领域,选择一款性能强大、功能丰富的开发板对于项目的成功至关重要。本文将介绍并比较 Sige7、Sige5、Raspberry Pi 5 和 Sige1 这四款开发板的关键规格和特性,帮助开发者和爱好者选择最适合其需求的平台。 ArmSoM-Sige…...

创建App
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Django项目中,推荐使用App来完成不同模块的任务,通过执行如下命令可以启用一个应用程序。 python manage.py startapp app…...

2024年6月上半月30篇大语言模型的论文推荐
大语言模型(LLMs)在近年来取得了快速发展。本文总结了2024年6月上半月发布的一些最重要的LLM论文,可以让你及时了解最新进展。 LLM进展与基准测试 1、WildBench: Benchmarking LLMs with Challenging Tasks from Real Users in the Wild Wi…...

Chromium下载
https://chromium.woolyss.com/download/ https://www.chromium.org/getting-involved/download-chromium/...

【Linux】彻底理解---环境变量(什么是环境变量,环境变量有什么作用?)
目录 一、前言 二、什么是环境变量? 三、如何添加环境变量? 四、如何获取环境变量? 💧环境变量相关的命令💧 💧测试HOME与USER💧 🔥环境变量的获取方式🔥 ① en…...

VMware完美安装Ubuntu20.04
一、官网下载Ubuntu20.04 下载地址为:https://releases.ubuntu.com/https://releases.ubuntu.com/ 下载完后镜像为ubuntu-20.04.4-desktop-amd64.iso 二、Ubuntu安装 2.1、打开VMware player,并创建新虚拟机。 2.2、点击浏览按钮选择需要安装的镜像 2…...
使用Spring Boot作为CMS系统的后台,Nuxt.js作为前台的分析
在现代Web开发中,前后端分离架构越来越受欢迎。Spring Boot和Nuxt.js的组合为构建内容管理系统(CMS)提供了一个强大的解决方案。本文将分析这种组合的优势、挑战以及应用场景。 1. 技术概述 1.1 Spring Boot Spring Boot是基于Java的框架&…...

Spring Boot整合Druid:轻松实现SQL监控和数据库密码加密
文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言 1.1 简介 Dru…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...