`
searun
  • 浏览: 176555 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

OMNeT++下的网络拓扑结构创建

阅读更多

OMNeT++通过NED语言来对网络系统进行描述。NED语言中包含着对信道、模块、节点和网络的完整描述,可以参见OMNeT++参考文档的第三章。在实际的网络仿真中,总是会首先描述一些特定形状和特性的网络。一般说来,网络拓扑结构包括两种,一种是平面(flat)结构,另外一种是层次化(Hierarchy)结构。由于OMNeT++采用的是层次化的模块构建,所以层次化的网络拓扑可以通过平面的拓扑结构来生成。在这里,对常见的几种网络拓扑结构进行描述。更多的代码可以参见OMNeT++包中sample目录下的neddemo。

在构建平面拓扑结构的时候,主要考虑的是各个节点之间的关系。对于规则的拓扑结构来说,节点之间的连线是有关系的。在下面的描述中,主要的是对这种关系进行梳理。

(1) 二叉树结构

一个二叉树结构中的节点包含有三个接口,分别对应父节点和左右子节点。这里用fromUpper和downLeft、downRight来表示。对于高度为height的二叉树结构,其节点之间的关系可以表示如下。

for i=0..2^height-2, for j=0..2^height-2 {
      node[i].downLeft <--> node[j].fromUpper if j==2*i+1;
      node[i].downRight <--> node[j].fromUpper if j==2*i+2;
}

  这是OMNeT++中的另外一种表示方法(没有了if条件表达式)。

for i=0..2^(height-1)-2 {
    node[i].downLeft <--> node[2*i+1].fromUpper;
    node[i].downRight <--> node[2*i+2].fromUpper;
}

 

生成的拓扑结构如下所示。从图中可以看到,最终生成了一个二叉树结构。这里的节点并没有显示成从上至下的结构,而是系统自动采用了一种合适的方法来表达。如果需要修改的话,则还需要对接点的位置进行约定。可以参见NED的描述文件。


(2) 链结构

另外一种很常见的网络拓扑结构就是线性结构,就像一条链一样串起来。这种结构在OMNeT++中是很容易描述的。下面的代码这个实现。

for i=0..n-2 {
    node[i].right <--> node[i+1].left;
}

 生成的网络拓扑结构如下所示。



 (3)完全图

完全图是一个节点和网络中的所有节点都有连接。拓扑结构描述如下所示。

for i=0..(n-2), for j=(i+1)..(n-1) {
    node[i].g[j] <--> node[j].g[i];
}

 

  其中, node 表示节点,而这里的 g[] 表示门向量。这里通过二重循环将节点之间的所有接口都连接了起来。另外,这里采用了位置描述符来对网络进行描述,从而让整个网络成为一个环形。

@display("p=,,ring");

  生成的完全图如下所示。

 

(4)星形图

这种网络拓扑结构是所有节点通过一个中心节点连出去。这种网络的创建并没有什么特殊的地方,一般构建两类节点:中间节点和终端节点,然后将所有的终端节点和中心节点相连即可。

生成的拓扑结构如下所示。

 

 

(5)网格网格拓扑结构

这种网络拓扑结构也很常见。这种拓扑结构中的节点包含有四个接口,分别连接上下左右的节点。节点之间的连接关系如下所示。

for i=0..height-1, for j=0..width-1 {
    node[i*width+j].down <--> node[(i+1)*width+j].up if i!=height-1;
    node[i*width+j].right <--> node[(i*width+j)+1].left if j!=width-1;
}

 

  生成的网格图如下。


 

(6)蜂窝网络拓扑结构

这是上面网格拓扑结构的一个变种,一般可以用于蜂窝网路中。这里的节点最多包含有三个接口,其连接关系如下面的NED代码所示。

for i=0..num-1 {
    node[i].port++ <--> node[i+1].port++ if i<num-1 && i%(2*cols+2)!=2*cols;
    node[i].port++ <--> node[i+2*cols+1].port++ if i<num-2*cols-1 && i%2==0;
}
 

生成的拓扑结构图如下所示。


(7)随机拓扑结构图

有些时候需要随机生成网络拓扑结构,这在OMNeT++中是比较容易实现的。下面就是一种实现的方法。

for i=0..n-1, for j=0..n-1 {
    node[i].g++ <--> node[j].g++ if i!=j && uniform(0,1)<connectedness;
}

代码中connectedness用来控制节点的连接度,1表示连接所有的其他节点。减小此值将减少网络中出现的边数。一种随机图如下所示(connectedness=0.15)。

 

上面介绍的是比较常见的一些网络拓扑结构。在实际使用中,这些网络拓扑在针对特定问题的简化版本是可以的,但是当网络变得复杂后,这样的拓扑生成还是不行的。此时最好是采用专门的拓扑生成器,来生成网络拓扑。另外,这里介绍的都还是有线网络中的拓扑结构,还没有涉及到无线网络的拓扑生成。

 

 

 

  • 大小: 2.8 KB
  • 大小: 18.1 KB
  • 大小: 9.6 KB
  • 大小: 14.3 KB
  • 大小: 8.8 KB
  • 大小: 16.7 KB
  • 大小: 4.2 KB
分享到:
评论
2 楼 tasusparty 2011-04-28  
你好,能详细讲解下用omnet如何实现最简答的dijkstra路由吗?
1 楼 liwenge 2010-06-18  
你好,我想问一下,在omnet自动生成的拓扑结构下,如何获得节点的位置(x,y)?谢谢。

相关推荐

    OMNeT++安装及IDE使用教程.pdf

    - NED (Network Description) 文件用于定义网络拓扑结构。 - 在“demo”工程中创建新的NED文件: - 右键点击“demo”&gt; New &gt; Network Description File &gt; Next &gt; New File with One Item &gt; Next &gt; Network &gt; ...

    omnet++ 中文 使用手册

    1. NED文件:定义网络拓扑结构和模块类型,NED语言类似XML,用于描述模块间的连接和参数。 2. C++类:实现模块的具体行为,继承自omnetpp::cSimpleModule类。 3. 编译流程:使用Makemake工具生成Makefile,然后使用...

    OMNET++ 详细介绍ppt

    OMNeT++还拥有网络描述语言(NED),用于描述网络的拓扑结构,以及.ini文件用于设置模拟的参数。OMNeT++拥有两个主要的运行时用户界面:Tkenv(使用Tk工具包)和Cmdenv(命令行界面)。此外,OMNeT++还提供了众多...

    AODV.zip_AODV Omnet++_AODV omnet_omnet_omnet aodv_omnet++

    2. **NED文件**:Network Description Language (NED) 文件用于描述网络拓扑结构和各个模块之间的连接。AODV协议的NED文件会定义AODV节点的结构,包括它们的属性和接口。 3. **配置文件**:这些文件可能包括.INI...

    Omnet++教程PDF版

    3. NED语言:Omnet++中的Network Description Language(NED)用于描述网络拓扑和组件结构,教程会详细介绍其语法和用法。 4. C++模拟模型:学习如何使用C++编写模拟组件,理解事件处理机制和时间调度。 5. 模型的...

    OMnet++学习全书

    OMnet++的仿真过程涉及创建网络拓扑、设置初始条件、运行仿真并收集数据。仿真完成后,用户可以通过内置的分析工具,如Plove和Scalar,对仿真结果进行可视化和统计分析,从而深入了解网络行为和性能。 **总结** ...

    omnet++中文手册

    3. **NED语言**:NED(Network Description Language)是Omnet++特有的配置语言,用于描述网络拓扑和模块间的连接。学习NED语言是使用Omnet++的关键,手册会详细介绍其语法和用法。 4. **C++模拟代码编写**:每个...

    omnet++中文使用手册

    2. **可视化编辑器**:内置的Inetmanet编辑器允许用户通过图形界面构建和配置网络拓扑。 3. **丰富的库支持**:Omnet++附带了多个库,如Inet(用于网络协议建模)、Veins(用于车联网仿真)等。 4. **详细的统计报告...

    OMNET++ 5.4 用户手册

    NED文件是OMNeT++中描述网络拓扑结构和网络组件的专用文件格式。 - **概述(Overview)**:介绍NED文件的基本结构和语法规则。 - **打开旧版本NED文件(Opening Older NED Files)**:说明如何打开和转换旧版本NED...

    OMNET++.rar_event_omnet_omnet++

    6. **强大的可视化功能**:通过Tkenv,OMNET++提供了一个实时的仿真视图,可以动态显示网络拓扑、消息传播和其他关键事件。 7. **社区支持和扩展性**:OMNET++有一个活跃的用户社区,贡献了许多预定义的模块和模型...

    OMNET++的tictoc的例子

    这里你可以设置节点的数量、拓扑结构、消息传输速率等。通过修改这些参数,你可以观察不同设定下tictoc协议的行为变化。 在OMNET++的可视化界面中,你可以启动模拟,观察节点间的通信过程。模拟过程中,你可以看到...

    基于 OMNet++ 的网络仿真系统.zip

    在实际使用过程中,用户可能需要配置仿真参数,比如网络拓扑、节点数量、数据包大小、传输速率等,以适应不同的场景。然后运行仿真,收集统计信息,如丢包率、延迟、吞吐量等,从而分析网络性能。 总的来说,这个...

    OMNeT.zip_OMNET例子_omnet++例子_omnet++实验例子

    这些例子通常包含了完整的源代码、配置文件和指导文档,帮助用户了解如何设置网络拓扑、定义消息类型、实现事件处理函数等。 4. **sim文件夹** "sim"文件夹很可能包含了仿真场景的源代码,包括`.cc`(C++源文件)...

    OMNet++.rar_802.15.4_aodv_omnet_omnet ppt_omnet++

    802.15.4协议定义了物理层(PHY)和媒体访问控制层(MAC),并支持多种网络拓扑结构,包括星形、树形和网状网络。 AODV(Ad hoc On-Demand Distance Vector)是一种用于移动自组织网络(MANET)的路由协议。与传统...

    omnet++4.0用户手册

    cTopology类提供了一种简便的方式来处理网络拓扑结构。 #### 6.7 统计和分布估计 本节介绍了如何在仿真过程中收集统计数据,并对结果进行分析。 #### 6.8 记录仿真结果 说明了如何将仿真的结果保存到文件中,以便...

    OMNET课件包-OMNET++仿真入门必读

    `gned应用入门.pdf`可能涉及GNEE(Graphical Network Editor),这是OMNET++的图形界面,用于绘制和编辑网络拓扑。这份指南将指导用户如何使用GNEE来创建和修改模型。 `OmNet++ introduction.pdf`是一份关于OMNET++...

    OMNeT++4.0用户手册双语对照版(1-2章)

    NED(Network Editor Description)语言是OMNeT++中的专用语言,用于描述网络拓扑和模块的结构。NED语言具有丰富的语法,允许用户定义模块类型、接口、参数以及模块间的连接。此外,NED语言还支持动态绑定和元数据,...

    WSN.rar_WSN_WSN OMNET++_WSN_LEACH OMN_cluster omnet_omnet++

    文件"aQoGP6Yl.pdf"可能包含了关于WSN在OMNET++中具体实现的详细步骤,包括如何配置项目、设置网络拓扑、导入和使用WSN及LEACH的相关模型等。而"www.pudn.com.txt"可能是从网上下载资源的来源信息,可能提供了更多的...

    ned.rar_OMnet++教程_ned_omnet_omnet N_omnet++

    NED是一种用于描述网络拓扑、组件类型以及它们之间连接的语言,是OMNeT++的核心部分之一。 NED语言允许用户定义网络元素的结构和行为。在OMNeT++中,网络元素可以是节点、链路、模块等。NED文件通常具有`.ned`扩展...

    omnet++ demo.rar

    OMNeT++的核心是它的NED(Network Description Language),用于描述网络拓扑和组件之间的连接。 第二个知识点:NED语言 NED是一种声明性语言,用于定义网络结构、组件类型以及它们的连接。在NED文件中,你可以声明...

Global site tag (gtag.js) - Google Analytics