IP 地址的索引范围搜索算法

2024-04-12

给定一个包含 100 亿个以 CIDR 表示法表示的 IPv4 范围或两个 IP 之间的 ACL 列表:

x.x.x.x/y
x.x.x.x - y.y.y.y

用于测试给定 IP 地址是否满足一个或多个 ACL 范围条件的有效搜索/索引算法是什么?

假设大多数 ACL 范围定义跨越大量 C 类块。

通过哈希表对点进行索引很容易,但请尝试一下,因为我可能无法想出一种合理的方法来检测哪些点被大量“线”覆盖。

有一些想法,比如在一定的细节级别上进行索引提示——比如在 C 类级别上预先计算覆盖该点的每个 ACL,但表会太大..或者某种 KD 树来动态设置详细级别。

还想到也许有碰撞检测算法可以解决这个问题。

有任何正确方向的提示或指示吗?


简单的基数树 http://en.wikipedia.org/wiki/Radix_tree已被用于最长前缀匹配 http://en.wikipedia.org/wiki/Longest_prefix_match互联网路由查找可以扩展以保存代表与其他较小子网重叠的较大 CIDR 子网的节点。最长匹配查找将遍历这些节点,这些节点也将被选择以获得与 IP 地址匹配的整个 CIDR 子网集。

现在,要将 IP 范围保存在同一棵树中,我们可以将每个范围转换为一组 CIDR 子网 http://www.perlmonks.org/?node_id=79663。尽管该集合可能有很多子网(甚至一些主机 IP,即 IP/32 类 CIDR 地址),但始终可以完成此操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IP 地址的索引范围搜索算法 的相关文章

  • Mysql使用tenant_id进行复合索引

    我们有一个多租户应用程序 该应用程序有一个包含 129 个字段的表 这些字段都可以在 WHERE 和 ORDER BY 子句中使用 我花了 5 天的时间试图找出最适合我们的索引策略 我获得了很多知识 但我仍然有一些问题 1 创建索引时 我应
  • C# - 将指向 sockaddr 结构的 IntPtr 转换为 IPAddress

    从 P Invoked 本机函数中 我得到一个IntPtr http msdn microsoft com en us library system intptr aspx它指向一个sockaddr http msdn microsoft
  • 复杂的 SOLR 查询,包括 NOT 和 OR

    我对 SOLR 搜索有一些相当复杂的要求 我需要针对标记内容的数据库执行这些搜索 我需要首先过滤数据库以获取与我的过滤器标签匹配的结果 任何具有黑名单中的标签的结果都应被删除 除非它们也包含白名单中的标签 假设我想检索所有标记为 森林 或
  • 将搜索图标添加到输入框

    div div
  • 如何实现 IFilter 来索引重量级格式?

    我需要为 Microsoft Search Server 2008 开发一个 IFilter 它执行长时间的计算来提取文本 从一个文件中提取文本可能需要 5 秒到 12 小时 我如何设计这样的 IFilter 以便守护进程不会在超时时重置它
  • 包括 Oracle 中的等效项

    在 SQL Server 中你可以这样写 create index indx on T1 A B INCLUDE C D E 有没有办法在 Oracle 中做同样的事情 Refs http msdn microsoft com en us
  • 创建前判断MySQL表索引是否存在

    我们系统的自动数据库迁移过程涉及运行包含新表定义及其附带索引的 sql 脚本 仅当这些表和索引尚不存在时 我才需要能够创建它们 表是通过使用 IF NOT EXISTS 来处理的 但创建索引时不存在这样的语法 我尝试编写一个存储过程 如下所
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 根据标准在多个需求之间分配数量

    我正在创建一个周期盘点表 表 1 将是用户输入 其中将放置找到的材料和数量 表 2 是盘点时的库存快照 我希望将找到的材料数量分配到表 2 上的数量中 直到表 1 的数量用完为止 按照从最新批次 日期代码 到最旧批次 先进先出 的顺序分配数
  • 在数据框中搜索唯一值并用它们创建表

    自从我不久前开始使用 R URL 将类似于此示例格式 可在 源 列中找到 URL 中对我来说很重要的部分是 utm source ADX 位 我的数据如下所示 用户 来源 1 2 3 我需要做的是从 URL 中捕获 utm source 并
  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • ERROR 188 (HY000): FTS 查询超出结果缓存限制 mysql

    我的表的文本列上有全文索引 约有 1100 万行 表结构 CREATE TABLE review id int 11 NOT NULL AUTO INCREMENT comments text COLLATE utf8mb4 unicode
  • MongoDB - 解释特定的解释输出

    我使用的是 MongoDB 版本 2 4 8 test 2014 03 25 14 42 13 0 gt gt gt db users getIndexes v 1 key id 1 ns test users name id v 1 ke
  • jQuery Cycle 插件 - 如何返回当前显示幻灯片的索引号?

    我目前正在使用Malsup 的 Cycle 插件 http jquery malsup com 我只是想知道是否可以让循环插件返回当前显示幻灯片的索引号 我想在特定幻灯片处于活动状态时更改页面内容 不知道如何实现这一点 你可以这样做 on
  • 自定义“可搜索”搜索字段 SwiftUI iOS 15

    When using the new searchable modifier in SwiftUI on iOS 15 I have no way to customize the Search Bar appearance Specifi
  • 在 O(n) 时间内找到 n x n 矩阵中的局部最小值

    所以 这不是我的家庭作业问题 而是取自 coursera 算法和数据结构课程的未评分作业 现已完成 You are given an n by n grid of distinct numbers A number is a local m
  • Erlang Mnesia 中的分页搜索

    例如 给定记录 record item id time status 我想搜索 1000 到 1100 个项目 按时间和顺序排序status lt lt finished gt gt 有什么建议么 这取决于您的查询是什么样的 如果您需要按许
  • SQL:将现有列设置为 MySQL 中的主键

    我有一个包含 3 列的数据库 id name somethingelse 该表没有设置索引 我收到 未定义索引 在 phpmyadmin 中id 是一个 7 位字母数字值 每行都是唯一的 我想将 Drugid 设置为主键 索引 我不知道有没
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的

随机推荐