我需要根据到达Linux UDP套接字的数据报的源单播IPv4地址执行数据过滤。
当然,总是可以根据 recvfrom 提供的信息手动执行过滤,但我想知道是否还有其他更智能/更有效的方法(如果可能,不使用libpcap的)。
有什么想法吗?
答案 0 :(得分:2)
如果它是您需要允许的单一来源,则只使用 connect(2)
,内核将为您进行过滤。作为奖励,连接的UDP套接字更有效。这个cource不适用于多个来源。
答案 1 :(得分:0)
答案 2 :(得分:0)
您希望丢弃多少比例的数据报?如果它非常高,那么您可能想要查看您的应用程序设计(例如,使发件人不要发送那么多要丢弃的数据报)。如果它不是很高,那么你并不关心你花多少钱丢弃它们。
假设丢弃数据包需要与正常处理相同的(运行时)工作量;如果你丢弃1%的数据包,你将只花1%的时间丢弃。但是,实际上,丢弃可能比处理消息容易得多。