HCIP回顾— BGP经典实验详解
实验组网
实验目的
1.1.1.1/32(A企业)通过EBGP,IBGP(ISP)实现与5.5.5.5/32(B企业)的通信。
基础接口配置省略
路由器接口地址为10.0.xx.x/24,loopback0地址为x.x.x.x/32。如R1与R2的接口地址分别为10.0.12.1/24,10.0.12.2/24;loopback0地址分别为1.1.1.1/32,2.2.2.2/32。
R1和R2之间建立EBGP邻居(EBGP使用直连口,防止多跳)
R1配置:
bgp 100
router-id 1.1.1.1
peer 10.0.12.2 as-number 200
R2配置:
bgp 200
router-id 2.2.2.2
peer 10.0.12.1 as-number 100
可以看到此时,R1与R2已建立EBGP关系,但是无法通信(如下)。
需要手动传路由。
用bgp的network宣告路由,或者用路由注入加路由过滤,本实验用前者。
R1:
bgp 100
network 1.1.1.1 32
network 10.0.12.0 24
在R2查看BGP路由表:
*=有效;>=最优,但可以看到第二条路由无效。
继续查看IP路由表:
发现在IP路由表的直连路由中也有10.0.12.0/24路由信息,说明在BGP宣告之前,直连路由已存在,所以就在BGP路由中无效。
此时检查连通性:
R1pingR2不通,但R2pingR1通,这是为什么呢?
因为ping到出接口默认情况下为出接口的物理地址。
可以看到带了源地址2.2.2.2后,R2也同样不能ping通,所以需要在R2上宣告BGP本地网段。
R2:
bgp 200
net 2.2.2.2 32
此时可以互通。
R2与R4建立IBGP(IBGP使用逻辑口,防止链路单点故障)
为什么不R2,R3,R4同时建立BGP邻居关系呢?
因为为了防环,IBGP有水平分割原则:即从一个IBGP邻居收到的路由不能传给其他IBGP邻居。
BGP建立邻居的前提:路由可达。所以需要让R2与R4互通,此实验用OSPF,配置过程省略,查看OSPF邻居表。
测试R2与R4连通性
开始IBGP配置
R2:
bgp 200
peer 4.4.4.4 as 200
peer 4.4.4.4 connect-interface lo0
R4:
bgp 200
peer 2.2.2.2 as 200
peer 2.2.2.2 con lo0
成功建立:
但出现了下一条不可达,成为了无效路由,设置发送口的下一条为本地。
R2:
bgp 200
peer 4.4.4.4 next-hop-local
R4:
bgp 200
peer 2.2.2.2 next-hop-local
此时变成了有效路由,但下一条还是出现了路由迭代。
查看转发表(FIB表),发现迭代以后的下一跳正常了。
R4与R5之间启EBGP邻居(此处使用逻辑接口,模拟多跳)
用静态让路由可达,然后配置:
R4:
int lo1
ip add 44.4.4.4 32
q
bgp 200
pee 55.5.5.5 as 300
pee 55.5.5.5 con lo1
R5:
int lo1
ip add 55.5.5.5 32
pee 44.4.4.4 as 200
pee 44.4.4.4 con lo1
查看BGP邻居
无法启邻居,因为默认一跳,环回口需要两跳。
R4:pee 55.5.5.5 ebgp-max-hop 3
R5:pee 44.4.4.4 ebgp-max-hop 3
此时邻居起来了。
R5:network 5.5.5.5 32,宣告自己的路由。
R2:pee 4.4.4.4 next-hop-local
R4:pee 2.2.2.2 next-hop-local
此时产生了路由黑洞,R3没有1.1.1.1,5.5.5.5的路由。
R3是转发路由,R2,R4是控制层面。
解决黑洞路由的最优方法:MPLS
其他方法:
1)路由注入,会引起路由崩溃。
2)IBGP全互通,太麻烦,(不做演示,无效路由注意下一跳)。
3)MPLS,后续会讲到。
配置如下:
mpls lsr—id x.x.x.x
mpls
mpls ldp
q
int gx/x/x
mpls
mpls ldp
q
route recursive-lookup tunnel
添加并宣告路由后还是可以ping通