数据报套接字中的单播源地址过滤

时间:2011-08-03 14:26:39

标签: c linux sockets networking

我需要根据到达Linux UDP套接字的数据报的源单播IPv4地址执行数据过滤。

当然,总是可以根据 recvfrom 提供的信息手动执行过滤,但我想知道是否还有其他更智能/更有效的方法(如果可能,不使用libpcap的)。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果它是您需要允许的单一来源,则只使用 connect(2) ,内核将为您进行过滤。作为奖励,连接的UDP套接字更有效。这个cource不适用于多个来源。

答案 1 :(得分:0)

如前所述,NetFilter(Linux防火墙)可以为您提供帮助。

您还可以使用xinetdtcpd的UDP选项来执行过滤。

答案 2 :(得分:0)

您希望丢弃多少比例的数据报?如果它非常高,那么您可能想要查看您的应用程序设计(例如,使发件人不要发送那么多要丢弃的数据报)。如果它不是很高,那么你并不关心你花多少钱丢弃它们。

假设丢弃数据包需要与正常处理相同的(运行时)工作量;如果你丢弃1%的数据包,你将只花1%的时间丢弃。但是,实际上,丢弃可能比处理消息容易得多。