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

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

Info

Publication number
CN104506669A
CN104506669A CN201410840982.5A CN201410840982A CN104506669A CN 104506669 A CN104506669 A CN 104506669A CN 201410840982 A CN201410840982 A CN 201410840982A CN 104506669 A CN104506669 A CN 104506669A
Authority
CN
China
Prior art keywords
address
ipblock
queue
network
module
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.)
Granted
Application number
CN201410840982.5A
Other languages
English (en)
Other versions
CN104506669B (zh
Inventor
云晓春
郝志宇
李伦
张永铮
费海强
丁振全
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201410840982.5A priority Critical patent/CN104506669B/zh
Publication of CN104506669A publication Critical patent/CN104506669A/zh
Application granted granted Critical
Publication of CN104506669B publication Critical patent/CN104506669B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

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

Description

一种面向分布式网络仿真平台的IP地址分配系统及方法
技术领域
本发明涉及虚拟网络构建技术,具体涉及一种面向分布式网络仿真平台的IP地址分配系统及方法。
背景技术
网络仿真平台面向网络空间活动的研究和测试需求,提供真实可信的模拟仿真基础平台,是目前网络空间活动研究的主要手段。
从物理平台架构上来看,网络仿真平台要满足大规模、多实例、并行化的网络模拟仿真需求,必须采用分布式架构,由多服务器集群共同承担网络模拟仿真任务。从技术上看,构建虚拟网络的主流的技术方向是融合仿真以及模拟等技术的优势,实现了真实性与构建成本的有效平衡,先进的网络仿真平台利用多粒度抽象的无感融合技术,一个虚拟网络实例不仅能够实现模拟流量、仿真流量的相互通信,更能快速方便的接入实物设备,实现不同虚拟粒度流量的无感融合。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异,是实现网络通信的关键因素。面向分布式网络仿真平台的IP地址分配方法是虚拟网络构建过程中是不可或缺的关键技术,必须满足以下需求:
(1)支持自动化分配与自定义分配;
网络仿真平台的核心优势在于其灵活与高效性,因此网络仿真平台必须能够快速自动化的部署和构建虚拟网络,这就包括自动化的为用户分配虚拟网络的IP地址。而针对某些特定网络或主机,用户希望根据需求自行定义IP地址,那么平台应当能够识别用户自定义IP地址,并合理的分配剩余节点的IP地址。
(2)无法物理隔离平台服务器物理网卡情况下,要求不同实例的IP地址隔离;
一个实例是指仿真验证任务的一次执行,至少包括,拓扑结构、网络中运行的应用、仿真验证实例监控、实时展示和运行结果的回放等要素。无论是哪种虚拟化技术,要实现虚拟网络流量的仿真化,即能够使得各种虚拟粒度的流量能够无感融合,尤其是在分布式架构下需要跨物理服务器的流量传输,虚拟流量不可避免的要通过物理网卡,而实际上分布式环境往往受硬件环境、负载均衡、资源分配等条件制约,将服务器的物理网卡强行进行物理隔离既是不方便的也是不灵活的,这种情况下要支持多个虚拟网络实例的并行化运行且不同实例的流量间互不影响,就依赖于不同实例所分配的IP地址完全隔离,以保证每个虚拟网络实例内部的正常运作。
(3)支持历史环境的完全重用;
平台对已经构建使用过实例会进行保存,以方便用户对历史环境的再次使用,这就要求已经分配过IP地址的历史环境,再次启动运行时,应尽量不再重新分配。
(4)层次化、结构化的合理分配;
从需求的角度,以上三点是面向分布式网络仿真平台的多实例IP地址分配技术所必须满足的,从IP地址本身的特点以及网络的结构设计的基本原则的角度上看,在IP地址分配上,还应在尽量节约IP地址资源的前提下,尽量能够做到层次化、结构化的IP地址分配,使得分配结果易于辨认,符合逻辑。
当前,针对IP地址分配,主要是如何根据网络结构要求,合理的在给定的IP地址范围内,选取网络占位数与主机占位数,并最终确定子网掩码。针对某一设备的IP地址可采用手动配置以及自动化配置两种方法。著名的IP地址分配技术当属DHCP技术,DHCP服务端将在设定地址范围内的某一IP地址和子网掩码分配给支持DHCP获取的客户主机,这种自动化的IP地址分配技术降低了设备的配置和部署时间以及发生配置错误的可能性,可集中化的管理设备IP地址。
以上IP地址分配方法,面向的是真实网络的IP地址分配一般需求,而面向分布式网络仿真平台的多实例IP地址分配,以上方法无法解决诸多问题包括:如何能实现虚拟网络IP地址的自动化分配以简化流程,是否能够处理自定义IP地址分配?多个虚拟网络实例并行执行IP地址如何隔离?如何保证不改变原有IP地址的情况下重用历史环境,如何支持大规模虚拟网络(节点数超过10000000)的IP地址分配。
发明内容
本发明技术解决问题:针对以上IP地址分配方法的不足,提供一种面向分布式网络仿真平台的IP地址分配系统及方法,能够处理实例中的自定义IP地址及自动化的分配IP地址,提升网络仿真平台的灵活性;将给定的范围进行合理的划分,最大限度的利用IP地址资源;能够隔离并行执行实例的IP地址,避免物理网卡无法隔离情况下,不同实例IP地址冲突导致的网络错误;利用类循环队列顺序存储IP地址资源,Freelist用于存储离散的可用IP地址资源,顺序分配与离散分配相结合,提升查询和分配效率的同时充分利用分配过程中产生的碎片;提供IP地址分配策略,可与平台管理相结合,及时回收IP地址资源。
本发明技术解决方案:如图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地址分配。
在需要IP地址回时,面向分布式网络仿真平台的IP地址分配系统还包括IP地址回收模块,该模块用于回收IP地址资源,一方面当实例IP地址分配过程中IP地址资源耗尽,则调用该模块回收IP地址资源,另一方面,若该系统面向的网络仿真平台进行实例的删除,则也将调用该模块回收被删除的实例所占用的IP地址资源;所述IP地址回收方法是:
步骤1:确定待删除实例后,转至步骤4.2进行IP地址的回收;
步骤2:根据待删除CaseIDSet,在每个IPBlock的Queue中查找这个CaseIDSet所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地址段,修改front或rear的位置;如果是Queue中的离散片段,则在Freelist中查找合适的位置插入或新建节点,并正确写入链表节点的begin和end。
所述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值为CaseIDSet,初始化为空;对于IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为空;初始化及Queue、Freelist示意图如图2所示。
所述历史实例IP地址分配模块实现为:对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可重新分配,则调用新建实例分配模块重新为该实例分配IP地址。
所述新建实例IP地址分配模块实现为:
步骤1:检查实例配置中是否有自定义IP地址若有,转步骤2,否则转步骤3;
步骤2:根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaseID状态,若存在CaseID为非Closed状态,则返回IP地址分配错误提示;若CaseID值不存在或所有CaseID均为Closed状态,则将该CaseID插入到该网络地址对应的CaseIDSet;
步骤3:对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配。对于每个子网,执行步骤4直至分配完成;
步骤4:判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主机顺序分配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经用完,需执行步骤5;过程如图4所示。
步骤5:从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用IPFreeBlock中的IP地址;若IPFreeBlock仍然不能满足IP地址需求,则调用IP地址回收模块进行IP地址的回收,回收后继续步骤4;过程如图5所示。
步骤6:对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可重新分配,转至步骤4,重新为该实例分配IP地址。
一种面向分布式网络仿真平台的IP地址分配方法,实现步骤如图3所示,具体如下:
步骤1,IP地址范围即IPRange与IP块即IPBlock划分;
步骤2,存储IPBlock使用情况的类循环队列Queue、空闲链表Freelist;所述Queue和Freelist用于记录每个IPBlock内IP地址的使用情况,Queue是一个顺序存储键值(Key,Value)类型数据的类循环队列;Freelist则用于保存非连续的可用IP地址,每一片可用的IP地址范围组成一个链表;如有必要,在IPRange范围内划分出一个自由块IPFreeBlock,不限定其子网掩码;
步骤3,进行IP地址分配
IP地址分配流程如下:
3.1初始化IPRange、IPBlock
具体实现为:首先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始可用的地址IPBegin、最后一个可用的地址IPEnd,子网掩码Netmask以及该Block每个网段可分配多少个IP地址num;对于IPFreeBlock则只需初始化其IPBegin、IPEnd;对于每个IPBlock进行步骤3.2来初始化用于记录该IPBlock使用情况的Queue和Freelist;
3.2初始化Queue、Freelist
具体实现为:Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为key值按照从小到大的顺序进行插入,而对应的value值为CaseIDSet,初始化为空;对于IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为空;
3.3接收实例网络拓扑的配置文件,并判断实例来源,若为新建实例,则转步骤3.4,否则转步骤3.9;
3.4检查实例配置中是否有自定义IP地址若有,转步骤3.5,否则转步骤3.6;
3.5根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaseID状态,若存在CaseID为非Closed状态,则返回IP地址分配错误提示;若CaseID值不存在或所有CaseID均为Closed状态,则将该CaseID插入到该网络地址对应的CaseIDSet;
3.6对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配。对于每个子网,执行3.7直至分配完成;
3.7判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主机顺序分配该网络内可使用的主机IP地址;若Queue已满,表明该IPBlock的IP地址已经用完,需执行步骤3.8;
3.8.从Freelist中查找可用的IP地址进行分配,若仍不满足需求,则使用IPFreeBlock中的IP地址;若IPFreeBlock仍然不能满足IP地址需求,则启动IP地址回收,进入步骤4.1,回收后继续步骤3.6;
3.9对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可重新分配,转至步骤3.6,重新为该实例分配IP地址。
在需要IP地址回收时,在所述步骤3之后再执行步骤4进行IP地址的回收,实现步骤如下:
4.1确定待删除实例后,转至步骤4.2进行IP地址的回收;
4.2根据待删除CaseIDSet,在每个IPBlock的Queue中查找这个CaseIDSet所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地址段,修改front或rear的位置;如果是Queue中的离散片段,则在Freelist中查找合适的位置插入或新建节点,并正确写入链表节点的begin和end。
所述步骤4中的IP地址回收的条件为:(1)平台管理需要删除历史实例,当实例数量超过设定的值时,平台将自动删除最久未使用的实例或者根据管理需要,删除指定的实例,此时需要将分配给删除实例的IP地址资源进行回收;或(2)现有IP地址分配殆尽,需要被动删除最久未使用的实例以回收IP地址,并分配给最新的实例。
所述步骤1中,IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地址段的集合,当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。
所述步骤1中为尽可能节省IP地址资源,应根据子网内部待分配网络接口个数不同合理分配网络位与主机位,对设定的IP地址范围IPRange进行分块IPBLock,每一块具有一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可以为多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进行分配。
本发明与现有技术相比的优点在于:与已公开的方法相比,本发明面向分布式网络仿真平台的IP地址分配需求,具有如下优点:(1)可设定IP地址范围,对IP地址资源依据一定的结构进行划分,尽量节省IP地址资源的同时,遵循IP地址分配的一般规则。(2)支持自动化IP地址分配与自定义IP地址分配,即能够不需要用户干预,平台自动化根据虚拟网络结构为每个网络接口分配IP地址,用户也可根据需要自行定义某些或全部虚拟网络接口的IP地址,提升网络仿真平台的易用性和灵活性;(3)利用键值数据类型的循环队列及空闲IP地址链表存储IP地址使用情况,顺序存储及链表存储相结合,顺序分配提高分配及查找效率、离散分配利用零散IP地址,同时提供IP地址回收策略,提升分配效率的同时,提高IP地址资源使用率,实现多个并行执行的虚拟网络实例的IP地址隔离,提升网络仿真平台支撑能力;(4)支持历史环境的重用,满足用户对于已经执行过的实例的再次使用需求,提升平台灵活性。
附图说明
图1为本发明系统的组成框图;
图2为本发明的主要数据结构说明;
图3为本发明方法IP地址分配主要流程图;
图4是对新建实例IP地址分配模块中步骤4,即在Queue中选取IP地址进行分配的说明;
图5是对新建实例IP地址分配模块中步骤5,即在Freelist中选择可用IP地址进行分配的说明。
具体实施方式
在阐述本发明之前有,先对相关术语进行说明。
IP地址(IP Address):一个IP地址是一个占32位的二进制数,由代表网络号的位和代表主机号的位组成,可用点分十进制表示或表示成一个32位无符号整数。通过子网掩码(Netmask),可以确定一个IP地址的网络位数和主机位数。因此一般一个网络接口的IP地址包含实际IP地址和子网掩码两个部分。
子网(Subnet):指具有相同子网掩码和网络号的所有网络接口组成的网络。
实例(Case):一个实例是指仿真验证任务的一次执行,至少包括,拓扑结构、网络中运行的应用、仿真验证实例监控、实时展示和运行结果的回放等要素。本发明关心的是实例的来源(source),即新建实例(new)还是历史实例(history);实例的状态:即正在使用(Running)还是已结束(Closed)。实际上实例的状态可能是正在执行、暂停、休眠等,本发明认为除结束状态,其他状态的实例都是正在执行着的实例。
本发明公开的面向分布式网络仿真平台IP地址分配方法主要由以下几个部分组成:
图2是本发明的主要结构IP地址范围IPRange、IP块(IPBlock)、IP循环队列(Queue)、以及IP空闲列表(Freelist)及其之间关系的说明。
1.IP地址范围(IPRange)与IP块(IPBlock)划分。
IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地址段的集合,当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。原则上,网络仿真平台对虚拟网络IP地址的分配以自动化为主,因此一般选择一个连续的IP地址段作为IPRange。
为尽可能节省IP地址资源,应根据子网内部待分配网络接口个数不同合理分配网络位与主机位。本方法对设定的IP地址范围(IPRange)进行分块(IPBLock),每一块具有一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可以为多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进行分配。
如有必要,可在IPRange范围内划分出一个自由块IPFreeBlock,不限定其子网掩码,以应对一些特殊分配情况,如保留IP地址、实物IP地址等。
2.存储IPBlock使用情况的类循环队列(Queue)、空闲链表(Freelist)。
Queue和Freelist用于记录每个IPBlock内IP地址的使用情况,Queue是一个顺序存储键值(Key,Value)类型数据的类循环队列,说其是类循环队列指的是,他具有循环性,但并不是严格的只能先进先出,以下简称循环队列。键是一个IPBlock中包含的每个网络地址(特殊地,当不存在子网这一概念时,键退化成主机IP地址,对于IPFreeBlock来说,键还应附加上对应的子网掩码),值是使用这个网络地址的CaseID集合,按照网络地址由小到大的顺序组成。Freelist则用于保存非连续的可用IP地址,每一片可用的IP地址范围组成一个链表。
3.分配策略
图3展示了IP地址分配主要流程。
3.1初始化IPRange、IPBlock。
首先设定IPRange并进行IPBlock划分,对于每个IPBlock,表示其初始可用的地址(IPBegin)、最后一个可用的地址(IPEnd),子网掩码(Netmask)以及该Block每个网段可分配多少个IP地址(num)。对于IPFreeBlock则只需初始化其IPBegin、IPEnd。对于每个IPBlock进行步骤3.2来初始化用于记录该IPBlock使用情况的Queue和Freelist。
3.2初始化Queue、Freelist。Queue的大小应为该IPBlock中网络地址的个数,并将网络地址作为key值按照从小到大的顺序进行插入,而对应的value值为CaseIDSet,初始化为空。对于IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储网络地址与子网掩码。front和rear为Queue的第一个位置。Freelist为空。初始化后即可启动IP地址分配服务。
3.3接收实例网络拓扑的配置文件,并判断实例来源,若为新建实例,则转步骤3.4,否则转步骤3.9。
3.4检查实例配置中是否有自定义IP地址若有,转步骤3.5,否则转步骤3.6。
3.5根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址。对于每个网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaseID状态,若存在CaseID为非Closed状态,则返回IP地址分配错误提示。若CaseID值不存在或所有CaseID均为Closed状态,则将该CaseID插入到该网络地址对应的CaseIDSet。
3.6对于待自动分配的IP地址,根据实例配置中的子网信息进行IP地址分配。对于每个子网,执行3.7直至分配完成。
3.7判断子网内部的IP地址数需求,选择合适的IPBlock,判断该IPBlock的Queue是否已满。若未满则分配给该子网,确定子网的网络地址和子网掩码后,再为每个主机顺序分配该网络内可使用的主机IP地址。若Queue已满,表明该IPBlock的IP地址已经用完,需执行步骤3.8。
由于Queue利用顺序的循环队列形式存储键值类型数据,查找可用IP地址时,并不需要从头查找,而是直接定位到rear所在位置。rear所在位置的IP地址若已被自定义IP地址使用,则顺序移动rear即可,front和rear以及Queue的大小(size)可迅速判断Queue是否已满。而IP地址回收产生的碎片段则存储在Freelist中。
3.8.从Freelist中查找可用的IP地址进行分配。若仍不满足需求,则使用IPFreeBlock中的IP地址(若划分了该块),使用IPFreeBlock中的IP地址要注意,随时修改键和对应的子网掩码。若IPFreeBlock仍然不能满足IP地址需求,则启动IP地址回收机制(4.1),回收后继续步骤3.6。
3.9对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址。若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可重新分配,转至步骤3.6,重新为该实例分配IP地址。
4.回收策略
尽管支持1000万个节点规模虚拟网络的网络仿真平台已经属于性能较优的系统,但仍然需要考虑IP地址资源的有限性,同时,仿真验证实例管理的需求也需要合理的IP地址回收策略。以下情况需要回收IP地址:
1)平台管理需要删除历史实例。仿真平台一般对于保存的历史实例数量有一定的限制,例如,平台仅保存最近使用过的1000个历史环境。那么当实例数量超过1000个时,平台将自动删除最久未使用的实例或者根据管理需要,删除指定的实例。此时需要将分配给删除实例的IP地址资源进行回收。
2)现有IP地址分配殆尽,需要被动删除最久未使用的实例以回收IP地址,并分配给最新的实例。
4.1由于情况2),选择被删除的实例。选择的原则是,根据最近最久未使用原则,删除最近最久未使用的1个或多个实例集合,直至删除这个实例集合后所能回收的IP地址对应满足需求为止。若不能满足需求,则报告错误,该IPRange无法满足该实例对IP地址的分配需求。
确定待删除实例后,转至步骤4.2进行IP地址的回收。
4.2根据待删除CaseIDSet,在每个IPBlock的Queue中查找这个CaseIDSet所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地址段,修改front或rear的位置。如果是Queue中的离散片段,则在Freelist中查找合适的位置插入或新建节点,并正确写入链表节点的begin和end。
本发明同时公开了一种面向分布式网络仿真平台的IP地址分配系统,以经过网络仿真平台前端处理过的且具有子网信息的网络拓扑结构配置作为输入接口,输出是按照接口定义为每一个子网分配网络号与子网掩码,并为每个网络接口分配IP地址与子网掩码。如图1所示,本发明系统包括IP地址分配系统初始化模块、IP地址存储模块、IP地址分配请求监听接口,历史实例IP地址分配模块、新建实例IP地址分配模块。
以XML格式的网络拓扑配置文件,设定可分配IP地址范围是10.0.0.0~10.255.255.255,使用键值型(key-value)内存数据库(如redis)作为IP地址存储服务,面向分布式网络仿真平台的IP地址分配具体执行步骤是:
1.IP地址范围与IP块划分。
10.0.0.0~10.191.255.255是预留给局域网的A类地址的一部分,是一般虚拟网络常用的IP地址分配资源,假设选取该段地址作为IPRange。可将IPRange划分为一下几个IPBlock:
IPBlock IPBegin IPEnd Netmask Num Size AvailibleIP
IPBlock1 10.0.0.0 10.31.255.248 255.255.255.248 8 262144 6
IPBlock2 10.32.0.0 10.63.255.240 255.255.255.240 16 131072 14
IPBlock3 10.64.0.0 10.95.255.224 255.255.255.224 32 65536 30
IPBlock4 10.96.0.0 10.127.255.192 255.255.255.192 64 32768 62
IPBlock5 10.128.0.0 10.159.255.128 255.255.255.128 128 16384 126
IPBlock6 10.160.0.0 10.191.255.0 255.255.255.0 256 8192 254
其中,IPBegin和IPEnd表示这个IPBlock的起始网段和最后一个可用网段,可以看出,分配的原则是,除了最高8位不变,后面24位中,前三位用于表示块。后21位,IPBlock1用18位表示网络号,3位表示主机,IPBlock2用17位表示网络号,4位表示主机,依次类推。如此划分后,该IPRange共可以向262144个主机个数不超过6个的子网,131072个住几个数不超过14个的子网,…,分配IP地址。最少支持主机数为308834,最大支持主机数为11550720。
2.初始化
每个IPBlock的Freelist初始化为空。以IPBlock1和IPBlock2为例,其Queue初始化如下表,Queue的front和rear都指向第一个位置。初始化后即可为实例分配IP地址。
3.IP地址分配。
例如,当前新到实例的配置中共包含300个子网,其中50个子网的节点个数在2~5个之间,剩余150个子网内节点数在130~160个之间,另外有2个子网中的节点IP地址由用户自定义,剩余节点则需要自动化分配IP地址。该实例是一个新的实例,那么则应该首先进行步骤3.5处理自定义IP地址,若不冲突,则处理需自动化分配IP地址的子网。
若该实例配置中,子网数过多,导致相应Queue中的IP地址不够分配,则需要进一步的使用Freelist中的IP地址进行分配。仍然不够则应启动IP地址回收策略,回收IP地址,直至分配完成。
以上是一个实施的具体实例。实际上,一般IPRange选择上,保留给局域网的A类、B类、C类地址,是常用的选择范围,尤其是使用完整的A类地址,按照本例进行IPBlock划分,剩余IP段作为IPFreeBlock基本上足够满足现有的分布式网络仿真平台的需求。本发明的关键就在于合理划分IPBlock后,使用Queue进行顺序分配,Freelist进行离散分配,给出回收策略,来尽可能的利用IP地址资源实现IP地址隔离、历史环境重用的需求。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (10)

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地址回收方法是:根据待删除CaseIDSet,在每个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值为CaseIDSet,初始化为空;对于IPFreeBlock的Queue,初始化时,以num值最小的那个IPBlock为基础进行初始化,键存储网络地址与子网掩码;front和rear为Queue的第一个位置和最后一个位置,Freelist为空。
4.根据权利要求1所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征在于:所述历史实例IP地址分配模块实现为:对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为Closed,则该历史环境可完全重用,无需再次分配IP地址;若存在正在执行的实例,则该准备重用的实例需要重新分配IP地址或暂时不可用,向用户返回提示,如用户选择可重新分配,则调用新建实例分配模块重新为该实例分配IP地址。
5.根据权利要求2所述的一种面向分布式网络仿真平台的IP地址分配系统,其特征在于:所述新建实例IP地址分配模块实现为:
步骤1:检查实例配置中是否有自定义IP地址若有,转步骤2,否则转步骤3;
步骤2:根据所有的自定义IP地址、子网掩码计算所占用的所有网络地址;对于每个网络地址,在对应IPBlock的Queue中查询该网络地址对应的所有CaseID状态,若存在CaseID为非Closed状态,则返回IP地址分配错误提示;若CaseID值不存在或所有CaseID均为Closed状态,则将该CaseID插入到该网络地址对应的CaseIDSet;
步骤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:对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为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值为CaseIDSet,初始化为空;对于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中查询该网络地址对应的所有CaseID状态,若存在CaseID为非Closed状态,则返回IP地址分配错误提示;若CaseID值不存在或所有CaseID均为Closed状态,则将该CaseID插入到该网络地址对应的CaseIDSet;
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对于实例来源为历史实例的情况,根据CaseID,获得该实例所使用的所有IP地址,对应的获得使用这些IP地址的CaseIDSet,遍历集合中每个CaseID的状态,若所有实例状态均为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根据待删除CaseIDSet,在每个IPBlock的Queue中查找这个CaseIDSet所使用的IP地址,在这个IP地址集合中,找到能够与当前Queue的front和rear衔接的IP地址段,修改front或rear的位置;如果是Queue中的离散片段,则在Freelist中查找合适的位置插入或新建节点,并正确写入链表节点的begin和end。
8.根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其特征在于:所述步骤7.1中的IP地址回收的条件为:(1)平台管理需要删除历史实例,当实例数量超过设定的值时,平台将自动删除最久未使用的实例或者根据管理需要,删除指定的实例,此时需要将分配给删除实例的IP地址资源进行回收;或(2)现有IP地址分配殆尽,需要被动删除最久未使用的实例以回收IP地址,并分配给最新的实例。
9.根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其特征在于:所述步骤6.1,IPRange可以是一个连续的IP地址段,也可以是多个间断的IP地址段的集合,当所有IP地址都不连续时,这个IPRange即退化成单个IP地址的集合。
10.根据权利要求6或7所述的一种面向分布式网络仿真平台的IP地址分配方法,其特征在于:所述步骤6.1中为尽可能节省IP地址资源,应根据子网内部待分配网络接口个数不同合理分配网络位与主机位,对设定的IP地址范围IPRange进行分块IPBLock,每一块具有一个IP地址范围和子网掩码,并能够据此计算出该IPBlock中的每段IP地址最多可以为多少个网络接口进行分配,子网内主机数不大于该数值时,将使用此块内的IP地址进行分配。
CN201410840982.5A 2014-12-30 2014-12-30 一种面向分布式网络仿真平台的ip地址分配系统及方法 Active CN104506669B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410840982.5A CN104506669B (zh) 2014-12-30 2014-12-30 一种面向分布式网络仿真平台的ip地址分配系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410840982.5A CN104506669B (zh) 2014-12-30 2014-12-30 一种面向分布式网络仿真平台的ip地址分配系统及方法

