BGP的基本配置

news2024/11/27 0:21:45

l 按照以下步骤配置BGP协议:

Ø 1步:设备基本参数配置,AS内配置IGP确保内部网络连通性;

l 配置IGP(OSPF协议等)路由解决peer对等体的源和目标IP之间连通性,确保peer之间TCP(179)连通性

Ø 2步:启动BGP进程

l 在BGP路由器上启动BGP进程,一台路由器上只能配置一个BGP实例

l 仅执行命令router bgp不能在路由器上激活BGP,必须至少执行一个子命令才能在路由器上激活BGP进程

Router(config)#router bgp as-number

l 手工设置BGP Router ID

Router(config-router)# bgp router-id ip-address

Ø 3步:建立BGP对等体

l 指定BGP邻居及激活BGP会话

l BGP邻居都需手工指定,不能像IGP那样通过协议自动发现

l 建立邻居时的指定的Peer IP地址必须路由可达,本端默认使用报文出接口IP地址作为更新源

l 本地的更新源IP地址必须与Peer IP地址相同,不相同,则BGP邻居无法正常建立

l 对端AS号决定了与邻居建立的是EBGP会话还是IBGP会话

Router(config-router)# neighbor {peer-address | peer-group-name} remote-as as-number

Ø 4步:通告BGP路由

l 通过宣告netword的方式引入路由

Ø 如果指定mask,则仅当IP路由表中有与完全匹配的条目时才会引入成功

Ø 如果不指定mask,只通告主类网络号,则仅当BGP路由表中至少有一个子网,才会将该主类网络作为一条

路由引入,但不会引入该主类网络之下的其他子网

Router(config-router)#network network-number [mask mask] [route-map map-tag] [backdoor]

l 通过重分布的方式引入路由

Router(config-router)#redistribute protocol-type [route-map map-tag] [metric metric-value]

Ø 5步: (可选)其他配置,路由策略、路由反射器等

     Ø BGP的验证功能

     l    在同指定BGP对等体建立BGP连接时,可以启用TCP MD5认证,并设置密码

Ø 启用身份验证后,将对通过对等体之间的TCP连接传输的所有数据等进行验证

Ø 认证都是在TCP建立连接的时候完成的

Router(config-router)#neighbor {peer-address | peer-group-name} password [ | 0 | 7] string

BGP基本配置案例

496964da5a0b46e4a3bfc93b94b0000d.png

R1BGP配置

router bgp 123

bgp router-id 1.1.1.1

neighbor 10.1.23.2 remote-as 123

network 1.1.1.1 mask 255.255.255.255

R3BGP配置

router bgp 123bgp router-id 3.3.3.3

neighbor 10.1.12.1 remote-as 123

neighbor 10.1.34.2 remote-as 400

network 3.3.3.3 mask 255.255.255.255

R4BGP配置

router bgp 400bgp router-id 4.4.4.4

neighbor 10.1.34.1 remote-as 123

network 4.4.4.4 mask 255.255.255.255

l 查看BGP的邻居

R1# show ip bgp summary

4f6b3cd266024bc9aabd0399a6ddc147.png

查看BGP的状态

查看BGP路由表R1上查看BGP的路由表

router# show ip bgp

Ø 1.1.1.1/32的路由是本地生成的,因此就是最优的

Ø 3.3.3.3/32是R3的路由,作为IBGP传递来的,满足条件因此最优

Ø 4.4.4.4/32是R3从EBGP邻居学习来的,但无“>”标记,不是最优的,因为其下一跳不可达

1a4cab1e137042828069fb006a2915d2.png

BGP的next-hop不可达问题

l BGP是AS-by-AS的路由协议,而不是router-by-router的路由协议

l 在BGP中,next-hop并不意味着是下一台路由器,而是到达下一个AS的IP地址

l EBGP中,默认next-hop为发送更新的邻居路由器的IP地址

l IBGP中,从EBGP传来的next-hop属性在IBGP中保持不变的被传递

因此,R1不知道如何去往10.1.34.4, 这个地址未被通告到AS123 的IGP里,因此路由不可达,所以不是最优

l 有两种办法解决next-hop不可达的问题

Ø 第1种办法就是把10.1.34.0这个网络宣告到AS123的IGP路由中

R3(config)#router ospf 1

R3(config-router)#network 10.1.34.3 0.0.0.0 area 0

Ø 这样4.4.4.0/24这条路由就会在R1的BGP路由表成为最优路由

Ø 但这种方法并不建议,因为会使得AS之间的链路暴露在AS内部,有一定安全风险

