blob: ad83c71cd3cb395a0df8fc3f50da6a112a73e5ff [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://www.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://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js" integrity="" 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://www.eclipse.org/mosaic/docs/simulators/network_simulator_sns/">
<meta property="twitter:card" content="summary">
<meta property="og:site_name" content="Eclipse MOSAIC">
<meta property="og:url" content="https://www.eclipse.org/mosaic/docs/simulators/network_simulator_sns/">
<meta property="og:title" content="Simple Network Simulator (SNS) | Eclipse MOSAIC">
<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://www.eclipse.org/mosaic/images/logo.svg">
<meta property="twitter:image" content="https://www.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</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-6">
<h1>Search</h1>
</div>
<div class="col-6 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 class="navbar-brand" href="/mosaic/"><img src="/mosaic/images/logo.svg" alt="Eclipse MOSAIC"></a>
</div>
<button type="button" class="navbar-toggler" data-toggle="collapse"
data-target="#navbar-content" 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>
</div>
<div class="navbar-collapse main-menu-item collapse justify-content-start" id="navbar-content">
<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/about_deprecated"><span>About (Deprecated)</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>
</nav>
<div class="container docs">
<div class="row flex-xl-nowrap">
<div class="col-12 col-md-3 col-xl-3 docs-sidebar">
<form class="docs-search d-flex align-items-center">
<button class="btn docs-toggle d-md-none p-0 mr-3" type="button" data-toggle="collapse" data-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>
</ul>
</div>
<div class="docs-toc-item">
<a class="docs-toc-link" href="/mosaic/docs/run_simulations">Run Simulations</a>
<ul class="nav docs-sidenav">
<li >
<a href="/mosaic/docs/run_simulations/">Run a single simulation</a>
</li>
<li >
<a href="/mosaic/docs/run_simulations/results/">Simulation Results</a>
</li>
<li >
<a href="/mosaic/docs/run_simulations/simulation_set/">Run a Simulation Set</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 Visualizer</a>
</li>
<li >
<a href="/mosaic/docs/visualization/statistics/">Statistics Visualizer</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/traffic_simulator_sumo/">Traffic - Eclipse SUMO</a>
</li>
<li >
<a href="/mosaic/docs/simulators/traffic_simulator_phabmacs/">Traffic - PHABMACS</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/application_simulator/">Application Simulator</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>
</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/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>
</nav>
</div>
<div class="d-none d-xl-block col-xl-2 docs-toc">
<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>
<main class="col-12 col-md-9 col-xl-7 py-md-3 pl-md-4 docs-content" 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>
<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.<br>
The flowchart below tries to explain how different types of messages are handled internally.</p>
<pre><code class="language-mermaid">graph TD
id1[V2X-Transmission]
id2{Transmission Type}
id1--&gt;id2
id3{Broadcast&lt;br/&gt;or Unicast?}
id4{Broadcast?}
id2--&gt;|TopoCast|id3
id2--&gt;|GeoCast|id4
id5([Simulate TopoCast using&lt;br/&gt;singlehop configuration.])
id3--&gt;|Yes|id5
id6{Simple transmission&lt;br/&gt;model?}
id4--&gt;|Yes|id6
id7([Simulate transmission using&lt;br/&gt;simpleMultihopDelay.])
id6--&gt;|Yes|id7
id8{Sender directly able to reach&lt;br/&gt;destination area?}
id6--&gt;|No|id8
id9([Flooding in destination area])
id8--&gt;|Yes|id9
id10([Greedy Forwarding to reach area,&lt;br/&gt;then flooding in destination areay.])
id8--&gt;|No|id10
</code></pre>
<!---
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="596" viewBox="-0.5 -0.5 596 607" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2020-07-06T10:48:36.527Z&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.4.2 Chrome/78.0.3904.130 Electron/7.1.4 Safari/537.36&quot; etag=&quot;l4Q-Cp_AUSgKvp2rzn64&quot; version=&quot;12.4.2&quot; type=&quot;device&quot; pages=&quot;1&quot;&gt;&lt;diagram id=&quot;9cMP8hRPBYysTayQNTAi&quot; name=&quot;Page-1&quot;&gt;7Vvblps2FP0aP5qlCwL8OJek7epKV1cnaTOPjNHYJBhRIWdm+vWVQBgLaTB2jZMm+MXW0QXQ2dpb5wjP8M3m+SceF+t3LKHZDIHkeYZvZwhBGEbyS1leaksQktqw4mmiG7WGu/Qfqo1AW7dpQkujoWAsE2lhGpcsz+lSGLaYc/ZkNntkmXnVIl5Ry3C3jDPb+leaiHVtjQBo7T/TdLXWVw6bik3ctNWGch0n7GnPhN/M8A1nTNS/Ns83NFNz10xL3e/tK7W7++I0F0M6/Hq/+rTOil9uE579QePoU/jhaY71zX2Js61+4Csh6KYQ0nhVFJzFy3War2SJx3m5ScsyZXnlA2WisraaZxrP0I0yr6mqfZsxlljdPD0R4qWZXM62eULVDcIZvn5ap4LeFfFS1T5JOElbnKWrXBaX8ikpVwa+1CAhQBbXYpPp7ln8QLNrxhPKb1jGZOPbnOV0VxMvP6+qC3ZqH9Ms65pYLhrTDGFQfaS9FJx9pq4aPY2UC/r8qoPgzu1yuVC2oYK/yCa6QwB8j4QkQHqB6AVDAl1+auEHfe23tQE9jXqN+NXuCi0q5A8NjCNAAi2M/Ik+zt8bgDjasd+R41AYeVFgOA07fIYcPgvG8plv+czyEc2TK0WQanVlsfTjUk4HfU7FR2kBHtGle+0l9ftWPTFoCi9NIZd3vNdJFe/369puVanpdw4InOhvmlis3/G2nCq25Ut6eF2ImK+o6GkXudGzhw3igEZj4zSLRfrFvF0XXvQVfmdpLlpwQijBSRZ7HwOoaEHMEeun1oPsy0lnXBRZoIe4M1Y9M9ZYFaB3E3E6xomF8fesYDdxKY7E+oT0A0iPBiIdol6iBB7GIDQwM4eRxZQjrgZMbNSeugJ8aI8VDlsB7VhNQ/b4WNJRVknkUIIgExpSxjIJ/t6ypmJeVrusK9lgUTy3dfLXSn2b8g/evxS0GVfeZj103dLeHKzZ5mFbDt3xfU87hQX0kG/u76Bjr7AgHsIX3OEtLIzIez+eSOFEpOci0n4cAU9SGTJh5F+SR1GguE+O1nxMVofBqbsKBz9/g5wK7ZDoWFKFwMWq1zLgTpZq4eG3E50eolPfDzwAgig0GXXHsHtrISBeCO3lMFr8BZGFkNa32rEPvPEp47btQ57ugDB5vOkQKI9jiHwdzEQHPQ+Bgwaj0fxuByXHaegUeA8IvNFQGQ3caLqMSPrYFEloYvXkuKPSSNB+wv5xR47Csa2F97S0QC/XvHCRk6IDSXTZla7YpEmi+lxzKsUyfqj6K/wU6gGqRyLXM3KrEHUIpINw/hqSX2UrfdKgb222S/DvI7mHG17ltrkMjwMfG86co7Mgcd7sDi+wNQosONylm628fRkfgiTl6pBGLl0zfNyW9WmB+sromhX1PD+mqy2XDz6dHRzSRdKri9h1hnDRfDR0pSEG6eKJGneKnv7vdXFoRhouvqYuOlLHiJwaMB6Z3h5ZDJG9/ZvEsIcQ+sQQ+UE3V3wW+EHkNXLYHLF6F9RHO9d2dOoAulIHH0paCeimyNSPd9tMpEpIp0TCgEQCJh4gViIBO8LJKPSCSyYSkP2GhotRxtHOH0c5FwOV8wCQgAckajqsBSwQjSmuhHgLM9LE3XPZoeIKca+44q5ofwOZWWRHo0eFH4o9d9Q5xSDHkCiGnRjEJFPflZu7aAzShBwXj0GGn4v9ODyK3Vi6UGZuYZGkjzqwOxdJDjy+OhsB2m9+/cYsmE8BiGaD3gAkjDrHmmcBn4xYiYmROfYWyBxmRIXEDhY8EIBkaU7nzTqsQxA5zRLYtWvAkBdG7iS1SozJR3yoAhTjDeKEliLNK5Wd6feJzxW3fEcKS1Do+Rh03xB2Kiv0PbSwCXS0gy9k530dvDPJ63+S12btHpRXDHqBJMkN+tDMEUMbRKPmAKUCgz3RNJnWRyeGLNjOLfrwGwxTwq+0Ff1xQvrBawV91WS4JHO5FW0Pc81dKelid3BeHPXuSoeuibPh3T7+mfLiPczQy9xh6J8FenOIJEbMnajvkehiO1E7Fb73x7FOiibNndvEKSfTCxcfq5wMCXY5GZNdRvxrmSy2/22sEdP+QRS/+Rc=&lt;/diagram&gt;&lt;/mxfile&gt;" onclick="(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&amp;&amp;src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&amp;&amp;!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&amp;&amp;evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank');}}})(this);" style="cursor:pointer;max-width:100%;max-height:607px;"><defs><filter id="dropShadow"><feGaussianBlur in="SourceAlpha" stdDeviation="1.7" result="blur"/><feOffset in="blur" dx="3" dy="3" result="offsetBlur"/><feFlood flood-color="#3D4574" flood-opacity="0.4" result="offsetColor"/><feComposite in="offsetColor" in2="offsetBlur" operator="in" result="offsetBlur"/><feBlend in="SourceGraphic" in2="offsetBlur"/></filter></defs><g filter="url(#dropShadow)"><rect x="448.58" y="530" width="140" height="70" rx="35" ry="35" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(449.5,537.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="137" height="54" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 137px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Attempt Approaching ransmission to reach area, then Flooding ransmission.</div></div></foreignObject><text x="69" y="33" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="122.86" y="0" width="120" height="60" rx="9" ry="9" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(133.5,23.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="97" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 99px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">V2X-Transmission</div></div></foreignObject><text x="49" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">V2X-Transmission</text></switch></g><path d="M 182.86 60 L 182.86 93.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 182.86 98.88 L 179.36 91.88 L 182.86 93.63 L 186.36 91.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 159.05 152.5 L 65.51 206.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60.97 209.44 L 65.27 202.9 L 65.51 206.8 L 68.78 208.95 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(60.5,169.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="46" height="11" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">TopoCast</div></div></foreignObject><text x="23" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">TopoCast</text></switch></g><path d="M 182.86 100 L 230.48 135 L 182.86 170 L 135.25 135 Z" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(144.5,128.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="76" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 76px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;"><font style="font-size: 9px">Transmission Type</font></div></div></foreignObject><text x="38" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 206.67 152.5 L 317.15 207.18" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 321.86 209.5 L 314.03 209.54 L 317.15 207.18 L 317.14 203.26 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(262.5,169.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="43" height="11" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">GeoCast</div></div></foreignObject><text x="22" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">GeoCast</text></switch></g><path d="M 322.86 210 L 355.72 240 L 322.86 270 L 290.01 240 Z" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(296.5,233.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="51" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 51px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;"><font style="font-size: 10px">Broadcast?</font></div></div></foreignObject><text x="26" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 60 210 L 110 250 L 60 290 L 10 250 Z" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(32.5,229.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="55" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 55px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Broadcast<br />or<br />Unicast?</div></div></foreignObject><text x="28" y="26" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 60 290 L 60 323.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 328.88 L 56.5 321.88 L 60 323.63 L 63.5 321.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(33.5,296.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="20" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Yes</div></div></foreignObject><text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Yes</text></switch></g><rect x="0" y="330" width="120" height="60" rx="30" ry="30" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(1.5,332.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="117" height="54" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 117px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Simulate direct transmission using singlehop configuration.</div></div></foreignObject><text x="59" y="33" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 322.86 270 L 322.86 303.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 322.86 308.88 L 319.36 301.88 L 322.86 303.63 L 326.36 301.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(323.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="20" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Yes</div></div></foreignObject><text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Yes</text></switch></g><path d="M 322.86 310 L 366.67 340 L 322.86 370 L 279.06 340 Z" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(280.5,326.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="84" height="26" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 84px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;"><font style="font-size: 11px">Use simple Multihop?</font></div></div></foreignObject><text x="42" y="19" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 300.96 355 L 225.27 406.42" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 220.93 409.37 L 224.75 402.54 L 225.27 406.42 L 228.68 408.33 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(244.5,368.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="18" height="11" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Yes</div></div></foreignObject><text x="9" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">Yes</text></switch></g><rect x="160" y="410" width="120" height="60" rx="30" ry="30" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(161.5,412.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="117" height="54" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 117px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Simulate direct transmission using simpleMultihop configuration.</div></div></foreignObject><text x="59" y="33" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 344.76 355 L 423.25 406.51" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 427.64 409.39 L 419.87 408.47 L 423.25 406.51 L 423.71 402.62 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(386.5,363.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="15" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">No</div></div></foreignObject><text x="8" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">No</text></switch></g><path d="M 428.58 410 L 485.72 450 L 428.58 490 L 371.43 450 Z" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(372.5,436.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="111" height="26" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 111px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;"><font style="line-height: 110% ; font-size: 9px">Sender able to reach destination area?</font></div></div></foreignObject><text x="56" y="19" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 457.15 470 L 514.02 525.55" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 517.78 529.22 L 510.32 526.83 L 514.02 525.55 L 515.21 521.82 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(486.5,478.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="14" height="11" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">No</div></div></foreignObject><text x="7" y="11" fill="#000000" text-anchor="middle" font-size="11px" font-family="Helvetica">No</text></switch></g><path d="M 400 470 L 354.08 525.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 350.72 529.14 L 352.51 521.52 L 354.08 525.11 L 357.89 526 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(356.5,483.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="20" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Yes</div></div></foreignObject><text x="10" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Yes</text></switch></g><rect x="280.01" y="530" width="140" height="70" rx="35" ry="35" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(281.5,551.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="137" height="26" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 137px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Flooding transmission in destination area.</div></div></foreignObject><text x="69" y="19" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Flooding transmission in destination area.</text></switch></g></g></svg>
--->
<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>
<figure id="figure-this-figure-depicts-a-case-were-the-approaching-transmission-wouldnt-reach-the-destination-area-even-though-there-is-a-possible-way-the-dashed-lines-represent-the-communication-range">
<a data-fancybox="" href="../images/shortcomingsApproaching.svg" data-caption="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)">
<img src="../images/shortcomingsApproaching.svg" alt="" >
</a>
<figcaption>
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)
</figcaption>
</figure>
<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="https://www.eclipse.org/mosaic/docs/building_scenarios/scenario_configuration/#communication-simulators-cell2-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="https://www.eclipse.org/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">
<div class="post-nav-item">
<div class="meta-nav">Next</div>
<a href="/mosaic/docs/simulators/application_simulator/" rel="prev">Application Simulator</a>
</div>
</div>
</div>
</div>
</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/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-5CYOlHXGh6QpOFA/TeTylKLWfB3ftPsde7AnmhuitiTX4K5SqCLBeKro6sPS8ilsz1Q4NRx3v8Ko2IBiszzdww==" crossorigin="anonymous"></script>
<script src="/mosaic/js/academic.min.12ac32fae0b6a379104641bfce6313cb.js"></script>
<script src="https://www.eclipse.org/js/mosaic-wg-features-widget.js"></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>