Если я правильно понимаю, вы можете использовать некоторые окна, если вы этого еще не сделали.
То есть не принимайте сообщение, которое находится за пределами вашего окна. Например, если ваш счетчик равен 1000, вы можете ограничить диапазон идентификаторов входящих счетчиков, которые вы принимаете, до 1000 ... 1031 включительно. Таким образом, все, что находится за пределами этого диапазона, является слишком сложным для вас (что заставляет вас инициировать какой-либо протокол повторной отправки). Как только вы получите 1000, ваш верхний предел станет равным 1032. Затем, как только вы получите нижний предел счетчика 1001, ваш верхний предел будет 1033, и так далее. В итоге вы получаете раздвижное окно.
Если такой сценарий приемлем, то все, что вам нужно проверить, это то, что ваш идентификатор входящего счетчика находится в вашем принятом окне. Это будет подмножество 16-битного счетчика, поэтому вы можете проверить ...
ВходящийCounterID - lowerLimitCount
Пока вы имеете дело с беззнаковыми переменными, с вами все будет в порядке.
Надеюсь, что это помогает (и имеет смысл).