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

如何在INET中添加一个新的协议

阅读更多

 

本文将对如何在 INET 中加入自定义协议进行了介绍,借鉴了【 1 】中的内容,适用于 OMNeT++ 4 版本。

 

INET 中增加一个协议之前,需要对 INET 的基本架构有个了解。【 2 】中对 INET 的组织形式进行了一个概要介绍。简单地说, INET 还是按照 ISO 的层次结构来组织源代码的。在增加协议之前,首先要清楚这个新协议所处的层次,从而决定源代码放置的位置。这里以 ISIS 协议为例来说明如何在 INET 中增加一个新的协议的具体流程。

由于 ISIS 是一个网络层的协议,所以我们将 ISIS 的源代码实现放在networklayer目录下。在 n etworklayer目录下创建一个 isis 文件夹,用来保存 ISIS 协议的具体实现代码。

对于一个新的协议,一般来说至少要包含有下面的四个文件: 

  • ISIS.ned :用来定义 ISIS 模块,其中有连接门的定义和参数设置等。这使得其他的 NED 文件可以使用 ISIS 模块(协议)。
  • ISISPacket.msg :用来定义 ISIS 的报文格式。虽然这个不是必须的,但是推荐这样做,而不要手工书写代码。在 OMNeT++ 编译的时候,将会通过 opp_msgc 工具将此文件转换成ISISPacket_m.cc和ISISPacket_m. h 文件。
  • ISIS.cc :包含有 ISIS 类的具体实现。
  • ISIS.h :包含有 ISIS 类的声明(class INET_API ISIS: public cSimpleModule …) 。在此文件中将对协议的具体实现进行编码。     

INET for OMNeT++ 4 简化了编译过程。当做完了上面的工作后,直接在根目录下执行 make ,如果没有错误的话, ISIS 网络层协议就已经可以使用了。在原来的版本中,还需要手工修改工程文件,现在这些都已经不需要了。

 

当编译链接通过后,别忘了在 example s目录下生成一个 ISIS 的测试用例进行测试哦。

 

注意的问题:

  1. NED 文件中需要加入package inet.networklayer.isis;语句声明,否则在测试用例中会找不到此模块。
  2. 在编写代码的时候,注意模块中的结构体不要和已有协议中的名称一样,否则会链接不成功。

 

【1】http://www.omnetpp.org/pmwiki/index.php?n=Main.INETAddingANewProtocol

【2】http://www.netforum.com.cn/viewthread.php?tid=17480&extra=page%3D1

 

2
0
分享到:
评论

