[发明专利]一种虚拟网络功能的统一监控方法有效

专利信息
申请号: 202110347584.X 申请日: 2021-03-31
公开(公告)号: CN112925649B 公开(公告)日: 2021-09-14
发明(设计)人: 周聪;时向泉;陶静;原玉磊;赵宝康;赵锋 申请(专利权)人: 中国人民解放军国防科技大学
主分类号: G06F9/50 分类号: G06F9/50
代理公司: 湖南企企卫知识产权代理有限公司 43257 代理人: 任合明
地址: 410073 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 虚拟 网络 功能 统一 监控 方法
【权利要求书】:

1.一种虚拟网络功能的统一监控方法,其特征在于包括以下步骤:

第一步,构建虚拟网络功能统一监控平台;

1.1构建虚拟网络功能运行平台,并部署服务功能链;

构建包含一个Master节点与N个Node节点的k8s平台,VNF业务功能单元部署于对应k8s的调度基本单元Pod中,且分配了相应的CPU、内存资源;Pod属于k8s平台不同的命名空间,若未指定,Pod属于默认空间,使用“default”表示;业务流按约定的次序依次通过Pod,形成服务功能链;部署了VNF业务功能单元的Pod命名为pod_vnf,vnf为VNF业务功能单元的名称的简称,已有的7种VNF业务功能单元包括:报文过滤功能、负载均衡功能、网络地址转换功能、深度报文检测功能、入侵防御功能、协议识别功能、Web应用防护功能;若需要将pod_vnf加入虚拟网络功能统一监控平台,使统一监控平台采集业务指标元数据,则为pod_vnf增加标签“monitored”;每个Pod仅部署一个VNF业务功能相关的Docker容器,每个Pod仅属于一条服务功能链;

VNF业务功能单元分为定制功能的VNF单元、标准功能的VNF单元;定制功能的VNF单元为可修改源码满足特殊需求的VNF,直接产生业务监控指标元数据;标准功能的VNF单元属于成熟的软件,日志文件中包含标准功能的VNF单元业务处理状态与过程,需要解析已有日志文件的字段,产生业务监控指标元数据;

在k8s平台原有Pod管理标签基础上,为每个Pod新增2种管理标签,即:Pod所属服务功能链名称SFC,Pod所在服务功能链的位置SFCIndex;

1.2构建虚拟网络功能统一监控平台:

虚拟网络功能统一监控平台由监控对象发现模块、业务监控指标产生模块、性能监控指标产生模块、监控指标统一采集模块、资源集中分配模块、时序数据库组成;

在k8s平台的Master节点新建一个Pod,命名为pod_dis,将监控对象发现模块、监控指标统一采集模块部署在pod_dis;

监控对象发现模块与监控指标统一采集模块相连,监控对象发现模块由Node对象发现模块、Pod对象发现模块、监控对象配置文件autoDisConfig组成;autoDisConfig包括6个域,分别为:接口调用的频率scheduleInterval、k8s的配置文件的位置k8sConfigPath、Pod监控对象命名空间K8SNamespace、Pod监控对象的筛选标签monitorLabel,monitorLabel是k8s平台表示是否需要被监控的Pod的标识,若标签为“monitored”,表示需要被监控,否则不需要被监控;Node对象文件的存储位置pwd_node_targets、Pod对象文件的存储位置pwd_pod_targets;Node对象发现模块与k8s平台的应用程序接口相连,Node对象发现模块在每间隔scheduleInterval内,调用k8s的API函数listNode发现Node对象,令共发现N个Node对象,N为Node对象的总数;以Node的IP地址为文件名,为N个Node生成Node监控对象文件,令IP地址为NodeIP的Node的Node监控对象文件为NodeIP.yml;将N个Node监控对象文件存储于目录pwd_node_targets下;Pod对象发现模块与k8s平台的应用程序接口相连,在Node对象发现模块发现Node对象的同时,Pod对象发现模块调用k8s的API函数listNamespacedPod发现Pod对象,令共发现M个Pod对象,M为Pod对象总数,以Pod所在的SFC与Pod的IP地址为文件名,生成每个Pod的Pod监控对象文件,令IP地址为PodIP的Pod的Pod监控对象文件为SFC+PodIP.yml;将M个Pod监控对象文件存储于目录pwd_pod_targets下;

