高端路由协议BGP,理解到爆炸
一.BGP概述
1.什么是BGP
- BGP,Border Gateway Protocol,边界网关协议。
- 运行在AS与AS之间的动态路由协议。
- 主要作用是在AS之间自动交换无环路由信息,消除路由环路。
- 以此构建AS拓扑图,可以实施用户配置的路由策略
2.自治系统——AS
自治系统AS是有一个技术管理机构管理,使用统一选路策略的一组路由器集合。
自治系统编号范围:1——65535 ,其中1——64511 是互联网上注册公有AS号,类似于公网IP
申请AS编号地址:http://www.iana.org/
3.BGP特征
- 传输协议使用TCP协议,端口号为179
- BGP是动态外部路由协议,用来在AS之间传递路由信息
- 是一种增强的路径矢量路由协议
- 拥有可靠的路由更新机制
- 具备丰富的Metric度量方法
- 无环路协议设计
- 为路由条目附带多种属性信息
- 支持CIDR(无类别域间选路)
- 丰富的路由过滤和路由策略
- 无需周期性更新
- 路由更新时只发送增量路由
- 周期性发送KeepAlive 报文以保持TCP连接畅通
4.动态路由分类
(1)按照自治系统分类
IGP:自治系统内部路由协议,主要有:RIP,OSPF,ISIS,EIGRP(思科私有)
IGP是运行在AS内部的路由协议,主要哦解决AS内部的选路问题,发现和计算路由
EGP:自治系统之间的路由协议,BGP
EGP是运行在AS与AS之间的路由协议,它解决AS之间的选路问题
(2)按照协议类型分类
距离矢量路由协议:RIP,BGP(路径矢量),EIGRP(高级路径矢量)
链路状态路由协议:OSPF,ISIS ###使用最短路径树算法SPF
二.BGP的工作原理
1.BGP报文
- Open报文:TCP建立后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要包含BGP版本号,本地AS编号,Holdtime等信息
- Update报文:用来在BGP之间更新路由信息。可以通告多条属性相同的可达路由信息
- Notification 报文:当BGP检测到错误状态时,立即向对等体发送该报文,之后BGP就会中断。只要收到Notification报文就会返回idle状态
- Route-refresh :用来告知对等体所支持的路由的刷新能力,BGP的入口策略路由发生变化,本地的BGP路由会向对等体发送Router-Refresh报文。收到信息后,对等体将其路由信息发给本地BGP路由器
- KeepAlive:在对等体之间周期发送的报文,用以保持连接的有效性并维护其连接,KeepAlive报文只有一个BGP报文头,默认KeepAlive报文发送周期为60s,保持时间为180s。
OPEN报文
UPDATE报文
KEEPALIVE报文
2.BGP状态机
BGP对等体的建立过程中存在6种状态机,
空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。
在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established。

3.BGP的数据库
- IP路由表(IP-RIB):全局路由信息库,包括最优的IP路由信息
- BGP路由表(Loc-RIB):BGP路由信息库,包括本地BGPDpeak通告的路由信息,将其最优的添加到路由表中
- 邻居表:对等体邻居信息库,包括对等体两端的邻居信息及信息库
- ADi-RIB-In:对等体宣告给本地Speak的未处理的路由信息库。
- ADjust-RIB-OUT:本地Speak宣告给指定的对等体的信息库
注:路由器通过ADi-RIB-In跟新路由信息。
本地路由信息跟新数据写入ADjust-RIB-OUT
4.BGP邻居类型
- IBGP邻居:自治系统AS内部的BGP邻居关系,IBGP邻居是指运行BGP协议的对等体两端在一个AS域内,属于BGP AS内部
- EBGP邻居:AS之间的BGP邻居关系,EBGP通常指运行BGP的对等体两端在不同AS内部
三.配置BGP
1.配置思路
- 启用BGP,后面跟本机AS系统号
- 宣告Router-id,建立邻居关系用
- 宣告和谁建立邻居关系
- 通告BGP路由(可以使用Network方式逐条引入,也可以使用import 按照协议类型引入)
2.实验拓扑:
- R1 , R2, R5 先使用ospf 建立连接
- R1,R2,R5 三个路由器,配置bgp时需要互相建立对等体关系
- R1,R2,R5为 IBGP。R3与R2为EBGP 。
- R3与R2使用静态路由建立连接
- 使用回环口配置EBGP时,跳数是两跳。ebgp-max-hop 2
配置R1
1 [R1]router id 1.1.1.1 ###配置router id (全局) 2 [R1]ospf 1 3 [R1-ospf-1]area 0 4 [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 5 [R1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3 6 [R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.3 ###配置ospf ,宣告网络 7 8 [R1]bgp 100 ###进入编号100的AS域(本地) 9 [R1-bgp]peer 2.2.2.2 as-number 100 ###和AS编号100的域里 router id 为2.2.2.2 的路由建立对等体关系 10 [R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用本机的回环地址loopback 0 接口 和对方建立关系(用虚拟接口建立,不会物理断开) 11 [R1-bgp]peer 5.5.5.5 as-number 100 ###和AS编号100的域里 router id 为5.5.5.5 的路由建立对等体关系 12 [R1-bgp]peer 5.5.5.5 connect-interface LoopBack 0 ###用本机的回环地址loopback 0 接口 和对方建立关系
配置 R2
1 [R2]router id 2.2.2.2 ###全局 router id 2.2.2.2[R20ospf-1] area 0[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0 2 [R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.3 ###配置OSPF,宣告网络(23.0.0.1/30 不用宣告,这是EBGP) 4 [R2]ip route-static 3.3.3.3 32 23.0.0.2 ###配置静态路由到达R3的回环口,将R2和R3连接,建立控制层数据流量通道 6 [R2]bgp 100 ###进入编号为100 的AS域(本地) 7 [R2-bgp]peer 1.1.1.1 as-number 100 ###和 100 域里的 router id 为 1.1.1.1 的路由建立对等体关系 8 [R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0 ###用本地的回环口 loopback 0 和对方建立关系 10 [R2-bgp]peer 5.5.5.5 as-number 100 11 [R2-bgp]peer 5.5.5.5 connect-interface LoopBack 0 13 [R2-bgp]peer 3.3.3.3 as-number 200 ###3.3.3.3 和 本机属于两个域。和 域 200里的router ID为 3.3.3.3的路由建立对等体关系[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ###使用loopback 0 接口建立关系 14 [R2-bgp]peer 3.3.3.3 ebgp-max-hop 2 ###设置bgp的 dbpg-max-hop属性,下一跳步数为2 (从3.3.3.3 到2.2.2.2 需要2 跳) 15 [R2-bgp]network 23.0.0.0 30
16 [R2-bgp]import-route static
配置R3
1 [R3]router id 3.3.3.3 ###配置全局router id [R3]ip route-static 2.2.2.2 32 23.0.0.1 ###R3配置到达R2的2.2.2.2 的静态路由 2 [R3]bgp 200 ###进入AS域 200 3 [R3-bgp]peer 2.2.2.2 as-number 100 ###和100域里router id 为2.2.2.2 的路由器建立对等体关系 4 [R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用回环口 loopback0 建立关系 5 [R3-bgp]peer 2.2.2.2 ebgp-max-hop 2 ###设置下一跳属性为2
配置R5
1 [R5]router id 5.5.5.5 ###设置全局router id 5.5.5.5 2 [R5]ospf 1 3 [R5-ospf-1]area 0 4 [R5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0 5 [R5-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3 6 [R5-ospf-1-area-0.0.0.0]network 202.0.0.0 0.0.0.255 ###配置OSPF,及宣告网路。(将业务网段202.0.0.0/24 宣告在ospf中,是为了等会使用import 注入) 7 8 [R5]bgp 100 ###进入域100 (本地) 9 [R5-bgp]peer 1.1.1.1 as-number 100 ###和100 域里 router id 为 1.1.1.1 的路由建立对等体关系 10 [R5-bgp]peer 1.1.1.1 connect-interface LoopBack 0 ### 用回环口loopback 0 建立关系 11 [R5-bgp]peer 2.2.2.2 as-number 100 ###和 200 域里 router id 为2.2.2.2 的路由建立对等体关系 12 [R5-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用回环口loopback 0 建立关系 13 14 [R5-bgp]network 202.0.1.0 24 ###宣告业务网段 16 17 [R5-bgp]import-route ospf 1 ###将ospf 1 的网段注入###bgp宣告网段,可以是精确指定,network 宣告。这种宣告优先级最高。 也可以是import 注入,注入各种协议,如ospf,rip,直连,静态 等等
ping测试
希望和悲伤,都是一缕光。总有一天,我们会再相遇。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」