网络模拟器

时间:2010-02-24 20:02:24

标签: java windows emulation simulator

我需要构建一个可以通过真实IP地址进行通信的设备模拟器

我需要为设备创建尽可能多的实例。每个仿真器实例有一个IP和MAC地址

任何人都可以指导我如何实现这一目标吗?

9 个答案:

答案 0 :(得分:24)

五六年前,我被困在为PS2游戏编写网络仿真层。我被告知必须显示互联网连接的所有经典行为;现实的丢失特性,分组重新排序,延迟,突发引起的分组丢失。基本上,我被告知要在几周内实施互联网。

我建议从远程回声服务器上弹出所有游戏流量。当我被告知绝对禁止通过公共线路发送开发流量时,我只是创建了一个服务器,每个人都指出他们的PS2 devkits将存储它收到的每个数据包并发送doppleganger(原始数据包的id满了加上一堆随机垃圾,使其大小相同,直到我运行的echo服务器。当收到doppleganger时,我会将原始数据包传递到其原始目的地。

动臂。在不到8小时的时间内完成所有荆棘的互联网模拟。

更新:

鉴于答案的成功,我在一段时间后重新实现了游戏回声服务。似乎github可能是一个更好的藏匿它的地方,所以here it is:如果它适合你,那太好了!如果没有,请告诉我。我希望它目前的状态充其量只是摇摇欲坠。

答案 1 :(得分:1)

答案 2 :(得分:1)

Add a Range of Virtual IPs in Windows

请参阅2006年2月21日下午1点18分,回复 gil.elessar

供您参考:

Netsh commands for Interface IP

Netsh commands

您可以使用Netsh Interface IP上下文中的命令配置TCP / IP协议(包括地址,默认网关,DNS服务器和WINS服务器)并显示配置和统计信息。

答案 3 :(得分:1)

一个简单的想法是使用User-Mode Linux (UML),这是用户空间中Linux内核的一个端口。它允许多个虚拟Linux系统(称为guest虚拟机)作为普通Linux系统(称为主机)中的应用程序运行。

非常轻,在CPU和内存中。例如,我使用基于UML的网络模拟器Netkit在“不太新”的PC上同时使用10个以上的UML。 UML很轻,因为它是一个本机应用程序,而不是重度虚拟化(vmware,virtualbox,qemu),也不是半虚拟化(xen)。

由于网络接口实现为能够连接到其他UML机器(使用uml_switch),因此您可以拥有所需的任何MAC地址。如果需要将这些UML计算机连接到系统或外部主机,可以使用TUN / TAP创建虚拟设备。

PS:如果您使用的是Windows,可以尝试CoLinix,Linux内核的M $ OS端口,我不知道它是否具有与UML相同的特性。

答案 4 :(得分:1)

您可以尝试使用环回适配器。使用此功能,您可以设置任何IP或MAC地址。适用于模拟各种网络连接。

答案 5 :(得分:0)

你需要在编码部分深入研究数据链接层 - 然后你就可以理解它是如何得到mac地址和通信b / w mac和ip

答案 6 :(得分:0)

根据您需要的设备类型,您可能会对许多虚拟PC引擎感到满意,开销很高(整个PC都是模拟的,而不仅仅是网络接口)所以您最终不会得到1000台机器,但这是一个“开箱即用”的解决方案 - 每个虚拟PC都可以拥有多个虚拟网卡。

答案 7 :(得分:0)

我建议你最好不要重新发明轮子。针对此特定问题,有硬件和软件解决方案。它们也非常适合网络负载(和吞吐量) - 测试。

缺点是这样的装置非常昂贵。

答案 8 :(得分:0)

Cisco pakcet tracer允许您使用gui模拟网络流量。我很惊讶没有人提到它(它仅限于cisco设备,但标准在各设备上是相同的,因此它将为您的特定设备学习命令)。

尝试进行谷歌搜索,因为在正常情况下它只适用于ccna学生,但我保留了副本,因为我的老师让我。

或者您可能会发现有人在互联网上的某个地方发布了他们班级的副本。