路由协议——iBGP与EBGP

在这里插入图片描述

一、适用场景

1、企业需要连接总部与分部,但总部与分部运行着不同的路由协议,总部到分部有自建的专线,端到端的设备支持BGP路由协议。
2、网络运营商,如电信、联通、移动等,各区域的ip路由表庞大,若要完成区域之间的连接,既不暴露某区域的网络拓扑,又能减少路由表的条目,只传送最优的路由。
3、中大型企业的网络,区域的网络结构复杂,路由表条目多,使用BGP路由可给网络减负,留出更的CPU计算资源与内存、缓存等资源,提高处理的效率与与速率。

二、专业术语

1、BGP路由协议的产生(Border Gateway Protocol):OSPF、ISIS路由协议在网络中已经广泛使用,但是随着网络规模的扩大,路由条目也随增加,IGP协议已经无法管理大规模网络了。因此出现了AS的概念。
可以把大型网络中的不同的设备划分到不同的组(自治系统AS)中,或者某地理范围中的网络设备都划分在一个组中,那么一个组中的这些设备运行相同的路由协议。比如可以将企业总部网络划分在一个AS中,企业的分部网络划分在一个AS中。不同的AS可以运行不同的路由协议。
2、iBGP与EBGP
(1)IBGP:内部网关协议,自治系统AS之内运行IGP协议
(2)EBGP:外部网关协议,自治系统AS之间运行EGP协议
3、自治系统的编号: 标准编号为16位二进制,2……16范围0-65535,公有编号范围1-64511。私有编号范围64512-65535 扩展编号:32位二进制。
4、BGP特征:BGP协议本身不产生新路由,不计算路由,不会暴露AS内部的网络拓扑。只转发本地路由表中来自其他协议生成的路由条目,即路由的搬运工。BGP协议本质上是一个重发布协议,专为AS之间共享路由定制。
5、BGP的5种报文
在这里插入图片描述
6、BGP是基于TCP的路由协议,只要能够建立TCP就能够建立BGP。
7、BGP防环机制:
(1)EBGP利用AS_PATH属性防环:路由条目在传递的过程中,将记录所经过的AS号,BGP协议拒绝接受携带本地AS号的BGP路由,丢弃这条路由。
(2)EBGP 的防环机制:Next-hop下一跳属性,EBGP之间通告路由的时候会修改next-hop属性,把自己的的AS number前缀到as-path属性上,接收方从EBGP收到路由更新后首先检查as-path属性,如果发现自己的AS number就认为有环路风险,直接丢弃该路由;
(3)IBGP 的防环机制:水平分割,IBGP不中转路由,从一个IBGP邻居处学习到的路由条目不得传递给下一个BGP邻居。
(4)IBGP 的防环机制:Origin属性,解决反射器产生的环路,不接收与自己起源ID相同的路由。
(5)IBGP中的反射器的防环机制:ORIGINATOR_ID属性用于记录到本地AS内部路由发起者的路由器ID,BGP发布者将丢弃ORIGINATOR_ID中与自己路由器ID相同的路由信息。
(6)cluster-list属性用于防止集群之间环路。RR反射路由的时候会将自己的cluster-id(默认为router-id)写进cluster-list,当接收这条路由发现cluster-list里面有自己的cluster-id,就会拒收路由。
(7)IBGP中的联盟的防环:通过AS Path属性防环,联盟相关的属性在传出联盟时会自动被删除。
CLUSTER_LIST属性和ORIGINATOR_ID属性不是公认必遵属性,只用于BGP反射里面防环。
BGP在比较Next Hop属性时,会优选去往Next Hop属性中IP地址的IGP开销最小的路由。

8、BGP建立邻居的过程及6种状态机:

                                       BGP建立邻居的过程及6种状态机

在这里插入图片描述

三、拓扑图

在这里插入图片描述

四、配置过程

(一)采用对端物理接口的ip地址建立BGP邻居

【AR1】:
sysname AR1
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.21.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
router id 1.1.1.1
bgp 100 #注:写错AS号时,undo BGP会清除所有BGP配置
peer 10.1.12.2 as-number 100 #使用对端的物理端口建立BGP邻居
peer 10.1.21.2 as-number 100 #使用对端的物理端口建立BGP邻居

#使能BGP的iPv4地址族并进入BGP的P4地址族视图,缺省进入BGP-IPv4单播地址族视图, 将IP路由表中的路由以静态方式加入到BGP路由表中,并发布给对等体(可以是各种路由,最终引入的是哪种协议的路由要视路由的优先级而定)。
ipv4-family unicast
network 1.1.1.1 255.255.255.255
network 10.1.12.0 255.255.255.0
network 10.1.21.0 255.255.255.0
peer 2.2.2.2 enable
ip route-static 2.2.2.2 255.255.255.255 10.1.12.2
ip route-static 2.2.2.2 255.255.255.255 10.1.21.2
ip route-static 3.3.3.3 255.255.255.255 10.1.12.2
ip route-static 3.3.3.3 255.255.255.255 10.1.21.2

