【问题标题】:Designing a parallel algorithm for DDOS prevention? [closed]为 DDOS 预防设计并行算法? [关闭]
【发布时间】:2012-02-13 16:15:41
【问题描述】:

我的多核机器正在接收数据包并在其核心之间均匀地分配它们(类似于循环)。每个核心都应该决定是让数据包通过还是丢弃它,这完全取决于它的源地址。

我需要找到无锁算法和数据结构来实现这一点。你能帮忙吗?

【问题讨论】:

  • 需要更多信息 - 你有被阻止的 ips 列表吗?
  • 听起来很有趣,但恕我直言,这个问题太宽泛了。您应该提供一些有关您的技术堆栈的详细信息。
  • @WeaselFox 没有。目的是通过阻止来自一小组地址的洪水来阻止它们,同时允许其他地址通过。
  • @home 这是一个抽象的问题,算法和数据结构是感兴趣的。
  • 如何将问题改为:“我需要一个线程安全的无锁集合”?检查 .NET 4 中的 System.Collections.Concurrent 命名空间。如果我做对了,那么您问题中的其他所有内容都无关紧要。

标签: algorithm data-structures parallel-processing distributed-computing


【解决方案1】:

如果您乐于使用 Java,或者查看 Java 源代码的设计,您可以选择一个随机键,然后从 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html 检索一个队列。给定队列,如果它是 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentLinkedQueue.html,您可以将数据包添加到其中而不会阻塞。

java.util.concurrent 的大部分内容归功于 Doug Lea,他在 http://gee.cs.oswego.edu/dl/concurrency-interest/index.html 上有相关信息。

对于您的特定问题可能有点矫枉过正,但可能会满足对该领域数据结构信息的一般要求。

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多