BGP-6,解决IBGP的水平分割

1IBGP的水平分割

     从IBGP学到的路由不会传给另一个IBGP,为了防环

     要想传,靠:1,路由反射器。2,联邦。

     当年设计水平分割:防环

     现在打破的目的:有条件的传

2,路由反射器RR

     新增2个属性:ORIGINATOR,CLUSTER_LIST,用于冗余RR环境中防环。

     RR和client共同构成反射簇,但是只有RR知道(配置只在RR上完成)。

     假设R1和R2都是RR的client,则R1和R2都是RR的BGP邻居,但R1和R2没有邻居关系。(如果也有邻居关系又有物理连接可能成环?)

     

     假设R1从外部学到了一条路由,下一跳为外部的路由,R1必须对RR next-hop-self(下一跳变成了R2),否则路由到了RR后不会有大于号,不会继续往下传。但是如果RR对R2 next-hop-self是无效的,该路由下一跳还是R1。因此IBGP邻居间,只需要所有client对RR next-hop-self即可。

 

2.1,反射规则

     总结就是non-client收的不反射给non-client,其余都反射(EBGP收到反射给ALL,client收到反射给ALL)。并且rr不改变路由属性,包括下一跳等。

     

     规则一:RR从client收的,反射给client端/non-client端/EBGP邻居

    

     规则二:RR从non-client收的,反射给client端/EBGP邻居

    

     规则三:RR从EBGP收的,反射给client端/non-client端

    

2.2,路由反射簇

     反射簇包括RR和client,簇ID是唯一的,一条路由被RR反射后会添加簇ID,出于防环RR再次收到该路由将忽略。

     簇ID默认是RR的RouterID,如果两台RR有相同簇ID,那么他们就属于同一簇。

2.3,冗余RR环境

     单RR存在单点故障问题,可以在一个簇中配置多个RR,RR之间建议Fullmesh。

     由于AS_PATH在内部不变,因此AS内部防环靠水平分割只能传一跳,RR打破了规则,因此有环路隐患,需要用到ORIGINATOR,CLUSTER_LIST防环。

2.4,规划原则

1)规划原则

     RR将AS分割成小单元,即反射簇

     每个簇包含RR和其client

     不支持路由反射功能的路由器可以充当单路由器簇或者充当client

2)IBGP会话原则

     反射簇中的client都应该与并且只与簇中所有的RR建立IBGP连接

     AS内的RR之间要求全IBGP互联

     non-client可参与IBGP全互联也可配置为反射器的client

2.5RR配置

     只需要在RR上,配完基础三步+邻居三步后,把谁做为我的客户端即可。  

 

 

     RR配置反射: (router-config)# neighbor 1.1.1.1 route-reflector-client

     RR修改反射簇ID: (router-config)# bgp cluster-id 222.222.222.222    

     RR关闭client间反射(client间已经full mesh): [router-config]# no bgp client-to-client reflection  

 

     R3上show ip bgp:

3,联邦

    实际上相当于建私有AS

     解决方法:把大AS划分成小AS,小AS之间就是EBGP关系

     新增2个属性:AS_CONFED_SEQUENCE,AS_CONFED_SET,用于联邦内防环

     主要步骤:

1)R3-R4-R5建IGP

2)联盟外BGP正常配置,即R1和R2指向的是大AS号345

3)联盟内BGP配置

     R3,R4,R5都使用内部AS号64512,64513

     R3,R4,R5按照正常情况建邻居

     R3,R4,R5声明大AS号,bgp confederation identifier 345

     R4,R5互指对方小AS号,R5:bgp cofederation peers 64512

     备注:

     要点是用小AS号建邻居,另外多2步:声明大AS号,内部EBGP邻居互指小AS号 

     联邦做成之后,联邦内部show bgp会显示小AS号,有括号

     联邦中的小AS号不做选路比较,即括号内的不算

     另外,gns实验发现,R4传R5的路由,next-hop没有变成R4,仍然是R1更新源地址,所以R4要对R5 next-hop-self

4)R1放一条路由进BGP,依次show ip bgp,路由条目中的PATH显示为

     R1:i

     R3:100 i

     R4:100 i

     R5:(64512) 100 i

     R2:345 100 i

     备注:

     在R4到R5的接口抓包,发现更新报文中的AS_PATH包括2个内容,AS_SEQUENCE(345)和AS_CONFED_SEQUENCE(64512) ,后者用于联邦内部防环,不会出联邦。    

