HCIP的学习(16)

BGP的状态机

​ OSPF的状态机是在描述整个协议的完整工作过程,而BGP的状态机仅描述的是对等体关系建立过程中的状态变化。-----因为BGP将邻居建立过程以及BGP路由收发过程完全隔离

​ IGP协议在启动后,需要通过network命令激活接口,从而使接口具备处理IGP协议报文的能力。且network命令另一重含义就是发布路由,所以IGP协议无法将邻居建立过程以及路由收发过程隔离。

​ 但是BGP协议在启动后,每一个接口都具备处理BGP报文的能力,不需要其他任何操作,所以可以将邻居建立过程以及路由收发过程进行分割。

在这里插入图片描述

  • Idle----空闲状态
    • 等待网络管理员手工指定邻居信息,IP地址以及AS号
    • 当指定邻居信息后,会进入一个检查环节,需要检查手工指定的IP地址在本地路由表中是否可达,只有可达,才可以正常建立TCP会话,如果不可达,则邻居关系建立失败,停留在Idle状态。
  • Connect----连接状态
    • 该状态会开启一个连接重传定时器—32秒
      • 当该计时器时间超时,则本端重新发送一次TCP连接请求报文。在该时间段内没有收到任何一个回复报文。
    • 如果此时本地判断TCP状态进入到establish状态,则认为TCP连接建立成功,进入到opensent状态。
    • 如果此时本地收到的是拒绝报文,则认为TCP连接建立失败,进入到Active状态。
    • 如果BGP在连接重传定时器时间内,没有收到对等体的响应,那么BGP会继续尝试与对等体建立TCP会话,并一直处于该状态
  • Active----尝试状态
    • 第一次TCP会话建立失败,则进入该状态。
    • 如果建立成功,则进入opensent状态;如果建立失败,则停留在active状态。
    • 使用在connect状态开启的连接重传定时器来发送链接建立请求报文,当建立成功后,该计时器才会被关闭。
  • opensent状态
    • 本端处于opensent状态,然后对端刚从Idle状态变为Connect状态,对端重新申请建立连接,先发送RST报文(本端opensent状态不会变,除非对面发的是FIN报文),然后和之前一样,最后选择后建立的连接
    • 本地发送出open报文,同时也将收到对端发送的open报文,并予以回复。
    • 如果收到的open报文中的参数本端认可,则回复keepalive报文;否则回复notification报文。
    • 如果回复keepalive报文,则进入openconfirm状态;如果回复notification报文,则进入idle状态。
  • openconfirm状态
    • 等待对等体对于本地发出的open报文参数的回复。
    • 如果收到的是keepalive报文,则认为BGP会话建立成功,进入到establish状态。
    • 如果收到的是notification报文,则认为BGP会话建立失败,断开TCP连接,回到idle状态。
  • Establish状态----建立状态
    • BGP会话建立的标志
    • 在该状态可以发送除了open报文以外的所有BGP数据报文。
    • 一但接收到错误的keepalive报文或TCP的FIN报文,本端会发送notification报文,然后进入idle状态。

在这里插入图片描述

BGP的工作过程

  1. 基于IGP、静态、直连路由协议实现IP可达---->前置要求,不是BGP工作过程
  2. 启动BGP协议,并指定邻居关系。
    1. 邻居之间使用单播进行数据传输,通过三次握手,建立TCP会话通道。
    2. 之后所有的数据通讯均基于TCP会话通道来传输,并由TCP协议来提供传输的可靠性机制。
  3. 使用open报文和keepalive报文进行邻居之间参数的协商,以及对等体关系的建立。
    1. open报文用来携带参数信息
    2. keepalive报文用来进行参数确认
    3. 最终生成BGP邻居表
  4. 使用update报文来传输BGP路由信息。该信息中将携带前缀信息、前缀长度以及路径属性。
    1. 设备会将自己发送的以及收到的所有BGP路由信息记录在BGP路由表中。
    2. 设备会对比不同路由表单,将其中最优的路由信息加载到全局路由表中。
  5. 此时路由收敛完成,BGP对等体之间使用keepalive报文进行周期保活(可选)。默认为180S,可以设置为0关闭周期保活性质。
  6. 如果出现出错误,使用notification报文告警;如果出现结构突变,使用update报文进行增量更新。

BGP的防环

EBGP的水平分割机制

​ 专门为了解决EBGP对等体之间的环路问题

​ 通过AS_Path属性进行防环,该属性会记录下该路由信息所经过的所有AS的AS号。当设备收到一条路由信息时,会查看该属性内容,如果其中存在有与本地AS号相同的信息,则不接受该路由信息。

IBGP的水平分割机制

在这里插入图片描述

BGP规定:当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由信息通告给任何IBGP对等体------IBGP水平分割机制

