网络 BGP协议 TheStoneFish 2024-11-29 2025-04-21 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
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协议内的记录
六、解决方案
全互联ibgp邻居
边界路由器和其他路由器建立ibgp邻居
这样只要边界路由器接受到ebgp路由信息后会发送给所有邻居,n
个路由器需要建立 n(n-1)/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