Есть программа, которая принимает пакеты из сети. В каждом пакете есть id отправленного в этом пакете сообщении. Эти id в большинстве своем(но не всегда) монотонно возрастают. Иногда могут происходить перепосылки сообщений, тогда приходит новый пакет с тем же id сообщения. Для того, чтобы отсеивать такие перепосылки планирую хранить id-шки сообщений принятых за последние N минут(часов, дней, не имеет значения) и при приходе каждого нового пакета проверять нет ли в этом пуле уже такого id. Тут встает вопрос как реализовать хренения этих id-шек. С точки зрения поиска удобно использовать дерево, но в связи с тем, что ключи в большинстве своем монотонно возрастают просто бинарное дерево невыгодно использовать, т.к. оно будет практически вырожденным. Какие варианты дерева(?) посоветуете для данного случая?
з.ы. пока писал подумалось, что похожую задачу решает tcp/ip стек. кто-нибудь знает что там используют?
з.ы.ы язык, если это важно, c++