正在加载图片...
·154 智能系统学报 第6卷 但这种在数据发送的初始阶段的超时重传并非 表copylist中删除,节点j按式(2)计算其所需的数 网络真正出现拥塞,故不必错误地进入拥塞避免阶 据包请求消息.节点j所需要的数据iwant[m]为其 段,因此需要调整ssthresh的值以便使网络恢复到 自己没有而节点i有,并且是还没有交付到目的节 慢开始状态。 点的也不是节点先前请求过的数据。 1.2ACK-EPI算法描述 iwant,[m]SV:[m]& 1.2.1ACK到达通告算法描述 ihave:[m]&prevask;[m]&delivered,[m].(2) 对于QUERY和UPDATE分组[2o),在分组头中 节点j将delivered[m]复制到UPDATE分组中 也各自加人了与摘要向量数组SV[SUMMSIZE]相 的updack[m],再将封装iwant,[m]和updack[m] 似的新数组qryack[SUMMSIZE]和updack[SUMM- 的UPDATE分组发送给节点i. STZE]、qryack[SUMMSIZE]和updack[SUMMSIZE] 3)节点i接收UPDATE分组,发送EPI分组给 用来传递delivered列表.ACK-EPI的算法有如下4 节点j: 个阶段(如图1). 节点i接收到UPDATE分组后,节点i接收到表 示delivered,[m]的updack[m]后,先按式(3)更新 QUERY SV qryack,[m] 本地节点的delivered:[m]列表. Update delivered, delivered;[m]delivered;[m]ll updack;[m]. Delete delivered messages() (3) UPDATE:iwant [m],updack,[m] 更新完delivered:[m]后,节点i根据最新的de Update delivered, livered:[m]列表将delivered:[m]中相应位为1的数 Delete delivered messages 据包从节点缓存列表copytable和分组中的缓存列 Messages for m in iwant,[m] (3 表copylist中删除.节点i将iwant,[m]中相应位为1 的数据包m逐条封装在EPI分组中发送给方 Send messages to j 4)节点j接收EPI分组 Update delivered,SV (4) 节点收到数据包后,依次作如下处理: T 如果该EPI分组的目的节点是j,说明EPI分组 图1 ACK-EPI算法原理 正确地从源节点传送到了目的节点,则将该数据包 Fig.1 Block diagram of ACK-EPI algorithm 在SV,[m]和delivered,[m]中的对应位置l,并将数 1)节点i向节点j发送QUERY分组 据传递给上层协议。 节点和j相遇后,节点向j发送QUERY分组, 如果该EPI分组的目的节点不是j,但是需要j QUERY分组中包括有:自己存储报文的摘要向量 进行存储转发,则将该数据包在SV,[m]中的对应 SV,[m]以及已交付数据包列表delivered,[m]的副 位置1,等待该分组转发.但是在转发之前要先判断 本qryack:[m]. 此包是否已经交付给了目的节点但仍存储在中间节 2)节点j接收QUERY分组并发送UPDATE分 点的消息副本,利用TCP到达目的节点后,接收端 组 发送的在网络中传输的ACK确认消息来判断,具体 节点j接收到SV:[m]和qryack:[m]后,j将 方法如下:建立一个新的二维数组check[SUMM qryack;[m]和本节点的delivered[m]按式(l)进行 SZE+3][3]来存储数据包的序列号和数据包类 按位或,将消息m在delivered;[m]中的对应位按位 型,设定Marx为收到的ACK的最大序列号,如果来 置1,以更新本地节点中保存的delivered,[m]. 的这个包是新的数据包则提取此包的D号、序列号 delivered,m]delivered,[m]l qryack:[m]. 和数据包类型,并执行以下步骤: (1) 1)如果此包是TCP包并且其序列号不大于 更新完delivered,[m]后,节点j根据最新的de Max,表明此TCP包已经到达了目的节点(因为有更 livered,[m]列表将delivered,[m]中相应位为1的数 大序列号的ACK已经在网络中传播),则直接将该 据包从节点缓存列表copytable和分组中的缓存列 数据包在delivered,[m]中的对应位置1
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有