HCIP-17 BGP基础2

HCIP-17  BGP基础2

一、bgp的路由黑洞问题

1.bgp的同步功能

ipv4-family unicast  IPV4的地址簇

undo synchronization  关闭BGP同步功能

bgp的同步功能原理

当边界路由器从ibgp邻居收到一条路由后,会使用该路由和igp路由表进行比较。

如果在igp路由表中存在该路由即BGP同步

如果在igp路由表中不存在该路由即BGP不同步

如果bgp同步,边界路由器将会把该路由条目传递给其他的ebgp邻居。

如果bgp不同步,边界路由器将不会把该路由条目传递给其他ebgp邻居。

2.将bgp路由引入igp

不推荐。

原理上可以,但是,从路由承载能力上不行

3.as内部采用全互联模式(fullmesh)

4.使用gre隧道技术

[R2]int Tunnel 0/0/0

[R2-Tunnel0/0/0]ip add 24.1.1.2 24

[R2-Tunnel0/0/0]tunnel-protocol gre

[R2-Tunnel0/0/0]source g0/0/0

[R2-Tunnel0/0/0]destination 34.1.1.4

[R4]int Tunnel 0/0/0

[R4-Tunnel0/0/0]ip add 24.1.1.4 24

[R4-Tunnel0/0/0]tunnel-protocol gre

[R4-Tunnel0/0/0]source g0/0/1

[R4-Tunnel0/0/0]destination 23.1.1.2

5.通过lsp隧道解决路由黑洞

二、bgp的路由是如何产生的

1.通过network宣告路由表中已存在的路由条目

2.import-route 引入路由

被引入的路由需要在全局路由表加表。

3.自动聚合产生的路由条目

只能聚合import-route进来的路由条目,进行主类聚合。

被聚合的明细路由会被抑制。无法进行传递,只会传输聚合后的主类的路由

4.手动聚合产生

[R1-bgp]aggregate 172.16.2.0 255.255.254.0 detail-suppressed   手动抑制明细。

三、bgp报文open报文

open报文

它就相当于OSPF里面的hello报文。用于建立bgp的邻居的连接,协商bgp参数的报文

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

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

keepalive报文用于保持邻居连接的报文

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

四、bgp的邻居状态机

1.idle叫初始状态,bgp初始状态。

在进入这个idle状态时,会触发华为的start事件,这个事件时间为32秒。

在这个时间之后,才开始建立该peer的三次握手。建立TCP连接,在发送了syn以后。

进入到connect状态

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

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

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

手动挂起邻居:在邻居表中表现为idle (admin)。

2.connect状态(连接状态)

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

向邻居发起syn后,就会进入到这个状态。在这个状态完成TCP三次握手。

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

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

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

常见的几种connect状态原因。

邻居没有给我响应。

我发出的syn在沿途中遇到了阻碍,没有到达对方。沿途路由不可达

ebgp邻居没有配置ttl多跳。

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

3.active状态(活跃的状态)

当TCP三次握手失败时。才会进入这个状态。

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

如果在多次尝试下,TCP三次握手仍然失败,那么bgp会将该peer停留在active状态。

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

4.opensent状态(open报文已发送状态)

在这个状态下。bgp已经向该peer发送了open报文,在等待对方给我发送open报文

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

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

5.openconfirm状态

在这个状态下bgp等待对方的keepalive报文。

如果收到了对方发来的keepalive报文则转换为establisheded。

在这个状态下bgp如果收到了notification报文,则转换为idel状态

6.Establisheded(链接已建立),

在这个状态下说明邻居已经建立完毕,这个状态下可以交互的报文:

update;Notification;keepalive;Route-refresh

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

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

Route-refresh报文的发送不影响邻居关系。

七、bgp的报文细节

主要由两部分组成,分别是bgp报文头和具体报文内容

bgp报文头:

Marker:占用16个字节。默认为全f。用于检查bgp邻居头部的消息是否完整

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

type是用于描述当前bgp报文类型的分为12345。

1.具体报文:

