该文档涉及的命令有:
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还是其他动作。
官方解释:这些命令是用来限制特定邻居的前缀数量的,一旦达到Threshold-value的时候,便会生成一条路由器告警信息,比如说prefix-limit设置为1000,threshold-value设置为75%,那么到路由器从邻居收到了第751条路由的时候,路由器将产生一条告警信息。要是从邻居那里收到的前缀数目超过了prefix-limit的话,路由器会中断与邻居之间的bgp连接。如果使用了warning-only选项,那么当接收到了超过前缀限制值的时候,路由器会产生一条告警消息,但是邻居的连接是不会中断的。
下面用一个实例来验证一下这几个命令的功能:
在这个拓扑图中,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
neighbor 10.1.1.2 maximum-prefix 7 warning-only
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邻居不会断连.
还有一个就是告警门限.
neighbor x.x.x.x maximum-prefix prefix-limit threshold-value
neighbor x.x.x.x maximum-prefix prefix-limit threshold-value warning-only
第一条命令是设置告警门限。
如果设置的最大接收bgp前缀的条目是1000,那么默认threshold是75%.
如果超过75%,那么bgp邻居断开连接。
如果加上warning-only的话,就只会提示一条信息。并且记录到日志里,但是不会对邻居造成任何影响。
3-8-1 ip prefix 列表的ge和le的用法.
拓扑图依旧,在R1上面应该收到9条路由。
因为R2上面做了一条聚合路由。172.16.0.0/22
R1上面如果邻居建立好了以后,应该能收到9条路由,分别如下:
*> 172.16.0.0/24 10.1.1.2 0 0 2011 i
*> 172.16.0.0/22 10.1.1.2 0 0 2011 i
*> 172.16.1.0/24 10.1.1.2 0 0 2011 i
*> 172.16.2.0/24 10.1.1.2 0 0 2011 i
*> 172.16.3.0/24 10.1.1.2 0 0 2011 i
*> 198.16.0.0 10.1.1.2 0 2011 3 i
*> 198.16.1.0 10.1.1.2 0 2011 3 i
*> 198.16.2.0 10.1.1.2 0 2011 3 i
*> 198.16.3.0 10.1.1.2 0 2011 3 i
需求一:现在的需求是,在R2上面做过滤,最后只能让R1收到一条汇总路由22位的掩码.
在路由器2上面:
R2#sh run | be router bgp
router bgp 2011
no synchronization
bgp log-neighbor-changes
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
aggregate-address 172.16.0.0 255.255.252.0
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
no auto-summary
ip prefix-list aaa seq 5 permit 172.16.0.0/22
这样做的话,那么R2就只会通告一条22位掩码的路由给R1去了,所以最后R1收到的不是9条路由,而是一条明细路由.
需求二:接收明细路由8条,过滤汇总路由一条.
之前我们都看到,如果没有做任何过滤规则的话,那么应该是R1能收到9条bgp路由前缀的,现在的需求是,收8条24位掩码的明细路由,过滤那条汇总路由22位掩码的。
这里不得不说到,ip prefix的语法里面,有一个ge,还有一个le。
当然,有两种方法。一种很笨,一种比较轻松。
*> 172.16.0.0/24 10.1.1.2 0 0 2011 i
*> 172.16.0.0/22 10.1.1.2 0 0 2011 i
*> 172.16.1.0/24 10.1.1.2 0 0 2011 i
*> 172.16.2.0/24 10.1.1.2 0 0 2011 i
*> 172.16.3.0/24 10.1.1.2 0 0 2011 i
*> 198.16.0.0 10.1.1.2 0 2011 3 i
*> 198.16.1.0 10.1.1.2 0 2011 3 i
*> 198.16.2.0 10.1.1.2 0 2011 3 i
*> 198.16.3.0 10.1.1.2 0 2011 3 i
这里如果要允许明细送过来,最笨的方法就是:
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条汇总,还能用这样的方法去写吗?
首先来说明一下参数:
ge :长于或者等于
le : 短于或者等于。
最后,在R2上面的配置为:
router bgp 2011
no synchronization
bgp log-neighbor-changes
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
aggregate-address 172.16.0.0 255.255.252.0
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
no auto-summary
!
ip prefix-list aaa seq 5 permit 172.16.0.0/22 ge 24
ip prefix-list aaa seq 10 permit 198.16.0.0/22 ge 24
这两条命令的意思是,匹配172.16.0.0/22的掩码的路由,并且只有长于或者等于24位的掩码的路由才能生效。
最后在R1上面看结果:
刚好8条,那条172.16.0.0的汇总路由没有了。