紧接上一篇,本周的试验中,如何为Bcube拓扑结构生成一个邻接矩阵,收工输入显然是不现实的,虽然Bcube拓扑的节点规模不是很大,但是怎么说也有好几千个。然后我就想利用Bcube递归定义的特点来生成一个拓扑关系,但是没想出来。哪位大神有过类似的工作请联系我...再然后,我发现Bcube是一个规整的结构。可以推导出一个纯数学的公式,来算出节点间的拓扑关系,下面的代码以Bcube(4,3)为例。
Bcube中,server有1024个,switch分为4层,每层256个,一共也是1024个,每个switch都连接4个server。具体见下面的代码
public class BcubeBuilder {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception {
Server[] Allser = new Server[1024];
for(int i = 0 ; i < 1024 ; i++){
Server ser = new Server();
ser.name = i+"";
Allser[i] = ser;
}
Switches[] Allsw = new Switches[1024];
for(int i = 0 ; i < 1024 ; i++){
Switches sw = new Switches();
sw.name = i+"";
Allsw[i] = sw;
}
//第一层交换机
for(int i=0 ; i<1024 ; i++){
Allser[i].relate.add(i/4+"");
Allsw[i/4].related.add(i+"");
}
//第二层交换机(b1)
int ser = 0 , swit = 0;
while(ser<=1008){
for(int i = 0 ; i<16 ; i++){
Allser[ser+i].relate.add(256+swit+i%4+"");
Allsw[256+swit+i%4].related.add(ser+i+"");
}
ser = ser+16;
swit = swit+4;
}
//第三层交换机(b2)
ser = 0;
swit = 0;
while(ser<=1008){
for(int i=0 ; i<64 ; i++){
Allser[ser+i].relate.add(512+swit+i%16+"");
Allsw[512+swit+i%16].related.add(ser+i+"");
}
ser = ser+64;
swit = swit+16;
}
//第三层交换机(b3)
ser = 0;
swit = 0;
while(ser<=1008)
{
for(int i=0 ; i<256 ; i++){
Allser[ser+i].relate.add(512+256+swit+i%64+"");
Allsw[512+256+swit+i%64].related.add(ser+i+"");
}
ser = ser+256;
swit = swit+64;
}
OutputStream iwrite = new FileOutputStream("Bcube44.properties");
Properties pwrite = new Properties();
String key = "";
String value = "";
for(int i=0 ; i<1024 ; i++){
key = "r-"+Allser[i].name;
value = "";
//System.out.println(Allser[i].relate.size());
for(int j=0 ; j<Allser[i].relate.size() ; j++){
value+="h-"+Allser[i].relate.get(j)+",";
}
pwrite.put(key,value.substring(0, value.length()-1));
}
key = "";
for(int i=0 ; i<1024 ; i++){
key = "h-"+Allsw[i].name;
value = "";
for(int j=0 ; j<Allsw[i].related.size() ; j++){
value+="r-"+Allsw[i].related.get(j)+",";
}
pwrite.put(key, value.substring(0, value.length()-1));
}
pwrite.store(iwrite, "set");
}
}
生成的邻接矩阵,我是用一个properties文件存储的,如有需要,请留下邮箱
分享到:
相关推荐
网络拓扑生成软件是IT行业中用于模拟和设计网络架构的重要工具。在本案例中,我们关注的是一款名为"chord"的网络拓扑生成器,它特别强调了对文件格式的转换和合并功能。"nem"标签可能指的是NEM(Network Emulation ...
本研究提出了结合地理位置、节点间联系强度、基础设施成本以及网络鲁棒性等多方面因素的方法,用于生成互联网骨干网的路由器级拓扑。 #### 背景与意义 互联网骨干网是指连接不同地理区域的大规模网络,它们负责...
然而,传统的网络拓扑生成方法,比如基于图形绘制、基于配置脚本或使用通用拓扑生成工具等方式,往往难以满足实验环境的逼真度和灵活性需求。这些方法通常面临的问题包括网络要素的不全面、配置的繁琐等。 为了解决...
拓扑生成是GIS(地理信息系统)领域中的一个重要概念,它涉及到如何在计算机中表示和处理地理空间关系。在这个场景中,"拓扑生成实现源码"是指用于创建和操作地理空间拓扑结构的代码,这通常包括点、线、面等几何...
【道路拓扑生成方法】基于GPS轨迹的道路拓扑生成是一种技术,用于自动构建交通网络的拓扑结构,这种技术尤其适用于智能交通控制和自动导航服务等领域。它涉及到从GPS轨迹数据中提取道路信息和识别交叉路口,从而形成...
用Waxman算法产生随机网络拓扑的封装类,生成数据以邻接矩阵存储!
在计算机图形学领域,多边形自动拓扑生成是一项重要的技术,它涉及到如何高效地构建和优化复杂的3D模型的内部结构。这项技术通常用于游戏开发、动画制作、虚拟现实等应用,因为高效的拓扑结构对于渲染质量和计算性能...
用户对于网管自动化拓扑的需求,主要包括支持设备全面、自动高效地生成拓扑、体现中间件/数据库连接关系、支持特殊的拓扑操作实现。针于网管自动化拓扑的需求,智和网管平台提出了自动化拓扑解决方案,通过网管平台...
dude网络拓扑生成dude网络拓扑生成dude网络拓扑生成dude网络拓扑生成
使用C#(VS2010)编写的“GIS拓扑生成”。给定【节点-弧拓扑表】,生成【弧-面】【面-弧】【弧-节点】三张拓扑表。压缩包内包含源程序以及使用说明:数据格式、源代码、操作步骤。
《网络游戏-可容错的专用片上网络拓扑生成方法》是针对网络游戏中的一个重要技术领域进行探讨的主题。在这个领域,专用片上网络(Soc,System on Chip)的拓扑结构设计是关键,因为它直接影响到游戏性能、稳定性和...
【简单拓扑生成程序】是一种基于Visual Studio 2002开发的应用程序,它主要用于创建和分析网络或系统中的拓扑结构。拓扑生成在IT领域中是一个关键的工具,尤其是在网络设计、优化和故障排查时。这个程序的高参考价值...
GT-ITM 网络拓扑生成过程详解 GT-ITM(Georgia Tech Internetwork Topology Models)是一种网络拓扑生成...GT-ITM 是一个功能强大且灵活的网络拓扑生成器,可以用来生成各种网络拓扑结构,满足不同的研究和应用需求。
GIS多边形拓扑生成代码,表示多边形弧段节点的关系
网络功能虚拟化(NFV)将服务功能链(SFC)映射到...按照服务路径是否可分离,提出了两种最优备份拓扑的生成算法。仿真结果表明,最优备份拓扑在提高可靠性的基础上能够有效地减少备份带宽资源的消耗,提高资源利用率。
分布式空中骨干网拓扑生成算法是一种适用于分布式系统开发中的关键技术,它主要用于在特定应用场景中,如战场作战环境中,自动生成和维护一个空中网络的骨干网拓扑结构。该算法的核心目标是实现在动态变化的环境下的...