version:bgp版本。默认都是四,

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

Hold time是描述路由器邻居失效时间的。默认情况为keepalive时间的3倍。

当两端holdtime时间不一致时,需要协商为数值较低的执行

<R1>dis bgp peer 12.1.1.2 verbose 查看该邻居的具体信息。

BGp id描述发出该open报文的路由器bgp router ID

Optional parameter length  :bgp协商参数字段长度

Optional parameters :bgp协商参数

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

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

相关文章

leetcode_15. 三数之和_java

15. 三数之和https://leetcode.cn/problems/3sum/ 1、题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。…

Open Interpreter:重新定义人机交互的开源革命

引言 在人工智能技术蓬勃发展的今天&#xff0c;人机交互的方式正经历着前所未有的变革。Open Interpreter&#xff0c;作为一个开源项目&#xff0c;正在重新定义我们与计算机的互动方式。它允许大型语言模型&#xff08;LLMs&#xff09;在本地运行代码&#xff0c;通过自然…

【JavaScript】错误处理与调试

个人主页&#xff1a;Guiat 归属专栏&#xff1a;HTML CSS JavaScript 文章目录 1. JavaScript 错误处理基础1.1 错误类型1.2 try...catch 语句 2. 错误抛出与自定义错误2.1 throw 语句2.2 自定义错误类型 3. 异步错误处理3.1 Promise 错误处理3.2 async/await 错误处理 4. 调试…

算法基础模板

高精度加法 #include <bits/stdc.h> using namespace std; const int N10005; int A[N],B[N],C[N],al,bl,cl; void add(int A[],int B[],int C[]) {for(int icl-1;~i;i--){C[cl]A[i]B[i];C[cl1]C[cl]/10;C[cl]%10;}if(C[cl])cl; } int main() {string a,b;cin>>a&…

自行搭建一个Git仓库托管平台

1.安装Git sudo apt install git 2.Git本地仓库创建&#xff08;自己选择一个文件夹&#xff09; git init 这里我在 /home/test 下面初始化了代码仓库 1. 首先在仓库中新建一个txt文件&#xff0c;并输入一些内容 2. 将文件添加到仓库 git add test.txt 执行之后没有任何输…

[MySQL]数据库与表创建

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善 Java 程序员知识体系的博客&#x1f4da;。 它记录学习点滴&#xff0c;分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 本篇简单记录…

相机回调函数为静态函数原因

在注册相机SDK的回调函数时&#xff0c;是否需要设置为静态函数取决于具体SDK的设计要求&#xff0c;但通常需要遵循以下原则&#xff1a; 1. 必须使用静态函数的情况 当相机SDK是C语言接口或要求普通函数指针时&#xff0c;回调必须声明为静态成员函数或全局函数&#xff1a;…

《Vue Router实战教程》4.路由的匹配语法

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 路由的匹配语法 大多数应用都会使用 /about 这样的静态路由和 /users/:userId 这样的动态路由&#xff0c;就像我们刚才在动态路由匹配中看到的那样&#xff0c;但是 Vue Router 可以提供更多的方式&#…

Debezium报错处理系列之第128篇:增量快照报错java.lang.OutOfMemoryError: Java heap space

Debezium报错处理系列之第128篇:增量快照报错java.lang.OutOfMemoryError: Java heap space 一、完整报错二、错误原因三、解决方法Debezium从入门到精通系列之:研究Debezium技术遇到的各种错误解决方法汇总: Debezium从入门到精通系列之:百篇系列文章汇总之研究Debezium技…

通过MCP+数据库实现AI检索和分析

通过 MCP&#xff08;Multi-Agent Collaboration Platform&#xff0c;多智能体协作平台&#xff09; 数据库&#xff0c;实现一个AI检索和分析系统。 一、系统目标 实现通过 AI 多智能体对结构化&#xff08;数据库&#xff09;和非结构化&#xff08;文档、文本&#xff09…

【教学类-102-08】剪纸图案全套代码08——Python点状虚线优化版本02(有空隙)+制作1图2图6图24图

