BGP的基础知识

BGP——边界网关协议

IGP——内部网关协议——OSPF、RIP、ISIS

EGP——外部网关协议——EGP、BGP

边界网关协议BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4,目前市场上也存在BGPV4+,是在BGPV4的基础之上支持了更多的地址族,例如IPV6。

AS自治系统

由单一的组织或者机构独立维护的网络设备以及网络资源的集合。

划分AS的原因

  • 整个世界网络范围过大,单一网络收敛很慢且延迟较大。
  • 每个网络可能是某个组织或公司建立的,它们并不想将自己辛苦建立的网络交给别人管理,所以需要进行自治。

AS号

为了区分不同的AS,网络世界IANA组织提出了AS号——0-65535,0和65535一般作为保留AS号来使用,1-64511作为公有AS号使用,64512-65534作为私有AS号使用。

拓展AS号——将原本16位的AS号拓展到32位。

BGP的一些特性

  • 高可控性——路径属性
  • 高可靠性——TCP
  • AS-BY-AS——BGP把一个AS看作一个整体

BGP设计了很多路径属性,可以通过调用路由策略关联这些属性,达到路由控制的效果。

我们对IGP和EGP的要求不同,IGP需要在一个AS内计算路由,所以我们要求IGP选路佳、收敛快、占用资源少;而EGP不同,EGP协议只需要传递AS已经计算好的路由,所以我们对EBP的可控性、可靠性要求更高。

BGP传递的一定是路由条目信息

BGP没有使用周期更新传递路由信息

BGP存在触发更新

BGP在传输层使用TCP进行传输:端口号——179

BGP在建邻时必须指定建邻的对象,BGP技术支持非直连建邻

RIP是无类别的距离矢量路由协议,BGP是无类别的路径矢量协议,无类别——在传递路由条目信息时携带子网掩码,从而减少路由黑洞的产生。

BGP默认情况下不支持负载均衡,BGP会根据传递过来的路由信息中携带的路径属性选择最优的路径信息加载到路由表中。

BGP把AS看作一个整体

RIP/IGP实际上是一个算法的概念,BGP不是一个算法的概念,BGP也不需要计算路由信息,只负责转发路由即可。

EBGP对等体——一般建议采用直连建立对等体关系

IBGP对等体——一般采用非直连建邻

BGP为了实现这两个原则:BGP规定EBGP对等体之间发送数据包中携带的TTL值为1,而IBGP对等体之间传递的数据包TTL值为255。

BGP的数据包

报文名称作用发送时刻
Open协商BGP对等体参数,建立对等体关系BGP TCP建立连接成功之后
Update发送BGP路由更新BGP对等体关系建立之后又路由需要发送或路由变化时向对等体发送Update报文
Notification报告错误信息,中止对等体关系当BGP在运行中发现错误时,发送Notification报文将错误信息通告给BGP对等体
Keepalive标志对等体建立,维持BGP对等体关系BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

BGP的公共头部

Open包

作用:用来建立BGP对等体关系的数据报文。

  • AS号:自身的AS号,对比逻辑——对等体发过来的Open报文中携带的AS号必须和指定建邻的AS号一致,否则会导致建邻失败。
  • RID:建邻双方的RID不能一致,如果相同,会导致建立对等体失败。
  • 认证:BGP在建邻时如果做认证的话,需要对比双方认证口令,不一致则无法建立邻居关系。
  • 保活时间:类似于OSPF的死亡时间,默认180s,如果对等体双方保活时间不一致,会按照时间更小的去执行。

Keepalive包

  • 用来周期保活BGP的邻居关系,默认是1/3的保活时间——60s
  • 用来做Open报文的临时确认包

Update包

传递BGP路由信息的数据包。

BGP中的更新包,用来携带路由条目信息,包括目标网段、子网掩码以及BGP的各种属性。

在Update包中存在撤销路由字段,我们可以直接将不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的。而不需要想RIP那样采用带毒传输的方式。

Notification包

告警报文,在BGP工作过程中如果出现故障出现问题,会发送Notification报文告知对等体问题的原因。

Toute-refresh包

一种刷新机制,用于改变路由策略后请求对等体重新发送路由信息,前提是对等体双方均支持路由刷新。

BGP状态机

建立对等体之间TCP会话,指定建立对等体的对象。

BGP在建立对等体过程中,会建立两次TCP会话,会保留RID大的设备发起的TCP会话。

BGP一共存在6种状态机

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

Idel状态下,启动BGP协议后,必须指定建立对等体的目标之后,进入下一个状态。

必须路由可达(依靠IGP协议或者静态、直连)

Connect状态下,BGP对等体之间开始建立TCP会话连接。如果TCP会话建立成功,则进入OpenSent状态,如果TCP会话建立失败,则进入Active状态。

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

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

OpenConfirm状态下,如果收到对等体发送的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报文进行对等体之间的周期保活,默认保活时间为180s(hole time),发送周期为60s。

7、如果这个过程出现任何问题,都将使用Notification报文进行告警。

8、如果出现结构突变(网段消失或者新增网段),则将使用Update报文进行触发更新,并通告给其他对等体。

