Собственно, думаю, как грамотно побороть сабж. Ситуация такая:
Есть сервер на клиентской машине, слушающий входящие подключения. Есть сеть таких серверов. Каждый сервер держит на своей машине список других серверов в сети (P2P, в общем).
Серверу приходит пакет, содержащий IP нового клиента. Сервер должен добавить этот IP в список клиентов и переслать этот IP всем серверам в сети (естественно, кроме того, который прислал ему этот пакет).
Получается проблема "снежного кома": уже на втором шаге на наш сервер может еще раз придти пакет с этим-же IP (от третьего сервера, например). Это не проблема: сохраняем пул обработанных запросов и если этот пакет уже был отправлен остальным серверам — просто ничего не делаем.
Проблема в другом: кол-во гоняемых по сети пакетов. По первым прикидках из расчета 10 серверов получаем максимальное кол-во гоняемых туда/сюда пакетов около 80 (!).
Вопрос: что можно сделать, чтобы существенно сократить кол-во пересылаемых пакетов с учетом необходимости иметь на каждом сервере актуальный список клиентов? Сеть одноранговая и главного сервера нет, т.е. нет централизованной обработки пула клиентов.
Как быть?
З.Ы. Пакеты маленькие и очень нежелательно их раздувать за счет включения в них маршрута прохождения пакета.
З.З.Ы. Протокол — TCP. UDP не предлагать

— задача стоит именно на TCP.