BGP报文、邻居状态

BGP报文:

1、OPEN报文:用于建立BGP邻居的连接,协商BGP参数的报文。

2、update报文:用于BGP邻居之间交互路由信息及路由属性的报文。

3、notification报文:差错报文,用于报错信息的传递,并且中断邻居关系的报文。

4、keepalive报文:用于保持邻居连接的报文,用于包活。

5、route-refresh报文:用于在改变策略之后,请求邻居重新发送路由信息,并且只有支持刷新能力的设备才能响应这个报文。

BGP邻居状态机:

1、idle:BGP初始状态,一旦在BGP中配置了peer 以后,或者重置了已存在的peer,就会进入idle状态,在这个状态下BGP不会向这个peer发送tcp三次握手,同时也会拒绝这个peer发来的tcp三次握手。

在进入这个idle状态时,会触发华为的start事件,这个事件时间为32秒。在这个事件之后才开始建立该peer的三次握手,建立TCP连接,在发送了SYN以后进入到connect状态。

常见的几种idle状态的原因:

        a)如果没有去往该peer的路由,那么就无法发送SYN,此时该peer会一直卡在idle状态。

        b)收到了notification报文之后会回退到idle状态。

        c)手动挂起邻居,peer x.x.x.x ignore //手动挂起邻居,在邻居表中表现为:idle(Admin)

2、connect(连接状态):在这个状态下,BGP会启动连接重传定时器(connect retry 默认为32秒钟),用于等待tcp完成3次握手。

        2.1 向邻居发起SYN后就会进入到这个状态,在这个状态完成TCP3次握手。

        2.2 如果TCP3次握手完成,则向该邻居发送open报文,然后转为opensent状态。

        2.3 如果TCP3次握手失败,将会把这个peer状态改为active。

        2.4 如果重传定时器超时,BGP没有收到邻居的响应,那么会卡在connect状态。

常见的几种connect原因:

        a)邻居没有给予相应。

        b)我的SYN在沿途中遇到了阻碍,没有到达对方(沿途路由不可达)

        c)EBGP邻居没有配置TTL多跳

总结:卡在connect状态其实就是邻居没有给我响应。

3、active状态(活跃的):当TCP3次握手失败,才会进入这个状态,这个状态下,BGP总是试图去建立TCP3次握手

        3.1 如果在多次尝试下,TCP3次握手成功了,那么BGP会向该peer发送open报文,关闭重传定时器,转至opensent状态。

        3.2 如果在多次尝试下,TCP3次握手仍然失败,那么BGP将会该peer停留在active状态。(该状态一直会发起TCP连接请求,可以配置ACL,拒绝掉,防止TCP攻击)

        3.3 如果重传定时器32秒超时,且没有得到该peer的响应,那么会转至connect状态。

4、opensent状态(open报文已发送状态):在这个状态下,BGP已经向该peer发送了OPEN报文,在等待对方给我发送open报文。

        4.1 如果收到了对方发来的open报文,参数协商成功,则会向该peer发送keepalive报文,然后转到openconfirm状态。

        4.2 如果收到了对方发来的open报文,参数协商失败,则会向该peer发送notification报文,然后转到idle状态。

5、openconfirm状态(open协商成功状态)

        5.1 在这个状态下,BGP等待对方的keepalive报文,如果收到了对方发来的keepalive报文则转换为established状态。

        5.2 在这个状态下,BGP如果收到了notification报文,则转换为idle状态。

6、established(连接已连接)

在这个状态下,说明邻居已建立完毕,这个状态下可以交互的报文:update、notification、keepalive、route-refresh。

        6.1 如果在这个状态下,收到正确的update和keepalive报文,那么BGP会认为邻居处于正常状态,继续保持。

        6.2 如果在这个状态下,收到错误的update和keepalive报文,那么BGP会认为邻居处于异常状态,会发送notification报文,转到idle状态。

        6.3 route-refresh的发送不影响邻居状态。

-----------------------

BGP报文:主要有两部分组成,分别是BGP报文头,和具体报文内容:

