发明名称 对等网络中全局节点维护方法
摘要 本发明属于对等网络的全局拓扑维护技术领域,其特征在于,首先为对等网络配置一个控制服务器,以管理全局节点的状态,完成节点的加入、退出、更新和检测以及与各客户机的通讯,相应定义一个动态的存储节点信息的数据结构;其次,按IP地址C段将该对等网络分为各分区,并为其建立一个唯一可比较的标识符以及按标识符降序排序的节点列表,还要把C段首地址作为该标识符,建立一个首地址列表,按IP地址顺序排列;再用折半搜索法查找首地址列表,完成节点的加入、退出、更新,并为其维护一个邻居节点列表;然后再按设定的阈值根据上次发送保持激活消息的时间来判断节点的失效,并据此进行周期检测。本发明在保证并优化节点间传输性能的同时,也避免了网络中形成局部孤岛。
申请公布号 CN100386998C 申请公布日期 2008.05.07
申请号 CN200610011472.2 申请日期 2006.03.10
申请人 清华大学 发明人 徐恪;崔勇;孙睿;王海洋
分类号 H04L12/24(2006.01);H04L12/28(2006.01) 主分类号 H04L12/24(2006.01)
代理机构 代理人
主权项 1.对等网络中全局节点的维护方法,其特征在于,在所述对等网络中该方法依次含有以下步骤:步骤1.为所述对等网络配置一台控制服务器,由该服务器管理全局节点的状态,完成节点的加入、退出、更新和检测,以及与客户机通过网络协议通讯,相应地,在该控制服务器和客户机上各定义一个动态的存储节点信息的数据结构,每个节点的信息至少包含该服务器为节点分配的全局唯一的ID标识符、节点地址IP、节点是否处于地址转换设备所管理的网络中以及节点上次发送保持激活消息的时间,所叙述地址转换设备指的是允许多台主机同时共享少数IP地址来进行网络访问的设备;步骤2.把全网所有的节点按其IP地址的C段进行分区,并设置唯一的许可比较的ID标识符,把同一个IP地址C段的节点信息存储在一个变长的节点信息表中,按ID标识符降序排列,再把所有的这些IP地址C段数组的首地址作为所述ID标识符保存在一张区域信息表中,按照节点的IP地址信息顺序排列,在区域信息表中,包含分区的唯一标识符以及一个指向节点信息表首地址的指针;步骤3.当有一个新节点向所述控制服务器提出申请加入对等网络时,依次按以下步骤执行:步骤3.1.根据当前新节点的IP地址的分段为该新节点分配一个区域,并根据所述该区域ID的分布,为新节点产生一个ID标识符;步骤3.2.根据新来节点的IP地址信息,该控制服务器使用折半搜索法对区域信息表进行搜索,以发现新节点所在区域是否有节点已经加入到当前的对等网络中,所述折半搜索法依次含有以下步骤:步骤3.2.1.选择数组中的起始位置和结束位置作为折半搜索当前的搜索范围;步骤3.2.2.进入折半搜索的循环,首先,判断起始位置和结束位置相差是否小于等于1,如果小于等于1,则表示没有搜索到需要的值,搜索失败返回空值,否则,继续执行以下步骤;步骤3.2.3.根据当前的搜索范围,利用起始位置与结束位置之和的一半,求出中间位置的节点,获取该节点的指针;步骤3.2.4.比较该中间位置节点的值与要搜索值的大小,如果两者相等,表示搜索成功,返回该中间位置节点的位置,否则,继续执行以下步骤;步骤3.2.5.如果搜索值比中间位置节点的值大,则将当前搜索范围的起始位置作为新的起始位置,将当前的中间位置作为搜索范围的新的结束位置,返回到步骤3.2.2继续执行;步骤3.2.6.如果搜索值比中间位置节点的值小,则将当前的中间位置作为新的起始位置,将当前搜索范围的结束位置作为搜索范围的新的结束位置,返回到步骤3.2.2继续执行;步骤3.3.若新节点所在区域已经有节点加入到当前的对等网络中,则按以下步骤获取候选节点列表,并把该候选节点列表发送给客户机作为将来预提供给客户机的候选邻居节点,该控制服务器把新节点按ID标识符降序依次插入到该区域的节点数组中;步骤3.3.1.该控制服务器根据当前节点信息表的首地址,遍历该数组中的每一个元素,中止条件为数组总元素个数或者预设的候选邻居节点数,并判断当前遍历到的节点是否失效,判断准则是被遍历到的节点的上次发送有效激活消息的时间是否超过3倍的预先设定的值,如果遍历到失效节点,则删除节点信息表中的对应项,否则,执行下一步骤;步骤3.3.2.判断当前节点是否处于地址转换设备所管理的网络中,若结果为”是”,则删去步骤3.3.1中那些不存在内网的有效节点;若为”否”,则删去步骤3.3.1中那些在地址转换设备所管理的网络中的有效节点;步骤3.3.3.把步骤3.3.2得到的各个节点加入到候选节点列表中,一直到满足步骤3.3.1中所述的中止条件为止;步骤3.3.4.若步骤3.3.3中得到的候选节点不满足设定的候选邻居节点数,则随机选择IP地址的一个C段的节点信息表,继续按照步骤3.3.1~步骤3.3.3进行候选节点搜索,若在所述节点信息表内还没有满足设定的候选节点总数,则按照在所述区域信息表中的IP地址的顺序,继续在相邻的下一个IP地址C段区域的节点信息表中搜索,一直到满足设定的候选节点总数或者搜索完全网所有节点为止;步骤3.4.若步骤3.2中没有发现已经加入到当前对等网络中的节点,则随机选择一个节点信息表,按照步骤3.3.1~3.3.4进行,以获取候选节点列表,并发送给客户机作为其候选邻居节点,该控制服务器创建该分区的一个新节点数组,并把该节点加入该数组,然后把该数组首地址按照IP降序放入到IP分区数组中;步骤4.若客户机发送保持激活消息,请求节点更新时,则该控制服务器依次按照以下步骤执行:步骤4.1.该控制服务器使用步骤3.2所述的折半搜索法对区域信息表进行搜索,获取所述要被更新节点所在IP地址C段的节点信息表的首地址,若找到所选首地址,则执行下一步骤,否则,提示操作失败,执行步骤5;步骤4.2.根据步骤4.1得到的首地址,在节点信息表中,以所选节点ID作为基准,在节点信息表中利用步骤3.2中所述的折半搜索法查找该节点,若找到所述节点,则修改节点信息中的数据,改变上次修改时间为该控制服务器当前时间,若未找到该节点,则提示操作失败,继续执行步骤5;步骤5.当客户机发出退出消息,该控制服务器便按照以下步骤依次进行:步骤5.1.使用步骤3.2中所述的折半搜索法查找区域信息表,获取该节点所在IP地址的C段的节点信息表首地址,若找到该首地址便执行下一步,否则,提示操作失败,执行步骤6;步骤5.2.根据获取到的首地址,以该控制服务器在节点信息表中以该客户机所在节点的ID作为搜索关键字,在节点信息表中使用步骤3.2所述的折半搜索法查找该节点,若找到该节点,便删除节点信息表中的数据,把其后的节点前移,并判断节点信息表是否已经为空,若已经为空,则删除区域信息表中的对应项,若不为空,则提示删除信息成功继续执行步骤6,若未找到该节点,则提示操作失败,继续执行步骤6;步骤6.当控制服务器需要周期检测IP地址某个C段的节点信息表中的节点是否失效时,则按如下步骤依次进行:步骤6.1.根据输入控制服务器中需要检测的节点信息表首地址,遍历该信息表中的所有元素;步骤6.2.首先,根据上次更新的时间按设定的阈值,判断当前节点是否失效,若失效,则删除该节点信息,并把后面的节点前移,否则,继续判断下个节点;步骤6.3.判断是否已经到数组的最后一个节点,若已经到了,则退出循环,否则,继续循环判断;步骤6.4.判断该节点信息表经过失效节点清除之后是否为空,如果为空,则将该节点信息表释放,并删除区域信息表中的对应项,后面数据项前移,退出主程序,否则,继续步骤6所述的周期性检查。
地址 100084北京市北京100084-82信箱