Publications (2)

Publication Number Publication Date
CN104506669A true CN104506669A (zh) 2015-04-08
CN104506669B CN104506669B (zh) 2018-02-16

Family

ID=52948384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410840982.5A Active CN104506669B (zh) 2014-12-30 2014-12-30 一种面向分布式网络仿真平台的ip地址分配系统及方法

Country Status (1)

Country Link
CN (1) CN104506669B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016206519A1 (zh) * 2015-06-23 2016-12-29 中兴通讯股份有限公司 分配ip地址的方法及装置
CN106921758A (zh) * 2017-02-14 2017-07-04 中国科学院信息工程研究所 一种面向分布式网络仿真平台的子网识别方法
CN107864230A (zh) * 2016-09-21 2018-03-30 罗克韦尔自动化技术公司 基于拓扑的互联网协议(ip)寻址
CN111343010A (zh) * 2020-02-16 2020-06-26 苏州浪潮智能科技有限公司 一种配置存储ip网络端口的方法和设备
CN112202937A (zh) * 2020-09-30 2021-01-08 中国核动力研究设计院 一种仪控仿真系统ip分配方法、系统、设备及存储介质
CN114844862A (zh) * 2021-01-15 2022-08-02 大唐移动通信设备有限公司 资源处理方法、装置及通信设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060274363A1 (en) * 2005-06-06 2006-12-07 Canon Kabushiki Kaisha Communication Apparatus, System, and Method
CN101841574A (zh) * 2010-04-09 2010-09-22 江苏东大金智建筑智能化系统工程有限公司 网络视频监控系统中ip地址自动分配及管理方法
CN103581358A (zh) * 2013-10-18 2014-02-12 汉柏科技有限公司 Ip地址列表匹配方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060274363A1 (en) * 2005-06-06 2006-12-07 Canon Kabushiki Kaisha Communication Apparatus, System, and Method
CN101841574A (zh) * 2010-04-09 2010-09-22 江苏东大金智建筑智能化系统工程有限公司 网络视频监控系统中ip地址自动分配及管理方法
CN103581358A (zh) * 2013-10-18 2014-02-12 汉柏科技有限公司 Ip地址列表匹配方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016206519A1 (zh) * 2015-06-23 2016-12-29 中兴通讯股份有限公司 分配ip地址的方法及装置
CN106331193A (zh) * 2015-06-23 2017-01-11 中兴通讯股份有限公司 地址池分配方法及装置
CN107864230A (zh) * 2016-09-21 2018-03-30 罗克韦尔自动化技术公司 基于拓扑的互联网协议(ip)寻址
CN107864230B (zh) * 2016-09-21 2020-08-11 罗克韦尔自动化技术公司 基于拓扑的互联网协议(ip)寻址
CN106921758A (zh) * 2017-02-14 2017-07-04 中国科学院信息工程研究所 一种面向分布式网络仿真平台的子网识别方法
CN106921758B (zh) * 2017-02-14 2020-01-07 中国科学院信息工程研究所 一种面向分布式网络仿真平台的子网识别方法
CN111343010A (zh) * 2020-02-16 2020-06-26 苏州浪潮智能科技有限公司 一种配置存储ip网络端口的方法和设备
CN111343010B (zh) * 2020-02-16 2022-12-27 苏州浪潮智能科技有限公司 一种配置存储ip网络端口的方法和设备
CN112202937A (zh) * 2020-09-30 2021-01-08 中国核动力研究设计院 一种仪控仿真系统ip分配方法、系统、设备及存储介质
CN112202937B (zh) * 2020-09-30 2021-11-30 中国核动力研究设计院 一种仪控仿真系统ip分配方法、系统、设备及存储介质
CN114844862A (zh) * 2021-01-15 2022-08-02 大唐移动通信设备有限公司 资源处理方法、装置及通信设备
CN114844862B (zh) * 2021-01-15 2023-09-05 大唐移动通信设备有限公司 资源处理方法、装置及通信设备

