Эмулировать предиктивный протокол OLSR на emane
В последние недели я учусь использовать EMANE для эмуляции сетей Ad hoc, использующих протокол маршрутизации Predictive OLSR.
Расположение местоположения БПЛА учитывается при расчете метрики ETX в P-OLSR, что отличает его от обычного OLSR. У меня проблемы с передачей данных о местонахождении БПЛА в ядро P-OLSR. Файл патча, который я скачал по упомянутой выше ссылке, добавляет в протокол плагин gpsreceiver, который используется для получения данных о местоположении из P-OLSR и их передачи в P-OLSR. И в файле olsrd.conf.example я должен установить интерфейс, многоадресный IP-адрес и порт для плагина. Я не знаю, как настроить эти вещи при использовании платформы эмуляции EMANE. Я попытался установить IP-адрес многоадресной рассылки и порт так же, как значение атрибута eventservicegroup. Но это не может быть правильно, потому что формат данных не соответствует.
EMANE использует приложение под названием eelgenerator, которое может генерировать событие местоположения для доставки данных о местонахождении БПЛА, но данные находятся в формате файла журнала eel, а не в формате NMEA, который требуется для gpsreceiver. EMANE также имеет приложение, называемое агентом определения местоположения gpsd, и оно может обрабатывать событие определения местоположения и переносить данные о местоположении в формат NMEA, но выходные данные агента определения местоположения gpsd могут быть подключены только к GPSd напрямую или к псевдотерминалу, затем подключенному через GPSd., GPSd может получать информацию о широте, долготе и высоте из данных местоположения в формате NMEA и обслуживать другие приложения через порт 2947 localhost.
Итак, как я могу перенести данные о местоположении в ядро P-OLSR? Если через gpsreceiver, как мне установить olsrd.conf и нужно ли мне писать программу самостоятельно? Если не использовать плагин gpsreceiver, могу ли я сделать ядро P-OLSR для получения данных о местоположении через GPSd? Если можно, как это реализовать?
PS: версия моего EMANE - emane-0.9.3. версия ядра моей машины - 4.2.3-300.fc23.x86_64.
1 ответ
Я решил проблему. Я написал скрипт 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))