I learn network programming on Python: write client-server and client-client software with TCP, UDP, ICMP, ARP, etc protocols.
I need a tool for emulating network with N hosts with following capabilites:
Lightweight software that can create N (2, 5, 10, ...) hosts with python interpreter on each of them (all are on my computer!). Virtual machines like Virtualbox seem too heavy and impose incredible RAM requirements. I need only python interpreter and network stack support.
The ability to configure the whole network quality like "drop 10% of packets" or "make signal delay to 500 msec"
The ability to configure responses to certain requests for each host apart. Like "ping to google.com from host #5 should return "remote network is not reachable" but "ping to yahoo.com from host #5" should be ok.
Of course there is a full logging what happening in my network.
Is there a such software or framework (for Windows 7 and Linux)?