【AR2】:
sysname AR2
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.32.1 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.21.2 255.255.255.0
interface GigabitEthernet2/0/0
ip address 10.1.23.1 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
bgp 100
peer 10.1.12.1 as-number 100
peer 10.1.21.1 as-number 100
peer 10.1.23.3 as-number 200
peer 10.1.23.3 ebgp-max-hop 255
peer 10.1.32.3 as-number 200
peer 10.1.32.3 ebgp-max-hop 255
ipv4-family unicast
network 2.2.2.2 255.255.255.255
network 10.1.12.0 255.255.255.0
network 10.1.21.0 255.255.255.0
network 10.1.23.0 255.255.255.0
network 10.1.32.0 255.255.255.0
import-route static
peer 1.1.1.1 enable
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
ip route-static 1.1.1.1 255.255.255.255 10.1.21.1
ip route-static 3.3.3.3 255.255.255.255 10.1.23.2
ip route-static 3.3.3.3 255.255.255.255 10.1.32.2

【AR3】:
sysname AR3
router id 3.3.3.3
interface GigabitEthernet0/0/0
ip address 10.1.32.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
bgp 200
peer 10.1.23.2 as-number 100
peer 10.1.23.2 ebgp-max-hop 255
peer 10.1.32.2 as-number 100
peer 10.1.32.2 ebgp-max-hop 255
ipv4-family unicast
ip route-static 1.1.1.1 255.255.255.255 10.1.23.1
ip route-static 1.1.1.1 255.255.255.255 10.1.32.1
ip route-static 2.2.2.2 255.255.255.255 10.1.23.1
ip route-static 2.2.2.2 255.255.255.255 10.1.32.1

1、此时在AR1上查看BGP的邻居状态,断开AR1的G0/0/1接口后,查看邻居,如下图:
在这里插入图片描述

由上图可见
(1)到AR2的10.1.21.2这条到BGP邻居的状态为Idle(空闲状态),在该状态下,BGP路由器尚未建立与邻居路由器的TCP连接。
(2)正常连接到AR2的10.1.12.2这条到BGP邻居的状态为Established(BGP邻居连接已建立) Established状态下:BGP可以和对等体交换Update、Keepalive、Route-refresh报文和 Notification报文。在建立连接状态下,BGP邻居之间的连接已经建立并且稳定,可以交换路由信息。

2、在AR1的G0/0/1接口上执行undo shutdown后,再通过抓包,如下图:
(1)当AR1的G0/0/1状态恢复正常后,在AR2的G0/0/2端口上抓包,查看BGP协议报文,可看出是OPEN message报文,建立BGP邻居的报文
(2)在AR1上通过display bgp peer命令,可以看到2条链路都建立了BGP邻居,状态是Established,说明AR1与AR2已经建立BGP邻居。
在这里插入图片描述

3、在AR2上查看邻居状态,AR2与AR1之间的iBGP邻居已经建立完成,AR2与AR3之间的EBGP邻居已经建立完成,如下图:
在这里插入图片描述

4、查看邻居状态:
(1)在AR3上查看BGP的邻居状态,与AR2已经建立BGP邻居,如下图:
在这里插入图片描述

(2)在AR2上查看IBGP邻居状态:
在这里插入图片描述

(3)在AR2上查看EBGP邻居状态:
在这里插入图片描述

5、查看BGP路由表是空的,此时我们还没有通过network与import命令引入路由到BGP对等体中
在这里插入图片描述

6、查看ip路由表
在这里插入图片描述

至此,通过物理接口的ip地址建立iBGP与EBGP已经完成。

(二)采用环回口地址建立BGP邻居

1、采用环回口地址建立BGP邻居的好处:
(1)提高稳定性:环回接口是一种逻辑接口,不受物理链路的影响,只要路由器本身不故障,环回接口就会一直处于UP状态。因此,使用环回接口建立BGP邻居关系可以提供更高的稳定性,减少因物理链路故障导致的BGP会话中断12。
(2)增加冗余性:当存在多条路径通往对等体时,使用环回接口建立BGP邻居关系可以增加冗余性。如果某条路径出现故障,其他路径仍然可以通过环回接口保持BGP会话的连续性,确保网络的可用性12。
(3)快速收敛:在内部网关协议(IGP)路由协议或静态路由的支持下,使用环回接口可以提供快速的收敛。当某条路径出现故障时,IGP或静态路由可以迅速重新计算路由,确保流量能够快速切换到其他路径1。
(4)适用于IBGP:在内部BGP(IBGP)环境中,通常使用环回接口建立邻居关系。这是因为IBGP环境底层存在IGP,环回接口也会宣告到IGP中。即使其中一条物理链路故障,环回接口仍然可以保持UP状态,不会影响IBGP邻居关系。
(5)简化配置:在某些情况下,使用环回接口可以简化BGP配置。例如,在建立EBGP邻居关系时,如果直连设备使用环回接口建立连接,可以减少配置的复杂性
2、使用环回口地址建立BGP邻居配置:
【AR1】:
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#指定更新源(open报文以物理源口来发送,与环回口不同,所以要做此指定)
ip route-static 2.2.2.2 255.255.255.255 10.1.12.2
ip route-static 2.2.2.2 255.255.255.255 10.1.21.2
ip route-static 3.3.3.3 255.255.255.255 10.1.12.2
ip route-static 3.3.3.3 255.255.255.255 10.1.21.2

【AR2】:
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 200
peer 3.3.3.3 ebgp-max-hop 255
peer 3.3.3.3 connect-interface LoopBack0

ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
ip route-static 1.1.1.1 255.255.255.255 10.1.21.1
ip route-static 3.3.3.3 255.255.255.255 10.1.23.2
ip route-static 3.3.3.3 255.255.255.255 10.1.32.2
(4)display bgp peer命令查看BGP邻居的状态,可以看出AR2与AR1、AR2与AR3都已经通过loopback环回接口建立了邻居关系,如下图:
在这里插入图片描述

(5)shutdown g0/0/0后,再看bgp邻居依然存在(因为loopback口的TCP连接依然存在,所以用loopback口做bgp邻居有此优势)
在这里插入图片描述

注:使用EBGP做邻居时,需要指定更新源,并将TTL值指定为大于等于2,默认255

【AR3】
bgp 200
peer 2.2.2.2 as-number 100
peer 2.2.2.2 ebgp-max-hop 255
peer 2.2.2.2 connect-interface LoopBack0

ip route-static 1.1.1.1 255.255.255.255 10.1.23.1
ip route-static 1.1.1.1 255.255.255.255 10.1.32.1
ip route-static 2.2.2.2 255.255.255.255 10.1.23.1
ip route-static 2.2.2.2 255.255.255.255 10.1.32.1

五、验证结果

(一)BGP的报文类型:

1、配置BGP路由协议,建立BGP邻居
(1)配置BGP自治系统100,指定邻居的的ip及AR1所在的自治系统编号100
在这里插入图片描述

(2)在AR1的接口上抓包,抓包为OPEN报文,如下图:
在这里插入图片描述

2、BGP的update报文,当路由条目有变化时,会触发更新,报文内容如下:
(1)包含公认必遵属性ORIGIN属性、AS_PATH属性
在这里插入图片描述

(2)Update报文:包含公认必遵属性NEXT_HOP等,如下图
在这里插入图片描述

3、Keepalive报文:每隔60秒发送一次,通过keepaliver报文确认邻居在线与否。
在这里插入图片描述

4、Notification报文:当出现BGP故障时,通过Notification报文通知
(1)执行undo bgp 自治系统编号 命令,取消bgp配置时,y确认
在这里插入图片描述

(2)此时在AR1接口上抓包就能看到BGP路由协议的Notification报文
在这里插入图片描述

(二)在AR1上查看iBGP邻居状态正常,如下图:

在这里插入图片描述

(三)在AR3上查看EBGP邻居状态正常,如下图:

在这里插入图片描述

至此,iBGP与EBGP的初识实验结束,后续再写黑洞路由、AS_PATH属性、Local_prefrence优先级属性、MED属性、BGP路由反射器、手动路由聚合、自动路由聚合、路由控制之路由策略、策略路由traffic-policy、MPLS-VPN搭建之MP-BGP等。

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

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

相关文章

09.事件风暴

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 概念组成部分具体场景事件风暴寻找聚合 改进具体流程 参考 概念 事件风暴是Alberto Brandolini 发明的一种头脑风暴方法&#x…

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点: 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…

【C++】绘制内存管理的地图

生活是属于每个人自己的感受,不属于任何人的看法。 前言 这是我自己学习C的第二篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的类与对象础知识,没看的同学可以过去看看: 【C】面向对象编程的艺术之旅-CSDN博客https…

在 CentOS 系统上直接安装 MongoDB 4.0.25

文章目录 步骤 1:配置 MongoDB 官方源步骤 2:安装 MongoDB步骤 3:启动 MongoDB 服务步骤 4:验证安装步骤 5:可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤: 步骤 1&#x…

core 不可变类型 线程安全 record

当一个类型的对象在创建时被指定状态后,就不会再变化的对象,我们称之为不可变类型。这种类型是线程安全的,不需要进行线程同步,非常适合并行计算的数据共享。它减少了更新对象会引起各种bug的风险,更为安全。 System.D…

