Я должен создать эмулятор устройства, который может связаться по реальному IP-адресу
Я должен создать как много экземпляров, я могу для устройства. С одним IP-адресом и MAC-адресом для каждого экземпляра эмулятора
Банка кто-либо может вести меня, как это может быть достигнуто?
Пять или шесть лет назад я застрял в написании слоя эмуляции сети для Игра для PS2. Мне сказали, что необходимо отобразить все классические модели поведения при подключении к Интернету; реалистичные характеристики потерь, переупорядочивание пакетов, задержка, потеря пакетов, вызванная срочностью. По сути, мне сказали внедрить Интернет через пару недель.
Я предложил просто отразить весь игровой трафик с удаленного эхо-сервера.Когда мне сказали, что абсолютно запрещено отправлять трафик разработки по общедоступным каналам, я просто создал сервер, на который все указали свои комплекты разработчика PS2, который будет хранить каждый полученный пакет и отправлять доппельгангер (полный идентификатора исходного пакета. плюс куча случайного мусора, чтобы он был такого же размера) на эхо-серверы, которые я запускал. Когда был получен доппельгангер, я передал исходный пакет его первоначальному месту назначения.
Бум. Интернет-симулятор со всеми шипами менее чем за 8 часов.
ОБНОВЛЕНИЕ:
Учитывая успешный ответ здесь, я повторно реализовал сервис эха игры некоторое время назад. Казалось, что github может быть лучшим местом для его хранения, поэтому вот оно : Если это сработает для вас, отлично! Если нет, дайте мне знать. Я ожидаю, что его нынешнее состояние в лучшем случае будет неустойчивым.
Virtual PC 2007
.
Сетевой драйвер виртуальной машины
.
VMware Player: Windows
вам нужно глубоко изучить уровень канала передачи данных в части кодирования - тогда вы сможете понять, как он получает MAC-адрес и связь между ч / б Mac и IP
Я предлагаю вам не изобретать велосипед заново. Для этой конкретной проблемы есть как аппаратные, так и программные решения. Они также очень хорошо подходят для тестирования сетевой нагрузки (и пропускной способности).
Обратной стороной является то, что такие устройства довольно дороги.
в зависимости от того, какое устройство вам нужно, вы можете быть довольны несколькими движками виртуальных ПК, накладные расходы высоки (эмулируется весь ПК вместо просто сетевой интерфейс), так что у вас не будет 1000 машин, но это решение "из коробки" - и каждый виртуальный ПК может иметь несколько виртуальных сетевых карт.
Добавить диапазон виртуальных IP-адресов в Windows
См. Ответ на сообщение от gil.elessar
.
Для справки:
Команды Netsh для IP интерфейса
Вы можете использовать команды в контексте IP интерфейса Netsh для настройки протокола TCP / IP (включая адреса, шлюзы по умолчанию, DNS-серверы, и WINS-серверы), а также для отображения конфигурации и статистической информации.
Простая идея заключается в использовании User-Mode Linux (UML), порта ядра Linux в пространстве пользователя. Он позволяет нескольким виртуальным системам Linux (известным как гости) работать в качестве приложения в обычной системе Linux (известной как хост).
Он очень легкий, по процессору и памяти. Например, я использую более 10 UML одновременно на "не слишком свежем" ПК, используя Netkit, сетевой симулятор, основанный на UML. UML легкий, потому что это родное приложение, а не тяжелая виртуализация (vmware, virtualbox, qemu) или пара-виртуализация (xen).
Поскольку сетевые интерфейсы реализованы для возможности подключения к другим машинам UML (с помощью uml_switch), вы можете иметь любой MAC-адрес, какой захотите. Если вам нужно подключить эти машины UML к вашей системе или внешним хостам, вы можете создать виртуальные устройства с помощью TUN/TAP.
PS: Если вы на Windows, вы можете попробовать CoLinix, порт Linux Kernel для M$ OS, я не знаю, имеет ли он те же характеристики, что и UML.
Вы можете попробовать использовать адаптеры обратной петли. Используя это, вы можете установить любой IP или Mac-адрес. Отлично подходит для эмуляции различных сетевых подключений.