背景需求 代码实现了点状虚线的全套流程,但是图片中主体图案和虚线与左右两边粘连。 【教学类-102-07】剪纸图案全套代码07——Python点状虚线优化版本01(无空隙)+制作1图2图6图24图-CSDN博客文章浏览阅读665次,点赞11次,收藏11次。【教学类-102-07】剪纸图案全套代码07…

循环神经网络 - 长短期记忆网络

在之前的博文中&#xff0c;我们介绍了循环神经网络的长程依赖问题及改进方案&#xff0c;可以参考&#xff1a;循环神经网络 - 长程依赖问题及改进方案-CSDN博客 但是改进方案只是可以缓解梯度消失&#xff0c;并不能彻底解决梯度爆炸问题和记忆容量(Memory Capacity)问题。 …

LLM应用开发(七)--记忆

1.LangChain记忆模块 底层原理&#xff1a;在最新一次问题时&#xff0c;带上前面的人机对话历史内容 1.1.具体方式 缓冲记忆 缓冲窗口记忆&#xff08;限定存储会话信息次数&#xff09; 令牌缓冲记忆 摘要总结记忆 摘要缓冲混合记忆 向量存储库记忆

Unity VideoPlayer 播放无声音

增加一个videoPlayer下挂&#xff0c;audiorSource脚本 this.videoPlayer.EnableAudioTrack(0, true); this.videoPlayer.audioOutputMode VideoAudioOutputMode.AudioSource; this.videoPlayer.SetTargetAudioSource(0, this.videoPlayer.GetComponent<AudioSource>()…

AGI|AutoGen入门食用手册,搭建你的智能体流水线

目录 1. AutoGen简介 主要特点 2.快速安装 3. 相关概念 Agent Roles and Conversations 4.多代理对话 4.1 Agents 例子: 两个对话代理 4.2 支持多样化的对话模式 1. AutoGen简介 AutoGen 是一个开源编程框架&#xff0c;用于构建AI代理并促进多个代理之间的合作以解…

基于ImGui+FFmpeg实现播放器

基于ImGuiFFmpeg实现播放器 演示&#xff1a; ImGui播放器 继续研究FFmpeg&#xff0c;之前做了一个SDL的播放器&#xff0c;发现SDL的可视化UI界面的功能稍微差了点&#xff0c;所以今天我们换了一个新的工具&#xff0c;也就是ImGui。 ImGui官方文档&#xff1a;https://g…

ES6变量声明:let、var、const全面解析

一、引言 ECMAScript 6&#xff08;简称 ES6&#xff09;的发布为 JavaScript 带来了许多革命性的变化&#xff0c;其中变量声明方式的更新尤为重要。let、var和const成为开发者日常编码中频繁使用的关键字。 本文将深入解析这三种声明方式的核心特性、区别及最佳实践&#xff…

Java基础 - 反射(2)

文章目录 示例5. 通过反射获得类的private、 protected、 默认访问修饰符的属性值。6. 通过反射获得类的private方法。7. 通过反射实现一个工具BeanUtils&#xff0c; 可以将一个对象属性相同的值赋值给另一个对象 接上篇&#xff1a; 示例 5. 通过反射获得类的private、 pro…

FCOS目标检测

一、模型框架 FCOS采用的网络架构和RetinaNet一样&#xff0c;都是采用FPN架构&#xff0c;如图2所示&#xff0c;每个特征图后是检测器&#xff0c;检测器包含3个分支&#xff1a;classification&#xff0c;regression和center-ness。 对于特征图Fi∈RHWC&#xff0c;其相对…

Java基础 - 泛型(常见用法)

文章目录 泛型类泛型方法泛型类派生子类示例 1&#xff1a;子类固定父类泛型类型&#xff08;StringBox 继承自 Box<String>&#xff09;示例 2&#xff1a;子类保留父类泛型类型&#xff08;AdvancedBox<T> 继承自 Box<T>)示例 3&#xff1a;添加子类自己的…