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对等体/对等体组发布路由时,不将自身地址作为下一跳。