Technorati 标签: BGP,CCIE,Router reflector,RR,路由反射器
IBGP的路由反射器 (RR)
由于IBGP的水平分割问题,所以IBGP需要全互连FULL MESH.由于整个IBGP full mesh的话,需要建的session数为(n*(n-1))/2. 不具有扩展型.所以产生两种解决办法, RR是其中的一种.
总结为非非不能传. (非客户和非客户之间不能传递BGP路由)
RR的client并不知道自己是client.所以RR是本地有效. 客户和非客户经过RR反射的路由更新会带上cluster-list和originator,可用于IBGP防环. Cluster-id默认为RR自己的router-id. 可以通过命令bgp cluster-id x.x.x.x来修改.
Cluster-id为32位的值, 可以写成点分十进制,也可以写成十进制数;originator为IBGP内起源路由器的router-id. RR是IBGP的特征,除了IBGP后,RR所有的特性消失 (即路由携带的Cluster-list和originator全部消失).
neighbor 1.1.1.1 route-reflector-client
可以通过这条命令来将IBGP的peer 1.1.1.1变成自己的客户端.建议对每个IBGP邻居都打上这个命令.
当RR的客户端FULL mesh的时候,可以用no bgp client-to-client reflection禁止客户端到客户端的路由反射,可以减少路由更新.
用这个命令的意义:
在某些特殊情况下, 在RR上面使能了no bgp client-to-client reflection以后,客户端到客户端通过RR是不能进行宣告了,但是,还有一些情况是非客户端和客户端之间是可以正常通讯的.
但是一般情况下,在RR上面使能了这个命令,那么这个RR也失效了.(因为在运营商网络中,专用的RR会和每一个路由器建立IBGP邻居,并且指定每一个路由器为RR客户端)
RR用两个技术进行防止环路:Cluster-list和orgator-ID进行防环.
Cluster list:
当RR被部署的时候,cluster-id在AS内被用作另一个环路防止机制。这个属性记录了在RR环境中,前缀所经过的cluster-id列表,当RR从他的客户那里反射路由到cluster外的非客户的时候,或从非客户反射路由到客户的时候,或是从一个客户反射到另外一个客户的时候,他会把本地cluster-id添加到clsuter-list前面。如果路由更新的cluster-list为空,那么RR自动创建一个.
Originator
是IBGP内起源路由器的router-ID.他在AS内部被用作防环机制,他由第一个RR创建,并且不被后续的RR所更改。Originator-id是:如果是在本地AS始发的路由,那么就是BGP宣告者的router-id.如果路由是通过EBGP学习到的,那么就是同一个AS的边界路由器. 该属性是一个32bit的数值,并且只应该从IBGP对等体那里接收到,在RR上,originator-id用来替代路径选择过程中的router ID. 当IBGP宣告者接收的更新包含他自己的originator-id时,丢弃路由。因为环路已经产生了。
在具体实施中,运营商一般是下面的情况:
专门用两台核心路由器,专门做RR,路由反射器.这样每台路由反射器和AS内每一个IBGP对等器建立邻居关系.之所以要两台做RR主要目的是做冗余,A和B两台路由器,只做路由反射,不做流量转发.
简化的情况是下面:
从而可以保证,不管R1学习到多少条路由,其他所有路由器都可以同步路由信息.
路由反射器配置案例:
R2配置:
interface Loopback0
ip address 2.2.2.2 255.255.255.255
ip ospf 1 area 0
!
interface Ethernet0/0
ip address 192.168.12.2 255.255.255.0
ip ospf 1 area 0
!
interface Serial1/0
ip address 23.1.1.2 255.255.255.0
serial restart-delay 0
!
router ospf 1
router-id 2.2.2.2
!
router bgp 12
bgp router-id 2.2.2.2
bgp log-neighbor-changes
network 1.1.1.1 mask 255.255.255.255
network 2.2.2.2 mask 255.255.255.255
neighbor 1.1.1.1 remote-as 12
neighbor 1.1.1.1 update-source Loopback0
neighbor 3.3.3.3 remote-as 100
neighbor 3.3.3.3 ebgp-multihop 10
neighbor 3.3.3.3 update-source Loopback0
neighbor 3.3.3.3 advertisement-interval 20
!
ip route 3.3.3.3 255.255.255.255 23.1.1.3
!
R3配置:
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet0/0
ip address 38.1.1.3 255.255.255.0
!
interface Ethernet0/1
ip address 172.16.34.3 255.255.255.0
!
interface Serial1/0
ip address 23.1.1.3 255.255.255.0
serial restart-delay 0
!
router eigrp 100
network 3.3.3.3 0.0.0.0
network 172.16.34.3 0.0.0.0
eigrp router-id 3.3.3.3
!
router bgp 100
bgp router-id 3.3.3.3
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 12
neighbor 2.2.2.2 ebgp-multihop 255
neighbor 2.2.2.2 update-source Loopback0
neighbor 4.4.4.4 remote-as 100
neighbor 4.4.4.4 update-source Loopback0
neighbor 4.4.4.4 next-hop-self
neighbor 8.8.8.8 remote-as 38
neighbor 8.8.8.8 ebgp-multihop 255
neighbor 8.8.8.8 update-source Loopback0
!
ip route 2.2.2.2 255.255.255.255 23.1.1.2
ip route 8.8.8.8 255.255.255.255 38.1.1.8
!
对于R3来说,到2.2.2.2的下一跳是2.2.2.2. 因为下一跳可达2.2.2.2(静态),所以最优.
R4配置:(路由反射器,需要和AS内所有路由器建立IBGP关系)
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface Ethernet0/0
ip address 172.16.45.4 255.255.255.0
!
interface Ethernet0/1
ip address 172.16.34.4 255.255.255.0
!
router eigrp 100
network 4.4.4.4 0.0.0.0
network 172.16.34.4 0.0.0.0
network 172.16.45.4 0.0.0.0
eigrp router-id 4.4.4.4
!
router bgp 100
bgp router-id 4.4.4.4
bgp log-neighbor-changes
neighbor Hank peer-group
neighbor Hank remote-as 100
neighbor Hank update-source Loopback0
neighbor Hank route-reflector-client
neighbor 3.3.3.3 peer-group Hank
neighbor 5.5.5.5 peer-group Hank
neighbor 6.6.6.6 peer-group Hank
!
上面可以看到,3.3.3.3,和6.6.6.6把相关的2.2.2.2和77.77.77.77路由都已经传递过来了。
R5配置:
interface Loopback0
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet0/0
ip address 172.16.45.5 255.255.255.0
!
interface Ethernet0/1
ip address 172.16.56.5 255.255.255.0
!
router eigrp 100
network 5.5.5.5 0.0.0.0
network 172.16.45.5 0.0.0.0
network 172.16.56.5 0.0.0.0
eigrp router-id 5.5.5.5
!
router bgp 100
bgp router-id 5.5.5.5
bgp log-neighbor-changes
neighbor 4.4.4.4 remote-as 100
neighbor 4.4.4.4 update-source Loopback0
!
R6配置:
interface Loopback0
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet0/1
ip address 172.16.56.6 255.255.255.0
!
interface Serial1/0
ip address 67.1.1.6 255.255.255.0
serial restart-delay 0
!
router eigrp 100
network 6.6.6.6 0.0.0.0
network 172.16.56.6 0.0.0.0
eigrp router-id 6.6.6.6
!
router bgp 100
bgp router-id 6.6.6.6
bgp log-neighbor-changes
neighbor 4.4.4.4 remote-as 100
neighbor 4.4.4.4 update-source Loopback0
neighbor 4.4.4.4 next-hop-self
neighbor 7.7.7.7 remote-as 67
neighbor 7.7.7.7 ebgp-multihop 255
neighbor 7.7.7.7 update-source Loopback0
!
ip route 7.7.7.7 255.255.255.255 67.1.1.7
!
R7配置:
interface Loopback0
ip address 7.7.7.7 255.255.255.255
!
interface Loopback77
ip address 77.77.77.77 255.255.255.0
!
interface Serial1/0
ip address 67.1.1.7 255.255.255.0
serial restart-delay 0
!
router bgp 67
bgp router-id 7.7.7.7
bgp log-neighbor-changes
network 77.77.77.0 mask 255.255.255.0
neighbor 6.6.6.6 remote-as 100
neighbor 6.6.6.6 ebgp-multihop 10
neighbor 6.6.6.6 update-source Loopback0
!
ip route 6.6.6.6 255.255.255.255 67.1.1.6
!
最终:R2 ping R7,通: