BGP动态路由协议
BGP概述
- 边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
- BGP是一种运行在AS与AS之间的动态路由协议,主要作用是在AS之间自动交换无环路由信息以此来构建AS的拓扑图,从而消除路由环路并实施用户配置的路由策略。目前公网网络条目众多,IGP协议无法承载,而BGP可以轻松应对,通常BGP协议用于ISP和ISP之间或跨域地域总、分公司之间 的路由信息交换
动态路由的分类
IGP
- 自治系统内部路由协议,主要:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有协议
- IGP是运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由
EGP
- 自治系统之间的路由协议,通常:BGP
- EGP是运行在AS与AS之间的路由协议,他解决AS之间选路问题。
按协议类型分类
距离矢量路由协议
- rip1/2、BGP(路径矢量协议)、EIGRP(高级距离矢量协议)
链路状态路由协议
- OSPF、ISIS :SFP最短路径算法
BGP的特征
- 传输协议:TCP,端口号179
- BGP是外部路由协议,用来在AS之间传递路由信息
- 是一种增强的路径矢量路由协议
- 拥有可靠的路由更新机制
- 具备丰富的Metric度量方法
- 无环路协议设计
- 为路由条目附带多种属性信息
- 支持CIDR(无类别域间选路)
- 丰富的路由过滤和路由策略
- 无需周期性更新
- 路由更新时只发送增量路由
- 周期性发送KeepAlive报文以保持 TCP连通性
BGP工作原理
BGP报文
-
Open报文
OPen报文是TCP建立后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要包含BGP版本号、本地AS编号、Holdtime等信息 -
UPdate报文
Update报文用来在BGP之间更新路由信息,Updata报文可以通告多条属性相同的可达路由信息也可以撤销多条路由不可达的路由信息 -
Notification报文
报文的作用是当BGP检测到错误状态时候,立即向对等体发送NOtification报文,之后BGP就会中断只要收到Notification报文就会返回idle状态 -
Route-Refresh
用来告知对等体所支持路由的刷新能力,BGP的入口策略路由发生变化,本地的BGP路由会向对等体发送Route-Refresh报文,收到信息后,对等体将其路由信息重新发送给本地BGP路由器 -
KeepAlive
该报文在对等体之间周期的发送报文,用以保持连接的有效性并维护其连接,KeepAlive报文只有一个BGP报文头,默认KeepAlive报文发送周期为60S,保持时间180S,这个类似于OSPF中的Hello报文
BGP数据库
-
IP路由表
全局路由信息库,包括最优的IP路由信息 -
BGP路由表
BGP路由信息库,包括本地BGPSpeak通告的路由信息,将其最优的添加到路由表中 -
邻居表
对等体邻居清单表,包括对等体两端的邻居信息及邻居列表 -
Adi-RIB-In
对等体宣告给本地的Speak的未处理的路由信息库 -
Adjust-RIB-OUT
本地Speak宣告给指定的对等体路由信息库
BGP的类型
- 两种邻居:IBGP和EBGP
- IBGP
同一个AS内部BGP邻居关系,IBGP邻居是指运行BGP协议的对等体两端在同一个AS域内,属于BGP AS内部 - EBGP
AS之间的BGP邻居关系,EBGP通常指运行BGP协议的对等体两端在不同AS内部
BGP协议实验
实验环境
eNSP软件
4台路由器(R1,R2,R3,R5)
R1,R2,R5处于OSPF的area 0,也处于AS100中
R3处于AS200中
BGP配置思路
1、启用BGP,后面跟AS系统号
2、宣告Route-id,建立邻居关系用
3、宣告和谁建立邻居关系,
4、通告BGP路由,(network、import)
实验拓扑图
- 命令展示
##建立邻居关系'
[R1]router-id 1.1.1.1 ##宣告router-id
[R1]bgp 100 ##启动bgp
[R1-bgp]peer 2.2.2.2 as-number 100 ##建立邻居关系第一步,宣告要建立的as区域
[R1-bgp]peer 2.2.2.2 connect-interface loo 0 ##建立邻居关系第二步,使用loo 0地址建立 邻居关系
[R1-bgp]network 1.1.1.1 32 ##宣告网段
##查看命令
[R1] display bgp peer ##查看BGP邻居
[R1] display routing-table ##查看BGP路由表
[R1-bgp] import-route ospf 1 ##注入ospf/ISIS中的路由
##只有建立邻居关系,注入的路由信息才能被邻居学习到
- 以下都是配置完成后的配置信息
R1配置信息
#
interface GigabitEthernet0/0/0 ##配置物理接口地址
ip address 12.0.0.1 255.255.255.252
#
interface GigabitEthernet0/0/2 ##配置物理接口地址
ip address 14.0.0.1 255.255.255.252
#
interface LoopBack0 ##配置逻辑环回接口地址
ip address 1.1.1.1 255.255.255.255
#
bgp 100 ##启动bgp,100为进程号
router-id 1.1.1.1 ##宣告router id
peer 2.2.2.2 as-number 100 ##和router id 为2.2.2.2且as区域为100的路由建立邻居关系的第一步,指定对方
peer 2.2.2.2 connect-interface LoopBack0 ##和router id 为2.2.2.2的路由建立邻居关系的第二步,用loo 0接口连接对方
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
#
ospf 1 ##启动ospf进程为1
area 0.0.0.0 ##宣告ospf区域
network 1.1.1.1 0.0.0.0 ##以下都为宣告网段
network 12.0.0.0 0.0.0.3
network 14.0.0.0 0.0.0.3
R4配置信息
#
interface GigabitEthernet0/0/2
ip address 14.0.0.2 255.255.255.252
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
interface LoopBack1
ip address 202.0.0.1 255.255.255.0
#
interface LoopBack2
ip address 202.0.1.1 255.255.255.0
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#
ospf 1
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 14.0.0.0 0.0.0.3
network 202.0.0.0 0.0.0.255
network 202.0.1.0 0.0.0.255
R2配置信息
#
interface GigabitEthernet0/0/0
ip address 12.0.0.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 23.0.0.1 255.255.255.252
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 100
router-id 2.2.2.2
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 2 ##和bgp200建立邻居关系属于跨区域建立要加这条命令
peer 3.3.3.3 connect-interface LoopBack0
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
#
ospf 1
import-route rip 1 ##在OSPF中注入RIP学习到的路由,让R1,R4也能学习到R3路由表
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 12.0.0.0 0.0.0.3
network 23.0.0.0 0.0.0.3
#
rip 1
version 2
network 2.0.0.0
network 23.0.0.0
import-route ospf 1 ##在RIP中注入OSPF学习到的路由,R3就能学习到R1、R4路由表
如果只有一个物理接口,R2跟R3建立连接关系,也可以直接用这条命令(如果有多条物理接口连着R3,用rip可以防止一个物理接口断了他还可以通过其他的物理接口找到R3继续保持连接状态)
R3配置信息
#
interface GigabitEthernet0/0/1
ip address 23.0.0.2 255.255.255.252
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
bgp 200 ##启动bgp,200为进程号
router-id 3.3.3.3
peer 2.2.2.2 as-number 100
peer 2.2.2.2 ebgp-max-hop 2 ##和bgp100建立邻居关系属于跨区域建立要加这条命令
peer 2.2.2.2 connect-interface LoopBack0
#
rip 1
version 2
network 3.0.0.0
network 23.0.0.0
此时我们使用dis ip routing-table即可发现已经相互学习到了所有的路由条目
实验验证
- 成功全网互通,用相同方法测试其他几台路由器即可
实验总结
- 跨自治域建立邻居关系需要使用物理地址,否则学习不到对方的路由条目
- 跨自治域建立邻居关系的两个路由器,想要学习对方区域的所有路由条目,需要对方将ospf或者IS-IS的路由条目注入进来
- 跨自治域建立邻居关系如果要使用虚拟回环地址,需要添加静态路由,并指向下一条为两跳
如果有错误的地方,欢迎评论,我加以改正。