1、BGP报文头:

marker:占用16个字节,默认全为F,用于检查BGP邻居头部的消息是否完整。

length:占用2字节,用于描述BGP报文的总长度。包括报文头 + 具体报文内容

type :用于描述当前BGP报文类型的,分为1 2 3 4 5

2、OPEN报文:

version:BGP版本,默认是4

my as:用于描述发出该open报文的路由器所述AS号,同时校验对端的AS号和本地配置的AS号是否一致。

hold time:描述路由器邻居失效时间,默认情况为keepalive时间的3倍,当两端holdtime时间不一致时,需要协商为数值较低的执行。

修改命令: timer keepalive 50 holdtime 150 //BGP视图下,修改keepalive和holdtime时间。

BGP ID:用来描述发出该open报文的路由器的BGP router-id。

Optionnal Parmeters length:BGP协商参数字段长度

Optionnal Parmeters:BGP协商参数。

3、update报文:

分为两个部分:

        1、withdraw routes length:用来描述被删除的路由所占的长度。被删除的路由,只由路由前缀+掩码来描述。

        2、total path attribute length:用来描述传递的路由所占的长度。传递的路由,由路由属性+路由条目来描述;同一个update报文属性相同,即具有相同属性的路由条目可以由同一条update报文传递;属性不同的路由条目不可以由同一条update报文传递。

===================

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

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

相关文章

LeetCode-热题100:1.两数之和

题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意…

Linux:文件读取指令

Linux:文件读取指令 cat指令more指令less指令head指令 & tail指令grep指令 cat指令 cat指令用于查看目标文件的内容。 语法:cat [选项][文件] 比如直接使用cat读取一个文件: 可以看到,其直接在指令的下方,输出了t…

Python中错误和异常的区别你搞清楚了吗?

​ 在Python编程的世界里,错误(Error)和异常(Exception)都是用来处理运行时出现的问题的。但它们之间有着微妙的差别,今天我们就来弄清楚。 错误(Error)通常指的是那些更严重、不可…

OrangeDAO联合创始人Don Ho确认出席Hack.Summit() 2024区块链开发者大会

随着Web3技术的快速发展,区块链领域备受关注的盛会——Hack.Summit() 2024 区块链开发者大会即将于 2024 年 4 月 9 日至 10 日在香港数码港隆重启幕。本次大会不仅是 Hack.Summit() 系列在亚洲的首次亮相,更象征着全球区块链行业对亚洲,尤其…

HBM产品在本财年内将为美光带来数亿美元的收入

美光科技,作为美国的主要内存制造商,得益于人工智能(AI)市场需求的增长,在截至2月份的上一季度成功扭亏为盈,并给出了乐观的财务预测。在3月20日的财报电话会议上,美光科技CEO桑杰梅赫罗特拉表示…

python基础知识(三)基本编程题,应用题

