Bcube是SIGCOMM2009提出的一种云计算数据中心网络拓扑结构,虽然说目前业界使用的DCN拓扑结构仍然以树形结构为主,但这丝毫不能影响Bcube在学术界地位,如果你做的工作只能适用于clos型结构,必然就会有人那Bcube来质疑你。
Bcube是以服务器作为交换核心,整个结构采用递归定义,结构虽然工整但是比较复杂。因此对交换机归类就对我们研究网络自配置有一定的意义(其他方面的意义还没有深入思考过)。
对Bcube switch的归类,我们打算采用基于层次的划分,虽然在拓扑图上看switch的层次明显,但是在只有拓扑邻接矩阵和节点设备类型作为输入的情况下,也并不是很容易。经过研究,我们基于以下规律设计拓扑层次划分算法:处于同一层次的switch所连接的server是没有交集的。因此我们的算法设计如下:
将所有server和switch节点装入两个链表中(serverlist,switchlist),从switch中取出一个节点,然后在serverlist中找出与这个switch相连的节点,把一个标志位置为1,然后再取出别的switch节点,当所有serverlist中的节点标志位都为1的时候,把switchlist里剩的元素的layer都加1,然后在把所有server的标志位置回0,重新开始这个过程,知道switchlist为空。当然在这个过程中肯定会出现回溯。所以在实现上我采用了递归的方法,整个算法过程有点类似于打印数字全排列。具体的代码如下:
public class BcubeLayer {
public static List<Node> switches = new LinkedList<Node>();
public static List<Node> server = new LinkedList<Node>();
/////////////////////////初始化,把配置文件的信息读进来/////////////////////////
public static void init(String properties){
Properties prop = new Properties();
InputStream inStream = null;
try {
inStream = new FileInputStream(properties);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
prop.load(inStream);
} catch (IOException e) {
e.printStackTrace();
}
Enumeration enums = prop.keys();
while (enums.hasMoreElements()) {
String key = (String) enums.nextElement();
PropReading pr = new PropReading();
if(pr.BcubeLeaf(key)==true){
// System.out.println(key);
Node n = new Node();
n.layer=0;
n.number=key;
n.type=0;
n.state=0;
n.relation=pr.GetRelationship(key, properties);
server.add(n);
}else{
System.out.println(key);
Node n = new Node();
n.layer=0;
n.number=key;
n.type=1;
n.state=0;
n.relation=pr.GetRelationship(key, properties);
switches.add(n);
}
}
for(int i = 0 ; i < switches.size() ; i++){
switches.get(i).show();
}
System.out.println("..........................");
for(int i = 0 ; i < server.size() ; i++){
server.get(i).show();
}
System.out.println("..........................");
}
///////////////////////分层////////////////////////////
public static void layer(){
//server list变成空,同属于某一层的switch被找到
int flag = 0;
for(int i = 0 ; i < server.size(); i++){
if(server.get(i).state==0){
flag=1;
break;
}
}
System.out.println(flag+"=============");
if(flag == 0){
for(int i = 0 ; i < switches.size(); i++){
if(switches.get(i).state==1){
switches.get(i).layer++;
}
}
for(int i = 0 ; i < server.size() ; i++){
server.get(i).state = 0;
}
}
//switch list变成空,算法结束
int flag2 = 0;
for(int i = 0 ; i < switches.size() ; i++){
if(switches.get(i).state == 0){
flag2=1;
break;
}
}
System.out.println(flag2+"........");
if(flag2 == 0){return;}
for(int i = 0 ; i < switches.size() ; i++){
if(switches.get(i).state==0&&switches.get(i).layer==0){
//System.out.println(switches.get(i).number);
List<Integer> relateserver = new LinkedList<Integer>();
int flag3 = 0;
for(int m = 0; m<switches.get(i).relation.size();m++)
for(int j = 0; j<server.size() ; j++){
if(switches.get(i).relation.get(m).equals(server.get(j).number) && server.get(j).state==0){
relateserver.add(j);
}else if(switches.get(i).relation.get(m).equals(server.get(j).number) && server.get(j).state!=0){
flag3=1;
break;
}
}
if(flag3==0){
for(int n = 0 ; n < relateserver.size() ; n++){
server.get(relateserver.get(n)).state = 1;
}
switches.get(i).state=1;
layer();
switches.get(i).state=0;
}
}
}
}
public static void main(String args[]){
init("bcube-test'.properties");
layer();
for(int i = 0 ; i < switches.size() ; i++){
switches.get(i).show();
}
for(int i = 0 ; i < server.size() ; i++){
server.get(i).show();
}
}
}
- 大小: 70.4 KB
分享到:
相关推荐
基于拓扑势节点加权的节点重要性评估方法,于少然,胡绍海,基于拓扑势的节点重要性评价算法可以更好的反映出节点之间的相互依赖关系,从网络拓扑结构全局来分析节点的重要性。但不足之处在
在数据中心网络(DCN)中,为了实现BCube拓扑与基于环的应用的对接,利用互连网络与组合数学的知识,研究了在BCube中嵌入环(ring)结构的问题,提出了基于最小异维环组和递归化的算法。该算法找到了BCube(n,k)(n为...
网络拓扑结构的规划设计原则 网络拓扑结构设计主要是确定各种设备以什么方式相互连接起来。根据中小企业的网络规模,网络体系结构、所采用的协议,扩展和升级管理等各个方面因素来考虑。拓扑结构的设计直接影响到...
无线传感器网络实验 五种网络拓扑结构的生成:总线型,星型,网状,树型,环型 语言:MATLAB+Python
针对已有重叠社区检测通常只考虑节点的拓扑结构信息,忽略了节点的属性信息,导致数据间的重要结构遗漏的问题,提出了一种基于节点拓扑结构和属性相似度的重叠社区检测算法。首先,基于余弦相似度计算候选节点和局部...
技术资料,关于机器人结构 拓扑 结构学,机器人结构理论
而现有的超节点拓扑结构及其动态维护机制和搜索路由机制存在维护复杂或查询产生信息多的缺陷。针对这些问题,提出一种新颖的层次完美差异图HPDG(k)拓扑结构,建立了一种超节点网络HPDGN,给出了HPDGN的路由和动态...
中高压变频器的主要拓扑结构及控制方法rar,中高压变频器的主要拓扑结构及控制方法:介绍了比较常用的各种PWM控制疗法,井对其进行了详细地分析和比较。
为了实现工控网络组态的拓扑结构到二维平面的无交叉映射显示,从自主可控PLC的网络拓扑出发,提出按照广度优先生成树的高度对拓扑结构进行分层,根据层次的划分,每个界面只显示该层组态界面信息,简化了组态画面的...
文章《基于二阶锥规划凸松弛的三相交直流混合主动配电网最优潮流》所测试的IEEE-13节点系统详细说明。
这个是介绍逆变器拓扑结构的资料,网上很少能查到这个逆变器的拓扑结构的
SDN虚实网络拓扑中真实节点定位方法,刘力,邹华,基于新兴的SDN网络技术,本文将Mininet虚拟网络与Openvswitch真实交换机融合,搭建一个SDN虚实网络环境,以同时满足网络大规模和真实性的
局域网设计方案网络拓扑结构图设计思路拓扑结构
echart拓扑图单节点拖拽.zip
大型图书馆一般性网络拓扑结构图,大型图书馆一般性网络拓扑结构图,大型图书馆一般性网络拓扑结构图
智能电力监控系统的网络拓扑结构设计.文章以智能电力监控系统的三层网络拓扑结构为核心,分析了网络拓扑结构的选配原则,流行的选配方案,以及网络管理子系统的重要性。
针对非结构化P2P网络中资源搜索算法搜索效率低、冗余消息量过多等问题,结合非结构化P2P网络拓扑结构特点,提出一种基于节点兴趣的完全二叉树(CBT-BI)非结构化P2P覆盖网络拓扑结构。在兴趣相似度高的节点之间建立...
在研究拓扑约束时,我们可以将电路中的元件用线段代替,画成一些由线段组成的图,如图1(a)中的电路图画成为图1(b)的拓扑图。 我们称图1(b)为图(a)所示电路的图,图中的各线段称为支路,线段的连接点称为节点。因此,...
电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf电源拓扑结构图.pdf
基于节点拓扑结构变化的路由算法,刘锐,李方敏,本文在AODV的基础上提出了一种考虑节点的网络拓扑结构变化的路由算法NTAODV。NTAODV路由算法通过引入抑制因子、设计新的路由判据和权��