启动问题和时钟同步是密切相关的。当同步必须调整节点的本地时钟,以便它们即使有硬件的时钟漂移也能保持同步时,为了给本地时钟建立一致性值,并且使节点首次启动时它们能很快同步,启动算法是有必要的。启动的另一种情况是重新启动,当瞬时故障已经涉及一个或多个节点(或所有)后,时钟同步需要重新建立。
对节点而言,解决启动问题的基本方法是对一段时间没有流量的节点发送携带了自己的特征的“唤醒”信息。此信息提供一个所有节点都可以用作本地时钟的基准的共同的事件,且发出者的身份表示在TDMA调度表中的位置,它对应着相应的时间。
当然,两个节点可能决定在几乎相同的时间发送唤醒信息,并且这些信息将在通道上“碰撞”。在基于总线的TTA中,碰撞信息的信号物理叠加在所述介质上,但传播延迟会导致不同的节点在不同的时间查看信号,因而导致碰撞检测是不可靠的。在星形拓扑结构中,中央守护者仲裁碰撞,并从任何节点几乎同时向前到达其他节点的信息中只选取一条。然而,每个中央守护者的仲裁独立,所以节点可以在几乎同一时刻在两个通道上收到不同的信息;解决这些“逻辑碰撞”是启动算法的任务。
在节点上执行的启动算法是基于两种超时参数,听超时τplisten和冷启动超时τpcoldstart。每个节点p的超时是唯一的,每个听超时的值大于所有冷启动超时的值。要区分两种情况:要么起始节点可以(重新)整合到一个已经运行的和同步的节点集合中,要么它必须初始化或等待要执行的一个冷启动。要确定是否已经存在一个同步的节点集合来整合,节点首先要听取通道的整合信息,这些信息在同步操作过程中周期性传送,且携带包括在TDMA循环内位置达成的协议状态。如果节点接收到这样的信息,该节点会根据信息的内容调整其状态,并因此进行同步设置。如果节点的听超时在信息收到之前过期,则执行冷启动。(www.daowen.com)
在冷启动过程中,节点首先等待接收一个类似于普通信息、但携带了一条发送节点提示的协议状态的特殊的冷启动信息。如果节点的冷启动超时过期之前没有接收到冷启动信息,那么节点自己将发送一个冷启动信息。如果节点接收到这样的信息,它的时钟复位,并等待另一个τpcoldstart时间单位、等待下一个用于同步的信息到达(无论是冷启动或正常启动)。节点之所以仅和接收的第二条(冷启动)信息同步,是因为有被称为大爆炸的机制,存在两个节点同时或重叠发送冷启动信息的可能。接收节点会把这当做一个逻辑冲突。然而,随后的信息是确定性的,这是由于节点独特的超时,因此不会进一步发生碰撞:冷启动先超时的节点先发送。此外,由于听超时大于任何冷启动超时,所以新的起始节点不会导致另一次冲突。
除了冲突之外,启动算法必须处理在不适当的时间发送“唤醒”信息、伪装成其他节点和错误执行计算的故障节点。中央守护者可以检测和屏蔽这些故障,但增加了算法的复杂性,因为它们本身必须在启动过程中与节点同步。
因为通信系统被复制,且存在两个中央守护者,所以故障节点必须不能初始化或渗透到一个启动程序中,造成两个中央守护者在TDMA调度表中在不同的位置启动是特别关键的。当然,两个守护者之一本身可能出现故障。TTA系统的容错启动显然构成一个相当复杂的问题,如在参考文献[17]中详细讨论的那样。因此TTA系统的容错启动为形式化分析提供了一个具有挑战性的课题。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。