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

BGP协议

1.BGP相关概念

1.1 BGP的起源

不同自治系统(路由域)间路由交换与管理的需求推动了EGP的发展,但是EGP的算法简单,无法选路,从而被BGP取代。

自治系统:(AS)

IGP:自治系统内部协议,ospf,rip,is-is,发现和计算路由信息

EGP:自治系统外部协议,传递路由信息,缺点:只负责传路由信息,不进行路由控制。

-AS号:

*任何一个运行BGP协议的路由器,都需要指定一个AS号,AS号就是用来在BGP协议中来表示不同的公司。AS号取值:0-65535

&AS号的空间有限,随着网络的发展有可能会快速的耗尽,为了能够让AS号能够用,所以又有了“私有AS号”

&私有AS:

    -这类AS不需要花钱购买,可以随意使用,但是只能在公司内部使用

    -取值范围:64512-65535

&公有AS:

    -这类AS需要花钱购买,需要找当地的运营商。可以在公网上运行!

    -取值范围:0-64511

-route-id

-作用:在BGP网络中标识唯一的路由器

-确定方式:

      1.手动指定

      2.自动选举

1.2 BGP协议特性(单播传输)

1.3BGP的优点

BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:

最终目的:在公司之间,以稳定的方式,长时间的,传输大量的路由,最终计算一个无环的路径同时,还能实现对路由的灵活控制。

1.4 BGP的工作原理

-建立邻居表

       包含的是BGP的邻居设备

-同步数据库

        包含的是自己本地宣告的BGP路由,以及从其他邻居学习过来的BGP路由

-计算路由表

         包含的是从数据库中按照一定的BGP选路规则,选举出来的最好的路由。

1.5 BGP的报文类型

-open报文,用于BGP邻居的建立,通过报文协商很多BGP协议的参数

-update报文:即更新报文,用于在BGP邻居之间同步数据库

-keep-alive报文:用于在BGP邻居之间周期性的发送,维护BGP的邻居关系

-notification报文:通知报文,即在BGP邻居之间传递报错信息和警告信息

-refresh报文:刷新报文。即BGP的路由策略改动之后,为了能够让策略快速生效,需要使用路由器的刷新能力,就会使用该报文。

1.6 原理详解

-邻居的类型

         1.内部邻居:如果两个BGP协议的路由器,在同一个公司

          2.外部邻居:如果两个BGP协议的路由,在不同的公司

-邻居的建立过程

          1.首先设备之间建立稳定的TCP连接

                     &TCP的建立:3次握手

                     &TCP的断开:4次挥手

           2.在TCP连接之上,互相发送open报文,比较open报文中的参数,协商成功后建立BGP邻居关系

1.7 BGP的状态机:

①Idle状态(空闲状态):此状态为初始状态,不接受任何BGP连接,等待start事件产生。如果start事件(TCP连接)产生则系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态改为Connect。

②Connect状态(连接状态):在Connect状态,系统会等待TCP的连接建立完成。如果TCP状态为Established(已完成),则拆除ConnectRetry定时器,并发送Open信息,将状态变

③Opensent;如果TCP建立失败则重置ConnectRetry定时器,转为Active状态。如果定时器超时,重新连接。

④Active状态(活跃状态):如果已经启动事件但TCP未完成,则处于Active状态

⑤Open-sent状态(Open消息已发送):此状态 表明系统已经发出Open消息,在等待BGP邻居发给自己的Open消息。

⑥Open-confirm(Open消息确定):此状态表明系统已经发出keepalive消息,并等待BGP邻居的Keepalive消息。

⑦Established状态(连接建立):如果处于Established状态,则说明BGP连接建立完成,可以发送Update消息交换路由信息。

2.BGP相关配置

2.1 bgp对等表

