1,IBGP的水平分割
从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.5,RR配置
只需要在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.5,RR配置
只需要在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