本文将对如何在
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
的测试用例进行测试哦。
注意的问题:
-
在
NED
文件中需要加入package inet.networklayer.isis;语句声明,否则在测试用例中会找不到此模块。
-
在编写代码的时候,注意模块中的结构体不要和已有协议中的名称一样,否则会链接不成功。
【1】http://www.omnetpp.org/pmwiki/index.php?n=Main.INETAddingANewProtocol
【2】http://www.netforum.com.cn/viewthread.php?tid=17480&extra=page%3D1
分享到:
相关推荐
在使用inet时,用户需要熟悉OMNeT++,因为inet是作为OMNeT++框架的一个模块运行的。OMNeT++是一个C++为基础的离散事件模拟器,提供了一个强大的平台来构建和模拟各种网络系统。inet与OMNeT++的集成使得用户可以利用...
而INET则是在OMNET++基础上的一个框架,专门用于网络仿真,包括TCP/IP协议栈、无线网络、传感器网络等多种网络模型。 1. **OMNET++的下载与安装** 首先,你需要访问OMNET++的官方网站下载最新版本的源码包或预编译...
根据提供的文件信息,我们可以深入探讨 OMNeT++ 框架中的 INET 模块,这是一个用于网络模拟的强大工具包。接下来将详细解释文件中提到的一些关键知识点。 ### OMNeT++框架INET用户手册 #### 1.1 什么是INET框架? ...
本文将详细介绍如何在Linux内核网络子系统中添加一个新的协议族。 #### Linux网络子系统顶层视图 为了更好地理解如何添加新的协议族,我们首先简要回顾一下Linux网络子系统的结构。整个网络子系统可以分为三层: ...
INET 4.0.0 是一个强大的网络仿真框架,专为OMNeT++ 5.4.1设计和优化。这个版本带来了许多新特性和改进,使得网络模型的开发和分析更加高效。INET框架广泛应用于学术研究和工业界,特别在无线通信、互联网架构以及...
在VB(Visual Basic)开发中,`Inet`控件是一个非常实用的工具,用于实现基本的Internet功能,如文件下载。"inet控件下载文件带进度条"这个标题表明我们要讨论如何使用Inet控件在VB应用程序中实现文件下载,并且在...
INET是一个开源的网络模拟框架,它允许开发者模拟各种网络协议、架构和系统,包括互联网、无线网络、传感器网络以及分布式系统。这个框架是用Omnet++,一个强大的离散事件模拟器,作为其底层引擎。 **Omnet++** ...
INET Framework 3.6.2 是一个用于网络模拟的开源组件,主要设计用于OMNeT++仿真环境。...在进行网络模拟研究时,INET Framework是一个强大的工具,能够帮助用户深入理解网络行为,验证新的协议设计,或者进行性能评估。
7. **版本更新**:"3.6.0"作为INET的一个版本,可能引入了新的特性,优化了性能,修复了已知问题,提升了用户体验。具体的更新内容可以通过阅读官方的发行说明或变更日志来获取。 在实际使用"inet-3.6.0"进行仿真时...
OMNet++ 是一个广泛用于模拟和建模的开源C++框架,而 INET 是一个在OMNet++中实现网络通信协议的框架,尤其适用于互联网和无线网络的仿真。在重新安装系统后,可能会遇到一些与OMNet++和INET相关的兼容性问题。以下...
5. **导入与使用**:在OMNeT++环境中,将解压后的inet3导入意味着将它添加到工程的源代码路径中,以便OMNeT++能够识别并使用INET框架中的组件和模块。用户可以根据自己的需求配置模拟场景,通过OMNeT++的图形化界面...
在VB(Visual Basic)环境中,VB Inet控件是一个常见的FTP控件,它允许开发者编写程序来上传、下载文件,管理远程服务器的文件系统。这个控件非常适合初学者学习,因为它提供了直观且易于理解的接口,使FTP编程变得...
在这个"OMNET写的一个简单通讯协议(路由层)"项目中,我们可以深入理解路由层协议在通信中的作用,以及如何使用OMNET来实现这样的协议。路由层是网络通信的核心部分,它负责决定数据包如何从源节点传递到目标节点。 ...
`Password`属性是INET控件中的一个重要属性,它在进行需要身份验证的操作时起着关键作用。 `Password`属性主要用于设置或获取用户在访问受保护资源时所需的密码。当访问的URL需要用户名和密码进行身份验证时,例如...
它能够将一个大文件分割成多个部分,同时从服务器上下载,显著提高了下载速度,尤其是在处理大文件或网速不稳定时,这种优势尤为明显。此外,IDM还具备智能下载策略,能够自动检测网页上的视频、音频内容并提供一键...
VB INET控制是一种在Visual Basic (VB)编程环境中利用INET控件进行网络操作的方法,特别是涉及到HTTP协议的交互,如提交网页表单。INET控件是VB早期版本中用于网络通信的一个内置组件,允许开发者执行HTTP请求,如...
在VB (Visual Basic)编程环境中,INET控件是用于实现Internet功能的一个组件,它支持FTP(File Transfer Protocol)协议,可以用来实现文件的上传和下载。FTP是一种标准网络协议,用于在Internet上交换文件。本篇...
- 当需要添加新的传输层协议时,首先用户调用`socket()`函数,这会导致系统调用,生成一个与文件绑定的socket。 - 接下来,系统会根据`family`参数在`net_families`中找到对应的协议簇指针`pf`,比如对于IPv4,...
在VS2005中,创建一个新项目时,选择适合的嵌入式设备目标(如Windows CE),然后选择对应的设备配置和编译器设置。将UDP协议相关的C或C++源代码文件添加到项目中,确保它们被正确地链接到工程中。 编写UDP协议的...