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

BGP学习二:BGP通告原则,BGP反射器,BGP路径属性细致讲解,新手小白无负担

目录

一.AS号

二.BGP路由生成

1.network

2.import-route引入

三.BGP通告原则

1.只发布最优且有效的路由

2.从EBGP获取的路由,会发布给所有对等体

3.水平分割原则

4.IBGP学习BGP默认不发送给EBGP,但如果也从IGP学习到了这条路由,就发给EGP

四.BGP路径属性

(1).公认属性

1.公认必遵

1.AS_Path

2.Origin

3.Next_Hop

2.公认任意

1.local preference

2.Atomic_aggregate

(2).可选属性

1.可选过渡

1.community

2.可选非过渡

1.MED

.local preference(本地优先级)是如何离开

五.BGP路由反射器

(1).路由反射器的角色

1.RR

2.client

(2)反射规则

(3)水平分割防反射可能出现的环路

1.originator_ID

2.cluster_list


一.AS号

AS长度是16bit,范围是0-65535

分为公有和私有

公有:1-64511
私有:64512-65534

二.BGP路由生成

BGP是无法发现和计算路由的,他只能从IGP引入路由,有两种方式

1.network

宣告网段,一条一条来,但可靠性高,没有这个网段就无法宣告

2.import-route引入

批量引入IGP的路由,生成聚合

三.BGP通告原则

1.只发布最优且有效的路由

*——有效

>——最优

有效路由是说下一跳必须可达

2.从EBGP获取的路由,会发布给所有对等体

包括IBGP/EBGP,但下一跳不改变直接发

3.水平分割原则

从IBGP获取的路由,不会再发送给其他IBGP对等体

就是说只传一跳,防止形成路由环路

4.IBGP学习BGP默认不发送给EBGP,但如果也从IGP学习到了这条路由,就发给EGP

如果没有原则4,会产生路由黑洞

当R5向10.0.12.1发消息,可以找到R3,但R3和R2建立的是IBGP,没有物理链路,就只能通过R4发送,但此时IGP没有这条路由,R4在路由表查找不到这条路由,只能丢弃,发一个吞一个,就叫路由黑洞

那么如果有了原则4,只有IGP有这条路由,也就意味着R4有这条路由,才发给另一个EBGP——R5,就不会出现路由黑洞问题

但这个原则用的不多,华为一般认为IBGP全互联解决路由黑洞比较好。

四.BGP路径属性

我们上一篇了解到,BGP可以根据不同网络需求选择不同路径,选取最优路径,现在我们一起学习有效BGP的路径属性

(1).公认属性

所有BGP可识别

1.公认必遵

每个路由器必识别,在每一个Update信息里

1.AS_Path

前往目标路由器经过的AS列表

作用是防环和路由优选

防环

路由器在学习到一条路由后,在自己的AS_path左侧添加学到路由的AS号,当路由器学到一条路由,在这条路由的AS_path中看到自己的AS号,就不再学习。起到防环作用。

路径优选

AS_Path列表AS数量少(AS_Path短)的路径更优,经过的路由器少

AS——Seqence

有序AS号,默认情况下,就是我们防环和路径优选这种例子

AS_set

无序AS列表,在做链路聚合时,不再加上聚合前的AS号,因为要是想要访问这个网段,就直接找R3就可以了

修改AS_path

Additive:直接在左侧追加AS号

Overwrite:替换AS号

None Overwrite:清空AS列表

2.Origin

标记路由器起源

关于起源名称很容易与路由协议按区域分类搞混,所以这里我们不要管这个起源名称

直接看标识和学习方式。

如果是BGP network方式学习到的,那么这个路由一定在路由表里,不然没有办法宣告,所以他的受信任度是最高的,标识为i

如果是 BGP学习到的,那么标识为e

如果是路由引入学习来的,那么他最不可信,受信任度最低,标识为?

3.Next_Hop

下一跳可不可达

下一跳设置规则

1)设置为BGP邻接关系接口

2)设置为环回地址

3)设置为本地,peer 3.3.3.3 next_hop_local,会自动把下一跳改为自己的本地地址

4)Next_Hop与EBGP是一个网段,不改变下一跳

2.公认任意

有需求则带

1.local preference

本地优先级越高,路径越优

local preference注意事项

1)只在IBGP内有效

2)重新打上本地优先级,发到不同BGP

3)默认为100

local preferenceAS内如何离开AS

2.Atomic_aggregate

原子聚合

聚合后丢失路径属性,需要给下游的对等体警告,并提示聚合点已经聚合设备的AS号

