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,…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
