BERKELEY UNIX 4.2下的EGP网关( 四 )


实际的Hello与Poll间隔由第一次选择由网关与它的对等网关报告的间隔的极值决定 。考虑
到可能网络时延变化2秒容差被加到Hello间隔上,Poll间隔增加为Hello间隔的整数倍 。
这导致32秒Hello与128秒Poll间隔 。
假如一个响应Poll的更新没有被收到,至多发送一个repoll (顺序号码相同)代替下一个已经安
排的Hello 。
2.4邻居中止
假如EGP进程通过Kill命令发送一SIGTERM信号,全部已经获得的邻居都发送Cease (停止)
命令 。Ceases在hello间隔内至多重复传输3次 。一旦全部具有任一个具有Cease - acks
的响应或者已发送三重复传输的Ceases,该进程终止 。
2.5邻居可达性
只有当前可达性判定被实现 。它的行为与在[中Mills 84a]推荐的有微小的变化 。
应答移位寄存器被维护 。关于各个Poll or Hello命令发送一个零变换为移位寄存器 。假如
一个响应( I - H - U,更新或错误)得到正确的序号反应,零被一替代 。各个新命令发送之前
可达性通过检查上移位寄存器四项判定 。假如该邻居是可以达到的并且收到的响应< = 1,该
邻居被认为不可达 。假如该邻居被认为不可达并且收到的应答> =3,现在被认为可以达到
的 。
一个邻居后获取之后被立即认为可以达到的,所以第一个来源于一个核心网关(一旦它认为
这个网关可以达到的)poll用一个更新回答 。Polls不发送除非一个邻居已经认为可以达到的
并且它没有在它的最后的Hello I - H - U或Poll报文中建议它认为这个网关不可达 。这个
防止第一个Poll在一个down/up转换以后被丢弃 。这是重要的因为轮询用于可达性判定 。
遵循至少一获取报文必须被接到,在第一个轮询发送之前 。这将决定同位体不认为这个网关
停机 。在第一个poll之前通常要求至少发送一个Hello 。这段落的讨论不同于[ Mills 84a],它
建议一个同位体按照获取被认为停机并且一旦同位体被认为开机Polls就可能发送 。这是唯
一偏离[ Mills 84a]的重要的之处 。
由被认为不可达的同位体收到的Polls发送一个错误反应,它答应他们的可达性判定正确地
改进 。
此举是一个[Mills 84a]选项 。
当一个邻居变成不可达,利用它的全部路由从该路由表上删掉 。假如知道不能获得邻居的话
该不可达网关被停止并且尝试获得一个新邻居 。
假如知道已经获得的全部邻居,可达性判定延长30分钟( [ Mills 84a]建议60分钟),在定时
不可达邻居中止以后并且reacquisition每4分钟尝试一次 。
目的在于减少不必要的网络信息流通量 。
假如三个连续的轮询没有收到正确的更新应答该邻居被停止并且在4分钟内尝试获得或
reacquisition一个替换 。本规定防御邻居发送不正确的更新数据格式 。这些情况一度在测试
过程中出现 。
2.6序号
序号是如同在[ Mills 84a]中推荐的方式处理 。为各个邻居维护单独的发送和接收顺序号 。发
送序列号被赋初值零并且在各个新Poll (非repoll)发送与不在其他的时间之前加1 。发送序
列号用于全部命令 。接收顺序号通过拷贝上次来源于一个邻居的请求、Hello或Poll命令
维护 。
本序号用于输出更新 。全部应答(包含错误应答)返回该刚才收到的报文的序号 。
2.7过多命令的处理
假如在任一8分钟之内从一个邻居收到多于20命令,该邻居被认为非法的,中止并且
reacquisition一小时 。
在poll interval期满之前(小于4秒网络时延变化性容量)最多收到一一个repoll (相同顺序号
码),用一个更新答复,其它则发送一个错误反应 。当在响应中发送一个更新到的repoll时,