性能监控指标产生模块采用cAdvisor,与监控指标统一采集模块相连;性能监控指标产生模块在每个Node上新建一个Pod,命名为pod_prf_x,其中x=1,2,…N,每个Node上部署一个cAdvisor的Pod,即N个Node共部署N个cAdvisor;cAdvisor部署在pod_prf_x上,通过与Docker引擎交互获取信息,生成性能监控指标元数据供监控指标统一采集模块拉取,性能监控指标元数据包括CPU利用率、内存利用率指标的元数据;

业务监控指标产生模块部署在pod_vnf;业务监控指标产生模块与NVF业务功能单元的restFul数据接口、监控指标统一采集模块相连;由业务指标元数据解析模块、业务指标发布模块、业务监控指标配置文件vnfConfig组成;vnfConfig包括两个域:业务指标元数据标签组tags,业务指标元数据的类型types,tags为业务指标元数据的标签的名称列表,types包括两个值:String表示标签的值为字符类型,Double表示标签的值为数值型;vnfConfig的内容根据pod_vnf上的VNF业务功能单元的类型配置;业务指标元数据解析模块与restFul数据接口、业务指标发布模块相连,业务指标元数据解析模块监听restFul数据接口,接收pod_vnf中VNF业务功能单元推送的业务监控指标元数据,对业务监控指标元数据进行解析,缓存并生成业务监控指标元数据,业务监控指标元数据包括业务运行监控指标元数据及模块运行状态,将业务监控指标元数据发送给业务指标发布模块;业务指标发布模块与业务指标元数据解析模块、监控指标统一采集模块相连,监听监控指标统一采集模块的“拉取监控指标”请求,当收到“拉取监控指标”请求时,业务指标发布模块将业务监控指标元数据发布至监控指标统一采集模块;

监控指标统一采集模块与监控对象发现模块、时序数据库、业务监控指标产生模块、性能监控指标产生模块相连,采用Prometheus,部署在pod_dis;监控指标采集模块中有监控指标采集配置文件monConfig,monConfig包括4个域,分别是:采集周期scrape_interval、Node对象文件的存储位置pwd_node_targets、Pod对象文件的存储位置pwd_pod_targets、时序数据库写入地址remote_write;监控指标统一采集模块根据monConfig配置的采集周期scrape_interval,周期性地从pwd_node_targets、pwd_pod_targets目录下获得监控对象,向性能监控指标产生模块发送“拉取监控指标”请求,收集性能监控指标产生模块生成的性能监控指标元数据;同时,向业务监控指标产生模块发送“拉取监控指标”请求,收集业务监控指标元数据;为性能监控指标元数据和业务监控指标元数据增加标签,将增加标签后的性能监控指标元数据和业务监控指标元数据保存在时序数据库中;

时序数据库与监控指标统一采集模块、资源集中分配模块相连,命名为“nfvMonitor”,部署于k8s平台之外的服务器上,用于存储业务监控指标元数据与性能监控指标元数据,每个指标元数据以表的形式独立存储,包括:业务监控指标产生模块状态指标表、业务运行监控指标详细表、业务功能单元CPU使用情况表、业务功能单元内存使用情况表;其中,业务监控指标产生模块状态指标表state_up,包括9个表项:时间戳即记录项生成的系统时间、CPU配置数值即系统管理员为Pod配置的CPU核数、内存配置数值即系统管理员为Pod配置的内存数量、VNF名称即VNF业务功能功能的名称、node名称即Pod部署在Node的名称、pod名称、SFC名称即Pod所属服务功能链的名称、SFC位置即Pod所属服务功能链的位置序号、监控采集模块的启动状态;业务运行监控指标详细表detail_count,包括表项:时间戳、VNF元数据集即VNF业务功能单元的配置文件vnfConfig的业务指标元数据的标签项、node名称即Pod所属Node的名称、pod名称、SFC名称、SFC位置即Pod所属服务功能链的位置序号、业务处理计数数值即业务处理的数量;业务功能单元CPU使用情况表user_cpu,包括表项:时间戳、容器标签集即k8s平台为容器生成的系统管理标签集合、pod名称即容器所属Pod的名称、node名称、SFC名称、SFC位置、CPU使用数值即CPU使用的时间;业务功能单元内存使用情况表usage_memory,包括表项:时间戳、容器标签集即k8s平台为容器生成的系统管理标签集合、pod名称、node名称、SFC名称、SFC位置、内存使用数值即内存使用量;

资源集中分配模块从state_up表获得Pod的CPU与内存分配现状;从detail_count表获得VNF业务功能单位处理业务量速率的元数据;从user_cpu与usage_memory表中得到处理当前业务时的CPU利用率与内存利用率的元数据;根据这4项指标元数据,建立“业务-性能”模型,用于资源分配;

资源集中分配模块与时序数据库部署在同一个服务器中,资源集中分配模块与时序数据库相连,资源集中分配模块由“业务-性能”模型建立模块、资源分配方案生成模块、资源配置文件resAdmConfig组成;资源配置文件包括6个域:时序数据库URL、数据库名称dataBase、查询数据库的频率searchInterval、查询数据库的时间偏移量timeOffset、CPU警告阈值cpuTSD、内存警告阈值memTSD;“业务-性能”模型建立模块与时序数据库、资源分配方案生成模块相连,按查询数据库的频率searchInterval在时序数据库URL下的dataBase中,分别从detail_count表、user_cpu表、usage_memory表,获得从当前时间往前timeOffset秒之间的数据,计算CPU利用率与内存利用率、业务处理速率;并从state_up表中获得Pod的CPU与内存分配现状;当CPU利用率超过cpuTSD或者内存利用率超过memTSD时,建立“业务-性能”模型,将“业务-性能”模型发送给资源分配方案生成模块;资源分配方案生成模块与“业务-性能”模型建立模块相连,根据从“业务-性能”模型建立模块接收的“业务-性能”模型,生成Pod新的CPU与内存资源分配方案,将CPU与内存资源分配方案发送给k8s 平台管理员;

第二步,虚拟网络功能统一监控平台初始化,方法是:

2.1配置监控对象发现模块的监控对象配置文件autoDisConfig:

2.1.1将接口调用的频率scheduleInterval值设置为≥60秒;

2.1.2将k8s的配置文件Config位置k8sConfigPath的值设置为文件Config的位置;

2.1.3将Pod监控对象命名空间K8SNamespace的值设置为默认值“default”,支持多个命名空间设置,命名空间之间使用“,”分隔;

2.1.4将Pod监控对象的筛选标签monitorLabel的值设置为“monitored”;

2.1.5将Node对象文件的存储位置pwd_node_targets值设置为“/home/targets/nodes”;

2.1.6将Pod对象文件的存储位置pwd_pod_targets值设置为“/home/targets/pods”;

2.2配置监控指标统一采集模块的监控指标配置文件monConfig:

