ACL(访问控制列表) 和 IP prefix-list(前缀列表)的路由匹配区别

本文探讨了ACL和IP-PrefixList在路由筛选上的区别,ACL主要依赖通配符进行不精确匹配,而IP-PrefixList提供更精确的掩码范围匹配。通过实例解析,揭示了两者在处理192.168.200.0/30等路由时的匹配行为。

1、总结

 能否匹配路由匹配工具/匹配规则路由匹配是否精确能否做数据包过滤目的
ip-prefix路由前缀+长度范围+路由长度(可选)   精确
能同时匹配前缀号和前缀长度 ,解决ACL不能区分相同前缀、不同掩码的路由的问题
不能 诞生的目的就是精确匹配路由
acl只有基本ACL可以,但是高级acl不能匹配路由通 配 符(反掩码): 只能范围匹配 不精确
对于前缀相同而掩码不同的路由无法匹配
最初是为了做数据包过滤


ACL和地址前缀列表都可以对路由进行筛选,ACL匹配路由时只能使用“通配符”工具匹配路由的网络号,但无法匹配掩码,也就是前缀长度

而地址前缀列表比ACL更为灵活和精确,可以匹配路由的网络号及掩码,还可以匹配路由长度范围,增强了路由匹配的精确度。 

2、访问控制列表(ACL)匹配路由

访问控制列表ACL(Access Control List)是一系列过滤规则的集合,可以称之为规则组。只有基本acl(Basic ACL)可以匹配路由(基本acl 条目为 2000-2999)。

高级acl不能用于路由匹配,因为高级acl可以匹配 Protocol(tcp、udp、icmp等),高级acl用于访问策略控制。

ACL匹配路由时只能使用“通配符”工具匹配路由的网络号,但无法匹配掩码长度


2.1、什么是通配符?

 
通配符(反掩码):反掩码是一个32比特位的数字字符串,格式与IP地址相同,用于指示IP地址中的哪些位将被检查。和判断条件中的IP地址一起确定一个地址范围,如果数据的IP地址属于这个范围,就认为数据符合判断条件,反之则不然。

反掩码各比特位中,0表示“检查相应的位”,1表示“不检查相应的位”。

  如:rule permit source 192.168.100.0 0.0.0.255。使用的反掩码匹配,依据反掩码的0位严格匹配,1位不需要匹配原则,192.168.100这3位严格匹配。最终匹配的IP地址为 192.168.100.0/24所有IP地址及网段(含/24的所有子网段,以及单个IP)



 

关于反掩码几个相关测试题

1.请用一个IP地址和一个通配符表示合法主机地址192.168.100.17 / 32

2.请用一个IP地址和一个通配符表示网络172.160.0.0 / 16

3.请用一个IP地址和一个通配符表示子网192.168.10.8 / 29

4.请用IP地址和通配符表示地址范围192.168.1.16至192.168.1.28

5.反掩码255.255.255.255表示什么?

6.反掩码0.0.0.0表示什么?


反掩码测试题答案

1. 192.168.100.17 0.0.0.0

2.172.160.0.0 0.0.255.255

3. 192.168.10.8 0.0.0.7

4. 192.168.1.16 0.0.0.15

5.反掩码255.255.255.255表示所有IP地址,因为全为1说明不检查所有32比特位,这可以用any取代。反掩码0.0.0.0表示所有32位都要进行匹配。

6.反掩码与IP子网掩码工作原理不同。子网掩码中,数字1和0用来决定是网络、子网,还是相应的主机的IP地址。

3、地址前缀列表(IP-Prefix List)

  地址前缀列表是一种包含一组路由信息过滤规则的过滤器,用户可以在规则中定义前缀和掩码范围,用于匹配路由。

   地址前缀列表进行匹配的依据有两个:掩码长度和掩码范围。

  • 掩码长度:地址前缀列表匹配的对象是IP地址前缀,前缀由IP地址和掩码长度共同定义。例如,10.1.1.1/16这条路由,掩码长度是16,这个地址的有效前缀为16位,即10.1.0.0。
  • 掩码范围:对于前缀相同,掩码不同的路由,可以指定待匹配的前缀掩码长度范围来实现精确匹配或者在一定掩码长度范围内匹配。

