2012-06-27 56 views
5

我正在爲使用Python的數字收音機制作模擬器。無線電通過一個RS-232端口和一個以太網端口分別在RF上連接一對收音機,製作無縫管。因此,仿真器將成對使用,它們之間的管道模擬RF鏈路,允許用戶使用物理接口,虛擬接口或隧道連接到每個端點。我使用PySerial和虛擬串行端口使模擬器儘可能多功能:我可以將模擬器連接到物理串行端口,網絡套接字或另一個本地程序。除了用於在每個不同操作系統上創建虛擬串行端口的工具之外,此方法完全是跨平臺的。在Python中的網絡接口模擬?

我希望模擬器能夠通過虛擬接口與本地程序進行通信,通過共享網絡接口與遠程程序進行通信,並通過本地物理接口與遠程程序進行通信,模擬器。但到目前爲止,我還沒有找到一個簡單的方法來做到這一點。我一直在尋找SLIP/PPP,TAP/DUN,pcap/SOCK_RAW和其他可能性,並且我沒有看到明顯的或通用的解決方案。

關鍵的難點似乎是,這涉及整個以太網接口,低於IP級別,在以太網協議本身的層面上:如果只有少數幾個端口,解決方案將會相對簡單。或者我錯過了一些非常明顯的東西?

如何使用Python以與RF串行接口解決方案一樣多樣的方式創建和使用RF以太網接口?

+0

[Dummynet](http://info.iet.unipi.it/~luigi/dummynet/)和[ns-3](http://www.nsnam.org/wiki/index.php/Main_Page)看起來很有趣,都是跨平臺的。 – BobC

+0

添加TAP(或者TUN)界面,我可以很好的去! – BobC

回答

3

人們發佈的大量答案鼓勵我在盒子外思考。

我的方法是使用Dummynet,一個真正令人驚歎和多功能的工具。不幸的是,Dummynet Windows和Linux端口沒有很好的維護,這意味着我將運行* BSD。

但是這樣可以簡化事情,因爲* BSD映像也可以作爲虛擬機運行,這大大簡化了虛擬接口的處理。

如果我關心尺寸,我可以使用picoBSD或nanoBSD爲我的模擬器製作一個小巧的定製系統。