BGP协议

BGP协议

BGP的设计目的:正是为了在不同的自治系统之间进行路由信息的交换。互联网是由无数个自治系统相互连接组成的全球网络,每个自治系统可能运行自己的内部路由协议(如OSPF、RIP等),但在自治系统之间,需要使用BGP来交换路由信息,以实现全球范围的网络连通。

自治系统(AS):是指在单一技术管理下的一组IP网络或路由器,通常由一个互联网服务提供商(ISP)、大型企业网络或其他大型组织构成。每个自治系统都有一个唯一的自治系统编号(ASN),由互联网号码分配机构(如IANA或RIR)分配。

一、IGP 和 EGP 的区别

特性 IGP(内部网关协议) EGP(外部网关协议)
全称 Interior Gateway Protocol Exterior Gateway Protocol
适用范围 自治系统(AS)内部 自治系统(AS)之间
目的 管理和优化 AS 内部的路由 交换和管理 AS 之间的路由
协议示例 OSPF、EIGRP、RIP、IS-IS BGP(Border Gateway Protocol)
复杂性 相对简单,主要关注内部网络连接优化 相对复杂,涉及路径选择和策略
路由规模 适合较小规模的路由表 适合大规模、全球范围的路由表
收敛速度 较快,内部环境更新频繁 较慢,需考虑多种外部策略
设计目标 最短路径和快速收敛 灵活性、策略控制和稳定性

二、eBGP 和 iBGP 的区别

特性 eBGP(外部 BGP) iBGP(内部 BGP)
适用范围 不同的自治系统(AS)之间 同一个自治系统(AS)内部
对等体关系 对等体位于不同的 AS 对等体位于同一 AS
TTL 默认值 默认 TTL 为 1,需直接相连 默认 TTL > 1,允许非直接连接
路由传播 接收路由后可传递给 AS 内的其他对等体 接收路由后不会传递给同一 AS 内的其他对等体,需全互联或路由反射器
配置复杂性 较低,需要对直接相连的对等体配置 较高,需全互联或额外机制
用途 主要用于 AS 间的路由交换 主要用于 AS 内的路由传播
路径属性 在 AS_PATH 中添加自己的 AS 号 不修改 AS_PATH
实现目标 传递和管理 AS 之间的路由信息 分发 AS 内部的外部路由信息

三、配置

1、配置接口ip

1
2
3
4
5
6
R1(config)#int fa0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.252
R1(config)#int fa0/1
R1(config-if)#ip address 172.16.1.1 255.255.255.0
R1(config)#int fa1/0
R1(config-if)#ip address 172.16.2.1 255.255.255.0
1
2
3
4
R2(config)#int fa0/0
R2(config-if)#ip address 192.168.1.2 255.255.255.252
R2(config)#int fa0/1
R2(config-if)#ip address 192.168.1.5 255.255.255.252
1
2
3
4
R3(config)#int fa0/0
R3(config-if)#ip address 192.168.1.6 255.255.255.252
R3(config)#int fa0/1
R3(config-if)#ip address 192.168.1.9 255.255.255.252
1
2
3
4
R4(config)#int fa0/0
R4(config-if)#ip address 192.168.1.10 255.255.255.252
R4(config)#int fa0/1
R4(config-if)#ip address 192.168.1.13 255.255.255.252
1
2
3
4
5
6
R5(config)#int fa0/0
R5(config-if)#ip address 192.168.1.14 255.255.255.252
R5(config)#int fa0/1
R5(config-if)#ip address 10.1.1.1 255.255.255.0
R5(config)#int fa1/0
R5(config-if)#ip address 10.1.2.1 255.255.255.0

2、配置ospf协议

1
R1(config-router)#network 192.168.1.0 0.0.0.3 area 0
1
2
3
R2(config)#router ospf 10
R2(config-router)#network 192.168.1.0 0.0.0.3 area 0
R2(config-router)#network 192.168.1.4 0.0.0.3 area 0
1
2
3
R3(config)#router ospf 10
R3(config-router)#network 192.168.1.4 0.0.0.3 area 0
R3(config-router)#network 192.168.1.8 0.0.0.3 area 0
1
2
3
R4(config)#router ospf 10
R4(config-router)#network 192.168.1.8 0.0.0.3 area 0
R4(config-router)#network 192.168.1.12 0.0.0.3 area 0
1
2
R5(config)#router ospf 10
R5(config-router)#network 192.168.1.12 0.0.0.3 area 0
1
2
3
R2#show ip route ospf
192.168.1.0/30 is subnetted, 3 subnets
O 192.168.1.8 [110/20] via 192.168.1.6, 00:00:44, FastEthernet0/1
1
2
3
R4#show ip route ospf
192.168.1.0/30 is subnetted, 3 subnets
O 192.168.1.4 [110/20] via 192.168.1.9, 00:01:38, FastEthernet0/0

四、建立对等体关系

bgp中需要传递路由信息需要建立对等体关系
关系分为ibgp和ebgp

ibgp默认不进行传播信息, 只转发路由信息

ebgp的信息来自于其他的igp协议(ospf rip, isis), 需要通过network或redistribute来引入

1
2
R1(config)#router bgp 10
R1(config-router)#neighbor 192.168.1.2 remote-as 20
1
2
3
R2(config)#router bgp 20
R2(config-router)#neighbor 192.168.1.1 remote-as 10
R2(config-router)#neighbor 192.168.1.6 remote-as 20
1
2
3
R3(config)#router bgp 20
R3(config-router)#neighbor 192.168.1.5 remote-as 20
R3(config-router)#neighbor 192.168.1.10 remote-as 20
1
2
3
R4(config)#router bgp 20
R4(config-router)#neighbor 192.168.1.9 remote-as 20
R4(config-router)#neighbor 192.168.1.14 remote-as 30
1
2
R5(config)#router bgp 30
R5(config-router)#neighbor 192.168.1.13 remote-as 20

