This document discusses network routing and routing algorithms. It begins by defining routing as the process of determining the path that data packets will take from a source to a destination across a network. There are three main functions of routing: path determination, switching, and call setup. The document then discusses several common routing algorithm strategies, including greedy, dynamic programming, and divide-and-conquer approaches. It also describes specific routing algorithms like Dijkstra's algorithm, Bellman-Ford algorithm, and Floyd-Warshall algorithm. Finally, it discusses performance metrics for comparing routing algorithms, such as throughput, latency, hop count, bandwidth, and packet loss.