1. BGP大型网络实验环境搭建
BGP大型网络实验的价值,不在于把几条 neighbor 命令敲通,而在于能否在一个可控、可复现、可扩展的环境里,观察路由传播、策略收敛、故障隔离与路径选择的真实行为。因此,实验环境搭建本身就是一项工程任务:目标不清,拓扑就会失控;地址与AS规划混乱,后期排障将寸步难行。本章围绕实验目标、拓扑设计原则、设备选型、IP与AS规划、基础配置与连通性验证六个环节展开,帮助读者从零建立一套可支撑后续策略实验的BGP实验底座。
一、先明确实验目标,再决定拓扑规模
实验目标决定了拓扑的“最小可用规模”。如果目标是验证IBGP全互联与路由反射器的差异,至少需要4台路由器:2台边界路由器(ASBR)加2台内部路由器,其中一台充当RR;如果目标是观察联盟(Confederation)与RR的对比,则需要6台以上,并划分子AS。若目标是模拟多宿主ISP选路,则至少需要3个AS,每个AS内部2~3台设备,并引入一条外部默认路由或明细路由作为对比项。
建议在实验开始前写下一句话目标,例如:“验证同一AS内IBGP全互联与RR两种方案下,路由反射器是否减少会话数量且保持路由可达。”目标越具体,后续拓扑、地址和验证点就越容易确定。切忌一开始就搭建十几台设备的“大网”,因为BGP的复杂性来自策略与状态,而不是设备数量。
二、拓扑设计原则:层次清晰、边界明确、可扩展
大型BGP实验拓扑应遵循三条原则。第一,按AS分层:接入层、汇聚层、核心层或边界层各自承担不同角色,避免所有路由器都直连成“蜘蛛网”。第二,边界明确:每个AS只通过明确的EBGP链路与外部交互,内部使用IBGP或RR传递路由,防止路由环路和次优路径。第三,预留扩展点:在核心位置预留一台可加入新AS或新策略的路由器,便于后续实验叠加。
一个典型的四AS实验拓扑可以这样组织:AS 65001为总部核心,包含R1、R2、R3;AS 65002为分支,包含R4、R5;AS 65003为ISP-A,包含R6;AS 65004为ISP-B,包含R7。总部与分支之间运行IBGP+RR,总部与两个ISP之间运行EBGP。这样既能观察IBGP与EBGP的交互,也能模拟多宿主选路。
三、设备选型:仿真器与真实设备的取舍
实验环境可以选择物理设备、GNS3/EVE-NG仿真器或厂商虚拟化平台(如Cisco CSR1000v、Huawei AR路由器镜像、FRRouting容器)。物理设备最接近真实转发行为,但成本高、扩展慢;仿真器灵活、可快照、可回滚,适合策略实验;FRRouting等开源实现适合验证标准BGP行为,但对厂商私有属性支持有限。
对于本课程,建议采用“仿真器+开源实现”的组合:核心拓扑用EVE-NG或GNS3承载,运行Cisco IOSv或Huawei AR镜像;若需要验证大规模路由条目,可引入FRRouting容器作为路由注入源。设备选型时重点关注三点:是否支持BGP-4及常用扩展(如MP-BGP、路由刷新、Graceful Restart)、是否支持策略工具(route-map、prefix-list、community-list)、是否支持抓包与调试(debug ip bgp、show ip bgp summary)。
四、IP与AS规划:让地址本身携带信息
IP规划应遵循“按AS分块、按链路细分、环回口统一”的原则。以AS 65001为例,可分配10.1.0.0/16作为该AS地址块,其中10.1.0.0/24用于环回口,10.1.1.0/24用于互联链路;AS 65002使用10.2.0.0/16,依此类推。互联链路统一使用/30或/31,避免浪费。环回口地址建议采用10.X.0.Y/32,其中X为AS编号,Y为路由器编号,例如R1的环回口为10.1.0.1/32,R4的环回口为10.2.0.4/32。
AS号规划同样重要。私有AS号范围为64512~65534,实验中使用65001~65004即可。若需要模拟联盟,可将一个私有AS拆分为多个子AS,例如65001拆为65011、65012、65013。AS号应写在拓扑图旁,避免后期混淆。
| 设备 | 所属AS | 环回口 | 互联接口示例 | 角色 |
|---|---|---|---|---|
| R1 | 65001 | 10.1.0.1/32 | 10.1.1.1/30 | RR |
| R2 | 65001 | 10.1.0.2/32 | 10.1.1.2/30 | IBGP客户端 |
| R3 | 65001 | 10.1.0.3/32 | 10.1.1.5/30 | ASBR |
| R4 | 65002 | 10.2.0.4/32 | 10.2.1.1/30 | ASBR |
| R5 | 65002 | 10.2.0.5/32 | 10.2.1.2/30 | IBGP |
| R6 | 65003 | 10.3.0.6/32 | 10.3.1.1/30 | ISP-A |
| R7 | 65004 | 10.4.0.7/32 | 10.4.1.1/30 | ISP-B |
五、基础配置与连通性验证
基础配置分三步:接口地址、IGP(OSPF或IS-IS)、BGP邻居。以R1与R2为例,先配置接口和环回口,再在AS 65001内运行OSPF,使10.1.0.0/24和互联链路可达。OSPF配置示例如下:
R1(config)# router ospf 1
R1(config-router)# network 10.1.0.0 0.0.255.255 area 0
R1(config-router)# network 10.1.1.0 0.0.0.3 area 0
R2(config)# router ospf 1
R2(config-router)# network 10.1.0.0 0.0.255.255 area 0
R2(config-router)# network 10.1.1.0 0.0.0.3 area 0
OSPF邻居建立后,用show ip ospf neighbor确认状态为FULL,用show ip route ospf确认环回口路由已学习。随后配置IBGP邻居,R1作为RR,R2作为客户端:
R1(config)# router bgp 65001
R1(config-router)# bgp router-id 10.1.0.1
R1(config-router)# neighbor 10.1.0.2 remote-as 65001
R1(config-router)# neighbor 10.1.0.2 update-source Loopback0
R1(config-router)# neighbor 10.1.0.2 route-reflector-client
R2(config)# router bgp 65001
R2(config-router)# bgp router-id 10.1.0.2
R2(config-router)# neighbor 10.1.0.1 remote-as 65001
R2(config-router)# neighbor 10.1.0.1 update-source Loopback0
EBGP邻居则使用直连接口地址,例如R3与R6之间:
R3(config)# router bgp 65001
R3(config-router)# neighbor 10.0.4.2 remote-as 65003
R6(config)# router bgp 65003
R6(config-router)# neighbor 10.0.4.1 remote-as 65001
验证连通性时,按“先IGP后BGP、先邻居后路由”的顺序检查。关键命令包括:show ip bgp summary查看邻居状态是否为Established、show ip bgp查看BGP表、show ip route bgp查看BGP路由是否进入路由表。若邻居卡在Active或Idle,优先检查IP可达性、update-source和remote-as是否匹配;若邻居Established但无路由,检查是否被next-hop-self、路由策略或同步规则拦截。
neighbor ebgp-multihop并确保有到达对方环回口的路由。