130 likes | 328 Views
Vivaldi: A Decentralized Network Coordinate System. SIGCOM’04 F. Dabek, R. Cox, F. Kaashoek, R. Morris - MIT Reported by YANG Sirui - HUST 2007.9. 延时预判的几个可行方向. 网络坐标系 IDMaps, GNP, Vivaldi 同心环 ( 跨尺度采样 ) Meridian Any others ???. 网络坐标系涉及的问题. 正确的映射 Internet 到尺度空间 适应大规模用户 分布化 探测流量小
E N D
Vivaldi: A Decentralized Network Coordinate System SIGCOM’04 F. Dabek, R. Cox, F. Kaashoek, R. Morris - MIT Reported by YANG Sirui - HUST 2007.9
延时预判的几个可行方向 • 网络坐标系 • IDMaps, GNP, Vivaldi • 同心环(跨尺度采样) • Meridian • Any others???
网络坐标系涉及的问题 • 正确的映射Internet到尺度空间 • 适应大规模用户 • 分布化 • 探测流量小 • 适应网络动态性 • (以上是Vivaldi根据自己的优点进行的概括)
Vivaldi的特点 • Vivaldi向实际多弹簧系统进行类比,最初是为了Chord查询时避免访问远距离结点的 • 错误率和GNP相当,但无需专门的Landmark结点 • 本文是原始Vivaldi的扩展 • 仿真表明要比二维或三维欧式模型或球状模型更好? • 结论之一:主机间RTT值主要由地理距离决定,遍历路径的时间占总RTT的绝大部分.”Internet core does not ‘wrap around’ the Earth to any significant extent.”
从基本开始-一种中心化的方法 • 目标:使得误差均方值最小 • 其中L为延时实际值,x为坐标,ij为结点,||为距离 • 通过和弹簧系统类比,该表达式为弹簧势能,要求使得势能最小 • 根据胡克定律 前面因素为大小,后面因素为(单位)向量方向 • 每过时间t, i的坐标会因为Fi (Fij的合力)作用而移动 并最终达到平衡位置
进一步-简单的Vivaldi算法 • 每个结点从原点开始,在一个方向任意的单位向量作用下得到一个随机的坐标 • 设i/j之间的RTT测量得到为r,则i的坐标递归变化并最终达到平衡 • 这种方法的缺点:新收到的RTT消息会有较大的权重而导致偏差,且不具很好的扩展性
最后-自适应的时间间隔δ • 坐标的收敛时间取决于每次的时间间隔δ.过小则收敛很慢,过大则导致坐标值动荡 • 如果j的坐标本身误差很大,i基于j的移动可能会增加i原本的误差 • 方案:结点本身误差大时(如刚加入)采用较大的δ,本身坐标较精确时采用较小的δ δ=Cc*local error (Cc<1) 即结点误差为5%时不会一次移动超过5%的范围
自适应的时间间隔δ (cont.) • 进一步,考虑j的误差得到 δ=Cc*local error/(local error + remote error) • 即j的误差为5%时比j的误差为50%时对i的坐标影响力更大
自适应的时间间隔δ (cont.) • 结点对自身误差的估计 • 计算侧得的RTT值与之前预估的RTT值之间的相对误差(即绝对误差除以测得的RTT值)
测评 –数据来源 • 192个PlanetLab结点和1740个DNS结点(King测量) • 10%的DNS结点测量结果离其它所有结点都很近,问题可能是这些DNS本身负载重或出现拥塞,initial query和recursive query差不多(巨)大而使得相减值很小.(my understanding) • PlanetLab结点平均RTT为76ms, DNS结点为159ms • 还有一些理论化的网格结点(即真实坐标为矩形网格状分布)
测评 –结果 • Cc=0.25时收敛效果较好(即快又无抖动) • 在有大量结点加入时(误差高),如Nold=Nnew=200时,adaptive时间间隔收敛时间60s,而constant时间间隔为250s(间隔=1s)
测评 –结果(cont.) • 通讯模式(即j这样的结点如何来):如果只测量最近的结点(比如网格点中的4个毗邻邻居)则会有坐标扭曲现象 • 至少有5%的远程结点,可以避免上述扭曲, 选50%的远程结点可以使得400结点的收敛速度为300s • 在Vivaldi中32个neighbors和GNP中32个landmarks对比,正确度相当
2.5维类欧式坐标 • 2.5维坐标(my def, i.e., 2维加上一个非负的height) [x; xh]-[y; yh] = [(x-y); xh + yh] ||[x; xh]||=||x||+xh a*[x; xh] = [ax; axh]