BGP对等体建邻配置

news2024/11/24 0:55:21

BGP对等体大体分为EBGP对等体和IBGP对等体。而BGP对等体的建邻主要分为两种:1、使用物理接口建邻 2、使用环回借口建邻,针对不同的BGP对等体选用不同的建邻方式。

        ·EBGP的建邻主要使用的是物理接口建邻

        ·IBGP的建邻主要使用的是环回接口建邻

这两种建邻方式只是相对的并非绝对,EBGP也可以使用环回,但是有一定的前提,IBGP也可以使用物理接口,但是有一些缺陷,为了实现网络的稳定,使用环回建邻。

 IBGP使用环回建邻原因:

在一个大型的网络中,使用物理接口建邻,那么BGP对等体的连接就和这一条物理线路绑定,一旦物理链路出问题,那么IBGP对等体将会建立失败。而使用环回建立,相当于IBGP对等体和整个路由器进行了绑定,一条链路断开,通过IGP协议就可以实现其他物理链路的联通。

EBGP使用物理链路建邻原因:

在EBGP对等体之间,如果仅有一条物理链路,那么EBGP建邻都靠这一条物理链路,如果依靠环回建邻,还是要靠物理链路,所以除非EBGP对等体之间有多条线路连接,否则物理建邻才是最优解。

通过实验的方式解释建邻。

此图我们仅以R1,R2,R3建邻举例。

首先是R1和R2的EBGP对等体的建立。

[R1]bgp 100    //开启BGP协议
[R1-bgp]router-id 1.1.1.1    //标注RID
[R1-bgp]peer 12.0.0.2 as-number 200    //指定建邻的物理链路地址和对等体AS号

此时我们查看一下目前R1所处状态

 R1从IDLE状态转入了Connect状态,原因:连接重传计时器连接超时,自动进入Connect状态

 此时R1处于Connect状态,此状态表明:R1试图和R2建邻TCP连接。

抓包查看一下目前的情况

很明显R1一直在发送TCP报文请求和R2建邻TCP连接,但是R2没有任何回应。

 可能的原因:R2没有开启TCP端口即179端口。

我们放通179端口再查看

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2

BGP协议一启动TCP端口便会开通

查看此时R1的状态

 Active状态:TCP建立不成功才进入此状态。表明TCP的建立依然存在问题

再抓包查看

 很明显,R1一直发包,而R2此时回复一个RST报文断开连接。

原因:此时R2没有进行指定,所以R2认为建立TCP会话是存在问题的,所以拒绝建立连接,回复RST报文。

进行一下指定

[R2-bgp]peer 12.0.0.1 as-number 100

等待32s----连接重传计时器,查看此时R1状态

 此时的EBGP对等体,建立成功。

查看抓包

 R1请求建立TCP会话,R2同意后,仅有R1发送Open报文,此时R2再此发送RST断开连接,由R2请求建立TCP会话。

由此我们可以看出:BGP的会话建立,需要经过两次TCP的建立,最终由后指定的建立连接。

BGP的邻居建立不是TCP连接建立后才有,而是手工指定后产生。

所以完整的EBGP对等体建立配置应该是

[R1]bgp 100
[R1-bgp]router-id 1.1.1.1   
[R1-bgp]peer 12.0.0.2 as-number 200

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 12.0.0.1 as-number 100

然后是IBGP对等体的建立

R2和R3

像前面的R1和R2一样

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 3.3.3.3 as-number 200