R4右边有孤立R5(也处于AS64513)解决思路:

  1. 将原本的IBGP对等体关系替换为EBGP对等体关系----在同一个AS下--------联邦
  2. 手工设定让某台路由器将从IBGP学习到的路由信息传递给某个IBGP对等体-----路由反射器
  3. 构建全互联的IBGP对等体关系。----暂时常用。 弊端:导致资源消耗变大,可扩展性差

BGP的路由黑洞

在这里插入图片描述

BGP同步更新规则----为了避免BGP路由黑洞问题

当一台路由器从自己的IBGP对等体学习到一条IBGP路由时,它将不能使用这条路由或者将这条路由通告给其他设备,除非他又从IGP协议中学习到这条路由信息------要求IBGP路由与IGP路由同步

华为与思科默认禁止使用该规则,华为不允许打开该规则,思科允许打开该规则

解决方法:

  1. 让两台运行BGP设备在物理或逻辑上直连
  2. 所有设备运行BGP协议----暂时最常用
  3. 将BGP路由引入到IGP中。
  4. MPLS----多协议标签交换----现网环境使用的解决方案(AS内部不使用路由转发BGP信息,用所携带的标签)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/698086.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用PageHelper分页插件,发现获取到的total总记录数量不对,无法获取到正确的total数量

目录 1.1、错误描述 1.2、解决方案 1.1、错误描述 周一在工作中,写了一个列表分页的接口,其中使用的是PageHelper分页依赖,原本想着挺简单的,也就是使用PageHelper.startPage(pageNum, pageSize);方法就可以了,代码…

适用于 Windows 8/10/11 的 10 大 PC 迁移工具:电脑克隆迁移软件

当您发现自己拥有一台新的 PC 或笔记本电脑时,PC 迁移变得至关重要。将数据从旧计算机传输到新计算机的过程似乎令人生畏,尤其是如果您是第一次这样做。迁移过程中数据丢失的潜在风险加剧了焦虑。为确保文件和系统设置的无缝无忧传输,使用专为…

ARM架构安全特性之通用平台安全服务

安全之安全(security)博客目录导读 目录 一、符合PSA认证标准 二、Arm平台安全规范 三、跨安全边界通信 四、FF-A 五、FF-M 六、开放和标准设备固件 七、Trustedfirmware.org 在一个需要高度信任设备的世界中,每个设备都必须是独一无二的可识别的、不可克隆…

leetcode-151 翻转字符串里的单词

一、题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 输入:s "the sky is blue" 输出:"blue is sky the"输入&#…

1727jsp思想政治活动Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 思想政治活动管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

paddle ocr v4 2.6.1实战笔记

目录 效果图: 安装 模型权重是自动下载,如果提前下载会报错。 识别orc,并opencv可视化结果,支持中文可视化 官方原版预测可视化: 效果图: 安装 安装2.5.2识别结果为空 pip install paddlepaddle-gpu…

智能组网实施步骤?

随着信息技术的快速发展,智能组网正在逐渐成为各个行业的关注焦点。智能组网通过将各种设备、终端和系统连接起来,实现信息的传输和共享,从而提升工作效率和运营效益。本文将介绍智能组网的实施步骤,以及一家名为【天联】的智能组…

YOLOv8独家改进:backbone改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,这就是StarNet的核心创新,在紧凑的网络结构和较低的能耗下展示了令人印象深刻的性能和低延迟 💡💡💡如何跟YOLOv8结合:替代YOLOv8的backbone 收录 YOLOv8…

如何按值对Python字典进行排序?

在Python中,字典(dict)是一种非常有用的数据结构,它允许我们以键值对的形式存储数据。有时,我们可能需要根据字典中的值对字典项进行排序。这篇文章将详细讲解如何实现这一功能,并提供一些实用的示例。 基…

游戏中的设计模式一

游戏开发是一个快速迭代的过程,代码复杂度也很高,借助于设计模式,可以帮助我们降低复杂度,降低系统间的耦合,从而高效高质的做出交付。 最近读了这本书:《游戏编程模式》[1],很受启发&#xff…

MySQL8.0就地升级到MySQL8.4.0

MySQL8.0就地升级到MySQL8.4.0 升级需求:将8.0.35升级到8.4.0,以In-Place方式直接升级到MySQL8.4.0。 数据库版本 操作系统版本 原版本 8.0.35 Centos7.9 x86_64 新版本 8.4.0 Centos7.9 x86_64 关闭现有版本MySQL,将二进制或包替换成新版本并…

Java面试八股之String类的常用方法有哪些

Java中String类的常用方法有哪些 获取字符串信息: length():返回字符串的字符数。 isEmpty():判断字符串是否为空(即长度为0)。 访问单个字符: charAt(int index):返回指定索引处的字符。 …