BGP Reflector(BGP反射器)
因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,导致一台BGP路由器从eBGP邻居收到路由时,发给iBGP邻居之后,iBGP邻居收到就不再传给其它任何iBGP邻居了,而只能传递给eBGP邻居,最终使得AS内部邻居过多时,很难保证每台路由器都能收到所有路由。
如上图环境中,R1从eBGP邻居R5收到路由后,可以传递给iBGP邻居R2,而R2为了防止环路,不能将从iBGP邻居R1收到的路由传递给iBGP邻居R3,最后导致BGP路由器R3和R4都不能拥有完整的BGP路由表。
为了解决AS内,不能将从iBGP邻居收到的路由发给iBGP邻居的问题,通过创建全互联的邻居关系,将所有iBGP邻居都与拥有eBGP邻居的路由器建立邻居。这种方法工作繁琐且消耗系统资源,如上图,需要所有路由器都与R1建立邻居,从而使R1成为单点故障。
除了创建全互联的BGP邻居关系外,还可以使用BGP Reflector(BGP反射器)的方式来将从iBGP邻居学习到的路由传递给其它iBGP邻居。
BGP Reflector可以将自己的任何BGP路由反射给自己的client,从而可以突破iBGP路由传递的限制,具体规则为:
★从eBGP邻居学习到的路由会发送给所有client和所有非client,也就是发给所有邻居。
★从非client学习到的路由将发送给所有client。
★从client学习到的路由将发送给所有client和所有非client,也就是发给所有邻居。
BGP Reflector和自己的Client称为一个cluster,如下图:
我们将R2配置为BGP Reflector,将R3配置为client,那么R2和R3就是一个cluster。在配置BGP Reflector时,只需要在Reflector上配置参数,而不需要在client做任何配置,所以client并不知道自己是client,因此一个cluster的client,同样还可以配置成另一个cluster的Reflector,类似于嵌套,如下图:
在Cluster 1中,R2为Reflector,R3为client,因为R3并不知道自己是client,所以又将R3配置成了Cluster 2中的Reflector,并将R4配置成为Cluster 2中的client。最终因为Reflector R2收到了R1的路由,将所有路由发给client R3,又因为R3也是Reflector,再将路由发给client R4,并将所有从R4的路由也发送给R2,最后所有路由器都拥有全网的路由。
一个AS中可以有多个Cluster,所以为了防止环路,引入了类似于AS_Path的技术,一个Cluster拥有一个唯一的Cluster ID,这个Cluster ID默认就是Reflector的Router-ID,也可以随意设置,并且一个Cluster中可以有多个Reflector互为备份,所以当一个Cluster中有多个Reflector时,Cluster ID必须手工设置。Reflector在将路由反射出去时,都会写入自己的Cluster ID,在路由发送到其它Cluster后,其它Reflector在写入自己的Cluster ID时,还会保留之前的Cluster ID,就像保留AS_Path一样,如果收到一条路由带有与自己相同的Cluster ID,就说明路由发回了原来的Cluster,则认为环路产生,将接收到的路由丢失,以此来防止环路。
除了Cluster ID外,路由还带有Originator ID,这个Originator ID是产生这条路由的路由器的Router-ID,发回起源路由器,也认为环路产生,则被丢弃。在路由是从别的AS发过来时,Originator ID就是AS边界接收的第一台BGP路由器。
配置BGP Reflector
以上图环境为例,配置BGP Reflector
说明:
上图中所有路由器都配有Loopback地址,地址分别为:
R1 Loopback 0 1.1.1.1/32 Loopback 1 11.1.1.1/32
R2 Loopback 0 2.2.2.2/32 Loopback 1 22.2.2.2/32
R3 Loopback 0 3.3.3.3/32 Loopback 1 33.3.3.3/32
R4 Loopback 0 4.4.4.4/32 Loopback 1 44.4.4.4/32
R5 Loopback 0 5.5.5.5/32 Loopback 1 55.5.5.5/32
所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。
1.IGP保证全网Loopback 0互通
说明:此步略
2.全网配置BGP
(1)配置R1的BGP
#
bgp 65000
network 11.0.0.0
network 11.1.1.1 255.255.255.255
undo synchronization
peer 12.1.1.2 as-number 65001
#
(2)配置R2的BGP
bgp 65001
network 22.2.2.2 255.255.255.255
undo synchronization
peer 12.1.1.1 as-number 65000
group 1 internal
peer 4.4.4.4 group 1
peer 4.4.4.4 connect-interface LoopBack0
(3)配置R3的BGP
bgp 65001
network 33.3.3.3 255.255.255.255
undo synchronization
group 1 internal
peer 4.4.4.4 group 1
peer 4.4.4.4 connect-interface LoopBack0
peer 5.5.5.5 group 1
peer 5.5.5.5 connect-interface LoopBack0
(4)配置R4的BGP
bgp 65001
network 44.4.4.4 255.255.255.255
undo synchronization
group 1 internal
peer 2.2.2.2 group 1
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 group 1
peer 3.3.3.3 connect-interface LoopBack0
(5)配置R5的BGP
#
bgp 65001
network 55.5.5.5 255.255.255.255
undo synchronization
group 1 internal
peer 3.3.3.3 group 1
peer 3.3.3.3 connect-interface LoopBack0
3.查看BGP路由情况
(1)查看R1的BGP路由情况
<R1>dis bgp ro
Total Number of Routes: 3
BGP Local router ID is 11.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 11.1.1.1/32 0.0.0.0 0 0 i
*> 22.2.2.2/32 12.1.1.2 0 0 65001i
*> 44.4.4.4/32 12.1.1.2 0 65001i
说明:因为R2无法将R3和R5的路由33.3.3.3和55.5.5.5发给R1,所以导致R5路由表不完整。
(2)查看R2的BGP路由情况
[R2] dis bgp ro
Total Number of Routes: 3
BGP Local router ID is 22.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 11.1.1.1/32 12.1.1.1 0 0 65000i
*> 22.2.2.2/32 0.0.0.0 0 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
说明:因为R4无法将R3和R5的路由33.3.3.3和55.5.5.5发给R1,所以导致R2路由表不完整。
(3)查看R4的BGP路由情况
[R4]dis bgp ro
Total Number of Routes: 4
BGP Local router ID is 44.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 11.1.1.1/32 12.1.1.1 0 100 0 65000i
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*> 44.4.4.4/32 0.0.0.0 0 0 i
说明:因为R3无法将R5的路由55.5.5.5发给R4,所以导致R4路由表不完整。
(4)查看R3的BGP路由情况
[R3-bgp] dis bgp ro
Total Number of Routes: 3
BGP Local router ID is 33.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 33.3.3.3/32 0.0.0.0 0 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*>i 55.5.5.5/32 5.5.5.5 0 100 0 i
说明:R3只能收到R4和R5的直连路由器发布的路由。
(5)查看R5的BGP路由情况
[R5-bgp]dis bgp ro
Total Number of Routes: 2
BGP Local router ID is 55.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*> 55.5.5.5/32 0.0.0.0 0 0 i
说明:R5只能收到R3的直连路由。
--------------------------------------------------------------------------------------------------------------
4.配置BGP Reflector
(1)配置R4为BGP Reflector
#
bgp 65001
peer 3.3.3.3 reflect-client
(2)查看R3的路由情况
<R3>dis bgp ro
Total Number of Routes: 5
BGP Local router ID is 33.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 11.1.1.1/32 2.2.2.2 0 100 0 65000i
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*> 33.3.3.3/32 0.0.0.0 0 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*>i 55.5.5.5/32 5.5.5.5 0 100 0 i
说明:R2将R1和R5的路由都发来了,R3的路由表已经完整。
(3)查看R1的路由情况
<R1>dis ip ro
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost NextHop Interface
1.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
11.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
12.1.1.0/24 Direct 0 0 12.1.1.1 S0/6/0
12.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
12.1.1.2/32 Direct 0 0 12.1.1.2 S0/6/0
22.2.2.2/32 BGP 255 0 12.1.1.2 S0/6/0
33.3.3.3/32 BGP 255 0 12.1.1.2 S0/6/0
44.4.4.4/32 BGP 255 0 12.1.1.2 S0/6/0
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
说明:因为从client学习到的路由将发送给所有client和所有非client,所以R2收到了R4发来的所有路由,但不包括R5的路由。
(4)查看R4的路由情况
[R4-bgp]dis bgp ro
Total Number of Routes: 4
BGP Local router ID is 44.4.4.4
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 11.1.1.1/32 2.2.2.2 0 100 0 65000i
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*> 44.4.4.4/32 0.0.0.0 0 0 i
说明:因为R3不能将iBGP R5的路由发给任何iBGP邻居,所以R4也没有R5的路由。
(5)在R3上查看R5发来的路由55.5.5.5
[R3]dis bgp routing-table 55.5.5.5
BGP local router ID : 33.3.3.3
Local AS number : 65001
Paths: 1 available, 1 best
BGP routing table entry information of 55.5.5.5/32:
From : 5.5.5.5 (55.5.5.5)
Relay Nexthop : 35.1.1.2
Original nexthop: 5.5.5.5
AS-path : (null)
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Not advertised to any peers yet
说明:R5发给R3的路由为正常路由,所以没有不同。
(6)在R3上查看R1发来的路由11.1.1.1
[R3]dis bgp routing-table 11.1.1.1
BGP local router ID : 33.3.3.3
Local AS number : 65001
Paths: 1 available, 1 best
BGP routing table entry information of 11.1.1.1/32:
From : 4.4.4.4 (44.4.4.4)
Relay Nexthop : 34.1.1.1
Original nexthop: 2.2.2.2
AS-path : 65000
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Originator : 22.2.2.2
Cluster list : 44.4.4.4
Not advertised to any peers yet
说明:因为R4是Reflector,所以发出的路由带有Cluster ID,还有个Originator ID,就是AS 边界第一台路由器R2的Router-ID。
(7)改变Reflector路由器R4对Client的下一跳属性
[R4-bgp]peer 3.3.3.3 next-hop-local
(8)再次查看R3的路由情况
<R3>dis bgp ro
Total Number of Routes: 5
BGP Local router ID is 33.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 11.1.1.1/32 2.2.2.2 0 100 0 65000i
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*> 33.3.3.3/32 0.0.0.0 0 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*>i 55.5.5.5/32 5.5.5.5 0 100 0 i
说明:可以看到,从R4反射过来的R1的路由11.1.1.1的下一跳还是2.2.2.2,所以在Reflector环境中,下一跳属性是不能被改变的。
-----------------------------------------------------------------------------------------------------------------------
5.配置Cluster 2
(1)查看R5的路由情况
<R5>dis bgp ro
Total Number of Routes: 2
BGP Local router ID is 55.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*> 55.5.5.5/32 0.0.0.0 0 0 i
说明:由于R3不能将任何从iBGP接收到的路由发给R5,导致R5只有R3和R5两台路由器的路由。
(2)将R3配置为另一个Cluster的Reflector
[R3-bgp]peer 5.5.5.5 reflect-client
(3)查看R5的路由情况
<R5>dis bgp ro
Total Number of Routes: 5
BGP Local router ID is 55.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 11.1.1.1/32 2.2.2.2 0 100 0 65000i
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*> 55.5.5.5/32 0.0.0.0 0 0 i
说明:R3将所有路由反射给client R5,最后R5拥有了全部的路由。
(4)查看R5从Reflector反射过来的路由信息
<R5>dis bgp routing-table 11.1.1.1
BGP local router ID : 55.5.5.5
Local AS number : 65001
Paths: 1 available, 1 best
BGP routing table entry information of 11.1.1.1/32:
From : 3.3.3.3 (33.3.3.3)
Relay Nexthop : 35.1.1.1
Original nexthop: 2.2.2.2
AS-path : 65000
Origin : igp
Attribute value : MED 0, localpref 100, pref-val 0, pre 255
State : valid, internal, best,
Originator : 22.2.2.2
Cluster list : 33.3.3.3, 44.4.4.4
Not advertised to any peers yet
说明:路由从一个cluster发到另外一个cluster,cluster ID会像AS_Path一样被保留累积。
-----------------------------------------------------------------------------------------------------------------------
附加:
在R2上如果没有配置
[R2-bgp] peer 4.4.4.4 next-hop-local
则在R3和R5上没有EBGP的路由11.1.1.1
[R3-bgp]dis bgp ro
Total Number of Routes: 4
BGP Local router ID is 33.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*> 33.3.3.3/32 0.0.0.0 0 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*>i 55.5.5.5/32 5.5.5.5 0 100 0 i
<R5>dis bgp ro
Total Number of Routes: 4
BGP Local router ID is 55.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 22.2.2.2/32 2.2.2.2 0 100 0 i
*>i 33.3.3.3/32 3.3.3.3 0 100 0 i
*>i 44.4.4.4/32 4.4.4.4 0 100 0 i
*> 55.5.5.5/32 0.0.0.0 0 0 i
peer next-hop-local命令用来配置向对等体/对等体组发布路由时,将自身地址作为下一跳。
缺省情况下,向EBGP对等体/对等体组发布路由时,将自身地址作为下一跳;向IBGP对等体/对等体组发布路由时,不将自身地址作为下一跳。