简介:BGP的防环机制是基于AS_PATH来实现的,但是在一个AS的内部,AS_PATH是一样的,于是就有了水平分割原则。但是,水平分割原则又要求一个AS内部的路由器需要两两建立邻居关系,这使得路由器的负担非常大,于是,可以采用路由反射器或者AS联邦来解决这一问题。
实验拓扑:
实验要求:如图一共有3个AS,通过路由反射器或者AS联邦使所有路由器可以学习到R1上的路由。
实验步骤:
首先进行基本配置
R1#conf t
R1(config)#int l0
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#int s0/0
R1(config-if)#ip add 10.1.12.1 255.255.255.0
R2#conf t
R2(config)#int s0/1
R2(config-if)#ip add 10.1.12.2 255.255.255.0
R2(config-if)#int s0/0
R2(config-if)#ip add 10.1.23.2 255.255.255.0
R2(config-if)#int l0
R2(config-if)#ip add 2.2.2.2 255.255.255.255
R3#conf t
R3(config)#int l0
R3(config-if)#ip add 3.3.3.3 255.255.255.255
R3(config-if)#int s0/1
R3(config-if)#ip add 10.1.23.3 255.255.255.0
R3(config-if)#int s0/0
R3(config-if)#ip add 10.1.34.3 255.255.255.0
R4#conf t
R4(config)#int s0/1
R4(config-if)#ip add 10.1.34.4 255.255.255.0
R4(config-if)#int s0/0
R4(config-if)#ip add 10.1.45.4 255.255.255.0
R4(config-if)#int l0
R4(config-if)#ip add 4.4.4.4 255.255.255.255
R5#conf t
R5(config)#int l0
R5(config-if)#ip add 5.5.5.5 255.255.255.255
R5(config)#int s0/1
R5(config-if)#ip add 10.1.45.5 255.255.255.0
2.在R2,R3,R4上运行ospf
R2(config)#router os 1
R2(config-router)#network 2.2.2.2 0.0.0.0 a 0
R2(config-router)#network 10.1.23.2 0.0.0.0 a 0
R3(config)#router ospf 1
R3(config-router)#network 3.3.3.3 0.0.0.0 a 0
R3(config-router)#network 10.1.23.3 0.0.0.0 a 0
R3(config-router)#network 10.1.34.3 0.0.0.0 a 0
R4(config)#router ospf 1
R4(config-router)#network 4.4.4.4 0.0.0.0 a 0
R4(config-router)#network 10.1.34.4 0.0.0.0 a 0
3.建立bgp邻居关系
R1(config)#router bgp 100
R1(config-router)#neighbor 10.1.12.2 remote-as 345 //指定自己的邻居
R2(config)#router bgp 345
R2(config-router)#neighbor 3.3.3.3 remote-as 345
R2(config-router)#neighbor 3.3.3.3 up l0 //以自己的环回口建立邻居关系
R2(config-router)#neighbor 10.1.12.1 remote-as 100
R3(config)#router bgp 345
R3(config-router)#neighbor 2.2.2.2 remote-as 345
R3(config-router)#neighbor 2.2.2.2 up l0
R3(config-router)#neighbor 4.4.4.4 remote-as 345
R3(config-router)#neighbor 4.4.4.4 up l0
R4(config)#router bgp 345
R4(config-router)#neighbor 3.3.3.3 remote-as 345
R4(config-router)#neighbor 3.3.3.3 up l0
R4(config-router)#neighbor 10.1.45.5 remote-as 200
这时候,在R1上新发布一条路由11.1.1.1,观察其他路由的bgp路由表变化
R1(config)#int l1
R1(config-if)#ip add 11.1.1.1 255.255.255.255
R1(config-if)#ex
R1(config)#router bgp 100
R1(config-router)#network 11.1.1.1 mask 255.255.255.255 //bgp宣告路由网段
R2的情况:
R2#show ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 11.1.1.1/32 10.1.12.1 0 0 100 i
已经学习到,并且是best路由,会将此路由放入路由表
R3:
R3#show ip bgp
BGP table version is 1, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* i11.1.1.1/32 10.1.12.1 0 100 0 100 i
虽然学习到了此路由,但是不是最优路由,为什么?
因为next hop是10.1.12.1,不可达
解决方法:在R2上将next hop指定为自己
R2(config)#router bgp 345
R2(config-router)#neighbor 3.3.3.3 next-hop-self //指定next-hop为自身
这时候再看一下R3
R3#show ip bgp
BGP table version is 2, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i11.1.1.1/32 2.2.2.2 0 100 0 100 i
已经最优了。
4.路由反射器
检查发现,R4和R5学习不到11.1.1.1这条路由,因为根据水平分割原则,R3从IBGP邻居R2上学习到的路由,不会发给IBGP邻居R4,因此,可以将R3配置成为路由反射器,将R2上的路由反射给R4
R3(config)#router bgp 345
R3(config-router)#neighbor 2.2.2.2 route-reflector-client 指定R2作为自己的client
这时候再检查一下
R4#show ip bgp
BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>i11.1.1.1/32 2.2.2.2 0 100 0 100 i
R5#show ip bgp
BGP table version is 2, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 11.1.1.1/32 10.1.45.4 0 345 100 i
5.AS联邦
除了路由反射器的方法之外,还有一种方法叫做AS联邦,即在AS345内做2个成员AS,而AS345也成为了联邦AS.
R2,R3,R4前面的配置要做修改
R2(config)#no router bgp 345
R2(config)#router bgp 65001
R2(config-router)#bgp confederation identifier 345 //标识自己的联邦AS号为345
R2(config-router)#neighbor 10.1.12.1 remote 100
R2(config-router)#neighbor 3.3.3.3 remote-as 65001
R2(config-router)#neighbor 3.3.3.3 up l0
R2(config-router)#neighbor 3.3.3.3 next-hop-self
R3(config)#no router bgp 345
R3(config)#router bgp 65001
R3(config-router)#bgp confederation identifier 345
R3(config-router)#bgp confederation peer 65002 //标识成员AS65001的邻居是AS65002
R3(config-router)#neighbor 2.2.2.2 remote-as 65001
R3(config-router)#neighbor 2.2.2.2 up l0
R3(config-router)#neighbor 4.4.4.4 remote-as 65002
R3(config-router)#neighbor 4.4.4.4 up l0
R3(config-router)#neighbor 4.4.4.4 ebgp-multihop 3 //BGP跳数默认为1,这里要修改,否则不 可达
R4(config)#no router bgp 345
R4(config)#router bgp 65002
R4(config-router)#bgp confederation identifier 345
R4(config-router)#bgp confederation peer 65001
R4(config-router)#neighbor 10.1.45.5 remote-as 200
R4(config-router)#neighbor 3.3.3.3 remote-as 65001
R4(config-router)#neighbor 3.3.3.3 up l0
R4(config-router)#neighbor 3.3.3.3 ebgp-multihop 4
查看一下结果
R4#clear ip bgp * s //软重置bgp配置
R4#show ip b
BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 11.1.1.1/32 2.2.2.2 0 100 0 (65001) 100 i
同样学习到了。
现网之中,由于AS联邦的要求比较高,所有路由器都必须支持,并且维护起来比较麻烦,所以,应用的比较多的还是路由反射器。