1.实验拓扑
1.1拓扑
1.2基本配置(部分)
R1:
interface GigabitEthernet0/0/2
ip address 10.1.12.1 255.255.255.0
#
interface LoopBack0
ip address 10.1.1.1 255.255.255.255
#
interface LoopBack1
ip address 192.168.1.1 255.255.255.255
#
bgp 100
router-id 1.1.1.1
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 10.1.1.1 255.255.255.255
network 192.168.1.1 255.255.255.255
peer 10.1.12.2 enable
R2:
router id 2.2.2.2
#
interface GigabitEthernet0/0/0
ip address 10.1.23.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.25.2 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 10.1.12.2 255.255.255.0
#
interface NULL0
#
interface LoopBack0
ip address 10.1.1.2 255.255.255.255
#
interface LoopBack1
ip address 192.168.2.1 255.255.255.255
#
bgp 200
router-id 2.2.2.2
peer 10.1.1.3 as-number 200
peer 10.1.1.3 connect-interface LoopBack0
peer 10.1.1.5 as-number 200
peer 10.1.1.5 connect-interface LoopBack0
peer 10.1.12.1 as-number 100
#
ipv4-family unicast
undo synchronization
peer 10.1.1.3 enable
peer 10.1.1.3 next-hop-local
peer 10.1.1.5 enable
peer 10.1.1.5 next-hop-local
peer 10.1.12.1 enable
#
ospf 1
area 0.0.0.0
network 10.1.1.2 0.0.0.0
network 10.1.23.2 0.0.0.0
network 10.1.25.2 0.0.0.0
2.学习
2.1 IBGP全互联的问题。
IBGP路由存在水平分割,为了保证BGP路由器具备完整路由,就必须进行IBGP全互联。
全互联存在一些问题:
(1)路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时;
(2)AS内BGP网络的可扩展性较差。
路由反射器可解决此问题。
2.2 RR角色
RR有两种角色:
(1)RR(Route Reflector):路由反射器。RR会将学习的路由反射出去,从而使得IBGP路由在AS内传播无需建立IBGP全互联。
(2)Client:RR客户端。将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR。
2.3 路由反射规则
序号 | 主体 | 路由来源 | 反射动作 |
---|---|---|---|
1 | RR | 从非client学习到IBGP路由 | 反射给所有Client |
2 | RR | 从client学习到IBGP路由 | (1)反射给所有非Client (2)该客户之外的其它Client |
3 | RR | 从EBGP学习到路由 | (1)所有Client (2)非客户IBGP对等体 |
(1)如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户。
首先R2、R3、R4、R5取消全互联IBGP,只保留实际物理连接的路由器配置IBGP对等体。
R4上无法收到R2的路由192.168.2.1,R3是有的。因为R3不会传给R4。
配置R4是R3的RR客户端:
重新查看R4,有了路由。
(2)如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。
R4上存在去往R6的路由192.168.6.1:
查看R2:
(3)如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。
现在将R2设置为RR,R3、R4客户端。
查看R2(RR):去往192.168.1.1的为EBGP路由:
R3(client)有路由:
R5(非client)也有路由:
2.4 RR路由防止环路
2.4.1 Originator ID
R3: 添加了Originator和和Cluster list属性。
R4: 有两条路由,一个是R2通过IBGP发过来的,一个是R4反射过来的。这里优选了R2过来的。为了让R4继续反射出去,我们在R2阻止192.168.1.1这条路由。
在R2与R5间抓包:报文中,CLUSTER_LIST包括所有经过的RR,而originator_id不变,为R2。
查看R2:
这条路由不可能出现,R2发现originator_id和自己一样。
2.4.2 Cluster_List
(1)路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇。
(2)每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )。
(3)当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
(4)当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新。
接上面的实验:将R2设置为RR,路由反射给R3。
在R3查看到192.168.6.1的路由:
在R3和R4间抓包:Cluster_ID中包括4个RR的路径。
R4:不可能再将这条路由加入路由表。簇id中包含自己的id。