相关推荐

    inet-2.3.0和inet-2.4压缩包

    在使用inet时,用户需要熟悉OMNeT++,因为inet是作为OMNeT++框架的一个模块运行的。OMNeT++是一个C++为基础的离散事件模拟器,提供了一个强大的平台来构建和模拟各种网络系统。inet与OMNeT++的集成使得用户可以利用...

    OMNET INET安装指南

    而INET则是在OMNET++基础上的一个框架,专门用于网络仿真,包括TCP/IP协议栈、无线网络、传感器网络等多种网络模型。 1. **OMNET++的下载与安装** 首先,你需要访问OMNET++的官方网站下载最新版本的源码包或预编译...

    OMNET++框架INET用户手册

    根据提供的文件信息,我们可以深入探讨 OMNeT++ 框架中的 INET 模块,这是一个用于网络模拟的强大工具包。接下来将详细解释文件中提到的一些关键知识点。 ### OMNeT++框架INET用户手册 #### 1.1 什么是INET框架? ...

    add protocl network stack 添加一个新的协议族

    本文将详细介绍如何在Linux内核网络子系统中添加一个新的协议族。 #### Linux网络子系统顶层视图 为了更好地理解如何添加新的协议族,我们首先简要回顾一下Linux网络子系统的结构。整个网络子系统可以分为三层: ...

    INET-4.0.0最新的仿真框架

    INET 4.0.0 是一个强大的网络仿真框架,专为OMNeT++ 5.4.1设计和优化。这个版本带来了许多新特性和改进,使得网络模型的开发和分析更加高效。INET框架广泛应用于学术研究和工业界,特别在无线通信、互联网架构以及...

    inet控件下载文件带进度条

    在VB(Visual Basic)开发中,`Inet`控件是一个非常实用的工具,用于实现基本的Internet功能,如文件下载。"inet控件下载文件带进度条"这个标题表明我们要讨论如何使用Inet控件在VB应用程序中实现文件下载,并且在...

    INET-OverSim-20100505.tgz

    INET是一个开源的网络模拟框架,它允许开发者模拟各种网络协议、架构和系统,包括互联网、无线网络、传感器网络以及分布式系统。这个框架是用Omnet++,一个强大的离散事件模拟器,作为其底层引擎。 **Omnet++** ...

    INET Framework 3.6.2组件安装包.rar

    INET Framework 3.6.2 是一个用于网络模拟的开源组件,主要设计用于OMNeT++仿真环境。...在进行网络模拟研究时,INET Framework是一个强大的工具,能够帮助用户深入理解网络行为,验证新的协议设计,或者进行性能评估。

    inet-3.6.0

    7. **版本更新**:"3.6.0"作为INET的一个版本,可能引入了新的特性,优化了性能,修复了已知问题,提升了用户体验。具体的更新内容可以通过阅读官方的发行说明或变更日志来获取。 在实际使用"inet-3.6.0"进行仿真时...

    omnet4.0和INET的安装.doc

    OMNet++ 是一个广泛用于模拟和建模的开源C++框架,而 INET 是一个在OMNet++中实现网络通信协议的框架,尤其适用于互联网和无线网络的仿真。在重新安装系统后,可能会遇到一些与OMNet++和INET相关的兼容性问题。以下...

    inet-3.6.4

    5. **导入与使用**:在OMNeT++环境中,将解压后的inet3导入意味着将它添加到工程的源代码路径中,以便OMNeT++能够识别并使用INET框架中的组件和模块。用户可以根据自己的需求配置模拟场景,通过OMNeT++的图形化界面...

    ftp控件(VB inet 控件)

    在VB(Visual Basic)环境中,VB Inet控件是一个常见的FTP控件,它允许开发者编写程序来上传、下载文件,管理远程服务器的文件系统。这个控件非常适合初学者学习,因为它提供了直观且易于理解的接口,使FTP编程变得...

    OMNET写的一个简单通讯协议(路由层)

    在这个"OMNET写的一个简单通讯协议(路由层)"项目中,我们可以深入理解路由层协议在通信中的作用,以及如何使用OMNET来实现这样的协议。路由层是网络通信的核心部分,它负责决定数据包如何从源节点传递到目标节点。 ...

    INET控件Password属性

    `Password`属性是INET控件中的一个重要属性,它在进行需要身份验证的操作时起着关键作用。 `Password`属性主要用于设置或获取用户在访问受保护资源时所需的密码。当访问的URL需要用户名和密码进行身份验证时,例如...

    Inet.Download.Manager.v6.38.18.2直装版(IDM)

    它能够将一个大文件分割成多个部分,同时从服务器上下载,显著提高了下载速度,尤其是在处理大文件或网速不稳定时,这种优势尤为明显。此外,IDM还具备智能下载策略,能够自动检测网页上的视频、音频内容并提供一键...

    VB INET控制post提交网页表单源码

    VB INET控制是一种在Visual Basic (VB)编程环境中利用INET控件进行网络操作的方法,特别是涉及到HTTP协议的交互,如提交网页表单。INET控件是VB早期版本中用于网络通信的一个内置组件,允许开发者执行HTTP请求,如...

    vb inet 实现的ftp文件的上传下载

    在VB (Visual Basic)编程环境中,INET控件是用于实现Internet功能的一个组件,它支持FTP(File Transfer Protocol)协议,可以用来实现文件的上传和下载。FTP是一种标准网络协议,用于在Internet上交换文件。本篇...

    《通信协议软件设计》作业三(2020)1

    - 当需要添加新的传输层协议时,首先用户调用`socket()`函数,这会导致系统调用,生成一个与文件绑定的socket。 - 接下来,系统会根据`family`参数在`net_families`中找到对应的协议簇指针`pf`,比如对于IPv4,...

    嵌入式系统 UDP协议

    在VS2005中,创建一个新项目时,选择适合的嵌入式设备目标(如Windows CE),然后选择对应的设备配置和编译器设置。将UDP协议相关的C或C++源代码文件添加到项目中,确保它们被正确地链接到工程中。 编写UDP协议的...

Global site tag (gtag.js) - Google Analytics