一种面向分布式网络仿真平台的ip地址分配系统及方法

文档序号:7824269阅读:206来源:国知局
一种面向分布式网络仿真平台的ip地址分配系统及方法
【专利摘要】本发明涉及一种面向分布式网络仿真平台的IP地址分配系统及方法,包括:IP地址范围(IPRange)与IP块(IPBlock)划分;存储IPBlock使用情况的类循环队列(Queue)、空闲链表(Freelist);进行IP地址分配和IP地址回收。本发明能够处理实例中的自定义IP地址及自动化的分配IP地址,提升网络仿真平台的灵活性;将给定的范围进行合理的划分,最大限度的利用IP地址资源;能够隔离并行执行实例的IP地址,避免物理网卡无法隔离情况下,不同实例IP地址冲突导致的网络错误;利用类循环队列顺序存储IP地址资源,Freelist用于存储离散的可用IP地址资源,顺序分配与离散分配相结合等。
【专利说明】一种面向分布式网络仿真平台的IP地址分配系统及方法

【技术领域】
[0001] 本发明涉及虚拟网络构建技术,具体涉及一种面向分布式网络仿真平台的IP地 址分配系统及方法。

【背景技术】
[0002] 网络仿真平台面向网络空间活动的研宄和测试需求,提供真实可信的模拟仿真基 础平台,是目前网络空间活动研宄的主要手段。
[0003] 从物理平台架构上来看,网络仿真平台要满足大规模、多实例、并行化的网络模拟 仿真需求,必须采用分布式架构,由多服务器集群共同承担网络模拟仿真任务。从技术上 看,构建虚拟网络的主流的技术方向是融合仿真以及模拟等技术的优势,实现了真实性与 构建成本的有效平衡,先进的网络仿真平台利用多粒度抽象的无感融合技术,一个虚拟网 络实例不仅能够实现模拟流量、仿真流量的相互通信,更能快速方便的接入实物设备,实现 不同虚拟粒度流量的无感融合。
[0004] IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每 一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异,是实现网络通信的关键因素。面 向分布式网络仿真平台的IP地址分配方法是虚拟网络构建过程中是不可或缺的关键技 术,必须满足以下需求:
[0005] (1)支持自动化分配与自定义分配;
[0006] 网络仿真平台的核心优势在于其灵活与高效性,因此网络仿真平台必须能够快速 自动化的部署和构建虚拟网络,这就包括自动化的为用户分配虚拟网络的IP地址。而针对 某些特定网络或主机,用户希望根据需求自行定义IP地址,那么平台应当能够识别用户自 定义IP地址,并合理的分配剩余节点的IP地址。
[0007] (2)无法物理隔离平台服务器物理网卡情况下,要求不同实例的IP地址隔离;
[0008] -个实例是指仿真验证任务的一次执行,至少包括,拓扑结构、网络中运行的应 用、仿真验证实例监控、实时展示和运行结果的回放等要素。无论是哪种虚拟化技术,要实 现虚拟网络流量的仿真化,即能够使得各种虚拟粒度的流量能够无感融合,尤其是在分布 式架构下需要跨物理服务器的流量传输,虚拟流量不可避免的要通过物理网卡,而实际上 分布式环境往往受硬件环境、负载均衡、资源分配等条件制约,将服务器的物理网卡强行进 行物理隔离既是不方便的也是不灵活的,这种情况下要支持多个虚拟网络实例的并行化运 行且不同实例的流量间互不影响,就依赖于不同实例所分配的IP地址完全隔离,以保证每 个虚拟网络实例内部的正常运作。
[0009] (3)支持历史环境的完全重用;
[0010] 平台对已经构建使用过实例会进行保存,以方便用户对历史环境的再次使用,这 就要求已经分配过IP地址的历史环境,再次启动运行时,应尽量不再重新分配。
[0011] ⑷层次化、结构化的合理分配;
[0012] 从需求的角度,以上三点是面向分布式网络仿真平台的多实例IP地址分配技术 所必须满足的,从IP地址本身的特点以及网络的结构设计的基本原则的角度上看,在IP地 址分配上,还应在尽量节约IP地址资源的前提下,尽量能够做到层次化、结构化的IP地址 分配,使得分配结果易于辨认,符合逻辑。
[0013] 当前,针对IP地址分配,主要是如何根据网络结构要求,合理的在给定的IP地址 范围内,选取网络占位数与主机占位数,并最终确定子网掩码。针对某一设备的IP地址可 采用手动配置以及自动化配置两种方法。著名的IP地址分配技术当属DHCP技术,DHCP服 务端将在设定地址范围内的某一IP地址和子网掩码分配给支持DHCP获取的客户主机,这 种自动化的IP地址分配技术降低了设备的配置和部署时间以及发生配置错误的可能性, 可集中化的管理设备IP地址。
[0014] 以上IP地址分配方法,面向的是真实网络的IP地址分配一般需求,而面向分布式 网络仿真平台的多实例IP地址分配,以上方法无法解决诸多问题包括:如何能实现虚拟网 络IP地址的自动化分配以简化流程,是否能够处理自定义IP地址分配?多个虚拟网络实 例并行执行IP地址如何隔离?如何保证不改变原有IP地址的情况下重用历史环境,如何 支持大规模虚拟网络(节点数超过10000000)的IP地址分配。


