文章目录
路由算法的作用
路由: 在特定的拓扑上,选择从 source 节点到 destination 节点的路径。
-
一个好的路由算法,即使面对 non-uniform traffic pattern,也能有效地均衡负载,使实际 throughput 更加接近于理想情况。
-
同时,如何应对网络故障(如 router、link 故障),也是衡量路由算法好坏地重要方面。
路由算法的分类
确定性算法(Determinstic):
在 x 和 y 之间,总是选择相同的路径进行路由,即使存在着其他可能的路径。
确定性算法忽略了路径多样性,因此容易造成负载不均衡。然而这种算法常常被使用,因为它实现简单,且容易实现无死锁性质。
状态无关性算法(Oblivious):
在确定路由路径时,不会考虑当前网络的实时状态。上面的确定性算法也属于状态无关性算法的范畴。
例如,一个随机路由算法即属于状态无关性算法。
适应性算法(Adaptive):
在确定路由路径时,会与网络当前状态相适应,使用网络状态信息(Node 状态,link 状态,占用 resources 情况)决定路由。
路径距离分类:
除了上面的分类方法之外,还可以通过路由算法是否执着于选择距离最近的路径,将算法分为 minimal 和 non-minimal。
一次计算(All-at-once):
当数据包注入进 source 节点时一次性计算完成路由路径。之后在包传输过程中按照计算好的路径路由。
通过在 source 节点计算完整路由路径,能减少用于计算路由路径的时间。但是在后续包传递的过程中,计算好的路由路径需跟数据一起传输。
多次计算(Incremental):
包在到达每一个中转节点时,计算下一跳的路由。一直持续到到达 destination 节点。
不需要随包一起传输路由路径,但在每一个节点都计算路由可能导致包传输的延时加大。相比于 all-at-once,计算路由时可利用的历史信息较少,导致可能无法实现某些 all-at-once 路由算法。
确定性算法(Deterministic Routing)
下面介绍两种最经典的确定性算法。
Destination-Tag Routing in Butterfly Networks
在 Butterfly 网络中,目标地址被直接用作路由选择。地址的每一位被依次用作下一跳路由的决定。这期间,source 节点并没有被考虑。
Dimension-Order Routing in Cube Networks
在 Cube 网络中,根据最小距离原则,按照维度的顺序,直接确定路由路径。
下一篇:NoC(Network on Chip)基础 (6):Oblivious Routing 和 Adaptive Routing 将对于 Oblivious 和 Adaptive 路由方式进行介绍。