|
Hello协议
HELLO 协议提供了一个 IGP 的例子,它使用的选路度量标准是基于网络时延而不是跳数。虽然现在 HELLO 已经废弃不用了,但是由于曾经被早期的 NSFNET 主干网中的模糊球( fuzzball )路由器采纳为 IGP ,它还是在 Internet 的发展史上具有非同一般的意义。 HELLO 对我们有重要意义,因为它提供了一个不使用跳数的矢量距离算法的例子。
HELLO 提供两个功能:使许多机器的时钟同步,并且使每个机器都能计算到目的站的最短路径。因此, HELLO 报文在带有选路信息的同时,还携带有时间戳信息。 HELLO 的基本原理很简单:参加 HELLO 交换的每一个机器,维侍一个对邻站机器时钟的最佳估值的表。在传送一个分组之前,机器把当前时钟值复制到分组中作为它的时间戳。分组到达之后,接收方计算这条链路的当前时延。为了做到这点,它估计出邻站机器的当前时钟值,再减去到达分组的时间戳值。机器周期性地轮询邻站机器,以便重新估计时钟值。
HELLO 报文允许参与的机器计算新的路由。这个算法和 RIP 的很像,只不过是使用时延而不是跳数而已。每个机器周期性地向其邻站机器发送一个到所有其他机器的估计时延。假如机器 A 向机器 B 发送一个选路表,指出目的站和时延。 B 检查表中的各个项目。如果 B 到一个已知的目的站 D 的当前时延,比从 A 到 D 的时延与从 B 到 A 的时延之和还要大, B 就更改它的路由,并把流量经 A 送给 D 。也即只要经过 A 的路由的时延较小, B 就使通信流量经过 A 。
和其他选路算法一样, HELLO 也不能太频繁地改变路由,否则它就不稳定。选路算法的不稳定性会产生“二阶段振荡”( two — stage oscillation )的效应,即通信流量在两个不同的路由之间来回切换。在第一阶段,机器找到一条轻载路径后突然将流量切换给它,但不料又发现该路径严重超载。第二个阶段,机器将通信流量从这条超载路径切换开,结果又会发现这是负载最轻的路径。这样就形成了振荡。为避免这种现象, HELLO 选择的策略是仅在路由的时延差距较大时才进行切换。 
图 1.6 是 HELLO 的报文格式。这种协议比其报文格式更为复杂,因为它把通过本地网的连接与那些跳数很多的连接区分开来,使选路表中的陈旧项目不再起作用,并且它使用局部标识符而不是完整的 IP 地址来标识主机。
图 1.6 HELLO 报文的格式。每个报文携带日期、时间以及时间戳,以便协议用来估计网络的时候校验和( CHECKSUM )字段记录了整个报文的校验和,日期( DATE )字段是发送者的当地日期,时间( TIME )字段是按照发送者的时钟记录下的当地时间,时间戳( TIMESTAMP )字段用于计算往返时延。
标有 # HOSTS 的字段给出了主机列表中的项目数,本地项目( LOCAL ENTRY )字段标出本地网络使用的项目块。每个项目包括时延( DELAY )字段和偏移( OFFSET )字段,分别给出了到达目的的主机的时延,以及发送方对该主机与自己时钟的偏差的当前估值。
|