【发明内容】

[0015] 本发明技术解决问题:针对以上IP地址分配方法的不足,提供一种面向分布式网 络仿真平台的IP地址分配系统及方法,能够处理实例中的自定义IP地址及自动化的分配 IP地址,提升网络仿真平台的灵活性;将给定的范围进行合理的划分,最大限度的利用IP 地址资源;能够隔离并行执行实例的IP地址,避免物理网卡无法隔离情况下,不同实例IP 地址冲突导致的网络错误;利用类循环队列顺序存储IP地址资源,Freelist用于存储离散 的可用IP地址资源,顺序分配与离散分配相结合,提升查询和分配效率的同时充分利用分 配过程中产生的碎片;提供IP地址分配策略,可与平台管理相结合,及时回收IP地址资源。
[0016] 本发明技术解决方案:如图1所示,一种面向分布式网络仿真平台的IP地址分配 系统,包括IP地址分配系统初始化模块、IP地址存储模块、IP地址分配请求监听接口,历史 实例IP地址分配模块、新建实例IP地址分配模块;
[0017] IP地址分配系统初始化模块,接收用户定义的IPRange或根据系统默认的 IPRange,划分IPBlock,如有必要则划分出一个没有子网掩码限制的IPFreeBlock,划分完 成后将IPBlock及IPFreeBlock(若有),按照IP地址存储模块指定的数据结构存储在IP 地址存储模块中,供其他模块使用;
[0018] IP地址存储模块,用于存储IP地址信息,供历史实例IP地址分配模块、新建实例 IP地址分配模块以及IP地址回收模块使用;对于每个IPBlock,两种数据结构用于存储该 IPBlock所包含的IP地址使用情况,Queue是一个顺序存储键值(Key,Value)类型数据的 类循环队列,用于顺序存储所有该IPBlock上所有IP地址的使用情况,Freelist则用于保 存非连续的可用IP地址,每一片可用的IP地址范围组成一个链表;
[0019] IP地址分配请求监听接口模块,用于接收待分配IP地址的实例配置信息,并判断 实例性质为历史实例还是新建实例,如为历史实例,则调用历史实例IP地址分配模块,如 为新建实例则调用新建实例IP地址分配模块;
[0020] 历史实例IP地址分配模块,用于历史实例的IP地址分配,如恢复历史实例原来所 使用的IP地址分配结果失败,则给出实例IP地址分配结果,若用户接受重新分配,则调用 新建实例IP地址分配模块;
[0021] 新建实例IP地址分配模块,用于向新建实例分配IP地址。首先处理自定义IP 地址后,继续为剩余未定义IP地址的网络接口进行自动化分配,分配策略是先在对应的 Queue中进行顺序分配,当Queue中可用IP地址不够时,继续在对应的Freelist查找离散 的可用IP地址,若分配过程中IP地址资源耗尽,则调用IP地址回收模块,回收IP地址资 源后继续分配,若回收后IP地址资源仍不可用,则返回实例IP地址分配失败结果,否则分 配成功,结束实例IP地址分配。
[0022] 在需要IP地址回时,面向分布式网络仿真平台的IP地址分配系统还包括IP地址 回收模块,该模块用于回收IP地址资源,一方面当实例IP地址分配过程中IP地址资源耗 尽,则调用该模块回收IP地址资源,另一方面,若该系统面向的网络仿真平台进行实例的 删除,则也将调用该模块回收被删除的实例所占用的IP地址资源;所述IP地址回收方法 是:
[0023] 步骤1 :确定待删除实例后,转至步骤4. 2进行IP地址的回收;
[0024] 步骤2 :根据待删除CaselDSet,在每个IPBlock的Queue中查找这个CaselDSet 所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的 IP地址段,修改front或rear的位置;如果是Queue中的离散片段,贝1」在Freelist中查找 合适的位置插入或新建节点,并正确写入链表节点的begin和end。
[0025] 所述IP地址分配系统初始化模块具体实现为:
[0026] 步骤1 :先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始可用 的地址(IPBegin)、最后一个可用的地址(IPEnd),子网掩码(Netmask)以及该Block每个 网段可分配多少个IP地址(num);对于IPFreeBlock则只需初始化其IPBegin、IPEnd;对于 每个IPBlock进行步骤2:来初始化用于记录该IPBlock使用情况的Queue和Freelist;
[0027]步骤 2 :初始化Queue、Freelist
[0028] 具体实现为:Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为 key值按照从小到大的顺序进行插入,而对应的value值为CaselDSet,初始化为空;对于 IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储 网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为 空;初始化及Queue、Freelist示意图如图2所示。
[0029] 所述历史实例IP地址分配模块实现为:对于实例来源为历史实例的情况,根据 CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaselDSet,遍历 集合中每个CaselD的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需 再次分配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂 时不可用,向用户返回提示,如用户选择可重新分配,则调用新建实例分配模块重新为该实 例分配IP地址。
[0030] 所述新建实例IP地址分配模块实现为:
[0031] 步骤1 :检查实例配置中是否有自定义IP地址若有,转步骤2,否则转步骤3 ;
[0032] 步骤2 :根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每 个网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaselD状态,若存在 CaselD为非Closed状态,则返回IP地址分配错误提示;若CaselD值不存在或所有CaselD均为Closed状态,则将该CaselD插入到该网络地址对应的CaselDSet;
[0033] 步骤3:对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分 配。对于每个子网,执行步骤4直至分配完成;
[0034] 步骤4:判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的 Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主 机顺序分配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经 用完,需执行步骤5;过程如图4所示。
[0035] 步骤5:从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用 IPFreeBlock中的IP地址;若IPFreeBlock仍然不能满足IP地址需求,则调用IP地址回 收模块进行IP地址的回收,回收后继续步骤4;过程如图5所示。
[0036] 步骤6:对于实例来源为历史实例的情况,根据CaselD,获得该实例所使用的所有 IP地址,对应的获得使用这些IP地址的CaselDSet,遍历集合中每个CaselD的状态,若所 有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执 行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如 用户选择可重新分配,转至步骤4,重新为该实例分配IP地址。
[0037] 一种面向分布式网络仿真平台的IP地址分配方法,实现步骤如图3所示,具体如 下:
[0038] 步骤1,IP地址范围即IPRange与IP块即IPBlock划分;
[0039] 步骤2,存储IPBlock使用情况的类循环队列Queue、空闲链表Freelist;所述 Queue和Freelist用于记录每个IPBlock内IP地址的使用情况,Queue是一个顺序存储 键值(Key,Value)类型数据的类循环队列;Freelist则用于保存非连续的可用IP地址, 每一片可用的IP地址范围组成一个链表;如有必要,在IPRange范围内划分出一个自由块 IPFreeBlock,不限定其子网掩码;
[0040]步骤3,进行IP地址分配
[0041] IP地址分配流程如下:
[0042] 3.1初始化IPRange、IPBlock
[0043] 具体实现为:首先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其 初始可用的地址IPBegin、最后一个可用的地址IPEnd,子网掩码Netmask以及该Block每 个网段可分配多少个IP地址num;对于IPFreeBlock则只需初始化其IPBegin、IPEnd;对于 每个IPBlock进行步骤3. 2来初始化用于记录该IPBlock使用情况的Queue和Freelist;
[0044] 3. 2 初始化Queue、Freelist
[0045] 具体实现为:Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为 key值按照从小到大的顺序进行插入,而对应的value值为CaselDSet,初始化为空;对于 IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储 网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为 空;
[0046] 3. 3接收实例网络拓扑的配置文件,并判断实例来源,若为新建实例,则转步骤 3. 4,否则转步骤3.9;
[0047] 3. 4检查实例配置中是否有自定义IP地址若有,转步骤3. 5,否则转步骤3. 6;
[0048] 3. 5根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个 网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaselD状态,若存在 CaselD为非Closed状态,则返回IP地址分配错误提示;若CaselD值不存在或所有CaselD 均为Closed状态,则将该CaselD插入到该网络地址对应的CaselDSet ;
[0049] 3. 6对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配。对 于每个子网,执行3. 7直至分配完成;
[0050] 3. 7判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的 Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主 机顺序分配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经 用完,需执行步骤3. 8 ;
[0051] 3. 8.从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用 IPFreeBlock中的IP地址;若IPFreeBlock仍然不能满足IP地址需求,则启动IP地址回 收,进入步骤4. 1,回收后继续步骤3. 6 ;
[0052] 3. 9对于实例来源为历史实例的情况,根据CaselD,获得该实例所使用的所有IP 地址,对应的获得使用这些IP地址的CaselDSet,遍历集合中每个CaselD的状态,若所有实 例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的 实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户 选择可重新分配,转至步骤3. 6,重新为该实例分配IP地址。
[0053] 在需要IP地址回收时,在所述步骤3之后再执行步骤4进行IP地址的回收,实现 步骤如下:
[0054] 4. 1确定待删除实例后,转至步骤4. 2进行IP地址的回收;
[0055] 4. 2根据待删除CaselDSet,在每个IPBlock的Queue中查找这个CaselDSet所使 用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地 址段,修改front或rear的位置;如果是Queue中的离散片段,贝1」在Freelist中查找合适 的位置插入或新建节点,并正确写入链表节点的begin和end。
[0056] 所述步骤4中的IP地址回收的条件为:(1)平台管理需要删除历史实例,当实例 数量超过设定的值时,平台将自动删除最久未使用的实例或者根据管理需要,删除指定的 实例,此时需要将分配给删除实例的IP地址资源进行回收;或(2)现有IP地址分配殆尽, 需要被动删除最久未使用的实例以回收IP地址,并分配给最新的实例。
[0057] 所述步骤1中,IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地 址段的集合,当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。
[0058] 所述步骤1中为尽可能节省IP地址资源,应根据子网内部待分配网络接口个数不 同合理分配网络位与主机位,对设定的IP地址范围IPRange进行分块IPBLock,每一块具有 一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可以为 多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进行分 配。
[0059] 本发明与现有技术相比的优点在于:与已公开的方法相比,本发明面向分布式网 络仿真平台的IP地址分配需求,具有如下优点:(1)可设定IP地址范围,对IP地址资源依 据一定的结构进行划分,尽量节省IP地址资源的同时,遵循IP地址分配的一般规则。(2) 支持自动化IP地址分配与自定义IP地址分配,即能够不需要用户干预,平台自动化根据虚 拟网络结构为每个网络接口分配IP地址,用户也可根据需要自行定义某些或全部虚拟网 络接口的IP地址,提升网络仿真平台的易用性和灵活性;(3)利用键值数据类型的循环队 列及空闲IP地址链表存储IP地址使用情况,顺序存储及链表存储相结合,顺序分配提高分 配及查找效率、离散分配利用零散IP地址,同时提供IP地址回收策略,提升分配效率的同 时,提高IP地址资源使用率,实现多个并行执行的虚拟网络实例的IP地址隔离,提升网络 仿真平台支撑能力;(4)支持历史环境的重用,满足用户对于已经执行过的实例的再次使 用需求,提升平台灵活性。

