本发明涉及计算机网络技术领域,特别涉及基于强化学习的sdn多级虚拟网络映射方法和装置。
背景技术:
随着云计算、物联网、5g的迅猛发展,传统的ip架构网络越来越难以部署新的网络技术和网络协议,无法满足新业务的发展需求。软件定义网络(softwaredefinednetwork,sdn)和网络虚拟化(networkvirtualization,nv)技术的结合,被认为是克服当前网络僵化问题和促进未来网络创新的有效途径。sdn是一种集中控制的新型网络架构,其核心技术openflow通过将网络设备的控制面与数据面分离开来,并将控制平面逻辑集中,从而实现了网络流量的灵活控制,使网络控制平面对网络数据平面有了一个更加宏观全面的视野,克服了传统分布式网络的不足。网络虚拟化则将虚拟化思想引入网络,允许在同一个物理网络环境中构建和运行多个虚拟网络。在网络虚拟化环境中,传统的因特网络服务提供商(internetserviceprovider,isp)被划分为负责管理、维护基础设施的基础设施提供商(infrastructureprovider,inp)和负责从inp处租赁资源构建网络并定制架构与协议的服务提供商(serviceprovider,sp),最终由sp向终端用户提供个性化的网络服务。实现网络虚拟化的核心在于将基于软件的虚拟网络与基于硬件的物理网络进行解耦合,所以在sdn架构的网络中更容易实现网络虚拟化。
网络虚拟化面临的一个关键问题是底层网络应该如何为多个带有拓扑和资源约束条件的虚拟网络请求分配资源,这个问题被称为虚拟网络映射问题(virtualnetworkembedding,vne)。vne问题包括虚拟节点的映射和虚拟链路的映射,通常一个虚拟网络请求中的每个虚拟节点会被映射到不同的物理节点上,每条虚拟链路会被映射到由一条或多条物理链路构成的物理路径上。目前有许多研究者提出了相应的vne算法,其中一种求解方式为精确式求解。然而该种求解方式只考虑了虚拟网络到物理网络的单级映射场景,无法直接适用于多级虚拟网络映射场景。主要原因在于:
基于精确式求解的虚拟网络映射算法需要建立数学规划模型,而多级虚拟网络映射场景更为复杂,如果每一级映射都通过建立数学规划模型求解将会是一个非常耗时的操作。而在多级虚拟网络映射问题中,除了存在虚拟网络到物理网络的映射,还存在上层虚拟网络到底层虚拟网络的映射,所以底层网络的多样性要求虚拟网络映射算法拥有更高的灵活性。但是如果直接使用精确式求解的虚拟网络映射算法依次求解各个层级的映射,那么当上层虚拟网络请求的资源无法被满足时将会被直接拒绝,这将大大降低算法的灵活性以及请求接受率。
技术实现要素:
本发明的目的是提出基于强化学习的sdn多级虚拟网络映射方法和装置,以解决上述技术问题。
为实现上述目的,本发明提供了如下方案:
本发明实施例的第一个方面,提供了基于强化学习的sdn多级虚拟网络映射方法,包括如下步骤:
建立强化学习映射模型并进行训练;
对于当前底层虚拟网络请求,获取物理网络当前的资源状态信息并输入所述强化学习映射模型,进行底层节点映射策略求解,完成底层虚拟节点映射;进行底层虚拟链路映射求解,完成底层虚拟链路映射;
对于当前上层虚拟网络请求,获取底层虚拟网络当前的资源状态信息并输入所述强化学习映射模型,依次进行上层虚拟节点的映射求解;
对于每个上层虚拟节点,判断是否映射成功,是,则继续下一个上层虚拟节点的映射求解,直到完成当前上层虚拟网络的所有上层虚拟节点的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整;
依次进行上层虚拟链路的映射求解,对于每条上层虚拟链路,判断是否映射成功,是,则继续下一条上层虚拟链路的映射求解,直到完成当前上层虚拟网络的所有上层虚拟链路的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整。
可选的,建立强化学习映射模型并进行训练之前还包括步骤:
获取底层网络的资源拓扑信息和虚拟网络请求信息,并进行量化处理;
其中,底层虚拟网络包括物理网络或者底层虚拟网络,当映射底层虚拟网络请求时,底层网络为物理网络;当映射上层虚拟网络请求时,底层网络为指定的底层虚拟网络;
将底层网络的资源拓扑信息表示为一带权无向图
将虚拟网络的资源拓扑信息表示为另一带权无向图
将虚拟网络请求信息表示为一个三元组v(gv,ta,td),其中ta为虚拟网络请求到达的时刻,td为虚拟网络请求的持续服务时间。
可选的,建立强化学习映射模型并进行训练,包括:
构建环境状态矩阵:综合当前底层网络的各个节点的资源属性和拓扑属性构建多个节点向量,并将多个所述节点向量组合成一个环境状态矩阵来表示当前所述底层网络的状态信息;
构建映射策略网络:建立包括输入层、卷积层、softmax层、筛选层和输出层的映射策略网络;通过输入层读取环境状态矩阵;通过卷积层对输入层的数据进行卷积计算,输出底层网络中的每一个节点对于待映射虚拟节点的合适程度;通过softmax层将卷积层的输出结果转换成一组概率值;通过筛选层筛选出资源满足需求且尚未被占用的节点;通过输出层输出每个节点被映射的概率值;
训练映射策略网络:以底层网络的资源拓扑信息和虚拟网络请求信息以及环境状态矩阵作为输入的训练数据,训练映射策略网络。
可选的,构建环境状态矩阵,包括:
将节点向量表示成一个7维向量veci:
其中,
其中,
对
将当前底层网络的节点向量组合得到一个环境状态矩阵m:
m=(vec1,vec2,vec3,…,vecm)t。
可选的,通过卷积层对输入层的数据进行卷积计算包括:按照下式计算底层网络的第i个节点在卷积层的输出结果yi:
其中,w是卷积核的权重向量,b是卷积核的偏置项;
通过softmax层将卷积层的输出结果转换成一组概率值,包括按照下式进行转换:
计算底层网络的第i个节点的概率值pi:
通过筛选层筛选出资源满足需求且尚未被占用的节点,包括按照下述方式筛选:
其中,
通过输出层输出每个节点被映射的概率值,包括输出如下的概率分布向量:
p=(p1,p2,p3,…,pm)。
可选的,训练映射策略网络,还包括:
基于蒙特卡洛强化学习方法,对已得出的一组节点映射方案和链路映射方案,通过如下函数计算长期累积奖赏值:
将得出的长期累积奖赏值反馈给映射策略网络;
和/或,该步骤还包括:
设置采样次数numsample和学习速率α,具体的取值需要人为调参,优选地,可将采样次数设为numsample=120,学习速率α=0.1;基于当前的映射策略网络进行采样,获得当前虚拟网络请求的所有节点映射方案和链路映射方案,计算奖赏值对所述映射策略网络中的卷积核的权重向量w和卷积核的偏置项b这两类参数自动进行梯度更新,下一次采样数据将基于更新参数(即w和b)后的所述映射策略网络得到,如此往复,直到所有的采样次数完成。
可选的,运行动态协同映射策略、对底层虚拟网络的映射进行动态调整,包括节点映射动态调整和链路映射动态调整;
节点映射动态调整包括:
更新上层虚拟节点所选择的底层虚拟节点的资源需求,并向物理网络重新提交资源申请;判断被底层虚拟节点映射的原物理节点是否满足资源需求,是,则直接为底层虚拟节点分配资源,并接受上层虚拟节点的映射;否,则将按照下述步骤进行调整:判断原物理节点预设范围内是否存在满足资源需求的备选物理节点,是,则将底层虚拟节点从原物理节点迁移到满足资源需求的备选物理节点上,并重映射该底层虚拟节点的所有相邻底层虚拟链路;否,则重新进行底层虚拟网络和物理网络之间的节点映射;
和/或,链路映射动态调整包括:
在上层虚拟链路的映射阶段,对于每条待映射的上层虚拟链路,首先使用k最短路径算法进行求解,判断是否映射成功,是,则继续下一条上层虚拟链路的映射求解;否,则触发底层虚拟链路的动态调整机制,具体调整如下:根据上层待映射链路的带宽资源需求,更新底层虚拟网络中每一条底层虚拟链路的带宽资源需求,并向物理网络重新提交资源申请;判断被底层虚拟链路映射的物理链路是否满足更新后的带宽资源需求,是,则直接为底层虚拟链路分配带宽资源,并接受上层虚拟链路的映射;否,则按照以下步骤进行调整:
判断底层虚拟链路所映射的原物理链路预设范围内是否存在满足更新后的带宽资源需求的备选物理链路,是,则将底层虚拟链路从所映射的原物理链路迁移到满足更新后的带宽资源需求的备选物理链路上;否,则重新进行底层虚拟网络和物理网络之间的节点和链路映射。
本发明实施例的第二个方面,还提供一种基于强化学习的sdn多级虚拟网络映射装置,包括强化学习模块、底层映射模块、上层映射模块和动态调整模块;
强化学习模块,用于建立强化学习映射模型并进行训练;
底层映射模块,用于对当前底层虚拟网络请求,获取物理网络当前的资源状态信息并输入强化学习映射模型,进行底层节点映射策略求解,完成底层节点映射;进行底层链路映射求解,完成底层链路映射;
上层映射模块,用于对当前上层虚拟网络请求,获取底层虚拟网络当前的资源状态信息并输入强化学习映射模型,依次进行上层虚拟节点的映射求解;还用于在所属于当前上层虚拟网络的所有上层虚拟节点都被成功映射后,依次进行上层虚拟链路的映射求解;优选地,可采用k最短路径算法进行上层虚拟链路的映射求解。
动态调整模块,用于对于每个上层虚拟节点,判断是否映射成功,是,则继续下一个上层虚拟节点的映射求解,直到完成当前上层虚拟网络的所有上层虚拟节点的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整;
还用于对于每条上层虚拟链路,判断是否映射成功,是,则继续下一条上层虚拟链路的映射求解,直到完成当前上层虚拟网络的所有上层虚拟链路的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整。
可选的,强化学习模块包括环境矩阵单元、映射策略网络单元和训练单元;
环境矩阵单元,用于构建环境状态矩阵:综合当前底层网络的各个节点的资源属性和拓扑属性构建多个节点向量,并将多个节点向量组合成一个环境状态矩阵来表示当前所述底层网络的状态信息;
映射策略网络单元,用于构建映射策略网络:建立包括输入层、卷积层、softmax层、筛选层和输出层的映射策略网络;通过输入层读取环境状态矩阵;通过卷积层对输入层的数据进行卷积计算,输出底层网络中的每一个节点对于待映射虚拟节点的合适程度;通过softmax层将卷积层的输出结果转换成一组概率值;通过筛选层筛选出资源满足需求且尚未被占用的节点;通过输出层输出每个节点被映射的概率值;
训练单元,用于训练映射策略网络:以底层网络的资源拓扑信息和虚拟网络请求信息以及环境状态矩阵作为输入的训练数据,训练映射策略网络。
可选的,动态调整模块包括节点映射动态调整单元和链路映射动态调整单元;
节点映射动态调整单元,用于:更新上层虚拟节点所选择的底层虚拟节点的资源需求,并向物理网络重新提交资源申请;判断被底层虚拟节点映射的原物理节点是否满足资源需求,是,则直接为底层虚拟节点分配资源,并接受上层虚拟节点的映射;否,则将按照下述步骤进行调整:判断原物理节点预设范围内是否存在满足资源需求的备选物理节点,是,则将底层虚拟节点从原物理节点迁移到满足资源需求的备选物理节点上,并重映射底层虚拟节点的所有相邻底层虚拟链路;否,则重新进行底层虚拟网络和物理网络之间的映射;
链路映射动态调整单元,用于在上层虚拟链路的映射阶段,对于每条待映射的上层虚拟链路,首先使用k最短路径算法进行求解,判断是否映射成功,是,则继续下一条上层虚拟链路的映射求解;否,则触发底层虚拟链路的动态调整机制,具体调整如下:根据上层待映射链路的带宽资源需求,更新底层虚拟网络中每一条底层虚拟链路的带宽资源需求,并向物理网络重新提交资源申请;判断被底层虚拟链路映射的物理链路是否满足更新后的带宽资源需求,是,则直接为底层虚拟链路分配带宽资源,并接受上层虚拟链路的映射;否,则按照以下步骤进行调整:
判断底层虚拟链路所映射的原物理链路预设范围内是否存在满足所述更新后的带宽资源需求的备选物理链路,是,则将底层虚拟链路从所映射的原物理链路迁移到满足更新后的带宽资源需求的备选物理链路上;否,则重新进行底层虚拟网络和所述物理网络之间的节点和链路映射。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明公开的基于强化学习的sdn多级虚拟网络映射方法和装置,基于强化学习模型进行节点映射求解,并且对于底层虚拟网络请求和上层网络请求分别采用不同的应对策略,并且以最新的网络状态作为强化学习映射模型的输入来求解映射策略,当上层虚拟网络请求所需映射的底层虚拟网络资源不足而导致无法映射成功时,则触发动态协同映射策略,对底层虚拟网络的映射进行动态调整,避免了由于当前映射关系中底层虚拟网络资源不足而导致无法承载上层虚拟网络请求的局限性,灵活性更好,提升了对上层虚拟网络请求的接受率,能够适用于多层级虚拟映射要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1基于强化学习的sdn多级虚拟网络映射方法的流程示意图;
图2为本发明实施例2提供的基于强化学习的sdn多级虚拟网络映射方法的整体流程框架示意图;
图3为本发明实施例2中的强化学习映射模型的示意图;
图4为本发明实施例2中上层虚拟网络请求节点映射的流程示意图;
图5为本发明实施例2中上层虚拟网络请求链路映射的流程示意图;
图6为本发明多级虚拟映射的一个具体示例。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供了基于强化学习的sdn多级虚拟网络映射方法,如图1所示,该方法包括如下步骤:
步骤s100,建立强化学习映射模型并进行训练。
对于强化学习映射模型的训练过程可以包括预先训练和/或临时训练。预先训练即在该强化学习映射模型应用之前(处理实际的映射请求之前),预先以设定的或历史实际的映射请求数据和网络资源状态数据作为训练输入,对该强化学习映射模型进行反复训练,不断优化模型参数直到得到求解性能较佳的模型。
步骤s101,对于当前底层虚拟网络请求,获取物理网络当前的资源状态信息并输入强化学习映射模型,进行底层虚拟节点映射策略求解,完成底层虚拟节点映射;进行底层虚拟链路映射求解,完成底层虚拟链路映射。
资源状态信息,即用于建立映射所需的各种网络资源信息,包括但不限于网络的拓扑结构以及资源剩余情况。
通过强化学习映射模型进行节点映射策略求解。优选地,作为一种可实施方式,使用k最短路径算法依次进行底层虚拟链路映射求解。
在两级虚拟映射场景中,虚拟网络包括底层虚拟网络和上层虚拟网络。在本发明中,将底层虚拟网络映射到物理网络上的请求称为底层虚拟网络请求,将上层虚拟网络映射到底层虚拟网络上的请求称为上层虚拟网络请求。
并且,在本发明中,底层网络指在映射关系中相对处于下层的网络。在映射底层虚拟网络请求时,底层网络为物理网络,而在映射上层虚拟网络请求时,底层网络则指底层虚拟网络。底层虚拟节点为所属于底层虚拟网络的各个节点,上层虚拟节点即所属于上层虚拟网络的各个节点;底层虚拟链路则为所属于底层虚拟网络的各条链路;上层虚拟链路则为所属于上层虚拟网络的各条链路。
步骤s102,当底层虚拟网络请求映射成功后,对于上层虚拟网络请求,获取底层虚拟网络当前的资源状态信息并输入强化学习映射模型。
优选地,作为一种可实施方式,在接收到底层虚拟网络请求或者上层虚拟网络请求后,还进行强化学习映射模型的临时训练:将该底层/上层虚拟网络请求也作为模型输入,同物理网络/底层虚拟网络的当前资源状态信息一起作为强化学习映射模型的输入,对该模型进行临时训练,该临时训练过程中,模型在尝试得到不同的节点映射策略时不断优化模型参数,直到得到一种性能较佳的节点映射策略。临时训练会降低对于映射请求的响应速度,但求解出的映射策略的性能更优越。
在本发明实施例中,对于该强化学习模型的训练,可以包括三种实施方式:一种是仅进行预先训练,第二种是仅进行临时训练,第三种是应用前进行预先训练且应用中对于每一次映射请求再进行临时训练。第一种要求预先训练出的模型较为成熟,性能到达一定要求,由于不需要进行临时训练,该种方式响应速度较快;第二种会拖慢响应速度,但无需前期的预先训练过程,在对响应速度要求不高的场合较为适用;第三种方式训练出的模型求解出的映射策略最优,适用于对映射策略要求较高的场合。
步骤s103,通过强化学习模型依次进行上层虚拟节点的映射求解。
步骤s104,对于每个上层虚拟节点,判断是否映射成功,是,则继续执行步骤103,否,则进入步骤s107;直到当前上层虚拟网络中的所有上层虚拟节点都被成功映射。
步骤s105,依次进行上层虚拟链路的映射求解。
优选地,作为一种可实施方式,使用k最短路径算法依次进行上层虚拟链路的映射求解。
步骤s106,对于每条上层虚拟链路,判断是否映射成功,是,则继续步骤s105,直到所有当前上层虚拟网络的所有上层虚拟链路都被成功映射;否,则进入步骤s107。
步骤s107,运行动态协同映射策略,对底层虚拟网络的映射进行动态调整。如果是由s104跳转而来,则返回步骤s103继续完成原上层虚拟节点的映射并继续步骤s104;如果是由s106跳转而来,则返回步骤s105继续完成原上层虚拟链路的映射并继续步骤s106。
当由于资源不足问题,使得按照步骤s103和s105求解出的上层虚拟网络的节点和链路映射策略无法成功映射时,需要对底层虚拟网络和物理网络之间的映射进行调整,以增加上层虚拟网络请求的成功率。调整方式可包括通过增加网络资源、迁移节点和链路或者重新建立底层虚拟网络与物理网络之间的映射关系。
本发明实施例提供了一种高效灵活、可动态调整的sdn多级虚拟网络映射方法,以同时支持虚拟网络请求到底层物理网络以及上层虚拟网络请求到底层虚拟网络的映射求解,并提高上层请求接受率。
实施例2
本发明实施例2提供基于强化学习的sdn多级虚拟网络映射方法的一个优选实施例。
本发明实施例2提供的映射方法主体流程框架如图2所示。为了降低映射求解的复杂度,本发明采取了两级-两步映射思路,无论是处理底层虚拟网络请求还是上层虚拟网络请求,都会在完成了本层所有虚拟节点的映射求解之后才会进行本层虚拟链路的映射求解,具体包括下列步骤:
s200,对物理网络和虚拟网络请求信息进行抽象表示。
底层的物理网络可以表示成一个带权无向图
与底层的物理网络类似,虚拟网络也可以表示为一个带权无向图
s201,建立强化学习映射模型。
强化学习是一种通过代理与环境进行交互并从环境中取得反馈信息的交互式学习过程,它的主要特点就是试错和延迟奖赏。代理通过观察环境状态给出动作,环境执行动作后向代理反馈动作奖赏,奖赏是模型争取的目标。强化学习针对一系列变化的环境状态输出一系列对应的动作,可以用于解决连续决策问题。
在本发明实施例中,将虚拟节点映射抽象为一个马尔可夫决策过程,并建立了一个强化学习映射模型mlrl-model,来为每一个虚拟网络请求学习一个在当前底层网络的实时资源状况下的最优节点映射策略,从而克服现有方法在整个映射过程中策略单一、缺乏灵活性的问题。
本发明对基础的强化学习模型进行了改进,得到了如图3所示的mlrl-model。当映射底层虚拟网络请求时该模型中的底层网络为物理网络,当映射上层虚拟网络请求时该模型中的底层网络为底层虚拟网络,从而实现了对多级虚拟网络映射的支持。
具体地,作为一种可实施方式,强化学习模型的构建包括如下步骤:
s2010,构建环境状态矩阵。
随着虚拟网络请求的到达和离开,底层网络的资源状态会发生变化。由于强化学习中的代理每次都是基于环境的最新状态做出决策的,所以本发明需要定义底层网络的状态。考虑到与链路相比,节点在数量上要少得多而且拥有更多的拓扑属性,本发明综合节点的资源属性和拓扑属性定义了“节点向量”,并将所有节点的节点向量组合成一个矩阵来表示底层网络的状态,即状态矩阵。
在本发明实施例中,作为一种优选方案,一个底层节点
①剩余可用cpu资源
②剩余可用流表资源
③剩余可用队列存储资源
④所有相邻链路的剩余可用带宽资源和
⑤度中心性
其中,
⑥接近中心性
其中,dij表示以节点i为起点,j为终点的最短路径中所含边的数量,m为底层节点数量。
⑦中介中心性
其中gjk(i)表示节点j和k之间经过节点i的最短路径数量,gjk表示从节点j到节点k之间所有最短路径数量。
由于
最终底层节点
将所有节点向量组合起来就可以得到一个底层网络状态矩阵m,即:
m=(vec1,vec2,vec3,…,vecm)t
s2011,构建映射策略网络。
策略网络本质上是一个神经网络,它以某一个环境状态作为输入,通过前向传播最终输出在该环境状态下所有可执行动作的概率分布函数,在本发明中就对应于不同底层网络资源状态下某一虚拟节点到所有底层节点的可映射概率分布。从图3可以看出,本发明的映射策略网络包含了输入层、卷积层、softmax层、筛选层和输出层。
①输入层
输入层的作用为读取环境状态矩阵m。基于策略网络每映射完一个虚拟节点之后,都会预先占用其选择的底层节点的剩余可用cpu资源、流表资源和队列资源,同时为了保证该虚拟节点的相邻链路后续可以被成功映射,还会预先占用该虚拟节点映射到的底层节点的相邻链路带宽资源。可见,每映射一个虚拟节点,强化学习映射模型中的底层网络的资源状态都会发生变化,所以在映射下一个虚拟节点时,需要重新计算状态矩阵m并将其作为策略网络新的输入层数据。
②卷积层
该层的作用是对输入层的数据进行卷积计算,对于第i个底层节点,它在卷积层的输出结果yi的计算方式为:
其中,relu表示进行卷积运算,w是卷积核的权重向量,b是卷积核的偏置项,veci即第i个节点向量。这一层的输出结果表示每一个底层节点在综合考虑了自身的多个资源属性和拓扑属性之后对于待映射虚拟节点的合适程度。
③softmax层
卷积层的输出结果会被传递给softmax层进行转换,得到一组概率值。如果映射到某个底层节点上会导致最终虚拟网络请求映射成功且产生较高的奖赏值,则对应的概率值越大。对于第i个底层节点,它的概率值pi的计算方式为:
④筛选层
由于在虚拟网络映射问题中,同一个虚拟网络请求的任意两个虚拟节点都不能被映射到同一个底层节点上。所以,对于一个虚拟节点来说,策略网络需要筛选出能够满足其资源需求且尚未映射该虚拟网络中其他虚拟节点的底层节点,筛选方式为:
其中
⑤输出层
输出层输出如下的概率分布:
p=(p1,p2,p3,…,pm)
其中每一项都对应一个底层节点被选中的概率,如果映射到某个底层节点上的效果越好,那么这个概率值就越大。
s2012,训练映射策略网络。
mlrl-model中的代理需要通过在环境中不断地尝试而学得一个映射策略πθ(s,a),根据这个策略就能知道在当前底层网络资源状态下应该为当前待映射的虚拟节点选择哪一个底层节点。因此,映射策略的优劣取决于所有虚拟节点映射之后所得到的长期累积奖赏。
在本发明实施例中,强化学习任务的目标就是为了找到能够使这个长期累积奖赏最大化的策略。但是,在映射一个虚拟网络请求时,即使所有虚拟节点都通过策略网络找到了可映射的底层节点,这也并不意味着该虚拟网络请求整体可以被成功映射。所以,每执行完一个虚拟节点映射动作就计算奖赏值是没有意义的。因此本发明实施例基于蒙特卡洛强化学习方法,先通过映射策略网络得到一组完整的虚拟节点映射方案,然后再执行所有虚拟链路的映射,最后基于虚拟节点映射方案和虚拟链路映射方案计算最终的长期累积奖赏。
由于虚拟网络映射问题存在两个主要的求解目标:一是降低运营成本,二是提高运营收益,一个好的映射策略应该在这两个目标上达到比较好的效果,所以本发明定义了如下的奖赏函数:
其中,r为运营收益数据值,c为运营成本数据值。
因此,如果基于某个映射策略得到的映射方案可以产生更多的收益,同时付出更低的成本,那么该映射策略的效果就更好。当然,如果基于某个映射策略无法得到可行的映射方案,那么无穷小的奖赏值可以使得代理在下一次映射时尽量避免选择这个映射策略。
训练mlrl-model的映射策略网络的输入还包括待映射的虚拟网络请求信息以及处理该请求的底层网络的资源拓扑信息。此外,映射策略网络的训练还应涉及到2个模型参数:采样次数numsample、学习速率α。具体的取值需要人为调参,优选地,本发明实施例中,分别设numsample=120,α=0.1。具体的训练过程为,基于当前的映射策略网络进行采样获得待映射虚拟网络请求的所有节点的映射方案,然后通过尝试链路映射获得所有链路的映射方案,最后通过计算奖赏值对策略网络中的参数(包括卷积核的权重向量w和偏置项b)自动进行梯度更新,下一次采样数据将基于更新参数后的策略网络得到,如此往复,直到所有的采样次数完成,mlrl-model的训练过程结束。其中,采样数据包括:待映射虚拟网络请求的所有节点的映射方案和所有链路的映射方案。最终利用这两部分方案的数据计算出运营收益数据值以及运营成本数据值,进而计算奖赏函数,从而实现策略网络中参数的更新。
在本发明实施例中,优选地,应对底层虚拟网络请求和上层虚拟网络请求时,各自训练出一个强化学习映射模型。
s202,映射底层虚拟网络请求。
映射底层虚拟网络请求分为节点映射阶段和链路映射阶段。
在底层虚拟网络请求的虚拟节点映射阶段,接受底层虚拟网络请求映射的底层网络为物理网络。首先使用物理网络的资源拓扑信息和待映射的底层虚拟网络请求信息对mlrl-model进行训练。其中物理网络的资源拓扑信息,即步骤s200得出的物理网络的带权无向图;而底层虚拟网络请求信息,即步骤s200得出的三元组v(gv,ta,td)。
训练后得出该底层虚拟网络请求在当前底层网络状态下最优的节点映射策略,然后再执行这个映射策略完成底层虚拟网络请求中所有虚拟节点的映射求解。
在底层虚拟网络中的所有虚拟节点映射完成之后,接下来就是映射这些虚拟节点之间的虚拟链路。由于虚拟节点已经确定了将要被映射到哪些物理节点(即物理网络中的节点)上,所以虚拟链路映射阶段的求解过程就是在这些物理节点之间选择一条物理路径用于上层虚拟链路的映射。本发明选取了k最短路径算法(k=1)进行求解。
对于任意一条连接两个节点
s203,映射上层虚拟网络请求。
在应对上层虚拟网络请求的映射策略求解中,首先参照底层虚拟网络请求的映射策略,对应映射上层虚拟网络请求,当上层虚拟网络请求所需的资源不足时,算法将运行动态协同映射策略,以增加网络资源和迁移部分节点和链路为主、重映射整个网络为辅的原则对相应的底层虚拟网络请求进行动态调整,然后再次映射该上层虚拟网络请求。
接受上层虚拟网络请求映射的底层网络为底层虚拟网络。在节点映射阶段,同样是先训练一个mlrl-model,然后再基于训练后的模型继续求解,不过此时的底层网络不再是物理网络,而是其底层虚拟网络。如果所有节点都映射成功,那么将进入链路映射阶段,否则将对底层虚拟网络进行动态调整。如图4所示,具体调整过程如下:
(1)对于上层虚拟节点(即上层虚拟网络中的待映射节点)nv选择的底层虚拟节点(即底层虚拟网络中的节点)
其中符号c表示cpu资源,c(nv)表示nv申请的cpu资源,
(2)如果承载该虚拟节点的原物理节点能够满足其新的资源需求,那么直接为其分配资源,使其能够接受之前无法映射成功的上层虚拟节点;
(3)否则,将按照以下几个步骤进行调整:
①将该底层虚拟节点从原物理节点迁移到能够满足其新的资源需求的预设范围内的其他物理节点上。优选地,在本发明实施例中,该预设范围为原物理节点周围5跳范围内,5跳的限制是为了不破坏与原有的网络结构并减少资源占用。
②如果找到了满足条件的可映射物理节点,则对它进行迁移,并重映射它的所有相邻链路;否则,使用上述的底层虚拟网络请求映射算法重新映射它所属的虚拟网络。
在链路映射阶段,同样使用k最短路径算法(k=1)依次完成所有虚拟链路的映射求解。如果所有链路都映射成功,那么该上层虚拟网络请求在相应的底层虚拟网络上存在可行的映射方案,否则将触发底层虚拟网络的动态调整机制。如图5所示,具体调整过程如下:
(1)对于上层待映射链路lv,随机选取一条底层虚拟链路,更新其中每一条链路
其中
(2)如果承载该底层虚拟路径的物理链路能够满足其新的资源需求,那么直接为其分配新的资源,以满足上层虚拟链路的映射需求;
(3)否则将按照以下步骤进行调整:
①使用k最短路径算法将底层虚拟链路的每段链路都迁移到能够满足其新的资源需求的物理链路上,为了不破坏原有的网络结构以及减少资源占用,本发明仅允许将使用的k-最短路径算法中的k值设为5。
如果找到了满足条件的物理链路,则对它们进行迁移;否则,使用上述的底层虚拟网络请求映射算法重新映射该底层虚拟网络。
下面列举一个多级虚拟网络映射实例,对本发明的映射方法更加直观地加以说明,参见图6所示,底层物理网络是由7个黑色节点a-f构成。当vnr1到来时,一种可行的映射方案是:
节点映射为:{a1→a,b1→e,c1→f,d1→g,e1→c}
链路映射为:{(a1,e1)→(a,b,c),(d1,e1)→(g,c),(c1,e1)→(f,d,c),(b1,e1)→(e,d,c)}
此时vnr1就拥有了物理网络为它分配的网络资源。当vnr2到来时,指定的底层网络是刚刚映射成功的vnr1。从图6可以看出,底层物理网络和vnr1的拓扑结构存在很大的差别,在物理网络上的映射策略不一定适用于vnr1上的映射策略。所以,每当一个虚拟网络请求到达时,虚拟网络映射算法都应该根据相应底层网络最新的资源状况以及虚拟网络的拓扑结构和资源需求采用不同的映射策略,才能保证该虚拟网络请求可以被成功映射。
vnr2的一种可能的映射方案如下:
节点映射为:{a2→a1,b2→b1,c2→c1,d2→d1}
链路映射为:{(a2,b2)→(a1,e1,b1),(b2,c2)→(b1,e1,c1),(c2,d2)→(c1,e1,d1),(a2,d2)→(a1,e1,d1)}
由于vnr1中的节点d1无法满足vnr2中节点d2的资源需求,虚拟网络请求vnr2无法被成功映射。但是如果对vnr1进行调整,例如将d1从可用资源不足的物理节点g迁移到可用资源更多的物理节点b上,同时迁移其相邻链路(d1,e1),那么d1从物理节点b上申请更多的节点资源就可以满足d2的资源需求,最终使得vnr2可以在vnr1上映射成功。
实施例3
本发明实施例3提供了一种基于强化学习的sdn多级虚拟网络映射装置。该装置包括强化学习模块、底层映射模块、上层映射模块和动态调整模块。
强化学习模块,用于建立强化学习映射模型并进行训练;
底层映射模块,用于对当前底层虚拟网络请求,获取物理网络当前的资源状态信息并输入强化学习映射模型,进行底层节点映射策略求解,完成底层虚拟节点映射;进行底层虚拟链路映射求解,完成底层虚拟链路映射;
上层映射模块,用于对当前上层虚拟网络请求,获取底层虚拟网络当前的资源状态信息并输入所述强化学习映射模型,依次进行上层虚拟节点的映射求解,完成上层虚拟节点映射;优选地,上层映射模块在所有上层虚拟节点都被成功映射后,使用k最短路径算法进行上层虚拟链路的映射求解。
动态调整模块,用于对于每个上层虚拟节点,判断是否映射成功,是,则继续下一个上层虚拟节点的映射求解,直到完成当前上层虚拟网络的所有上层虚拟节点的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整;还用于对于每条上层虚拟链路,判断是否映射成功,是,则继续下一条上层虚拟链路的映射求解,直到完成当前上层虚拟网络的所有上层虚拟链路的映射;否,则运行动态协同映射策略,对底层虚拟网络的映射进行动态调整。
优选地,强化学习模块包括环境矩阵单元、映射策略网络单元和训练单元。
环境矩阵单元,用于构建环境状态矩阵:综合当前底层网络的各个节点的资源属性和拓扑属性构建多个节点向量,并将多个节点向量组合成一个环境状态矩阵来表示当前底层网络的状态信息。
映射策略网络单元,用于构建映射策略网络:建立包括输入层、卷积层、softmax层、筛选层和输出层的映射策略网络;通过输入层读取环境状态矩阵;通过卷积层对输入层的数据进行卷积计算,输出底层网络中的每一个节点对于待映射虚拟节点的合适程度;通过softmax层将卷积层的输出结果转换成一组概率值;通过筛选层筛选出资源满足需求且尚未被占用的节点;通过输出层输出每个节点被映射的概率值。
训练单元,用于训练映射策略网络:以底层网络的资源拓扑信息和虚拟网络请求信息以及环境状态矩阵作为输入的训练数据,训练映射策略网络。
优选地,动态调整模块包括节点映射动态调整单元和链路映射动态调整单元。
节点映射动态调整单元,用于:在上层虚拟节点映射阶段,对于每个待映射的上层虚拟节点,首先使用训练后的强化学习模型进行求解,判断是否成功,是,则继续下一个虚拟节点的映射求解;否,则触发底层虚拟节点的动态调整机制。
作为一种可实施方式,底层虚拟节点动态调整机制为:更新上层虚拟节点所选择的底层虚拟节点的资源需求,并向物理网络重新提交资源申请;判断被底层虚拟节点映射的原物理节点是否满足该资源需求,是,则直接为该底层虚拟节点分配资源,并接受上层虚拟节点的映射。
否,则将按照下述步骤进行调整:判断原物理节点预设范围内是否存在满足该资源需求的备选物理节点,是,则将该底层虚拟节点从原物理节点迁移到满足资源需求的备选物理节点上,并重映射该底层虚拟节点的所有相邻底层虚拟链路;否,则重新进行底层虚拟网络和物理网络之间的映射。
链路映射动态调整单元,用于:在上层虚拟链路映射阶段,对于每条待映射的上层虚拟链路,首先使用k最短路径算法进行求解,判断是否成功,是,则继续下一条虚拟链路的映射求解;否,则触发底层虚拟链路的动态调整机制。
作为一种可实施方式,底层虚拟链路动态调整机制为:根据待映射的上层虚拟链路的带宽资源需求,更新它所选择的某条底层虚拟路径中所有链路的带宽资源需求,并向物理网络重新提交更新后的资源申请;判断被该底层虚拟链路映射的物理链路是否满足更新后的带宽资源需求,是,则直接为该底层虚拟链路分配带宽资源,并接受对应的上层虚拟链路的映射;否,则按照以下步骤进行调整:
判断该底层虚拟链路所映射的原物理链路预设范围内是否存在满足更新后的带宽资源需求的备选物理链路,是,则将底层虚拟链路从所映射的原物理链路迁移到满足更新后的带宽资源需求的备选物理链路上;否,则重新进行底层虚拟网络和物理网络之间的节点和链路映射。
现有技术中的vne算法中,除精确式求解方式,还有启发式求解和元启发式求解方式,基于启发式和元启发式求解的虚拟网络映射算法通过牺牲一定的准确性来求解近似最优解,大大降低了算法的求解时间。但是,这些启发式算法为了协同虚拟节点的映射和虚拟链路映射这两个阶段,在进行虚拟节点映射时都会根据各自的评价指标对底层节点进行排名,然后根据排名选择合适的底层节点。但是,随着虚拟网络请求的到达和离开,底层网络的资源状况是一个动态变化的过程,而上述启发式算法在节点映射阶段针对所有虚拟网络请求往往采用一个通用性的策略,在映射过程中不会动态调整。在多级虚拟网络映射情形中,虚拟网络更为复杂、多样,在节点映射阶段对所有虚拟网络请求使用同样的策略就显得更加不合理了。
本发明提出的映射方案中,针对不同层级的映射请求设置对应的映射策略,适用于底层虚拟网络的映射请求,也适用于上层虚拟网络的映射请求;同时本发明的底层虚拟网络的映射方案则是可以动态调整的,当一个已经被物理网络成功接受的虚拟网络无法满足其上层虚拟网络请求的映射需求时,通过调整底层虚拟网络的映射方案可以使得这些上层请求被成功接受,从而提高了上层请求被接受的概率,实现了多级虚拟网络的有效映射。
并且,需要说明的是,本发明提供的映射方法并不仅限于两级映射,可能产生的更高层例如第3层虚拟网络的映射方案与本发明上层虚拟网络(即第2层虚拟网络)的映射方案雷同,本领域技术人员可根据本发明上述方案对应得到更高层虚拟网络的映射方案,本发明不一一列举,但都应属于本发明保护范围。
在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(dsl)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、dsl或诸如红外先、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本发明中应用了具体个例对发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。