CN101841531B - Cdn-p2p混合网络的模拟方法和系统 - Google Patents
Cdn-p2p混合网络的模拟方法和系统 Download PDFInfo
- Publication number
- CN101841531B CN101841531B CN 201010126882 CN201010126882A CN101841531B CN 101841531 B CN101841531 B CN 101841531B CN 201010126882 CN201010126882 CN 201010126882 CN 201010126882 A CN201010126882 A CN 201010126882A CN 101841531 B CN101841531 B CN 101841531B
- Authority
- CN
- China
- Prior art keywords
- event
- node
- virtual
- cdn
- hybrid network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及CDN-P2P混合网络的模拟方法及系统,方法包括:步骤1,读取配置文件,建立虚拟CDN-P2P混合网络;步骤2,初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;步骤3,从所述离散事件列表中依次弹出事件,根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;步骤4,将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟。本发明能够实现对CDN-P2P混合网络的模拟,获得CDN-P2P混合网络的性能仿真数据,以供网络布置更新和网络性能改进中使用。
Description
技术领域
本发明涉及分发网络的模拟,尤其涉及CDN-P2P混合网络的模拟方法和系统。
背景技术
CDN-P2P(CDN:Content Delivery Network,内容传递网络;P2P:Peerto Peer,端对端网络)混合网络是近年来受到关注的新型内容分发系统,采用两级层次化模型:CDN级和P2P级。CDN-P2P混合网络跟传统CDN网络相比,可降低服务器负载,提高可扩展性,从而可通过减小边缘服务器数量节约部署成本;与纯P2P网络相比,可提供更好的QoS保障。另外,CDN-P2P混合网络可显著降低骨干网络传输负载。对于这类拓扑规模庞大的系统进行性能分析与评价存在架构复杂、控制困难、开销很大的问题,因此一般通过模拟实验的方式加以验证,在节约开发时间与费用的前提下利用计算机对其数学模型或者系统模型进行评估,并收集丰富的研究数据从而评价该系统的真实特性。
CDN-P2P混合网络结构可抽象成如图1所示的两级层次化模型。内容分发过程分为两个阶段:CDN级和P2P级。在骨干网部署CDN级分发系统,将内容分布到骨干网络的边缘,并在副本传输中应用P2P技术,边缘服务器可同时从源服务器和其它边缘服务器获取副本数据;在接入网构建中心化的P2P自治网,用户节点之间可相互交换文件内容。因此,用户节点即可从CD网络的边缘服务器获取数据,同时也可通过P2P网络从其它peer节点(对等节点)获取数据。
目前在国内外已经存在关于CDN和P2P网络的模拟平台,但是都未涉及CDN-P2P混合网络协议的模拟;也存在一些通用性模拟平台,但是由于这些平台设计缺乏针对性,比如未考虑实际上层网络的特点等,基于通用性模拟平台的开发往往受到很多限制而影响性能,不能直接用来模拟CDN-P2P混合网络。
模拟平台的稀缺导致对CDN-P2P混合网络特性和相关策略的研究缺乏实验平台和实验数据的支撑。
发明内容
为解决上述问题,本发明提供了CDN-P2P混合网络的模拟方法和系统,能够实现对CDN-P2P混合网络的模拟,获得CDN-P2P混合网络的性能仿真数据,以供网络布置更新和网络性能改进中使用。
本发明公开了一种CDN-P2P混合网络的模拟方法,包括:
步骤1,读取配置文件,建立虚拟CDN-P2P混合网络;
步骤2,初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;
步骤3,从所述离散事件列表中依次弹出事件,根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;
步骤4,将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟。
所述配置文件包括:CDN-P2P混合网络拓扑结构、链路信息、边缘服务器对应的存储文件信息;
所述步骤1进一步为,
步骤21,从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体;所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点;
步骤22,从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息;
步骤23,从配置文件读取边缘服务器对应的存储文件信息,更新虚拟边缘服务器的本地存储文件列表,以及虚拟全局索引服务器的文件对应的边缘服务器位置信息列表。
所述步骤22中初始化所有虚拟链路的链路信息进一步为,
步骤31,采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
所述步骤2进一步包括,
步骤41,在内存池中为所述离散事件列表分配空间,所述离散事件列表的行数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积;
步骤42,为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数;
步骤43,生成统计信息事件和传输速率计算事件,并将所述统计信息事件和所述传输速率计算事件插入所述离散事件列表。
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤51,如果所述事件的类型为节点加入事件,则执行如下步骤;
步骤52,根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中文件的种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入;
步骤53,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输;
步骤54,初始化下次索引请求事件和下次节点阻塞事件;将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
在处理节点加入事件时,将加入的节点设为活跃状态;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤61,如果所述事件的类型为节点离开事件,则执行如下步骤;
步骤62,如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态;
步骤63,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器发送离开消息,所述虚拟子索引服务器将本地的所述虚拟节点信息删除;
步骤64,关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构;
步骤65,在所述虚拟CDN-P2P混合网络中,所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
所述步骤65后还包括,
步骤71,所述与所述虚拟节点建立连接的虚拟节点判断自身当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于一预设阈值,则所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤81,如果所述事件的类型为传输速率计算事件,则执行如下步骤;
步骤82,初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆;
步骤83,从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值;
步骤84,将每条连接对应的传输的字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果连接的结束虚拟节点,在传输所述字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将所述节点离开事件插入离散事件列表;
步骤85,计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤91,如果所述事件的类型为节点阻塞事件,则执行如下步骤:
步骤92,从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部;
步骤93,从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态;
步骤94,将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;
步骤95,生成下次的节点阻塞事件,设置发生时间,将生成的节点阻塞事件插入离散事件列表。
初始化后的离散事件列表中包括索引请求事件;
所述索引请求事件中记录有所述索引请求事件发生的主体;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤101,如果所述事件的类型为索引请求事件,则执行以下步骤;
步骤102,如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表;
步骤103,如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息;
步骤104,虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输;
步骤105,虚拟节点生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,将生成的索引请求事件插入所述离散事件列表。
初始化后的离散事件列表中包括副本更新事件;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤111,如果所述事件的类型为副本更新事件,则执行以下步骤;
步骤112,从配置文件读取边缘服务器对应的存储文件信息,所述虚拟CDN-P2P混合网络中虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表;
步骤113,所述虚拟CDN-P2P混合网络中虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入所述离散事件列表。
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤121,如果所述事件的类型为统计信息事件,则执行以下步骤;
步骤122,遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,将所述统计事件插入所述离散事件列表。
所述步骤83中更新虚拟链路的可用带宽值进一步为,
步骤131,如果连接所在虚拟链路的可用带宽值大于所述的虚拟链路的平均带宽值,则将所述虚拟链路的可用带宽值减去所述平均带宽值,否则,将所述虚拟链路的可用带宽值更新为零。
本发明还公开了一种CDN-P2P混合网络的模拟系统,包括:
拓扑管理模块,用于读取配置文件,建立虚拟CDN-P2P混合网络;
内存管理模块,用于以虚拟CDN-P2P混合网络中虚拟实体和事件为对象,进行空间分配和释放;
事件管理模块,用于初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;从所述离散事件列表中依次弹出事件;
网络运行模拟模块,用于根据所述弹出的事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;并且将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟。
所述配置文件包括:CDN-P2P混合网络拓扑结构、链路信息、边缘服务器对应的存储文件信息;
所述拓扑管理模块进一步用于从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,通过所述内存管理模块为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体;从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,通过所述内存管理模块为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息;从配置文件读取边缘服务器对应的存储文件信息,更新虚拟边缘服务器的本地存储文件列表,以及虚拟全局索引服务器的文件对应的边缘服务器位置信息列表;
所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点。
所述拓扑管理模块在初始化所有虚拟链路的链路信息时进一步用于采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
所述内存管理模块进一步用于在内存池中为所述离散事件列表分配空间,所述离散事件列表的行数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积;
所述事件管理模块进一步用于为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数;生成统计信息事件和传输速率计算事件,并将所述统计信息事件和所述传输速率计算事件插入所述离散事件列表。
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点加入事件时,进一步用于根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中文件的种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入;使所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输;初始化下次索引请求事件和下次节点阻塞事件;通过所述事件管理模块将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
在处理节点加入事件时,将加入的节点设为活跃状态;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点离开事件时,进一步用于如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态;使所述虚拟节点向虚拟子索引服务器发送离开消息,使所述虚拟子索引服务器将本地的所述虚拟节点信息删除;关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构;使所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
所述网络运行模拟模块还用于判断所述与所述虚拟节点建立连接的虚拟节点判断当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于一预设阈值,则使所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为传输速率计算事件时,进一步用于初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆;从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值;将每条连接对应的传输的字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果连接的结束虚拟节点,在传输所述字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将所述节点离开事件插入离散事件列表;计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点阻塞事件时,进一步用于从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部;从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态;将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;生成下次的节点阻塞事件,设置发生时间,通过所述事件管理模块将生成的节点阻塞事件插入离散事件列表。
初始化后的离散事件列表中包括索引请求事件;
所述索引请求事件中记录有所述索引请求事件发生的主体;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为索引请求事件时,进一步用于如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表;如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息;使虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输;生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,通过所述事件管理模块将生成的索引请求事件插入所述离散事件列表。
初始化后的离散事件列表中包括副本更新事件;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为副本更新事件时,进一步用于从配置文件读取边缘服务器对应的存储文件信息,使虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表;使虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入所述离散事件列表。
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为统计信息事件时,进一步用于遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,通过所述事件管理模块将所述统计事件插入所述离散事件列表。
本发明的有益效果在于,能够实现对CDN-P2P混合网络的模拟,获得CDN-P2P混合网络的性能仿真数据,以供网络布置更新和网络性能改进中使用;配置文件中指定边缘服务器存储文件的信息,这种存储信息策略的制定就是新型网络副本放置策略,使得可以供其他研究人员对其提出的副本放置策略进行仿真实验,因而本发明具有很好的易用性,支持本领域常用的模拟平台实现语言和新型混合网络副本放置策略的模拟实验;通过从配置文件中读取网络拓扑,使得本发明具有良好的可扩展性,可以根据需要自行定制CDN-P2P混合网络的规模;通过CDN-P2P混合网络拓扑结构的生成等信息可以通过配置文件设定,使得本发明中技术方案便于配置性。
附图说明
图1是现有技术中CDN-P2P混合网络结构抽象后的结构示意图;
图2是本发明CDN-P2P混合网络的模拟方法的流程图;
图3是本发明CDN-P2P混合网络的模拟系统的结构图;
图4是本发明CDN-P2P混合网络的模拟系统的实施例的结构图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
如图2所示为本发明方法流程,包括下列步骤。
步骤S100,读取配置文件,建立虚拟CDN-P2P混合网络。
步骤S200,初始化离散事件列表,在离散事件列表中插入对应于下载节点初次加入行为节点加入事件、传输速率计算事件和统计信息事件。
步骤S300,从离散事件列表依次弹出事件,根据弹出的事件的类型在所述虚拟CDN-P2P混合网络执行相应操作。
步骤S400,将所述离散事件列表中所有事件执行完毕,统计整个模拟过程数据信息,结束模拟。
一具体实施方式中,所述步骤S100的具体实现如下所述。
步骤S101,从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,并为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体。所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点。
现有技术的CDN-P2P混合网络中实体包括自治系统、边缘服务器、全局索引服务器、子索引服务器、数据中转节点和下载节点。
实施例中,边缘服务器、全局索引服务器和子索引服务器设计为类,自治系统、数据中转节点和下载节点设计为结构体。
步骤S102,从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息。
在一实施例中,采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
从配置文件读取以下信息:节点加入网络的方式,一般设置为所有节点在模拟开始时一次性加入网络;节点离开网络的方式,一般设置为下载完成即离开;一个文件中包含的块的数目、不同类型的链路带宽值。
节点加入网络的方式是在生成节点加入事件时设置事件的发生主体和发生时间时会用到,一次性加入则为每个节点分别生成一个加入事件,时间设置为模拟开始的时间;节点离开网络的方式在传输速率计算事件中使用,如果判断节点已经下载完成,则生成节点离开事件,离开方式决定离开事件的发生时间;实施例中模拟方法中,文件块的大小是固定的256KB,文件块的数目决定了文件的大小对于判断文件下载是否完成有用,另外,节点之间相互交换数据也是以文件块为单位的。
步骤S103,从配置文件读取边缘服务器对应的存储文件信息,更新虚拟CDN-P2P混合网络中虚拟边缘服务器的本地存储文件列表,以及虚拟CDN-P2P混合网络中虚拟全局索引服务器的文件对应的边缘服务器位置信息列表。
一具体实施方式中,所述步骤S200的具体实现如下所述。
步骤S201,在内存池中为所述离散事件列表分配空间,所述离散事件列表个数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积。
步骤S202,为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数,所述节点加入事件发生时间为当前时间。
离散事件列表初始为空。事件发生时间为当前时间则表示生成所述事件,并将所述事件加入该离散事件列表。
步骤S203,生成日志记录事件和传输速率计算事件并插入所述离散事件列表。
生成传输速率计算事件和日志记录事件,设置传输速率计算事件的发生时间为当前时间,日志记录事件的发生时间为一段预设时间间隔后,如30秒后,并将两个事件插入离散事件列表。
一具体实施方式中,所述步骤S300的具体实现如下所述。
步骤S310,从离散事件列表弹出一个事件,设置当前时间为事件的发生时间。
通过完成仿真钟推进设置当前时间为事件的发生时间。当仿真钟推进到事件的发生时间时,就处理该事件。;
步骤S320,根据弹出的事件的类型在所述虚拟CDN-P2P混合网络执行相应操作。
如果所述事件的类型为节点加入事件,则中对应执行如下步骤;
步骤S3011,根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入。
种子节点是指某一个文件的种子节点,为只提供该文件上传而不需要从其他节点下载文件的节点。
实施例中,下载所需的数据结构包括:节点拥有的文件块数,节点的本地位图数组,文件块被下载节点所拥有数目的列表等,根据配置文件中种子节点的数目和位置信息指定种子节点,将种子节点的下载状态设为已完成。
步骤S3012,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
如果成功建立连接,则查询对方虚拟节点是否有本虚拟节点需要的文件块,如果有则向对方发送interested消息(兴趣消息),对方如果没有阻塞本虚拟节点,则可以进行数据传输,否则,进入阻塞队列等待。
步骤S3013,初始化下次索引请求事件和下次节点阻塞事件;将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
生成下次索引请求事件,设置发生时间,例如10分钟后;生成下次节点阻塞事件,设置发生时间,例如30秒后。
如果所述事件的类型为节点离开事件,则执行如下步骤。
步骤S3021,如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态。
节点在节点加入事件处理中设置为活跃状态。
步骤S3022,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器发送离开消息,所述虚拟子索引服务器将本地的所述虚拟节点信息删除。
步骤S3023,关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构。
步骤S3024,在所述虚拟CDN-P2P混合网络中,所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
进一步较佳的具体实施方式还包括:
步骤S3025,所述与所述虚拟节点建立连接的虚拟节点判断自身当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于某一阈值,例如20,则所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
如果所述事件的类型为传输速率计算事件,则执行如下步骤。
步骤S3031,初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆。
平均连接带宽值为虚拟链路带宽除以该虚拟链路的连接数量。
步骤S3032,从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值。
具体实施例中,更新方法为如果连接所在虚拟链路的可用带宽值大于所述的虚拟链路的平均带宽值,则将该虚拟链路的可用带宽值减去所述平均带宽值,否则,将所述虚拟链路的可用带宽值更新为零。
步骤S3033,将每条连接对应的传输字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果数据接收节点,也就是连接的结束虚拟节点,在接收这些字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将该事件插入离散事件列表。
步骤S3034,计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后,例如3分钟,所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
初始化后的离散事件列表中包括节点阻塞事件;
如果所述事件的类型为节点阻塞事件,则执行如下步骤。
步骤S3041,从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部。
一个节点对另一个节点感兴趣是指一个节点向另一个节点发出了interested消息。P2P协议为BitTorrent协议时,对于已经建立连接的两个节点A和B,如果节点A拥有节点B没有的数据块,则称节点B对A感兴趣。
步骤S3042,从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态。
最大上传数为配置数值,例如最大上传数为5。
步骤S3043,将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;
步骤S3044,生成下次的节点阻塞事件,设置发生时间,将生成的节点阻塞事件插入离散事件列表。
实施例中设置的发生时间为10秒钟之后。
初始化后的离散事件列表中包括索引请求事件。
所述索引请求事件中记录有所述索引请求事件发生的主体。
如果所述事件的类型为索引请求事件,则执行以下步骤。
步骤S3051,如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表。
步骤S3052,如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息。
步骤S3053,虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输。
步骤S3054,虚拟节点生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,将生成的索引请求事件插入所述离散事件列表。
一实施例中设置发生时间为10分钟后。
初始化后的离散事件列表中包括副本更新事件。
如果所述事件的类型为副本更新事件,则执行以下步骤;
步骤S3061,从配置文件读取边缘服务器对应的存储文件信息,所述虚拟CDN-P2P混合网络中虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表。
步骤S3062,所述虚拟CDN-P2P混合网络中虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入离散事件列表。
一实施例中设置发生时间为10分钟后。
初始化后的离散事件列表中包括统计信息事件。
如果所述事件的类型为统计信息事件,则执行以下步骤。
步骤S3071,遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,将所述新的统计事件插入所述离散事件列表。
步骤S400的具体实施过程,包括如下步骤。
步骤S401,所有事件执行完毕,统计整个模拟过程数据信息,包括总共产生的事件数目、节点空闲的总时间和所占的比例。
步骤S402,模拟结束,程序退出。
本发明一种CDN-P2P混合网络的模拟系统如图3所示,包括:内存管理模块100、拓扑管理模块200、事件管理模块300、和网络运行模拟模块400。
拓扑管理模块200,用于读取配置文件,建立虚拟CDN-P2P混合网络。
内存管理模块100,用于以虚拟CDN-P2P混合网络中虚拟实体和事件为对象,进行空间分配和释放。
因为在模拟过程中,会对虚拟实体和事件进行频繁的空间分配和释放,用专门的内存管理模块100进行管理。
事件管理模块300,用于初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;从所述离散事件列表中依次弹出事件。
网络运行模拟模块400,用于根据所述弹出的事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;并且将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟。
较佳的方式中,所述配置文件包括:CDN-P2P混合网络拓扑结构、链路信息、边缘服务器对应的存储文件信息;
所述拓扑管理模块进一步用于从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,通过所述内存管理模块为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体;从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,通过所述内存管理模块为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息;从配置文件读取边缘服务器对应的存储文件信息,更新虚拟边缘服务器的本地存储文件列表,以及虚拟全局索引服务器的文件对应的边缘服务器位置信息列表。
所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点。
进一步较佳的方式中,所述拓扑管理模块在初始化所有虚拟链路的链路信息时进一步用于采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
较佳的方式中,所述内存管理模块进一步用于在内存池中为所述离散事件列表分配空间,所述离散事件列表的行数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积;
所述事件管理模块进一步用于为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数;生成统计信息事件和传输速率计算事件,并将所述统计信息事件和所述传输速率计算事件插入所述离散事件列表。
较佳的方式中,所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点加入事件时,进一步用于根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中文件的种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入;使所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输;初始化下次索引请求事件和下次节点阻塞事件;通过所述事件管理模块将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
较佳的方式中,在处理节点加入事件时,将加入的节点设为活跃状态。
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点离开事件时,进一步用于如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态;使所述虚拟节点向虚拟子索引服务器发送离开消息,使所述虚拟子索引服务器将本地的所述虚拟节点信息删除;关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构;使所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
较佳的方式中,所述网络运行模拟模块还用于判断所述与所述虚拟节点建立连接的虚拟节点判断当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于一预设阈值,则使所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
较佳的方式中,所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为传输速率计算事件时,进一步用于初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆;从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值;将每条连接对应的传输的字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果连接的结束虚拟节点,在传输所述字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将所述节点离开事件插入离散事件列表;计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
较佳的方式中,所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点阻塞事件时,进一步用于从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部;从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态;将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;生成下次的节点阻塞事件,设置发生时间,通过所述事件管理模块将生成的节点阻塞事件插入离散事件列表。
较佳的方式中,初始化后的离散事件列表中包括索引请求事件;
所述索引请求事件中记录有所述索引请求事件发生的主体;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为索引请求事件时,进一步用于如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表;如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息;使虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输;生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,通过所述事件管理模块将生成的索引请求事件插入所述离散事件列表。
较佳的方式中,初始化后的离散事件列表中包括副本更新事件;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为副本更新事件时,进一步用于从配置文件读取边缘服务器对应的存储文件信息,使虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表;使虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入所述离散事件列表。
较佳的方式中,所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为统计信息事件时,进一步用于遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,通过所述事件管理模块将所述统计事件插入所述离散事件列表。
在一具体实施例中还包括位图管理模块和日志管理模块,如图4所示。
在网络运行模拟模块进行内容分发过程中,内存管理模块负责对象空间的管理,降低模拟开销;位图管理模块负责下载节点位图信息的管理;日志管理模块负责分发过程中网络和节点状态的记录等,以便进行数据分析和统计。
位图管理模块:本模块负责CDN-P2P混合网络中P2P传输时节点的资源位图信息操作。包括位图的初始化、对方节点资源信息判断、本地资源信息判断、位图添加、下载完成判断等。
日志管理模块:本模块负责模拟过程中的模式设置、日志记录等工作,为数据统计提供支持,包括调试模式的设置、打开日志文件、关闭日志文件、日志记录等。
本发明的模拟过程由许多的离散事件组成,离散事件的发生时间间隔会影响模拟的进程,包括:下载节点执行索引事件的间隔,比如10分钟;边缘服务器的副本更新事件的时间间隔,比如10分钟;如果模拟一段时间,比如3分钟,后节点的下载速率仍低于某一阈值,触发紧急索引事件;执行传输速率计算事件的时间间隔,比如100毫秒;执行阻塞事件以阻塞一个最慢的peer的时间间隔,比如10;执行节点阻塞事件的时间间隔,比如30秒;执行统计信息事件的时间间隔,比如30秒。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (21)
1.一种CDN-P2P混合网络的模拟方法,其特征在于,包括:
步骤1,读取配置文件,建立虚拟CDN-P2P混合网络;
步骤2,初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;
步骤3,从所述离散事件列表中依次弹出事件,根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;
步骤4,将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟;
所述配置文件包括:CDN-P2P混合网络拓扑结构、链路信息、边缘服务器对应的存储文件信息;
所述步骤1进一步为,
步骤21,从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体;所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点;
步骤22,从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息;
步骤23,从配置文件读取边缘服务器对应的存储文件信息,更新虚拟边缘服务器的本地存储文件列表,以及虚拟全局索引服务器的文件对应的边缘服务器位置信息列表;
所述步骤2进一步包括,
步骤41,在内存池中为所述离散事件列表分配空间,所述离散事件列表的行数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积;
步骤42,为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数;
步骤43,生成统计信息事件和传输速率计算事件,并将所述统计信息事件和所述传输速率计算事件插入所述离散事件列表。
2.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤22中初始化所有虚拟链路的链路信息进一步为,
步骤31,采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
3.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤51,如果所述事件的类型为节点加入事件,则执行如下步骤;
步骤52,根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中文件的种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入;
步骤53,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输;
步骤54,初始化下次索引请求事件和下次节点阻塞事件;将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
4.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
在处理节点加入事件时,将加入的节点设为活跃状态;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤61,如果所述事件的类型为节点离开事件,则执行如下步骤;
步骤62,如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态;
步骤63,在所述虚拟CDN-P2P混合网络中,所述虚拟节点向虚拟子索引服务器发送离开消息,所述虚拟子索引服务器将本地的所述虚拟节点信息删除;
步骤64,关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构;
步骤65,在所述虚拟CDN-P2P混合网络中,所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
5.如权利要求4所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤65后还包括,
步骤71,所述与所述虚拟节点建立连接的虚拟节点判断自身当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于一预设阈值,则所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
6.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤81,如果所述事件的类型为传输速率计算事件,则执行如下步骤;
步骤82,初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆;
步骤83,从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值;
步骤84,将每条连接对应的传输的字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果连接的结束虚拟节点,在传输所述字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将所述节点离开事件插入离散事件列表;
步骤85,计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
7.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤91,如果所述事件的类型为节点阻塞事件,则执行如下步骤:
步骤92,从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部;
步骤93,从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态;
步骤94,将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;
步骤95,生成下次的节点阻塞事件,设置发生时间,将生成的节点阻塞事件插入离散事件列表。
8.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
初始化后的离散事件列表中包括索引请求事件;
所述索引请求事件中记录有所述索引请求事件发生的主体;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤101,如果所述事件的类型为索引请求事件,则执行以下步骤;
步骤102,如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表;
步骤103,如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息;
步骤104,虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输;
步骤105,虚拟节点生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,将生成的索引请求事件插入所述离散事件列表。
9.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
初始化后的离散事件列表中包括副本更新事件;
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤111,如果所述事件的类型为副本更新事件,则执行以下步骤;
步骤112,从配置文件读取边缘服务器对应的存储文件信息,所述虚拟CDN-P2P混合网络中虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表;
步骤113,所述虚拟CDN-P2P混合网络中虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入所述离散事件列表。
10.如权利要求1所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤3中根据所述事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作进一步包括,
步骤121,如果所述事件的类型为统计信息事件,则执行以下步骤;
步骤122,遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,将所述统计事件插入所述离散事件列表。
11.如权利要求6所述的CDN-P2P混合网络的模拟方法,其特征在于,
所述步骤83中更新虚拟链路的可用带宽值进一步为,
步骤131,如果连接所在虚拟链路的可用带宽值大于所述的虚拟链路的平均带宽值,则将所述虚拟链路的可用带宽值减去所述平均带宽值,否则,将所述虚拟链路的可用带宽值更新为零。
12.一种CDN-P2P混合网络的模拟系统,其特征在于,包括:
拓扑管理模块,用于读取配置文件,建立虚拟CDN-P2P混合网络;
内存管理模块,用于以虚拟CDN-P2P混合网络中虚拟实体和事件为对象,进行空间分配和释放;
事件管理模块,用于初始化离散事件列表,并在所述离散事件列表中插入对应于下载节点初次加入行为的节点加入事件,插入传输速率计算事件和统计信息事件;从所述离散事件列表中依次弹出事件;
网络运行模拟模块,用于根据所述弹出的事件的类型在所述虚拟CDN-P2P混合网络中执行对应操作;并且将所述离散事件列表中所有事件执行完成后,统计整个模拟过程数据信息,结束模拟;
所述配置文件包括:CDN-P2P混合网络拓扑结构、链路信息、边缘服务器对应的存储文件信息;
所述拓扑管理模块进一步用于从配置文件中读取CDN-P2P混合网络的拓扑结构,确定CDN-P2P混合网络中实体的数目和类型,通过所述内存管理模块为所述虚拟CDN-P2P混合网络中对应于所述实体的类或者结构体分配空间,并初始化所述对应于所述实体的类或者结构体,以在虚拟CDN-P2P混合网络中生成对应虚拟实体;从配置文件中读取链路信息和CDN-P2P混合网络的拓扑结构,通过所述内存管理模块为所有所述虚拟实体之间的虚拟链路分配结构体空间,初始化所有虚拟链路的链路信息;从配置文件读取边缘服务器对应的存储文件信息,更新虚拟边缘服务器的本地存储文件列表,以及虚拟全局索引服务器的文件对应的边缘服务器位置信息列表;
所述虚拟实体包括对应于边缘服务器的虚拟边缘服务器、对应于全局索引服务器的虚拟全局索引服务器、和对应于下载节点的虚拟下载节点;
所述内存管理模块进一步用于在内存池中为所述离散事件列表分配空间,所述离散事件列表的行数为下载节点数目和CDN-P2P混合网络中单个下载节点最大事件数的乘积;
所述事件管理模块进一步用于为所有下载节点生成对应于初次加入行为的节点加入事件并插入所述离散事件列表,所述节点加入事件个数为下载节点总数;生成统计信息事件和传输速率计算事件,并将所述统计信息事件和所述传输速率计算事件插入所述离散事件列表。
13.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述拓扑管理模块在初始化所有虚拟链路的链路信息时进一步用于采用从自治系统到下载节点逐层设置的方式初始化所有虚拟链路的链路信息。
14.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点加入事件时,进一步用于根据加入的节点对象地址计算所述节点在所述虚拟CDN-P2P混合网络中id,并依据所述配置文件中文件的种子节点的数目和位置信息设置种子节点,初始化所述节点在所述虚拟CDN-P2P混合网络中下载所需的数据结构,以在虚拟CDN-P2P混合网络中完成对应虚拟节点加入;使所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输;初始化下次索引请求事件和下次节点阻塞事件;通过所述事件管理模块将所述下次索引请求事件和所述下次节点阻塞事件加入所述离散事件列表。
15.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
在处理节点加入事件时,将加入的节点设为活跃状态;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点离开事件时,进一步用于如果离开的所述节点在所述虚拟CDN-P2P混合网络对应的虚拟节点被置为活跃状态,则将所述虚拟节点置为不活跃状态;使所述虚拟节点向虚拟子索引服务器发送离开消息,使所述虚拟子索引服务器将本地的所述虚拟节点信息删除;关闭所有所述虚拟节点执行上传或者下载而建立的连接,清空所述虚拟节点的本地所有相关的数据结构;使所有与所述虚拟节点建立连接的虚拟节点清除与所述虚拟节点相关的状态和数据结构信息。
16.如权利要求15所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述网络运行模拟模块还用于判断所述与所述虚拟节点建立连接的虚拟节点判断当前对等的虚拟节点的数目,如果当前对等的虚拟节点的数目小于一预设阈值,则使所述虚拟节点向所述虚拟子索引服务器请求新的对等列表,并根据所述对等列表建立连接,如果成功建立连接,则尝试启动数据传输。
17.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为传输速率计算事件时,进一步用于初始化存储所述虚拟链路的信息的链路信息数组,将所述链路信息数组按照虚拟链路的平均连接带宽值形成一个最小堆;从所述最小堆中依次弹出虚拟链路,针对所述虚拟链路上的每条连接,遍历连接所在的所有虚拟链路,更新虚拟链路的可用带宽值;将每条连接对应的传输的字节数加到连接的起始虚拟节点和结束虚拟节点的数据传输数组中以记录已经传输的字节数,如果连接的结束虚拟节点,在传输所述字节数之后下载完成,则根据配置文件中节点的离开方式生成节点离开事件,并将所述节点离开事件插入离散事件列表;计算当前处于下载状态的虚拟节点的下载速度,如果经过一段预设缓冲时间后所述虚拟节点的下载速率仍低于第二预设阈值,则所述虚拟节点向虚拟子索引服务器请求对等列表,并尝试连接所述对等列表中的每个对象,如果成功建立连接,则尝试启动数据传输。
18.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为节点阻塞事件时,进一步用于从节点在所述虚拟CDN-P2P混合网络对应的虚拟节点的阻塞列表中找出第一个对所述虚拟节点感兴趣且被阻塞的对等虚拟节点,将所述对等的虚拟节点移动到所述阻塞列表的头部;从所述虚拟节点的现有连接的对等虚拟节点中依据下载速度越快越优先的原则选择预设数目的对等虚拟节点,将所述对等虚拟节点设为非阻塞状态,该数目最多为所述虚拟节点的最大上传数减1,如果当前连接数小于最大上传数,则将所有连接设为非阻塞状态;将所述阻塞列表中的第一个状态为阻塞的对等虚拟节点的状态设为非阻塞状态;生成下次的节点阻塞事件,设置发生时间,通过所述事件管理模块将生成的节点阻塞事件插入离散事件列表。
19.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
初始化后的离散事件列表中包括索引请求事件;
所述索引请求事件中记录有所述索引请求事件发生的主体;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为索引请求事件时,进一步用于如果索引请求的类型为普通类型,则由所述索引请求事件发生的主体向虚拟子索引服务器发送索引请求获得对等列表;如果索引请求的类型为紧急索引请求,虚拟子索引服务器回复列表给发送索引请求的虚拟节点,回复的列表包括向虚拟节点提供服务的虚拟边缘服务器信息和对等虚拟节点信息;使虚拟节点根据接收的列表中的对等虚拟节点的信息或者边缘服务器信息,依次尝试同等虚拟节点或边缘服务器建立连接,如果连接建立成功,尝试启动数据传输;生成下次的索引请求事件,事件类型设为普通类型,设置发生时间,通过所述事件管理模块将生成的索引请求事件插入所述离散事件列表。
20.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
初始化后的离散事件列表中包括副本更新事件;
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为副本更新事件时,进一步用于从配置文件读取边缘服务器对应的存储文件信息,使虚拟边缘服务器根据所述存储文件信息更新本地存储文件列表;使虚拟全局索引服务器根据所述存储文件信息更新文件对应的边缘服务器位置信息列表,并生成下次的副本更新事件,设置发生时间,将所述生成的副本更新事件插入所述离散事件列表。
21.如权利要求12所述的CDN-P2P混合网络的模拟系统,其特征在于,
所述网络运行模拟模块用于在所述事件管理模块弹出的事件的类型为统计信息事件时,进一步用于遍历所述虚拟CDN-P2P混合网络的虚拟节点列表,统计其中已经完成的以及处于空闲状态的虚拟节点数目,生成一个新的统计信息事件,设置发生时间,通过所述事件管理模块将所述统计事件插入所述离散事件列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010126882 CN101841531B (zh) | 2010-03-16 | 2010-03-16 | Cdn-p2p混合网络的模拟方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010126882 CN101841531B (zh) | 2010-03-16 | 2010-03-16 | Cdn-p2p混合网络的模拟方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101841531A CN101841531A (zh) | 2010-09-22 |
CN101841531B true CN101841531B (zh) | 2013-04-03 |
Family
ID=42744656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010126882 Active CN101841531B (zh) | 2010-03-16 | 2010-03-16 | Cdn-p2p混合网络的模拟方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101841531B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457532B (zh) * | 2010-10-21 | 2016-03-30 | 中兴通讯股份有限公司 | 一种实现多cdn同主题视频共享的方法、装置和系统 |
CN102801550A (zh) * | 2011-05-27 | 2012-11-28 | 北京邮电大学 | 一种内容分发网络管理方法及装置 |
CN103377082B (zh) * | 2012-04-27 | 2016-09-07 | 国际商业机器公司 | 对离散事件仿真进行调度的方法和装置 |
CN103905341B (zh) * | 2012-12-28 | 2017-03-29 | 中国移动通信集团公司 | 资源调度方法、装置及系统 |
CN103200273B (zh) * | 2013-04-19 | 2016-01-20 | 北京科技大学 | 基于物理位置的内容副本一致性维护方法 |
CN104320672A (zh) * | 2014-09-24 | 2015-01-28 | 中国人民解放军理工大学 | Cdn-p2p混合架构下的直播流媒体系统资源调度方法 |
CN107465706B (zh) * | 2016-06-06 | 2021-06-18 | 中国船舶工业系统工程研究院 | 一种基于无线通信网络的分布式数据对象存储装置 |
CN109982152B (zh) * | 2019-01-15 | 2021-02-23 | 中国联合网络通信集团有限公司 | P2p cdn业务处理方法、智能网关以及cdn平台 |
CN112311759B (zh) * | 2020-09-14 | 2022-06-14 | 浙江宇视科技有限公司 | 一种混合网络下的设备连接切换方法和系统 |
CN112799680A (zh) * | 2021-01-31 | 2021-05-14 | 云知声智能科技股份有限公司 | 一种加速ai模型部署的方法和设备 |
CN113051081B (zh) * | 2021-06-01 | 2021-10-29 | 广东省新一代通信与网络创新研究院 | 基于内存池的事件状态管理方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1870545A (zh) * | 2006-06-15 | 2006-11-29 | 哈尔滨工程大学 | 自动进行方案对比的可信网络仿真系统 |
CN101426221A (zh) * | 2008-12-12 | 2009-05-06 | 北京航空航天大学 | 面向可生存性的移动Ad Hoc网络仿真系统 |
CN101610275A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 支持大规模的分布式p2p仿真系统及实现方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090099827A1 (en) * | 2007-10-16 | 2009-04-16 | Sony Corporation | System and method for effectively performing a network simulation procedure |
-
2010
- 2010-03-16 CN CN 201010126882 patent/CN101841531B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1870545A (zh) * | 2006-06-15 | 2006-11-29 | 哈尔滨工程大学 | 自动进行方案对比的可信网络仿真系统 |
CN101610275A (zh) * | 2008-06-20 | 2009-12-23 | 华为技术有限公司 | 支持大规模的分布式p2p仿真系统及实现方法和装置 |
CN101426221A (zh) * | 2008-12-12 | 2009-05-06 | 北京航空航天大学 | 面向可生存性的移动Ad Hoc网络仿真系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101841531A (zh) | 2010-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101841531B (zh) | Cdn-p2p混合网络的模拟方法和系统 | |
Fujimoto | Parallel and distributed simulation | |
CN101227460B (zh) | 分布式文件上传、下载方法及其装置和系统 | |
CN103890815B (zh) | 用于主管可被远程自动创建、主管和终止的瞬变虚拟世界的方法和系统 | |
CN105955761A (zh) | 基于docker的灰度发布装置及方法 | |
CN104539730B (zh) | 一种hdfs中面向视频的负载均衡方法 | |
CN105721608A (zh) | 用于处理器可执行内容的传送的方法和系统 | |
CN104053179B (zh) | 一种c‑ran系统级仿真平台 | |
CN101651709A (zh) | 一种p2p下载文件完整性校验方法 | |
CN104915242A (zh) | 多学科协同仿真架构方法 | |
CN102254098A (zh) | 一种开发部署运营游戏的分布式系统及方法 | |
CN202094929U (zh) | 游戏服务器集群架构 | |
CN112383439B (zh) | 一种智能燃气表空中升级系统及升级方法 | |
CN102402441A (zh) | 一种对多台计算机进行配置的系统和方法 | |
CN101515945B (zh) | 一种p2p资源文件的在线应用方法和系统 | |
Bajaj et al. | Simulation of large-scale heterogeneous communication systems | |
CN109582904A (zh) | 已发布内容的修改方法、装置、服务器、终端及存储介质 | |
CN103593543A (zh) | 一种更新p2p网络用户主观行为分析模型参数的方法及系统 | |
CN101800768B (zh) | 一种基于存储联盟子集划分的网格数据副本生成方法 | |
CN113032149B (zh) | 基于演化博弈的边缘计算服务放置和请求分配方法及系统 | |
CN103905923A (zh) | 一种内容缓存方法及装置 | |
CN107276890B (zh) | 一种基于微信的课程资料管理方法、云端服务器及系统 | |
CN109194993A (zh) | 媒体文件分发方法及文件分发平台 | |
CN112199154A (zh) | 一种基于分布式协同采样中心式优化的强化学习训练系统及方法 | |
Barros et al. | Forest fire modelling and simulation in the DELTA environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |