天天看点

03-8 BGP的前缀告警门限/前缀列表

该文档涉及的命令有:

neighbor x.x.x.x maximum-prefix prefix-limit

neighbor x.x.x.x maximum-prefix prefix-limit warning-only

neighbor x.x.x.x maximum-prefix prefix-limit threshold-value

neighbor x.x.x.x maximum-prefix prefix-limit threshold-value warning-only

ip prefix-list 的ge和le的用法.

这几个命令都是关于对路由器的性能保护的命令。

作用就是当路由器接收到了设置的前缀上限的时候,那么就应该停止接收前缀,并且发出告警等一系列的动作,是让邻居down还是其他动作。

<b>官方解释:这些命令是用来限制特定邻居的前缀数量的,一旦达到</b><b>Threshold-value</b><b>的时候,便会生成一条路由器告警信息,比如说</b><b>prefix-limit</b><b>设置为</b><b>1000,threshold-value</b><b>设置为</b><b>75%,</b><b>那么到路由器从邻居收到了第</b><b>751</b><b>条路由的时候,路由器将产生一条告警信息。要是从邻居那里收到的前缀数目超过了</b><b>prefix-limit</b><b>的话,路由器会中断与邻居之间的</b><b>bgp</b><b>连接。如果使用了</b><b>warning-only</b><b>选项,那么当接收到了超过前缀限制值的时候,路由器会产生一条告警消息</b><b>,</b><b>但是邻居的连接是不会中断的。</b>

下面用一个实例来验证一下这几个命令的功能:

在这个拓扑图中,R2会通告给R1一共8条路由。

有四条是R2自己产生的,有4条是R3通告给R2的。R1和R1是EBGP关系,所以R2会将所有的路由都通告给R1.

这个时候假如说R1路由器的性能很有限制。如果接收了8条路由以后,设备的内存,处理器对数据包的转发都供应不过来的时候。那么久需要设置bgp的条目限制了。

现在需要在R1上面设置最多能接收7条路由----如果超过了7条路由就立马告警.

R1#sh run | be router bgp

router bgp 1

no synchronization

bgp log-neighbor-changes

neighbor 10.1.1.2 remote-as 2011

<b>neighbor 10.1.1.2 maximum-prefix 7 warning-only</b>

no auto-summary

首先来解析一下这个命令,

如果光是命令neighbor 10.1.1.2 maximum-prefix 7

就是说,如果当从bgp邻居10.1.1.2收到了多余7条的bgp前缀的话,那么bgp邻居就直接断开。这样是为了保护设备。但是如果后面加入了warning-only的话,就是如果从邻居10.1.1.2学习到超过7条 的bgp路由前缀的时候,只是发送告警,但是bgp邻居不会断连.

还有一个就是告警门限.

第一条命令是设置告警门限。

如果设置的最大接收bgp前缀的条目是1000,那么默认threshold是75%.

如果超过75%,那么bgp邻居断开连接。

如果加上warning-only的话,就只会提示一条信息。并且记录到日志里,但是不会对邻居造成任何影响。

<b>3-8-1 ip prefix </b><b>列表的</b><b>ge</b><b>和</b><b>le</b><b>的用法</b><b>.</b>

拓扑图依旧,在R1上面应该收到9条路由。

因为R2上面做了一条聚合路由。172.16.0.0/22

R1上面如果邻居建立好了以后,应该能收到9条路由,分别如下:

*&amp;gt; 172.16.0.0/24 10.1.1.2 0 0 2011 i

*&amp;gt; 172.16.0.0/22 10.1.1.2 0 0 2011 i

*&amp;gt; 172.16.1.0/24 10.1.1.2 0 0 2011 i

*&amp;gt; 172.16.2.0/24 10.1.1.2 0 0 2011 i

*&amp;gt; 172.16.3.0/24 10.1.1.2 0 0 2011 i

*&amp;gt; 198.16.0.0 10.1.1.2 0 2011 3 i

*&amp;gt; 198.16.1.0 10.1.1.2 0 2011 3 i

*&amp;gt; 198.16.2.0 10.1.1.2 0 2011 3 i

*&amp;gt; 198.16.3.0 10.1.1.2 0 2011 3 i

<b>需求一:现在的需求是,在</b><b>R2</b><b>上面做过滤,最后只能让</b><b>R1</b><b>收到一条汇总路由</b><b>22</b><b>位的掩码</b><b>.</b>

在路由器2上面:

R2#sh run | be router bgp

router bgp 2011

network 172.16.0.0 mask 255.255.255.0

network 172.16.1.0 mask 255.255.255.0

network 172.16.2.0 mask 255.255.255.0

network 172.16.3.0 mask 255.255.255.0

<b>aggregate-address 172.16.0.0 255.255.252.0</b>

neighbor 10.1.1.1 remote-as 1

neighbor 10.1.1.1 prefix-list aaa out

neighbor 10.1.2.2 remote-as 3

<b>ip prefix-list aaa seq 5 permit 172.16.0.0/22</b>

这样做的话,那么R2就只会通告一条22位掩码的路由给R1去了,所以最后R1收到的不是9条路由,而是一条明细路由.

<b>需求二:接收明细路由</b><b>8</b><b>条,过滤汇总路由一条</b><b>.</b>

之前我们都看到,如果没有做任何过滤规则的话,那么应该是R1能收到9条bgp路由前缀的,现在的需求是,收8条24位掩码的明细路由,过滤那条汇总路由22位掩码的。

这里不得不说到,ip prefix的语法里面,有一个ge,还有一个le。

当然,有两种方法。一种很笨,一种比较轻松。

这里如果要允许明细送过来,最笨的方法就是:

ip prefix aaa permit 172.16.0.0/24

ip prefix aaa permit 172.16.1.0/24

ip prefix aaa permit 172.16.2.0/24

ip prefix aaa permit 172.16.3.0/24

ip prefix aaa permit 192.16.0.0/24

ip prefix aaa permit 192.16.1.0/24

ip prefix aaa permit 192.16.2.0/24

ip prefix aaa permit 192.16.3.0/24 然后将这个列表应用到邻居的in或者出方向.

最后都有隐藏了deny any any的语句。这样R1就可以接收到8条明晰路由了。

但是假设路由器送过来的是1000条明晰加100条汇总,还能用这样的方法去写吗?

<b>首先来说明一下参数:</b>

<b>ge </b><b>:长于或者等于</b>

<b>le : </b><b>短于或者等于。</b>

最后,在R2上面的配置为:

aggregate-address 172.16.0.0 255.255.252.0

<b>neighbor 10.1.1.1 prefix-list aaa out</b>

!

<b>ip prefix-list aaa seq 5 permit 172.16.0.0/22 ge 24</b>

<b>ip prefix-list aaa seq 10 permit 198.16.0.0/22 ge 24</b>

这两条命令的意思是,匹配172.16.0.0/22的掩码的路由,并且只有长于或者等于24位的掩码的路由才能生效。

最后在R1上面看结果:

刚好8条,那条172.16.0.0的汇总路由没有了。

本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/722264

继续阅读