Which protocol was built to scale well in large networks, support hierarchies, and support the simultaneous use of multiple paths?