【专利附图】

【附图说明】
[0060] 图1为本发明系统的组成框图;
[0061] 图2为本发明的主要数据结构说明;
[0062] 图3为本发明方法IP地址分配主要流程图;
[0063] 图4是对新建实例IP地址分配模块中步骤4,即在Queue中选取IP地址进行分配 的说明;
[0064] 图5是对新建实例IP地址分配模块中步骤5,即在Freelist中选择可用IP地址 进行分配的说明。

【具体实施方式】
[0065] 在阐述本发明之前有,先对相关术语进行说明。
[0066] IP地址(IPAddress):-个IP地址是一个占32位的二进制数,由代表网络号的 位和代表主机号的位组成,可用点分十进制表示或表示成一个32位无符号整数。通过子网 掩码(Netmask),可以确定一个IP地址的网络位数和主机位数。因此一般一个网络接口的 IP地址包含实际IP地址和子网掩码两个部分。
[0067] 子网(Subnet):指具有相同子网掩码和网络号的所有网络接口组成的网络。
[0068] 实例(Case):-个实例是指仿真验证任务的一次执行,至少包括,拓扑结构、网络 中运行的应用、仿真验证实例监控、实时展示和运行结果的回放等要素。本发明关心的是实 例的来源(source),即新建实例(new)还是历史实例(history);实例的状态:即正在使用 (Running)还是已结束(Closed)。实际上实例的状态可能是正在执行、暂停、休眠等,本发 明认为除结束状态,其他状态的实例都是正在执行着的实例。
[0069] 本发明公开的面向分布式网络仿真平台IP地址分配方法主要由以下几个部分组 成:
[0070] 图2是本发明的主要结构IP地址范围IPRange、IP块(IPBlock)、IP循环队列 (Queue)、以及IP空闲列表(Freelist)及其之间关系的说明。
[0071] 1. IP地址范围(IPRange)与IP块(IPBlock)划分。
[0072] IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地址段的集合, 当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。原则上,网络仿 真平台对虚拟网络IP地址的分配以自动化为主,因此一般选择一个连续的IP地址段作为 IPRange〇
[0073] 为尽可能节省IP地址资源,应根据子网内部待分配网络接口个数不同合理分配 网络位与主机位。本方法对设定的IP地址范围(IPRange)进行分块(IPBLock),每一块具 有一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可以 为多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进行 分配。
[0074] 如有必要,可在IPRange范围内划分出一个自由块IPFreeBlock,不限定其子网掩 码,以应对一些特殊分配情况,如保留IP地址、实物IP地址等。
[0075] 2.存储IPBlock使用情况的类循环队列(Queue)、空闲链表(Freelist)。
[0076]Queue和Freelist用于记录每个IPBlock内IP地址的使用情况,Queue是一个 顺序存储键值(Key,Value)类型数据的类循环队列,说其是类循环队列指的是,他具有循 环性,但并不是严格的只能先进先出,以下简称循环队列。键是一个IPBlock中包含的每个 网络地址(特殊地,当不存在子网这一概念时,键退化成主机IP地址,对于IPFreeBlock来 说,键还应附加上对应的子网掩码),值是使用这个网络地址的CaselD集合,按照网络地址 由小到大的顺序组成。Freelist则用于保存非连续的可用IP地址,每一片可用的IP地址 范围组成一个链表。
[0077] 3.分配策略
[0078] 图3展示了IP地址分配主要流程。
[0079] 3. 1 初始化IPRange、IPBlock。
[0080] 首先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始可用的地 址(IPBegin)、最后一个可用的地址(IPEnd),子网掩码(Netmask)以及该Block每个网段 可分配多少个IP地址(num)。对于IPFreeBlock则只需初始化其IPBegin、IPEnd。对于每 个IPBlock进行步骤3. 2来初始化用于记录该IPBlock使用情况的Queue和Freelist。
[0081] 3. 2初始化Queue、Freelist。Queue的大小应为该IPBlock中网络地址的个数,并 将网络地址作为key值按照从小到大的顺序进行插入,而对应的value值为CaselDSet,初 始化为空。对于IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进 行初始化,键存储网络地址与子网掩码。front和rear为Queue的第一个位置。Freelist 为空。初始化后即可启动IP地址分配服务。
[0082] 3. 3接收实例网络拓扑的配置文件,并判断实例来源,若为新建实例,则转步骤 3. 4,否则转步骤3. 9。
[0083] 3. 4检查实例配置中是否有自定义IP地址若有,转步骤3. 5,否则转步骤3. 6。
[0084] 3. 5根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址。对于每个 网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaselD状态,若存在 CaselD为非Closed状态,则返回IP地址分配错误提示。若CaselD值不存在或所有CaselD 均为Closed状态,则将该CaselD插入到该网络地址对应的CaselDSet。
[0085] 3. 6对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配。对 于每个子网,执行3. 7直至分配完成。
[0086] 3. 7判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的 Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主 机顺序分配该网络内可使用的主机IP地址。若Queue已满,表明该IPBlock的IP地址已 经用完,需执行步骤3. 8。
[0087] 由于Queue利用顺序的循环队列形式存储键值类型数据,查找可用IP地址时,并 不需要从头查找,而是直接定位到rear所在位置。rear所在位置的IP地址若已被自定义 IP地址使用,则顺序移动rear即可,front和rear以及Queue的大小(size)可迅速判断 Queue是否已满。而IP地址回收产生的碎片段则存储在Freelist中。
[0088] 3.8.从Freelist中查找可用的IP地址进行分配。若仍不满足需求,则使用 IPFreeBlock中的IP地址(若划分了该块),使用IPFreeBlock中的IP地址要注意,随时 修改键和对应的子网掩码。若IPFreeBlock仍然不能满足IP地址需求,则启动IP地址回 收机制(4. 1),回收后继续步骤3. 6。
[0089] 3. 9对于实例来源为历史实例的情况,根据CaselD,获得该实例所使用的所有IP 地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实 例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址。若存在正在执行的 实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户 选择可重新分配,转至步骤3. 6,重新为该实例分配IP地址。
[0090] 4.回收策略
[0091] 尽管支持1000万个节点规模虚拟网络的网络仿真平台已经属于性能较优的系 统,但仍然需要考虑IP地址资源的有限性,同时,仿真验证实例管理的需求也需要合理的 IP地址回收策略。以下情况需要回收IP地址:
[0092] 1)平台管理需要删除历史实例。仿真平台一般对于保存的历史实例数量有一定的 限制,例如,平台仅保存最近使用过的1000个历史环境。那么当实例数量超过1000个时, 平台将自动删除最久未使用的实例或者根据管理需要,删除指定的实例。此时需要将分配 给删除实例的IP地址资源进行回收。
[0093] 2)现有IP地址分配殆尽,需要被动删除最久未使用的实例以回收IP地址,并分配 给最新的实例。
[0094] 4. 1由于情况2),选择被删除的实例。选择的原则是,根据最近最久未使用原则, 删除最近最久未使用的1个或多个实例集合,直至删除这个实例集合后所能回收的IP地址 对应满足需求为止。若不能满足需求,则报告错误,该IPRange无法满足该实例对IP地址 的分配需求。
[0095] 确定待删除实例后,转至步骤4. 2进行IP地址的回收。
[0096] 4. 2根据待删除CaselDSet,在每个IPBlock的Queue中查找这个CaselDSet所使 用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地 址段,修改front或rear的位置。如果是Queue中的离散片段,贝1」在Freelist中查找合适 的位置插入或新建节点,并正确写入链表节点的begin和end。
[0097] 本发明同时公开了一种面向分布式网络仿真平台的IP地址分配系统,以经过网 络仿真平台前端处理过的且具有子网信息的网络拓扑结构配置作为输入接口,输出是按照 接口定义为每一个子网分配网络号与子网掩码,并为每个网络接口分配IP地址与子网掩 码。如图1所示,本发明系统包括IP地址分配系统初始化模块、IP地址存储模块、IP地址 分配请求监听接口,历史实例IP地址分配模块、新建实例IP地址分配模块。
[0098] 以XML格式的网络拓扑配置文件,设定可分配IP地址范围是10.0.0.0? 10. 255. 255. 255,使用键值型(key-value)内存数据库(如redis)作为IP地址存储服务, 面向分布式网络仿真平台的IP地址分配具体执行步骤是:
[0099] 1. IP地址范围与IP块划分。
[0100] 10. 0. 0. 0?10. 191. 255. 255是预留给局域网的A类地址的一部分,是一般虚拟网 络常用的IP地址分配资源,假设选取该段地址作为IPRange。可将IPRange划分为一下几 个IPBlock:
[0101]

