路由协议——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<>…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
