Вопрос

Мне нужно создать эмулятор устройства, который может обмениваться данными по реальному IP-адресу.

Мне нужно создать как можно больше экземпляров для устройства.С одним IP- и MAC-адресом для каждого экземпляра эмулятора.

Может ли кто-нибудь подсказать мне, как этого можно достичь?

Это было полезно?

Решение

Пять или шесть лет назад я застрял в написании слоя эмуляции сети для игры для PS2.Мне сказали, что должно быть отображено все классическое поведение интернет-соединения;реалистичные характеристики потерь, переупорядочение пакетов, задержка, потеря пакетов из-за спешки.По сути, мне сказали внедрить Интернет за пару недель.

Я предложил просто перенаправить весь наш игровой трафик с удаленного эхо-сервера.Когда мне сказали, что абсолютно запрещено отправлять трафик разработки по общедоступным каналам, я просто создал сервер, на который все указывали свои комплекты разработки для PS2, который будет хранить каждый полученный пакет и отправлять двойник (полный идентификатора исходного пакета). плюс куча случайного мусора, чтобы сделать его одинакового размера) на эхо-серверы, которые я запускал.Когда двойник был получен, я передал исходный пакет исходному пункту назначения.

Бум.Интернет-симуляция со всеми тонкостями менее чем за 8 часов.

ОБНОВЛЯТЬ:

Учитывая успех данного ответа, я некоторое время назад переопределил службу игрового эха.Казалось, что github может быть лучшим местом для хранения, поэтому вот:Если это сработает для вас, отлично!Если нет, дайте мне знать.Я ожидаю, что его нынешнее состояние будет в лучшем случае шатким.

Другие советы

Добавьте диапазон виртуальных IP-адресов в Windows

См. ответ на сообщение от 21 февраля 2006 г. в 13:18. Гил.Элессар

.

Для справки:

Команды Netsh для IP-интерфейса

Netsh-команды

Вы можете использовать команды в контексте IP Netsh Interface для настройки протокола TCP/IP (включая адреса, шлюзы по умолчанию, DNS-серверы и WINS-серверы), а также для отображения конфигурации и статистической информации.

Простая идея состоит в том, чтобы использовать Пользовательский режим Linux (UML), порт ядра Linux в пользовательском пространстве.Он позволяет нескольким виртуальным системам Linux (известным как гости) работать как приложение в обычной системе Linux (известной как хост).

Он очень легкий, как в процессоре, так и в памяти.Например, я использую более 10 UML одновременно на «не слишком новом» ПК, используя Неткит, сетевой симулятор, основанный на UML.UML легок, потому что это собственное приложение, а не тяжелая виртуализация (vmware, virtualbox, qemu) или паравиртуализация (xen).

Поскольку сетевые интерфейсы реализованы для возможности подключения к другим машинам UML (с использованием uml_switch), вы можете иметь любой MAC-адрес, который захотите.Если вам нужно подключить эти UML-машины к вашей системе или внешним хостам, вы можете создать виртуальные устройства с помощью TUN/TAP.

ПС:Если вы используете Windows, вы можете попробовать Колиникс, порт ядра Linux для ОС M$, я не знаю, имеет ли он те же характеристики, что и UML.

Вы можете попробовать использовать адаптеры обратной связи.Используя это, вы можете установить любой IP или Mac-адрес.Отлично работает для эмуляции различных сетевых подключений.

вам необходимо глубоко изучить уровень канала передачи данных в части кодирования - тогда вы сможете понять, как он получает MAC-адрес и связь ч/б Mac и IP.

в зависимости от того, какое устройство вам нужно, вы можете быть довольны несколькими механизмами виртуальных ПК, накладные расходы высоки (эмулируется весь компьютер, а не только сетевой интерфейс), поэтому у вас не будет 1000 машин, но это это «готовое» решение, и каждый виртуальный компьютер может иметь несколько виртуальных сетевых карт.

Я предлагаю вам не начинать изобретать велосипед.Для этой конкретной проблемы существуют как аппаратные, так и программные решения.Они также очень хорошо подходят для тестирования сетевой нагрузки (и пропускной способности).

Минус в том, что такие устройства довольно дороги.

Cisco pakcet Tracer позволяет эмулировать сетевой трафик с помощью графического интерфейса.Я удивлен, что никто об этом не упомянул (это ограничено устройствами Cisco, но стандарт одинаков для всех устройств, поэтому команды будут изучаться для вашего конкретного устройства).

Попробуйте выполнить поиск в Google, потому что в обычных обстоятельствах он доступен только студентам ccna, но я сохранил копию, потому что мой учитель позволил мне.

Или вы можете обнаружить, что кто-то разместил копию своего курса где-нибудь в Интернете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top