BGP路由优选+EVPN
BGP 的路由优选规则是一套多步决策链,用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议,通过这些优选规则,网络管理员可以控制数据流量的流向,确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及其链条。
BGP 路由优选规则的步骤
BGP 有一套固定的优选规则链,规则按照优先级顺序依次检查,直到找到一个最优路由。以下是 BGP 常用的优选规则(从高到低):
- 优先最高的 Weight 值(仅限于 Cisco 路由器特性)
- 优先本地优先级(Local Preference)值
- 优先本地产生的路由
- 优先最短的 AS 路径(AS_PATH)
- 优先最低的 Origin 类型
- 优先最低的 MED(Metric)值
- 优先到达下一跳的 IGP 距离
- 优先来自最低的 Router ID 的路由
实例说明
假设公司 A 的网络(AS100)有 3 个上联 ISP,分别是 ISP1(AS200),ISP2(AS300),和 ISP3(AS400)。每个 ISP 都通告了一条到达目标网络 192.168.1.0/24 的路由,具体情况如下:
- ISP1:AS_PATH 为
200 300
,Local Preference 为 100,MED 为 10,Router ID 为 1.1.1.1 - ISP2:AS_PATH 为
300
,Local Preference 为 200,MED 为 20,Router ID 为 2.2.2.2 - ISP3:AS_PATH 为
400 300
,Local Preference 为 100,MED 为 5,Router ID 为 3.3.3.3
我们来一步步分析该如何选择最优路径:
-
Weight:假设没有特别配置 Weight 值。Weight 值缺省为 0,不会影响路由选择。
-
Local Preference:
- ISP1 的 Local Preference 为 100。
- ISP2 的 Local Preference 为 200。
- ISP3 的 Local Preference 为 100。
- 因为 ISP2 的 Local Preference 最高(200),优选 ISP2 的路由。
结果:此时,BGP 已经选择了 ISP2 的路由为最优路径,不再需要继续检查其他规则。如果没有 Local Preference 优先级的差异,继续以下规则。
-
AS_PATH 长度(如果没有 Local Preference 差异):
- 如果 Local Preference 相同,我们会看 AS_PATH 长度。
- 比较 ISP1 和 ISP3 的 AS_PATH:
- ISP1 的 AS_PATH 为
200 300
,长度为 2。 - ISP3 的 AS_PATH 为
400 300
,长度也是 2。
- ISP1 的 AS_PATH 为
- 此时,ISP1 和 ISP3 的 AS_PATH 长度相同,继续比较下一个优选条件。
-
Origin 类型:
- 假设三条路由的 Origin 类型相同,继续比较下一项。
-
MED 值:
- ISP1 的 MED 为 10。
- ISP3 的 MED 为 5。
- MED 值越小越优,因此优选 ISP3。
结果:若之前条件无法选出最优路径,ISP3 的路由将被选为最优路径。
-
IGP Metric 到 Next_Hop 的距离(如果前面的规则都相同):
- 比较到达 ISP1 和 ISP3 的下一跳的 IGP 距离,距离越近越优。
-
Router ID(最后一项):
- 假如上面所有的条件都相同,我们会选择 Router ID 最小的路由。因此在这种情况下,优选来自 Router ID 1.1.1.1(ISP1)的路由。
本地优先
在 BGP 中,聚合(Aggregation)和注入(Injection)是两种重要的方式,用于控制路由条目的传播。每种方法又分为几种类型,分别适用于不同的场景。我们来解释这些概念,并比较它们。
1. 聚合(Aggregation)
聚合是一种将多个具体的路由条目合并成一个更粗略的路由条目的方式,目的是减少路由表的条目数量,提升路由效率。BGP 中有两种聚合方式:
a. 手动聚合
- 定义:手动聚合是指使用
aggregate
命令,通过管理员在 BGP 配置中手动指定要进行聚合的路由。 - 特点:手动聚合通常需要网络管理员明确地指定哪些路由要被聚合,并通过 BGP 视图内的配置命令进行操作。
- 场景:适用于需要特定控制的情况,例如仅对特定的路由进行聚合。
b. 自动聚合
- 定义:自动聚合是通过
summary automatic
命令生成的,BGP 会自动将相同前缀的多个路由条目合并成一个条目。 - 特点:自动聚合不需要管理员逐条配置,BGP 会自动检测可以聚合的路由并进行合并。
- 场景:适用于较大规模的网络环境,希望自动合并具有相同前缀的路由条目,从而减少路由表的数量。
2. 注入(Injection)
注入指的是将其他路由协议的路由条目引入到 BGP 路由表中,从而使得 BGP 可以使用这些路由信息。BGP 中的注入方式有两种:
a. Network 方式注入
- 定义:Network 方式是指在 BGP 配置中直接使用
network
命令,将特定网段的路由加入 BGP。 - 特点:这种方式要求网段已经在本地路由表中存在,BGP 只负责将这个网段的信息引入到 BGP 路由表中。
- 场景:适用于需要手动控制哪些特定的网段被引入到 BGP 的场景。
b. Import-route 方式注入
- 定义:Import-route 方式是通过
import-route
命令,将其他路由协议(如 OSPF、IS-IS 等)的路由条目自动引入 BGP。 - 特点:这种方式不需要手动指定每一个网段,BGP 会自动获取其他路由协议的路由信息并引入 BGP。
- 场景:适用于网络中已有其他路由协议的环境,需要将其他协议的路由信息批量引入 BGP。
比较总结
- 聚合:减少路由表条目数量,提升效率。
- 手动聚合:精确控制,适用于特定路由。
- 自动聚合:无需手动配置,适合大规模网络。
- 注入:将其他路由引入 BGP。
- Network 方式:手动选择特定网段,灵活性高。
- Import-route 方式:自动批量引入其他协议的路由条目,简化配置。
BGP EVPN基础
SDN(Software-Defined Networking)是一种网络架构,它通过将网络控制层与数据转发层分离,使得网络管理更加灵活和可编程。SDN允许网络管理员通过软件应用程序动态配置网络,以满足不断变化的需求。
SDN示例:在一家大型企业中,IT团队可以通过SDN控制器快速调整网络配置,以适应新的应用需求,例如在高峰期增加带宽,而无需物理更改网络设备。
EVPN示例:在一个多租户数据中心中,不同的公司可以在相同的物理基础设施上运行各自的虚拟网络,而EVPN确保了它们之间的流量隔离和安全性,使得各个租户能够独立运作而不互相干扰。
MP-BGP
在BGP-4(Border Gateway Protocol version 4)中,确实有几个与IPv4相关的属性和信息,它们在BGP协议中用于传递路由信息。以下是对您提到的三个信息的解释:
-
NEXT_HOP属性:
- NEXT_HOP是BGP中的一个路径属性,它指定了到达目的地的下一跳(Next Hop)路由器的IP地址。在IPv4环境中,这个属性通常包含一个IPv4地址,指示数据包应该发送到的下一个路由器。
- 在BGP路由更新消息中,NEXT_HOP属性告诉接收方,当它们需要将数据包转发到特定的目的地时,应该将数据包发送到哪个IP地址。
-
AGGREGATOR属性:
- AGGREGATOR属性用于标识汇总(aggregated)路由的来源。当一个BGP路由器汇总多个具体的路由前缀到一个更大的前缀时,它会在通告的路由中包含这个属性。
- 这个属性包含汇总该路由的BGP路由器的自治系统号(AS Number)和路由器ID。这样,接收方可以知道这条路由是由哪个路由器汇总的,以及它来自哪个自治系统。
-
IPv4 NLRI(Network Layer Reachability Information):
- NLRI是BGP路由更新消息中的一部分,它包含了可达网络的信息。在IPv4环境中,NLRI包含了IPv4地址前缀和长度,用于描述可以到达的网络。
- 例如,一个NLRI可以是“10.0.0.0/8”,表示从10.0.0.0到10.255.255.255的所有地址都是可达的。
这三个信息是BGP-4中用于在自治系统之间交换IPv4路由信息的关键组成部分。它们使得BGP能够高效地传播和汇总路由信息,同时确保网络的可达性和正确性。在BGP-4中,这些属性和信息是标准化的,以确保不同厂商的BGP实现能够互操作。
EVPN
EVPN 简介
EVPN可以在MPLS网络上实现,也可以与其他网络技术结合使用
在MPLS环境中,EVPN利用标签交换的高效性,将以太网帧封装在MPLS标签中进行传输,从而提升了网络的转发效率和流量管理能力。
PE (Provider Edge):提供商边缘路由器
CE (Customer Edge):客户边缘设备
EVPN 常见路由
RFC代表“Request for Comments”(征求修改意见)。RFC是由互联网工程任务组(IETF)发布的一系列文档,它们详细描述了互联网标准、协议、流程和最佳实践。
EVPN 典型应用场景
这张图展示了在园区网(类似公司内部网络)中应用EVPN技术来构建一个虚拟化的网络架构,让园区网具备类似云数据中心的灵活性和管理能力。下面是逐步的解释:
-
园区网虚拟化:
- 园区网是指企业内部网络,连接了企业的各种设备(如电脑、服务器、无线接入点等)。
- 这里提到的“园区网虚拟化”类似于云数据中心中的虚拟网络解决方案,通过将底层网络和逻辑网络分离,构建更加灵活的网络结构。
-
EVPN和NVO(Network Virtualization Overlay):
- EVPN(Ethernet VPN)是一种虚拟网络技术,它提供了虚拟化网络的管理和控制能力,类似于云数据中心中的网络虚拟化。
- NVO方案(基于RFC 8365标准)是一种覆盖网络的虚拟化方案,通过构建一个“Overlay”网络层,实现在底层物理网络之上运行的虚拟网络。这就像在一个实际存在的网络上面,搭建出多个独立的虚拟网络。
-
VXLAN封装:
- VXLAN是一种封装协议,可以将不同的虚拟网络“包裹”起来,在底层的网络设备中传输。这使得每个虚拟网络之间的数据不会混淆。
- 图中显示的“虚拟网络1”、“虚拟网络2”等都是通过VXLAN封装的,它们在底层网络上分开传输,互相隔离,但都可以共用底层网络。
-
Overlay和Underlay:
- Overlay(虚拟网络层):是在物理网络上构建的逻辑网络层,便于灵活配置和调整虚拟网络。
- Underlay(底层物理网络层):实际存在的物理网络,负责数据的真实传输。这里的“LSW”就是底层交换机的表示。
-
整体效果:
- 通过EVPN和VXLAN封装,园区网可以实现多租户隔离和虚拟化,类似于数据中心的云网络架构。
- 这种方式使得不同虚拟网络可以独立管理和配置,构建更加灵活的园区网络,同时支持跨物理设备传输数据。
简单来说,这种架构让园区网具备云数据中心的灵活性,可以轻松创建多个隔离的虚拟网络,并通过底层网络高效传输数据。
EVPN,VXLAN,Overlay三者的关系:
- VXLAN 提供了 Overlay 网络的数据封装方式,把不同虚拟网络的流量“包裹”起来,便于在底层网络中传输。
- EVPN 提供了 Overlay 网络的控制平面,通过BGP分发网络中的MAC/IP信息,使得Overlay网络具有动态路由和故障恢复能力。
- Overlay 是三者构建的最终结果,它是一种运行在物理网络之上的逻辑网络架构,为用户提供了多租户、虚拟化以及高扩展性。
通过VXLAN和EVPN的结合,Overlay网络能够在复杂的数据中心环境中实现灵活管理和高效的资源隔离。
相关文章:

