I'm going to be teaching a class on basic network theory. The budget is very tight, and I don't have a lot of hardware to play with. I'm looking for a network simulator, one that allows students to program switches and routers and the NICS of the virtual network (CISCO would be nice...but then that's probably asking a lot.) Then perhaps send virtual packets around the virtual network. This class is covering only basic concepts. Something that is clear and concise will work best, but I'm willing to check out just about anything. Preferred answers will contains some first hand experience with the recommended program, but any web finds that look promising are welcome as well.