服务暂时排队UDP数据包

我有一个运行在Linux机器上的服务,通过UDP接收一个相当稳定的数据包stream。 与使用UDP相关的数据包偶尔丢失或损坏是很好的。

然而,这项服务正在积极发展,并经常更新。 每次更新部署到它时,都必须重新启动,并且在重新启动时到达的所有数据包都可能被丢弃。 而且,每当一个错误使得这个服务在一段持续的时间内停止运行。

有没有一个相当简单的服务,我可以坚持我的服务和传入的UDP数据包之间,只是通过数据包的服务,如果它是可用的,或者,如果服务closures不pipe什么原因,它会排队直到数据包服务回来,然后通过他们?

简单的解决办法是以pcap格式( tcpdump / windump或wireshark可以做到这一点)loggingUDPstream,然后重播 – 例如使用tcpreplay 。

在重新启动服务时,需要相当多的逻辑来包含故障检测逻辑和自动重播,但是如果您的服务能够使用动手方式处理重复的消息,则应该在计划中断时运行良好。

Systemd有一种在守护进程重启之间保留套接字的方法(不会丢失数据)。 不知道它也适用于UDP套接字,但我希望如此。 没有更多的信息,我的Google fu让我失望。