BGP路由优选+EVPN
BGP 的路由优选规则是一套多步决策链,用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议,通过这些优选规则,网络管理员可以控制数据流量的流向,确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及…...
牛客练习赛131(未补)
A-小H学语文 题意:木板数量为m,想让mmh(min)最大,找出这几块木板 分析:让木板从大到小排序,找到最大的体积,将之前的木板按序列输出 代码: #include<bits/stdc.h> using n…...

功能更新丨AI黑科技助燃VR全景新势能
随着VR全景市场需求不断扩大, 为更好地赋能合作商业务发展, 酷雷曼积极推进产品技术迭代, 融合VR虚拟现实和AI人工智能, 重磅推出6大AI黑科技, 让VR全景内容更丰富、创作更加高效! 新功能怎么用&#…...
JavaCV学习第一课
1、 JavaCV [1] 是一款基于JavaCPP [2]调用方式(JNI的一层封装),由多种开源计算机视觉库组成的包装库,封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算…...

Java第二阶段---16字符串---第一节 String
1.特性介绍 String 类位于 java.lang 包中,无需引入,直接使用即可。 String 类是由 final 修饰的,表示String 类是一个最终类,不能够被继承。 String 类构建的对象不可再被更改 示例 package com.cyx.string;public class Ex…...

<十六>Ceph mon 运维
Ceph 集群有故障了,你执行的第一个运维命令是什么? 我猜测是ceph -s 。无论执行的第一个命令是什么,都肯定是先检查Mon。 在开始之前我们有必要介绍下Paxos协议,毕竟Mon就是靠它来实现数据唯一性。 一: Paxos 协议 1…...