2.2.1将pwd_node_targets值设置为“[‘/home/targets/nodes/*.yml’]”;

2.2.2将pwd_pod_targets值设置为“[‘/home/targets/pod/*.yml’]”;

2.2.3将remote_write配置为“-url:http://时序数据库IP地址:端口/api/v1/prom/write?db=nfvMonitor”,其中,时序数据库IP地址为时序数据库IP地址,端口为时序数据库端口;

2.2.4将采集周期scrape_interval值设置为≥60秒;

2.3根据pod_vnf上的VNF业务功能单元的类型配置业务监控指标产生模块的业务监控指标配置文件vnfConfig;

2.4配置资源集中分配模块的资源配置文件resAdmConfig,方法是:

2.4.1将时序数据库URL配置为“http://时序数据IP地址:端口号”;

2.4.2将时序数据库名称dataBase设置为“nfvMonitor”;

2.4.3将查询数据库的频率searchInterval设置为≥300秒;

2.4.4将查询数据库的时间偏移量timeOffset设置为≥600秒;

2.4.5将CPU警告阈值cpuTSD设置为60%至80%之间;

2.4.6将内存警告阈值memTSD设置为60%至80%;

第三步,虚拟网络功能统一监控平台的监控对象发现模块、性能监控指标产生模块、业务监控指标产生模块、监控指标统一采集模块、资源集中分配模块并行工作,相互配合,对Pod的CPU使用情况、内存使用情况以及业务运行情况进行监控,产生监控指标元数据,根据元数据情况,补全管理标签,存入时序数据库,当出现监测域值告警,建立“业务-性能”模型,生成新的资源分配方案;方法是:监控对象发现模块按第3.1步的流程生成监控对象的文件列表;同时,性能监控指标产生模块按第3.2步的流程生成性能监控指标元数据;同时,业务监控指标产生模块按第3.3步的流程生成业务监控指标元数据;同时,监控指标统一采集模块按3.4步的流程采集业务指标与性能指标存入时序数据库;同时,资源集中分配模块按3.5步的流程监测域值告警,建立模型并生成资源分配方案:

3.1监控对象发现模块利用k8s的API接口获取k8s的Node与Pod对象,生成Node监控对象文件与Pod监控对象文件,并分类保存;方法是:

3.1.1监控对象发现模块初始化;方法是:

3.1.1.1Node对象发现模块从监控对象配置文件autoDisConfig中读取参数:scheduleInterval、k8sConfigPath、K8SNamespace、monitorLabel、pwd_node_targets、pwd_pod_targets;

3.1.1.2Node对象发现模块初始化Node对象控制列表nodeTargets为空,令列表长度为nodeListLen,nodeTargets的每一项是一个“键-值”结构,其中“键”为Node的IP地址,“值”为三个标志字符:“I”表示初始化、“E”表示已存在、“A”表示待新增;

3.1.1.3Pod对象发现模块初始化Pod对象控制列表podTargets为空,令列表长度为podListLen,podTargets的每一项是一个“键-值”结构,其中“键”为Pod所属服务功能链名称与Pod的IP地址的字符串拼接,“值”的内容与nodeTargets一样,也为三个标志字符:“I”表示初始化、“E”表示已存在、“A”表示待新增;

3.1.2Node对象发现模块记录开始时间t1=系统时间;

3.1.3Node对象发现模块更新nodeTargets;方法是:

3.1.3.1判断nodeTargets是否包含“键-值”对,若包含,转3.1.3.2,否则转3.1.3.3;

3.1.3.2将nodeTargets所有“键”的“值”置为“I”;

3.1.3.3调用k8s的API中的listNode函数得到Node对象列表nodeList,nodeList列表中有nodeListLen个表项,其中第x个表项用nodeListItem[x]表示,1≤x≤nodeListLen,nodeListItem[x]的内容为第x个Node的IP地址;

3.1.3.4令nodeList序号x=1;

3.1.3.5从nodeList获得nodeList的第x项nodeListItem[x],若nodeListItem[x]已存在于nodeTargets的“键”中,则将nodeTargets的“键”nodeListItem[x]的“值”置“E”,转3.1.3.6;否则以nodeListItem[x]为新“键”增加到nodeTargets,将“键”nodeListItem[x]的“值”置“A”,转3.1.3.6;

3.1.3.6若x<nodeListLen,令x=x+1,转3.1.3.5;否则,转3.1.4;

3.1.4 Pod对象发现模块更新podTargets变量;方法是:

3.1.4.1若podTargets已包含“键-值”对,转3.1.4.2;否则,转3.1.4.3;

3.1.4.2将podTargets所有“键”的“值”置为“I”;

3.1.4.3调用k8s的API中的listNamespacedPod函数得到Pod对象列表podList,podList列表中有podListLen个表项,其中第y个表项用podListItem[y]表示,1≤y≤podListLen,podListItem[y]是一个结构体,包括域:Pod所在的SFC名称SFC、Pod所属SFC的位置、Pod所在Node的名称、Pod的IP地址ipAddr以及Pod分配的CPU核数、Pod分配的内存大小;

3.1.4.4令podList序号y=1;

3.1.4.5从podList获得podList的第y项podListItem[y],若podListItem[y]的SFC域与ipAddr域拼接组成的字符串已存在于podTargets的“键”中,则将podTTargets的“键”podListItem[y]对应的“值”置“E”,转3.1.4.6;否则以podListItem[y]的SFC域+ipAddr域为新“键”增加到podTargets,“键”podLisstItem[y]的“值”置“A”,转3.1.4.6;

3.1.4.6若ypodListLen,令y=y+1,转3.1.4.5;否则,转3.1.5;

3.1.5Node对象发现模块新建或删除Node监控对象文件,方法是:

3.1.5.1令nodetargets序号m=1;

3.1.5.2从nodeTargets获得nodeTargets的第m项nodeTargetItem[m],1≤m≤nodeTargetLen,nodeTargetLen为nodeTarget列表的长度;

3.1.5.3若nodeTargetItem[m]的“值”为”A”,新建node对象监控文件,其文件名为nodeTargetItem[m].yml,保存在目录pwd_node_targets下,文件内容包括:“targets:nodeTargetItem[m]”targets为监控指标统一采集模块中采集对象的标签,nodeTargetItem[m]为第m个Node的IP地址,转3.1.5.4;若nodeTargetItem[m]的“值”为”I”,在目录pwd_node_targets下删除文件nodeTargetItem[m].yml,同时删除nodeTargets中的nodeTargetItem[m],转3.1.5.4;若nodeTargetItem[m]的“值”为”E”,保留该文件,转3.1.5.4;

3.1.5.4若m<nodeTargetLen,令m=m+1,转3.1.5.2;否则,转3.1.6;

3.1.6Pod对象发现模块新建或删除Pod监控对象文件,方法是:

3.1.6.1令podtargets序号n=1;

3.1.6.2从podTargets获得podTargets的第n项podTargetsItem[n],1≤n≤podTargetLen,podTargetsLen为podTargets列表的长度;

3.1.6.3若podTargetsItem[n]的“值”为”A”,新建pod监控对象文件,其文件名为podTargetsItem[n].yml,保存在目录pwd_pod_targets;文件内容包括管理标签:“targets:Pod的IP地址,node:Node的名称,pod:Pod的名称,sfc:SFC的名称,sfcIndex:SFC位置,CPU:CPU的核数,Mem:内存大小”,转3.1.6.4;若podTargetsItem[n]的“值”为“I”,删除文件podTargetsItem[n].yml,同时删除podTargets中的podTargetsItem[n],转3.1.6.4;若podTargetItem[n]的“值”为”E”,保留该文件,转3.6.1.4;

3.1.6.4若n<podTargetLen,令n=n+1,转3.1.6.2;否则,转3.1.7;

3.1.7node对象发现模块读取系统时间,令t2=系统时间,若t2-t1≥scheduleInterval,转3.1.2;否则,转3.1.7;

3.2性能监控指标产生模块定期读取Node主机上相关的文件,以每个Docker为对象,统计Docker容器CPU占用时间与内存使用量,生成性能监控指标元数据,供监控指标统一采集模块拉取;

3.3业务监控指标产生模块接收pod_vnf中VNF业务功能单元推送的业务监控指标元数据字符串,解析、缓存并汇总统计,生成业务运行状态监控指标与模块运行状态指标的元数据;方法是:

3.3.1业务指标元数据解析模块读取业务监控指标配置文件vnfConfig,获得tags与types,令tagsLen为tags的长度,types的长度与tags相同,初始化监控指标元数据的映射列表metaDataMap,metaDataMap的长度同样为tagsLen,metaDataMap的每一项是“键-值”结构,其中“键”为元数据标签vnfTag,“值”为元数据类型;

3.3.2初始化业务监控指标缓冲区变量vnf_buffer_count为空,该变量是“键-值”结构,其中“键”为业务监控指标元数据组合的字符串vnfTagContest,“值”包括两个域:业务监控指标统计值count、系统时间戳timestamp;同时,将业务指标元数据解析模块的状态变量restful_up置1,表示业务指标元数据解析模块处于工作状态,正等待业务功能单元推送数据;

3.3.3业务指标元数据解析模块监听是否从VNF业务功能单元接收到业务监控指标元数据字符串,若接收到,转步骤3.3.4;若未接收到,转3.3.7;

3.3.4业务指标元数据解析模块解析业务监控指标元数据字符串,方法是:

3.3.4.1从restFul数据端口接收VNF业务功能单元推送的业务监控指标元数据字符串,即元数据列表json,其长度为jsonLen;

3.3.4.2初始化监控指标元数据列表metaData为空,其中,metaData的每一项是“键-值”结构,“键”为元数据标签vnfTag,“值”为元数据内容,metaDataLen为metaData列表长度;

3.3.4.3令json序号q=1;

3.3.4.4提取json的第q项json[q],json[q]是一个“键-值”结构,其中“键”为业务监控指标元数据的标签,“值”为业务监控指标元数据的内容,若json[q]在metaDataMap中的“值”为“String”,将json[q]加入metaData,转3.3.4.6;

3.3.4.5若json[q]在metaDataMap中的“值”为“Double”,“Double”表示标签的内容为数值,不作为元数据的管理标签,直接转3.3.4.6;

3.3.4.6若qjsonLen,令q=q+1,转3.3.4.4,否则转3.3.5;

3.3.5业务指标元数据解析模块将业务监控指标元数据缓冲到业务监控指标缓冲区变量vnf_buffer_count中;

3.3.6业务指标发布模块监听是否收到监控指标统一采集模块发送的“拉取监控指标请求”,若接收到,转步骤3.3.7;若未接收到,转步骤3.3.3;

3.3.7业务指标发布模块调用Prometheus的API接口的MetricFamilySamples函数,将变量restful_up转换为业务监控指标产生模块状态指标,向监控指标统一采集模块发布,该指标包括标签:VNF名称,指标值为1,指标名称为state_up;指标标签与指标值组成模块的状态指标的元数据;

3.3.8业务指标发布模块判断vnf_buffer_count是否空,若不为空,转步骤3.3.9;否则,转步骤3.3.3;

3.3.9业务指标发布模块调用Prometheus的API接口的MetricFamilySamples函数,将变量vnf_buffer_count转换为业务监控指标,向监控指标统一采集模块发布,该指标包括标签:vnfTagContest,指标值:业务处理计数数值,指标名称为detail_count;指标标签与指标值组成业务监控指标元数据;

3.3.10业务指标发布模块清空业务监控指标缓冲区vnf_buffer_count,转步骤3.3.3;

3.4监控指标统一采集模块按以下流程采集监控指标:

3.4.1读取第3.1步生成的Node监控对象文件,若Node监控对象文件存在,转3.4.2;若Node监控对象文件不存在,转3.4.3;

3.4.2依次读取N个Node监控对象文件的targets域,向这N个IP地址分别发送“拉取监控指标”请求,从性能监控指标产生模块收集3.2步产生的性能监控指标元数据,并将性能监控指标元数据写入时序数据库,转3.4.4;

3.4.3等待scrape_interval秒后,转3.4.1;

3.4.4读取第3.1步生成的Pod监控对象文件,若Pod监控对象文件存在,转3.4.5;若Pod监控对象文件不存在,转3.4.1;

3.4.5依次读取M个Pod监控对象文件的targets域,向这M个IP地址分别发出“拉取监控指标”请求,从业务监控指标产生模块收集第3.3步生成的业务运行监控指标元数据与模块运行状态指标元数据,转3.4.6;

3.4.6将Pod监控对象文件中的管理标签补全到模块运行状态指标元数据中,并将增加标签的标志运行状态监控指标元数据写入时序数据库,转3.4.7;

3.4.7若业务监控指标元数据不为空,将Pod监控对象文件中的管理标签补全到业务监控指标元数据中,并将增加标签的业务监控指标元数据据写入时序数据库,转3.4.1;否则,直接转3.4.1;

3.5资源集中分配模块从时序数据库获取监控指标元数据,当CPU利用率或内存利用率超过用户设定的阈值时,建立“业务-性能”模型,动态生成资源分配方案,方法是:

3.5.1资源集中分配模块初始化,方法是:

3.5.1.1“业务-性能”模型建立模块从资源配置文件resAdmConfig读取参数:URL、dataBase、searchInterval、timeOffset、cpuTSD、memTSD;

3.5.1.2“业务-性能”模型建立模块调用influxDB的API接口的connect函数建立数据库连接;

3.5.2“业务-性能”模型建立模块记录当前系统时间t3,并初始化资源分配方案、业务监控指标指示变量、性能监控指标指示变量三个控制变量,方法是:

3.5.2.1初始化资源分配方案resDis为空,resDis是一个“键-值”列表,每项是一个“键-值”结构,表示Pod的资源配置,其中“键”包括两个域:SFC的名称与Pod的名称,“值”包括两个域:CPU的核数与内存Mem大小;

3.5.2.2初始化业务运行监控指标指示变量vnfIndex为空,vnfIndex是一个“键-值”列表,每项是一个“键-值”结构,其中“键”包括两个域:SFC的名称与Pod的名称,“值”为VNF功能处理业务的速率;

3.5.2.3初始化性能监控指标指示变量perfIndex为空,perfIndex是一个“键-值”列表,每项是一个“键-值”结构,其中“键”包括三个域:SFC的名称、Pod的名称、SFC的位置,“值”包括两个域:VNF业务功能单元的CPU利用率与内存Mem利用率;

3.5.3“业务-性能”模型建立模块更新资源分配方案resDis,方法是:

3.5.3.1调用Influxdb接口查询时序数据库中的state_up表,以SFC名称与Pod分组,调用Influxdb接口的聚合类函数last()获得查询结果,最终结果包括:SFC的名称、Pod的名称、CPU的核数、内存配置数值,保存于资源状态列表resDisList中,resDisList的每项元素包括四个域,即:SFC的名称sfc、Pod的名称pod、CPU的核数cpu、内存Mem大小mem,resDisListLen为resDisList列表的长度;

3.5.3.2若resDisListLen1,转3.5.9,否则转3.5.3.3;

3.5.3.3令resDisList序号s=1;

3.5.3.4获得resDisList的第s项为resDisListItem[s],将resDisListItem[s]的sfc域与pod域分别存入resDis“键”的SFC域与Pod域;resDisListItem[s]的cpu域与mem域分别存入resDis的“值”的CPU域与内存Mem域;

3.5.3.5若sresDisListLen,令s=s+1,转3.5.3.4,否则转3.5.4;

3.5.4“业务-性能”模型建立模块更新性能监控指标指示变量perfIndex的CPU域,方法是:

3.5.4.1调用Influxdb接口查询时序数据库中的user_cpu表,获取表中timeOffset秒内的查询结果,同时将查询结果以SFC名称、SFC位置与Pod分组,调用Influxdb聚合函数derivative()计算速率,然后调用Influxdb聚合函数mean()计算平均值,最终查询结果包括:SFC的名称、SFC的位置、Pod的名称、CPU利用率,保存于变量CPU状态列表cpuList,cpuList的每项元素是四个域,即SFC的名称sfc、SFC的位置sfcIndex、Pod的名称sfc、CPU利用率cpu,cpuListLen为列表cpuList的长度;

3.5.4.2若cpuListLen1,转3.5.9,否则转3.5.4.3;

3.5.4.3令cpuList序号t=1;

3.5.4.4获得cpuList的第t项为cpuItem[t],将cpuItem[t]的sfc域、sfcIndex域、pod域分别存入perfIndex“键”的SFC域、SFCIndex域、Pod域,cpuItem[t]的cpu域存入perfIndex“值”的CPU域;

3.5.4.5若tcpuListLen,令t=t+1,转3.5.4.4,否则转3.5.5;

3.5.5“业务-性能”模型建立模块更新性能监控指标指示变量perfIndex的Mem域,方法是:

3.5.5.1调用Influxdb接口查询时序数据库中的usage_memory表,获取表中timeOffset秒内的查询结果,同时将查询结果以SFC名称、SFC位置与Pod分组,调用Influxdb聚合函数derivative()计算速率,然后调用Influxdb聚合函数mean()计算平均值,最终查询结果包括:SFC的名称、SFC的位置、Pod的名称、内存利用率,保存于内存状态列表memList中,memList的每项元素是四个域,即SFC的名称sfc、SFC的位置sfcIndex、Pod的名称sfc、内存利用率mem,memListLen为memList列表长度;

3.5.5.2若memListLen1,转3.5.9,否则转3.5.5.3;

3.5.5.3令memList序号u=1;

3.5.5.4获得memList的第u项为memItem[u],将变量perfIndex的memItem[u]“键”的Mem域“值”更新为memItem[u]的mem域;

3.5.5.5若umemListLen,令u=u+1,转3.5.5.4,否则转3.5.6;

3.5.6“业务-性能”模型建立模块更新业务监控指标指示器vnfIndex,方法是:

3.5.6.1调用influxdb接口查询时序数据库中的detail_count表,获取表中timeOffset秒内的查询结果,同时将查询结果以SFC名称与Pod分组,调用Influxdb聚合函数derivatice()计算速率,然后调用Influxdb聚合函数mean()计算平均值,最终查询结果包括SFC名称、Pod名称、业务处理速率,保存在业务处理状态列表vnfList中,vnfList的每项元素包括三个域,即SFC的名称sfc、Pod的名称pod、业务处理速率bpRate,vnfListLen为vnfList列表长度;

3.5.6.2若vnfListLen1,转3.5.9,否则转3.5.6.3

3.5.6.3令vnfList序号v=1;

3.5.6.4获得vnfList的第v项为vnfItem[v],将vnfItem[v]的sfc域、pod域分别存入vnfIndex“键”的SFC域与Pod域,vnfItem[x]的bpRate域存入vnfIndex“值”域;

3.5.6.5若vvnfListLen,令v=v+1,转3.5.6.4,否则转3.5.7.

3.5.7资源分配方案生成模块发现超域值警告,更新资源分配方案resDis,方法是:

3.5.7.1令性能监控指标指示变量perfIndex序号为w=1;

3.5.7.2若性能监控指标指示变量的第w项perfIndexItem[w]的“值”的CPU域超过cpuTSD,转3.5.7.3,否则转3.5.7.4;

3.5.7.3记录perfIndexItem[w]的“值”的CPU域为tsdCPU;将perfIndexItem[w]的“键”删除“SFC位置”字符串后,记为pod_tsdCPU,从perfIndex中找出可以平衡CPU资源的Pod,方法是:

3.5.7.3.1令perfIndex的序号w1=1,令CPU域值比较变量minCPU=1.0*106

3.5.7.3.2若perfIndexItem[w]的SFC域等于perfIndex[w1]的SFC域,且perfIndexItem[w]的SFCIndex域小于perfIndex[w1]的SFCIndex域,且minCPU小于perfIndex[w1]的CPU域,转3.5.7.3.3,否则转3.5.7.3.4;

3.5.7.3.3令minCPU=perfIndex[w1]的cpu域,将perfIndex[w1]的“键”删除“SFC位置”字符串后,记为pod_minCPU;

3.5.7.3.4若w1perfIndexLen,令w1=w1+1,转3.5.7.3.2,否则转3.5.7.3.5;

3.5.7.3.5若minCPU不等于1.0*106,且minCPU小于cpuTSD,转步骤3.5.7.3.6,否则,转步骤3.5.10

3.5.7.3.6令待分配的CPU总量cpuSum=tsdCPU+minCPU;

3.5.7.3.7取出列表vnfIndex中“键”为pod_tsdCPU的项,令tsdCPUVNF为该项的“值”;

3.5.7.3.8取出列表vnfIndex中“键”为pod_minCPU的项,令minCPUVNF为该项的“值”;

3.5.7.3.9更新resDis变量的pod_tsdCPU“键”对应“值”的CPU域为

3.5.7.3.10更新resDis变量的pod_minCPU“键”对应“值”的CPU域为

3.5.7.4若perfIndexItem[w]的“值”的Mem域超过memTSD,转3.5.7.5,否则,转3.5.7.6;

3.5.7.5记录perfIndexItem[w]的“值”的Mem域为tsdMem;perfIndexItem[w]的“键”删除“SFC位置”字符串后,记为pod_tsdMem,从变量perfIndex中找出可以平衡内存资源的Pod,方法是;

3.5.7.5.1令perfIndex的序号w2=1,内存域值比较变量minMem=1.0*106

3.5.7.5.2若perfIndexItem[w]的SFC域等于perfIndex[w2]的SFC域,且perfIndexItem[w]的SFCIndex域小于perfIndex[w2]的SFCIndex域,且minMem小于perfIndex[w2]的Mem域,转3.5.7.5.3,否则转3.5.7.5.4;

3.5.7.5.3令minMem=perfIndex[w2]的Mem域,将perfIndex[w2]的“键”删除“SFC位置”字符串后,记为pod_minMem;

3.5.7.5.4若w2perfIndexLen,令w2=w2+1,转3.5.7.5.2,否则转3.5.7.5.5;

3.5.7.5.5若minMem不等于1.0*106,且minMem小于memTSD,转3.5.7.5.6,否则,转步骤3.5.10;

3.5.7.5.6令待分配的内存总量memSum=tsdMem+minMem;

3.5.7.5.7取出列表vnfIndex中“键”为pod_tsdMem的项,令tsdMemVNF为该项的“值”;

3.5.7.5.8取出列表vnfIndex中“键”为pod_minMem的项,令minMemVNF为该项的“值”;

3.5.7.5.9更新resDis变量的pod_tsdMem“键”对应“值”的mem域为

3.5.7.5.10更新resDis变量的pod_minMem“键”对应“值”的mem域为

3.5.7.6若wperfIndexLen,令w=w+1,转3.5.7.2,否则,转3.5.8;

3.5.8资源分配方案生成模块输出资源分配方案resDis,方法是:

3.5.8.1令resDis中的项的序号z=1;

3.5.8.2获得resDis的第z项resDisItem[z],向用户输出resDisItem[z]的“键”与“值”;

3.5.8.3若zresDisLen,z=z+1,转3.5.8.2,否则转3.5.9;

3.5.9记录当前系统时间t4,若t4-t3≥searchInterval,转3.5.2,否则,转3.5.9;

3.5.10输出“原有资源不够,无法在Pod之间分配,需要在SFC上增加新的资源”,结束。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110347584.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top