Ø 第2种办法就是在R3上配置next-hop-self,使得向R1发送的路由的下一跳的属性都改为R3自己

Ø 这样R1上4.4.4.0/24这条路由的next-hop就是R3的10.1.23.3,下一跳可达,成为最优路由

Router(config-router)#neighbor {邻居地址|邻居名称} next-hop-sel

f

l 查看具体BGP路由信息,可以看到这条BGP路由的所有BGP属性

8625e1a9809348d882bf9251777fde80.png

BGP的更新源

l BGP路由器可以指定环回接口loopback地址作为BGP连接的源地址,因为只需TCP可达即可建立邻居关系

l 因为loopback接口只要路由器正常运行就始终可用,当BGP邻居之间有多条路径时,可以使得BGP邻居更加稳定

Ø IBGP邻居建议使用环回接口建立邻居, EBGP邻居通常使用直连接口的IP地址作为源地址

Router(config-router)# neighbor {邻居地址|邻居名称} update-source {接口类型}

Ø EBGP邻居使用环回接口建立EBGP则应注意EBGP邻居多跳问题

BGP指定更新源-EBGP

l 如果使用环回接口建立EBGP邻居,需要注意多跳问题

l 如果不进行额外配置,EBGP路由器只能使用直接接口地址作为更新源(到达更新源最多只能1跳),使用环回接口建立EBGP邻居,需要修订跳数

Router(config-router)#neighbor {邻居地址|邻居名称} ebgp-multihop [跳数]

BGP的维护

l 在维护BGP协议的时候,有时候我们需要通过重置BGP会话,来达到刷新路由策略、触发路由更新的目的,有3种触发更新的方式:

Ø 硬重置

Ø 断开相应的TCP连接,通过这些会话收到的所有信息都将失效,并从BGP表中删除

Router#clear ip bgp *

Router#clear ip bgp {as number | peer-address | peer-group-name}

Ø 软重置

l 软重置(soft reconfiguration)

Ø 不拆除并重建TCP或BGP连接,而是仅触发更新操作以便让新的路由策略生效

Ø 软重置可以应用于出站或入站策略,也可同时用于出入站策略

p 入站软重置,本地发送route-refresh给所有BGP邻居,让邻居把最新的路由发送给自己

Router#clear ip bgp {as number | peer-address | peer-group-name} [soft in]

p 出站软重置,本地发送update消息给邻居,让邻居获取到自己的最新路由

Router#clear ip bgp {as number | peer-address | peer-group-name} [soft out]

Ø 路由刷新

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

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

相关文章

如何查看自己的公网IP?

我们在网络中,每一个设备都被分配了一个唯一的IP地址,用以区分和识别其他设备。公网IP地址是指可被公众访问的IP,是因特网上的全球唯一标识。当我们需要查看自己的公网IP时,可以采取以下几种方式。 使用命令行查看公网IP 在Windo…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

光电离子传感器PID-AH5在空气质量监测和HVAC系统中的应用

随着工业化和城市化的步伐不断加快&#xff0c;空气质量问题日益严重&#xff0c;对人们的健康和生活品质构成了严重威胁。为了有效监测和改善空气质量&#xff0c;光电离子传感器作为一种先进的检测技术&#xff0c;正在空气质量监测以及HVAC&#xff08;供暖、通风和空调&…

OpenHarmony实战开发-状态变量组件定位工具实践

概述 自定义组件中的变量被状态装饰器&#xff08;State&#xff0c;Prop等&#xff09;装饰后成为状态变量&#xff0c;而状态变量的改变会引起使用该变量的UI组件渲染刷新。状态变量的不合理使用可能会带来冗余刷新等性能问题。开发者可以使用状态变量组件定位工具获取状态管…

JdbcTemplate详解

1 概述 为了使JDBC更加易于使用&#xff0c;Spring在JDBC API上定义了一个抽象层&#xff0c;以此建立一个JDBC存取框架。 作为Spring JDBC框架的核心&#xff0c;JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法&#xff0c;通过这种方式&#xff0c;可以在尽可能保留…

【数据结构(邓俊辉)学习笔记】向量02——动态空间管理

文章目录 1. 概述2. 静态空间管理缺点3. 动态空间管理3.1 扩容3.1.1 如何实现扩容3.1.2 扩容算法3.1.3 容量递增策略 VS 容量倍增策略3.1.3.1 容量倍增策略分摊分析3.1.3.2 容量递增策略分摊分析3.1.3.3 结果对比 3.2缩容3.2.1 动态缩容算法实现3.2.2 动态缩容算法时间复杂度 4…

Sui主网升级至V1.23.1版本

其他升级要点如下所示&#xff1a; #17126 协议&#xff1a;Deepbook的更改将被还原。 #16673 开发者可能会看到更多编译器诊断&#xff0c;因为选择的解析错误不再阻止编译&#xff0c;并且编译器的诊断会到达后续编译阶段&#xff0c;其中可能会生成额外的诊断。 #16966…

SQLite FTS5 扩展(三十)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite的知名用户(二十九) 下一篇:SQLite 的命令行 Shell(三十一&#xff09; 1. FTS5概述 FTS5 是一个 SQLite 虚拟表模块&#xff0c;它为数据库应用程序提供全文搜索功能。在最基本的形式中&#xff0c; 全文搜索引擎允许…

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

JVS物联网平台驱动网关管理:智能化与自动化的探索

驱动网关的管理 驱动网关是对驱动进程进行生命周期的管理&#xff0c;包括驱动进程的创建、启停、更新、结束等管理功能。 如下图所示&#xff1a; 驱动代理程序是驱动网关的管理程序&#xff0c;每个驱动网关对应于一个驱动代理程序&#xff0c;驱动代理程序初始版本是安装在…

Nginx解决跨域访问难题:轻松实现跨域资源共享!

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 跨域资源共享&#xff08;CORS&#xff0c;Cross-Origin Resource Sharing&#xff09;是一种网络浏览器的安全功能&#xff0c;它限制了一个源&#xff08;域、协议和端口…

算法----BF算法KMP算法

请想象一个情景&#xff1a; 当你脑海中突然浮现出一个词&#xff0c;你该怎么去找到这个词的有关内容&#xff1f; 打开我们浏览器的搜索框&#xff0c;输入你想的这个词&#xff0c;然后点击Enter。浏览器就会自动搜索与该词匹配的内容。 这个过程实际上可以简化成以下形式…

常用的时间序列分析方法总结和代码示例

时间序列是最流行的数据类型之一。视频&#xff0c;图像&#xff0c;像素&#xff0c;信号&#xff0c;任何有时间成分的东西都可以转化为时间序列。 在本文中将在分析时间序列时使用的常见的处理方法。这些方法可以帮助你获得有关数据本身的见解&#xff0c;为建模做好准备并…

删除docker的容器与镜像

如果您想要卸载通过 docker pull influxdb 命令下载的 InfluxDB 容器&#xff0c;您需要执行以下步骤&#xff1a; 1. **停止正在运行的 InfluxDB 容器**&#xff1a; 首先&#xff0c;您需要停止任何正在运行的 InfluxDB 容器。您可以使用以下命令来查找正在运行的 InfluxD…

15 JavaScript学习:循环

JavaScript循环语句概念和分类 JavaScript中的循环语句用于重复执行特定的代码块&#xff0c;直到指定的条件不再满足。下面是JavaScript中常用的循环语句以及它们的概念和分类&#xff1a; for 循环&#xff1a;for循环通过指定起始条件、循环条件和递增/递减步长来进行迭代。…

C++程序在Windows平台上各种定位内存泄漏的方法

一、前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏&#xff0c;因为Linux在开发领域的使用场景大多是跑服务器&#xff0c;再加上它的开源属性&#xff0c;相对而言&#xff0c;处理问题容易形成“统一”的标准。而在Windows平台&#xff0c;服务器和客户端…

云计算时代:SFP、SFP+、SFP28、QSFP+和QSFP28光纤模块详解

随着数据中心的快速发展和云计算的广泛应用&#xff0c;高速、高效率的光纤网络传输成为关键需求。在众多光纤模块中&#xff0c;SFP、SFP、SFP28、QSFP和QSFP28是最常见的几种类型。本文将为您详细解析这几种光纤模块之间的区别&#xff0c;帮助您更好地了解和选择适合自己需求…

VS2019中配置C++ OpenCV 4.5.4完整指南

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

C# 图像处理 添加水印

方法1&#xff0c;使用自带的画刷进行绘制水印 示例代码 public partial class Form1 : Form{public Form1(){InitializeComponent();}string photoPathstring.Empty;Bitmap image null;private void button1_Click(object sender, EventArgs e) //选择照片{OpenFileDialog d…

JavaWeb-自学JSP组件报告

自学JSP组件报告 一、组件资源及作用 1. commons-fileupload-1.2.2.jar 组件作用&#xff1a;用于处理HTTP文件上传请求&#xff0c;提供了文件上传的解析和存储功能。它允许开发者在Web应用中轻松实现文件上传功能。 2. commons-io-2.4.jar 组件作用&#xff1a;提供了一…