CloudSim 中的 Network 包同样含有很多个 Example。在NetworkExample1.java文件中,与Example1.java的不同,主要在于模拟之前,需要初始化网络拓扑。即有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 NetworkTopology.buildNetworkTopology("topology.brite" ); int briteNode=0 ;NetworkTopology.mapNode(datacenter0.getId(),briteNode); briteNode=3 ; NetworkTopology.mapNode(broker.getId(),briteNode);
那么,NetworkTopology 这个类的作用是什么呢?
它的实现主要是根据一个 brite 文件建立一个网络拓扑模型,topology.brite 文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Topology: ( 5 Nodes, 8 Edges ) Model (1 - RTWaxman): 5 5 5 1 2 0.15000000596046448 0.20000000298023224 1 1 10.0 1024.0 Nodes: ( 5 ) 0 1 3 3 3 -1 RT_NODE 1 0 3 3 3 -1 RT_NODE 2 4 3 3 3 -1 RT_NODE 3 3 1 3 3 -1 RT_NODE 4 3 3 4 4 -1 RT_NODE Edges: ( 8 ) 0 2 0 3.0 1.1 10.0 -1 -1 E_RT U 1 2 1 4.0 2.1 10.0 -1 -1 E_RT U 2 3 0 2.8284271247461903 3.9 10.0 -1 -1 E_RT U 3 3 1 3.605551275463989 4.1 10.0 -1 -1 E_RT U 4 4 3 2.0 5.0 10.0 -1 -1 E_RT U 5 4 2 1.0 4.0 10.0 -1 -1 E_RT U 6 0 4 2.0 3.0 10.0 -1 -1 E_RT U 7 1 4 3.0 4.1 10.0 -1 -1 E_RT U
程序运行后会寻找标记Nodes和Edges,Nodes是节点信息,其中第一列是节点序号,第二列是节点的横坐标,第三列是节点的纵坐标;Edges是边信息,第一列是边序号,第二列是始节点序号,第三列是终节点序号,第四列是边长度,第五列是边时延,第六列是边带宽。
这里有一个关键类ToplogicalGraph,描绘了图的拓扑的数据结构。这里面包含两个链表,分别用来存储节点ToplogicalNode和边ToplogicalLink。
在ToplogicalGraph中通过readGraphFile方法,将文件中的描述,转化为网络拓扑模型。接着用得到的网络拓扑,通过generateMatrices()和createBwMatrix()生成一个是实体间的时延矩阵和带宽矩阵。