(2).可选属性

不需要被所有了路由器识别

1.可选过渡

BGP不识别但发给其他路由器

1.community

我们一般使用ACL或IP Prefix-list来进行拦截或让通行不同的业务流量,但这样非常麻烦,要一条一条的设置

那么我们使用.community就会快很多

community可以看作是一个标签/标记,TAG,来简化路由策略

2.可选非过渡

BGP不识别就不发给其他路由器

1.MED

可以看作是开销值,默认不携带,并且默认为0

告知其他路由器如何进入本区域

.local preference(本地优先级)如何离开

MED注意事项

1)缺省情况下,只比较来自同一个相邻AS时比较,不同相邻AS不比较

2)EGP对等体情况下

是network,import_routez学到的,MED就是他的cost

不跨区域传播

五.BGP路由反射器

水平分割使IGBP获取的路由只能发一跳,避免产生路由环路,但这样可能会有路由黑洞,华为一般认为IBGP全互联解决这个问题,但这样会维持太大的路由表项,就有了路由反射器来解决这个问题。

(1).路由反射器的角色

1.RR

路由反射器

2.client

RR客户端

(2)反射规则

1.RR从非客户端学习到一条IBGP,反射给所有的客户端

2.RR从客户端学习到一条IBGP,反射给除此客户端的所有的客户端,以及所有非客户端

3.从EBGP学习到,反射给所有BGP邻居

(3)水平分割防反射可能出现的环路

RR可以说是打破了水平分割原则,那么就有可能出现环路

那么我们又要打破RR的环路

1.originator_ID

通告该路由的BGP路由器Router ID

如果AS内有多个RR,originator_ID由第一个RR创建

如果一条路由器收到的路由信息中originator_ID与自己的Router ID相同,那么他就忽视这条路由更新,上图第4步,R1就直接不接收这条BGP路由和更新,就不会有环路

2.cluster_list

反射簇列表:一个 RR和他的所有client

.cluster_ID默认是这个RR的Router ID

当一个路由信息被反射后,他就把发射他的RR的cluster_ID加到cluster_list中。当一个RR收到带

.cluster_list的路由信息时,有他自己的cluster_ID,就忽视这条路由更新。

相关文章:

BGP学习二:BGP通告原则,BGP反射器,BGP路径属性细致讲解,新手小白无负担

目录 一.AS号 二.BGP路由生成 1.network 2.import-route引入 三.BGP通告原则 1.只发布最优且有效的路由 2.从EBGP获取的路由,会发布给所有对等体 3.水平分割原则 4.IBGP学习BGP默认不发送给EBGP,但如果也从IGP学习到了这条路由,就发…...

Docker学习(带图详细)

一、安装docker 参考官方文档:https://docs.docker.com/engine/install/centos/ 查看系统版本 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# [rootlocalhost ~]# uname -a Linux localhost.localdomai…...

RabbitMQ 如何使用延迟队列

RabbitMQ 如何使用延迟队列 目录 前置条件场景描述RabbitMQ 延迟队列机制实现步骤 1. 安装 RabbitMQ 延迟队列插件2. 创建延迟队列和交换机3. 发布延迟消息4. 消费延迟消息 示例代码 1. 延迟队列配置2. 发布消息的 Producer 代码3. 消费消息的 Consumer 代码 注意事项 前置条…...

【C++】栈和队列

目录 前言 一、stack 1. 栈的定义 2. 成员函数 二、queue 1. 队列的定义 2. 成员函数 三、priority_queue 1. 优先队列的定义 2. 成员函数 前言 栈和队列是STL中很重要的两个容器,栈的特点是先进后出;队列的特点是先进先出。还有优先队列&…...

常用的预编码算法学习

