前缀 172.16.12.0 通配符 0.0.0.0 通配符bits位为0==match
172.16.13.0 0.0.0.0 bits位为1==ignore
172.16.14.0 0.0.0.0
172.16.15.0 0.0.0.0
匹配上面的四条路由用访问控制列表是 172.16.x.x 0.0.x.x
前缀 通配符
前缀:相同是几就是几,不同为0
通配符:相同为0,不同为1
172.16.12.0==172.16.0000
1100.0
172.16.13.0==172.16.0000
1101.0
172.16.14.0==172.16.0000
1110.0
172.16.15.0==172.16.0000
1111.0
前缀172.16.x.0
通配符0.0.x.0
蓝色标记的两个1bits是相同的前缀相同是几就是几所以这两个bits==12,后面的两位不同为0,所以前缀就是12.0
绿色标记的两个bits位是不同的,所以通配符不同为1,这两个bits==3,这两个bits前面的bits和后面的bits都相同,所以为0
前缀:172.16.12.0
通配符:0.0.3.0
所以访问控制列表:access-list 1 permit 172.16.12.0 0.0.3.0
//路由条目验算:匹配路由条目是n=2
m,m=通配符中的bits位1。
//access-list 1 permit 172.16.12.0 0.0.0.0是正确的
Access-list 1 permit 172.16.12.0 0.0.0.255 是错误的
通配符和前缀是一体的,匹配的是前缀,而不是掩码
//access-list 1 permit 3.3.3.0 0.0.0.0
标准列表匹配的是前缀,所以匹配的是3.3.3.0这个前缀。
对于/25、26、27、28等掩码包含的IP范围,都包含在3.3.3.0这个前缀里的,是无法区分/25、26、27、28等掩码的IP;所以说标准列表匹配的只是前缀,是不能匹配掩码的。
比如:3.3.3.0 0.0.0.0,现在只是匹配3.3.3.0这个前缀,在3.3.3.0网段里的3.3.3.10/25或3.3.3.234/26,是无法区分的,标准列表无法匹配这两个路由,只能匹配3.3.3.0整个前缀网段的路由。
//如果要在匹配前缀的情况下,还要匹配掩码/24、25、26、27等来区分掩码的话,就要使用前缀列表。
Ip prefix-list A permit 172.16.12.0/24 ge xx le xx
Ge 24 le 24就==掩码长度/24,但是ge 24和le 24是无法执行的(ge与le后面的数字不能相同)。
如果要执行ge 24和le 24的话,不写ge和le命令即可:ip prefix-list A permit 172.16.12.0/24。
如果只写一个ge 25不写le的话,默认le就等于32。
如果只写le 26的话,不写ge,ge默认=前最长度/24,就是ge 24 le 26的概念。
// 匹配的路由条目数==当ge=le时,用ge或le减去length==x,2的x次方==匹配的路由条目数。
Ip prefix-list 172.16.12.0/24的条目数为1条;因为ge=le==24,24减去length24==0,路由条目数==2的0次方==1,所以说现在只匹配了一条路由172.16.12.0/24(现在不只匹配了前缀,还匹配了172.16.12.0的/24掩码路由,就是只匹配了172.16.12.0路由掩码为/24的,如果是172.16.12.0中掩码为/25、26等路由是没有被匹配住的)
//172.16.12.0/22的匹配
172.16.12.0/24
172.16.13.0/24
172.16.14.0/24
172.16.15.0/24
172.16.00001100.0 根据前缀原则,相同是几就是几,不同为0,所以前缀是172.16.12.0
10101100.00010000.00001100.00000000它们的公共长度是/22(公共长度就是就是前缀长度)
前缀加上公共长度就是172.16.12.0/22
Ip prefix-list A permit 172.16.12.0/22 ge 24 le 24 //ge或le==24减去length/22==2,2的2次方==4,匹配4条路由条目;匹配了12.0,13.0,14.0,15.0掩码为24的4跳路由。
/22匹配的是前缀,Ge和le匹配的是掩码。
//172.16.12.0/22 ge 25 le 25
172.16.12.0/25
172.16.13.0/25
172.16.14.0/25
172.16.15.0/25
前缀:172.16.12.0
前缀长度:/22
匹配掩码为25的路由
Ip prefix-list A permit 172.16.12.0/22 ge 25 le 25 //匹配了前缀为172.16.12.0/22,掩码为25的路由;/24、/26等是不会被匹配住的。
//如果是标准列表access-list 1 permit 172.16.12.0 0.0.3.0的话,会将172.16.12.0路由,掩码为/24、/25、/26等都匹配住,不会区分掩码的
//之前介绍过匹配掩码为/24的和/25的,要写两条前缀列表ge24,le24和一个ge25,le25的前缀列表;现在可以通过写一条ge24 le25的前缀列表来匹配/24和/25的掩码路由。
Ip prefix-list A permit 172.16.12.0/22 ge 24 le 25
可是这样验算匹配路由条目的方法就发生了变化,因为现在ge≠le,
就不能用ge=le时,用le或ge减去length=x,2的x次方=匹配的路由条目。
当ge不等于le时:a=le减length,z=ge减length
公式:条目数=2的a次方+・・・・+2的z次方
172.16.12.0/22 ge 24 le 25就是2
2+2
3=12 //匹配的路由条目数为12个。
可是公式里的"・・・"代表的是什么呢?
比如所ge 24 le 26,就不是2
2+2
4了,它们之间有一个25,所以是2
2+2
3+2
4=匹配的路由条目数28
//在IGP中是无法使用ge 24 le 25的,只有在BGP中才可以使用
172.16.12.0/24
172.16.13.0/24
172.16.14.0/24
172.16.15.0/24
172.16.12.0/25
172.16.13.0/25
172.16.14.0/25
172.16.15.0/25
现在是8条路由,要匹配的/24和/25的话就要用172.16.12.0/22 ge 24 le 25
可是ge-22=2,le-22=3;2
2+2
3=12,匹配了12个路由条目
多出了172.16.12.128/25,172.16.13.128/25,172.16.14.128/25,172.16.15.128/25这4条路由条目;
至于为什么多出的是/25的这几条路由路由条目,那是因为ge 24匹配的是12.0掩码为/24的路由,2的2次方正好4条路由;le 25匹配的是12.0掩码为25的路由,2的3次方=8,匹配8条路由,分别是网络号为12.0/25的4条,还有网络号为12.128的4条。
针对掩码为/24(ge24)的路由前缀进行匹配:
172.16.00001100.00000000 /22 被蓝色标记的两个bits是变动值,因为ge24减length22=2,所以是两个变动值,变动值前面红色标记的bits会被锁死为172.16.12的。对于掩码为/24的路由可以匹配12.0―15.0这4条路由,匹配的条目数正好,不多也不少;
针对掩码为/25(le25)的路由前缀进行匹配:
172.16.00001100.00000000 /22 被蓝色标记的三个bits是变动值,因为le25减length22=3,所以是三个变动值,变动值前面红色标记的bits会被锁死为172.16.12的。对于掩码为/25的路由可以匹配12.0―15.0这4条,还有12.128―15.128这4条路由,共8条,所以在匹配172.16.12.0/25路由时会多出12.128―15.128这4条路由的。
在IGP中是无法将
172.16.00000011.
00000000 标记为红色的两个部分同时锁死的,就是说前缀是不能被跳着匹配的,只能匹配172.16.000000这个部分。由于掩码是25,第4个byte的第一个0是会被借去的,所以是2的3次方==8条路由条目,多出了4条。
在BGP中的扩展列表
Access-list 100 permit ip x.x.x.x a.a.a.a y.y.y.y b.b.b.b
前缀 通配符 掩码 通配符
在BGP中扩展列表是用通配符匹配前缀和掩码
通配符是可以跳着匹配前缀的:
172.16.00001100.
00000000 /22前缀可以被掩码跳着匹配(锁死),而源和目的是不会跳着匹配的。第4个byte的第一个0被锁死后是无法被借走的。
例如:access-list 100 permit ip 172.16.12.0 0.0.3.0 255.255.255.0 0.0.0.127
172.16.12.0 0.0.3.0==172.16.000000
11.0根据通配符0.0.000000
11.0,为1的部分会被放开,其他的会被锁死
255.255.255.0 用来匹配掩码为/24的路由条目
0.0.0.128 用来匹配掩码为/25的路由条目
IGP与BGP的列表不同
在IGP中的扩展列表
Access-list 100 permit ip x.x.x.x a.a.a.a y.y.y.y b.b.b.b
源 通配符 目的 通配符
在IGP中扩展列表是用通配符匹配源和目的,所以无法向BGP一样精确匹配前缀,和匹配掩码
//标准列表、前缀列表、和BGP的扩展列表区别
标准列表不能匹配掩码,只能匹配前缀
前缀列表可以匹配掩码,但是length控制不严格,不能精确匹配下面这样的前缀
172.16.12.0/24
172.16.13.0/24
172.16.14.0/24
172.16.15.0/24
172.16.12.0/25
172.16.13.0/25
172.16.14.0/25
172.16.15.0/25
在BGP中的扩展列表既可以精确匹配前缀,又可以匹配掩码