路由协议——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等。
相关文章:
 
路由协议——iBGP与EBGP
一、适用场景 1、企业需要连接总部与分部,但总部与分部运行着不同的路由协议,总部到分部有自建的专线,端到端的设备支持BGP路由协议。 2、网络运营商,如电信、联通、移动等,各区域的ip路由表庞大,若要完成…...
 
【Linux】基础02
Linux编译和调试 VI编辑文件 vi : 进入文件编辑 是命令行模式 i :从光标处进入插入模式 dd : 删除光标所在行 n dd 删除指定行数 Esc : 退出插入模式 : 冒号进入末行模式 :wq : 保存退出 :q : 未修改文件可以退出 :q! …...
Elasticsearch面试内容整理-安全与权限管理
在 Elasticsearch 中,安全与权限管理至关重要,特别是当系统处理敏感数据时。Elasticsearch 提供了一套全面的安全机制来确保数据的机密性、完整性和可用性。以下是 Elasticsearch 安全与权限管理的详细介绍。 安全组件概述 Elasticsearch 的安全功能由 Elastic Stack 提供的一…...
 
【数据分享】中国汽车工业年鉴(1986-2023)
本年鉴是由工业和信息化部指导,中国汽车技术研究中心有限公司与中国汽车工业协会联合主办。《年鉴》是全面、客观记载中国汽车工业发展与改革历程的重要文献,内容涵盖汽车产业政策、标准、企业、市场以及全国各省市汽车工业发展情况,并调查汇…...
 
el-cascader 使用笔记
1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载(官网) <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…...
代替Spinnaker 的 POINTGREY工业级相机 FLIR相机 Python编程案例
SpinnakerSDK_FULL_4.0.0.116_x64 是一个用于FLIR相机的SDK,主要用于图像采集和处理。Spinnaker SDK主要提供C接口,无法直接应用在python环境。本文则基于Pycharm2019python3.7的环境下,调用opencv,EasySpin,PySpin,的库实现POINTGREY工业级相…...
 
网络篇12 | SSH2协议应用,禁SFTP子模式实现文件传输
网络篇12 | SSH2的应用 解决的业务问题协议选定SSH2(Secure Shell 2,目前基本用这个)SSH1(Secure Shell 1)Telnet 代码实现落地方案1:ganymed-ssh2maven坐标关键源代码技术效果验证连接高版本OpenSSH报错分…...
 
MetaGPT实现多动作Agent
异步编程学习链接 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 教程地址 多动作的agent的本质是react,这包括了think(考虑接下来该采取啥动作)act(采取行动) 在MetaGPT的examples/write_…...
docker更新镜像源
常用的国内 Docker 镜像加速器 1. 阿里云镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 腾讯云镜像加速器:https://cloud.tencent.com/document/product/457/33221 3. 网易云镜像加速器:https://hub-mirror…...
 
TSmaster Trace 窗口
文章目录 1、设置显示刷新率2、设置显示报文格式3、报文过滤3.1 基于报文通道3.2 基于报文 ID过滤3.3 基于过滤字符串(FilterString)过滤 4、信号的折叠与展开5、固定显示和时间顺序显示切换6、关闭窗体 1、设置显示刷新率 为了降低软件 CPU 占用率&…...
【Python模拟websocket登陆-拆包封包】
Python模拟websocket登陆-拆包封包 解析一个网站获取wss原始数据拆包wss数据封包wss数据发送接收websocket的常驻后台脚本总结 解析一个网站 这里所用的网站是我一个内测的网站,主要手段是chrome devtools,用得很多,但我玩的不深,…...
速盾:海外服务器使用CDN加速有什么好处?
随着互联网的快速发展和全球化的需求增加,海外服务器的使用已经成为许多公司和个人的首选。与此同时,为了提供更好的用户体验和更快的网页加载速度,使用CDN(内容分发网络)加速海外服务器已经成为一个普遍的选择。CDN可…...
windows系统中实现对于appium的依赖搭建
Node.js:Appium是基于Node.js的,因此需要安装Node.js。可以从Node.js官网下载并安装。 Java Development Kit (JDK):用于Android应用的自动化测试,需要安装JDK。可以从Oracle官网下载并安装。 Android SDK:进行Andro…...
使用MATLAB进行字符串处理
MATLAB是一个强大的数学和计算机科学的软件工具包。它拥有一个灵活的字符串处理工具,可以用于处理和转换不同格式的字符串,例如,数值、日期、时间等。本文将探讨如何使用MATLAB进行字符串处理,以及如何利用它来解决实际问题。 在…...
Sourcetree登录GitLab账号
1. 在GitLab上创建个人访问令牌 在gitlab中点击右上角的头像图标,选择设置进入 Access Tokens(访问令牌) 页面填写令牌名称和到期时间,指定Scopes(范围)。一般选择read_repository和api点击 Create person…...
 
Linux进阶:软件安装、网络操作、端口、进程等
软件安装 yum 和 apt 均需要root权限 CentOS系统使用: yum [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y,自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装remove 卸载search 搜索-y&…...
 
光猫、路由器、交换机之连接使用(Connection and Usage of Optical Cats, Routers, and Switches)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…...
 
2025蓝桥杯(单片机)备赛--扩展外设之超声波测距原理与应用(十一)
1 超声波测距原理 接收器接到超声波的时间差。超声波发射器想某一方向发射波,再发射时刻开始计时 超声波在空气中传播,遇到障碍物则返回,超声波接收器收到反射波,立即停止计时。 SOR4原理: 通过IO口(TRIG…...
 
分布式数据库中间件可以用在哪些场景呢
在数字化转型的浪潮中,企业面临着海量数据的存储、管理和分析挑战。华为云分布式数据库中间件(DDM)作为一款高效的数据管理解决方案,致力于帮助企业在多个场景中实现数据的高效管理和应用,提升业务效率和用户体验。九河…...
 
MyBatis-Plus分页插件IPage用法
首先就是service接口需要继承IService<entity> 然后就是业务类实现类中需要继承ServiceImpl<Mapper,entity> Mapper正常写法,继承baseMapepr<entity> IPage的使用方式 QueryWrapper<MdSaleDayPhone> queryWrappernew QueryWrapper<>…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
 
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
 
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
 
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
 
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
