接收数据包时的竞争条件

时间:2016-10-05 13:03:18

标签: list sockets networking tcp race-condition

我在Linux内核中实现了QUIC协议。这是TCP的替代协议。

QUIC适用于基于NACK的方案,其中ACK数据包包含迄今为止未收到的数据包的最高接收偏移量和选择性NACK。

当内核正在处理ACK数据包并删除尚未从发送队列NACK的数据包时,会发生另一个ACK数据包并中断此过程。处理新的ACK数据包会删除发送队列中尚未被NACK的所有数据包。

因此,当执行跳回到第一个ACK数据包的处理时,由于新的ACK中断已经删除了最初要删除的数据包而导致崩溃,并且没有任何内容。

我该怎么做才能解决这个问题?

0 个答案:

没有答案
相关问题