blob: 270ce93b1ccf211e16d3174150aa7c63eabeee9a [file] [log] [blame]
<!DOCTYPE html><html lang="en-us" >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="generator" content="Source Themes Academic 4.8.0">
<meta name="author" content="Fraunhofer FOKUS">
<meta name="description" content="The Simple Network Simulator (SNS) aims to provide simple and fast capabilities for the transmission of V2X-messages using Ad hoc communication. In order to stay performant the simulator makes abstractions in certain places.">
<link rel="alternate" hreflang="en-us" href="https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_sns/">
<meta name="theme-color" content="#68145C">
<script src="/mosaic/js/mathjax-config.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/academicons/1.8.6/css/academicons.min.css" integrity="sha512-MCWBwPSput2UWNwyznVFLbD2iUc1e5VsdD1zahsWVzkDSUzyHhMZ4kCS3wgYSRm0mU+glwD/Q9lSJrDPwbUL2A==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-1/css/all.min.css" integrity="sha512-ZYg+hQvLlM0W9C3P6vTpes5LmJ66G2EsroxDNzwD6qiulckldb29eD9I672HL2X+LH5nRhY1sQqZLJGB+aUUPg==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css" integrity="sha512-H9jrZiiopUdsLpg94A333EfumgUBpO9MdbxStdeITo+KEIMaNfHNvwyjjDJb+ERPaRS6DpyRlKbvPUasNItRyw==" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-light.min.css" crossorigin="anonymous" title="hl-light">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-light.min.css" crossorigin="anonymous" title="hl-dark" disabled>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.2.2/lazysizes.min.js" integrity="sha512-TmDwFLhg3UA4ZG0Eb4MIyT1O1Mb+Oww5kFG0uHqXsdbyZz9DcvYQhKpGgNkamAI6h2lGGZq2X8ftOJvF/XjTUg==" crossorigin="anonymous" async></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.1.0/es5/tex-chtml.min.js" integrity="sha512-uwL1UtpYdWra2iqJlAW8Ts0s9Os6IxWLDJDF/BnWdhDmT7DEMFba3GPsFwmV3QiTNcUyl2GB5vsgycB/MOvo9g==" crossorigin="anonymous" async></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,400i,700,700i%7CRoboto+Mono&display=swap">
<link rel="stylesheet" href="/mosaic/css/academic.css">
<link rel="manifest" href="/mosaic/index.webmanifest">
<link rel="icon" type="image/png" href="/mosaic/images/icon_hu6bdfb97c7e23190c70e41ca0e15a9fce_30436_32x32_fill_lanczos_center_2.png">
<link rel="apple-touch-icon" type="image/png" href="/mosaic/images/icon_hu6bdfb97c7e23190c70e41ca0e15a9fce_30436_192x192_fill_lanczos_center_2.png">
<link rel="canonical" href="https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_sns/">
<meta property="twitter:card" content="summary">
<meta property="og:site_name" content="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility">
<meta property="og:url" content="https://staging.eclipse.org/mosaic/docs/simulators/network_simulator_sns/">
<meta property="og:title" content="Simple Network Simulator (SNS) | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility">
<meta property="og:description" content="The Simple Network Simulator (SNS) aims to provide simple and fast capabilities for the transmission of V2X-messages using Ad hoc communication. In order to stay performant the simulator makes abstractions in certain places."><meta property="og:image" content="https://staging.eclipse.org/mosaic/images/logo.svg">
<meta property="twitter:image" content="https://staging.eclipse.org/mosaic/images/logo.svg"><meta property="og:locale" content="en-us">
<meta property="article:published_time" content="2020-06-30T00:00:00&#43;01:00">
<meta property="article:modified_time" content="2020-06-30T00:00:00&#43;01:00">
<title>Simple Network Simulator (SNS) | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility</title>
</head>
<body id="top" data-spy="scroll" data-offset="70" data-target="#TableOfContents" class=" page-mosaic page-docs page-simulators page-network_simulator_sns ">
<aside class="search-results" id="search">
<div class="container">
<section class="search-header">
<div class="row no-gutters justify-content-between mb-3">
<div class="col-10 col-md-3">
<div class="logo" style="background-image: url(/mosaic/img/logos/mosaic/EclipseMOSAIC-Logo-RGB-positiv.svg)"></div>
</div>
<div class="col-2 col-md-4 col-search-close">
<a class="js-search" href="#"><i class="fas fa-times-circle text-muted" aria-hidden="true"></i></a>
</div>
</div>
<div id="search-box">
<input name="q" id="search-query" placeholder="Search..." autocapitalize="off"
autocomplete="off" autocorrect="off" spellcheck="false" type="search">
</div>
</section>
<section class="section-search-results">
<div id="search-hits">
</div>
</section>
</div>
</aside>
<nav class="navbar navbar-expand-lg navbar-light compensate-for-scrollbar" id="navbar-main">
<div class="container">
<div class="d-none d-lg-inline-flex">
<a style="visibility:visible;" class="navbar-brand" href="/mosaic/"><img src="/mosaic/images/logo.svg" alt="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"></a>
</div>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-content-mobile" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span><i class="fas fa-bars"></i></span>
</button>
<div class="navbar-brand-mobile-wrapper d-inline-flex d-lg-none">
<a class="navbar-brand" href="/mosaic/"><img src="/mosaic/images/logo.svg" alt="Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"></a>
</div>
<div id="navbar-content" class="navbar-collapse main-menu-item collapse justify-content-start">
<ul class="navbar-nav d-md-inline-flex">
<li class="nav-item">
<a class="nav-link " href="/mosaic/about/"><span>About</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/news/"><span>News</span></a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/mosaic/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/tutorials/"><span>Tutorials</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/download/"><span>Download</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/community/"><span>Community</span></a>
</li>
</ul>
</div>
<ul class="nav-icons navbar-nav flex-row ml-auto d-flex pl-md-2">
<li class="nav-item">
<a class="nav-link js-search" href="#" aria-label="Search"><i class="fas fa-search" aria-hidden="true"></i></a>
</li>
<li class="nav-item ">
<a href="https://github.com/eclipse/mosaic" target="blank">
<i class="fab fa-github" aria-hidden="true"></i>
</a>
</li>
</ul>
<div id="navbar-content-mobile" class="navbar-collapse main-menu-item collapse justify-content-start d-lg-none">
<ul class="navbar-nav d-inline-flex">
<li class="nav-item">
<a class="nav-link " href="/mosaic/about/"><span>About</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/news/"><span>News</span></a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/mosaic/docs/"><span>Documentation</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/tutorials/"><span>Tutorials</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/download/"><span>Download</span></a>
</li>
<li class="nav-item">
<a class="nav-link " href="/mosaic/community/"><span>Community</span></a>
</li>
</ul>
</div>
</div>
</nav>
<div class="docs container">
<div class="row flex-xl-nowrap">
<div class="docs-sidebar col-12 col-md-3 col-xl-3">
<div class="docs-version">
<a class="" data-bs-toggle="tooltip" data-bs-placement="bottom" title="The documentation corresponds to the latest version of Eclipse MOSAIC 21.1-SNAPSHOT." href="https://github.com/eclipse/mosaic">
<i class="fab fa-github"></i>&nbsp;Eclipse MOSAIC 21.1-SNAPSHOT
</a>
</div>
<form class="docs-search d-flex align-items-center">
<button class="btn docs-toggle d-md-none p-0 mr-3" type="button" data-bs-toggle="collapse" data-bs-target="#docs-nav" aria-controls="docs-nav" aria-expanded="false" aria-label="Toggle section navigation">
<span><i class="fas fa-bars"></i></span>
</button>
<input name="q" type="search" class="form-control" placeholder="Search..." autocomplete="off">
</form>
<nav class="collapse docs-links" id="docs-nav">
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/getting_started/">Getting Started</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/getting_started/">Download</a>
</li>
<li >
<a href="/mosaic/docs/getting_started/run_mosaic/">Run Eclipse MOSAIC</a>
</li>
<li >
<a href="/mosaic/docs/getting_started/results/">Simulation Results</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/visualization/">Visualization</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/visualization/">WebSocket Visualizer</a>
</li>
<li >
<a href="/mosaic/docs/visualization/filevis/">File Output</a>
</li>
<li >
<a href="/mosaic/docs/visualization/statistics/">Statistics Output</a>
</li>
<li >
<a href="/mosaic/docs/visualization/itef/">ITEF</a>
</li>
<li >
<a href="/mosaic/docs/visualization/phabmap/">PHABMap</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/simulators/">Simulators</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/simulators/">Overview</a>
</li>
<li >
<a href="/mosaic/docs/simulators/application_simulator/">Application - Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/application_mapping/">Application - Mapping</a>
</li>
<li >
<a href="/mosaic/docs/simulators/traffic_simulator_sumo/">Traffic - Eclipse SUMO</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_omnetpp/">Network - OMNeT&#43;&#43;</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_ns3/">Network - ns-3</a>
</li>
<li class="active">
<a href="/mosaic/docs/simulators/network_simulator_sns/">Network - SNS</a>
</li>
<li >
<a href="/mosaic/docs/simulators/network_simulator_cell/">Network - Cell</a>
</li>
<li >
<a href="/mosaic/docs/simulators/environment_simulator/">Environment Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/battery_simulator/">Battery Simulator</a>
</li>
<li >
<a href="/mosaic/docs/simulators/vms_simulator/">VMS Simulator</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/building_scenarios/">Building Scenarios</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/building_scenarios/">Simulation Scenarios</a>
</li>
<li >
<a href="/mosaic/docs/building_scenarios/scenario_convert/">Scenario Convert</a>
</li>
<li >
<a href="/mosaic/docs/building_scenarios/scenario_configuration/">Additional Scenario Configuration</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/develop_applications/">Create Applications</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/develop_applications/">Basics</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/communication/">V2X Communication</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/event_scheduler/">Event Scheduling</a>
</li>
<li >
<a href="/mosaic/docs/develop_applications/road_traffic/">Scenario Database</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/mosaic_configuration/">MOSAIC Configuration</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/mosaic_configuration/">Configuration Files</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/scenario_config/">Scenario Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/mapping_ambassador_config/">Mapping Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/environment_config/">Environment Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/sns_config/">SNS Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_config/">Cell Basic Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_network_config/">Cell Network Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/cell_region_config/">Cell Region Configuration</a>
</li>
<li >
<a href="/mosaic/docs/mosaic_configuration/sumo_config/">SUMO Configuration</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/extending_mosaic/">Extending Eclipse MOSAIC</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/extending_mosaic/">Core Concepts</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/simulator_coupling/">Simulator Coupling</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/interactions/">Interactions</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/application_ambassador_details/">Application Ambassador</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/sumo_ambassador_details/">Sumo Ambassador</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/omnetpp_details/">OMNeT&#43;&#43; Federate</a>
</li>
<li >
<a href="/mosaic/docs/extending_mosaic/delay_models/">Delay Models</a>
</li>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/api_docs/">API Documentation</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/api_docs/">Javadoc</a>
</li>
</ul>
</div>
<div class="nav-bottom">
<img src="/mosaic/img/logos/mosaic/EclipseMOSAIC-Medallion-RGB-single-navy.svg">
</div>
</nav>
</div>
<div class="docs-toc d-none d-xl-block col-xl-2">
<ul class="nav toc-top">
<li><a href="#" id="back_to_top" class="docs-toc-title">Contents</a></li>
</ul>
<nav id="TableOfContents">
<ul>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#transmission-logic">Transmission Logic</a>
<ul>
<li><a href="#topocasts">TopoCasts</a></li>
<li><a href="#geocasts">GeoCasts</a></li>
</ul>
</li>
<li><a href="#transmission-models">Transmission Models</a>
<ul>
<li><a href="#simpleadhoctransmissionmodel"><code>SimpleAdhocTransmissionModel</code></a></li>
<li><a href="#sophisticatedadhoctransmissionmodel"><code>SophisticatedAdhocTransmissionModel</code></a></li>
</ul>
</li>
<li><a href="#accessing-sns-functionality-from-your-applications">Accessing SNS-functionality from your applications</a></li>
</ul>
</nav>
</div>
<style>
@media (min-width:1140px) {
.docs-sidebar {
flex: 0 1 320px;
}
.docs-toc {
flex: 0 1 280px;
}
main.docs-content.no-docs-toc {
padding-bottom: 0 !important;
max-width: calc(100% - 320px) !important;
flex: 0 1 calc(100% - 320px);
width: 100%;
}
main.docs-content {
padding-bottom: 0 !important;
max-width: calc(100% - 600px) !important;
flex: 0 1 calc(100% - 600px);
width: 100%;
}
}
@media (max-width: 770px) {
main.docs-content {
max-width: 100% !important;
width: 100%;
}
}
@media (min-width: 771px) and(max-width: 1139px) {
main.docs-content.no-docs-toc {
padding-bottom: 0 !important;
max-width: calc(100% - 320px) !important;
width: 100%;
}
}
</style>
<main class="docs-content col-12 col-md-9 col-xl-auto py-md-3 pl-md-4" role="main">
<article class="article">
<div class="docs-article-container">
<h1>Simple Network Simulator (SNS)</h1>
<div class="article-style">
<p>The Simple Network Simulator (SNS) aims to provide simple and fast capabilities for the
transmission of V2X-messages using Ad hoc communication. In order to stay performant the simulator makes abstractions
in certain places. Those abstractions will be discussed later on.</p>
<h2 id="configuration">Configuration</h2>
<p>The SNS offers some configurability regarding the way transmissions are simulated.</p>
<p><strong>Main Configuration:</strong></p>
<table>
<thead>
<tr>
<th style="text-align:left">Parameter</th>
<th style="text-align:left">Description</th>
<th style="text-align:left">type</th>
<th style="text-align:left">Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>maximumTtl</code></td>
<td style="text-align:left">Defines the upper bound for the amount of hops a message can make. (Note: messages can have individual <code>ttl</code>&rsquo;s)</td>
<td style="text-align:left">int</td>
<td style="text-align:left"><code>10</code></td>
</tr>
<tr>
<td style="text-align:left"><code>singlehopRadius</code></td>
<td style="text-align:left">Fallback radius to be used for transmission, if no radius is defined in the <code>AdhocConfiguration</code></td>
<td style="text-align:left">double</td>
<td style="text-align:left"><code>509.4</code></td>
</tr>
<tr>
<td style="text-align:left"><code>singlehopDelay</code></td>
<td style="text-align:left">A delay configuration for the direct communication between two nodes. (
<a href="/mosaic/docs/extending_mosaic/delay_models/">
See here
</a>
)</td>
<td style="text-align:left">Delay</td>
<td style="text-align:left">`ConstantDelay |</td>
</tr>
<tr>
<td style="text-align:left"><code>singlehopTransmission</code></td>
<td style="text-align:left">This contains the transmission configurations for <code>lossProbability</code> and <code>maxRetries</code>.</td>
<td style="text-align:left">CTransmission</td>
<td style="text-align:left">n/a</td>
</tr>
<tr>
<td style="text-align:left"><code>adhocTransmissionModel</code></td>
<td style="text-align:left">A class extending <code>AdhocTransmissionModel</code>, this will decide the logic for transmissions.</td>
<td style="text-align:left">AdhocTransmissionModel</td>
<td style="text-align:left"><code>SimpleAdhoc TransmissionModel</code></td>
</tr>
</tbody>
</table>
<blockquote>
<p>On default the SNS will use the <code>SimpleAdhocTransmissionModel</code> with a <code>ConstantDelay</code> using 0 as delay. This means it usually
makes sense to specify the <code>AdhocTransmissionModel</code> explicitly and use a more realistic <code>Delay</code>.
<strong>Example Configuration:</strong></p>
</blockquote>
<pre><code class="language-json">{
&quot;maximumTtl&quot;: 20,
&quot;singlehopRadius&quot;: 300.5,
&quot;singlehopDelay&quot;: {
&quot;type&quot;: &quot;SimpleRandomDelay&quot;,
&quot;steps&quot;: 5,
&quot;minDelay&quot;: &quot;1.5 ms&quot;,
&quot;maxDelay&quot;: &quot;2.5 ms&quot;
},
&quot;singlehopTransmission&quot;: {
&quot;lossProbability&quot;: 0.0,
&quot;maxRetries&quot;: 0
},
&quot;adhocTransmissionModel&quot;: {
&quot;type&quot;: &quot;SimpleAdhocTransmissionModel&quot;,
&quot;simpleMultihopDelay&quot;: {
&quot;type&quot;: &quot;GammaRandomDelay&quot;,
&quot;minDelay&quot;: &quot;10 ms&quot;,
&quot;expDelay&quot;: &quot;30 ms&quot;
},
&quot;simpleMultihopTransmission&quot;: {
&quot;lossProbability&quot;: 0.1,
&quot;maxRetries&quot;: 2
}
}
}
</code></pre>
<div class="alert alert-tip">
<div>
<p>Read the detailed documentation of the
<a href="/mosaic/docs/mosaic_configuration/sns_config/">
SNS Configuration
</a>
.</p>
</div>
</div>
<h2 id="transmission-logic">Transmission Logic</h2>
<p>SNS differentiates between two types of Ad hoc transmissions, geographically- and topologically-scoped transmissions, which
generally are abbreviated with <em>GeoCast</em> and <em>TopoCast</em> respectively.<br>
GeoCasts are limited to <em>BroadCasts</em>. Accordingly, there is no explicit addressing
of receivers (other than 255.255.255.255), instead a destination area is specified. However, GeoCasts allow for multihop forwarding.<br>
TopoCasts on the other hand use means of IPv4 addressing to transmit messages. Since the SNS was not build to simulate transmissions using complex topology-constructs, TopoCasts
are limited to transmissions with a single hop. However, TopoCasts support <em>BroadCasts</em> and <em>UniCasts</em> (we are omitting Anycasts).
Most transmissions in the Ad hoc domain will be some form of Broadcast, meaning every reachable entity is eligible to
receive a message.</p>
<div class="svg-wrap mt-1 mb-4">
<div class="inner">
<svg id="mermaid-1603209753374" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="1207.332763671875" style="max-width: 817.0913696289062px;" viewBox="0 0 817.0913696289062 1207.332763671875"><style>#mermaid-1603209753374{font-family:"trebuchet ms",verdana,arial;font-size:16px;fill:#333;}#mermaid-1603209753374 .error-icon{fill:#552222;}#mermaid-1603209753374 .error-text{fill:#552222;stroke:#552222;}#mermaid-1603209753374 .edge-thickness-normal{stroke-width:2px;}#mermaid-1603209753374 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1603209753374 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1603209753374 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1603209753374 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1603209753374 .marker{fill:#333333;}#mermaid-1603209753374 .marker.cross{stroke:#333333;}#mermaid-1603209753374 svg{font-family:"trebuchet ms",verdana,arial;font-size:16px;}#mermaid-1603209753374 .label{font-family:"trebuchet ms",verdana,arial;color:#333;}#mermaid-1603209753374 .label text{fill:#333;}#mermaid-1603209753374 .node rect,#mermaid-1603209753374 .node circle,#mermaid-1603209753374 .node ellipse,#mermaid-1603209753374 .node polygon,#mermaid-1603209753374 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1603209753374 .node .label{text-align:center;}#mermaid-1603209753374 .node.clickable{cursor:pointer;}#mermaid-1603209753374 .arrowheadPath{fill:#333333;}#mermaid-1603209753374 .edgePath .path{stroke:#333333;stroke-width:1.5px;}#mermaid-1603209753374 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1603209753374 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-1603209753374 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-1603209753374 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1603209753374 .cluster text{fill:#333;}#mermaid-1603209753374 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial;font-size:12px;background:hsl(80,100%,96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1603209753374:root{--mermaid-font-family:"trebuchet ms",verdana,arial;}#mermaid-1603209753374 flowchart{fill:apa;}</style><g><g class="output"><g class="clusters"></g><g class="edgePaths"><g class="edgePath LS-id1 LE-id2" id="L-id1-id2" style="opacity: 1;"><path class="path" d="M239.4164047241211,47L239.4164047241211,72L239.9164047241211,97.5" marker-end="url(#arrowhead39)" style="fill:none"></path><defs><marker id="arrowhead39" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id2 LE-id3" id="L-id2-id3" style="opacity: 1;"><path class="path" d="M195.9271276785066,224.93259795438553L112.671875,302.921875L113.171875,337.921875" marker-end="url(#arrowhead40)" style="fill:none"></path><defs><marker id="arrowhead40" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id2 LE-id4" id="L-id2-id4" style="opacity: 1;"><path class="path" d="M283.9056817697356,224.93259795438553L366.1609344482422,302.921875L366.66093444824224,347.42812499999997" marker-end="url(#arrowhead41)" style="fill:none"></path><defs><marker id="arrowhead41" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id3 LE-id5" id="L-id3-id5" style="opacity: 1;"><path class="path" d="M113.171875,478.6171875L112.671875,512.6171875L112.671875,616.9343719482422" marker-end="url(#arrowhead42)" style="fill:none"></path><defs><marker id="arrowhead42" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id4 LE-id6" id="L-id4-id6" style="opacity: 1;"><path class="path" d="M366.66093444824224,469.1109344482418L366.1609344482422,512.6171875L366.6609344482422,547.6171905517579" marker-end="url(#arrowhead43)" style="fill:none"></path><defs><marker id="arrowhead43" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id6 LE-id7" id="L-id6-id7" style="opacity: 1;"><path class="path" d="M314.730715999631,693.3213409996309L218.50390625,779.2515563964844L218.50390625,914.0421752929688" marker-end="url(#arrowhead44)" style="fill:none"></path><defs><marker id="arrowhead44" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id6 LE-id8" id="L-id6-id8" style="opacity: 1;"><path class="path" d="M418.59115610436135,693.321343895639L513.8179626464844,779.2515563964844L514.3179626464845,814.2515625" marker-end="url(#arrowhead45)" style="fill:none"></path><defs><marker id="arrowhead45" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id8 LE-id9" id="L-id8-id9" style="opacity: 1;"><path class="path" d="M451.77749555523815,1010.2923332017227L360.3570251464844,1106.8327941894531L360.3570251464844,1150.8327941894531" marker-end="url(#arrowhead46)" style="fill:none"></path><defs><marker id="arrowhead46" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g><g class="edgePath LS-id8 LE-id10" id="L-id8-id10" style="opacity: 1;"><path class="path" d="M576.8584356425159,1010.292339503968L667.2789001464844,1106.8327941894531L667.2789001464844,1141.3327941894531" marker-end="url(#arrowhead47)" style="fill:none"></path><defs><marker id="arrowhead47" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" transform="" style="opacity: 1;"><g transform="translate(0,0)" class="label"><rect rx="0" ry="0" width="0" height="0"></rect><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id1-id2" class="edgeLabel L-LS-id1' L-LE-id2"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(112.671875,302.921875)" style="opacity: 1;"><g transform="translate(-33.0859375,-9.5)" class="label"><rect rx="0" ry="0" width="66.171875" height="19"></rect><foreignObject width="66.171875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id2-id3" class="edgeLabel L-LS-id2' L-LE-id3">TopoCast</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(366.1609344482422,302.921875)" style="opacity: 1;"><g transform="translate(-29.46875,-9.5)" class="label"><rect rx="0" ry="0" width="58.9375" height="19"></rect><foreignObject width="58.9375" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id2-id4" class="edgeLabel L-LS-id2' L-LE-id4">GeoCast</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(112.671875,512.6171875)" style="opacity: 1;"><g transform="translate(-12.1640625,-9.5)" class="label"><rect rx="0" ry="0" width="24.328125" height="19"></rect><foreignObject width="24.328125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id3-id5" class="edgeLabel L-LS-id3' L-LE-id5">Yes</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(366.1609344482422,512.6171875)" style="opacity: 1;"><g transform="translate(-12.1640625,-9.5)" class="label"><rect rx="0" ry="0" width="24.328125" height="19"></rect><foreignObject width="24.328125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id4-id6" class="edgeLabel L-LS-id4' L-LE-id6">Yes</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(218.50390625,779.2515563964844)" style="opacity: 1;"><g transform="translate(-12.1640625,-9.5)" class="label"><rect rx="0" ry="0" width="24.328125" height="19"></rect><foreignObject width="24.328125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id6-id7" class="edgeLabel L-LS-id6' L-LE-id7">Yes</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(513.8179626464844,779.2515563964844)" style="opacity: 1;"><g transform="translate(-9.3984375,-9.5)" class="label"><rect rx="0" ry="0" width="18.796875" height="19"></rect><foreignObject width="18.796875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id6-id8" class="edgeLabel L-LS-id6' L-LE-id8">No</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(360.3570251464844,1106.8327941894531)" style="opacity: 1;"><g transform="translate(-12.1640625,-9.5)" class="label"><rect rx="0" ry="0" width="24.328125" height="19"></rect><foreignObject width="24.328125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id8-id9" class="edgeLabel L-LS-id8' L-LE-id9">Yes</span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(667.2789001464844,1106.8327941894531)" style="opacity: 1;"><g transform="translate(-9.3984375,-9.5)" class="label"><rect rx="0" ry="0" width="18.796875" height="19"></rect><foreignObject width="18.796875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span id="L-L-id8-id10" class="edgeLabel L-LS-id8' L-LE-id10">No</span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-id1-28" transform="translate(239.4164047241211,27.5)" style="opacity: 1;"><rect rx="0" ry="0" x="-72.1953125" y="-19.5" width="144.390625" height="39" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-62.1953125,-9.5)"><foreignObject width="124.390625" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">V2X-Transmission</div></foreignObject></g></g></g><g class="node default" id="flowchart-id2-29" transform="translate(239.4164047241211,182.7109375)" style="opacity: 1;"><polygon points="85.7109375,0 171.421875,-85.7109375 85.7109375,-171.421875 0,-85.7109375" transform="translate(-85.7109375,85.7109375)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-65.734375,-9.5)"><foreignObject width="131.46875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Transmission Type</div></foreignObject></g></g></g><g class="node default" id="flowchart-id3-32" transform="translate(112.671875,407.76953125)" style="opacity: 1;"><polygon points="70.34765625,0 140.6953125,-70.34765625 70.34765625,-140.6953125 0,-70.34765625" transform="translate(-70.34765625,70.34765625)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-39.1640625,-19)"><foreignObject width="78.328125" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Broadcast<br>or Unicast?</div></foreignObject></g></g></g><g class="node default" id="flowchart-id4-33" transform="translate(366.1609344482422,407.76953125)" style="opacity: 1;"><polygon points="60.84140625,0 121.6828125,-60.84140625 60.84140625,-121.6828125 0,-60.84140625" transform="translate(-60.84140625,60.84140625)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-38.1015625,-9.5)"><foreignObject width="76.203125" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Broadcast?</div></foreignObject></g></g></g><g class="node default" id="flowchart-id5-38" transform="translate(112.671875,645.9343719482422)" style="opacity: 1;"><rect rx="29" ry="29" x="-104.671875" y="-29" width="209.34375" height="58" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-87.421875,-19)"><foreignObject width="174.84375" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Simulate TopoCast using<br>singlehop configuration.</div></foreignObject></g></g></g><g class="node default" id="flowchart-id6-41" transform="translate(366.1609344482422,645.9343719482422)" style="opacity: 1;"><polygon points="98.8171875,0 197.634375,-98.8171875 98.8171875,-197.634375 0,-98.8171875" transform="translate(-98.8171875,98.8171875)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-70.796875,-19)"><foreignObject width="141.59375" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Simple transmission<br>model?</div></foreignObject></g></g></g><g class="node default" id="flowchart-id7-44" transform="translate(218.50390625,943.0421752929688)" style="opacity: 1;"><rect rx="29" ry="29" x="-116.0234375" y="-29" width="232.046875" height="58" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-98.7734375,-19)"><foreignObject width="197.546875" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Simulate transmission using<br>simpleMultihopDelay.</div></foreignObject></g></g></g><g class="node default" id="flowchart-id8-47" transform="translate(513.8179626464844,943.0421752929688)" style="opacity: 1;"><polygon points="129.290625,0 258.58125,-129.290625 129.290625,-258.58125 0,-129.290625" transform="translate(-129.290625,129.290625)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-104.65625,-19)"><foreignObject width="209.3125" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Sender directly able to reach<br>destination area?</div></foreignObject></g></g></g><g class="node default" id="flowchart-id9-50" transform="translate(360.3570251464844,1170.3327941894531)" style="opacity: 1;"><rect rx="19.5" ry="19.5" x="-115.109375" y="-19.5" width="230.21875" height="39" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-100.234375,-9.5)"><foreignObject width="200.46875" height="19"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Flooding in destination area</div></foreignObject></g></g></g><g class="node default" id="flowchart-id10-53" transform="translate(667.2789001464844,1170.3327941894531)" style="opacity: 1;"><rect rx="29" ry="29" x="-141.8125" y="-29" width="283.625" height="58" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-124.5625,-19)"><foreignObject width="249.125" height="38"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Greedy Forwarding to reach area,<br>then flooding in destination areay.</div></foreignObject></g></g></g></g></g></g></svg>
</div>
<div class="desc">
This flowchart tells how different types of messages are handled internally.
</div>
</div>
<h3 id="topocasts">TopoCasts</h3>
<p>The only way of directly addressing entities is a <em>SingleHopUniCast</em> (see figure below), the sender will try to address an entity
in its transmission range.
<figure id="figure-singlehopunicast-the-rsu-is-directly-addressing-the-green-vehicle">
<a data-fancybox="" href="../images/SingleHopUniCast.png" data-caption="SingleHopUniCast: The RSU is directly addressing the green vehicle.">
<img src="../images/SingleHopUniCast.png" alt="" >
</a>
<figcaption>
SingleHopUniCast: The RSU is directly addressing the green vehicle.
</figcaption>
</figure>
The counterpart to that is a <em>SingleHopBroadCast</em> (see figure below), this form of transmission is commonly used for CAMs (Cooperative Awareness Messages)
and other types of intermediate warning messages to all entities in transmission range.<br>
<figure id="figure-singlehopbroadcast-the-rsu-is-addressing-all-units-in-transmission-range">
<a data-fancybox="" href="../images/SingleHopBroadCast.png" data-caption="SingleHopBroadCast: The RSU is addressing all units in transmission range.">
<img src="../images/SingleHopBroadCast.png" alt="" >
</a>
<figcaption>
SingleHopBroadCast: The RSU is addressing all units in transmission range.
</figcaption>
</figure>
</p>
<h3 id="geocasts">GeoCasts</h3>
<p>As already explained, GeoCasts do not support direct addressing, so there is no form of UniCast. Instead of addressing
entities, GeoCasts specify a destination area in which a message should be distributed.
The SNS supports two ways to simulate GeoCasts.
A simple but performant model (<code>SimpleAdhocTransmissionModel</code>) &amp; a fairly realistic model ( <code>SophisticatedAdhocTransmissionModel</code>).</p>
<p>The simple model assumes a transmission to all entities in the specified area, whereas the delay will be calculated using the configured delay-type and the successful reception will be determined by the uniformly distributed lossProbability.
The figure below depicts this behaviour
<figure id="figure-simple-geobroadcast-the-rsu-is-sending-to-all-entities-in-the-destination-area-all-arrows-transmissions-will-have-a-uniquely-calculated-delay-or-possible-loss">
<a data-fancybox="" href="../images/SimpleMultiHop.png" data-caption="Simple GeoBroadCast: The RSU is sending to all entities in the destination area. All arrows (transmissions) will have a uniquely calculated delay or possible loss.">
<img src="../images/SimpleMultiHop.png" alt="" >
</a>
<figcaption>
Simple GeoBroadCast: The RSU is sending to all entities in the destination area. All arrows (transmissions) will have a uniquely calculated delay or possible loss.
</figcaption>
</figure>
</p>
<p>The realistic model accounts for possible transmission failures more accurately. The easiest case is that the sender itself is inside
of the destination area<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> and will start a
<a href="#flooding-transmission">
Flooding Transmission
</a>
within this area (see figure below).
<figure id="figure-geobroadcast-using-flooding-transmissionflooding-transmission-note-the-area-is-not-limited-to-circles">
<a data-fancybox="" href="../images/FloodingTransmission.png" data-caption="GeoBroadCast using Flooding Transmission. Note: the area is not limited to circles.">
<img src="../images/FloodingTransmission.png" alt="" >
</a>
<figcaption>
GeoBroadCast using <a href="#flooding-transmission">Flooding Transmission</a>. Note: the area is not limited to circles.
</figcaption>
</figure>
</p>
<p>In case the sending entity is outside of the destination area, a
<a href="#approaching-transmission">
Forwarding Transmission
</a>
has to
be executed first. This is can also be described as an <em>AnyCast</em>, since the goal of this transmission is to reach <em>any</em> entity
inside the destination area. We try to achieve this by building a &ldquo;chain&rdquo; of entities, that will forward the message to the destination
are (see figure below).
<figure id="figure-forwarding-transmission-by-building-a-chain-of-vehicles">
<a data-fancybox="" href="../images/ApproachingTransmission.png" data-caption="Forwarding Transmission, by building a &ldquo;chain&rdquo; of vehicles.">
<img src="../images/ApproachingTransmission.png" alt="" >
</a>
<figcaption>
Forwarding Transmission, by building a &ldquo;chain&rdquo; of vehicles.
</figcaption>
</figure>
</p>
<p>The SNS however never uses
<a href="#approaching-transmission">
Forwarding Transmissions
</a>
individually, rather they are combined with a
<a href="#flooding-transmission">
Flooding Transmission
</a>
, which
will simulate a way, that GeaCasts can be implemented in reality. The figure below depicts this behaviour.
<figure id="figure-forwarding-transmission-followed-by-a-flooding-transmissionflooding-transmission-to-realistically-simulate-geocasts">
<a data-fancybox="" href="../images/ApproachingAndFlooding.png" data-caption="Forwarding Transmission followed by a Flooding Transmission to realistically simulate GeoCasts.">
<img src="../images/ApproachingAndFlooding.png" alt="" >
</a>
<figcaption>
Forwarding Transmission followed by a <a href="#flooding-transmission">Flooding Transmission</a> to realistically simulate GeoCasts.
</figcaption>
</figure>
</p>
<h2 id="transmission-models">Transmission Models</h2>
<p>As already mentioned in the previous abstracts, the SNS supports different transmission models for different use cases.
Depending on the configuration of the SNS and the type of message send, different models will be used.
The models are located in the package <code>org.eclipse.mosaic.fed.sns.ambassador.model</code>. This chapter aims to give
a detailed inside in the workings of the models.</p>
<h3 id="simpleadhoctransmissionmodel"><code>SimpleAdhocTransmissionModel</code></h3>
<p>This is the most basic of all transmission models and will be your model of choice if you are not interested in completely
accurate transmission results but care for performance. This model will approximate GeoCasts using the defined <code>simpleMultihopDelay</code>
and <code>simpleMultihopTransmission</code> parameters.
For TopoCasts the usual <code>singlehopDelay</code> will be used.
This model only checks, whether a potential receiver is inside the destination area and has enabled Adhoc capabilities.
If those conditions are met it will simulate the transmission by calculating an actual delay value and saving it into a
transmission-result. Such a result holds information of the success of the transmission, the delay-value, the amount of hops,
and the number of attempts. Though the amount of hops will always be 1 for this model.</p>
<h3 id="sophisticatedadhoctransmissionmodel"><code>SophisticatedAdhocTransmissionModel</code></h3>
<p>This model offers are more realistic simulation of adhoc transmissions, using an implementation of a greedy-forwarding and flooding
algorithm (see
<a href="https://en.wikipedia.org/wiki/Geographic_routing" target="_blank" rel="noopener">
here (greedy forwarding)
</a>
&amp;
<a href="https://en.wikipedia.org/wiki/Flooding_%28computer_networking%29" target="_blank" rel="noopener">
here (flooding)
</a>
). For TopoCasts this model behaves very
similarly to the <code>SimpleAdhocTransmissionModel</code>, since TopoCasts are always configured with only one hop.
For GeoCasts however, this model follows the flowchart above, trying to &ldquo;approach&rdquo; a destination area if it can&rsquo;t be reached directly.</p>
<h4 id="approaching-greedy-forwarding">Approaching (Greedy forwarding)</h4>
<p>Approaching can be imagined as building a &ldquo;chain&rdquo; of entities to reach an area. However, there is no
guarantee, that even if such a chain exists, it will be found. The way that this chain is build follows the subsequent steps:</p>
<ul>
<li>Start from the sender and collect all reachable entities.</li>
<li>Choose out of all reachable entities the one, that is closest to any node in the destination area.</li>
<li>Use the chosen node and repeat the first step.</li>
<li>Repeat until either a node inside the destination area is reached, or the TTL (time to live) is exceeded.</li>
</ul>
<p>By always choosing the node with the shortest distance to the destination area, we omit a lot of possible solutions.
Greedy Forwarding isn&rsquo;t optimal, but offers a performant approach for this problem. &ldquo;Face Routing&rdquo;-algorithms will always
find a path if one exists, however this hasn&rsquo;t been implemented yet (feel free to contribute :).
The figure below shows an example of those shortcomings, the message will be send using the green nodes and won&rsquo;t receive the destination
area, even though there is a possible &ldquo;chain&rdquo; using the yellow nodes.</p>
<div class="svg-wrap mt-1 mb-4">
<div class="inner">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100%"
height="100%"
viewBox="0 0 1000 1100"
preserveAspectRatio="xMinYMin meet"
version="1.1"
id="svg112"
sodipodi:docname="shortcomingsApproaching.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata116">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1377"
id="namedview114"
showgrid="false"
inkscape:zoom="0.54909091"
inkscape:cx="70.460088"
inkscape:cy="483.05537"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g110" />
<defs
id="defs66">
<clipPath
id="EGXEKOJWuGVn">
<path
id="svg_1"
d="m0,0l1673,0l0,1285l-1673,0l0,-1285z"
fill="none" />
</clipPath>
</defs>
<g
id="g110">
<title
id="title68">Layer 1</title>
<path
style="fill:#ffd700;fill-opacity:0.3"
inkscape:connector-curvature="0"
d="m 460.74242,186.92776 c 0,75.84645 -61.4857,137.33215 -137.33215,137.33215 -75.84645,0 -137.33215,-61.4857 -137.33215,-137.33215 0,-75.84645 61.4857,-137.332153 137.33215,-137.332153 75.84645,0 137.33215,61.485703 137.33215,137.332153 z"
id="svg_5"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#caab06;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 460.74242,186.92776 c 0,75.84645 -61.4857,137.33215 -137.33215,137.33215 -75.84645,0 -137.33215,-61.4857 -137.33215,-137.33215 0,-75.84645 61.4857,-137.332153 137.33215,-137.332153 75.84645,0 137.33215,61.485703 137.33215,137.332153 z"
stroke-miterlimit="10"
id="svg_6"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#ffd700"
font-size="20px"
font-style="normal"
font-weight="normal"
x="229.62225"
y="37.811882"
id="svg_7"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Destination Area</text>
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:none;stroke:#ffffff;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:10"
font-size="20px"
font-style="normal"
font-weight="normal"
x="229.62225"
y="37.811882"
stroke-miterlimit="10"
id="svg_8"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Destination Area</text>
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#978006;stroke:none;stroke-opacity:1;"
font-size="20px"
font-style="normal"
font-weight="normal"
x="229.62225"
y="37.811882"
id="svg_9"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Destination Area</text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 529.40849,873.5885 c 0,113.7697 -92.22855,205.9982 -205.99822,205.9982 -113.76968,0 -205.99822,-92.2285 -205.99822,-205.9982 0,-113.76967 92.22854,-205.99822 205.99822,-205.99822 113.76967,0 205.99822,92.22855 205.99822,205.99822 z"
stroke-miterlimit="10"
id="svg_10"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 486.82048,688.91189 c 0,113.76968 -92.22854,205.99822 -205.99822,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76968,0 205.99822,92.22854 205.99822,205.99822 z"
stroke-miterlimit="10"
id="svg_11"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 428.82048,511.91189 c 0,113.76968 -92.22854,205.99822 -205.99822,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76968,0 205.99822,92.22854 205.99822,205.99822 z"
stroke-miterlimit="10"
id="svg_12"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 696.92801,775.58689 c 0,113.76968 -92.2286,205.99821 -205.99825,205.99821 -113.76968,0 -205.99822,-92.22853 -205.99822,-205.99821 0,-113.76968 92.22854,-205.99822 205.99822,-205.99822 113.76965,0 205.99825,92.22854 205.99825,205.99822 z"
stroke-miterlimit="10"
id="svg_13"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 846.82051,657.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.76973,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22854,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z"
stroke-miterlimit="10"
id="svg_14"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 988.82051,527.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.7697,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22857,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z"
stroke-miterlimit="10"
id="svg_15"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 941.82051,347.91189 c 0,113.76968 -92.2286,205.99822 -205.9982,205.99822 -113.7697,0 -205.99827,-92.22854 -205.99827,-205.99822 0,-113.76968 92.22857,-205.99822 205.99827,-205.99822 113.7696,0 205.9982,92.22854 205.9982,205.99822 z"
stroke-miterlimit="10"
id="svg_16"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:8.5, 8;stroke-opacity:0.69803999"
inkscape:connector-curvature="0"
d="m 783.82051,235.91189 c 0,113.76968 -92.2286,205.99822 -205.99825,205.99822 -113.76968,0 -205.99822,-92.22854 -205.99822,-205.99822 0,-113.76968 92.22854,-205.998223 205.99822,-205.998223 113.76965,0 205.99825,92.228543 205.99825,205.998223 z"
stroke-miterlimit="10"
id="svg_17"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#1565c0"
inkscape:connector-curvature="0"
d="m 332.41027,873.5885 c 0,4.97057 -4.02944,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_18"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 332.41027,873.5885 c 0,4.97057 -4.02944,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_19"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#1565c0"
font-size="20px"
font-style="normal"
font-weight="normal"
x="293.62225"
y="854.81189"
id="svg_20"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Sender</text>
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:none;stroke:#ffffff;stroke-width:3;stroke-linejoin:bevel;stroke-miterlimit:10"
font-size="20px"
font-style="normal"
font-weight="normal"
x="293.62225"
y="854.81189"
stroke-miterlimit="10"
id="svg_21"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Sender</text>
<text
style="font-style:normal;font-weight:normal;font-size:20px;font-family:geogebra-sans-serif, sans-serif;text-anchor:start;fill:#1565c0;stroke:none;stroke-opacity:1;"
font-size="20px"
font-style="normal"
font-weight="normal"
x="293.62225"
y="854.81189"
id="svg_22"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">Sender</text>
<path
style="fill:#ffd700"
inkscape:connector-curvature="0"
d="m 649.82231,657.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
id="svg_23"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 649.82231,657.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_24"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#ffd700"
inkscape:connector-curvature="0"
d="m 791.82231,527.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
id="svg_25"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 791.82231,527.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_26"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#006633"
inkscape:connector-curvature="0"
d="m 289.82226,688.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_27"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 289.82226,688.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_28"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#993300"
inkscape:connector-curvature="0"
d="m 310.87082,296.76468 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_29"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 310.87082,296.76468 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_30"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#993300"
inkscape:connector-curvature="0"
d="m 415.68715,197.27798 c 0,4.97057 -4.02943,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97057,0 9,4.02944 9,9 z"
id="svg_31"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 415.68715,197.27798 c 0,4.97057 -4.02943,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97057,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_32"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#993300"
inkscape:connector-curvature="0"
d="m 319.75356,156.41738 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_33"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 319.75356,156.41738 c 0,4.97056 -4.02944,9 -9,9 -4.97057,0 -9,-4.02944 -9,-9 0,-4.97056 4.02943,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_34"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#006400"
inkscape:connector-curvature="0"
d="m 231.82226,511.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_35"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 231.82226,511.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_36"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#ffd700"
inkscape:connector-curvature="0"
d="m 499.92976,775.58689 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_37"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 499.92976,775.58689 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_38"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#ffd700"
inkscape:connector-curvature="0"
d="m 744.82231,347.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
id="svg_39"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 744.82231,347.91189 c 0,4.97056 -4.0295,9 -9,9 -4.9706,0 -9,-4.02944 -9,-9 0,-4.97056 4.0294,-9 9,-9 4.9705,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_40"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:#ffd700"
inkscape:connector-curvature="0"
d="m 586.82226,235.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
id="svg_41"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 586.82226,235.91189 c 0,4.97056 -4.02944,9 -9,9 -4.97056,0 -9,-4.02944 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
stroke-miterlimit="10"
id="svg_42"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>
</div>
<div class="desc">
This figure depicts a case were the Approaching Transmission wouldn&rsquo;t reach the destination area, even though there is a possible way. (The dashed lines represent the communication range)
</div>
</div>
<h4 id="flooding">Flooding</h4>
<p>The implementation of Flooding is fairly equivalent as described on
<a href="https://en.wikipedia.org/wiki/Flooding_%28computer_networking%29" target="_blank" rel="noopener">
wikipedia
</a>
. Each entity forwards the message to all entities
in its communication range. Entities, that already received the message won&rsquo;t receive it again; this is different from many real-life
implementations, where messages are send to all reachable entities except the sender. However, since the simulation has total
knowledge of all simulated entities, it is easier to overcome a lot of the disadvantages, that flooding faces
in real world implementations.</p>
<h4 id="implementing-your-own-adhoctransmissionmodel">Implementing your own <code>AdhocTransmissionModel</code></h4>
<p>If the implemented models don&rsquo;t suffice your needs you can easily implement your own.
Create a class extending <code>AdhocTransmissionModel</code> and implement the abstract methods for sending TopoCasts/GeoCasts.
A possible extension could be to allow for multihop TopoCasts, building an actual topology and transmit your
messages using that topology. Also, the aforementioned &ldquo;Face-Routing&rdquo; could be of interest. Additionally, the calculation
of delays could be made more realistic.</p>
<h2 id="accessing-sns-functionality-from-your-applications">Accessing SNS-functionality from your applications</h2>
<p>In order for your scenario to enable the SNS follow the steps
<a href="/mosaic/docs/building_scenarios/scenario_configuration/#communication-simulators-cell-ns3-omnetpp-sns">
here
</a>
.
An overview of how to configure AdHoc-modules and usage of the API for Routing and Message-Building functions,
can be found
<a href="/mosaic/docs/develop_applications/communication/">
here
</a>
.</p>
<section class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1" role="doc-endnote">
<p>Or is able to communicate with an entity inside the destination area. <a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</section>
</div>
<div class="article-widget">
<div class="post-nav prev-next-pages col-12">
<div class="row">
<div class="post-nav-item col-6">
<div class="meta-nav">Previous</div>
<a href="/mosaic/docs/simulators/network_simulator_ns3/" rel="next">Network Simulator ns-3</a>
</div>
<div class="post-nav-item col-6 align-self-end">
<div class="meta-nav">Next</div>
<a href="/mosaic/docs/simulators/network_simulator_cell/" rel="prev">Network Simulator Cell</a>
</div>
</div>
</div>
</div>
</div>
<footer class="site-footer">
<div class="row">
<div class="col-sm-4 mb-3 mb-md-0">
<b>Eclipse MOSAIC</b>
<ul>
<li>
<a href="/mosaic/download/" title="Download Eclipse MOSAIC" >
Download Eclipse MOSAIC
</a>
</li>
<li>
<a href="/mosaic/docs/" title="Documentation" >
Documentation
</a>
</li>
<li>
<a href="/mosaic/tutorials/" title="Tutorials" >
Tutorials
</a>
</li>
<li>
<a href="/mosaic/community/#projects" title="Projects" >
Projects
</a>
</li>
<li>
<a href="/mosaic/publications/" title="Publications" >
Publications
</a>
</li>
</ul>
</div>
<div class="col-sm-4 mb-3 mb-md-0">
<b>Community</b>
<ul>
<li>
<a href="/mosaic/community/" title="Eclipse MOSAIC Community" >
Eclipse MOSAIC Community
</a>
</li>
<li>
<a href="/mosaic/contribution/" title="How to contribute" >
How to contribute
</a>
</li>
<li>
<a href="https://github.com/eclipse/mosaic" title="Github" target="_blank" rel="noopener">
Github
</a>
</li>
<li>
<a href="/mosaic/get_in_contact/" title="Contact &amp; Mailing list" >
Contact & Mailing list
</a>
</li>
</ul>
</div>
<div class="col-sm-4 mb-3 mb-md-0">
<b>Eclipse Foundation</b>
<ul>
<li>
<a href="https://www.eclipse.org/" title="About Eclipse Foundation" target="_blank" rel="noopener">
About Eclipse Foundation
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/privacy.php" title="Privacy Policy" target="_blank" rel="noopener">
Privacy Policy
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/termsofuse.php" title="Website terms of use" target="_blank" rel="noopener">
Website terms of use
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal/copyright.php" title="Copyright" target="_blank" rel="noopener">
Copyright
</a>
</li>
<li>
<a href="https://www.eclipse.org/legal" title="Legal" target="_blank" rel="noopener">
Legal
</a>
</li>
</ul>
</div>
</div>
<div class="row justify-content-center mt-3 position-relative">
<p class="powered-by text-center font-italic mb-0 pb-0">
Powered by the
<a href="https://sourcethemes.com/academic/" target="_blank" rel="noopener">Academic theme</a> for
<a href="https://gohugo.io" target="_blank" rel="noopener">Hugo</a>.
<br>
Header image &#169; fanjianhua/ iStock
</p>
</div>
</footer>
</article>
</main>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.6.0/umd/popper.min.js" integrity="sha512-BmM0/BQlqh02wuK5Gz9yrbe7VyIVwOzD1o40yi1IsTjriX/NGF37NyXHfmFzIlMmoSIBXgqDiG1VNU6kB5dBbA==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.4/imagesloaded.pkgd.min.js" integrity="sha512-S5PZ9GxJZO16tT9r3WJp/Safn31eu8uWrzglMahDT4dsmgqWonRY9grk3j+3tfuPr9WJNsfooOR7Gi7HL5W2jw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js" integrity="sha512-Zq2BOxyhvnRFXu0+WE6ojpZLOU2jdnqbrM1hmVdGzyeCa1DgM3X5Q4A/Is9xA1IkbUeDd7755dNNI/PzSf2Pew==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js" integrity="sha512-uURl+ZXMBrF4AwGaWmEetzrd+J5/8NRkWAvJx5sbPSSuOb0bZLqf+tOzniObO00BjHa/dD7gub9oCGMLPQHtQA==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mermaid/8.4.8/mermaid.min.js" integrity="sha512-1tS1YUns336Mtxl+vkaLcADPwE1CPNVy3WEf7nrI7DGMMb6/FAVBgL2IzAWVBkB6vVuK94s2zVoiXcw1QZ9S1g==" crossorigin="anonymous" title="mermaid"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js" integrity="sha512-1LdB3V708w6G4QRl7NsVdTr7MDibyRXr9stQZ+EGjEE0ZPMZkA//ir7kCWmFyxdAJNIRXdR/ZeJmCV0boyiCXw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/java.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/json.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/xml.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/shell.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/languages/dos.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.js" integrity="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og==" crossorigin="anonymous"></script>
<script>const code_highlighting = true;</script>
<script>const isSiteThemeDark = false;</script>
<script>
const search_config = {"indexURI":"/mosaic/index.json","minLength":1,"threshold":0.3};
const i18n = {"no_results":"No results found","placeholder":"Search...","results":"results found"};
const content_type = {
'post': "Posts",
'project': "Projects",
'publication' : "Publications",
'talk' : "Talks"
};
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.1/anchor.min.js" integrity="sha512-aZotBPy6dqn8yVaLJwSrkJ+QxuxV695A4dgodAMvTU5JyNi5mhrr+LeaD3GSS+lx1SMFKNs0tu5ZMJEgNZQP2Q==" crossorigin="anonymous"></script>
<script>
anchors.add();
</script>
<script id="search-hit-fuse-template" type="text/x-template">
<div class="search-hit" id="summary-{{key}}">
<div class="search-hit-content">
<div class="search-hit-name">
<a href="{{relpermalink}}">{{title}}</a>
<div class="article-metadata search-hit-type">{{type}}</div>
<p class="search-hit-description">{{snippet}}</p>
</div>
</div>
</div>
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js" integrity="sha512-o38bmzBGX+hD3JHWUFCDA09btWaqrNmoJ3RXLlrysA7PP01Kgs4UlE4MhelE1v5dJR3+cxlR4qQlotsW7jKsnw==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js" integrity="sha512-mhbv5DqBMgrWL+32MmsDOt/OAvqr/cHimk6B8y/bx/xS88MVkYGPiVv2ixKVrkywF2qHplNRUvFsAHUdxZ3Krg==" crossorigin="anonymous"></script>
<script type="application/javascript" src="/mosaic/js/academic.min.0992ad8b8d033c3858bb90b03966346a.js"></script>
<script type="application/javascript" src="/mosaic/js/mosaic-wg-cards.js"></script>
<script type="application/javascript" src="/mosaic/js/mosaic-docs.js"></script>
<script>
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new window.bootstrap.Tooltip(tooltipTriggerEl)
})
</script>
<div id="modal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cite</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<pre><code class="tex hljs"></code></pre>
</div>
<div class="modal-footer">
<a class="btn btn-outline-primary my-1 js-copy-cite" href="#" target="_blank">
<i class="fas fa-copy"></i> Copy
</a>
<a class="btn btn-outline-primary my-1 js-download-cite" href="#" target="_blank">
<i class="fas fa-download"></i> Download
</a>
<div id="modal-error"></div>
</div>
</div>
</div>
</div>
</body>
</html>