特点:
1、只要在BGP路由表中存在的路由,都能被手动汇总。
2、可以实现精确汇总,可以支持CIDR(超网)。
3、可以对汇总路由的属性做编辑。
4、可以继承明细路由的相关属性,防止环路
5、明细路由全部失效,汇总路由才会失效。
因为BGP在做路由汇总的时候丢失了AS_Path属性,导致一旦AS 300 10.1.10.0/24明细路由失效,通过聚合会引起环路。
解决办法就是继承明细路由的AS_Path属性,如果AS300在接收到10.1.0.0/16的路由里收到了来自自身的AS标记,就会直接丢弃防环。
还是之前的拓扑
我们输入命令
将上次做的自动汇总取消掉,
这样我们查看BGP路由表,
我们发现这次标识是聚合路由,但是它丢失了AS_Path属性,并且汇总路由做了之后,。明细路由还是会发送出去
我们需要继续设置,抑制明细路由并且继承明细路由的AS号
我们此时查看邻居bgp路由表
查看被抑制的明细路由
我们先将R2上的一条静态路由进行undo操作,不发布
再undo另一条
我们甚至可以给聚合路由添加策略
继续试验,我们可以复原之前在R2上做的ip配置。做以下实验,我们之前在R1上配置了192.168.的环回口,现在我们在R2上也开始配置环回口
因为我们设置的手动汇总路由是掩的22位,说明只有192.168.0/1/2/3可以进行手动汇总,我们添加的R2里的ip add 192.168.4.1 24不会被掩到。
能汇总的就会汇总起来。
我们继续做一个
as-path 表明路由传递的AS的次序,有序的
as-set { }无序的AS-PATH,防止环路用的,并不表明路由传递的次序。
{ }中的AS号,只算1个AS长度。
但是我们现在发现,R3和R4可以正常访问R1和R2的环回口路由,但R1,R2却因为AS-Path机制无法进行互访。
主要的策略思想就是在走10.1.13.1 的时候把策略 192.168.0.0 21的AS path属性改为2
走10.1.23.2 的时候把策略 192.168.0.0 21的AS path属性改为1
BGP的路由聚合有两种方法:1.可以在IGP路由表中静态的添加一条去往NULL 0的路由,这条路由就是你想要汇总的路由,然后在BGP中NETWORK一下,这样就可以完成路由聚合了。2.可以在BGP中使用aggregate-address命令,把你要汇总的路由写进去,最好在后面加上only-summary和as-set这样可以防止路由环路。如果不想把所有的精确路由都抑制掉,那么可以在后面使用SUPPRESS-MAP来调用ROUTE-MAP过滤路由。希望对你有用。我们上节,做了实验,现在再来梳理几个点,之前AS1和AS234进行互联线路(R1-->R2)中,我们并没有将R2的g0/0/0接口加入到IGP协议中,然后我们在R2、3、4路由配置ISIS协议,并且将R2和R4安置在AS234的BGP环境中,R3不运行BGP协议。AS之间走EBGP,以此来模拟EBGP、IBGP、IGP之间的联系。R1创建一条环回口路由,利用network发布到BGP,此时R1的BGP路由表中插入了一条关于该路由的最优标识,利用
R2的BGP路由表也可以查看到该路由。
R2在路由表中查看有去往该路由下一跳的唯一路由,所以该路由在R2的BGP路由表中名副其实的也是带*>的有效最优路由,符合
R4于此同时也可以收到R1产生的这条路由,但是这条路由在路由表中是否是最优的?还有待商榷。
我们查看R4路由表发现BGP路由表中该路由的下一跳并不在IGP路由表中,因此它在存放时没有有效符号标识更谈不上最优,由此对外的表现就是当这条路由到R4在路由表中命中的时候,会查询该路由的下一跳,发现下一跳竟然还是10.1.12.1,查询路由表,并没有找到相关记录,下一跳不可达就无法转发。原来我们少了解了一个原则,从EBGP邻居传过来的路由传给IBGP邻居时,下一跳默认不变。为什么会出现这种情况呢,这和我们开头做的限制也有一定的关系,就是我们并没有将R2的g0/0/0接口加入到IGP协议中,如果我们把R2 g0/0/0加入到IGP协议中,那么同在IGP协议下的R4的g0/0/0就可以算出到R2g0/0/0的路由,这样就不会产生这个下一跳不可达的现象。其实在生产环境中也是如此,我们默认在EBGP的AS之间的互联口不加入IGP协议。
解决方案1:
路由不可达,我们就做一条路由让它可达,也就是在R4上将这个下一跳指向自己的g0/0/0接口配置的10.1.34.4,这样通过IBGP协议我们就可以轻松的进行路由选择。
缺陷:BGP路由一般是十万条起步,这么庞大的路由我们无法进行逐条的手工配置。
解决方案2:
我们可以利用R2这个路由,针对IBGP邻居做一条next-hop-local
该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址,
再次查看R4、R5的BGP路由表,如预想的一般。
我们看R2的路由,发现虽然R4收到了R2发过来的最优路由,但是并没有向R2再次发送,这样就避免了产生环路,!!!也就是
继续我们的猜想,R4通过EBGP将最优的路由传递给了它的BGP邻居。R5上现在可以从BGP路由表中查到去往1.1.1.0的路由,而且下一跳也是对的。
此时我们以为现在总可以访问R1的环回口了吧,我们进行ping命令,wac为啥不通???
我们往上查,看下R4是否可以ping通。R4此时也不可以,为什么会出现这个原因呢?
我们看它的下一跳所在路由表的路由,发现了一切
在这个拓扑图中,BGP传播路由是可以跨路由器传递的,A路由器可以将路由通过EBGP传递给B,B可以通过IBGP传递给D,因为B路由器到D路由器有运行OSPF协议,路由可达,D再次通过EBGP传递给E。
但是C路由器上却没有A路由器100.0.o.o的路由,因为C路由器没有运行BGP协议。
这样就会导致E路由器在回包的时候,将100.0.o.o的路由先发送给D,D继续转发给C,C直接丢弃。这就出现了BGP的路由黑洞。最终导致R3上没有去往1.1.1.0的路由。
对的!路由黑洞了,这个时候我们会想起来,
哦哦,我们需要进行
我们在R2上做一个同步
第一种方案,我们将BGP引入到IGP协议中,
此时我们继续测试ping 1.1.1.1 发现还是不通,
观察R4BGP的配置,发现其中有一个命令是,
其实,同步功能在华为设备中一直都是关闭的状态,没有开启的命令,同步同步并不影响R4的BGP路由1.1.1.1传递给R5.
此时我们在R5上也创建一个环回口
R4:与R1 的1.1.1.0一样,利用next-hop-local 将R4发往R2的下一跳改变,
peer 2.2.2.2 next-hop-local
isis协议中引入BGP
[R4-isis-1]dis this
[V200R003C00]
isis 1
is-level level-2
network-entity 49.0004.0000.0000.0004.00
import-route bgp
向所有BGP邻居手动触发路由更新
<R4>refresh bgp all export
我们通过R5
1、同步功能只能通过bgp路由黑洞检测机制,但是并不是解决路由黑洞。
2、这种方法目前已经被淘汰,如果BGP路由表产生振荡,会对IGP造成影响。
第二种方案:
我们将R2、R4上引入配置IGP配置取消
R4同
R3\ R4自己配
三条命令缺一不可
只要解决路由黑洞问题,BGP同步检查功能开启或者关闭无足轻重。
我们再做个小测试,我们现在可以通过1.1.1.1 访问到5.5.5.5,
是因为在几个BGP AS中,路由是通的,但是1.1.1.1 可以访问4.4.4.4 么?
测试之后 发现不可以。为什么呢?因为在BGP AS:234中4.4.4.4并没有发布出去
所以BGP路由访问的基本逻辑,你要是想别人能访问你,你就要把这条路由发布出去,然后再避免路由黑洞。我们发布出去,ping 4.4.4.4 1.1.1.1 还是不通,我们就需要自己再思考思考了
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)