Merge branch 'develop' of https://github.com/coreemu/core into develop

This commit is contained in:
Blake Harnden 2020-10-04 18:54:41 -07:00
commit ce7736a95e
9 changed files with 1050 additions and 0 deletions

View 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>

View 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>

View 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>

View 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>

View file

@ -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
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
The CORE configuration file **/etc/core/core.conf** has options specific to

103
docs/emane/eel.md Normal file
View 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
View 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
View 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
View 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
```