基本编程题 1.从键盘输入一个整数和一个字符,以逗号隔开,在屏慕上显示输出一条信息。 示例如下: 输入: 10, 输出: 10 s input("请输入一个整数和一个字符,用逗号隔开:")l s.split(",&q…

3.2 CSS选择器

3.2.1 元素选择器 在CSS中最常见的选择器就是元素选择器&#xff0c;即采用HTML文档中的元素名称进行样式规定。元素选择器又称为类型选择器&#xff0c;可以用于匹配HTML文档中某一个元素类型的所有元素。 例如&#xff0c;匹配所有的段落元素<p>&#xff0c;并将其背景…

基于Java的厦门旅游电子商务预订系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…

GC日志打印

GC日志打印 java -jar -Xloggc:./gc-%t.log -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCTimeStamps -XX:PrintGCCause -XX: UseGCLogFileRotation -XX:NumberOfGCLogFiles10 -XX:GCLogFileSize100M xxxxxx.jar%t 当前时间戳 -Xloggc:./gc-%t.log: 将日志记录到当前…

Linux之udp/tcp协议

之前我们已经初步了解了端口号&#xff01; 今天我们首先就要更加深入了解端口号&#xff01; 在 TCP/IP 协议中 , 用 " 源 IP", " 源端口号 ", " 目的 IP", " 目的端口号 ", " 协议号 " 这样一个五元组来标识一个通信 其…

LeetCode每日一题——x 的平方根

x 的平方根OJ链接&#xff1a;69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 乍一看题目只需要算一个数的平方根&#xff0c;根据我们之前学的C语言我们能很快的想到使用sqrt&#xff0c;pow这类的<math.h>库函数&#xf…

ChatGPT助力:写出引人注目的学术论文

ChatGPT无限次数:点击直达 ChatGPT助力&#xff1a;撰写引人注目的学术论文 在学术领域&#xff0c;撰写引人注目的论文对于展示研究成果和获取认可至关重要。本文将介绍一些关键策略和技巧&#xff0c;帮助您撰写引人注目的学术论文。 选题精准 一篇引人注目的学术论文首先…

redis瘦身版

线程模型 纯内存操作/非阻塞io多路复用/单线程避免多线程频繁上下文切换 基于Reactor模式开发了网络事件处理器&#xff1a;文件事件处理器&#xff0c;单线程的 io多路监听多个socket&#xff0c;据socket事件类型选择对应的处理器&#xff0c;高性能网络通信模型&#xff0c…

企业必备的 Exchange 邮箱管理工具包:STELLAR TOOLKIT FOR EXCHANGE

天津鸿萌科贸发展有限公司是 Stellar 系列软件的授权代理商。 Stellar Toolkit for Exchange 工具包功能特性 将在线和离线EDB转换为PST Stellar Toolkit for Exchange 可以将邮箱从托管 Exchange 和脱机 EDB 导出为 PST 文件格式。该工具允许您根据需要连接单个或多个邮箱。…

操作系统是如何启动的(持续更新中)

以ChCore为例&#xff0c;介绍OS是如何启动的 OS启动时进行硬件初始化工作&#xff0c;并开启页表 进入内核 Bootloader 和 kernel 放在同一个ELF 文件中

【c/c++指针】初学者必看,学好指针的重要性,指针都有哪些应用

指针&#xff0c;在C/C编程中是一个重要且基础的概念。尽管初学者可能会觉得它们有些复杂&#xff0c;但是深入理解和熟练使用指针是每个程序员必须掌握的技能之一。在本文中&#xff0c;我们将探讨学好指针的重要性&#xff0c;以及指针在程序设计中的广泛应用。 1. 内存管理…

vue3实现输入框短信验证码功能---全网始祖

组件功能分析 1.按键删除&#xff0c;清空当前input&#xff0c;并跳转prevInput & 获取焦点,按键delete&#xff0c;清空当前input&#xff0c;并跳转nextInput & 获取焦点。按键Home/End键&#xff0c;焦点跳转first/最后一个input输入框。ArrowLeft/ArrowRight键点击…

SQL语句之VIEW视图和空值

文章目录 一、VIEW视图 1、定义视图 CREATE VIEW 2、删除视图 3、查询视图和更新视图 二、空值 1、判断一个属性是否为空值 2、空值的运算 一、VIEW视图 1、定义视图 CREATE VIEW CREATE VIEW 视图名(列名 1,列名 n) //若省略列名&#xff0c;则该视图由子査询中 SELE…

快速备份softaculous一键安装的网站程序

近日有客户是通过softaculous一键安装的网站程序&#xff0c;只是想要备份其中的某个网站程序&#xff0c;但是由于他使用的Hostease Linux虚拟主机&#xff0c;也了解到cPanel面板上带备份功能&#xff0c;但是该备份功能会将当前主机上的所有网站的文件进行备份&#xff0c;而…

C++中的虚函数和多态

C中的虚函数和多态 虚函数 C中的虚函数是面向对象编程中的一个核心概念&#xff0c;它允许你在派生类中重写基类中的成员函数。虚函数为多态性提供了机制&#xff0c;使得可以通过基类指针或引用调用派生类中重写的函数。这里是关于虚函数的详细解释&#xff1a; 定义虚函数…