HCIP —— BGP 基础 (下)

BGP 的状态机

--- 建立对等体之间的TCP会话:指定建立对等体的对象

六种状态机

Idle状态

Idle 等待状态(相当于OSPF的down状态)--- 采用TCP单播建邻

Idle 状态下,启动BGP协议后必须指定建立对等体的目标之后,才能进入下一个状态(依靠IGP协议:静态、直连等

Connect 状态

Connect 状态下,BGP对等体之间开始建立TCP会话连接

Opensent 状态

如果TCP会话建立成功则进入到OpenSent状态。

Active 状态

如果TCP会话建立失败则进入Active状态(尝试状态)。

OpenConfirm 状态

如果认可对等体发过来的Open报文中的参数,首先会回复一个Keepalive报文用来确认Open报文中的参数已近被我认可,并且进入OpenConfirm 状态。

OpenSent 状态

如果TCP会话(三次握手)建立成功则进入OpenSent 状态,在OpenSent状态下,开始发送Open报文去建立BGP对等体关系

Established 状态

如果收到对等体发送Keepalive报文,则进入Established状态。

BGP的工作过程

  1. 基于IGP(静态、直连、RIP、OSPF...)协议实现路由可达,原因:BGP需要建立TCP会话(单播)
  2. 必须指定邻居关系,邻居之间进行单播传输通过三次握手,来建立TCP会话通道。之后所有的BGP通信都将基于TCP会话通道来传输。并且依靠TCP提供传输的可靠性。
  3. 使用Open报文和Keepalive报文来进行邻居关系的建立Open报文用来建邻使用的参数,Keepalive报文用于Open报文参数的确认。最终完成对等体关系的建立。生成邻居表,存储BGP对等体关系信息
  4. 建立邻居关系后,使用Update报文来共享路由条目信息。信息中将携带目标网络号,掩码及路径属性;之后,将发送以及收集到的路由信息记录在一张表中 --- BGP表
  5. 之后,会将BGP表中的最优的路由信息通过路径属性选择的结果)加载到路由表中。
  6. 收敛完成后,将使用Keepalive报文进行对等体之间的周期保活,默认的保活时间为 180 S (hold time), 发送周期为 60 S
  7. 如果这个过程中出现任何问题,都将使用Notification报文进行 告警
  8. 如果拓扑结构出现突变(增加/删除),则将使用Update报文来进行触发更新,并通告给其他的对等体。

BGP的机制

BGP的路由黑洞

存在问题:控制层面的可达数据层面实际不可达

IGP内部没有运行BGP的设备,当访问BGP网段流量来到这些设备之后,由于控制层面可达,数据层面不可达(因为这些设备没有运行BGP,没有BGP的网段的路由信息),那么将丢弃这些流量。

解决方法:

  1. 所有设备均运行BGP
  2. 重发布
  3. MPLS (Multi-Protocol Label Switching 多标签交换协议)--- 最早用来专门解决BGP路由黑洞,运用MPLS - VPN 广泛。

原理:MPLS是根据标签来转发的,而不是路由条目。只要边界路由器上有BGP路由,接下来路由传播在内部路由器走MPLS,通过标签转发,即使路由有黑洞,也可以通,因为我内部走的是标签。

同步机制  --- 当设备学习到一条BGP路由时,如果本地的IGP路由不可达,则将视该BGP路由无效。  首先 可以先通告命令 查看路由条目:display ip routing-table 。  ---- 默认关闭的

BGP的防环 --- 水平分割

EBGP的水平分割

BGP 为了解决EBGP路由环路的问题,设计了一个AS - PATH的属性,设备在发出AS 时会携带本AS的AS号,当路由信息携带该AS号,那么对应该AS的设备不会接受该路由

同时AS - PATH 属性也是BGP的一个选路依据,当其他属性一致时,会选择AS - PATH属性 更短的路径。

IBGP的水平分割

当运行BGP的设备 从IBGP对等体处学习到一条IBGP路由,那么将不再转发给其他的IBGP对等体。

解决方案  --- 在IBGP对等体直接构建全连的IBGP对等体关系

引起两个问题:

1.增加拓扑的复杂性导致网络的可拓展性差。

2.增大了资源的占用。

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

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

相关文章

yaml工作常用语法总结

文章目录 yaml中的| 符号 和 > 符号yaml中的 - 符号工作中常遇到的问题- 命令行中有冒号加空格,导致yaml解析报错 yaml中的| 符号 和 > 符号 在 YAML 中,| 符号表示标量块(Scalar Block)的开始。它用于表示长文本块或保持多…

代码随想录算法训练营第四十六天| 139 单词拆分

