6

Python を使用してデジタル ラジオのシミュレータを作成しています。ラジオは、RS-232 ポートとイーサネット ポートを 1 つずつ RF 経由で中継し、1 組のラジオがシームレスなパイプを形成します。したがって、シミュレーターはペアで使用され、それらの間のパイプは RF リンクをシミュレートし、ユーザーは物理インターフェイス、仮想インターフェイス、またはトンネルを使用して各エンドに接続できます。

RF シリアル ポートについては、PySerial と仮想シリアル ポートを使用してシミュレーターを可能な限り用途の広いものにしています。シミュレーターを物理シリアル ポート、ネットワーク ソケット、または別のローカル プログラムに接続できます。異なる OS ごとに仮想シリアル ポートを作成するために使用されるツールを除けば、このアプローチは完全にクロスプラットフォームです。

シミュレーターが、仮想インターフェイスを介してローカル プログラムと、共有ネットワーク インターフェイスを介してリモート プログラムと、シミュレーター専用のローカル物理インターフェイスを介してリモート プログラムとネットワーク接続できるようにしたいと考えています。しかし、これまでのところ、これを行う簡単な方法は見つかりませんでした。私は SLIP/PPP、TAP/DUN、pcap/SOCK_RAW などの可能性を検討してきましたが、明らかな解決策や一般的な解決策は見当たりません。

主な問題は、これが IP レベルより下のイーサネット プロトコル自体のレベルにあるイーサネット インターフェイス全体に関係しているように思われます。ポートが数個しかない場合、ソリューションは比較的単純になります。それとも、私は盲目的に明らかな何かを見逃していますか?

Python を使用して、RF シリアル インターフェイス ソリューションと同じくらい汎用性のある方法で RF イーサネット インターフェイスを作成および使用するにはどうすればよいですか?

4

2 に答える 2

3

人々が投稿した膨大な数の回答により、既成概念にとらわれずに考えるようになりました。

私のアプローチは、真に驚くべき多目的ツールである Dummynet を使用することです。残念ながら、Dummynet の Windows および Linux への移植は十分に維持されていないため、*BSD を実行することになります。

ただし、*BSD イメージは VM としても実行できるため、仮想インターフェイスの処理が大幅に簡素化されます。

また、サイズが気になる場合は、picoBSD または nanoBSD を使用して、シミュレーター用にカスタマイズされた小さなシステムを作成できます。

于 2012-07-03T16:34:58.267 に答える