python - Python中的网络接口(interface)模拟?

标签 python networking interface simulation

我正在使用 Python 为数字 radio 制作模拟器。 radio 通过 RF 中继每个 RS-232 端口和以太网端口,一对 radio 形成无缝管道。因此,模拟器将成对使用,它们之间的管道模拟 RF 链路,允许用户使用物理接口(interface)、虚拟接口(interface)或隧道连接到每一端。

对于 RF 串行端口,我使用 PySerial 和虚拟串行端口来使模拟器尽可能多用:我可以将模拟器连接到物理串行端口、网络套接字或另一个本地程序。除了用于在每个不同操作系统上创建虚拟串行端口的工具之外,这种方法是完全跨平台的。

我希望模拟器能够通过虚拟接口(interface)与本地程序联网,通过共享网络接口(interface)与远程程序联网,并通过专用于模拟器的本地物理接口(interface)与远程程序联网.但到目前为止,我还没有找到一种直接的方法来做到这一点。我一直在研究 SLIP/PPP、TAP/DUN、pcap/SOCK_RAW 和其他可能性,但我没有看到明显或通用的解决方案。

关键的困难似乎在于,这涉及到整个以太网接口(interface),在 IP 级别以下,在以太网协议(protocol)本身的级别:如果只有几个端口,解决方案会相对简单。还是我遗漏了一些非常明显的东西?

如何使用 Python 以与 RF 串行接口(interface)解决方案一样通用的方式创建和使用 RF 以太网接口(interface)?

最佳答案

人们发布的大量答案鼓励我跳出框框思考。

我的方法是使用 Dummynet,这是一个真正令人惊叹的多功能工具。不幸的是,Dummynet Windows 和 Linux 端口维护得不好,这意味着我将运行 *BSD。

但这简化了事情,因为 *BSD 镜像也可以作为 VM 运行,这大大简化了虚拟接口(interface)的处理。

如果我担心大小,我可以使用 picoBSD 或 nanoBSD 为我的模拟器制作一个微型定制系统。

关于python - Python中的网络接口(interface)模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234197/

相关文章:

python - 扩展 Cython 类时,__cinit__() 恰好需要 2 个位置参数

linux - 如何根据主机 dst ip 过滤掉 pcap 文件中的一些数据包?

amazon-web-services - AWS : Elastic IP vs ENI

python - 如何在Spacy中为OOV术语指定词向量?

python - python (MAC) 中的 virtualenv 错误

python - 使用另一个值数组中的唯一元素对值数组应用函数

Java - UDP 通过套接字发送数据.. 不推荐。所有数据

java - Java中的List接口(interface)是什么数据结构?

cocoa - 在 Cocoa 中单击按钮时将值设置为 int

c# - 列表接口(interface) : from Java to C#