也叫BGP的邻居表, 就是对等体邻居列表

  • Peer: 对等体地址;
  • V: version, 版本号;
  • AS: 对等体AS号;
  • Up/Down: 该对等体已经Up或Down的时间;
  • State: 对等体状态, 这里显示的为BGP状态机的状态;
  • PrefRcv: prefix received, 从对等体收到的路由前缀数目.

查看对等体表的命令:

display bgp peer

2.2 BGP路由表

BGP的路由信息数据库, 该数据库中, 有一些路由需要加入路由表, 有一些路由信息发送给其他设备做路由更新.

  • network: 路由的目的网络地址和网络掩码;

  • Nexthop: 下一跳地址;

  • MED: 路由度量值;

  • LocPrf: 本地优先级;

  • PrefVal: 协议首选值;

  • Path/Ogn: 显示传递路由信息的设备的AS路径号和Origin属性.

查看BGP路由表情况的命令:

display bgp routing-table [ipv4-address {mask|mask-length}]

2.3 BGP的基本配置

1.启动BGP进程:

[R1]bgp {as-number-plain|as-number-dot}
[R1-bgp]router-id ipv4-address

启动BGP, 指定本地AS编号, 并进入BGP视图, 使用router-id命令配置BGP的Router ID, 建议将BGP的RID配置为环回口地址.

2.配置BGP对等体:

[R1-bgp]peer {ipv4-address|ipv6-address} as-number {as-number-plain|as-number-dot}

创建BGP对等体, 指定对等体的地址和AS号.

3.配置建立对等体使用的源地址, EBGP对等体最大跳数, IBGP修改下一跳属性:

[R1-bgp]peer ip-address connect-interface interface-type interface-number [ipv4-source-address]
[R1-bgp]peer ipv4-address ebgp-max-hop hop-count
[R1-bgp]peer ipv4-address next-hop-local

指定发送BGP报文的源接口, 并可指定发起连接时使用的源地址.

指定建立EBGP连接允许的最大跳数, 缺省情况下, EBGP连接允许的最大跳数为1, 即只能在物理直连链路上建立EBGP连接;

设备B在收到EBGP A的路由再传递给IBGP C时, C下一跳默认为A, 但是可以通过命令修改这个配置.

3.配置案例

举例1:

1.创建BGP:

bgp 100router-id 1.1.1.1

创建AS 100内设备的BGP进程, 设备RID为1.1.1.1;

两边对等体都要配置.

2.指定对等体信息:

bgp 100peer 10.1.1.2 as-number 100

邻居的IP地址为10.1.1.2, 且对方的AS号码是100;

这里如果Open报文在交互报文时, My as字段不是100, 就会导致对等体关系失败, 这里如果对对等体建立过程遗忘的可以倒回去看.

默认情况下BGP指定了peer命令之后, 设备会根据对等体信息查找路由表, 找到通往该对等体的路由, 该接口的IP地址用于作为TCP源地址和对方通过TCP连接建立对等体关系.

但如果当前设备想要用的TCP源地址和对等体指定的源地址不一致, 那就需要采用其他方法配置.

3.指定TCP源地址配置对等体:

peer route-id connect-interface interface-type interface-number

比如:

peer 1.1.1.1 connect-interface loopback0

4.建立EBPG对等体

peer 1.1.1.1 ebgp-max-hop 5

将建立EBGP时的open报文的TTL置为5.

不同于建立IBGP关系(TTL=255), 建立EBGP的open报文中TTL=1. 所以指定环回口建立EBGP对等体的时候, TTL需要改大一点(ebgp-max-hop).

所以EBGP关系建立的时候一般采用物理接口, IBGP关系建立的时候一般使用环回口(优势: 冗余、稳定)作为TCP源地址.

5.将EBGP学来的路由下一跳属性置为自己, 然后再传递给其他IBGP对等体.

peer 4.4.4.4 next-hop-local

所以IBGP之间通常会加上这条命令:将下一跳指定为自己, 但这条命令只能在对等体刚开始建立时才能生效, 否则需要重置BGP进程.

从EBGP学来的路由, 传递给IBGP时不会修改下一跳属性, 比如A--EBGP-->B--IBGP-->C, C学习到这条路由的下一跳是A, 但C不一定用通往A的路由, 所以这条路由可能会无法使用.

6.重置bgp进程:

reset bgp 200

一般情况下, 为设备配置bgp属性时, as-number、connect-interface、next-hop-local这三条命令是必须的.

举例2:

       BGP对等体关系、AS号、设备互联地址如图所示, 所有设备的Loopback1接口地址为10.0.x.x/32, 其中x为设备编号, 所有设备都使用Loopback1地址作为Router ID. R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系, R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系. ospf已经预配完成.

R1:

bgp 100
router-id 10.0.1.1
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface loopback1

R3:

bgp 100
router-id 10.0.3.3
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loopback1
peer 10.0.34.4 as-number 200

R4:

bgp 200
router-id 10.0.4.4
peer 10.0.34.3 as-number 100

相关文章:

BGP协议

1.BGP相关概念 1.1 BGP的起源 不同自治系统(路由域)间路由交换与管理的需求推动了EGP的发展,但是EGP的算法简单,无法选路,从而被BGP取代。 自治系统:(AS) IGP:自治系统…...

一个完整工作流管理系统的组成部分

一个完整工作流管理系统的组成部分 一个完整的工作流管理系统通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成以及与应用程序的集成八个部分组成。 一、工作流组成 1. 工作流引擎 工作流引擎作为工作流管理系统的核心部分&…...

鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级

在2023年云栖大会上,阿里云数据库产品事业部负责人李飞飞在主题演讲中提到,瑶池数据库推出“DB存储”一体化能力,结合人工智能、机器学习、存储等方法和创新能力,实现Buffer Pool Extension能力和智能冷温热数据分层能力。在大会的…...

中科大计网学习记录笔记(五):协议层次和服务模型

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…...

同构异机迁移方案2_目标服务器仅安装数据库软件scp物理文件

源端和目标端的数据库版本需要保持一致,补丁版本可以不一致,目标端磁盘空间不能小于源端空间,目标端只需要安装 Oracle 软件即可。 特别说明:本文档案例Oracle的安装路径不同,数据目录一致,采用scp的方式实…...

华为机考入门python3--(6)牛客6-质数因子

分类:质数、素数 知识点: 取余符号% 5%3 2 取整符号// 5//3 1 list中int元素转str map(str, list) 题目来自【牛客】 def prime_factors(n): """ 输入一个正整数n,输出它的所有质因子(重复的也…...

11月最新版付费进群源码自动定位+开源

Nginx 1.22.1 php5.6 mysql5.6 数据库配置&#xff1a;/config/database.php 配置后台域名&#xff1a;config/extra/ip.php 设置伪静态thinkphp 后台账号88886666 密码12345 代码结构 关键代码剖析 <?php // ----------------------------------------------------…...

Python算法题集_旋转图像

Python算法题集_旋转图像 题目48&#xff1a;旋转图像1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【矩阵复本】2) 改进版一【矩阵转置矩阵反转】3) 改进版二【四值旋转】 4. 最优算法 题目48&#xff1a;旋转图像 本文为Python算法题集之一…...

