2012-06-27 86 views
5

Tôi đang tạo mô phỏng cho đài phát thanh kỹ thuật số bằng Python. Các đài phát thanh chuyển tiếp trên một RF một cổng RS-232 và một cổng Ethernet, với một cặp radio làm cho ống liền mạch. Do đó, bộ mô phỏng sẽ được sử dụng theo cặp, với các đường ống giữa chúng mô phỏng liên kết RF, cho phép người dùng kết nối với mỗi đầu bằng giao diện vật lý, giao diện ảo hoặc đường hầm.Mô phỏng giao diện mạng bằng Python?

Đối với cổng nối tiếp RF, tôi đang sử dụng cổng nối tiếp PySerial và ảo để làm cho trình giả lập linh hoạt nhất có thể: Tôi có thể kết nối trình mô phỏng với cổng nối tiếp vật lý, ổ cắm mạng hoặc chương trình cục bộ khác . Ngoài các công cụ được sử dụng để tạo các cổng nối tiếp ảo trên từng hệ điều hành khác nhau, cách tiếp cận này hoàn toàn đa nền tảng.

Tôi muốn trình giả lập có thể kết nối với chương trình cục bộ qua giao diện ảo, với chương trình từ xa qua giao diện mạng dùng chung và với chương trình từ xa qua giao diện vật lý cục bộ sẽ được dành riêng cho giả lập. Nhưng cho đến nay, tôi đã không tìm thấy một cách đơn giản để làm điều này. Tôi đã xem xét SLIP/PPP, TAP/DUN, pcap/SOCK_RAW, và các khả năng khác, và tôi thấy không có giải pháp rõ ràng hoặc chung chung.

Khó khăn chính dường như là việc này bao gồm toàn bộ giao diện Ethernet, dưới mức IP, ở cấp độ của giao thức Ethernet: Nếu chỉ là một vài cổng, giải pháp sẽ tương đối đơn giản. Hoặc tôi thiếu một cái gì đó rõ ràng rõ ràng?

Làm cách nào để sử dụng Python để tạo và sử dụng giao diện Ethernet RF theo cách linh hoạt như giải pháp giao tiếp Serial RF?

+0

[Dummynet] (http://info.iet.unipi.it/~luigi/dummynet/) và [ns-3] (http://www.nsnam.org/wiki/index.php/Main_Page) có vẻ thú vị và cả hai nền tảng chéo. – BobC

+0

Thêm giao diện TAP (hoặc có thể TUN) và tôi có thể sử dụng tốt! – BobC

Trả lời

3

Số lượng lớn câu trả lời mà mọi người đã đăng khuyến khích tôi suy nghĩ bên ngoài hộp.

Cách tiếp cận của tôi sẽ là sử dụng Dummynet, một công cụ thực sự tuyệt vời và linh hoạt. Thật không may là các cổng Windows và Linux Dummynet không được duy trì tốt, có nghĩa là tôi sẽ chạy * BSD.

Nhưng điều này đơn giản hóa mọi thứ, vì hình ảnh * BSD cũng có thể được chạy dưới dạng máy ảo, giúp đơn giản hóa việc xử lý các giao diện ảo.

Và nếu tôi quan tâm đến kích thước, tôi có thể sử dụng picoBSD hoặc nanoBSD để tạo một hệ thống nhỏ gọn cho trình mô phỏng của tôi.

Các vấn đề liên quan