第十二天
BGP的路由聚合 --- BGP的路由汇总
自动聚合
1,自动聚合功能只能针对重发布的路由条目生效
2,自动聚合是将明细路由按主类进行聚合。 这样将会产生巨大的路由黑洞,也会生成一条去往空接口的防环路由。所以,华为设备默认关闭自动汇总功能。
通过路由策略重发布部分路由条目
1,抓取流量
[r1]ip ip-prefix aa permit 172.16.0.0 16 greater-equal 24 less- equal 24
2,创建路由策略
[r1]route-policy aa permit node 10
Info: New Sequence of this List
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]q
3,在重发布中调用
[r1-bgp]import-route direct route-policy aa
[r1-bgp]summary automatic --- 自动聚合的开启命令
Info: Automatic summarization is valid only for the routes imported through the
import-route command
S --- 状态码S ---- suppressed --- 抑制 --- 被抑制的路由信息将不再加表和传递
自动聚合特点
缺点
1、自动聚合只能将明细路由汇总到主类 --- 会产生巨大的路由黑洞
2、自动聚合只能针对重发布的路由条目生效
3、自动聚合会抑制明细路由条目
4、黑洞路由器会在本地的路由表中,会自动生成一条指向null0口的汇总网段路由,防止环路
5、聚合完成后,将会在本地的BGP表中发布一条新的下一跳指向127.0.0.1的汇总网段路由。
*> 172.16.0.0 127.0.0.1 ---- 汇总之后,也会在BGP中发布路由信息,下一跳指向本地环回地址,最终也会加表,出接口将递归到空接口。效果就是将在黑洞路由器上自动生成一条到达汇总的空接口路由用来防环
因为自动汇总存在的两个缺陷(路由黑洞和只针对重发布),所以,当我们需要对路由汇总进行精准的把控时,手工聚合将是更理想的解决方案
手工聚合
关键字
|
参数
|
缺陷
|
优势
|
aggregate
|
/
|
无法抑制明细路由,导致
汇总操作并没有减少路由
条目;汇总路由丢失了明
细路由的路径属性。
|
可以灵活指定汇总路由的目的网络
掩码长度;可以在非直连上汇总,
前提条件是非直连设备上具备的明
细路由可用且优。
|
detail
suppressed
|
在某种情况下,可能还需
要部分明细路由进行传
输,而该命令会抑制所有
明细路由
|
可以抑制明细路由的传输
| |
suppress
policy
|
抓取流量时,需要使用
permit
操作,因为抑制策
略是取反操作。
|
可以灵活性的选择通告某些明细路
由
| |
as-set
|
仅继承了
AS-path
属性
|
可以继承明细路由的路径属性
|
[r1-bgp]aggregate 172.16.0.0 22
手工聚合会将汇总路由和明细路由同时发布,也会自动生成一条指向汇总网段的空接口路由进行防环
手工聚合只有在所有明细路由均无效时,才会撤销。并且,手工聚合可以灵活调整掩码信息,只要还存在一条明细路由,手工聚合后的路由就是可用且优的
手工聚合命令在配置后 --- 1、检测本地路由表中是否有聚合路由的可用明细路由。2、若有,则在本地路由表中发布一条指向空接口的防环路由;若无则该命令无效;3、将汇总的防环路由发布到BGP中
手工聚合的两个缺陷 --- 1,聚合不会抑制明细路由,导致路由数量不减反增
2,汇总路由将不携带明细路由中的一些属性参数,包括AS_PATH属
性,这个属性主要是用来防环的,如果不携带,则将可能导致环路
的产生
手工聚合需要在命令中添加一些额外的参数来完善以上两个缺陷
1,解决明细路由抑制问题
[r4-bgp]aggregate 172.16.0.0 22 detail-suppressed --- 将在汇总的时候抑制所有的明细路由
但是,由于BGP协议的一些特殊性,我们往往不能将他所有的明细全部抑制,只能抑制部分明细路由,来保证BGP选路的合理性和灵活性。
所以,我们想要实现这个效果,需要使用到抑制策略 --- suppressed - policy
抑制策略的配置
1,抓取流量
[r3]ip ip-prefix aa permit 172.16.1.0 24
[r3]ip ip-prefix aa permit 172.16.0.0 20 greater-equal 24 less-equal 24 --- 前20位固定,掩码长度为24
2,路由策略匹配前缀列表
[r3]route-policy aa permit node 10[r3-route-policy]if-match ip-prefix aa
3,通过抑制列表进行调用
2,解决汇总路由不携带AS_PATH属性问题 --- AS_SET ---汇总路由会继承明细路由的路径属性
[r3-bgp]aggregate 172.16.0.0 20 as-set detail-suppressed
[r1]route-policy bb permit node 10[r1-route-policy]apply as-path 1 2 3 additive[r1-route-policy]apply local-preference 10[r1-route-policy]apply cost 100[r1-route-policy]apply preferred-value 20[r1-bgp]aggregate 172.16.0.0 20 detail-suppressed attribute-policy bb
[r1]ip ip-prefix aa permit 172.16.1.0 24[r1]route-policy aa permit node 10[r1-route-policy]if-match ip-prefix aa[r1-bgp]aggregate 172.16.0.0 20 origin-policy aa
因为聚合后的路由会存在属性缺失的渭况,所以,这样的路由需要格外进行关注,为此,BGP引入了两个属性:ATOMIC_AGGREGATE 和 AGGREGTOR
ATOMIC_AGGREGATE
AGGREGTOR
[r4]display bgp routing-table 172.16.0.0 --- 查看一条路由信息的明细信息
Aggregator: AS 2, Aggregator ID 4 4 4 4, Atomic-aggregate
路由反射器
RFC4456
Router Reflector --- RR --- 路由反射器
可以将运行BGP的路由器设置成为路由反射器,而被设置成路由反射器的路由器在一定条件下,将反射学习到的IBGP路由
在指定一台设备成为路由反射器(RR)的同时,需要指定一个或多个他的对等体成为他的客户。RR和客户之间将构成一个系统,成为反射簇。每一个反射簇都将使用RR的RID作为簇ID来进行标识。RR的客户是由手工指定的。其余所有未指定客户的对等体都被认定为非客户
路由反射器的配置是在充当反射器的 BGP 路由器上完成的。而路由反射器的客户设备并不需要做任何额外的配置,它甚至不知道自己成为了某个路由反射器的客户路由反射器与所有的客户或非客户建立 IBGP 对等体关系,而客户之间则无需建立 IBGP 对等体关系。这样就优化了网络中的 IBGP 对等体关系数量。
RR的反射规则:
1,如果路由反射器从自己的客户对等体处学来了一条IBGP路由信息,则将反射给自己所有的客户及非客户。
2,如果路由反射器从自己的非客户对等体学来一条IBGP路由,则将反射给他所有的客户,但是不会反射给自己的非客户 --- 非非不传
3,如果路由器学习到 EBGP 对等体发送的路由信息,则可以发送给所有的 IBGP 对等体4,当路由器执行路由反射时,他只将自己使用的, 最优的路由进行反射。 --- 和BGP路由传递的规则相同
因为路由反射器反射路由后相当于打破了IBGP水平分割的规则,而IBGP水平分割的主要目的是为了防止环路,所以,这种规则的打破可能会导致环路出现。 所以,路由反射器为了保证不会出现环路,引入了两个属性来防环 --- Originator_ID(起源者ID)和 Cluster_list(簇列表)
Originator_ID --- 起源ID --- 当一条BGP路由被路由反射器反射给其他路由器时,如果该条路由已经携带了起源ID属性,则保留该属性,否则路由反射器为这条路由添加起源ID属性,并将该属性值设置为该路由在本地AS内的始发路由器的RID值。
如果一个AS内部存在多次反射,那么,一定存在多个反射簇,则每个反射器在反射路由信息的时候都会将本地的簇ID添加在簇列表属性当中。如果一台路由器收到的路由信息中的簇列表属性中包含本反射簇的簇ID,则将不学习这条路由信息,避免路由回传,造成环路。
[r3-bgp]peer 2.2.2.2 reflect-client --- 指定R2为路由反射器的客户,同时R3成为路由反射器(RR)
当一条 BGP 路由被路由反射器执行反射时,如果该条路由已经存在 Cluster-List 属性,那么路由反射器将本地的 Cluster-ID 附加到路由的 Cluster-List 属性中,而如果该路由没有 Cluster-List 属性,那么路 由反射器为其创建,并将 Cluster-ID 加入到 Cluster-List 中 。当一台路由反射器收到一条 BGP 路由后,若发现该路由携带 Cluster-List 属性,并且 Cluster-List 属性 中包含着自己的 Cluster-ID 时,会忽略关于这条路由的更新 --- 类似于 AS-Path 属性的防环原理。
注意
当路由反射器将一条从自己的 EBGP 对等体学习到的 BGP 路由通告给自己的客户时,他是不会创建 起源 ID 和簇列表,因为这本质上是正常的通告行为起源 ID 和簇列表的传播范围是 AS 内部路由反射器在反射路由时,不会修改除了起源 ID 和簇列表以外的路径属性,原因是 AS-BY-AS 原 则。
反射器的组网方式
备份RR组网
由于RR打破了IBGP对等体收到的路由不能传递给其他IBGP对等体的现在,所以同一集群内的RR之间可能存在环路。这就需要将同集群内的所有RR的Cluster-ID设置为相同值,用以避免RR之间的路由环路
[r3-bgp]reflector cluster-id 10.10.10.10 --- 设置集群的簇id,只能在反射器上配置,命令为覆盖式命令,配置后,会覆盖掉之前路由器选择出来的cluster-ID
多集群路由反射器组网
分级路由反射器
同级路由反射器
注意:在同级路由反射器中,RR之间属于Non-Client的IBGP Full Mesh结构
单集群问题
多集群设计不仅提供了针对物理链路失效带来的物理冗余,同时提供针对客户端和RR之间的IBGP会话失效的逻辑冗余
联邦
联邦的思想是在一个大的AS内创建若干个小的AS,使得AS内部出现一种特殊的EBGP对等体关系,从而解决IBGP路由在AS内部传递的问题
若使用联邦将AS 3456划分为多个,则AS 3456被称为联邦AS,而划分的小的AS,称为成员AS。
由于成员AS号是由联邦AS号的管理者进行分配的,所以不能使用公有AS号,而是使用私有AS号(64512-65534)
联邦之间建立的EBGP对等体关系是一种特殊的存在,他们仅遵守EBGP对等体的传递规则,但是,从宏观的角度看,他们还是属于同一个AS中,所以,他们传递路由信息时也需要遵循AS-BY-AS的规则,不能修改路由的路径属性。--- 联邦AS内部的成员AS对于联邦外部并不可见
配置
注:此处的1.1.1.1 2.2.2.2 3.3.3.3 是环回地址,配置时要按照拓扑中设备的环回配置,而不是RID[r1]bgp 100[r1-bgp]router-id 1.1.1.1[r1-bgp]peer 10.1.13.3 as-number 3456 ---- 使用联邦 AS 号建立 BGP 对等体,原因在于对于 R1 而言,并不需要知晓对端 AS 中的成员 AS 内容[r3]bgp 64512 --- 联邦成员设备启动 BGP 进行需要使用成员 AS 号启动[r3-bgp]router-id 3.3.3.3[r3-bgp]confederation id 3456 ---- 定义联邦 AS 号[r3-bgp]peer 10.1.13.1 as-number 100[r3-bgp]peer 4.4.4.4 as-number 64512 ---- 联邦成员之间建立 IBGP 对等体关系需要使用成员 AS号[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0[r3-bgp]peer 4.4.4.4 next-hop-local[r4]bgp 64512[r4-bgp]router-id 4.4.4.4[r4-bgp]confederation id 3456[r4-bgp]peer 3.3.3.3 as-number 64512[r4-bgp]peer 3.3.3.3 connect-interface LoopBack 0[r4-bgp]confederation peer-as 64513 ----- 在需要建立联邦的 EBGP 对等体关系的设备上指定与自己建邻的成员 AS 号,若有多个可以一次指定[r4-bgp]peer 5.5.5.5 as-number 64513[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0[r4-bgp]peer 5.5.5.5 ebgp-max-hop ---- 修改 TTL 值,建议修改为最大值[r5]bgp 64513[r5-bgp]router-id 5.5.5.5[r5-bgp]confederation id 3456[r5-bgp]confederation peer-as 64512[r5-bgp]peer 4.4.4.4 as-number 64512[r5-bgp]peer 4.4.4.4 con l 0[r5-bgp]peer 4.4.4.4 ebgp-max-hop[r5-bgp]peer 6.6.6.6 as-number 64513[r5-bgp]peer 6.6.6.6 con l 0[r5-bgp]peer 10.1.25.2 as-number 200[r5-bgp]peer 6.6.6.6 next-hop-local[r5-bgp]peer 4.4.4.4 next-hop-local ---- 联邦内部传递不修改属性,故需要手工修改下一跳为本地[r6]bgp 64513[r6-bgp]router-id 6.6.6.6[r6-bgp]confederation id 3456[r6-bgp]peer 5.5.5.5 as-number 64513[r6-bgp]peer 5.5.5.5 connect-interface LoopBack 0[r2]bgp 200[r2-bgp]router-id 2.2.2.2[r2-bgp]peer 10.1.25.5 as-number 3456
联邦防环
使用EBGP水平分割原则。当BGP路由在联邦内传递时,联邦成员AS号才会出现在AS_Path属性中,当路由传出联邦AS时,成员AS号才被移除。联邦的成员AS号会用()括起来
联邦的配置也相当于打破了IBGP的水平分割,这样,就有可能出现环路。所以,联邦中进行防环的方法是直接借鉴EBGP水平分割, 在AS_path属性中携带成员AS的AS号,来防止路由回传,不过在AS_PATH属性中携带时将使用小括号括起来,和真实的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
[r3-bgp]peer 4.4.4.4 ebgp-max-hop --- 因为联邦的EBGP对等体关系需要遵循EBGP对等体的传递性,所以,他的TTL值默认也是1,所以, 在非直连建邻的渭况下,需要修改TTL值
一般在大型BGP网络中,路由反射器和联邦可以同时使用。原因:联邦中的成员AS若为单线连接,只能存在两台设备,若单线存在多台设备,又会发生联邦AS内部的IBGP水平分割现象,所以需要使用路由反射器弥补缺陷。
因为联邦成员只能容纳两台设备,多的话也会收到IBGP水平分割的影响造成场地障碍。所以,在实际工程中,我们可以将联邦和路由反射器结合使用