今日目标
01 BGP通告原则
02 IBGP水平分割
03 路由反射器
04 路由反射器实验
05 环回口建立IBGP邻居
1 BGP通告原则
- BGP传递给路由时需要遵循以下原则
第一条原则:只发布最优且有效(即下一跳地址可达)路由
第二条原则:从EBGP邻居获取的路由,会发布给所有邻居
第三条原则:从IBGP邻居获取的路由,不会再发送给其他IBGP邻居(IBGP水平分割)
第四条原则:该条规则被称为BGP同步原则
2 IBGP水平分割
- AS200内部R1/R2/R3逐跳建立IBGP邻居

- 配置步骤:
R4和R1建立EBGP邻居
R3和R5建立EBGP邻居
AS200内部部署OSPF
R1和R2建立IBGP邻居
R2和R3建立IBGP邻居
在R4和R5中注入路由
配置命令
- 配置R4
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200
[R4-bgp]network 10.10.4.4 32
- 配置R1
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100
[R1-bgp]peer 192.168.12.2 as 200
[R1-bgp]peer 192.168.12.2 next-hop-local
- 配置R2
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200
[R2-bgp]peer 192.168.23.3 as 200
- 配置R3
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200
[R3-bgp]peer 192.168.23.2 next-hop-local
[R3-bgp]peer 192.168.35.5 as 300
- 配置R5
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.5 32
- 验证与测试
bash
dis ospf peer br :查看ospf邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
发现R4中没有去往10.10.5.5的路由了
发现R5中没有去往10.10.4.4的路由了为什么没有路由呢?
因为R2从R1哪里学来的路由,不会传递给R3
因为R2从R3哪里学来的路由,不会传递给R1
为什么会这样?因为IBGP水平分割
IBGP水平分割
- BGP通告原则三
从IBGP邻居学习到的BGP路由,不会再发送给其他IBGP邻居。
该条原则也被称为"IBGP水平分割"。
IBGP水平分割的作用:防止AS内部路由环路

- IBGP水平分割的不足
由于IBGP水平分割的限制,导致R2和R3之间的路由无法传递

- 如何突破IBGP水平分割的限制
IBGP全互联
路由反射器
3 路由反射器
IBGP水平分割
- IBGP水平分割
作用:用于防止AS内部产生环路
存在问题:BGP路由在AS内部无法传递
解决方案:BGP邻居全互联、路由反射器、····
IBGP全互联的不足
- 邻居数量多:一个AS内有n台设备,需建立的邻居数为n(n-1)/2
- 当设备数目很多时,设备配置十分复杂、路由维护十分复杂
- 当设备数目很多时,网络资源和设备资源的消耗都非常大
路由反射器
- 反射器角色
路由反射器:RR(Route Reflector)
客户机
非客户机

- 反射器原理
客户机只需与RR之间建立IBGP连接,不需要与其他客户机建立BGP连接,从而减少了IBGP连接数量;
RR会将学习的路由反射出去,从而使得BGP路由在AS内传播无需建立IBGP全互联,路由器反射器突破了IBGP水平分割限制;
反射规则
- 反射规则
RR从非客户机收到的路由会反射给客户机,会发布给EBGP邻居
RR从非客户机收到的路由不会反射给其他非客户机
RR从客户机收到的路由会反射给其他客户机和所有非客户机
RR从EBGP邻居收到的路由,会发布给所有的客户机、非客户机 - 反射规则一
RR从非客户机学到的路由,会发布给EBGP邻居,会反射给客户机,但是不会反射给另外一个非客户机

- 反射规则二
RR从客户机学到的路由,会发布给EBGP邻居,会反射给其他客户机和所有的非客户机

- 反射规则三
RR从EBGP邻居收到的路由,会发布给所有的客户机、非客户机

4 路由反射器实验
- 实现AS100内的10.10.4.4和AS300内的10.10.5.5互通