【网络安全初识】——互联网发展史
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络安全】 本专栏旨在分享学习网络安全的一些学习笔记,欢迎大家在评论区交流讨论💌 ipconfig:显示当…...
Windows和Linux内存共享机制
Windows和Linux内存共享机制 引言1.Windows写操作读操作 2.Linux写操作读操作 3.Shell使用 tmux 运行 write 和 read说明 引言 在嵌入式开发领域,内存共享机制作为不同操作系统间实现高效数据交换的重要手段,尤其在对实时性和可靠性要求极高的环境中更为…...
windows@命令行中获取环境变量取值不展开取值(原值)
文章目录 命令行中获取环境变量取值获取不展开的值具体实现注解 封装为函数版本1版本2 命令行中获取环境变量取值 这里主要讨论获取未展开的值本来获取未展开的值应该作为默认选项,至少有合适的api方便直接调用,但是不知道微软怎么想的,让这个任务变得不直接 获取不展开的值 …...

如何找到多平台内容爆款进行批量复刻?
为了进一步扩大品牌社媒影响力,在消费者做决策的时候,能够第一时间出现在首选位置。持续在抖音、小红书、b站、公众号等各大社媒平台,产生连续的、正向的高质量品牌曝光,是非常重要的。如何进行这种多平台品牌影响力的提升呢&…...