Also Published As

Publication number Publication date
CN104506669B (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
CN112187545B (zh) 一种网络切片的部署方法及装置
CN104506669A (zh) 一种面向分布式网络仿真平台的ip地址分配系统及方法
CN109684065B (zh) 一种资源调度方法、装置及系统
US10505796B2 (en) Network function virtualization
US20090070773A1 (en) Method for efficient thread usage for hierarchically structured tasks
CN106936739B (zh) 一种报文转发方法及装置
CN109451540B (zh) 一种网络切片的资源分配方法和设备
CN104679594B (zh) 一种中间件分布式计算方法
ES2607636T3 (es) Método implementado por ordenador y sistema para proporcionar un servicio de conexión en red y un producto de programa de ordenador adaptado para realizar el método
CN104601680A (zh) 一种资源管理方法及装置
CN113067739B (zh) 一种高密度容器网络部署方法及系统
CN109471725A (zh) 资源分配方法、装置和服务器
CN113900829B (zh) 用于设备的内存管理方法、内存管理设备和计算系统
CN114217920A (zh) 作业调度方法和装置、计算机机群、计算机可读存储介质
CN112565475B (zh) 容器集群业务层添加新节点的ip地址分配方法
CN116016028B (zh) 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备
CN113867736B (zh) 部署方案生成方法及装置
CN107590000B (zh) 二次随机资源管理方法/系统、计算机存储介质及设备
CN115866059A (zh) 一种区块链节点调度方法和装置
CN106789289B (zh) 用于虚拟网络映射的方法和设备
CN112929461B (zh) 一种基于高速互连网络的mpi进程管理接口实现方法
US9203733B2 (en) Method of pseudo-dynamic routing in a cluster comprising static communication links and computer program implementing that method
TW202315360A (zh) 微服務分配方法、電子設備及儲存介質
CN109600251B (zh) 一种虚拟网络部署方法、系统及装置
Shahin Using heavy clique base coarsening to enhance virtual network embedding

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant