【问题标题】:Data Center Modeling and Simulation Using OMNeT++ paper使用 OMNeT++ 的数据中心建模和仿真论文
【发布时间】:2015-05-16 15:39:43
【问题描述】:

我最后的代码在这里:

import ned.IBidirectionalChannel;
import inet.nodes.inet.StandardHost;
import inet.nodes.inet.Router;
import inet.networklayer.autorouting.ipv4.FlatNetworkConfigurator;
import inet.nodes.ethernet.Eth10M;
import inet.nodes.ethernet.Eth100M;

package threetierdc;
module Rack
{
    parameters:
        int N @prompt(“ Nodes per rack ”);
        @display("bgb=406,179");
    gates:
        inout iogate[];
    submodules:
        ComputingServer[N]: StandardHost {

        }
        AccessRouter: Router {
            @display("p=278,50");
        }
    connections:
        for i=0.. N-1 {
            AccessRouter.ethg++ <--> Eth10M <--> 

ComputingServer[i].ethg++;

        }
        AccessRouter.ethg++ <--> iogate++;

}
network ThreeTierDatacenter
{
    parameters:
int N =default(1);
 int AGR =default(2);
 int CR =default(4);


submodules:
AGRouter[AGR]: Router;
CRouter[CR]: Router;
Racks[N]: Rack;
Configurator: FlatNetworkConfigurator;
connections allowunconnected:
for i=0..CR-1, for j= 0.. AGR-1{CRouter[i].ethg++  <--> Eth100M <--> AGRouter[j].ethg++; }
for i=0..0, for j=1 ..1 { AGRouter[i].ethg++ <-->  Eth100M <--> AGRouter[j].ethg++; }
for i=0.. AGR-1 , for j=0..N-1 {AGRouter[i].ethg++ <-->  Eth100M <-->  Racks[j].iogate++  ;}  
}

我收到了这个错误: 网络设置期间模块 (cModule)ThreeTierDataCenter.Racks0 出错:Gate'ThreeTierDataCenter.Racks[0].iogate$i1'未连接到子模块(或内部未连接到同一模块的另一个门)。 我一步一步地使用了这篇论文: Data Center Modeling and Simulation Using OMNeT++ AsadW。 Malik 和 Samee U. Khan

【问题讨论】:

  • “我无法正确处理代码。抱歉” 您介意详细说明您的实际错误吗?如果没有简洁的代码示例,就无法诊断您的问题。
  • 感谢您的回复。我会用图片告诉你:
  • “我会用图片给你看” 请不要!提供MCVE。这里没有人对图片感到满意(这就是你被限制发布图片的原因)。
  • 好的。这是错误。
  • “这是错误”请问什么?请在您的问题中逐字发布错误消息,并将其与特定的代码行相关联。

标签: simulation omnet++


【解决方案1】:

错误信息告诉你已经将AGRouters[0]的输出ethg端口连接到某个地方。

在本栏目.ned

 for i=0..1, for j=0..1
 {
     AGRouters[i].ethg++ <--> Eth100M <--> AGRouters[j].ethg++; 
 }
  1. 对于 i=0j=0 ,您首先将 ethg++AGRouters[0] 连接到自身 (AGRouters[0])
  2. 对于i=0j=1,您将AGRouters[0]ethg++ 连接到AGRouters[1]
  3. 对于i=1j=0,您将AGRouters[1]ethg++ 连接到AGRouters[0]
  4. 对于 i=1j=1 ,您将 ethg++AGRouters[1] 连接到自身 (AGRouters[1])

我真的怀疑 1)4) 是您真正想要实现的目标


network ThreeTierDatacenter
{
Parameter:
    int N = default(4);
    int AGR= default(4);
    int CR= default(2);
Submodules:
    AGRouters[AGR]: Router;
    CRouter[CR]: Router;
    Racks[N]: Rack;
Configurator: FlatNetworkConfigurator;
Connections allowunconnected:   // <<<<<<<<<<<< you are missing this 
for i=0..CR-1, for j= 0.. AGR-1{
CRouter[i].ethg++ <––> Eth100M <––> AGRouter[j].ethg++;}
for i=0..1, for j=0..1{
AGRouter[i].ethg++ <––> Eth100M <––> AGRouter[j].ethg++;}
for i=2..3, for j=2..3{
AGRouter[i].ethg++ <––> Eth100M <––> Racks[j].iogate++;}
}

【讨论】:

  • 如您所见。我想从用户那里获取节点数。完整的场景是:我想创建一个简单的数据中心基础,由 4 个因素组成:节点、核心路由器和聚合路由器以及每个机架nodes.racks 必须包含 ars,并且 ar 应该连接到 cr。通过这些,每个机架都必须看到节点!
  • @mohamad--figo 你在Configurator : FlatNetworkConfigurator; 之后缺少connections allowunconnected -- 将connections 替换为connections allowunconnected... 这可能会有所帮助
  • 谢谢@user4786271,上面的代码不完整。如果你有纸,你可以看到所有的代码。你上面的代码和纸不一样。我把所有的代码都写在我的omnet++中与 Connections allowunconnected 和其他部分的论文完全相同。正如你所见,我没有提到 omnet.ini 但它在论文中。明天我将再次尝试测试并在这里报告它。顺便感谢您的时间.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2014-04-25
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多