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

BGP路由协议之对等体

IGP 可以通过组播报文发现直连链路上的邻居,而 BGP 是通过 TCP:179 来实现的。BGP 需要手工的方式去配置邻居。不需要直连,只要路由能通就可以建立邻居

IBGP 与 EBGP

IBGP :(Internal BGP) :位于相同自治系统的 BGP 路由器之间的 BGP 邻接关系

EBGP:(ExternalBGP):位于不同自治系统的 BGP 路由器之间的 BGP 对等体关系。两台路由器之间要建立 EBGP 对等体关系必须满足两个条件

  • 两个路由器所属 AS 不同(即 AS 号不同)
  • 在配置 EBGP 时,Peer 命令所指定的对等体 IP 地址要求路由可达并且 TCP 连接能够正确建立。

邻居建立

先启动 BGP 的一端先发起 TCP 连接,如左图所示,R1 先启动 BGP,R1 使用随机端口号向 R2 的 179 端口发起 TCP 连接,完成 TCP 连接的建立

三次握手建立完成之后,R1、R2 之间相互发送 open 报文携带参数用于对等体建立,参数协商正常之后双方相互发送 Keepalive 报文,收到对端发送的 Keepalive 报文之后对等体建立成功,同时双方定期发送 Keepalive 报文用于保持连接。

其中 open 报文中携带

  • My Autonomous System: 自身 AS 号
  • Hold Time:用于协商后续 Keepalive 报文发送时间
  • RGP Identifier·自身 RouterID

BGP 对等体关系建立之后,BGP 路由器发送 BGP Update(更新)报文通告路由到对等体

KEEPLIVE 间隔时间 60 秒,超时时间为 Keeplive 的三倍时间

创建邻居,ip 30.0.0.1 as 64512
[R3-bgp-default]peer 30.0.0.1 as-number 64512[Huawei]dis bgp peer // 查看路由

邻居状态机制

Peer 状态名称用途
Idle开始准备 TCP 的连接并监视远程对等体,启用 BGP 时,要准备足够的资源
Connect正在进行 TCP 连接,等待完成中,认证都是在 TCP 建立期间完成的。如果 TCP 连接建立失败则进入 Active 状态,反复尝试连接:
ActiveTCP 连接没建立成功,反复尝试 TCP 连接
OpenSentTCP 连接已经建立成功,开始发送 open 包,open 包携带参数协商对等体的建立
OpenConfirm参数、能力特性协商成功,自己发送 Keepalive 包,等待对方的 Keepalive 包
Established已经收到对方的 Keepalive 包,双方能力特性经协商发现一致,开始使用 update 通告路由信息

TCP 更新源地址

一般而言在 AS 内部,网络具备一定的冗余性。在 R1 与 R3 之间,如果采用直连接口建 IBGP 邻居关系,那么一旦接口或者直连链路发生故障,BGP 会话也就断了”但是事实上,由于冗余链路的存在,R1 与 R3 之间的 IP 连通性其实并没有 DOWN (仍然可以通过 R4 到达彼此)

为了解决这个问题

  • 缺省情况下,BGP 使用报文出接口作为 TCP 连接的本地接口在部署 IBGP 对等体关系时,建议使用 Loopback 地址作为更新源地址。Loopback 接口非常稳定,而且可以借助 AS 内的 IGP 和元余拓扑来保证可靠性。
  • 在部署 EBGP 对等体关系时,通常使用直连接口的 IP 地址作为源地址,如若使用 Loopback 接口建立 EBGP 对等体关系则应注意 EBGP 多跳问题

对于 IBGP 来说,如果使用环回口建立邻居,一定要配置连接源,否则邻居关系无法正常建立。

在 IBGP 建立邻居时,两台设备之间不要使用默认路由,尽量使用明细路由(防止环路)

[Huawei-bgp]peer 3.3.3.3 connect-interface lo0  // 配置连接源为lo0接口

EBGP 多跳

在建立 IBGP 邻居时,建议使用环回口

但在建立 EBGP 邻居时,则建议使用直连接口。

EBGP 建立邻居时数据包的 ttl 默认为 1,仅限直连。跨设备会建立失败

可以设置 EBGP 连接邻居的最多跳数

综合配置

[Huawei-bgp]peer 12.1.1.2 as-number 65413  // 设置邻居
[Huawei-bgp]peer 12.1.1.2 connect-interface lo0  // 使用lo0口与该邻居建立关系
[Huawei-bgp]peer 12.1.1.2 ebgp-max-hop 3  // 设置EBGP的最多条数,不写数值则默认为255
[Huawei-bgp]peer 12.1.1.2 next-hop-local  // 向该邻居更新报文时,修改下一跳为本设备

 

相关文章:

BGP路由协议之对等体

IGP 可以通过组播报文发现直连链路上的邻居,而 BGP 是通过 TCP:179 来实现的。BGP 需要手工的方式去配置邻居。不需要直连,只要路由能通就可以建立邻居 IBGP 与 EBGP IBGP :(Internal BGP) :位于相同自治系统的 BGP 路由器之间的 BGP 邻接关…...

Python代码相关关系矩阵的三种展示热力图-条形图

本文将深入探讨三种常用的展示技巧:corr()函数、热力图和条形图。通过这些技术,可以更直观地理解数据中的关联性,为进一步的分析和决策提供有力支持。 一、corr()函数:基础相关性分析 1. corr()函数的基本用法 corr()函数是Pandas库中用于计算数据帧(DataFrame)中两两…...

esp32cam远程图传:AI Thinker ESP32-CAM -》 服务器公网 | 服务器 -》 电脑显示

用AI Thinker ESP32-CAM板子访问公网ip的5112端口并上传你的摄像头拍摄的图像视频数据,并写一段python程序打开弹窗接受图像实现超远程图像传输教程免费 1. 首先你要有一个公网ip也就是去买一台拥有公网的服务器电脑,我买的是腾讯云1年38元的服务器还可…...

CSI-PVController-claimWorker

claimWorker() claim worker中循环执行workFunc() claim worker从claimQueue中取数据,也就是取出的都是PVCworkFunc首先从队列中取出一个obj,然后拿name去informer缓存中尝试获取 如果在informer缓存。说明不是删除事件,执行updateClaim()函…...

【家政平台开发(40)】功能测试全解析:从执行到报告撰写

本【家政平台开发】专栏聚焦家政平台从 0 到 1 的全流程打造。从前期需求分析,剖析家政行业现状、挖掘用户需求与梳理功能要点,到系统设计阶段的架构选型、数据库构建,再到开发阶段各模块逐一实现。涵盖移动与 PC 端设计、接口开发及性能优化,测试阶段多维度保障平台质量,…...

[特殊字符] 第十七讲 | 随机森林:变量重要性识别与建模实战

📌 关键词:随机森林、变量重要性、建模、分类、回归、R语言、可解释性 🎯 一、随机森林到底是什么? 随机森林(Random Forest)是由 Breiman 于 2001 年提出的集成学习方法,本质是由多个决策树模型组成的“森林”,通过投票或平均的方式提高预测精度和泛化能力。 ✅ 支…...

AIDD-人工智能药物-pyecharts-gallery

给大家安利一个NSC期刊级别的图-pyecharts-gallery 网址 https://gallery.pyecharts.org pyecharts-gallery 英文文档在这 - English Introduction is Here 项目简介 项目基于 pyecharts 2.0.3 版本进行展示Apache ECharts (incubating) 官方实例 项目须知 项目代码结构…...

ARM裸机开发——交叉编译器

交叉编译器: 下载: 链接: https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/ 根据核心板的单片机架构进行下载 解压: 首先交叉编译器的压缩包先下载到家目录下的某一个目录中&am…...

WPF轮播图动画交互 动画缩放展示图片

WPF轮播图动画交互 动画缩放展示图片 效果如下图&#xff1a; XAML代码&#xff1a; <Window x:Class"Caroursel.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/20…...

开启深度学习之旅