BGP的路由黑洞

控制层面的可达

数据层面实际不可达——中间设备没有运行BGP

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

解决方案:

  • 所有设备均运行BGP
  • 重发布
  • MPLS——最早专门用来解决BGP路由黑洞研发的一种路由协议。

同步机制——当设备学习到一条BGP路由,如果本地IGP路由表不可达,将视该BGP路由无效。默认处于关闭状态。

BGP防环——水平分割

EBGP水平分割

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

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

IBGP水平分割

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

解决方案:在IBGP对等体之间构建全连的IBGP对等体关系。但是会增加拓扑的复杂性导致网络可拓展性变差,并增大了占用资源。

我们可以通过联邦、反射器来结局以上问题。

BGP的基础配置

1、配置个接口的IP地址及环回地址

2、启动OSPG协议

使得AS200内部全网可达。

3、启动BGP协议

启动BGP协议,并指定自身AS号。

直接建邻,并指定建邻的IP地址和对应的AS号

查看BGP邻居关系(BGP的邻居表)

IBGP之间使用环回建邻

注意环回建邻必须改变更新源,更新源地址不一致将导致建邻失败。

EBGP之间用环回建邻

建议使用静态路由,实现路由可达。

用环回建邻,并修改EBGP数据包的TTL值,默认直接回车将修改TTL值为255

4、路由发布

宣告含义仅发布路由信息,并且注意:只能发布路由表中存在的路由信息

查看BGP表——记录发布的和接收到的所有BGP路由信息

Network——接收到的网段信息

NextHop——下一跳,如果是本地始发的BGP路由信息该字段为0.0.0.0

*> ——状态码

*valid——有效,当BGP设备接收到一条BGP路由信息,首先将验算下一跳是否可达,如果下一跳可达则代表该路由可用,如果下一跳不可达则认为该路由无效。注意:只有可用的路由信息才会参与BGP路由的选举,并加载到路由表中。

>best——最优的路由信息最终根据路径属性选择的结果,只有最优的路由信息才会加载到路由表中,并且只有最优的路由才会被BGP传递。

i——internal内部通过IBGP对等体学到的

[R2-bgp]peer 3.3.3.3 next-hop-local——当IBGP对等体学到一条EBGP路由,对于AS-BY-AS属性导致下一跳不可达,协议在传递这条IBGP路由的IBGP设备上修改下一跳为本地

BGP不能发布建邻的网段。

5、宣告BGP网段的方法——重发布

重发布的路由信息本地下一跳也是0.0.0.0相当于本地始发。

Ogn——起源码:象征该路由通过何种方式学习到的

  • I——表示该路由是通过IBGP对等体学到的路由信息,包括Network宣告的路由
  • E——表示该路由是由EBGP协议处学习到的路由信息,保留仅为了兼容
  • ?——除了前两种都是?

BGP的路由聚合

  • 自动聚合
  • 手工聚合

1、创建前缀列表抓取想要发布的路由网段

2、创建路由策略

匹配前缀列表抓取的流量

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

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

相关文章

使用ExLlamaV2量化并运行EXL2模型

量化大型语言模型(llm)是减少这些模型大小和加快推理速度的最流行的方法。在这些技术中,GPTQ在gpu上提供了惊人的性能。与非量化模型相比,该方法使用的VRAM几乎减少了3倍,同时提供了相似的精度水平和更快的生成速度。 ExLlamaV2是一个旨在从…

SpringBoot : ch04 整合数据源

前言 Spring Boot 是当今最流行的 Java 开发框架之一,它以简洁、高效的特点帮助开发者快速构建稳健的应用程序。在实际项目中,涉及到数据库操作的需求时,我们需要对数据源进行整合。本文将重点介绍如何在 Spring Boot 中整合数据源&#xff…

NX二次开发UF_CAM_PREF_ask_integer_value 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_PREF_ask_integer_value Defined in: uf_cam_prefs.h int UF_CAM_PREF_ask_integer_value(UF_CAM_PREF_t pref, int * value ) overview 概述 This function provides the …

如何看待程序员领域内的“内卷”现象?

要搞清楚这个问题,我首先就来阐释一下“内卷”的概念。 内卷本身是从一个学术名词演化为网络流行词的,本是指文化模式因达到某种最终形态,既无法保持稳定也不能转化为更高级的新形态,而只能在这种文化模式内部无限变得复杂的现象。…

TVS瞬态抑制二极管的工作原理和特点?|深圳比创达电子EMC

TVS二极管一般是用来防止端口瞬间的电压冲击造成后级电路的损坏。防止端口瞬间的电压冲击造成后级电路的损坏。有单向与双向之分,单向TVS一般应用于直流供电电路,双向TVS应用于交流供电电路。 TVS产品的额定瞬态功率应大于电路中可能出现的最大瞬态浪涌…

层层剥开Android14升级后异常弹框的神秘面纱

本篇文章将会通过研究源码的方式给您讲述Android系统升级到Android14后出现的两个异常弹框并给出消除它们的方案。闲话少叙,我们开始。 问题描述 在Android 14升级后,出现两个弹窗的异常情况。这里是异常的截图: 接下来,我们对这…

