在emane上模拟Predictive OLSR协议

时间:2016-04-27 16:03:16

标签: adhoc olsrd

最近几周,我正在学习使用EMANE来模拟使用Predictive OLSR路由协议的Ad hoc网络。

考虑无人机位置的位置来计算P-OLSR中的ETX度量,这使得它与普通的OLSR不同。我无法将无人机的位置数据传输到P-OLSR核心。我从上述链接下载的补丁文件为协议添加了一个 gpsreceiver 插件,该插件用于从P-OLSR接收位置数据,然后将其传输到P-OLSR。在olsrd.conf.example文件中,我应该为插件设置一个接口,一个多播IP地址和一个端口,我不知道在使用EMANE仿真平台时如何设置这些东西。我尝试将多播IP地址和端口设置为与 eventservicegroup 属性的值相同。但它不可能是正确的,因为数据格式不一致。

EMANE使用名为 eelgenerator 的应用程序,它可以生成位置事件以提供无人机的位置数据,但数据采用的是鳗鱼日志文件格式而不是< gpsreceiver 需要的em> NMEA 格式。 EMANE还有一个名为 gpsd位置代理的应用程序,它可以处理位置事件,并将位置数据传输到NMEA格式,但gpsd位置代理的输出只能直接连接到GPSd或通过GPSd连接到伪终端。 GPSd可以从NMEA格式位置数据中获取纬度,经度和高度信息,并通过localhost的端口2947为其他应用程序提供服务。

那么,如何将位置数据传输到P-OLSR核心?如果通过gpsreceiver,我应该如何设置olsrd.conf并且我是否需要自己编写程序?如果不使用gpsreceiver插件,我可以让P-OLSR核心通过GPSd获取位置数据吗?如果可以的话,如何实现呢?

PS:我的EMANE的版本是emane-0.9.3。我机器内核的版本是4.2.3-300.fc23.x86_64。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我编写了一个python脚本来从pts读取数据并将其发送给gpsreceiver。这是脚本:

import socket
fd = open("path of pts", "w+")
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(fd.readline(), (host, port))