【问题标题】:TCP/IP efficient packet filteringTCP/IP高效包过滤
【发布时间】:2019-07-27 23:11:30
【问题描述】:

我正在尝试创建一种算法来根据源和目标 IP 地址以及目标和源端口过滤 TCP/IP 数据包。基本上,我有一组指定 IP 地址范围的规则,例如192.168.0.0/24,用于目标和源 IP 地址以及目标和源端口的等效地址 ([1:65535])。

简而言之,给定一个数据包,我想找出与其 IP 地址和端口相关的规则。目前,我目前唯一的想法是从源 IP 地址或目标 IP 地址构建一个 Trie,这将快速过滤其中一个,但仍需要对其余参数进行线性搜索,并导致复杂性为 @987654323 @ 代表nrules。有没有更好的方法可以降低时间复杂度?

【问题讨论】:

    标签: algorithm networking tcp filtering


    【解决方案1】:

    假设您将 IP 编码为 [0, 2^32] 范围内的整数,您可以通过四维矩形定义源和目标范围

    min = [src_ip_min, src_prt_min, dst_ip_min, dst_prt_min]
    max = [src_ip_max, src_prt_max, dst_ip_max, dst_prt_max]
    

    您可以使用像R-Tree 这样的空间索引结构来索引多维矩形,以有效地回答空间查询。在您的情况下,您将需要范围搜索 (range = 0) 以获取适用于特定查询的所有矩形 (=rules)。

    4 维应该仍然可以很好地进行索引,因此根据您的范围分布,您可以预期查询时间更接近O(log n)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 2010-09-23
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多