上面的参数很容易混淆,简单的说就是一个匹配前缀或子网的地址的范围。
看下面的例子:
ipprefix-listLISTpermit1.2.3.0/24le32
上面的例子表示前缀1.2.3.0前面的24位必须匹配。
此外,子网掩码必须小于或等于32位
ipprefix-listLISTpermit0.0.0.0/0le32
上面的例子意味着0位需要匹配,此外子网掩码必须小于或等于32位。
因为所有的网段的掩码都小于或等于32位,并且一位都不用匹配,所以这句话等于permitany
ipprefix-listLISTpermit10.0.0.0/8ge21le29
上面的例子说明网段10.0.0.0的前8位必须匹配,此外子网掩码必须在21位和29位之间。
注意:
使用前缀列表不能像访问列表那样匹配具体的应用流。
前缀列表也不能用来具体匹配奇数或偶数的前缀,或什么可以被15整除的前缀
在前缀列表中,比特位必须是连续的,并且从左边开始
ipprefix-listfuckpermit0.0.0.0/0ge1
表示除了默认路由外的所有路由
ipprefix-listtest16seq5permit/1ge8le8
配置A类地址
ipprefix-listtest16seq10permit/2ge16le16
配置B类地址
ipprefix-listtest16seq15permit/3ge24le24
配置C类地址一、前缀列表的特点:
(1)、可以增量修改,我们知道对于普通访问控制列表,我们不能删除该列表中的某个条目,如果想删除列表中的某个条目只能将该访问列表全部删除,而前缀列表中,一个条目可以单独地删除或添加。
(2)、前缀列表在CiscoIOS及其以后的版本中可以使用。
(3)、在大型列表的加载和路由查找方面比访问控制列表有显着的性能改进。
(4)、前缀列表用于BGP路由。
二、前缀列表的命令描述
(1)、ipprefix-listlist-name[seqseq-value]{deny|permit}network/len[gege-value][lele-value]
listname代表被创建的前缀列表名(注意该列表名是区分大小写的)
seq-value代表前缀列表语名的32bit序号,用于确定过滤语句被处理的次序。
缺省序号以5递增(5,10,15等等)。
deny|permit代表当发现一个匹配条目时所要采取的行动
network/len代表要进行匹配的前缀和前缀长度。
Network是32位的地址,长度是一个十进制的数。
ge-value代表比“network/len”更具体的前缀,要进行匹配的前缀长度的范围。
如果只规定了“ge”属性,该范围被认为是从“ge-value”到32。
le-vlaue代表比“network/len”更具体的前缀,要进行匹配的前缀长度的范围。
如果只规定了“le”属性,该范围被认为是从“len”到“le-value”。
(2)、neighbor{ip-address|peer-group-name}prefix-listprefix-listname{in|out}
ip-address代表要为之进行路由过滤的BGP邻居的IP地址。
peer-group-name代表BGP对等体组的名称。
prefix-listname代表要被用来过滤路由的前缀列表的名称。
in说明前缀列表要被应用在来自邻居的入路由通告。
out说明前缀列表要被应用在发送给邻居的外出的路由通告。
三、在“ipprefix-list”命令中“ge”和“le”任选项的使用可能令人迷惑,理解起来比较难,下面我们做了一个测试,以便更好的了解这些选项的含义。
网络拓朴描述如下:
A属于AS65000,B与路由器C是路由器A的邻居,路由器A从路由器B学到了,/24,这两条路由,路由器C接路由器A的端口地址是:
10.1.1.1
在这个测试中使用了3台路由器:
路由器B,路由器A和路由器C,路由器C是路由器A的EBGP邻居,路由器C的接口地址为,如上所示。
假设配置前缀列表之前,路由器A学到了下面的路由(从路由器B那里学来的):
subnetted:
/24
/24
我们测试了如下5种情况:
第一种情况、在这种情况下,对路由器A做了如下配置:
routerbgp65000
aggregate-address
neighborprefix-listtenonlyout
inprefix-listtenonlypermit/8le24
当用“showrun”命令查看路由器的配置时,我们将看到路由器A自动地将这个配置的最后一行改为下面这样:
ipprefix-fixtenonlypermit/8le24
这时路由器C学到了三个路由器,即:
/16
/24
/24
下面就祥细的说明一下路由器C为什么会学到这三条路由:
因为我们在路由器A中用aggregate创建了一条聚合路由器/16,
而且在使用这个命令的时候没有加参数summary-only所以,路由器A的EBGP邻居,即路由器C有可能学到三条路由,即聚合路由/16,具体路由/24,
具体路由/24。
在命令“inprefix-listtenonlypermit/8le24”中,len等于8,len-value等24,。
前面我们说过对于比“network/len”更具体的前缀,要加上参数len-value,如果只规定了“le”属性,该范围被认为是从“len”到“le-value”,这里的8和24是长度的概念,即可以精确匹配前8位,前9位,前11位,…….一直到可以精确匹配前24位。
/16被认为是精确匹配了前16位,而/24和/24则被认为是精确匹配了前24位,如果是/8则被认为是精确匹配了前8位,即这里的8至24可是掩码位的概念,就是说从路由器C的角度上来说,我可以学到路由器A的BGP路由表中的掩码为/8,/9,/10,/11,/12,/13,/14,/15,/16,/17,/18,/19,/20,/21,/22,/23,/24的路由器,所以在这种情况下路由器C学到了三条路由即:
/16
/24
/24
第二种情况、在这种情况中,对路由器A做了如下配置:
routerbgp65000
aggregate-address
neighborprefix-listtenonlyout
inprefix-listtenonlypermit/8le16
在这里从路由器C的角度来说,我有可能学到的路由是/16,/24
,/24,但实际我只学到/16这一条路由器,原因是,len-value的值已经改为16,即我只能学到掩码为/8,/9,/10,/11,/12,/13,/14,/15,/16的路由,在上面的三条路由中,符合条件的只有/16,所以路由器C只学到/16这一条路由。
第三种情况、在这个情况中,对路由器A做了如下配置:
routerbgp65000
aggregate-address
neighborprefix-listtenonlyout
inprefix-listtenonlypermit/8ge17
在这里从路由器C的角度来说,我有可能学到的路由是/16,/24,/24,但路由器C只学到/24,/24这两条路由,为什么呢,这是因为这里ge-value的值为17,它精确匹配前17位,前19位,前20位,一直可以精确匹配前32位,即从路由器C的角度上来看,我能说到路由器A中的BGP路由表中的掩码为/17,/18,/19,/20,/21,/22,/23,/24,/25,/26,/27,/28,/29,/30,/31,/32的路由,所以路由器C学到了两条路由:
/24,/24。
第四种情况、在这个情况中,对路由器A做了如下配置:
routerbgp65000
aggregate-address
neighborprefix-listtenonlyout
inprefix-listtenonlypermit/8ge16le24
在这里从路由器C的角度来说,我有可能学到的路由是/16,/24,/24,路由器C能从路由器A的BGP路由表中学到掩码为
/16,/17,/18,/19,/20,/21,/22,/23,/24的路由,以上三条路由都符合条件,所以都被路由器C学到了。
第五种情况、在这个情况中,对路由器A做了如下配置:
routerbgp65000
aggregate-address
neighbor10.1.1.1prefix-listtenonlyout
inprefix-listtenonlypermit/8ge17le24
在这里从路由器C的角度来说,我有可能学到的路由是/16,/24,/24,路由器C能从路由器A的BGP路由表中学到掩码为/17,/18,/19,/20,/21,/22,/23,/24的路由,以上三条路由中只有/24,/24符合条件,所以路由器C学到了/24,/24这两条路由。
看下面的例子:
ipprefix-listLISTpermit/24le32
上面的例子表示前缀前面的24位必须匹配。
此外,子网掩码必须小于或等于32位
ipprefix-listLISTpermit/0le32
上面的例子意味着0位需要匹配,此外子网掩码必须小于或等于32位。
一位所有的网段的掩码都小于或等于32位,并且一位都不用匹配,所以这句话等于permitany
ipprefix-listLISTpermit/8ge21le29
上面的例子说明网段的前8位必须匹配,此外子网掩码必须在21位和29位之间。
注意:
使用前缀列表不能像访问列表那样匹配具体的应用流。
前缀列表也不能用来具体匹配奇数或偶数的前缀,或什么可以被15整除的前缀
在前缀列表中,比特位必须是连续的,并且从左边开始
ipprefix-listfuckpermit/0ge1
表示除了默认路由外的所有路由
ipprefix-listtest16seq5permit/1ge8le8
配置A类地址
ipprefix-listtest16seq10permit/2ge16le16
配置B类地址
ipprefix-listtest16seq15permit/3ge24le24配置C类地址