3.1、匹配顺序

  • 顺序匹配:按索引号从小到大顺序进行匹配。同一个地址前缀列表中的多条表项设置不同的索引号,可能会有不同的过滤结果,实际配置时需要注意。
  • 唯一匹配:待过滤路由只要与一个表项匹配,就不会再去尝试匹配其他表项。
  • 默认拒绝:默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤。因此在一个地址前缀列表中创建了一个或多个deny模式的表项后,需要创建一个表项来允许所有其他路由通过。

3.2、匹配参数:

参数

含义

ipv4-address

用于指定网络号。

mask-length

用于限定网络号的前多少位需严格匹配。

greater-equal greater-equal-value

表示掩码大于等于greater-equal-value

less-equal less-equal-value

表示掩码小于等于less-equal-value

当待过滤的路由已匹配当前表项的网络号时,掩码长度可以进行精确匹配或者在一定掩码长度范围内匹配。

  • 如果不配置greater-equalless-equal,则进行精确匹配,即只匹配掩码长度为mask-length的路由。
  • 如果只配置greater-equal,则匹配的掩码长度范围为大于[greater-equal-value]。
  • 如果只配置less-equal,则匹配的掩码长度范围为[mask-lengthless-equal-value]。
  • 如果同时配置greater-equalless-equal,则匹配的掩码长度范围为:                                                                                     [greater-equal-value≥ 匹配路由前缀范围≤ less-equal-value]。

 4、以下路由的ip-prefix和acl匹配区别

192.168.200.0/30
  192.168.200.4/30
 192.168.206.96/30
192.168.206.100/30
192.168.206.108/30
192.168.206.112/30

 4.1、使用ACL 2500来匹配


 rule 5 permit source 192.168.0.0 0.0.255.255

这会匹配以下路由

 4.2、使用IP prefix来匹配

ip ip-prefix test0712 index 10 permit 192.168.0.0 16

结果无任何路由匹配。

4.2.1如果修改ip-prefix为

  ip ip-prefix test0712 permit 192.168.0.0 16 greater-equal 30 less-equal 32

以上匹配解读:

   “test07”为名称

“permit 192.168.0.0 16”为路由范围。

“greater-equal 30 less-equal 32”为路由长度,表示匹配【30≥路由长度≤32】的路由

结果:路由匹配如下

