解决IBGP的水平分割问题
IBGP水平分割:防止环路的产生
方法1:路由反射器(RR)
路由反射器可以反射所学习到的IBGP路由信息。
指定一台路由器称为 路由反射器(RR) 的时,必须在他的IBGP对等体关系中选择一个或者多个设备称为他的 客户(client) ,RR和客户之间所构成的系统我们称为 反射簇 (Cluster) 。每一个反射簇都将使用RR的RID作为簇ID。其余没有称为RR客户的IBGP对等体关系,我们将称其为 非客户 。
路由反射器的反射规则:
1 ,当路由反射器从自己客户处学习到一条路由,则他将会把这条路由信息反射给自己所有的客户以及非客户
2 ,如果路由反射器从自己的非客户处学习到一条路由,则他将把这条路由信息反射给自己所有的客户但是不能反射给非客户。
3 ,当路由器执行路由反射时,他只将自己使用的最优的 BGP 路由进行反射。
路由反射器将路由反射之后就打破IBGP 的水平分割,就可能造成环路的出现。路由反射器为了防止环路的出现,引入了两个属性 Originator_ID(起源者ID),Cluster_list(簇列表)
Originator_ID(起源者ID) 当一条路由信息来到路由反射器时,反射器需要将这条路由信息反射,反射前将在该路由信息中添加这个属性,这个 属性的值为该反射器收到这条路由信息的通告者的RID ,之后,别的路由反射器收到一条路由信息如果其中包含O_ID ,则他将不会改变这个属性。如果一台设备收到一条路由条目其中起源者ID 为自己本地的RID,则将不再学习这条路由信息,起到防止环路的效果。
Cluster_list(簇列表)如果在一个AS当中,存在多次反射,则一定存在多个反射簇,则每个RR在反射路由信息时都会在其中簇列表属性中添加本地的簇ID。当一个设备收到一条反射的路由信息后,其中的簇列表属性中包含本地簇ID,则将不再学习该路由,防止环路的产生。
[r3-bgp]peer 2.2.2.2 reflect-client ---指定R2作为反射客户,则同时R3自动成为RR
方法2:联邦
联邦:将同一个AS当中的IBGP对等体关系改变为EBGP对等体关系。这就需要将不同的IBGP对等体划分到不同成员AS当中,成员AS之间建立的EBGP对等体关系是一种特殊的EBGP对等体关系,他们之间仅遵循EBGP对等体的传递性,而从传递的内容角度看,依然需要遵循AS-BY-AS规则,因为从宏观上看,他们依然处于同一个AS当中。
联邦的做法也相当于打破了IBGP的水平分割,则也将可能出现环路问题,则需要考虑防环。防环方法可以直接借鉴EBGP水平分割,在AS_PATH属性当中添加成员AS号来防止回传。注意,为了区分成员AS和正常的AS,成员AS号将使用小括号括起来。
联邦的配置:
[r2]bgp 64512 ---联邦成员设备启动BGP进程时需要使用小号来启动
[r2-bgp]confederation id 2 ---声明联邦成员的大号
[r2-bgp]peer 3.3.3.3 as-number 64512 ---联邦成员之间建立IBGP对等体关系需要使用小号来建立
[r3-bgp]confederation peer-as 64513 ---在需要建立联邦的EBGP对等体关系的设备上需要声明建邻的成员AS号
[r3-bgp]peer 4.4.4.4 as-number 64513 ---联邦的EBGP对等体关系使用小号建邻
[r3-bgp]peer 4.4.4.4 ebgp-max-hop ---因为联邦的EBGP对等体关系之间需要遵循EBGP对等体的传递性,所以,其TTL值默认为1,在非直连建邻时需要将TTL值修改才能正常建邻
BGP选路原则
BGP 选路的前提条件---丢弃所有不可用的路由信息
1.优选PV属性值大的路由
假设R1上发布两条路由条目 1.0.0.0 10.0.0.0 ,R4通过BGP对等体关系,可以从R2和R3上分别学习到两条去往1.0.0.0 10.0.0.0的路由条目。路由加表时只会选择最优的一条,所以可以通过配置影响选路。
方法一:全局修改
[r4-bgp]peer 3.3.3.3 preferred-value 100
这个100,就是修改的PV值。这条命令的意思:只要是3.3.3.3通告给R4的路由,这些路由PV字段全部修改为100.
方法二:精细化控制
1.抓取流量
[r4]ip ip-prefix PV permit 10.0.0.0 24
2.路由策略
[r4]route-policy PV permit node 10
[r4-route-policy]if-match ip-prefix pv
[r4-route-policy]apply preferred-value 100
[r4-route-policy]q
[r4]route-policy PV permit node 20--- 注意:必须要配置空表放通剩余所有流量
3.BGP中调用策略
[r4-bgp]peer 3.3.3.3 route-policy PV import 这块只能做入 方向的,因为 PV 属性不能传 递
2.优选LP属性值大的路由
LP --- 本地优先级(本地:在当前AS中传递)---默认值为100,越大越优。这个属性可以在IBGP对等体之间进行传递。路由信息在传递给EBGP对等体时将不携带这个属性。
方法一:全局修改
[r3-bgp]default local-preference 200 ---R3之后发给IBGP对等体的路由的LP属性都将被改为200
方法二:精细化控制
3.按路由条目发布方式的优先级
自己始发的路由优先级高于从对等体处学来的,自己始发的路由优先级关系为手工聚合> 自动聚合> network > import
4.优选AS_PATH属性最短的路由
AS_PATH属性进行选路时,注意:1.进行路由聚合时,如果激活AS_SET关键字之后,将不同AS的明细路由进行聚合,则将在AS_PATH属性中携带所有明细AS的AS号,并用大括号括起来。进行选路比较时,大括号的内容当作一个AS号来看待。 2,在联邦时,我们联邦内部也需要使AS_path来进行防环,我们将使用小括号将AS号括起来,在进行选路比较时,不计算小括号里的内容。
5.优选起源码属性最优的路由。起源码的优先级---I > E > ?
OGN起源码:用来标识路由条目的起源
I ---代表该路由信息起源于IGP协议(不局限于IGP协议,包括静态,直连),代表该路由条目起源于AS内部---通过network发布出来的路由信息其起源码为I
E ---代表该路由信息起源于EGP协议---EGP指的是BGP之前使用的外部网关协议
?---通过除了以上两种方式学习到的路由---重发布导入的路由起源码都是?
6.优选MED属性值较小的路由
MED --- 多出口鉴别属性---MED值是继承了路由表中该路由条目的开销值,它可以反应到达目标网段在本AS内部的开销大小。通过这个参数,别的AS的流量在进入本AS时将可以选择开销较小的入口进入。通过修改这个属性值,我们也可以影响其他AS的流量流入本AS的路径。若本地通过IBGP对等体学习到一条BGP路由,其中存在MED值,之后需要将这条路由再传递给本地的EBGP对等体,则他将不再携带这个MED值。这种设置将有可能造成选路不佳的情况。所以,建议,如果存在多组边界设备需要将路由发送给EBGP对等体关系时,需要将所有的路由信息都发布。(每台设
备都需要发布)
7 , EBGP 对等体路由优于 IBGP 对等体
8.优选到NEXT-HOP的IGP度量值小(cost)的路由:
9.选CLUSTER_LIST最短的路由信息
10.优选RID(O_ID)最小的设备通告的路由
先看O_ID,没有起源者看RID
11.优选具有最小IP地址的对等体通告的路由