深度学习作为人工智能领域最激动人心的分支之一&#xff0c;正在改变我们与科技互动的方式。本文将为您提供深度学习的入门指南&#xff0c;帮助您踏上这一充满可能性的旅程。 一、深度学习基础概念 深度学习是机器学习的一个子集&#xff0c;它使用多层神经网络来模拟人脑的…...

TDengine 语言连接器(Go)

简介 driver-go 是 TDengine 的官方 Go 语言连接器&#xff0c;实现了 Go 语言 database/sql 包的接口。Go 开发人员可以通过它开发存取 TDengine 集群数据的应用软件。 Go 版本兼容性 支持 Go 1.14 及以上版本。 支持的平台 原生连接支持的平台和 TDengine 客户端驱动支持…...

【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解

目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 是什么 2.2 Langchain4j 主要特点 2.3 Langchain4j 核心组件 2.4 Langchain4j 核心优势 三、Langchanin4j组件应用实战 3.1 前置准备 3.1.1 导入如下依赖 3.1.2 获取apikey 3.1.3 获取官方文档 3.2 聊天组件 3.…...

汉化进度100%

P3834 #include<bits/stdc.h> #define int long long #define 定义整型变量 int #define 这是一个常量 const #define 无返回值函数 void #define 这是一个循环条件在后面 for #define 定义结构体 struct #define 如果 if #define 否则 else #define 定义无返回值的 sig…...

最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu)

最新如何在服务器中解决FFmpeg下载、安装和配置问题教程&#xff08;Linux&#xff5c;Windows&#xff5c;Mac&#xff5c;Ubuntu&#xff09; 摘要&#xff1a; FFmpeg是一个强大的开源工具&#xff0c;广泛应用于音视频处理&#xff0c;支持格式转换、视频剪辑、流媒体推送…...

Tkinter图像和多媒体处理

Tkinter不仅支持图形界面的构建,还能处理图像和多媒体内容。通过Canvas控件、PIL(Python Imaging Library)库和tkinter的内置功能,您可以在Tkinter应用中展示图像、处理图像并播放简单的多媒体内容。掌握这些技术可以帮助您创建更丰富的图形界面。 10.1 显示图像 Tkinter…...

【C语言】结构体 (深入)

前言&#xff1a; 在上一张讲解了结构体的基本知识&#xff0c;在本章深入讲解一下结构体。 如内存对齐&#xff0c;传参&#xff0c;实现尾段。 首先提一个问题吧&#xff0c;如下的代码结果输出是多少&#xff1f; #include <stdio.h> struct s1 {char name;int id…...

苍穹外卖day03

店铺状态接口 引入Redis&#xff0c;因为像存储店铺状态这种只有一个字段&#xff08;没必要存储在数据库&#xff09;&#xff0c;且登录后台就要被访问的数据&#xff08;加快查询速度&#xff0c;减少数据库压力&#xff09; 使用步骤&#xff1a;导入相关maven依赖、配置…...

文件流---------获取文件的内容到控制台

总流程&#xff1a;先创建一个文本文件------->里面写入一些内容&#xff08;纯字母和字母加文字&#xff09;-----------> 然后通过输入流获取文件里面的内容&#xff0c;两种方式。 1.第一种&#xff0c;获取单个的字符 &#xff0c;先创建文件 &#xff0c;java.txt…...

【PyTorch项目实战】反卷积(Deconvolution)

文章目录 一、卷积&#xff08;Convolution&#xff09;二、反卷积&#xff08;Deconvolution&#xff09; —— 又称去卷积1. 反卷积&#xff08;Richardson-Lucy&#xff0c;RL&#xff09; —— —— 通过不断迭代更新图像估计值2. 转置卷积&#xff08;Transpose Convoluti…...

SpringBoot无法访问静态资源文件CSS、Js问题

在做一个关于基于IDEASpringBootMaveThymeleaf的系统实现实验时候遇到了这个问题一直无法解决 后来看到一篇博客终于解决了。 springboot项目在自动生成的时候会有两个文件夹&#xff0c;一个是static,一个是templates&#xff0c;如果我们使用 <dependency><groupI…...

powerbi制作中国式复杂报表

今天主要想实现的功能是使用powerbi制作一个中国式的复杂报表&#xff0c;其中需要多表头&#xff0c;另外需要多个度量值如图我们最终要实现的样式是这样的&#xff1a; 错误示范 因为这些作为多表头的维度需要在同一行上作为不同的列显示所以他们需要来自于同一个字段&#…...

CMake中set_property接口及属性作用详解

在 CMake 中&#xff0c;set_property 是一个用于设置 属性&#xff08;Property&#xff09; 的核心命令。属性是 CMake 中用于控制构建过程的核心机制之一&#xff0c;可以理解为与特定对象&#xff08;如目标、目录、源文件等&#xff09;关联的键值对&#xff0c;用于存储配…...

设计模式——抽象工厂模式总结

理解了前面的工厂模式后&#xff0c;再理解抽象工厂模式就很容易了。 工厂模式&#xff1a;https://blog.csdn.net/inside802/article/details/147170118?spm1011.2415.3001.10575&sharefrommp_manage_link 抽象工厂模式就是工厂模式的更加抽象化&#xff0c;父类不仅不承…...

ChatGPT-如何让AI写作不那么生硬!

在使用聊天机器人撰写文章时&#xff0c;可能会遇到频繁使用“首先”、“其次”、“再次”等转折连接词&#xff0c;这会让文章显得呆板和机械&#xff0c;降低了阅读体验。 解决这个问题可以尝试以下方式&#xff01; 多样化连接词&#xff1a; 使用更多多样的连接词和过渡短…...

禁止页面滚动的方法-微信小程序

在微信小程序中&#xff0c;有几种方法可以禁止页面滚动&#xff1a; 一、通过页面配置禁止滚动 在页面的JSON配置文件中设置&#xff0c;此方法完全禁止页面的滚动行为&#xff1a; {"disableScroll": true }二、通过 CSS 样式禁止滚动 在页面的WXSS文件中添加&…...

C++——继承、权限对继承的影响

目录 继承基本概念 编程示例 1.基类&#xff08;父类&#xff09;Person 代码特点说明 权限对类的影响 ​编辑 编程示例 1. 公有继承 (public inheritance) 2. 保护继承 (protected inheritance) 3. 私有继承 (private inheritance) 重要规则 实际应用 继承基本概…...

js中 剩余运算符(Rest Operator )(...)和展开运算符(Spread Operator)(...)的区别及用法

1、基本说明 在JavaScript中&#xff0c;剩余运算符&#xff08;Rest Operator&#xff09;和展开运算符&#xff08;Spread Operator&#xff09;虽然在某些方面有相似之处&#xff0c;但它们各自有不同的用途和功能。下面详细解释这两种运算符的区别&#xff1a; 1.1. 剩余…...

雅思练习总结(二十六)

雅思练习总结(二十六) 本文章是雅思练习总结(二十六),总结了文章《MAKING EVERYDROP COUNT》,内容包括原文精翻,文章脉络总结,单词扩展学习3个部分 1 文章原文及翻译 MAKING EVERYDROP COUNT 翻译:让每一滴水,都充满价值 A The history of human civilisation i…...

华为手机清理大数据的方法

清理手机最大的问题是&#xff0c;手动和自动清理了多次&#xff0c;花费了很长时间&#xff0c;但是只腾挪出来了一点点空间&#xff0c;还是有很大空间无法使用&#xff0c;这篇文章就告诉你怎样做&#xff0c;以花瓣剪辑为例&#xff0c;如下&#xff1a; 删除数据&#xff…...

单元测试原则之——不要过度模拟

什么是过度模拟? 过度模拟(over-mocking)是指在单元测试中,模拟了太多依赖项,甚至模拟了本不需要模拟的简单对象或行为。过度模拟会导致: 测试代码变得复杂,难以阅读和维护。测试逻辑偏离了实际业务逻辑,无法验证真实代码的行为。忽略了被测单元与依赖项之间的真实交互…...