配置步骤
- 配置步骤
R4和R1建立EBGP邻居
R3和R5建立EBGP邻居
AS200内部配置OSPF
R1和R2建立IBGP邻居
R2和R3建立IBGP邻居
在R4和R5中注入路由
把R2配置为路由反射器,把R1配置为客户机
配置命令
- 配置R4
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200
[R4-bgp]network 10.10.4.4 32
- 配置R1
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100
[R1-bgp]peer 192.168.12.2 as 200
[R1-bgp]peer 192.168.12.2 next-hop-local
- 配置R2
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200
[R2-bgp]peer 192.168.23.3 as 200
- 配置R3
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200
[R3-bgp]peer 192.168.23.2 next-hop-local
[R3-bgp]peer 192.168.35.5 as 300
- 配置R5
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.5 32
- 在R2中配置路由反射器,把192.168.12.1做成客户机
bash
[R2]bgp 200
[R2-bgp]peer 192.168.12.1 reflect-client //指定192.168.12.1为客户机
验证与测试
- 验证与测试
bash
dis ospf peer br :查看ospf邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
dis ip routing-table :查看IP核心路由表
在R4中 ping -a 10.10.4.4 10.10.5.5
5 环回口建立IBGP邻居
BGP的稳定性
- IBGP:
一般使用环回口建立BGP邻居,从而提高稳定性
指定建立IBGP邻居的源地址为loopback地址
环回口建立IBGP邻居
- 利用环回口建立IBGP邻居,实现10.10.4.4和10.10.5.5互通

配置步骤
- 配置步骤
R4和R1建立EBGP邻居
R3和R5建立EBGP邻居
AS200内部配置OSPF,把loopback接口地址宣告进OSPF
R1和R2建立IBGP邻居,利用loopback接口
R2和R3建立IBGP邻居,利用loopback接口
在R4和R5中注入路由
把R2配置为路由反射器,把R1配置为客户机
配置命令
- 配置R4
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200
[R4-bgp]network 10.10.4.4 32
- 配置R1
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100
[R1-bgp]peer 10.10.2.2 as-number 200
[R1-bgp]peer 10.10.2.2 connect-interface LoopBack0
[R1-bgp]peer 10.10.2.2 next-hop-local
- 配置R2
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 10.10.1.1 as-number 200
[R2-bgp]peer 10.10.1.1 connect-interface LoopBack0
[R2-bgp]peer 10.10.3.3 as-number 200
[R2-bgp]peer 10.10.3.3 connect-interface LoopBack0
[R2-bgp]peer 10.10.1.1 reflect-client
- 配置R3
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.10.2.2 as-number 200
[R3-bgp]peer 10.10.2.2 connect-interface LoopBack0
[R3-bgp]peer 10.10.2.2 next-hop-local
[R3-bgp]peer 192.168.35.5 as-number 300
- 配置R5
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.5 32
- 验证与测试
bash
dis ospf peer br :查看ospf邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
dis ip routing-table :查看IP核心路由表
在R4中 ping -a 10.10.4.4 10.10.5.5
配置案例
IBGP水平分割
路由器反射器
利用环回口建立IBGP邻居
1 IBGP水平分割
1.1 问题
1.2 方案
搭建实验环境,如图所示。

1.3 步骤
实现此案例需要按照如下步骤进行。
1)配置网络设备 -- R4
- 1)R4的接口配置:
bash
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32
- 2)R4的BGP配置:
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32 //注入路由
2)配置网络设备 -- R1
- 1)R1的接口配置:
bash
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24
- 2)R1的OSPF配置:
bash
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
- 3)R1的BGP配置:
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100
[R1-bgp]peer 192.168.12.2 as 200
[R1-bgp]peer 192.168.12.2 next-hop-local
- 1)R2的接口配置:
bash
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24
- 2)R2的ospf配置:
bash
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
- 3)R2的BGP配置:
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
- 1)R3的接口配置:
bash
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24
- 2)R3的OSPF配置
bash
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
- 3)R3的BGP配置:
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200
[R3-bgp]peer 192.168.23.2 next-hop-local
[R3-bgp]peer 192.168.35.5 as 300
- 1)R5的接口配置:
bash
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32
- 2)R5的BGP配置:
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200
[R5-bgp]network 10.10.5.5 32
bash
dis ospf peer br :查看ospf 邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
bash
发现R4中没有去往10.10.5.5 的路由了
发现R5中没有去往10.10.4.4 的路由了
为什么没有路由呢?
因为R2从R1哪里学来的路由,不会传递给R3
因为R2从R3哪里学来的路由,不会传递给R1
为什么会这样? 因为IBGP水平分割
2 路由器反射器
2.1 问题
2.2 方案
搭建实验环境,如图所示。

