BGP路由汇总
BGP汇总,支持CIDR,这么牛B的协议肯定是支持的
Auto summary,在cisco的IOS中,默认是关闭的,
如果想要进行自动汇总的话,就要先手动开启功能,
自动汇总
开启自动汇总后
并不意味着什么样的条目都能够进行自动汇总,
对此BGP是这样规定的 开启auto-summary以后
通过network+mask精确宣告的,不会被自动汇总
通过network+mask汇总宣告的,会被汇总 //废话
通过重分布进BGP的,会自动被汇总成主类 , 这一点很重要
所以综上所述,可以总结出一句话,那就是BGP只会针对重分布的类型条目进行自动汇总
测试一下重分布后的条目能否被自动汇总
所有设备上开启自动汇总,然后在R1和R2上重分布进直连网段,为了不要它们自已的更新源地址,我们要建立route-map,进行有条件的重分布,此处不再赘述,
直接看结果吧
咱们先来分析一下,汇总是汇总了,但是有问题的
1 明细条目被汇总也是显示的两条,分别来自于AS100和AS200,这没问题,本来就是来自于两个AS的,但是,你会发现,2.2.2.2的条目没有被视为最优,
不最优的结果就是不能被写入路由表,同时也无法传递给我的邻居
那R4上,肯定就不可能ping通AS200的条目喽~,
咱们试一下,
通过结果,我们不难看出,的确是存在这样的问题,
我的AS200去哪里了,连PATH列表中都没有,(因为在R3上面 2.2.2.2的条止不是最优的,所以不会传递给BGP邻居)肯定是不可能通的.
所以,自动汇总是多么的,多么的不靠谱,
我们之前在学习IGP路由协议的时候也一再强调这个事儿,
自动汇总,会产生路由黑洞,现在倒好,连黑洞还没出来呢,直接就给你抛弃了
我们主要讲述的是BGP 的手动汇总,
手动汇总
还是上图的环境,我们将条目的形式改变一下,全都变成network
配置完成
在R3上查看BGP表
来自于两个下一跳,两个AS,而且条目全都有效,
并且没有被自动汇总,因为我们把au sum给关了
现在R4和R5上看到的都是一样的条目
由于是EBGP的peer,在离开自己的AS时,会将AS加上去,所以在这里看到的就是300 200/ 300 100,现在的状态是正常的,完全没有问题
现在开始汇总
1 首先要明白,在哪里汇总,
2 汇总后的IP地址是多少,~要不要精确的计算
对于BGP的汇总而言,肯定是在发送端这边来做汇总,如上图所示,R3是R4-R5的发送端
R1,R2是R3的发送端 ,
为了省事儿,我们直接 在R3上做,
第二个, 172.16.1.0 /2.0/10.0/11.0/24条目,汇总后应该是多少呢?
2的4次方=-16,那就用这个吧
172.16.0.0 /20 255.255.240.0
BGP的汇总命令
Aggregate-address 172.16.0.0 255.255.240.0
实验来试一下
R3(config)#router bgp 300
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0
来看一下最终的效果,在R4上查看BGP表
哦~,有了,有了,
但是为啥明细条目还有啊~
这不科学啊,按理来说,明细 条目应该不在才对啊~
是的,没错,但是在BGP中,如果想要清除明细条目,只保留汇总条目的话,就要再加单独的命令
手动汇总summary-only
我们把刚才的汇总条命令NO掉,重新写一下
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only
好,再来查看一下,是不是奏效呢~
OK,没问题,看来summary-only 还是很有效果的,
汇总告警消息
Aggregated 聚合,由谁聚合的
Atomic-aggregate 原子聚合
针对于这两个属性,我们可以直接在明细中看到,
这个条目是由AS300的RID为3.3.3.3的设备进行汇总的,
另外,这是一条告警消息,原子聚合。当出现这个消息的时候你要注意了,
是有问题的。因为汇总条目中并不包含明细条目的AS-path信息。
这会造成环路。
手动汇总
这个时候你要不要考虑一个问题
R1和R2上有没有这个汇总条目???
想一想
我们看一下在R4上的结果是什么样的啊~
首先,在R4看来,这是一个崭新的条目,我可以收,
PATH上写的是300
但是,注意啊.........但是来了,
对于R1和R2而言,这不是新的吗?
假设R2和R4之间存在着EBGP的邻居关系,怎么办?
R2收到这个更新以后,会不会接收,??? 肯定会接收,因为在as-path中根本就没有他的AS标识,可现在即使是没有这个EBGP的关系,我们也不防到R1和R2上看一下
我们在R1上看,
同样可以看到这个条目,且下一跳设备为3.3.3.3, 为什么他会接收呢?你往后面看,看到了什么>?
Path 300,根本就没有100,我为什么不收呢~ 这就是问题的所在
那这个时候我要怎么样才可以将明细的AS编号加到PATH中呢?
是否还记得之前讲AS-PATH路径属性的时候,讲过AS-PATH的4种类型
我们最常见的就是这种AS-senquence 是EBGP 都会标记的,而且是有序的,
还有一种是无序的,前面只是提了一句,说是在这里要讲
As-set类型的path ,主要用于标记汇总条目的明细 AS的,
它们的表现形式是{xx,xx}里面并没有顺序可言,只要有就可以了
回到实验中
我们重写一下汇总命令
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set
好了,再来看一下R4上的BGP表吧
看看这个条目发生了哪些变化
嘿嘿,不一样了吧
这时变成了300{100,200}300是汇总的AS,100和200是明细的所在AS
查看汇总条目的详细信息,也可以看到 这个汇总条目产生在AS 300 RID是3.3.3.3
那这个时候请问R1和R2能否收到呢?
猜一下?
还用说吗?肯定是收不到的,因为有了as-set的关键字以后,就会在{ }里面加上明细条目所在的AS号,这和EBGP 的防环机制也是有关系的.看到更新信息中有自己的AS号,则直接丢弃这个包.不进行更新。这一关键字,解决了EBGP的环路问题
汇总继承origin
汇总条目会继承明细条目上最差的origin,我们来测试一下是否奏效
我们把R2上的条目改成e,把R1上的条目改成?
来看一下会怎么样,
那么问题又来了,修改origin,In/out?哪个生效呢?
答:哪个都生效,因为起源属性,是公认必遵属性,每个update包中都是包含的
所以我们现在直接就在明细的源头进行修改就好了
R1(config)#access-list 1 per 172.16.1.0
R1(config)#route-map ori per 10
R1(config-route-map)#ma ip add 1
R1(config-route-map)#set origin egp 500
R1(config-route-map)#exit
R1(config)#route-map ori per 20
R1(config)#router bgp 100
R1(config-router)#nei 3.3.3.3 route-map ori out
R1(config-router)#exit
在R1上效条目的origin 改成了e
在R2上将条止的origin改成了incomplete?
R2(config)#access-list 1 per 172.16.10.0
R2(config)#route-map ori per 10
R2(config-route-map)#ma ip add 1
R2(config-route-map)#set ori incomplete
R2(config-route-map)#exit
R2(config)#route-map ori per 20
R2(config-route-map)#exit
R2(config)#router bgp 200
R2(config-router)#nei 3.3.3.3 route-map ori out
此时我们到R3上先来查看一下
可以看到,明细条目都已经改了,
我们说过,汇总条目会继承明细条目中origin最差的那个
顺序还记得吗?i>e>?
那么此图中,最差的就是?了,
我们到R4上来验证一下中否继承了
没错,真的是继承了,并且是继承的最差的。
BGP路由汇总的额外特性
Suppress-map 抑制条目
在前面的实验中,我们可以看到,使用了summary-only以后,所有的明细条目都被干掉了,一个不留,
但有没有一些特殊的情况,我需要一些明细的条目呢?肯定是有的
那么如何来操作呢?
就要用到suppress-map了
配置思路
ACL抓取条目
定义route-map
在汇总时调用关键字
这里要额外的提一下,这个是有点儿绕的地主
当route-map和suppress相结合时, route-map的permit,就等于是抑制
Deny 就等于不是抑制
说白了,就是你permit哪个条目,哪个条目就不能显示出来
因为在route-map的最后还隐藏着deny ,所以想放行的可以不写Permit就默认被放行了。
还是结合我们上面的实例来看一下
我想要汇总条目到达R4的时候,还要携带着明细条目 172.16.1.0 以及 172.16.10.0
那应该怎么做呢?
配置
R3(config)#access-list 1 per 172.16.1.0
R3(config)#access-list 1 per 172.16.10.0
R3(config)#route-map sup deny 10 //这时的deny等于是针对suppress放行,不汇总
R3(config-route-map)#ma ip add 1
R3(config-route-map)#exit
R3(config)#route-map sup per 20 //这里的permit等于是被抑制了,其它全部被抑制了
R3(config-route-map)#exit
R3(config)#router bgp 300
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 suppress-map sup as-set
这里就不再是summary-only了,而是换成了suppress-map了
最终在汇总的时候进行调用suppress-map即可
Unsuppress-map
如果说我有多个EBGP邻居,而其中有一个邻居,不想在汇总的时候被抑制,那要如何操作呢?
如果结合使用了suppress-map的话,就要对单独的peer,指定一个unsuppress-map
当然,这一操作要在汇总的设备上进行
R3(config-router)#nei 5.5.5.5 unsuppress-map sup //sup为之前定义的route-map名称
此时再到R5上看一下,
哎呀,不对啊,怎么都出来了?
那么请问,怎么就不能都出来,我前边的命令是怎么敲的?有summary-only吗?
没有吧,我只是应用了suppress-map,而针对于5.5.5.5而言,我还被配置了 unsuppress-map,不接受这个策略的限制,也就是不抑制,
那我为啥不能接收全部的消息呢~你说呢?~
Advertist-map 单独继承属性
前文提过,汇总条目会继承明细条止的路径属性origin,其实不全然,
继承的还是挺多的,
as-path,需要as-set的关键字
Local prefen本地优先级,汇总条目会在AS内部为100
Origin
Community 这个在后面会有更加详细的解释
我们拿origin来做个例子吧
之前说过,汇总条目会继承明细路径中origin属性最差的,
那么,我想不继承那个最差的行不行?
只继承那个最好的,可不可以?
当然可以
我们来测试一下
我们将
172.16.10.0 设置为 ?
172.16.2.0和172.16.11.0不变,就是i
如果是默认情况下,肯定会继承最差的那个 ?,我们不让它这么选
我们最终让汇总条目只继承i的属性,看看可不可以
配置思路
ACL抓取条止
Route-map permit条目
这里要注意一下千万不要在后面加上per 20
重新汇总条目
配置命令
R3(config)#access-list 1 per 172.16.2.0
R3(config)#access-list 1 per 172.16.10.0
R3(config)#route-map adv per 10
R3(config-route-map)#ma ip add 1
R3(config-route-map)#exit
///这里千万要注意,不要per 20了,如果再per20的话,所有的属性又都过去了
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set advertise-map adv
在R3上先看一下它们的origin
可以看到有? 有i的,就像我们之前所说的,我就让这个汇总条目只继承i的,
上面的命令已经输入完成,
到R4上来验证一下
神奇不?
总结一下这个关键字吧,advertise-list,可以针对于某一个,某多个条目的属性进行选择性继承,
设置好以后,比如说你选择了两条路由么属性做为汇总属性的继承,那么当这两条明细路由正常的时候,汇总路由也正常,
当两条明细挂掉一个,汇总还正常,
可是,当两条明细都挂掉了,不管你那边儿有多少个明细,汇总都会随之消失,因为你只选择了这两个路径做为依据。
我们可以来测试一下
之前参考的是172.16.2.0 和 11.0这两个条目的属性,
现在我们一一的断开,看一下效果会是什么样的,
1 down掉172.16.2.0 的loopback接口,看会发生什么
关掉以后 我们看一下R3上的BGP表,有没有什么变化
汇总条目还在,没问题
我们再断开另外一个
此时再到R3上查看一下
你会发现,选择性继承的那两条明细都down掉以后,汇总路由立即也跟着down掉了,
Attribute-map路由策略
对待汇总路由就像是对待一个普通 的明细路由一样,可以使用route-map来为其修改路径属性。
但前提是修改的路径属性在AS之间支持传递
可以修改的属性,主要遵循BGP的路径属性一篇提到的
大概可以支持
这里我们来修改一下as-path的属性,让它在R4上看起来与众不同。
配置思路
Acl 抓取条目。 prefix-list
1 route-map定义 针对于汇总条目不用再单独的抓取了
2 set 具体属性值
3重新汇总,并加上具体的策略
配置如下
现在要求汇总路由在出去的时候1111的med值 ,看看可不可以实现
R3(config)#route-map wfy per 10
R3(config-route-map)#set metric 11111
R3(config-route-map)#exit
R3(config)#router bgp 300
R3(config-router)#aggregate-address 172.16.0.0 255.255.240.0 summary-only as-set attribute-map wfy
此时到R4上再看一下
以上就是关于BGP路由汇总的内容,
-------------------------------------------
CCIE成长之路 --- 梅利