第一个Maven项目

(一)准备工作 1、从官网下载压缩包:apache-maven-3.5.4-bin,然后解压到D盘没有中文的目录。 2、配置环境变量: 在左下角win打开“设置”,搜索“高级系统设置”,点击“高级”,点击“环境变量”&…

酷开科技OS——Coolita,让智能大屏走向国际

10月23日,2023中国—东盟视听传播论坛在南宁举行。作为第五届中国—东盟视听周重要活动之一,本次论坛以“共享新成果、共创新视听、共建新家园”为主题。来自中国和东盟的300余名专家学者、业界代表通过主旨演讲、主题发言、圆桌对话等方式进行深入探讨&…

自学成为android framework高手需要准备哪些装备-千里马车载车机系统开发学习

背景 hi,粉丝朋友们: 大家好!经常有很多学员买课同学都会问到需要准备哪些装备,我也回答了很多学员了,今天就搞一篇文章来统一说明一下,告诉一下大家如果你想从一个framework新手变成一个framework开发的高…

振弦传感器土压力计的安装及埋设方法

振弦传感器土压力计的安装及埋设方法 土压力计是一种测量土体内侧压力的仪器,常用于土体工程的安全监测和评估。以下是土压力计的安装及埋设方法: 1. 选择合适的位置:土压力计的安装位置应该在土体内的高应力区域,以便能够准确测…

在Linux服务器中查找mysql的配置文件并修改其内容并保存,清空mysql8.0以上默认开启SSL的配置,防止odbc无法连接的问题

------每个命令输完记得按【enter】回车键------- 1、查找mysql的配置文件命令-mysql的配置文件默认名是my.cnf: find / -name my.cnf 2、查看显示的配置文件内容: cat /etc/my.cnf 3、修改配置文件的内容: 使用vi 或vim 命令 vi /etc…

推荐系统概述(PPT)

参考资料: 推荐系统系列之推荐系统概览(上) | 亚马逊AWS官方博客推荐系统系列之推荐系统概览(下) | 亚马逊AWS官方博客 目录如下: 推荐系统简介 推荐系统中常见概念 推荐系统中常用的评价指标 首页推荐…

请求的接口响应状态为已取消的原因

有趣的iframe问题 今天遇到一个问题,当点击了按钮----跳转页面时----F12键点击网络中的状态报了已取消,类型是 document说明是前端页面的问题,如果是xhr那可能是接口的问题。 原本是写了3个iframe,页面刷新的时候请求了第一个iframe,然后就…

随机微分方程的MATLAB数值求解

dt0.01; tout200; %总时间为2 xzeros(1,tout); x(1)0.5; %初始位置 mu0.2; sigma1; Wtsqrt(dt)*randn(1,tout); %产生随机序列Wt for t1:tout-1x(t1)x(t)mu*x(t)*dtsigma*x(t)*Wt(t); end t11:10:tout; %对原时间序列进行抽样 xtzeros(1,length(t1)); i1; for tt1xt(i)0.5*exp(…

招投标系统软件源码,招投标全流程在线化管理

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

HUAWEI华为MateBook X Pro 2022 12代酷睿版(MRGF-16)笔记本电脑原装出厂Windows11系统工厂模式含F10还原

链接:https://pan.baidu.com/s/1ZI5mR6SOgFzMljbMym7u3A?pwdl2cu 提取码:l2cu 华为原厂Windows11系统工厂包,带F10一键智能还原恢复功能。 自带指纹、面部识别、声卡、网卡、显卡、蓝牙等所有驱动、出厂主题壁纸、Office办公软件、华为…

深信服AC跨三层取mac,绑定ip/mac

拓扑图 目录 拓扑图 1.交换机配置团体名和版本号 2.配置跨三层取mac 3.配置策略 验证: “您的每一次阅读、点赞和分享,都是对我最大的鼓舞和动力。” 如果对亲爱您有所帮助,可以尝试支持一下博主,让博主更有动力 1.交换机配置…

Docker上部署mysql(超简单!!!)

拉取mysql镜像 运行如下命令 docker pull mysql:5.7 拉取成功 查看镜像 运行容器 此处部署最新版本的mysql docker run -d --name mysql -p 3307:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORD111 mysql --name mysql:给容器起个名字(唯一&#xff…

bclinux aarch64 openeuler 20.03 LTS SP1 部署 fastCFS

基于已配置好的4个节点部署ceph-0 ceph-1 ceph-2 ceph-3(早期ceph测试环境,名称就不修改了) 获取fcfs.sh mkdir /etc/fcfs cd /etc/fcfs wget http://fastcfs.net/fastcfs/ops/fcfs.sh 配置/etc/fcfs/fcfs.settings # 要安装的集群版本号…

Linux 零拷贝splice函数

Linux splice 函数简介 splice 是 Linux 系统中用于在两个文件描述符之间移动数据的系统调用。它的主要作用是在两个文件描述符之间传输数据&#xff0c;而无需在用户空间进行数据拷贝。也是零拷贝操作. 函数原型 #include <fcntl.h> ssize_t splice(int fd_in, loff_…