一、概况 预编码算法的常用实现方式有以下几种: 1. 间隔预编码(Interval Pre-coding):该算法将原始数据分成若干个间隔,然后对每个间隔内的数据进行编码。间隔的长度可以根据具体情况进行选择,常见的间隔长度有固定长度和可变长度两种方式。 2. 迭代预编码(Iterative…...

人才培养计划大纲

构建全面而高效的人才培养规划 文章大纲: 引言 人才培养的重要性当前人才培养面临的挑战文章目的与结构人才培养规划的基本概念 定义与内涵人才培养规划与企业战略的关系人才培养规划的基本原则人才培养规划的现状分析 当前人才培养规划的实践情况存在的问题与不足…...

多语言环境下的正则表达式实战:校验整数、小数

在软件开发中,正则表达式是验证用户输入数据格式的强大工具,特别是在处理表单验证时。本文将通过JavaScript、Java、Python、C、Rust、Go、C六种编程语言展示如何使用正则表达式来校验输入是否为整数或小数,特别强调小数点后最多保留两位的场…...

过拟合和欠拟合的学习

1.什么拟合 就是说这个曲线能不能很好地描述某些样本数据,并且拥有较好的泛化能力。 2.什么是过拟合 过拟合就是曲线太过于贴切训练数据的特征了,在训练集上表现得非常优秀,近乎完美的预测/区分了所有得数据,但是在新的测试集上…...

中间件的使用

中间件是全局使用 工厂函数定义中间件 middleware.py # 工厂函数的中间件 def simple_middleware(get_response):def middleware(request):print("在视图函数处理之前执行、、、、、")response get_response(request)print("在视图函数处理之后执行。。。。…...

阿里云OSS权限开通步骤及最佳实践

在阿里云云计算平台中,对象存储服务(OSS)是一种高度可扩展的云存储服务,提供了安全、可靠、低成本的数据存储解决方案。在使用OSS时,正确配置权限是至关重要的,以确保数据的安全性和访问控制。本文将介绍阿…...

【Python贪吃蛇】:编码技巧与游戏设计的完美结合

文章目录 🔥一、运行效果💥二、游戏教程✈1. 导入模块❤️2. 初始化游戏元素☔3. 改变蛇移动的方向👊4. 绘制方块🚀5. 检查蛇头是否在游戏区域内🌈6. 定义蛇的移动函数🎬7. 绑定键盘事件 ⭐三、完整代码 &a…...

2024.5.19 机器学习周报

引言 Abstract 文献阅读 1、题目 X-HRNET: TOWARDS LIGHTWEIGHT HUMAN POSE ESTIMATION WITH SPATIALLY UNIDIMENSIONAL SELF-ATTENTION 2、引言 高分辨率表示是人体姿态估计实现高性能所必需的,随之而来的问题是高计算复杂度。特别地,主要的姿态估…...

母亲节祝福html源码示例

创建一个完整的HTML页面&#xff0c;我可以为您提供一个简单的HTML模板&#xff0c;其中包含一些示例性的祝福语&#xff0c;并添加一些注释以帮助您理解如何扩展内容。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8&qu…...

微信小程序开发中的权限管理与用户身份验证:守护数据安全与用户体验

微信小程序开发中的权限管理与用户身份验证&#xff1a;守护数据安全与用户体验 引言 在微信小程序开发中&#xff0c;权限管理和用户身份验证是确保数据安全、保护用户隐私以及提供个性化服务的关键环节。本文将深入探讨微信小程序中如何实现权限管理和用户身份验证&#xf…...

Python3 笔记:二进制的转换

十进制是逢十进一&#xff0c;二进制就是逢二进一。 十进制里最大的数字是9&#xff0c;二进制里最大的数字是1。 11010010001000010000010000001000000010^0110^11010^210010^3100010^41000010^510000010^6100000010^7100000002^012^122^242^382^4162^5322^6642^7128 1、十进…...

代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

知识点 1、PHP审计-动态调试-变量覆盖 2、PHP审计-动态调试-原生反序列化 3、PHP审计-动态调试-框架反序列化PHP常见漏洞关键字 SQL注入&#xff1a; select insert update delete mysql_query mysqli等 文件上传&#xff1a; $_FILES&#xff0c;type"file"&…...

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …...

MySQL中的子查询

子查询,在一个查询语句中又出现了查询语句 子查询可以出现在from和where后面 from 表子查询(结果一般为多行多列)把查询结果继续当一张表对待 where 标量子查询(结果集只有一行一列)查询身高最高的学生,查询到一个最高身高 列子查询(结果集只有一行多列) 对上表进行如下操作 …...

Unity打开安卓设备不同的设置面板

1&#xff0c;打开安卓设备不同的设置面板&#xff0c;我还贴心的把Android官网的链接放下面了 2&#xff0c;使用也很方便&#xff1a;unity按钮事件上拖这个脚本&#xff0c;注册MyOpenAndroidSettings方法&#xff0c;参数 填 和枚举值相应的数字 // 功能&#xff1a;打开…...

低空经济+无人机:低空物资运输技术详解

随着科技的飞速发展和航空产业的日益壮大&#xff0c;低空经济已成为全球经济的重要组成部分。无人机作为低空经济的重要载体&#xff0c;其在低空物资运输领域的应用逐渐凸显&#xff0c;为物流、救援等多个领域带来了革命性的变革。 一、低空经济概述 低空经济是指在垂直高度…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...