我需要构建一个可以通过真实 IP 地址进行通信的设备模拟器
我需要为设备创建尽可能多的实例。每个模拟器实例都有一个 IP 和 MAC 地址
谁能指导我如何实现这一目标?
五六年前,我一直在为 PS2 游戏编写网络仿真层。有人告诉我,必须显示互联网连接的所有经典行为;现实的丢包特征、包重新排序、延迟、高峰引起的丢包。基本上,我被告知要在几周内实现互联网。
我建议将我们所有的游戏流量从远程回显服务器中反弹。当我被告知绝对禁止通过公共线路发送开发流量时,我只是创建了一个服务器,每个人都将他们的 PS2 开发套件指向该服务器,该服务器将存储它收到的每个数据包并发送一个分身(充满原始数据包的 id加上一堆随机垃圾以使其大小相同)到我运行的回显服务器。收到分身后,我会将原始数据包传递到其原始目的地。
繁荣。在不到 8 小时的时间内完成所有荆棘的互联网模拟。
更新:
鉴于此处答案的成功,我不久前重新实现了游戏回声服务。似乎 github 可能是一个更好的存放它的地方,所以在这里:如果它适合你,太好了!如果没有,请告诉我。我预计它目前的状态充其量是不稳定的。
虚拟电脑 2007
.
虚拟机网络驱动程序
.
VMware 播放器:Windows
请参阅gil.elessar于 2006 年 2 月 21 日下午 1:18 发表的回复
.
供你参考:
您可以使用 Netsh 接口 IP 上下文中的命令来配置 TCP/IP 协议(包括地址、默认网关、DNS 服务器和 WINS 服务器)并显示配置和统计信息。
一个简单的想法是使用用户模式 Linux (UML),这是用户空间中 Linux 内核的一个端口。它允许多个虚拟 Linux 系统(称为来宾)在普通 Linux 系统(称为主机)中作为应用程序运行。
它非常轻,在 CPU 和内存中。例如,我在“不太新”的 PC 上同时使用 10 多个 UML,使用基于 UML 的网络模拟器Netkit 。UML 很轻,因为它是本机应用程序,而不是重虚拟化(vmware、virtualbox、qemu)和准虚拟化(xen)。
由于网络接口被实现为能够连接到其他 UML 机器(使用 uml_switch),因此您可以拥有任何您想要的 MAC 地址。如果您需要将这些 UML 机器连接到您的系统或外部主机,您可以使用 TUN/TAP 创建虚拟设备。
PS:如果你在Windows上,你可以试试CoLinix,Linux Kernel for M$ OS的移植,我不知道它是否和UML有相同的特性。
您可以尝试使用环回适配器。使用它,您可以设置任何 IP 或 MAC 地址。非常适合模拟各种网络连接。
您需要在编码部分深入研究数据链路层-然后您才能了解它如何获取mac地址以及b / w mac和ip的通信
取决于你需要什么样的设备,你可能对许多虚拟 PC 引擎感到满意,开销很高(模拟整个 PC 而不仅仅是一个网络接口)所以你最终不会有 1000 台机器,但这是一种“开箱即用”的解决方案——每台虚拟 PC 都可以拥有多个虚拟网卡。
我建议你最好不要开始重新发明轮子。对于这个特定问题,有硬件和软件解决方案。它们也非常适合网络负载(和吞吐量)测试。
缺点是这样的设计相当昂贵。
Cisco pakcet tracer 允许您使用 gui 模拟网络流量。我对没有人提到这一点感到惊讶(它仅限于 cisco 设备,但不同设备的标准是相同的,因此它将为您的特定设备学习命令)。
尝试进行谷歌搜索,因为在正常情况下它仅适用于 ccna 学生,但我保留了一份副本,因为我的老师让我。
或者你可能会发现有人在互联网上的某个地方发布了他们班级的副本。