Merge pull request #515 from coreemu/docs/emane-demos
added emane examples for various emane topics when used within core
This commit is contained in:
commit
ac781ef3da
9 changed files with 1050 additions and 0 deletions
146
daemon/core/gui/data/xmls/emane-demo-eel.xml
Normal file
146
daemon/core/gui/data/xmls/emane-demo-eel.xml
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<scenario name="/home/developer/.core/configs/emane-demo-eel.xml">
|
||||||
|
<networks>
|
||||||
|
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||||
|
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||||
|
</network>
|
||||||
|
</networks>
|
||||||
|
<devices>
|
||||||
|
<device id="1" name="n1" type="mdr" class="" image="">
|
||||||
|
<position x="153" y="172" lat="47.57760325520506" lon="-122.13026036642295" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
<device id="2" name="n2" type="mdr" class="" image="">
|
||||||
|
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
</devices>
|
||||||
|
<links>
|
||||||
|
<link node1="3" node2="1">
|
||||||
|
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
<link node1="3" node2="2">
|
||||||
|
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
</links>
|
||||||
|
<emane_global_configuration>
|
||||||
|
<emulator>
|
||||||
|
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||||
|
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||||
|
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<configuration name="eventservicettl" value="1"/>
|
||||||
|
<configuration name="otamanagerchannelenable" value="1"/>
|
||||||
|
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||||
|
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||||
|
<configuration name="otamanagerloopback" value="0"/>
|
||||||
|
<configuration name="otamanagermtu" value="0"/>
|
||||||
|
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||||
|
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||||
|
<configuration name="otamanagerttl" value="1"/>
|
||||||
|
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||||
|
</emulator>
|
||||||
|
<core>
|
||||||
|
<configuration name="platform_id_start" value="1"/>
|
||||||
|
<configuration name="nem_id_start" value="1"/>
|
||||||
|
<configuration name="link_enabled" value="1"/>
|
||||||
|
<configuration name="loss_threshold" value="30"/>
|
||||||
|
<configuration name="link_interval" value="1"/>
|
||||||
|
<configuration name="link_timeout" value="4"/>
|
||||||
|
</core>
|
||||||
|
</emane_global_configuration>
|
||||||
|
<emane_configurations>
|
||||||
|
<emane_configuration node="3" model="emane_rfpipe">
|
||||||
|
<mac>
|
||||||
|
<configuration name="datarate" value="1000000"/>
|
||||||
|
<configuration name="delay" value="0.000000"/>
|
||||||
|
<configuration name="enablepromiscuousmode" value="0"/>
|
||||||
|
<configuration name="flowcontrolenable" value="0"/>
|
||||||
|
<configuration name="flowcontroltokens" value="10"/>
|
||||||
|
<configuration name="jitter" value="0.000000"/>
|
||||||
|
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||||
|
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||||
|
<configuration name="radiometricenable" value="0"/>
|
||||||
|
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||||
|
</mac>
|
||||||
|
<phy>
|
||||||
|
<configuration name="bandwidth" value="1000000"/>
|
||||||
|
<configuration name="fading.model" value="none"/>
|
||||||
|
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||||
|
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||||
|
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||||
|
<configuration name="fixedantennagain" value="0.000000"/>
|
||||||
|
<configuration name="fixedantennagainenable" value="1"/>
|
||||||
|
<configuration name="frequency" value="2347000000"/>
|
||||||
|
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||||
|
<configuration name="noisebinsize" value="20"/>
|
||||||
|
<configuration name="noisemaxclampenable" value="0"/>
|
||||||
|
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||||
|
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||||
|
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||||
|
<configuration name="noisemode" value="none"/>
|
||||||
|
<configuration name="propagationmodel" value="precomputed"/>
|
||||||
|
<configuration name="subid" value="1"/>
|
||||||
|
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||||
|
<configuration name="timesyncthreshold" value="10000"/>
|
||||||
|
<configuration name="txpower" value="0.000000"/>
|
||||||
|
</phy>
|
||||||
|
<external>
|
||||||
|
<configuration name="external" value="0"/>
|
||||||
|
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||||
|
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||||
|
</external>
|
||||||
|
</emane_configuration>
|
||||||
|
</emane_configurations>
|
||||||
|
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||||
|
<session_options>
|
||||||
|
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||||
|
<configuration name="controlnet0" value=""/>
|
||||||
|
<configuration name="controlnet1" value=""/>
|
||||||
|
<configuration name="controlnet2" value=""/>
|
||||||
|
<configuration name="controlnet3" value=""/>
|
||||||
|
<configuration name="controlnet_updown_script" value=""/>
|
||||||
|
<configuration name="enablerj45" value="1"/>
|
||||||
|
<configuration name="preservedir" value="0"/>
|
||||||
|
<configuration name="enablesdt" value="0"/>
|
||||||
|
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||||
|
<configuration name="ovs" value="0"/>
|
||||||
|
</session_options>
|
||||||
|
<session_metadata>
|
||||||
|
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||||
|
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||||
|
</session_metadata>
|
||||||
|
<default_services>
|
||||||
|
<node type="mdr">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="PC">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
</node>
|
||||||
|
<node type="prouter"/>
|
||||||
|
<node type="router">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv2"/>
|
||||||
|
<service name="OSPFv3"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="host">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
<service name="SSH"/>
|
||||||
|
</node>
|
||||||
|
</default_services>
|
||||||
|
</scenario>
|
146
daemon/core/gui/data/xmls/emane-demo-files.xml
Normal file
146
daemon/core/gui/data/xmls/emane-demo-files.xml
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<scenario name="/home/developer/.core/configs/emane-demo-files.xml">
|
||||||
|
<networks>
|
||||||
|
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||||
|
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||||
|
</network>
|
||||||
|
</networks>
|
||||||
|
<devices>
|
||||||
|
<device id="1" name="n1" type="mdr" class="" image="">
|
||||||
|
<position x="153" y="173" lat="47.57759416527324" lon="-122.13026036642295" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
<device id="2" name="n2" type="mdr" class="" image="">
|
||||||
|
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
</devices>
|
||||||
|
<links>
|
||||||
|
<link node1="3" node2="1">
|
||||||
|
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
<link node1="3" node2="2">
|
||||||
|
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
</links>
|
||||||
|
<emane_global_configuration>
|
||||||
|
<emulator>
|
||||||
|
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||||
|
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||||
|
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<configuration name="eventservicettl" value="1"/>
|
||||||
|
<configuration name="otamanagerchannelenable" value="1"/>
|
||||||
|
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||||
|
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||||
|
<configuration name="otamanagerloopback" value="0"/>
|
||||||
|
<configuration name="otamanagermtu" value="0"/>
|
||||||
|
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||||
|
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||||
|
<configuration name="otamanagerttl" value="1"/>
|
||||||
|
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||||
|
</emulator>
|
||||||
|
<core>
|
||||||
|
<configuration name="platform_id_start" value="1"/>
|
||||||
|
<configuration name="nem_id_start" value="1"/>
|
||||||
|
<configuration name="link_enabled" value="1"/>
|
||||||
|
<configuration name="loss_threshold" value="30"/>
|
||||||
|
<configuration name="link_interval" value="1"/>
|
||||||
|
<configuration name="link_timeout" value="4"/>
|
||||||
|
</core>
|
||||||
|
</emane_global_configuration>
|
||||||
|
<emane_configurations>
|
||||||
|
<emane_configuration node="3" model="emane_rfpipe">
|
||||||
|
<mac>
|
||||||
|
<configuration name="datarate" value="1000000"/>
|
||||||
|
<configuration name="delay" value="0.000000"/>
|
||||||
|
<configuration name="enablepromiscuousmode" value="0"/>
|
||||||
|
<configuration name="flowcontrolenable" value="0"/>
|
||||||
|
<configuration name="flowcontroltokens" value="10"/>
|
||||||
|
<configuration name="jitter" value="0.000000"/>
|
||||||
|
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||||
|
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||||
|
<configuration name="radiometricenable" value="0"/>
|
||||||
|
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||||
|
</mac>
|
||||||
|
<phy>
|
||||||
|
<configuration name="bandwidth" value="1000000"/>
|
||||||
|
<configuration name="fading.model" value="none"/>
|
||||||
|
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||||
|
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||||
|
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||||
|
<configuration name="fixedantennagain" value="0.000000"/>
|
||||||
|
<configuration name="fixedantennagainenable" value="1"/>
|
||||||
|
<configuration name="frequency" value="2347000000"/>
|
||||||
|
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||||
|
<configuration name="noisebinsize" value="20"/>
|
||||||
|
<configuration name="noisemaxclampenable" value="0"/>
|
||||||
|
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||||
|
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||||
|
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||||
|
<configuration name="noisemode" value="none"/>
|
||||||
|
<configuration name="propagationmodel" value="2ray"/>
|
||||||
|
<configuration name="subid" value="1"/>
|
||||||
|
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||||
|
<configuration name="timesyncthreshold" value="10000"/>
|
||||||
|
<configuration name="txpower" value="0.000000"/>
|
||||||
|
</phy>
|
||||||
|
<external>
|
||||||
|
<configuration name="external" value="0"/>
|
||||||
|
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||||
|
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||||
|
</external>
|
||||||
|
</emane_configuration>
|
||||||
|
</emane_configurations>
|
||||||
|
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||||
|
<session_options>
|
||||||
|
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||||
|
<configuration name="controlnet0" value=""/>
|
||||||
|
<configuration name="controlnet1" value=""/>
|
||||||
|
<configuration name="controlnet2" value=""/>
|
||||||
|
<configuration name="controlnet3" value=""/>
|
||||||
|
<configuration name="controlnet_updown_script" value=""/>
|
||||||
|
<configuration name="enablerj45" value="1"/>
|
||||||
|
<configuration name="preservedir" value="0"/>
|
||||||
|
<configuration name="enablesdt" value="0"/>
|
||||||
|
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||||
|
<configuration name="ovs" value="0"/>
|
||||||
|
</session_options>
|
||||||
|
<session_metadata>
|
||||||
|
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||||
|
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||||
|
</session_metadata>
|
||||||
|
<default_services>
|
||||||
|
<node type="mdr">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="PC">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
</node>
|
||||||
|
<node type="prouter"/>
|
||||||
|
<node type="router">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv2"/>
|
||||||
|
<service name="OSPFv3"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="host">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
<service name="SSH"/>
|
||||||
|
</node>
|
||||||
|
</default_services>
|
||||||
|
</scenario>
|
146
daemon/core/gui/data/xmls/emane-demo-gpsd.xml
Normal file
146
daemon/core/gui/data/xmls/emane-demo-gpsd.xml
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<scenario name="/home/developer/.core/configs/emane-demo-gpsd.xml">
|
||||||
|
<networks>
|
||||||
|
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||||
|
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||||
|
</network>
|
||||||
|
</networks>
|
||||||
|
<devices>
|
||||||
|
<device id="1" name="n1" type="mdr" class="" image="">
|
||||||
|
<position x="153" y="173" lat="47.57759416527324" lon="-122.13026036642295" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
<device id="2" name="n2" type="mdr" class="" image="">
|
||||||
|
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
</devices>
|
||||||
|
<links>
|
||||||
|
<link node1="3" node2="1">
|
||||||
|
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
<link node1="3" node2="2">
|
||||||
|
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
</links>
|
||||||
|
<emane_global_configuration>
|
||||||
|
<emulator>
|
||||||
|
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||||
|
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||||
|
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<configuration name="eventservicettl" value="1"/>
|
||||||
|
<configuration name="otamanagerchannelenable" value="1"/>
|
||||||
|
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||||
|
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||||
|
<configuration name="otamanagerloopback" value="0"/>
|
||||||
|
<configuration name="otamanagermtu" value="0"/>
|
||||||
|
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||||
|
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||||
|
<configuration name="otamanagerttl" value="1"/>
|
||||||
|
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||||
|
</emulator>
|
||||||
|
<core>
|
||||||
|
<configuration name="platform_id_start" value="1"/>
|
||||||
|
<configuration name="nem_id_start" value="1"/>
|
||||||
|
<configuration name="link_enabled" value="1"/>
|
||||||
|
<configuration name="loss_threshold" value="30"/>
|
||||||
|
<configuration name="link_interval" value="1"/>
|
||||||
|
<configuration name="link_timeout" value="4"/>
|
||||||
|
</core>
|
||||||
|
</emane_global_configuration>
|
||||||
|
<emane_configurations>
|
||||||
|
<emane_configuration node="3" model="emane_rfpipe">
|
||||||
|
<mac>
|
||||||
|
<configuration name="datarate" value="1000000"/>
|
||||||
|
<configuration name="delay" value="0.000000"/>
|
||||||
|
<configuration name="enablepromiscuousmode" value="0"/>
|
||||||
|
<configuration name="flowcontrolenable" value="0"/>
|
||||||
|
<configuration name="flowcontroltokens" value="10"/>
|
||||||
|
<configuration name="jitter" value="0.000000"/>
|
||||||
|
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||||
|
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||||
|
<configuration name="radiometricenable" value="0"/>
|
||||||
|
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||||
|
</mac>
|
||||||
|
<phy>
|
||||||
|
<configuration name="bandwidth" value="1000000"/>
|
||||||
|
<configuration name="fading.model" value="none"/>
|
||||||
|
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||||
|
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||||
|
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||||
|
<configuration name="fixedantennagain" value="0.000000"/>
|
||||||
|
<configuration name="fixedantennagainenable" value="1"/>
|
||||||
|
<configuration name="frequency" value="2347000000"/>
|
||||||
|
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||||
|
<configuration name="noisebinsize" value="20"/>
|
||||||
|
<configuration name="noisemaxclampenable" value="0"/>
|
||||||
|
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||||
|
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||||
|
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||||
|
<configuration name="noisemode" value="none"/>
|
||||||
|
<configuration name="propagationmodel" value="2ray"/>
|
||||||
|
<configuration name="subid" value="1"/>
|
||||||
|
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||||
|
<configuration name="timesyncthreshold" value="10000"/>
|
||||||
|
<configuration name="txpower" value="0.000000"/>
|
||||||
|
</phy>
|
||||||
|
<external>
|
||||||
|
<configuration name="external" value="0"/>
|
||||||
|
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||||
|
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||||
|
</external>
|
||||||
|
</emane_configuration>
|
||||||
|
</emane_configurations>
|
||||||
|
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||||
|
<session_options>
|
||||||
|
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||||
|
<configuration name="controlnet0" value=""/>
|
||||||
|
<configuration name="controlnet1" value=""/>
|
||||||
|
<configuration name="controlnet2" value=""/>
|
||||||
|
<configuration name="controlnet3" value=""/>
|
||||||
|
<configuration name="controlnet_updown_script" value=""/>
|
||||||
|
<configuration name="enablerj45" value="1"/>
|
||||||
|
<configuration name="preservedir" value="0"/>
|
||||||
|
<configuration name="enablesdt" value="0"/>
|
||||||
|
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||||
|
<configuration name="ovs" value="0"/>
|
||||||
|
</session_options>
|
||||||
|
<session_metadata>
|
||||||
|
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||||
|
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||||
|
</session_metadata>
|
||||||
|
<default_services>
|
||||||
|
<node type="mdr">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="PC">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
</node>
|
||||||
|
<node type="prouter"/>
|
||||||
|
<node type="router">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv2"/>
|
||||||
|
<service name="OSPFv3"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="host">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
<service name="SSH"/>
|
||||||
|
</node>
|
||||||
|
</default_services>
|
||||||
|
</scenario>
|
146
daemon/core/gui/data/xmls/emane-demo-precomputed.xml
Normal file
146
daemon/core/gui/data/xmls/emane-demo-precomputed.xml
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<scenario name="/home/developer/.core/configs/emane-demo-precomputed.xml">
|
||||||
|
<networks>
|
||||||
|
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||||
|
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||||
|
</network>
|
||||||
|
</networks>
|
||||||
|
<devices>
|
||||||
|
<device id="1" name="n1" type="mdr" class="" image="">
|
||||||
|
<position x="153" y="172" lat="47.57760325520506" lon="-122.13026036642295" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
<device id="2" name="n2" type="mdr" class="" image="">
|
||||||
|
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||||
|
<services>
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</services>
|
||||||
|
</device>
|
||||||
|
</devices>
|
||||||
|
<links>
|
||||||
|
<link node1="3" node2="1">
|
||||||
|
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
<link node1="3" node2="2">
|
||||||
|
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||||
|
</link>
|
||||||
|
</links>
|
||||||
|
<emane_global_configuration>
|
||||||
|
<emulator>
|
||||||
|
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||||
|
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||||
|
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<configuration name="eventservicettl" value="1"/>
|
||||||
|
<configuration name="otamanagerchannelenable" value="1"/>
|
||||||
|
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||||
|
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||||
|
<configuration name="otamanagerloopback" value="0"/>
|
||||||
|
<configuration name="otamanagermtu" value="0"/>
|
||||||
|
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||||
|
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||||
|
<configuration name="otamanagerttl" value="1"/>
|
||||||
|
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||||
|
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||||
|
</emulator>
|
||||||
|
<core>
|
||||||
|
<configuration name="platform_id_start" value="1"/>
|
||||||
|
<configuration name="nem_id_start" value="1"/>
|
||||||
|
<configuration name="link_enabled" value="1"/>
|
||||||
|
<configuration name="loss_threshold" value="30"/>
|
||||||
|
<configuration name="link_interval" value="1"/>
|
||||||
|
<configuration name="link_timeout" value="4"/>
|
||||||
|
</core>
|
||||||
|
</emane_global_configuration>
|
||||||
|
<emane_configurations>
|
||||||
|
<emane_configuration node="3" model="emane_rfpipe">
|
||||||
|
<mac>
|
||||||
|
<configuration name="datarate" value="1000000"/>
|
||||||
|
<configuration name="delay" value="0.000000"/>
|
||||||
|
<configuration name="enablepromiscuousmode" value="0"/>
|
||||||
|
<configuration name="flowcontrolenable" value="0"/>
|
||||||
|
<configuration name="flowcontroltokens" value="10"/>
|
||||||
|
<configuration name="jitter" value="0.000000"/>
|
||||||
|
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||||
|
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||||
|
<configuration name="radiometricenable" value="0"/>
|
||||||
|
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||||
|
</mac>
|
||||||
|
<phy>
|
||||||
|
<configuration name="bandwidth" value="1000000"/>
|
||||||
|
<configuration name="fading.model" value="none"/>
|
||||||
|
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||||
|
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||||
|
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||||
|
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||||
|
<configuration name="fixedantennagain" value="0.000000"/>
|
||||||
|
<configuration name="fixedantennagainenable" value="1"/>
|
||||||
|
<configuration name="frequency" value="2347000000"/>
|
||||||
|
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||||
|
<configuration name="noisebinsize" value="20"/>
|
||||||
|
<configuration name="noisemaxclampenable" value="0"/>
|
||||||
|
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||||
|
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||||
|
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||||
|
<configuration name="noisemode" value="none"/>
|
||||||
|
<configuration name="propagationmodel" value="precomputed"/>
|
||||||
|
<configuration name="subid" value="1"/>
|
||||||
|
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||||
|
<configuration name="timesyncthreshold" value="10000"/>
|
||||||
|
<configuration name="txpower" value="0.000000"/>
|
||||||
|
</phy>
|
||||||
|
<external>
|
||||||
|
<configuration name="external" value="0"/>
|
||||||
|
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||||
|
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||||
|
</external>
|
||||||
|
</emane_configuration>
|
||||||
|
</emane_configurations>
|
||||||
|
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||||
|
<session_options>
|
||||||
|
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||||
|
<configuration name="controlnet0" value=""/>
|
||||||
|
<configuration name="controlnet1" value=""/>
|
||||||
|
<configuration name="controlnet2" value=""/>
|
||||||
|
<configuration name="controlnet3" value=""/>
|
||||||
|
<configuration name="controlnet_updown_script" value=""/>
|
||||||
|
<configuration name="enablerj45" value="1"/>
|
||||||
|
<configuration name="preservedir" value="0"/>
|
||||||
|
<configuration name="enablesdt" value="0"/>
|
||||||
|
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||||
|
<configuration name="ovs" value="0"/>
|
||||||
|
</session_options>
|
||||||
|
<session_metadata>
|
||||||
|
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||||
|
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||||
|
</session_metadata>
|
||||||
|
<default_services>
|
||||||
|
<node type="mdr">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv3MDR"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="PC">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
</node>
|
||||||
|
<node type="prouter"/>
|
||||||
|
<node type="router">
|
||||||
|
<service name="zebra"/>
|
||||||
|
<service name="OSPFv2"/>
|
||||||
|
<service name="OSPFv3"/>
|
||||||
|
<service name="IPForward"/>
|
||||||
|
</node>
|
||||||
|
<node type="host">
|
||||||
|
<service name="DefaultRoute"/>
|
||||||
|
<service name="SSH"/>
|
||||||
|
</node>
|
||||||
|
</default_services>
|
||||||
|
</scenario>
|
|
@ -50,6 +50,25 @@ can also subscribe to EMANE location events and move the nodes on the canvas
|
||||||
as they are moved in the EMANE emulation. This would occur when an Emulation
|
as they are moved in the EMANE emulation. This would occur when an Emulation
|
||||||
Script Generator, for example, is running a mobility script.
|
Script Generator, for example, is running a mobility script.
|
||||||
|
|
||||||
|
## EMANE in CORE
|
||||||
|
|
||||||
|
This section will cover some high level topics and examples for running and
|
||||||
|
using EMANE in CORE.
|
||||||
|
|
||||||
|
You can find more detailed tutorials and examples at the
|
||||||
|
[EMANE Tutorial](https://github.com/adjacentlink/emane-tutorial/wiki).
|
||||||
|
|
||||||
|
Every topic below assumes CORE, EMANE, and OSPF MDR have been installed.
|
||||||
|
|
||||||
|
> **WARNING:** demo files will be found within the new `core-pygui`
|
||||||
|
|
||||||
|
|Topic|Model|Description|
|
||||||
|
|---|---|---|
|
||||||
|
|[XML Files](emane/files.md)|RF Pipe|Overview of generated XML files used to drive EMANE|
|
||||||
|
|[GPSD](emane/gpsd.md)|RF Pipe|Overview of running and integrating gpsd with EMANE|
|
||||||
|
|[Precomputed](emane/precomputed.md)|RF Pipe|Overview of using the precomputed propagation model|
|
||||||
|
|[EEL](emane/eel.md)|RF Pipe|Overview of using the Emulation Event Log (EEL) Generator|
|
||||||
|
|
||||||
## EMANE Configuration
|
## EMANE Configuration
|
||||||
|
|
||||||
The CORE configuration file **/etc/core/core.conf** has options specific to
|
The CORE configuration file **/etc/core/core.conf** has options specific to
|
||||||
|
|
103
docs/emane/eel.md
Normal file
103
docs/emane/eel.md
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
# EMANE Emulation Event Log (EEL) Generator
|
||||||
|
* Table of Contents
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Introduction to using the EMANE event service and eel files to provide events.
|
||||||
|
|
||||||
|
[EMANE Demo 1](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-1)
|
||||||
|
for more specifics.
|
||||||
|
|
||||||
|
### Run Demo
|
||||||
|
1. Select `Open...` within the GUI
|
||||||
|
1. Load `emane-demo-eel.xml`
|
||||||
|
1. Click ![Start Button](../static/gui/start.gif)
|
||||||
|
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||||
|
|
||||||
|
## Example Demo
|
||||||
|
This demo will go over defining an EMANE event service and eel file to drive
|
||||||
|
an emane event service.
|
||||||
|
|
||||||
|
### Viewing Events
|
||||||
|
On n1 we will use the EMANE event dump utility to listen to events.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# emaneevent-dump -i ctrl0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sending Events
|
||||||
|
On the host machine we will create the following files and start the
|
||||||
|
EMANE event service targeting the control network.
|
||||||
|
|
||||||
|
> **WARNING:** make sure to set the `eventservicedevice` to the proper control
|
||||||
|
> network value
|
||||||
|
|
||||||
|
Create `eventservice.xml` with the following contents.
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventservice SYSTEM "file:///usr/share/emane/dtd/eventservice.dtd">
|
||||||
|
<eventservice>
|
||||||
|
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<param name="eventservicedevice" value="b.9001.f"/>
|
||||||
|
<generator definition="eelgenerator.xml"/>
|
||||||
|
</eventservice>
|
||||||
|
```
|
||||||
|
|
||||||
|
Next we will create the `eelgenerator.xml` file. The EEL Generator is actually
|
||||||
|
a plugin that loads sentence parsing plugins. The sentence parsing plugins know
|
||||||
|
how to convert certain sentences, in this case commeffect, location, velocity,
|
||||||
|
orientation, pathloss and antennaprofile sentences, into their corresponding
|
||||||
|
emane event equivalents.
|
||||||
|
|
||||||
|
* commeffect:eelloadercommeffect:delta
|
||||||
|
* location,velocity,orientation:eelloaderlocation:delta
|
||||||
|
* pathloss:eelloaderpathloss:delta
|
||||||
|
* antennaprofile:eelloaderantennaprofile:delta
|
||||||
|
|
||||||
|
These configuration items tell the EEL Generator which sentences to map to
|
||||||
|
which plugin and whether to issue delta or full updates.
|
||||||
|
|
||||||
|
Create `eelgenerator.xml` with the following contents.
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventgenerator SYSTEM "file:///usr/share/emane/dtd/eventgenerator.dtd">
|
||||||
|
<eventgenerator library="eelgenerator">
|
||||||
|
<param name="inputfile" value="scenario.eel" />
|
||||||
|
<paramlist name="loader">
|
||||||
|
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||||
|
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||||
|
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||||
|
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||||
|
</paramlist>
|
||||||
|
</eventgenerator>
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, create `scenario.eel` with the following contents.
|
||||||
|
```shell
|
||||||
|
0.0 nem:1 pathloss nem:2,90.0
|
||||||
|
0.0 nem:2 pathloss nem:1,90.0
|
||||||
|
0.0 nem:1 location gps 40.031075,-74.523518,3.000000
|
||||||
|
0.0 nem:2 location gps 40.031165,-74.523412,3.000000
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the EMANE event service using the files created above.
|
||||||
|
```shell
|
||||||
|
emaneeventservice eventservice.xml -l 3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Sent Events
|
||||||
|
If we go back to look at our original terminal we will see the events logged
|
||||||
|
out to the terminal.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# emaneevent-dump -i ctrl0
|
||||||
|
[1601858142.917224] nem: 0 event: 100 len: 66 seq: 1 [Location]
|
||||||
|
UUID: 0af267be-17d3-4103-9f76-6f697e13bcec
|
||||||
|
(1, {'latitude': 40.031075, 'altitude': 3.0, 'longitude': -74.823518})
|
||||||
|
(2, {'latitude': 40.031165, 'altitude': 3.0, 'longitude': -74.523412})
|
||||||
|
[1601858142.917466] nem: 1 event: 101 len: 14 seq: 2 [Pathloss]
|
||||||
|
UUID: 0af267be-17d3-4103-9f76-6f697e13bcec
|
||||||
|
(2, {'forward': 90.0, 'reverse': 90.0})
|
||||||
|
[1601858142.917889] nem: 2 event: 101 len: 14 seq: 3 [Pathloss]
|
||||||
|
UUID: 0af267be-17d3-4103-9f76-6f697e13bcec
|
||||||
|
(1, {'forward': 90.0, 'reverse': 90.0})
|
||||||
|
```
|
160
docs/emane/files.md
Normal file
160
docs/emane/files.md
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
# EMANE XML Files
|
||||||
|
* Table of Contents
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Introduction to the XML files generated by CORE used to drive EMANE for
|
||||||
|
a given node.
|
||||||
|
|
||||||
|
[EMANE Demo 0](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)
|
||||||
|
may provide more helpful details.
|
||||||
|
|
||||||
|
## Run Demo
|
||||||
|
1. Select `Open...` within the GUI
|
||||||
|
1. Load `emane-demo-files.xml`
|
||||||
|
1. Click ![Start Button](../static/gui/start.gif)
|
||||||
|
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||||
|
|
||||||
|
## Example Demo
|
||||||
|
We will take a look at the files generated in the example demo provided. In this
|
||||||
|
case we are running the RF Pipe model.
|
||||||
|
|
||||||
|
### Generated Files
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|---|---|
|
||||||
|
|\<node name>-platform.xml|configuration file for the emulator instances|
|
||||||
|
|\<interface name>-nem.xml|configuration for creating a NEM|
|
||||||
|
|\<interface name>-mac.xml|configuration for defining a NEMs MAC layer|
|
||||||
|
|\<interface name>-phy.xml|configuration for defining a NEMs PHY layer|
|
||||||
|
|\<interface name>-trans-virtual.xml|configuration when a virtual transport is being used|
|
||||||
|
|\<interface name>-trans.xml|configuration when a raw transport is being used|
|
||||||
|
|
||||||
|
### Listing File
|
||||||
|
Below are the files within n1 after starting the demo session.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# ls
|
||||||
|
eth0-mac.xml eth0-trans-virtual.xml n1-platform.xml var.log
|
||||||
|
eth0-nem.xml ipforward.sh quaggaboot.sh var.run
|
||||||
|
eth0-phy.xml n1-emane.log usr.local.etc.quagga var.run.quagga
|
||||||
|
```
|
||||||
|
|
||||||
|
### Platform XML
|
||||||
|
The root configuration file used to run EMANE for a node is the platform xml file.
|
||||||
|
In this demo we are looking at `n1-platform.xml`.
|
||||||
|
|
||||||
|
* lists all configuration values set for the platform
|
||||||
|
* The unique nem id given for each interface that EMANE will create for this node
|
||||||
|
* The path to the file(s) used for definition for a given nem
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# cat n1-platform.xml
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE platform SYSTEM "file:///usr/share/emane/dtd/platform.dtd">
|
||||||
|
<platform>
|
||||||
|
<param name="antennaprofilemanifesturi" value=""/>
|
||||||
|
<param name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||||
|
<param name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<param name="eventservicettl" value="1"/>
|
||||||
|
<param name="otamanagerchannelenable" value="1"/>
|
||||||
|
<param name="otamanagerdevice" value="ctrl0"/>
|
||||||
|
<param name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||||
|
<param name="otamanagerloopback" value="0"/>
|
||||||
|
<param name="otamanagermtu" value="0"/>
|
||||||
|
<param name="otamanagerpartcheckthreshold" value="2"/>
|
||||||
|
<param name="otamanagerparttimeoutthreshold" value="5"/>
|
||||||
|
<param name="otamanagerttl" value="1"/>
|
||||||
|
<param name="stats.event.maxeventcountrows" value="0"/>
|
||||||
|
<param name="stats.ota.maxeventcountrows" value="0"/>
|
||||||
|
<param name="stats.ota.maxpacketcountrows" value="0"/>
|
||||||
|
<nem id="1" name="tap1.0.f" definition="eth0-nem.xml">
|
||||||
|
<transport definition="eth0-trans-virtual.xml">
|
||||||
|
<param name="device" value="eth0"/>
|
||||||
|
</transport>
|
||||||
|
</nem>
|
||||||
|
</platform>
|
||||||
|
```
|
||||||
|
|
||||||
|
### NEM XML
|
||||||
|
The nem definition will contain reference to the transport, mac, and phy xml
|
||||||
|
definitions being used for a given nem.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# cat eth0-nem.xml
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE nem SYSTEM "file:///usr/share/emane/dtd/nem.dtd">
|
||||||
|
<nem name="emane_rfpipe NEM">
|
||||||
|
<transport definition="eth0-trans-virtual.xml"/>
|
||||||
|
<mac definition="eth0-mac.xml"/>
|
||||||
|
<phy definition="eth0-phy.xml"/>
|
||||||
|
</nem>
|
||||||
|
```
|
||||||
|
|
||||||
|
### MAC XML
|
||||||
|
MAC layer configuration settings would be found in this file. CORE will write
|
||||||
|
out all values, even if the value is a default value.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# cat eth0-mac.xml
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE mac SYSTEM "file:///usr/share/emane/dtd/mac.dtd">
|
||||||
|
<mac name="emane_rfpipe MAC" library="rfpipemaclayer">
|
||||||
|
<param name="datarate" value="1000000"/>
|
||||||
|
<param name="delay" value="0.000000"/>
|
||||||
|
<param name="enablepromiscuousmode" value="0"/>
|
||||||
|
<param name="flowcontrolenable" value="0"/>
|
||||||
|
<param name="flowcontroltokens" value="10"/>
|
||||||
|
<param name="jitter" value="0.000000"/>
|
||||||
|
<param name="neighbormetricdeletetime" value="60.000000"/>
|
||||||
|
<param name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||||
|
<param name="radiometricenable" value="0"/>
|
||||||
|
<param name="radiometricreportinterval" value="1.000000"/>
|
||||||
|
</mac>
|
||||||
|
```
|
||||||
|
|
||||||
|
### PHY XML
|
||||||
|
PHY layer configuration settings would be found in this file. CORE will write
|
||||||
|
out all values, even if the value is a default value.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# cat eth0-phy.xml
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE phy SYSTEM "file:///usr/share/emane/dtd/phy.dtd">
|
||||||
|
<phy name="emane_rfpipe PHY">
|
||||||
|
<param name="bandwidth" value="1000000"/>
|
||||||
|
<param name="fading.model" value="none"/>
|
||||||
|
<param name="fading.nakagami.distance0" value="100.000000"/>
|
||||||
|
<param name="fading.nakagami.distance1" value="250.000000"/>
|
||||||
|
<param name="fading.nakagami.m0" value="0.750000"/>
|
||||||
|
<param name="fading.nakagami.m1" value="1.000000"/>
|
||||||
|
<param name="fading.nakagami.m2" value="200.000000"/>
|
||||||
|
<param name="fixedantennagain" value="0.000000"/>
|
||||||
|
<param name="fixedantennagainenable" value="1"/>
|
||||||
|
<param name="frequency" value="2347000000"/>
|
||||||
|
<param name="frequencyofinterest" value="2347000000"/>
|
||||||
|
<param name="noisebinsize" value="20"/>
|
||||||
|
<param name="noisemaxclampenable" value="0"/>
|
||||||
|
<param name="noisemaxmessagepropagation" value="200000"/>
|
||||||
|
<param name="noisemaxsegmentduration" value="1000000"/>
|
||||||
|
<param name="noisemaxsegmentoffset" value="300000"/>
|
||||||
|
<param name="noisemode" value="none"/>
|
||||||
|
<param name="propagationmodel" value="2ray"/>
|
||||||
|
<param name="subid" value="1"/>
|
||||||
|
<param name="systemnoisefigure" value="4.000000"/>
|
||||||
|
<param name="timesyncthreshold" value="10000"/>
|
||||||
|
<param name="txpower" value="0.000000"/>
|
||||||
|
</phy>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Transport XML
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# cat eth0-trans-virtual.xml
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!DOCTYPE transport SYSTEM "file:///usr/share/emane/dtd/transport.dtd">
|
||||||
|
<transport name="Virtual Transport" library="transvirtual">
|
||||||
|
<param name="bitrate" value="0"/>
|
||||||
|
<param name="devicepath" value="/dev/net/tun"/>
|
||||||
|
</transport>
|
||||||
|
```
|
104
docs/emane/gpsd.md
Normal file
104
docs/emane/gpsd.md
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
# EMANE GPSD Integration
|
||||||
|
* Table of Contents
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Introduction to integrating gpsd in CORE with EMANE.
|
||||||
|
|
||||||
|
[EMANE Demo 0](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)
|
||||||
|
may provide more helpful details.
|
||||||
|
|
||||||
|
> **WARNING:** requires installation of [gpsd](https://gpsd.gitlab.io/gpsd/index.html)
|
||||||
|
|
||||||
|
## Run Demo
|
||||||
|
1. Select `Open...` within the GUI
|
||||||
|
1. Load `emane-demo-gpsd.xml`
|
||||||
|
1. Click ![Start Button](../static/gui/start.gif)
|
||||||
|
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||||
|
|
||||||
|
## Example Demo
|
||||||
|
This section will cover how to run a gpsd location agent within EMANE, that will
|
||||||
|
write out locations to a pseudo terminal file. That file can be read in by the
|
||||||
|
gpsd server and make EMANE location events available to gpsd clients.
|
||||||
|
|
||||||
|
### EMANE GPSD Event Daemon
|
||||||
|
First create an `eventdaemon.xml` file on n1 with the following contents.
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventdaemon SYSTEM "file:///usr/share/emane/dtd/eventdaemon.dtd">
|
||||||
|
<eventdaemon nemid="1">
|
||||||
|
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<param name="eventservicedevice" value="ctrl0"/>
|
||||||
|
<agent definition="gpsdlocationagent.xml"/>
|
||||||
|
</eventdaemon>
|
||||||
|
```
|
||||||
|
|
||||||
|
Then create the `gpsdlocationagent.xml` file on n1 with the following contents.
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventagent SYSTEM "file:///usr/share/emane/dtd/eventagent.dtd">
|
||||||
|
<eventagent library="gpsdlocationagent">
|
||||||
|
<param name="pseudoterminalfile" value="gps.pty"/>
|
||||||
|
</eventagent>
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the EMANE event agent. This will facilitate feeding location events
|
||||||
|
out to a pseudo terminal file defined above.
|
||||||
|
```shell
|
||||||
|
emaneeventd eventdaemon.xml -r -d -l 3 -f emaneeventd.log
|
||||||
|
```
|
||||||
|
|
||||||
|
Start gpsd, reading in the pseudo terminal file.
|
||||||
|
```shell
|
||||||
|
gpsd -G -n -b $(cat gps.pty)
|
||||||
|
```
|
||||||
|
|
||||||
|
### EMANE EEL Event Daemon
|
||||||
|
|
||||||
|
EEL Events will be played out from the actual host machine over the designated
|
||||||
|
control network interface. Create the following files in the same directory
|
||||||
|
somewhere on your host.
|
||||||
|
|
||||||
|
Create `eventservice.xml` on the host machine with the following contents.
|
||||||
|
|
||||||
|
> **NOTE:** make sure the below eventservicedevice matches the control network
|
||||||
|
> device being used on the host for EMANE
|
||||||
|
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventservice SYSTEM "file:///usr/share/emane/dtd/eventservice.dtd">
|
||||||
|
<eventservice>
|
||||||
|
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||||
|
<param name="eventservicedevice" value="b.9001.1"/>
|
||||||
|
<generator definition="eelgenerator.xml"/>
|
||||||
|
</eventservice>
|
||||||
|
```
|
||||||
|
|
||||||
|
Create `eelgenerator.xml` on the host machine with the following contents.
|
||||||
|
```shell
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE eventgenerator SYSTEM "file:///usr/share/emane/dtd/eventgenerator.dtd">
|
||||||
|
<eventgenerator library="eelgenerator">
|
||||||
|
<param name="inputfile" value="scenario.eel" />
|
||||||
|
<paramlist name="loader">
|
||||||
|
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||||
|
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||||
|
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||||
|
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||||
|
</paramlist>
|
||||||
|
</eventgenerator>
|
||||||
|
```
|
||||||
|
|
||||||
|
Create `scenario.eel` file with the following contents.
|
||||||
|
```shell
|
||||||
|
0.0 nem:1 location gps 40.031075,-74.523518,3.000000
|
||||||
|
0.0 nem:2 location gps 40.031165,-74.523412,3.000000
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the EEL event service, which will send the events defined in the file above
|
||||||
|
over the control network to all EMANE nodes. These location events will be received
|
||||||
|
and provided to gpsd. This allow gpsd client to connect to and get gps locations.
|
||||||
|
```shell
|
||||||
|
emaneeventservice eventservice.xml -l 3
|
||||||
|
```
|
||||||
|
|
80
docs/emane/precomputed.md
Normal file
80
docs/emane/precomputed.md
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
# EMANE Procomputed
|
||||||
|
* Table of Contents
|
||||||
|
{:toc}
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Introduction to using the precomputed propagation model.
|
||||||
|
|
||||||
|
[EMANE Demo 1](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-1)
|
||||||
|
for more specifics.
|
||||||
|
|
||||||
|
### Run Demo
|
||||||
|
1. Select `Open...` within the GUI
|
||||||
|
1. Load `emane-demo-precomputed.xml`
|
||||||
|
1. Click ![Start Button](../static/gui/start.gif)
|
||||||
|
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||||
|
|
||||||
|
## Example Demo
|
||||||
|
This demo is uing the RF Pipe model witht he propagation model set to
|
||||||
|
precomputed.
|
||||||
|
|
||||||
|
### Failed Pings
|
||||||
|
Due to using precomputed and having not sent any pathloss events, the nodes
|
||||||
|
cannot ping eachother yet.
|
||||||
|
|
||||||
|
Open a terminal on n1.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# ping 10.0.0.2
|
||||||
|
connect: Network is unreachable
|
||||||
|
```
|
||||||
|
|
||||||
|
### EMANE Shell
|
||||||
|
You can leverage `emanesh` to investigate why packets are being dropped.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy BroadcastPacketDropTable0 UnicastPacketDropTable0
|
||||||
|
nem 1 phy BroadcastPacketDropTable0
|
||||||
|
| NEM | Out-of-Band | Rx Sensitivity | Propagation Model | Gain Location | Gain Horizon | Gain Profile | Not FOI | Spectrum Clamp | Fade Location | Fade Algorithm | Fade Select |
|
||||||
|
| 2 | 0 | 0 | 169 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
|
||||||
|
|
||||||
|
nem 1 phy UnicastPacketDropTable0
|
||||||
|
| NEM | Out-of-Band | Rx Sensitivity | Propagation Model | Gain Location | Gain Horizon | Gain Profile | Not FOI | Spectrum Clamp | Fade Location | Fade Algorithm | Fade Select |
|
||||||
|
```
|
||||||
|
|
||||||
|
In the example above we can see that the reason packets are being dropped is due to
|
||||||
|
the propogation model and that is because we have not issued any pathloss events.
|
||||||
|
You can run another command to validate if you have received any pathloss events.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy PathlossEventInfoTable
|
||||||
|
nem 1 phy PathlossEventInfoTable
|
||||||
|
| NEM | Forward Pathloss | Reverse Pathloss |
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pathloss Events
|
||||||
|
On the host we will send pathloss events from all nems to all other nems.
|
||||||
|
|
||||||
|
> **NOTE:** make sure properly specify the right control network device
|
||||||
|
|
||||||
|
```shell
|
||||||
|
emaneevent-pathloss 1:2 90 -i <controlnet device>
|
||||||
|
```
|
||||||
|
|
||||||
|
Now if we check for pathloss events on n2 we will see what was just sent above.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy PathlossEventInfoTable
|
||||||
|
nem 1 phy PathlossEventInfoTable
|
||||||
|
| NEM | Forward Pathloss | Reverse Pathloss |
|
||||||
|
| 2 | 90.0 | 90.0
|
||||||
|
```
|
||||||
|
|
||||||
|
You should also now be able to ping n1 from n2.
|
||||||
|
```shell
|
||||||
|
root@n1:/tmp/pycore.46777/n1.conf# ping -c 3 10.0.0.2
|
||||||
|
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
|
||||||
|
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=3.06 ms
|
||||||
|
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=2.12 ms
|
||||||
|
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=1.99 ms
|
||||||
|
|
||||||
|
--- 10.0.0.2 ping statistics ---
|
||||||
|
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
|
||||||
|
rtt min/avg/max/mdev = 1.991/2.393/3.062/0.479 ms
|
||||||
|
```
|
Loading…
Reference in a new issue