2.3 步骤
实现此案例需要按照如下步骤进行。
1)配置网络设备 -- R4
- 1)R4的接口配置:
bash
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32
- 2)R4的BGP配置:
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32 //注入路由
2)配置网络设备 -- R1
- 1)R1的接口配置:
bash
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24
- 2)R1的OSPF配置:
bash
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
- 3)R1的BGP配置:
bash
[R1]bgp 200 //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 //和R4建立外部邻居
[R1-bgp]peer 192.168.12.2 as 200 //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local //修改下一跳
3)配置网络设备 -- R2
- 1)R2的接口配置:
bash
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24
- 2)R2的ospf配置:
bash
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
- 3)R2的BGP配置:
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
- 4)在R2中配置路由反射器,把192.168.12.1 做成客户机
bash
[R2]bgp 200
[R2-bgp]peer 192.168.12.1 reflect-client //指定192.168.12.1 为客户机
4)配置网络设备 -- R3
- 1)R3的接口配置:
bash
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24
- 2)R3的OSPF配置
bash
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
- 3)R3的BGP配置:
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200 //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 //和R5建立外部邻居
5)配置网络设备 -- R5
- 1)R5的接口配置:
bash
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32
- 2)R5的BGP配置:
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32 //注入路由
- 6)验证与测试
bash
<R4>ping -a 10.10.4.4 10.10.5.5
3 利用环回口建立IBGP邻居
3.1 问题
1)利用环回接口配置IBGP邻居
2)配置路由反射器,实现10.10.4.4 和10.10.5.5互通
3.2 方案
搭建实验环境,如图所示。

3.3 步骤
实现此案例需要按照如下步骤进行。
bash
sysname R4
#
interface GigabitEthernet0/0/0
ip address 192.168.14.4 24
#
interface LoopBack0
ip address 10.10.4.4 32
#
bgp 100
router-id 4.4.4.4
peer 192.168.14.1 as-number 200 //R4和R1建立EBGP邻居
network 10.10.4.4 32 //注入路由
sysname R1
#
interface GigabitEthernet0/0/1
ip address 192.168.14.1 24
#
interface GigabitEthernet0/0/0
ip address 192.168.12.1 24
#
interface LoopBack0
ip address 10.10.1.1 32
#
bgp 200
router-id 1.1.1.1
peer 10.10.2.2 as-number 200 //R1和R2建立IBGP邻居
peer 10.10.2.2 connect-interface LoopBack0 //使用loopback接口建立IBGP邻居
peer 10.10.2.2 next-hop-local
peer 192.168.14.4 as-number 100
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 10.10.1.1 0.0.0.0
network 192.168.12.0 0.0.0.255
sysname R2
#
interface GigabitEthernet0/0/0
ip address 192.168.12.2 24
#
interface GigabitEthernet0/0/1
ip address 192.168.23.2 24
#
interface LoopBack0
ip address 10.10.2.2 32
#
bgp 200
router-id 2.2.2.2
peer 10.10.1.1 as-number 200 //R2和R1建立IBGP邻居
peer 10.10.1.1 connect-interface LoopBack0
peer 10.10.3.3 as-number 200 //R2和R3建立IBGP邻居
peer 10.10.3.3 connect-interface LoopBack0
peer 10.10.1.1 reflect-client //指定R1为客户机
//备注:如果配置下面这条命令:
peer 10.10.3.3 reflect-client //代表指定R3为客户机
//如果没有配置这条命令: 代表,R3是我的非客户机
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 10.10.2.2 0.0.0.0
network 192.168.12.0 0.0.0.255
network 192.168.23.0 0.0.0.255
sysname R3
#
interface GigabitEthernet0/0/0
ip address 192.168.23.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.35.3 255.255.255.0
#
interface LoopBack0
ip address 10.10.3.3 32
#
bgp 200
router-id 3.3.3.3
peer 10.10.2.2 as-number 200
peer 10.10.2.2 connect-interface LoopBack0
peer 10.10.2.2 next-hop-local
peer 192.168.35.5 as-number 300 //R3和R5建立EBGP邻居
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 10.10.3.3 0.0.0.0
network 192.168.23.0 0.0.0.255
sysname R5
#
interface GigabitEthernet0/0/0
ip address 192.168.35.5 24
#
interface LoopBack0
ip address 10.10.5.5 32
#
bgp 300
router-id 5.5.5.5
peer 192.168.35.3 as-number 200 //R5和R3通过直连网段建立EBGP邻居
network 10.10.5.5 32 //注入路由
验证与测试
bash
<R4>ping -a 10.10.4.4 10.10.5.5
