第九章%第十章

news/2024/11/16 4:42:00/文章来源:https://www.cnblogs.com/icwangpu/p/18201288

第九章:遗忘路由算法(Oblivious)

Oblivious Routing 指在选取 packet 的路由路径时,不考虑网络当前状态的路由方法,这种方法实现简单且易于分析。

Oblivious Routing 路由方法需要在 局部性(locality)、均衡负载(load balance) 方面做取舍。

1、Valiant’s Randomized Routing Algorithm

一个 packet 希望从 s 发送至 d,首先会发送给一个随机选择的中间节点 x,之后再由 x 发向 d。在这两阶段中,可以采用任意的路由算法。通常经验来讲,使用在 uniform traffic 条件下能有效均衡负载的路由算法工作效果更好。

由于中间节点的随机选择,每一阶段的数据传输均为 uniform random pattern。从总体上看,Valiant的算法将任何流量模式的负载减少到随机流量负载的一半。

Valiant’s Algorithm on T orus T opologies

据包通过随机选择的中间节点x = 31路由。在第一阶段,数据包使用维序路由从s = 00到x = 31,经过4个跳,如黑体线所示。然后,在第二阶段,数据包从x = 31路由到d = 12需要额外的3跳。随机路由需要7跳才能到达目的地,而最小路由算法只需3跳即可到达目的地,牺牲了局部性。

Valiant’s Algorithm on Indirect Networks

2、Minimal Oblivious Routing

Minimal oblivious routing 严格控制选择的路由路径为最短路径。这种方法在层次化的拓扑结构中表现良好,能在兼顾 locality 的同时使负载均衡。

Minimal Oblivious Routing on a Folded Clos (Fat Tree)

从 s 向 d 发送数据包,会选择一个距离二者最近的共同祖先节点 x 作为中间节点,先由 s 发送至 x,再从 x 发送至 d。

上图展示了从1发送至6,可以有两条路径选择,经过0XXXA 或 经过0XXXB,二者都是距离最短的路径。

Minimal Oblivious Routing on a T orus

在 Torus 拓扑中的 Minimal Oblivious Routing,限制路由路径的中间节点位于最小象限之内(由 s 和 d 组成的长方形),并确定在每一维度上的移动方向是朝目标移动距离最短的方向。

下面展示了从 00 到 21 的多条路由路径。可以通过随机选择多条路径中的一条来均衡负载。

Torus 拓扑中采取 minimal oblivious 路由,在保留 locality 的方面表现较好,在 random traffic 中也能有效均衡负载。然而在某些最坏情况的 traffic 中,均衡负载的表现很差,如 tornado traffic。
(因为由于必须使用距离最短路径的缘故,只能使用象限内的节点作为中间节点。一旦某个较小象限内的数据传输较密集,就会造成严重的拥挤)

第十章:自适应路由

1、自适应路由基础

自适应路由算法使用有关网络状态的信息(如队列占用情况),在空闲路径中选择传递数据包的路径。由于路由依赖于网络状态,自适应路由算法与流量控制机制紧密耦合

一个出色的适应性路由算法,理论上讲会比 oblivious routing 更出色,因为他使用了网络的状态作为决策信息之一。然而在现实中,适应性路由在最坏情况下,性能非常糟糕。很大程度上这是因为,在路由的决策节点上只能获取局部的拥塞状况,在将包导向局部最优的路径时,经常会导致全局的负载不均衡

由节点3向节点7发送数据,既可以选择实箭头路线,也可以选择虚箭头路线,但此时节点5和6之间正在传输数据。

  • 3通过自身局部节点状态进行路由选择,由于不知道5-6之间正在传输,因此会对两条路径随机选择
  • 3直接向7发送数据,包在5处阻塞,5向4发送backpressure,4不再向5发送数据包。
  • 等4处队列也满了之后,4向3发送backpressure,此时3感知到前方阻塞,换另一条路径进行路由。

Stiff Flow Control (较小的队列容量)更适用于 Adaptive Routing。 这可以使 backpressure 信号更快地从堵塞处传递给决策节点。

在 Torus 等更复杂拓扑中采用适应性路由,通常在每一跳根据局部信息作一次路由选择。这也会带来非全局最优的问题。

在下面的 Torus 由 00 向 23 发数据。在 01 处,由于 01 到 02 轻度拥塞,所以选择了向 11 转发。这导致了之后所走的路径都是重度拥塞。

2、最小路径自适应路由

最小自适应路由算法在从源s到目的d的最小(最短)路由中进行选择,在每一跳上使用有关网络状态的信息做出路由决策。

3、完全自适应路由