[ChatGPT们】ChatGPT 如何辅助编程初探

主页&#xff1a;元存储的博客 全文 9000 字&#xff0c; 原创请勿转载。 我没有写过诗&#xff0c;但有人说我的代码像诗一样优雅 -- 雷军 图片来源&#xff1a;https://www.bilibili.com/video/BV1zL411X7oS/ 1. 引言 作为一个程序员&#xff0c;我们不仅要熟悉各种编程语…...

深入Spring MVC的工作流程

深入Spring MVC的工作流程 在Spring MVC的面试问题中&#xff0c;常常被询问到的一个问题。Spring MVC的程序中&#xff0c;HTTP请求是如何从开始到结束被处理的。为了研究这个问题&#xff0c;我们将需要深入学习一下Spring MVC框架的核心过程和工作流程。 1. 启动请求生命周…...

我的数据结构c(给自己用的)

目录 顺序表&#xff1a; 链表&#xff1a; 栈&#xff1a; 队列&#xff1a; 我想在之后的大学数据结构课上需要自己写来做题&#xff0c;但每次都自己写&#xff0c;那太麻烦了&#xff0c;所以我就将这个博客来把所有的C语言的数据结构弄上去&#xff0c; 问我为什么不…...

使用Arcgis对欧洲雷达高分辨率降水数据重投影

当前需要使用欧洲高分辨雷达降水数据&#xff0c;但是这个数据的投影问题非常头疼。实际的投影应该长这样&#xff08;https://gist.github.com/kmuehlbauer/645e42a53b30752230c08c20a9c964f9?permalink_comment_id2954366https://gist.github.com/kmuehlbauer/645e42a53b307…...

[Python] scikit-learn中数据集模块介绍和使用案例

sklearn.datasets模块介绍 在scikit-learn中&#xff0c;可以使用sklearn.datasets模块中的函数来构建数据集。这个模块提供了用于加载和生成数据集的函数。 API Reference — scikit-learn 1.4.0 documentation 以下是一些常用的sklearn.datasets模块中的函数 load_iris() …...

Qt-互斥量-临界区-QMutex-QMutexLocker-QReadWriteLock

文章目录 1.QMutex2.QMutexLocker3.QReadWriteLock 在Qt中&#xff0c;互斥量&#xff08;Mutex&#xff09;是用于同步多线程访问共享资源的一种机制。临界区&#xff08;Critical Section&#xff09;是指一段必须由单个线程执行的代码区域&#xff0c;防止多个线程同时执行这…...

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(6)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述&#xff08;5&#xff09; 4.1 PCIe总线的基础知识 与PCI总线不同&#xff0c;PCIe总线使用端到端的连接方式&#xff0c;在一条PCIe链路的两端只能各连接一个设备&#xff0c;这两个…...

uniapp 高德地图显示

1. uniapp 高德地图显示 使用前需到**高德开放平台&#xff08;https://lbs.amap.com/&#xff09;**创建应用并申请Key   登录 高德开放平台&#xff0c;进入“控制台”&#xff0c;如果没有注册账号请先根据页面提示注册账号   打开 “应用管理” -> “我的应用”页面…...

2024年最新幻兽帕鲁服务器搭建教程

玩转幻兽帕鲁服务器&#xff0c;阿里云推出新手0基础一键部署幻兽帕鲁服务器教程&#xff0c;傻瓜式一键部署&#xff0c;3分钟即可成功创建一台Palworld专属服务器&#xff0c;成本仅需26元&#xff0c;阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…...

重新配置vue项目时出现的:连接已断开问题

在新机器上配置完node.js、vue-cli&#xff0c;配置了node_modules后&#xff0c;命令行运行vue ui后&#xff0c;出现了如下报错&#xff1a; C:\Users\LEN>vue ui &#x1f680; Starting GUI... &#x1f320; Ready on http://localhost:8000 node:events:496throw e…...

四、Redis之配置文件

redis配置文件的名称 redis.conf 通过命令 find / -name redis.confvim redis.conf通过 : set nu 设置行号: set nonu 取消行号/关键字 搜索关键字: set noh 取消高亮选择4.1 Units 配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持 bytes&#…...

libevent源码解析--event,event_callback,event_base

1.概述 实现一个基础tcp网络库&#xff0c;以基于tcp网络库构建服务端应用&#xff0c;客户端应用为起点&#xff0c;我们的核心诉求有&#xff1a; a. tcp网络库管理工作线程。 b. tcp网络库产生服务端对象&#xff0c;通过启动接口&#xff0c;开启服务端监听。进一步&…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...