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
分享到:
相关推荐
本文将详细介绍十种常见的数据中心网络拓扑结构,包括传统的三层拓扑、分支-主干拓扑、多级分支-主干拓扑、超立方体拓扑、环形拓扑、水母拓扑、Scafida拓扑、DCell拓扑、FiConn拓扑、BCube拓扑和CamCube拓扑等。...
本文介绍的是一种基于网络拓扑结构的节点重要性评估方法。这种方法着重考虑节点之间的相互依赖关系和节点在全局网络中的位置重要性。通过对网络中节点的拓扑势进行分析,旨在从宏观角度评估节点的重要性。 二、网络...
2. **星型网络拓扑**:星型拓扑是最常见的局域网结构,每个设备都直接连接到中心节点,通常是路由器或交换机。MATLAB和Python中,可以创建多个节点,并用直线连接每个节点到中心节点,模拟星型网络的布局。 3. **...
树型拓扑结构是一种分层式网络,每个节点都可以作为中心节点,下一级节点与之相连。这种拓扑结构的优点是结构灵活、易于维护、网络可扩展性强。但是,它也存在一些缺点,如中心节点的故障将影响整个网络,且网络的...
网络拓扑结构的规划设计原则 网络拓扑结构设计主要是确定各种设备以什么方式相互连接起来。根据中小企业的网络规模,网络体系结构、所采用的协议,扩展和升级管理等各个方面因素来考虑。拓扑结构的设计直接影响到...
星状网拓扑结构是指每个节点都与中心节点相连,而中心节点又与所有其他节点相连的网络结构。这种结构的优点是结构简单、易于故障诊断和隔离、集中管理、方便服务。但是,星状网拓扑结构也存在一些缺点,如布线困难、...
常见的局域网拓扑结构有总线拓扑结构、星型拓扑结构、环形拓扑结构、树型拓扑结构、网状拓扑结构、混合型拓扑结构和蜂窝拓扑结构等。 1. 总线拓扑结构 总线拓扑结构是将网络中的所有设备通过相应的硬件接口直接...
在计算机网络领域,拓扑结构是指网络中各个节点和连接这些节点的通信线路的几何布局。不同的网络拓扑结构有着各自的特性和应用场景。这里,我们重点探讨的是五种基本的网络拓扑结构:总线型、星型、网状、树型和环型...
星型拓扑结构是一种常见的网络组织形式,其核心在于所有终端设备都通过独立的连接线路与一个中心节点相连。这一中心节点通常扮演着文件服务器或者网络连接设备的角色,如集线器或交换机。这种结构的主要优势体现在...
在本项目中,我们关注的是如何使用ECharts库创建一个具有单个节点拖放功能的拓扑图。ECharts是一款由百度开发的基于JavaScript的数据可视化库,它支持丰富的图表类型,包括柱状图、折线图、饼图以及拓扑图等。在...
目前,混合型网络拓扑结构已经基本上不再使用,而是采用分层星型(也就是树型结构)结构,因为在一般的20层以内的楼中,100米的双绞线就可以满足。如果距离过远,如高楼层,或者多建筑物之间的网络互联,则可以用...
校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计校园网络拓扑结构设计...
【基于工控网络拓扑结构的可视化分层方法】 随着自动化技术的发展,可编程逻辑控制器(PLC)的自主可控性不断提升,相应的组态软件也在不断进化,为工业控制系统提供了强大的监控和配置能力。在这样的背景下,工控...
本文将深入探讨网络游戏在片上网络环境下的任务与节点间映射方案以及拓扑结构设计方法。 一、任务与节点间映射方案 任务与节点间的映射方案是优化片上网络性能的关键步骤。映射是指将网络游戏中的计算任务分配到...
点对点连接是最简单的拓扑结构,允许两节点之间直接通讯。在这里一般是一个存储设备和一台服务器。这种拓扑结构与 SCSI 直接连接极为相似只是速度更快连接距离更长已。点对点连接与其他 SAN 拓扑结构一样可以从光学...
4. 树形拓扑:这是一种层次化的拓扑结构,多个星型网络通过上层的中心节点连接。适用于大型组织,便于管理,但任何上层节点故障会影响下层所有设备。 5. 网状拓扑:每个设备都可以与其他多个设备直接连接,提供了...