【权利要求】
1. 一种面向分布式网络仿真平台的IP地址分配系统,其特征在于:包括IP地址分配 系统初始化模块、IP地址存储模块、IP地址分配请求监听接口,历史实例IP地址分配模块、 新建实例IP地址分配模块; IP地址分配系统初始化模块,接收用户定义的IPRange或根据系统默认的IPRange, 划分IPBlock,如有必要则划分出一个没有子网掩码限制的IPFreeBlock,划分完成后将 IPBlock及IPFreeBlock,按照IP地址存储模块指定的数据结构存储在IP地址存储模块 中,供其他模块使用; IP地址存储模块,用于存储IP地址信息,供历史实例IP地址分配模块、新建实例IP 地址分配模块以及IP地址回收模块使用;对于每个IPBlock,两种数据结构用于存储该 IPBlock所包含的IP地址使用情况,Queue是一个顺序存储键值(Key,Value)类型数据的 类循环队列,用于顺序存储所有该IPBlock上所有IP地址的使用情况,Freelist则用于保 存非连续的可用IP地址,每一片可用的IP地址范围组成一个链表; IP地址分配请求监听接口模块,用于接收待分配IP地址的实例配置信息,并判断实例 性质为历史实例还是新建实例,如为历史实例,则调用历史实例IP地址分配模块,如为新 建实例则调用新建实例IP地址分配模块; 历史实例IP地址分配模块,用于历史实例的IP地址分配,如恢复历史实例原来所使用 的IP地址分配结果失败,则给出实例IP地址分配结果,若用户接受重新分配,则调用新建 实例IP地址分配模块; 新建实例IP地址分配模块,用于向新建实例分配IP地址,首先处理自定义IP地址后, 继续为剩余未定义IP地址的网络接口进行自动化分配,分配策略是先在对应的Queue中进 行顺序分配,当Queue中可用IP地址不够时,继续在对应的Freelist查找离散的可用IP 地址,若分配过程中IP地址资源耗尽,则调用IP地址回收模块,回收IP地址资源后继续分 配,若回收后IP地址资源仍不可用,则返回实例IP地址分配失败结果,否则分配成功,结束 实例IP地址分配。
2. 根据权利要求1所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征 在于:在需要IP地址回时,还包括IP地址回收模块,该模块用于回收IP地址资源,一方面 当实例IP地址分配过程中IP地址资源耗尽,则调用该模块回收IP地址资源,另一方面,若 该系统面向的网络仿真平台进行实例的删除,则也将调用该模块回收被删除的实例所占用 的IP地址资源;所述IP地址回收方法是:根据待删除CaselDSet,在每个IPBlock的Queue 中查找这个CaseIDSet所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的 front和rear衔接的IP地址段,修改front或rear的位置;如果是Queue中的离散片段, 则在Freelist中查找合适的位置插入或新建节点,并正确写入链表节点的begin和end。
3. 根据权利要求1所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征在 于:所述IP地址分配系统初始化模块具体实现为: 步骤1 :先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始可用的地 址(IPBegin)、最后一个可用的地址(IPEnd),子网掩码(Netmask)以及该Block每个网段 可分配多少个IP地址(num);对于IPFreeBlock则只需初始化其IPBegin、IPEnd ;对于每 个IPBlock进行步骤2:来初始化用于记录该IPBlock使用情况的Queue和Freelist ; 步骤 2 :初始化 Queue、Freelist 具体实现为:Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为 key值按照从小到大的顺序进行插入,而对应的value值为CaselDSet,初始化为空;对于 IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储 网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为 空。
4. 根据权利要求1所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征在 于:所述历史实例IP地址分配模块实现为:对于实例来源为历史实例的情况,根据CaselD, 获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaselDSet,遍历集合中 每个CaselD的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分 配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可 用,向用户返回提示,如用户选择可重新分配,则调用新建实例分配模块重新为该实例分配 IP地址。
5. 根据权利要求2所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征在 于:所述新建实例IP地址分配模块实现为: 步骤1 :检查实例配置中是否有自定义IP地址若有,转步骤2,否则转步骤3 ; 步骤2 :根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个 网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaselD状态,若存在 CaselD为非Closed状态,则返回IP地址分配错误提示;若CaselD值不存在或所有CaselD 均为Closed状态,则将该CaselD插入到该网络地址对应的CaselDSet ; 步骤3 :对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配,对 于每个子网,执行步骤4直至分配完成; 步骤4 :判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的Queue 是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主机顺序 分配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经用完, 需执行步骤5 ; 步骤5 :从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用 IPFreeBlock中的IP地址;若IPFreeBlock仍然不能满足IP地址需求,则调用IP地址回 收模块进行IP地址的回收,回收后继续步骤4 ; 步骤6 :对于实例来源为历史实例的情况,根据CaselD,获得该实例所使用的所有IP地 址,对应的获得使用这些IP地址的CaselDSet,遍历集合中每个CaselD的状态,若所有实例 状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实 例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选 择可重新分配,转至步骤4,重新为该实例分配IP地址。
6. -种面向分布式网络仿真平台的IP地址分配方法,其特征在于实现步骤如下: 6. 1 初始化 IPRange、IPBlock 具体实现为:首先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始 可用的地址IPBegin、最后一个可用的地址IPEnd,子网掩码Netmask以及该Block每个网 段可分配多少个IP地址num ;对于IPFreeBlock则只需初始化其IPBegin、IPEnd ;对于每 个IPBlock进行步骤6. 2来初始化用于记录该IPBlock使用情况的Queue和Freelist ; 6. 2 初始化 Queue、Freelist 具体实现为:Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为 key值按照从小到大的顺序进行插入,而对应的value值为CaselDSet,初始化为空;对于 IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储 网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为 空; 6. 3接收实例网络拓扑的配置文件,并判断实例来源,若为新建实例,则转步骤6. 4,否 则转步骤6. 9 ; 6. 4检查实例配置中是否有自定义IP地址若有,转步骤6. 5,否则转步骤6. 6 ; 6. 5根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个网络 地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaselD状态,若存在CaselD 为非Closed状态,则返回IP地址分配错误提示;若CaselD值不存在或所有CaselD均为 Closed状态,则将该CaselD插入到该网络地址对应的CaselDSet ; 6. 6对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配,对于每 个子网,执行6. 7直至分配完成; 6. 7判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的Queue是 否已满,若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主机顺序分 配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经用完,需 执行步骤6. 8 ; 6.8.从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用 IPFreeBlock 中的 IP 地址; 6. 9对于实例来源为历史实例的情况,根据CaselD,获得该实例所使用的所有IP地址, 对应的获得使用这些IP地址的CaselDSet,遍历集合中每个CaselD的状态,若所有实例状 态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实例, 则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可 重新分配,转至步骤6. 6,重新为该实例分配IP地址。
7. 根据权利要求6所述的一种面向分布式网络仿真平台的IP地址分配方法,其特征 在于:在需要IP地址回收时,在所述步骤6. 8后,若IPFreeBlock仍然不能满足IP地址需 求,则启动IP地址回收,进入步骤7. 1,回收后继续步骤6. 6 ;实现步骤如下: 7. 1确定待删除实例后,转至步骤7. 2进行IP地址的回收; 7. 2根据待删除CaselDSet,在每个IPBlock的Queue中查找这个CaselDSet所使用的 IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地址段, 修改front或rear的位置;如果是Queue中的离散片段,贝1」在Freelist中查找合适的位置 插入或新建节点,并正确写入链表节点的begin和end。
8. 根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其特 征在于:所述步骤7. 1中的IP地址回收的条件为:(1)平台管理需要删除历史实例,当实例 数量超过设定的值时,平台将自动删除最久未使用的实例或者根据管理需要,删除指定的 实例,此时需要将分配给删除实例的IP地址资源进行回收;或(2)现有IP地址分配殆尽, 需要被动删除最久未使用的实例以回收IP地址,并分配给最新的实例。
9. 根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其特 征在于:所述步骤6. l,IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地址 段的集合,当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。
10. 根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其 特征在于:所述步骤6. 1中为尽可能节省IP地址资源,应根据子网内部待分配网络接口个 数不同合理分配网络位与主机位,对设定的IP地址范围IPRange进行分块IPBLock,每一块 具有一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可 以为多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进 行分配。
【文档编号】H04L29/12GK104506669SQ201410840982
【公开日】2015年4月8日 申请日期:2014年12月30日 优先权日:2014年12月30日
【发明者】云晓春, 郝志宇, 李伦, 张永铮, 费海强, 丁振全 申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1