OceanBase Shell开放内核运维接口,运维更便捷

DBA在日常业务中面临着繁琐的运维管理任务,亟需高效的工具和灵活的解决方案帮助他们简化操作、提升效率。因此,命令行操作和维护工具(CLI工具),因其高效、灵活、可远程管理以及技术深度等特点,成为DBA和开发…

基于Amazon Bedrock:一站式多模态数据处理新体验

目录 引言 关于Amazon Bedrock 基础模型体验 1、进入环境 2、发现模型及快速体验 3、打开 Amazon Bedrock 控制台 4、通过 Playgrounds 体验模型 (1)文本生成 (2)图片生成 关于资源清理 结束语 引言 在云计算和人工智能…

go 学习网站,go例子 go demo go学习视频

1. 代码例子: Go by Example 2. b站 视频: 尚硅谷视频: 004_尚硅谷_程序的基本概念_哔哩哔哩_bilibili 3. go技术文档: fmt Go语言中文文档

Django基础配置

一.前言 前面我们说完了前端基础,现在我们开始讲后端框架了,我们今天说的是django,当然今天主要还是和大家了解一下框架和django的基础配置 二.web框架 2.1 web框架初始 在我们学习web框架的时候,我们首先得了解到web框架的本…

Hive分桶超详细!!!

1、分桶的意义 数据分区可能导致有些分区,数据过多,有些分区,数据极少。分桶是将数据集分解为若干部分(数据文件)的另一种技术。 分区和分桶其实都是对数据更细粒度的管理。当单个分区或者表中的数据越来越大,分区不能细粒度的划分数据时,我…

【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势

文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…

根据条件 控制layui的table的toolbar的按钮 显示和不显示

部分代码&#xff1a; <!-----查询条件-----> <input type"date" id"StartDate" onchange"PageList()" /> <input type"date" id"EndDate" onchange"PageList()" /><!-----表格Table-----&…

uniApp项目运行到鸿蒙手机,应用图标一直是H,应用名一直是HBuilder问题

项目运行到鸿蒙手机&#xff0c;应用图标一直是H,应用名一直是HBuilder问题 应用运行到鸿蒙手机和鸿蒙模拟器&#xff0c;应用图标一直是H,应用名一直是HBuilder&#xff0c;在自动生成的harmony-configs文件夹下也没有配置的文件&#xff0c; 这时候需要你将DevEco Studio 下…

使用element-plus el-table中使用el-image层级冲突table表格会覆盖预览的图片等问题

在日常开发项目中 使用element-plus 中表格中使用 el-image的点击图片出现图片预览 会出现以下问题 表格一行会覆盖预览的图片 鼠标滑过也会显示表格 el-image 的预览层级和表格的层级冲突导致的。 解决方法&#xff1a;有两种一种是直接使用样式穿透 第二种推荐方法 使用官网推…

vue--响应式数据

1、建一个vue应用程序&#xff08;简约&#xff09; 引入外链式 <title>第一个Vue程序</title><script src"../vue.global.js"></script> </head> {{}}插值表达式 <body><!-- {{ }} 插值表达式, 可以将 Vue 实例中定义的…

Flutter:photo_view图片预览功能

导入SDK photo_view: ^0.15.0单张图片预览&#xff0c;支持放大缩小 import package:flutter/material.dart; import package:photo_view/photo_view.dart;... ...class _MyHomePageState extends State<MyHomePage>{overrideWidget build(BuildContext context) {return…

React面试宝典

React Diff 在 React 中,diff 算法需要与虚拟 DOM 配合才能发挥出真正的威力。react 会使用 diff 算法计算出虚拟 DOM 中真正发生变化的部分&#xff0c;并且只会针对该部分进行 dom 操作&#xff0c;从而避免了对页面进行大面积的更新渲染&#xff0c;减少性能的开销。 Reac…

脚手架vue-cli,webpack模板

先安装node.js&#xff0c;它是服务器端&#xff0c;用于给页面提供服务。前端学习不需要会node.js&#xff0c;只需要学会node.js衍生出来的npm命令即可。 npm 是node.js的一个工具&#xff0c;作用是进行包管理&#xff0c;npm是node.js的包管理器。 接着安装脚手架&#xff…

二叉搜索数(二叉排序树、二叉查找树)-----详解

C系列—二叉搜索树 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 前言 一、二叉搜索树 1.1、二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&…

SPSS统计学:全距

概念 全距&#xff0c;也被称为极差&#xff0c;是统计学中衡量数据变异程度的一项指标。它代表了一组数据中最大值和最小值之间的差距&#xff0c;计算方式为最大值减去最小值。 用途 全距直观地揭示了总体内数值变化的幅度&#xff0c;或者说是标志值差异的范围&#xff0…