如何使用自定义消息扩展 Inet 的不同模块?

How to extend different Modules of Inet with custom messages?

我已经准备好了所有示例,运行 用于 INET (AODV) 模拟。我的网络由多个 AODV 路由器主机组成。

我的下一个任务是交换一些关于每个主机当前位置的自定义消息(将在一定时间后通过移动更新)。我找到的所有示例(通常)都是 tictoc,它要求我在 .cc 文件中构建一个 simpleModule,然后在 .ned 文件中使用该模块。我想使用 AODVRouter 模块来交换这些消息(因为它已经实现了网络所需的东西)。

This 是我用来与 cSimpleModule

交换消息的示例

我试过这个例子(如 INET 项目中所述),但这里的问题是它只是扩展 cSimpleModule。因为我想使用 AODVRouter 模块(来自 INET)作为我的发送者和接收者,所以我不能使用这个例子。所以我的问题是,另一种方法是什么(即通过 AODVRouter 模块等 INET 模块发送和接收消息)。

如何处理这个问题取决于这些消息是什么,以及它们与 AODV 协议的关系。

  • 如果您正在尝试使用一些位置感知功能来扩展 AODV 协议,并且该位置将由路由协议本身使用,那么您显然应该查看 AODVRouting source code。您可以在那里查看消息是如何 sent/received.

  • 如果报文与AODV完全无关,想实现某种应用层的报文交换,那么方法是创建一个"Application"模块并安装到路由器中.当然,您必须知道要使用 TCP 还是 UDP 发送数据(我猜是 UDP,因为它更适合面向消息的数据交换)。在这一点上,您应该实现类似 UDPBasicApp 的东西,另外您还创建了自己的 PacketType,其中包含您要传输的数据(即节点的坐标)。用它来开始。

通常,TicToc 教程只是一个基本示例,用于说明 OMNeT++ 内核如何完成发送。在 INET 中发送需要额外的工作,具体取决于您尝试从哪个 OSI 层发送数据。例如,在应用层,您必须打开套接字(参见代码)并将其用于发送。 INET 代码库的其余部分将处理将信息正确嵌入低层数据包(UDP、IP、以太网)的复杂性