下面是一条标准的prefix-list,我们着重对之进行分析:


ip prefix-list 100 permit 128.0.0.0/2 ge 16 le 24
ge=greater or equal   le=less or equal

1、R1(config)#ip prefix-list ?
  WORD             Name of a prefix list
  sequence-number  Include/exclude sequence numbers in NVGEN

R1(config)#ip prefix-list 100 ?
  deny         Specify packets to reject
  description  Prefix-list specific descriptin
  permit       Specify packets to forward
  seq          sequence number of an entry
基本的格式上和ACL还是差不多的。


2、关键的对于128.0.0.0/2的这个/2代表了什么含义?
128.0.0.0 换成2进制数为10 000000  00000000  00000000 00000000
/2代表只对前面的2位必须match,即,前2位是不变的,在不带ge 16 le 24的情况下,prefix-list里的128.0.0.0/2 代表的是一个范围,是从128.0.0.0/7到223.255.255.252/30,而加上ge 16 le 24,的意思就是ip地址mask从 /16到/24

下面是几个例:

prefix-list 100 permit 0.0.0.0/0 代表的是所有路由
prefix-list 100 permit 0.0.0.0/32 代表的是默认路由
prefix-list 100 permit 0.0.0.0/0 ge 32代表的是所有host路由

ip prefix-list test permit 0.0.0.0/0 ge 1            表示除了默认路由外的所有路由

ip prefix-list test16 seq 5 permit 0.0.0.0/1 ge 8 le 8                配置A类地址

ip prefix-list test16 seq 10 permit 128.0.0.0/2 ge 16 le 16      配置B类地址

ip prefix-list test16 seq 15 permit 192.0.0.0/3 ge 24 le 24      配置C类地址


3、在ACL里,128.0.0.0/2是什么含义?
下面是128.0.0.0的2进表达表示
10 000000  00000000  00000000 00000000
在ACL里,permit 128.0.0.0/2,那就没意义了,要使得128.0.0.0,最小的mask位数为7位(2的7次是128)

4、其实ACL也有方法定义一个范围,以实现类似prefix-list的功能。
access-list 10 permit 199.172.0.0 0.0.3.0,这里这个0.0.3.0,即起了一个定义范围的作用,0表示match,1表示不关心。这样的话,199.172.0.0 这个被定义物里,前16个bit和最后8个bit都是被定死的
,唯独第三段的最后2bit是不关心的,可以变换,所以结果就是:

199.172.0.0
199.172.1.0 
199.172.2.0
199.172.3.0

 per 199.172.1.0 0.0.254.0  奇数路由
 per 199.172.0.0 0.0.254.0  偶数路由

A bit mask used in access rules, IPSec rules, and NAT rules to specify which portions of the packet's IP address must match the IP address in the rule 


例:
1.1.1.1/8 ge 16 le 32  前缀列表的意思是
意义是 /8表示必须从参考的IP中匹配前8个2进位,因此所匹配的路由是1开头实际匹配的是00000001,刚好8位。但是后头定义的是路由前缀的范围,意义是,如果有路由是1.1.1.0/8 那这样的情况是不符合定义的,为什么因为他的前缀 是8,而不是大于16 小于32 的范围。所以它不能通过,那1.1.1.0/9呢?一样也不是范围内的,那1.1.1.0/17呢?这条路由可以pass理由是他的前缀大于了16,小于 32,那如果是2.2.2.0/17呢,这样的情况虽然你的前缀符合了定义,但是你的路由是2.x.x.x的不符合我的参考IP,前8个2进,必须以 00000001,即等于1.x.x.x,然后才有资格看前缀是否符合了,因此总结:前缀列表由2个部分组成,1是参考的IP,以及匹配参考IP位数的掩码,比如刚才你要想匹配住2.x.x.x 那我们只需要
写1.1.1.0/6 ge 7 le 32这样的话,就是匹配了,参考IP1.1.1.0中的前6个2进即,00000001中的000000xx.x.x 即可以是00000000,00000001,00000002,00000003开头的IP路由。再来就是前缀范围,这次的前缀范围也变大了,是大于 7,这样的话。很多路由都会被匹配如2.2.2.2/8 这个路由也会PASS了。