【UML】- 用例图(结合银行案例解释其中的奥义)
目录 一、相关介绍 作用: 组成: 关系 二、使用具体银行案例解释各组成部分的含义 1、系统 2、参与者 3、用例 4、关联关系 5、扩展关系 6、泛化(继承)关系 三、成品 一、相关介绍 作用: 用例图可以描述一个…...

浅谈UI自动化
⭐️前言⭐️ 本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题…...
三、k8s快速入门之Kubectl 命令基础操作
⭐️创建Pod [rootmaster ~]# kubectl run nginx --imageharbor.tanc.com/library/ngix:latest kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generatorrun-pod/v1 or kbectl create instead. deplo…...

深度学习-BP算法详解
BP(Back Propagation,反向传播)是训练神经网络的重要算法之一。它通过计算误差并将误差反向传播,以更新神经网络中的权重和偏置,进而使模型更好地拟合数据。 1. BP算法的基本原理 反向传播的基本思想是: …...

Java审计对比工具JaVers使用
最近有个需求,需要将页面的内容生成excel或者word文档,而且每次的修改都需要生成新的版本,同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象,同时存储到数据库一条新数据,对应数据表一…...

unity中预制体的移动-旋转-放缩
unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…...

【压力测试】如何确定系统最大并发用户数?
一、明确测试目的与了解需求 明确测试目的:首先需要明确测试的目的,即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求:深入了解系统的业务特性,包括用户行…...
ubuntu常用基本指令简记
一、在线帮助 1、help Linux命令可以分为内部命令和外部命令,内部命令就是由Linux默认Shell-bash提供的命令,而非bash提供的命令就是外部命令。 对于内部命令,可以使用help命令来获取帮助 形式为 help 指令 2、man 在日常使用中碰到的绝…...
【解决方案】用git reset --hard重置了提交但是发现reset了一些本不该reset的内容,是不是寄了?
使用 git reset --hard [commit_id] 命令后,所有的更改(包括暂存区和工作区的更改)都会被重置到指定的提交。如果想要撤销这个操作,恢复到重置之前的状态,可以尝试以下方法: 1. 使用 Git Reflog 恢复 Git…...

ACM模式下Java读取控制台输入注意事项及输出规范化
背景 在ACM模式下。需要我们去接受输入的参数,一般是使用Scanner去读取控制台输入的参数System.in。 不熟悉的情况下,很容易出现问题,针对常见的问题做一个总结。 一、nextXxx 如next,nextInt,nextFloat,…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...