虚拟网络映射算法的节点、链路映射一般过程

映射过程

1
2
3
4
5
6
7
8
9
for(request:requestList){
映射成功标记 flag
① flag = 节点映射结果
if(falg) 节点资源分配 执行②部分
else 本组request映射失败
② flag = 链路映射结果
if(falg) 链路资源分配
else 本组request映射失败
}

节点映射过程

1
2
3
4
5
6
7
8
9
10
11
12
13

排序物理网络、网络请求的节点;//每一次按改进的H值(加入负载均衡系数后)对物理网络进行排序
for( vn_node : vn_nodes){//对每一个排序后的虚拟节点
for(遍历物理节点){
if(物理节点节点剩余CPU > 虚拟节点CPU需求){
存储映射结果,跳出for循环,映射下一个节点
}
if(物理节点遍历结束){
映射失败,返回false
}
}
}
节点映射成功,分配物理节点资源

链路映射过程

1
2
3
4
5
6
7
8
9
10
11
12

for(vn_link :vn_links){//对每一个request的链路请求
取出链路需求带宽,起、止节点id
根据起止节点id(from,to)查找最短路径 floyd
if(finded){
//找到链路后验证带宽
if(链路需求带宽 > 物理链路剩余带宽) 映射失败;
else 将这一条链路加入resultLinks(链路映射最终结果)
}else{
return false;//链路不通,映射失败
}
}