BGP的基本配置
我们注意到在 10.1.3.3/32 这条路由的前面没有“*>”,说明这条路由是无效且不优的,无效不优的路由不会传给其他路由器,同时本路由也不会装载进全局IP 路由表里。关于IP 地址,如无特殊说明,都是以如下方式规划:1.每个路由器都有一个loopback0 接口,IP 地址是 10.1.x.x/32,x是路由器的号码2.路由器相连的接口IP 和路由器的号码相关,比如 AR1与 AR2 相连链路
1.BGP的基本配置
(1)实验1.1 建立基本的BGP邻居关系
关于IP 地址,如无特殊说明,都是以如下方式规划:1.每个路由器都有一个loopback0 接口,IP 地址是 10.1.x.x/32,x是路由器的号码2.路由器相连的接口IP 和路由器的号码相关,比如 AR1与 AR2 相连链路的接口 IP 分别为10.1.12.1/24和 10.1.12.2/24。
【1】实验目的
熟练掌握:
- BGP的基本配置
- 启动BGP路由进程
- IBGP邻居配置
- EBGP邻居配置
- BGP路由更新源配置
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
如图所示,本实验在R1和R2之间配置IBGP邻居关系,在R2和R3配置EBGP邻居关系。
一般情况下,为了让IBGP 邻居关系更稳定,我们都会用环回口来建邻居。所以,基础配置是先确保底层可达(IGP建立),也就是让AR1、AR2的环回口可达,本实验 IGP 协议采用 OSPF。
a.配置 IP 地址,配置 OSPF 协议。
在AR1上:
在AR2上:
b.配置AR1与AR2之间的IBGP邻居关系
在AR1上:
在AR2上:
c.配置AR2与AR3之间的EBGP邻居关系
AS之间一般不会运行IGP协议,所以EBGP邻居我们一般都是有直连的地址来建立。
在AR2上:
在AR3上:
d.在R2查看邻居关系状态
(2)实验 1.2 路由信息的通告
【1】实验目的
熟练掌握产生BGP路由的两种方法
Network方式
引入路由方式
解决下一跳不可达的情况
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
注意,此实验是在实验1.1的基础之上完成的
a.在R3上用network宣告的方式产生一条BGP路由
b.在R1上用引入的方式产生BGP的路由
c.在R2查看bgp路由
d.解决下一跳不可达情况
再去R1上查看一下BGP表:
我们注意到在 10.1.3.3/32 这条路由的前面没有“*>”,说明这条路由是无效且不优的,无效不优的路由不会传给其他路由器,同时本路由也不会装载进全局IP 路由表里。无效不优的原因是因为下一跳不可达,造成这下一跳不可达的原因是因为 IBGP 邻居在传路由的时候不会改变路由的下一跳属性。所以在IBGP的邻居关系中,我们常常都会用下现的命令来让下一跳是可达的:
在AR2上:
- 配置下一跳本地,即对从EBGP邻居传入的路由,在将EBGP学习到的路由通告给IBGP邻居时,修改下一跳地址为本地connect interface。
再去AR1上查看:
以上表示这条路由变优化了,因为下一跳变为可达了,就是R1能去R3了。
(3)实验 1.3 理解同步及解决路由黑洞
【1】实验目的
理解同步及路由黑洞的概念
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 如图所示,AR1,AR2,R3 之间运行 ospf,让 AR1 与 AR3 的环回口可达。
- 在 AR1 与 AR3 之间起 IBGP 的邻居关系。有环回口建立 IBGP 的邻居关系。
- 在 AR3 与 AR4 之间起 EBGP 邻居关系,用直连接口建立邻居。
a.先配好 IP 地址:
在AR1上:
在AR2上:
在AR3上:
b.在AR1与AR3之间配置IBGP的邻居关系
在AR1上:
在AR3上:
c.配置AR3和AR4的EBGP邻居关系
d.接下来在AR1上产生一条BGP路由
在AR1上:
我们去AR3上分别查看BGP表和路由表:
我们发现R3正常的学习到了这条路由
再去AR4上查看BGP表项:
以上表示AR3也把这条AR1传给他的IBGP路由条目传给了AR4。
现在去ping通测试:
我们发现并不能通,原因也很简单,是因为在AR2上并没有100.1.1.1/32这条路由。
在AR2上查看路由表:
- 这就是路由黑洞产生了。我们通过 BGP 学习到了路由,但是中间的路由器却并一定有这条路由。在最初的时候我们用同步的方式来防止这种事情的发生,但是在华为的路由器中默认关闭同步并且无法打开,同步指的是 BGP学习到的路由在IGP也存在,意为同步。关于同步。
- 所以只要上面这种组网方式,无论如何都会产生路由黑洞,所以在这种情况下解决黑洞的方法是在 AR2 上配置 BGP 协议,让 AR2 通过 BGP 学习到此路由。但是由于IBGP 邻居的水平分割问题。(IBGP 水平分割指的是从一个IBGP邻居学到的路由不会传给别一个IBGP邻居,在本实中上是指 AR2 从 AR1 学到的 BGP路由不会传给 AR3)就要求我们运行一个全互联的 BGP邻居关系。但是这样又会带来一个 BGP的连接过多的问题,所以后面我们会学到用路由反射器和联邦的方法解决。而更好的解决方法是 MPLS。
这里,我们先运行全全互联的 BGP 邻居关系:
e.在 R2 上起一个环回口,用环回口的方式来建立邻居关系
再分别去AR1和AR3上添加与AR2的邻居:
再去测试
f.在AR2上查看BGP表
再去AR3上ping通测试:
如果AR4也想要ping通的话,需要AR1上有回到AR4的路由,需要在AR4上通告这条路由出去
如下:
g.R4 ping R1 环回口100
(4)实验 1.4 用 group 的方法建立邻居关系
【1】实验目的
让AR1,AR2,AR3分别建立IBGP的邻居关系
用group的方法简化配置,降低BGP的资源占用。
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.先配置底层IGP协议,让环回口可达
在AR1上:
在AR2上:
在AR3上:
b.开始配置BGP
在AR1上:
在AR2上:
在AR3上:
- 注意:当我们用了peer-group的方式去建立邻居关系后,我们就不能针对其中的某个邻居去做一个出方向的策略,只能针对这个组去做相同的策略。
(5)实验 1.5 BGP 的自动汇总
【1】实验目的
理解BGP的自动汇总
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.先配置AR1与AR2之间的IGP协议,确保AR1与AR2的环回口可达。
这里不再演示。
b.配置AR1与AR2的IBGP邻居关系,AR2与AR3的EBGP邻居关系。
在AR1上:
在AR2上:
在AR3上:
c.打开BGP的自动汇总,再用宣告的方式在AR3上产生3条BGP路由。
- 注意这个弹出信息,自动汇总只对通过import-route 引入的路由生效,接下来我们通过network试试看看效果
d.去AR2上查看BGP表
- 我们发现这三条路由并没有被汇总。也就是说BGP的汇总对我们通过network宣告进来的路由并不会汇总。而且华为设备即使打开自动汇总,也不能实现直接宣告主类。
e.去AR3上做主类的宣告
- 无法宣告主类,提示主类路由不存在,所以在华为VRP中BGP即使在自动汇总开启的情况下,都无法进行主类宣告。
f.在AR3上去做import-route方式
g.在AR3查看BGP表
h.再去AR2上查看路由表
- 上面的现象告诉我们,当我们引入进BGP的路由条目是会被自动汇总的。
(6)实验 1.6 BGP 手动汇总(地址聚合)
【1】实验目的
- 掌握 BGP 的手动汇总及各种特性地址
- 聚合中参数“as-set”的含义
- 地址聚合中参数“detail-suppressed”的含义
- 地址聚合中参数“suppress-policy”的含义
- 地址聚合中参数“origin-policy”的含义
- 地址聚合中参数“attribute-policy”的含义
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.在实验1.5的基础上关闭所有BGP的自动汇总
b.此时在AR1、AR2、AR3都可以看到以下三条路由
- 我们可以去任何一个路由器做BGP的地址汇总,不一定非要在起源路由器上做。
c.这里我们选择在AR2上来做汇总
- 以上命令便是在AR2上用地址聚合的方法产生一条新的路由
去AR2查看BGP表:
d.我们去AR1上查看BGP表
- 我们发现,AR1 不仅收到了 AR2 新产生的那条汇总路由,同时也依然学到了以前的明细路由如果我们想让在汇总后能抑制明细,就必须加上关键字:detail-suppressed,此关键字的意思是抑制所有包含在内的明细路由。
e.在AR2上配置detail-suppressed
再去AR1上看BGP表:
- 发现只能看到一条明细路由了。
- 接下来就有点麻烦了,请慢慢理解。有的时候,我们想让某条明细路由传出去,某些路由被抑制,这也是可以实现的。这就要用到另一个关键字:suppress-policy,此关键字的意思是选择性的抑制某些路由,比如在此实验中,我们想让 100.1.3.1/32这条路由依然被 AR1 学到,另外两条被抑制。
f.首先用 route-policy 匹配上我们想抑制的路由
在AR2上:
然后到BGP里用关键字suppress-policy调用这条route-policy
g.在AR1上查看BGP路由表:
- 可以看到实现了需求,100.1.3.1没有被抑制,其他的则被抑制了。
h.在AR3上查看一下BGP路由表
- 以上表示:我们看到一个不好的现象,AR2上汇总的路由竟然又传回了这几条明细的起源地 AR3。这是因为汇总后的路由会丢失明细的一些属性。如果我们想让汇总后的路由依然保留明细的属性就必须加上关键字:as-set。
i.在AR2上配置as-set
加上以后再去AR3上看现象:
- 以上便是我们发现AR3没有收到这条汇总路由了,再去AR1上查看还在不在。
在AR1上:
- 以上表示这条汇总依然收到,并且可以发现后面带上了200 的 AS-Path,这在开始是没有的是因为我们在 AR2 上加上 as-set这个关键字后把明细的属性值带了下来。这也是 AR3 不再收这条路由的原因--从 EBGP 邻居收到一条路由带有本 AS-Path,将不再收(EBGP 防环原则)。
- 接下来的部分更难理解,需要更多耐心。origin-policy--起源策略,指的是当route-policy 里匹配的路由(注意,此路由必须是被包含在汇总路由里的明细路由)在 BGP 表存在时,汇总路由才能生成: 如果使用 as-set参数,汇总路由只继承 route-policy 里面匹配路由的属性
- 按照上面的理论介绍,来设计本实验为:用origin-policy去匹配100.1.1.1/32这条路由,当这条路由存在的时候,就会产生汇总的路由。然后去 AR3上去掉此条路由,那么汇总就会消失。
j.先 undo 掉刚才的配置,完成origin-policy实验
在AR2上:
k.再写前缀列表去匹配100.1.1.1这条路由
用route-policy去调用:
再到汇总命令里面去调用这条route-policy:
l.去查看AR2的BGP表项
- 以上表示汇总已经成功,产生了汇总的路由。
m.去AR3上取消通告100.1.1.1/32这条路由
n.再去AR2上查看BGP路由表
- 以上表示实验结果和预想的一样,明细和汇总都一起消失了。
(7)实验1.7 产生默认路由
【1】实验目的
理解掌握几种在BGP里产生默认路由的方法。
【2】IP地址规划
- 互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
- 每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
这个实验在实验1.1的基础之上
a.先查看BGP邻居关系
然后我们在AR1上去产生一条默认路由
b.用import-route路由的方法产生一条默认路由
在AR1上:
- 注意这里一个非常重要的点,必须配置default-route imported下发这条默认路由,不然路由表就会啥也没有。
c.查看AR2的BGP表项
这时候可以发现AR2已经学到了AR1下发的默认路由。
d.我们可以用network的方法产生一条默认路由
首先undo掉刚才的配置:
接下来依然是写一条默认静态路由,这里我们用一个下一跳的方式:
然后在BGP宣告这条路由:
f.查看AR2的BGP表项
这时候可以发现AR2已经学到了AR1下发的默认路由。
g.还有一种最简单的方式,一条命令
h.查看AR2的BGP表项
这时候可以发现AR2已经学到了AR1下发的默认路由。
更多推荐
所有评论(0)