4,极端情况下的联邦与RR?

     

     李桃梅称:234联邦,567联邦,3和6做RR

     为什么要做2个联邦呢?直接R2做RR,甚至任意一台做RR,全反射不行吗?

     原则上是应该是可以的(待实验确定)是不是考虑到路由更新比较混乱才不这样部署?因为加入R4作为RR,所有的更新报文都要经过R4,对于R7和R2离的较远。

     自己经实验,直接R2做RR也是可以的,配置如下:

     R2(RR):

     router bgp 100

          neighbor abc peer-group

          neighbor abc remote-as 100

          neighbor abc update-source l0

          neighbor abc next-hop-self  /如果没有next-hop-self,8.8.8.8路由经过R7传给R2后,R2不会反射给其他路由器,因为没有>号

          neighbor abc route-reflector-client

          neighbor 3.3.3.3 peer-group-abc

          neighbor 4.4.4.4 peer-group-abc

          neighbor 5.5.5.5 peer-group-abc

          neighbor 6.6.6.6 peer-group-abc

          neighbor 7.7.7.7 peer-group-abc      

          neighbor 12.0.0.1 remote-as 200

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

     规则一:RR从client收的,反射给client端/non-client端/EBGP邻居

    

     规则二:RR从non-client收的,反射给client端/EBGP邻居

    

     规则三:RR从EBGP收的,反射给client端/non-client端

    

2.2,路由反射簇

     反射簇包括RR和client,簇ID是唯一的,一条路由被RR反射后会添加簇ID,出于防环RR再次收到该路由将忽略。

     簇ID默认是RR的RouterID,如果两台RR有相同簇ID,那么他们就属于同一簇。

2.3,冗余RR环境

     单RR存在单点故障问题,可以在一个簇中配置多个RR,RR之间建议Fullmesh。

     由于AS_PATH在内部不变,因此AS内部防环靠水平分割只能传一跳,RR打破了规则,因此有环路隐患,需要用到ORIGINATOR,CLUSTER_LIST防环。

2.4,规划原则

1)规划原则

     RR将AS分割成小单元,即反射簇

     每个簇包含RR和其client

     不支持路由反射功能的路由器可以充当单路由器簇或者充当client

2)IBGP会话原则

     反射簇中的client都应该与并且只与簇中所有的RR建立IBGP连接

     AS内的RR之间要求全IBGP互联

     non-client可参与IBGP全互联也可配置为反射器的client

2.5RR配置

     只需要在RR上,配完基础三步+邻居三步后,把谁做为我的客户端即可。  

 

 

     RR配置反射: (router-config)# neighbor 1.1.1.1 route-reflector-client

     RR修改反射簇ID: (router-config)# bgp cluster-id 222.222.222.222    

     RR关闭client间反射(client间已经full mesh): [router-config]# no bgp client-to-client reflection  

 

     R3上show ip bgp:

3,联邦

    实际上相当于建私有AS

     解决方法:把大AS划分成小AS,小AS之间就是EBGP关系

     新增2个属性:AS_CONFED_SEQUENCE,AS_CONFED_SET,用于联邦内防环

     主要步骤:

1)R3-R4-R5建IGP

2)联盟外BGP正常配置,即R1和R2指向的是大AS号345

3)联盟内BGP配置

     R3,R4,R5都使用内部AS号64512,64513

     R3,R4,R5按照正常情况建邻居

     R3,R4,R5声明大AS号,bgp confederation identifier 345

     R4,R5互指对方小AS号,R5:bgp cofederation peers 64512

     备注:

     要点是用小AS号建邻居,另外多2步:声明大AS号,内部EBGP邻居互指小AS号 

     联邦做成之后,联邦内部show bgp会显示小AS号,有括号

     联邦中的小AS号不做选路比较,即括号内的不算

     另外,gns实验发现,R4传R5的路由,next-hop没有变成R4,仍然是R1更新源地址,所以R4要对R5 next-hop-self

4)R1放一条路由进BGP,依次show ip bgp,路由条目中的PATH显示为

     R1:i

     R3:100 i

     R4:100 i

     R5:(64512) 100 i

     R2:345 100 i

     备注:

     在R4到R5的接口抓包,发现更新报文中的AS_PATH包括2个内容,AS_SEQUENCE(345)和AS_CONFED_SEQUENCE(64512) ,后者用于联邦内部防环,不会出联邦。    

4,极端情况下的联邦与RR?

     

     李桃梅称:234联邦,567联邦,3和6做RR

     为什么要做2个联邦呢?直接R2做RR,甚至任意一台做RR,全反射不行吗?

     原则上是应该是可以的(待实验确定)是不是考虑到路由更新比较混乱才不这样部署?因为加入R4作为RR,所有的更新报文都要经过R4,对于R7和R2离的较远。

     自己经实验,直接R2做RR也是可以的,配置如下:

     R2(RR):

     router bgp 100

          neighbor abc peer-group

          neighbor abc remote-as 100

          neighbor abc update-source l0

          neighbor abc next-hop-self  /如果没有next-hop-self,8.8.8.8路由经过R7传给R2后,R2不会反射给其他路由器,因为没有>号

          neighbor abc route-reflector-client

          neighbor 3.3.3.3 peer-group-abc

          neighbor 4.4.4.4 peer-group-abc

          neighbor 5.5.5.5 peer-group-abc

          neighbor 6.6.6.6 peer-group-abc

          neighbor 7.7.7.7 peer-group-abc      

          neighbor 12.0.0.1 remote-as 200

 

 

猜你喜欢

转载自www.cnblogs.com/guxh/p/8998613.html