<think>我们正在讨论最长前缀匹配(Longest Prefix Matching, LPM)的概念、应用及原理。 根据引用[2]引用[3]的内容,我们可以整理出以下信息: 概念: 最长前缀匹配路由选择过程中使用的一种算法,用于在路由表中查找与目的IP地址最匹配路由条目。 路由表由多个路由项目组成,每个项目包含一个网络前缀(即IP地址的一部分)下一跳地址。 当路由表中有多个项目与目的IP地址匹配时,选择具有最长网络前缀(即最具体的路由)的项目。 原理: 1. 路由表存储:每个路由项目包含一个网络前缀子网掩码(或使用CIDR表示法表示的斜线后面的数字,如/24)。 2. 匹配过程:当路由器收到一个分组时,提取其目的IP地址,然后与路由表中每个项目的网络前缀进行比较。 比较的方式是将目的IP地址与网络前缀进行按位与运算(实际上是与子网掩码按位与,然后比较是否等于网络前缀)。 3. 多个匹配:由于路由表中的前缀长度不同,一个IP地址可能匹配多个路由条目(例如,一个匹配前缀长度/16,另一个匹配/24)。 4. 选择最长前缀:从所有匹配路由条目中选择网络前缀最长的那个(即前缀位数最多的),因为前缀越长,地址块越小,路由就越具体。 应用: 最长前缀匹配主要应用于路由器中,用于决定将分组转发到哪个下一跳地址。它是互联网能够高效路由的基础。 引用[2]中提到,在DPDK(数据平面开发套件)中使用了最长前缀匹配算法来进行报文的匹配,从而获得相应的信息。 引用[3]中详细解释了CIDR(无类别域间路由最长前缀匹配的关系: - CIDR消除了传统的A、B、C类地址以及划分子网的概念,使用网络前缀来表示地址块。 - 使用CIDR后,路由表由“网络前缀“下一跳地址”组成。 - 在查找路由表时,如果得到多个匹配结果,则选择具有最长网络前缀路由(即最长前缀匹配)。 - 网络前缀越长,地址块越小,路由就越具体。 另外,引用[3]还举了一个例子:一个ISP有64个C类网络,通过CIDR聚合后,可以用一个路由项目(206.0.64.0/18)来表示,大大减少了路由表的大小。 实现最长前缀匹配的数据结构: 引用[4]提到了Trie树(前缀树、字典树)可以用来实现最长前缀匹配。Trie树是一种多叉树,每个节点代表一个比特位(或几位),从根节点到某个节点的路径表示一个前缀。在查找时,我们从根节点开始,根据目的IP地址的每一位选择分支,直到无法继续或到达叶子节点。在Trie树中,我们记录每个前缀对应的下一跳信息。在查找过程中,我们记录最后一次匹配前缀,最终返回最长匹配前缀。 为了提高效率,实际中可能使用压缩的Trie树(如Patricia树)或者基于硬件的优化(如TCAM)。 因此,我们可以按照以下结构组织回答: 1. 概念:解释什么是最长前缀匹配及其目的。 2. 原理:详细描述匹配过程,包括路由表结构、匹配规则等。 3. 应用场景:主要用在路由器中,以及DPDK等网络数据包处理框架中。 4. 实现方法:简述使用Trie树(前缀树)实现的方法,并提到其他高效实现。 同时,按照要求,生成相关问题。 注意:在回答中,需要适当引用参考内容,并正确使用数学公式格式。 我们开始撰写回答: </think>### 最长前缀匹配(Longest Prefix Matching, LPM)详解 最长前缀匹配是网络路由IP寻址中的核心算法,用于在路由表中选择最优路径。其核心原理是通过比较IP地址的网络前缀长度来确定最精确的路由条目。 --- #### 一、核心概念 1. **基本定义** - **网络前缀**:IP地址中标识网络部分的比特序列(如 `192.168.1.0/24` 中 `/24` 表示前24位为网络前缀)。 - **匹配规则**:当目的IP地址同时匹配多个路由条目时,选择前缀长度最长的条目。 $$ \text{最长前缀匹配} = \arg\max_{r \in R} \{\text{len}(r.\text{prefix})\} $$ 其中 $R$ 为匹配路由集合,$r.\text{prefix}$ 表示路由前缀[^3]。 2. **关键特性** - **层级性**:前缀越长,地址块越小,路由越具体(如 `/24` 比 `/16` 更精确)[^3]。 - **聚合优化**:支持CIDR(无类别域间路由),可合并多个连续IP块(如 `206.0.64.0/18` 覆盖64个C类地址),减少路由表规模[^3]。 --- #### 二、技术原理 1. **路由表结构** | **字段** | **说明** | **示例** | |----------------|---------------------------|-------------------| | 网络前缀 | 目标IP的网络标识 | `192.168.1.0/24` | | 下一跳地址 | 数据包转发目标 | `10.0.0.1` | | 掩码长度 | 前缀比特数 | `24` | 2. **匹配流程** ```mermaid graph TD A[提取目的IP地址] --> B[遍历路由表] B --> C{IP & 前缀掩码 == 网络前缀?} C -->|是| D[记录匹配项] C -->|否| B D --> E[选择最长前缀匹配项] E --> F[转发至下一跳] ``` 3. **算法实现** - **Trie树(前缀树)**:将IP地址按比特位构建多叉树,从根节点向下逐位匹配,保留最深匹配节点[^4]。 - **优化结构**: - 压缩Trie树(Patricia树):合并单分支路径,减少树深度[^4]。 - 硬件加速:DPDK中使用基于哈希的LPM算法提升匹配速度[^2]。 --- #### 三、应用场景 1. **路由器转发** - 互联网核心路由器每秒处理百万级IP包,依赖LPM实现微秒级转发决策[^2]。 - 示例:目的IP `192.168.1.5` 同时匹配 `192.168.0.0/16` `192.168.1.0/24`,选择后者[^3]。 2. **SDN与云网络** - 虚拟交换机(如OVS)通过LPM实现多租户网络隔离。 - 云服务商使用CIDR聚合用户IP段,降低路由表条目(如10万IP段压缩至千级)[^3]。 3. **安全策略** - 防火墙基于LPM过滤特定子网流量(如阻断 `/24` 网段的非法访问)。 --- #### 四、关键技术挑战 1. **冲突解决** - 多个相同长度前缀匹配时,需附加策略(如优先级权重)。 2. **动态更新** - 路由表频繁变更时,Trie树的再平衡效率影响性能[^4]。 3. **IPv6扩展** - 128位地址导致Trie树深度增加,需分层压缩结构[^2]。 > **注**:LPM算法性能直接影响网络吞吐量,DPDK中LPM实现可达**80 Gbps**转发速率[^2]。 --- ###
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值