[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 2.2.2.2 as-number 200

此时查看R3的邻居关系

 Active:表明TCP连接建立失败。

抓包查看一下

 明显R3在给R2发消息想要建立,但是此时R2发送RST报文阻止建立。

注意:此时R2建立发送的源地址是接口ip地址,我们前面提到针对IBGP建立使用环回,按理应该是使用环回发送,但是却是使用接口,明显不对,需要修正。

[R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0    //表明使用环回建立邻居

此时再查看一下R3的BGP邻居表

邻居建立。此时我只修改了R3的建邻。邻居也是可以建立的。

 抓包看一下

 R3向R2请求建立TCP会话,然后建立BGP邻居。

似乎已经没有问题了

[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

此时状态立即跳转到IDLE状态

 等一下又恢复了。

需要抓包查看一下

 和建立EBGP对等体相似,也是建立了两次TCP会话。

但是我们前面看到建立一次TCP会话也可以建邻成功,所以BGP建立两次TCP会话没有必要

所以IBGP建邻的基本配置。

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 3.3.3.3 as-number 200
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 2.2.2.2 as-number 200
[R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0

针对BGP建邻做个总结:

抓包后会发现一个问题,就是BGP此时仅建立了一次TCP连接,就完成了BGP会话的建立。这也就意味着,BGP会话的建立仅仅是依靠TCP会话,而并没有对这个TCP会话建立的方式有要求,该TCP会话是由谁发起的,谁是客户端,谁是服务端并不影响BGP对等体的建立。----在BGP协议中,TCP会话建立两次完全是多余的,而建立两次的原因也是因为双方路由器均会指定对等体(均将自己看做是客户端),从而发起建立连接请求。

拓展:EBGP环回建邻

[R1]bgp 100
[R1-bgp]router-id 1.1.1.1   
[R1-bgp]peer 2.2.2.2 as 200
[R1-bgp]peer 2.2.2.2 con l0

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as 100
[R2-bgp]peer 1.1.1.1 con l0

沿用前面IBGP环回建邻。

查看R1建邻状态。

 IDLE:空闲状态,说明两者没有收到任何TCP消息

原因:两者根本无法到达对方环回。

IBGP可以实现建邻的原因,可以递归到去环回的路由,而EBGP完全没有,所以我们手动添加两条静态实现,递归。

[R1]ip route-static 2.2.2.2 32 12.0.0.2

[R2]ip route-static 1.1.1.1 32 12.0.0.1

再查看此时R1BGP建邻状态

 刷新了,但依然是IDLE。

抓包查看

明显TCP邻居建立成功后又断开,又重新建立,断开,处于震荡。

注意:Notification报文,此时发出,结束BGP建立,回到IDLE。

原因:EBGP对等体之间的TTL值为1,也就意味这,数据包路由器可以收,但是不能转发,所以影响建邻。

[R1-bgp]peer 2.2.2.2 ebgp-max-hop 2    //修改EBGPTTL值为2

[R2-bgp]peer 1.1.1.1 ebgp-max-hop 2

此时可以传送给对方的环回

查看R1建邻状态

 所以EBGP环回建邻配置

[R1]bgp 100
[R1-bgp]router-id 1.1.1.1   
[R1-bgp]peer 2.2.2.2 as 200
[R1-bgp]peer 2.2.2.2 con l0

[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 1.1.1.1 as 100
[R2-bgp]peer 1.1.1.1 con l0

​
[R1-bgp]peer 2.2.2.2 ebgp-max-hop 2   
[R2-bgp]peer 1.1.1.1 ebgp-max-hop 2

 

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

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

相关文章

VBA的面向接口编程

工作中有时候会用到VBA(Visual Basic for Applications),不是很多,也没有专门去学习VBA,用的时候遇到问题就上网去查资料,解决问题了就放下了。 今天被同事问到VBA中类的用法,我从来没有用过&am…

论文解读:基于 OpenMLDB 的流式特征计算优化

近期,数据库领域的顶级学术会议 ICDE 2023 在迪斯尼主题公园的故乡 - 美国的安纳海姆(Anaheim)举办。由 OpenMLDB 开源社区和新加坡科技设计大学(Singapore University of Technology and Design)联合完成的研究工作在…

Vue2-黑马(三)

目录: (1)vue2-axios (2)axios-发送请求 (3)vue2-axios-请求体格式 (4)vue2-axios-默认配置 (1)vue2-axios 已经配置了代理,可以…

项目部署---shell脚本自动部署项目

通过shell脚本自动部署项目 操作步骤: 在Linux中安装Git在Linux中安装maven编写shell脚本(拉取代码、编译、打包、启动)为用户授予执行shell脚本的权限执行shell脚本 执行过程:Linux服务器(编译、打包、启动&#x…

每天一道大厂SQL题【Day21】华泰证券真题实战(三)

每天一道大厂SQL题【Day21】华泰证券真题实战(三) 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…

爱智EdgerOS之深入解析爱智云原生产品ECSM

一、云原生简介 近些年来,云原生逐渐被业界认可和接受,在国内,包括政府、金融、通信、能源在内的众多领域的大型机构和企业都实现了不同程度的云化,那么什么是云原生呢?云原生计算基金会提供了官方的定义:…

参考|雨水情测报和大坝安全监测系统建设方案

解决方案 小型雨水情测报和大坝安全监测系统解决方案,系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成,同时建立规范、统一的监测平台,集数据传输、信息共享、数据储存…

比较系统的学习 pandas (6)

pandas 数据类型转换 在开始数据分析前,有时需要为数据分配好合适的类型,这样才能 够高效地处理数据 # 对所有字段指定统一类型 data pd.DataFrame(data, dtypefloat32) # 对每个字段分别指定 data pd.read_excel(data.xlsx, dtype{name: string, sc…

CUDA和TensorRT入门

CUDA 官方教程:CUDA C Programming Guide (nvidia.com) 一、基础知识 首先看一下显卡、GPU、和CUDA的关系介绍: 显卡、GPU和CUDA简介_吴一奇的博客-CSDN博客 延迟:一条指令返回的时间间隔; 吞吐量:单位时间内处理…

libwebsockets交叉编译

libwebsockets官网:https://libwebsockets.org/ github:https://github.com/warmcat/libwebsockets 首先下载libwebsockets源码,源码既可以在其官网上下载,也可以到github上下载。这里以v4.1.6为例,https://github.co…

react项目中自定义一个markdown编辑器

Markdown 是一种轻量级标记语言。 Markdown是一种简单的格式化文本的方法,在任何设备上看起来都很棒。它不会做任何花哨的事情,比如改变字体大小、颜色或类型——只是基本的,使用你已经知道的键盘符号。 它还允许人们使用易读易写的纯文本格…

为什么众多大型国企都在升级企业数智化底座?

在数字经济大潮中,数字化转型已不是企业的“选修课”,而是关乎企业生存和长远发展的“必修课”。在企业数字化转型中,国有企业特别是中央企业普遍将数字化转型战略作为“十四五”时期业务规划的重要内容之一,数字化能力也成为衡量…

图文详解CAN Log文件 - ASC文件格式

目录 1 CAN Log文件 -- ASC文件格式 1.1 Header 1.2 版本编号 1.3 经典CAN网络中的描述 1.3.1 经典CAN Standard标准帧的描述 1.3.2 经典CAN Extended扩展帧的描述 1.3.3 CAN Remote远程帧的描述 1.3.4 CAN Error错误帧的描述 1.4 CANFD网络中的描述 1.4.1 经典CAN S…

图解并用 C 语言实现非比较排序(计数排序、桶排序和基数排序)

目录 一、计数排序 二、桶排序 三、基数排序 一、计数排序 算法步骤: 找出待排序数组 arr 中的最小值和最大值(分别用 min 和 max 表示)。 创建一个长度为 max - min 1、元素初始值全为 0 的计数器数组 count。 扫描一遍原始数组&…

Nacos客户端实例注册源码分析-篇一

Nacos客户端实例注册源码分析-篇一 版本 nacos 服务器端 nacos 2.0.3 实例客户端注册入口 注册案例 回到之前搭建的服务提供者项目 9002 ,在真实的生产环境下,如果需要让某一个服务注册到 Nacos 的服务当中,我们引入对应的 nacos 发现依赖&…

4月Google Play政策更新,游戏上架需要注意这几点

3月21日,据路透社报道,由于发现国内某知名电商应用存在恶意软件问题,谷歌已暂时将该APP从商店下架,并表示:将该APP下架是一种安全预防措施,已经下载的用户也会收到警告,提示他们进行卸载。 4月…

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

摘要:动物识别系统用于识别和统计常见动物数量,通过深度学习技术检测日常几种动物图像识别,支持图片、视频和摄像头画面等形式。在介绍算法原理的同时,给出Python的实现代码、训练数据集以及PyQt的UI界面。动物识别系统主要用于常…

c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换

c/c:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的…

【自定义表格穿梭框】自定义封装jqgrid表格穿梭框,支持分页复选全选(附完整源码及效果图)

【写在前面】其实之前业务中也有这个方面的需求,但是总觉得自己写的有点乱,此时也就借这个机会重新封装一个公共的函数去实现这个穿梭框的效果,支持分页勾选,页面展示已选中和未选择的数据,使得系统操作更友好。 涉及知…

数学建模(三):模拟退火算法(SA)

文章目录模拟退火算法(SA)一、 概述1、 算法简介2、 核心思想3、 数学原理4、 模拟退火的流程二、 实例分析1、 初始化参数2、 Metrospolis 准则3、 生成新的值4、 获取最优值5、 主程序6、 总代码模拟退火算法(SA) 一、 概述 1…