目录 139 单词拆分 139 单词拆分 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {vector<bool>dp(s.size() 1);//长度为i的字符串时能否成功拆分unordered_set<string>set(wordDict.begin(),wordDict.end());dp[0] t…

数据结构 | 查漏补缺之哈希表、最短路径、二叉树与森林的转换

哈希表是什么&#xff1f; 或者说 设图采用邻接表的存储结构&#xff0c;写对图的删除顶点和删除边的算法步骤 删除边 删除点 最短路径问题 参考博文 迪杰斯特拉(Dijkstra)算法_dijkstra算法-CSDN博客 Dijkstra(迪杰斯特拉&#xff09;算法 定义一个点为源点&#xff0c;算源…

5G+AI开花结果,助力智慧安检落地

“请带包的乘客过机安检&#xff01;”&#xff0c;深圳地铁、腾讯共同打造的5GAI智慧安检辅助系统亮相福田枢纽站&#xff0c;进一步解放了人力&#xff0c;提高安检效率&#xff0c;为交通安全保驾护航&#xff0c;让智慧出行成为现实。 传统的安检设备均为人工肉眼辨识&…

java面试题汇总-目录

坚持记录和总结一些面试过程中遇到的面试题&#xff0c;以及总结出自己的回答技巧。不用死记硬背也能完整的回答出来。会持续更新&#xff0c;欢迎提出问题和疑问&#xff0c;大家一起总结经验。 1.Hashmap、Hashtable、ConcurrentHashMap原理 2.谈谈sql优化-mysql 3.ArrayList…

2023年9月13日 Go生态洞察:WASI支持在Go中的实现

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

21、命令执行

文章目录 一、命令执行概述1.1 基本定义1.2 原理1.3 两个条件1.4 命令执行漏洞产生的原因1.5 管道符号和通用命令符 二、远程命令执行2.1 远程命令执行相关函数2.2 远程命令执行漏洞的利用 三、系统命令执行3.1 相关函数3.2 系统命令执行漏洞利用 四、命令执行漏洞防御 一、命令…

Vue笔记(三)深入组件

组件注册 组件注册有两种方式&#xff1a; 全局注册 可以使用Vue应用实例的.component()方法&#xff0c;让组件在当前Vue应用中全局可用&#xff0c;.component()方法可以被链式调用。全局注册的组件可以在此应用的任意组件的模版中使用。import { createApp } from vue imp…

阿里云生态离线数仓

1. 大数据开发治理平台 DataWorks 功能齐全&#xff1a;10多年大数据建设沉淀完整的平台&#xff0c;覆盖数据开发治理的全生命周期 简单易用&#xff1a;全图形化界面&#xff0c;SQL为主的数据开发方式 安全稳定&#xff1a;双11日千万级任务稳定调度&#x…

一:C语言常见概念

一&#xff1a;C语言常见概念 1.认识C语言&#xff1a; ​ C语言是人和计算机交流的语言 ​ C语言是一门面向过程的语言&#xff0c;而C&#xff0c;Java&#xff0c;Python等是一门面向对象的语言 ​ 软件开发&#xff08;项目&#xff09;&#xff1a;面向过程面向对象 …

maven下载安装与配置

文章目录 1. Maven下载2. 配置settings.xml2.1 指定Maven的本地仓库2.2 配置阿里云提供的镜像仓库2.3 配置 Maven 工程的基础 JDK 版本 3. 配置环境变量3.1 检查 JAVA_HOME 配置是否正确3.2 配置 MAVEN_HOME3.3 配置PATH3.4 验证 1. Maven下载 【Maven官网地址】 【Maven下载…

微服务架构下的分布式事务

系统软件为了实现一定的业务&#xff0c;会将现实中的人、事、物进行抽象表示&#xff0c;并将其映射为系统中的模型。 业务模型大致可以按以下来构建&#xff1a; 1、定义系统中应该存在哪些实体、实体上有哪些属性。 2、定义实体之间的各种拓扑关系&#xff0c;如从属、嵌套…

2023五岳杯量子计算挑战赛数学建模思路+模型+代码+论文

赛题思路&#xff1a;12月6日晚开赛后第一时间更新&#xff0c;获取见文末名片 “五岳杯”量子计算挑战赛&#xff0c;是国内专业的量子计算大赛&#xff0c;也是玻色量子首次联合移动云、南方科技大学共同发起的一场“企校联名”的国际竞赛&#xff0c;旨在深度融合“量子计算…

Python处理Excel文件并与数据库匹配做拼接

Python处理Excel文件并与数据库匹配做拼接 需求&#xff1a;Python处理Excel中数据并于数据库交互匹配得到账号信息等其他操作 Python实现 import os import pandas as pd import pymssql import warnings import time# 提取速率函数 def extract_broadband_speed(speed):if…

【外观模式】SpringBoot集成mail发送邮件

前言 发送邮件功能&#xff0c;借鉴 刚果商城&#xff0c;根据文档及项目代码实现。整理总结便有了此文&#xff0c;文章有不对的点&#xff0c;请联系博主指出&#xff0c;请多多点赞收藏&#xff0c;您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

Java 泛型相关知识

什么是泛型? Java 泛型(generics)是JDK5中引入的一种参数化类型特性。 为什么使用泛型,使用泛型的好处? 代码更健壮(只要编译期没有警告,那么运行期就不会出现 ClassCastException)代码更简洁(不用强转)代码更灵活,复用什么是参数化类型: 把类型当参数一样传递<…

C语言绝对值得一看的常识讲解:柔性数组补充篇

今天突然看到一个比较特别的知识点——柔性数组。它是在C99中出现的一种特别的数组&#xff0c;具体是指结构体中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 目录 1.柔性数组的定义 2.柔性数组的特点 3.柔性数组的使用举例 4.柔性数组的优…

React基础语法整理

安装&#xff1a; yarn create react-app reatc-lesson --template typescript yarn create 创建一个react-app的应用 项目名称 typescript 的模板react-app 官方地址 https://create-react-app.bootcss.com/docs/adding-typescriptreact 语法文档 https://zh-hans.react.dev…

Vue笔记(一)基础

VUE 官方文档&#xff1a;https://cn.vuejs.org/ 创建VUE项目 前提&#xff1a;已安装 16.0 或更高版本的 Node.js 进入要创建的目录&#xff0c;执行命令&#xff1a;npm create vuelatest 安装依赖&#xff0c;启动&#xff1a; //进入项目目录&#xff0c;运行命令安装依赖…

基于Vue框架的电子商城购物平台小程序的设计与开发

基于JavaWebSSMVue电子商城购物平台小程序系统的设计和实现 源码获取入口KaiTi 报告/Ren务书Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告/Ren务书 一、选题的目的和意义 自从微信推出了微信小程序…