1

我的多核机器正在接收数据包,并在其内核之间均匀分配(排序循环)。每个核心应该决定是让数据包通过还是丢弃数据包,这取决于它的原始地址。为DDOS预防设计一个并行算法?

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

+0

需要更多信息 - 你有被阻止的ips列表吗? – WeaselFox 2012-02-13 16:16:49

+0

听起来很有趣,但恕我直言,这个问题太深,太广泛了。你应该提供一些细节来注册你的技术堆栈。 – home 2012-02-13 16:18:53

+0

@ WeaselFox no。目的是通过阻止来自一小群地址的洪水,同时允许其他地址通过。 – liorda 2012-02-13 16:21:58

回答

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

可能是为了解决您的特定问题而过度使用,但可能会满足对此区域中数据结构信息的一般请求。