Comment: Computer Science (Score 2, Informative) 477
IMHO the best preparation available (in the context of an undergraduate degree) would simply be a solid program in Computer Science. There are lots of fundamentals to be learned... complexity theory, distributed systems, etc. Once you have a solid grounding in Computer Science you will still need to learn the hands-on material of network engineering ("What do I do with this Cisco thingy?") but you will be at a significant advantage. If you want to work on cutting-edge stuff an academic background is essential.