路由算法是网络层软件的一部分,它负责确定一个进来的分组应该被传送到哪一条输出线路上。如果子网内部使用了数据报,那么路由器必须针对每一个到达的数据分组重新选择路径,因为从上一次选择了路径之后,最佳的路径可能已经改变了。如果子网内部使用了虚电路,那么只有当一个新的虚电路被建立起来的时候,才需要确定路由路径。因此,数据分组只要沿着已经建立的路径向前传递就行了。无论是针对每个分组独立地选择路由路径,还是只有建立新连接的时候才选择路由路径,一个路由算法应具各的特性有:正确性、简单性、健壮性、稳定性、公平性和最优性。
路由算法可以分为:非自适应的和自适应的。非自适应算法不会根据当前测量或者估计的流量和拓扑结构来调整它们的路由决策,这个过程也称为静态路由。相反,自适应算法则会改变它们的路由决策,以反映出拓扑结构的变化,通常也会反映出流量的变化情况,这个过程称为动态路由。