4.7.3 HELLO协议

HELLO协议是另一种IGP协议,它使用与RIP协议不同的方法来度量路由距离。该协议使用修改的矢量距离算法,但是距离值不再用跳数,而是用时延作为距离度量标准。

HELLO提供两个功能:

使许多机器的时钟同步;

使每台机器都能计算到目的站具有最短时延的路径。

HELLO的基本原理是:

参加HELLO交换的每台机器维护着一个对邻站及其时钟最佳估值的表。在传输一个分组之前,机器把当前时钟值复制到分组中作为其时间戳。分组到达之后,接收方计算这条链路的当前时延。为了做到这点,它估计出邻站及其的当前时钟值,再减去传入分组的时间戳值。机器周期性地轮询邻站机器,以便重新估计时钟值。

采用时延作为距离存在一个不稳定性的问题。如果两条相互可替代的路由的延迟时间相差很小,那么,如果路由协议对于时延上的微小变异迅速做出反应,就会产生二阶段振荡(two-stage oscillation)的效应,通信量在两条路径之间来回切换,形成振荡。以下的动画反映了二阶段振荡的情形。

避免振荡可以采用几种启发式方法:

第一、使用抑制技术来防止迅速改变路由;

第二、协议并不精确地测量并计算延迟时间,而是按照更高位的数进行舍入或采用一个阈值,从而忽略小于该阈值的变化;

第三、协议不对每次测量的时延进行比较,而是保持最近的值的变化着的平均值,或者应用“N中取K”的规则,最近N次时延测量中至少有K次小于当前时延,才能改变路由。

启发式方法对解决路由振荡的简单情况是有效的,但是当替代路径的试验和吞吐率特征不同时,启发式方法就会很低效。比如卫星信道和串行线信道进行比较就面临振荡问题。

校验和(CHECKSUM)字段记录了整个报文的校验和。

日期(DATE)字段是发送者的当地日期,时间(TIME)字段是按照发送者的时钟记录下的当地时间,时间戳(TIMESTAMP)字段用于计算往返时延。

主机数字段给出了主机列表中的项目数,本地项目(LOCAL ENTRY)字段标出本地网络使用的项目块。每个项目包括时延(DELAY)字段和偏移(OFFSET)字段,分别给出了到达目的的主机的时延,以及发送方对该主机与自己时钟的偏差的当前估值。