全适应路由,不再严格要求路由路径为最短路径。为了避免一些拥塞路段,包可以暂时向远离目的节点的方向作转发。我们称做出这种选择的行为 Misrouting

活锁

由绕路而导致

  • 限制 Misrouting 的次数,达到次数上限后采用 Minimal Adaptive 方法。
  • 限制 Misrouting 的频率,每执行若干次 Minimal Routing 才能选择一次 Misrouting。

4、负载均衡自适应路由

先进行象限选择,在象限内使用无回溯的自适应路由

5、基于搜索的路由

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709079.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Spring Boot3、Vue3!这套小说系统开源了...

novel —— 一套基于 Spring Boot3 + Vue3 开发的前后端分离学习型小说项目。由小说门户系统、作家后台管理系统、平台后台管理系统等多个子系统构成。大家好,我是 Java陈序员。 今天,给大家介绍一个基于 SpringBoot3、Vue3 前后端分离的小说项目,集成了主流的技术栈,可供学…

process.poll() 检查子进程运行状态

在Python的subprocess模块中,poll()方法是Popen类的实例方法,用于检查一个子进程是否已经结束,如果已经结束,它将返回子进程的退出状态码;如果子进程尚未结束,它将返回None。 以下是poll()方法的一些关键点:检查子进程状态:poll()允许你检查一个子进程是否已经完成执行…

深入解析xLSTM:LSTM架构的演进及PyTorch代码实现详解

xLSTM的新闻大家可能前几天都已经看过了,原作者提出更强的xLSTM,可以将LSTM扩展到数十亿参数规模,我们今天就来将其与原始的lstm进行一个详细的对比,然后再使用Pytorch实现一个简单的xLSTM。 xLSTM xLSTM 是对传统 LSTM 的一种扩展,它通过引入新的门控机制和记忆结构来改进…

异构数据源同步之数据同步 → datax 改造,有点意思

开心一刻 去年在抖音里谈了个少妇,骗了我 9 万 后来我发现了,她怕我报警 她把她表妹介绍给我 然后她表妹又骗了我 7 万DataX DataX 是什么,有什么用,怎么用 不做介绍,大家自行去官网(DataX)看,Gitee 上也有(DataX)你们别不服,我这是为了逼迫你们去自学,是为了你们好…

sdf 测试-2-openssl

在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程,否则不得分。 0. 根据gmt0018标准,如何调用接口实现基于SM3求你的学号姓名的SM3值?(5‘)使用OpenSSL实现SDF接口中的hash运算接口,至少支持SM3算法,把相关函数集成到src中的…

阅读习惯2

本学期阅读成果总结阅读书单选择与总结: 我选择了参考的书单链接(https://weread.qq.com/misc/booklist/3107758_7sb8Fs2Hv),并从中挑选了几本书开始阅读。阅读数据截图:总时长:250 小时 册数:15 本 笔记数:47 条本学期的收获:阅读时长增加:本学期我总共阅读了250小时…

lodash已死?radash库方法介绍及源码解析 —— 函数柯里化 + Number篇

点赞 + 收藏 = 学会! 本篇我们介绍radash中函数柯里化和Number 相关的方法使用和源码解析。深入学习radash中的方法思想和底层实现。写在前面 tips:点赞 + 收藏 = 学会!主页有更多其他篇章的方法,欢迎访问查看。 本篇我们继续介绍radash中函数柯里化和Number 相关的方法使用…

sdf 测试-1-龙脉智能钥匙

在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程,否则不得分。 0. 根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘)使用龙脉智能钥匙…

sdf 测试-1

在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程,否则不得分。根据gmt0018标准,推导sdf的接口调用模式,比如调用SDF_GenerateRandom,还应调用其他什么函数,调用顺序是什么,给出结论和推导过程。(10‘) 使用龙脉智能钥匙定义一…

Spring 对于事务上的应用的详细说明

1. Spring 对于事务上的应用的详细说明 @目录1. Spring 对于事务上的应用的详细说明每博一文案2. 事务概述3. 引入事务场景3.1 第一步:准备数据库表3.2 第二步:创建包结构3.3 第三步:准备对应数据库映射的 Bean 类3.4 第四步:编写持久层3.5 第五步:编写业务层3.6 第六步:…

日常Bug排查-偶发性读数据不一致

日常Bug排查-偶发性读数据不一致 前言 日常Bug排查系列都是一些简单Bug的排查。笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材。 Bug现场 业务场景 先描述这个问题出现的业务场景。这是一个支付的场景,如果支付成功了,我们就把支付状态置为success(主单据更新)同…