查看建立的邻居

1
2
3
4
5
6
R1#show ip bgp summary
BGP router identifier 192.168.1.1, local AS number 10
BGP table version is 1, main routing table version 1

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.1.2 4 20 2 2 0 0 0 00:00:25 0

R1和R2成功建立了ebgp

1
2
3
4
5
6
7
R2#show ip bgp summary
BGP router identifier 192.168.1.5, local AS number 20
BGP table version is 1, main routing table version 1

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.1.1 4 10 4 4 1 0 0 00:01:48 0
192.168.1.6 4 20 4 4 1 0 0 00:01:21 0

R2和R1建立了ebgp, 和R3建立了ibgp, 用于将路由传递过去

五、引入路由信息

1、使用network

R1需要把本地路由表的条目

C 172.16.1.0 is directly connected, FastEthernet0/1
C 172.16.2.0 is directly connected, FastEthernet1/0

引入bgp传递给R2(不加mask默认为有类网络)

1
2
3
R1(config)#router bgp 10
R1(config-router)#network 172.16.1.0 mask 255.255.255.0
R1(config-router)#network 172.16.2.0 mask 255.255.255.0
1
2
3
4
R2#show ip route bgp
172.16.0.0/24 is subnetted, 2 subnets
B 172.16.1.0 [20/0] via 192.168.1.1, 00:03:23
B 172.16.2.0 [20/0] via 192.168.1.1, 00:02:53
1
2
3
4
R3#show ip route bgp
172.16.0.0/24 is subnetted, 2 subnets
B 172.16.1.0 [200/0] via 192.168.1.1, 00:06:58
B 172.16.2.0 [200/0] via 192.168.1.1, 00:06:58
1
2
R4#show ip route bgp

R4上没有收到R1路由的路由信息, 受到ibgp的水平分割影响, 不会发送给其他的ibgp路由器, 所以当R3收到R2的路由信息后不会发送给R4

1
2
3
R5(config)#router bgp 30
R5(config-router)#network 10.1.1.0 mask 255.255.255.0
R5(config-router)#network 10.1.2.0 mask 255.255.255.0

把R5的路由信息引入bgp

2、使用redistribute

可以使用redistribute引入igp协议内的记录

六、解决方案

  1. 全互联ibgp邻居

    边界路由器和其他路由器建立ibgp邻居

    这样只要边界路由器接受到ebgp路由信息后会发送给所有邻居,n 个路由器需要建立 n(n-1)/2 条会话

  2. BGP 联盟

​ BGP 联盟将一个大型 AS 分成多个子 AS,子 AS 内部使用 iBGP,子 AS 之间使用 eBGP 机制传播路由, 这样可以减少全邻居数量

​ 比如把一个网络中8个路由器分为两个as, 每个as只有4台路由器, 每台只需要建立3个邻居

3.路由反射器

​ 路由反射器是 iBGP 的一种优化机制,用于解决传统 iBGP 全互联带来的扩展性问题。通过使用路由反射器,不需要所有 iBGP 路由器都互相建立邻居关系,从而简化配置并减少 BGP 会话数量。(和ospf中的dr差不多)

​ 反射规则

​ 从ebgp学到的路由发送给所有邻居

​ 从非客户端学到的路由发给所有客户端邻居

​ 从客户端学到的路由发给所有客户端和非客户端, 除发送端

​ 总结: 非客户端学到的路由不会发送给其他的非客户端(非非不传)

七、路由反射器

用于简化bgp邻居数量, 使用全互联ibgp需要建立n(n-1)/2 条会话, 使用路由反射器只需要2(n-2)+1和ospf中dr的作用差不多

1、反射规则

从ebgp学到的路由发送给所有邻居

从非客户端学到的路由发给所有客户端邻居

从客户端学到的路由发给所有客户端和非客户端, 除发送端

总结: 非客户端学到的路由不会发送给其他的非客户端(非非不传)

2、配置路由反射

1
2
3
R3(config)#router bgp 20
R3(config-router)#neighbor 192.168.1.5 route-reflector-client
R3(config-router)#neighbor 192.168.1.10 route-reflector-client
1
2
3
4
5
6
7
R4#show ip route bgp
172.16.0.0/24 is subnetted, 2 subnets
B 172.16.1.0 [200/0] via 192.168.1.1, 00:03:09
B 172.16.2.0 [200/0] via 192.168.1.1, 00:03:09
10.0.0.0/24 is subnetted, 2 subnets
B 10.1.2.0 [20/0] via 192.168.1.14, 00:00:46
B 10.1.1.0 [20/0] via 192.168.1.14, 00:01:17

可以看到R4已经有路由了

八、测试

1
2
3
4
5
6
7
8
9
PC1 : 172.16.1.2 255.255.255.0 gateway 172.16.1.1

PC1> ping 10.1.1.2

10.1.1.2 icmp_seq=1 timeout
84 bytes from 10.1.1.2 icmp_seq=2 ttl=59 time=98.185 ms
84 bytes from 10.1.1.2 icmp_seq=3 ttl=59 time=64.416 ms
84 bytes from 10.1.1.2 icmp_seq=4 ttl=59 time=96.062 ms
84 bytes from 10.1.1.2 icmp_seq=5 ttl=59 time=83.689 ms