| <!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 OMNeT++ Federate design is based on amicrosimulation where every participating vehicle respectively node is individually modeled and simulated and all entities are clued together in a scenario with one instance the manages the interaction between them."> |
| |
| |
| <link rel="alternate" hreflang="en-us" href="https://www.eclipse.org/mosaic/docs/extending_mosaic/omnetpp_details/"> |
| |
| |
| |
| |
| |
| |
| |
| <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://www.eclipse.org/mosaic/docs/extending_mosaic/omnetpp_details/"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <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://www.eclipse.org/mosaic/docs/extending_mosaic/omnetpp_details/"> |
| <meta property="og:title" content="OMNeT++ Federate Implementation | Eclipse MOSAIC – A Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"> |
| <meta property="og:description" content="The OMNeT++ Federate design is based on amicrosimulation where every participating vehicle respectively node is individually modeled and simulated and all entities are clued together in a scenario with one instance the manages the interaction between them."><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="2019-05-05T00:00:00+01:00"> |
| |
| <meta property="article:modified_time" content="2019-05-05T00:00:00+01:00"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <title>OMNeT++ Federate Implementation | 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-extending_mosaic page-omnetpp_details "> |
| |
| <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-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 Multi-Domain and Multi-Scale Simulation Framework for Connected and Automated Mobility"></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/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="docs container"> |
| <div class="row flex-xl-nowrap"> |
| <div class="docs-sidebar col-12 col-md-3 col-xl-3"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <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> |
| |
| </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/traffic_simulator_sumo/">Traffic - Eclipse SUMO</a> |
| </li> |
| |
| <li > |
| <a href="/mosaic/docs/simulators/network_simulator_omnetpp/">Network - OMNeT++</a> |
| </li> |
| |
| <li > |
| <a href="/mosaic/docs/simulators/network_simulator_ns3/">Network - ns-3</a> |
| </li> |
| |
| <li > |
| <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> |
| |
| </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 class="active"> |
| <a href="/mosaic/docs/extending_mosaic/omnetpp_details/">OMNeT++ 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> |
| |
| |
| </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> |
| <ul> |
| <li><a href="#node-internals">Node Internals</a></li> |
| <li><a href="#simulation-setup">Simulation Setup</a></li> |
| <li><a href="#simulator-coupling">Simulator Coupling</a></li> |
| <li><a href="#the-omnet-ambassador">The OMNeT++ Ambassador</a></li> |
| <li><a href="#the-time-representation">The Time Representation</a></li> |
| </ul> |
| </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>OMNeT++ Federate Implementation</h1> |
| |
| <div class="article-style"> |
| <p>The OMNeT++ Federate design is based on amicrosimulation where every participating vehicle respectively |
| node is individually modeled and simulated and all entities are clued together in a scenario with |
| one instance the manages the interaction between them. That means at first the internals of one node |
| are introduced which incorporate mainly the communication stack and a mobilitymodel. Afterwards, |
| especially the scenario management is presented which builds up on the individual nodes and controls |
| themajor part of the simulation. These both aspects are in similar way needed formost mobile communication |
| simulation with OMNeT++ even in an isolated setup. However, specifically for interaction and |
| synchronization with the other simulators in the Eclipse MOSAIC environment, a third pillar is necessary. This |
| scheduler module is very important for the system as it implements the time management and event |
| scheduling according to Eclipse MOSAIC specific concepts.</p> |
| <h3 id="node-internals">Node Internals</h3> |
| <p>The main part of the node model consists of the communication stack. The submodules for communication |
| are adopted from the INETMANET framework. Hence, it is primarily important to define the |
| connections between the individual modules. However, there are also modules which needed to be |
| implemented for the dedicated purpose of the coupling within the Eclipse MOSAIC environment. Finally, all |
| modules are linked together to a compound module using the NED language. The following figure depicts the node architecture. It needs to be said that the concept currently supports two different |
| kinds of nodes for Vehicles and RSUs, while V2X-based traffic lights are treated as RSUs. For the first |
| approach these two kinds of nodes have the equal construction in terms of modules. The difference at the |
| moment is that they can be configured with different values for parameters e.g. that Vehicles and RSUs |
| have a different antenna height which is important for Two Ray Ground ReflectionModel. Furthermore, |
| this concept is capable for later extensions e.g. for simulations when RSUs should be equipped with an |
| additional network interface to build the bridge fromAd hoc Domain to the Fixed Infrastructure Domain |
| (i.e. Internet).</p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-architecture-of-one-node"> |
| |
| |
| <a data-fancybox="" href="../images/implementation_simcoupling.jpeg" data-caption="Architecture of one Node"> |
| |
| |
| <img src="../images/implementation_simcoupling.jpeg" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Architecture of one Node |
| </figcaption> |
| |
| |
| </figure> |
| |
| <h5 id="communication-stack">Communication Stack</h5> |
| <p>The right part of the block diagram in the figure above depicts the communication stack. It is based on the |
| module Wlan which is a compound module itself and covers the complete IEEE 802.11 network interface |
| card with the MAC and PHY Layer and the Radio Channel. The configuration of different values for |
| standard parameters e.g. the PHY bit rate or size of the contention window of the MAC can be exchanged |
| within the omnetpp.ini-file (which introduces the parameters of the according module ned-files). Please |
| note that the configuration allows different values for each kind of nodes and hence it is possible to |
| configure another propagation model or carrier frequency for Vehicles compared to RSUs. Even if |
| the possibility for such a configuration exists, it should be avoided and common parameters should |
| consistently be configured twice with the same value.</p> |
| <p>The next module in the communication stack is the NetworkLayer. Once again it is a compound module |
| and already a collection of most important protocols. The following protocols from version IPv4 are |
| supported in this layer.</p> |
| <ul> |
| <li>IP (Internet Protocol) of course as primary protocol of the Network Layer</li> |
| <li>ICMP (Internet ControlMessage Protocol) for information and error messages</li> |
| <li>IGMP (Internet GroupManagement Protocol) for management ofmulticast functionality</li> |
| <li>ARP (Address Resolution Protocol) for mapping of IP Addresses toMAC Addresses</li> |
| </ul> |
| <p>Furthermore, the standalone modules InterfaceTable and RoutingTable are related to the Network |
| Layer. The first one is needed to support multiple Network Interface Cards e.g. for wireless and fixed LAN |
| in one node. It is already included for possible further extensions as previously mentioned, but up to |
| now it has only one entry which is the Network Interface Card for Wlan. The second one is a table for |
| simple Routing. This module is needed for correct instantiation of a node via the FlatNetworkGenerator |
| as explained later in this section.</p> |
| <p>The <code>TransportLayer</code> of the communication stack is made up of TCP for reliable connections and UDP.</p> |
| <p>The modules <code>VSimRTIReliableApp</code> and <code>VSimRTIUnreliableApp</code> of Application Layer are the entry |
| points for application messages for the communication stack for the following reasons. The communication |
| oriented models of INETMANET have their focus more on the framing for communication and less on |
| the real content. That means that content is often modeled with dummy payloads where only the length is |
| of interest. In contrast, V2X applications which are simulated in the |
| <a href="https://www.eclipse.org/mosaic/docs/simulators/application_simulator/">Application Simulator</a>. |
| Rely on the correct transmission of contents. Hence, the modules <code>VSimRTIReliableApp</code> and <code>VSimRTIUnreliableApp</code> |
| are introduced to bridge this gap. They are triggered by the Eclipse MOSAIC ScenarioManager |
| to send new messages to lower layers and forward messages themselves back to the ScenarioManager |
| upon reception. The main tasks are generally acting as an application within the scope of OMNeT++ and |
| encapsulating themessage contents to packets to prepare them for sending. While functionality of an |
| UDP application is fully supported in <code>VSimRTIUnreliableApp</code>, the complete TCP application functionality |
| is restricted in <code>VSimRTIReliableApp</code>. Note that up to now it is not entirely clarified if and how TCP should |
| be supported in V2X use cases for safety and traffic efficiency with their broadcast characteristics, think |
| of different roles of server and client in TCP. When the Eclipse MOSAIC ScenarioManager properties are detailed |
| later in this section, it is also explained how the connection between the Eclipse MOSAIC ScenarioManager and |
| the Eclipse MOSAIC Apps is realized. This connection needs to be established dynamically and is therefore not |
| assigned with a connecting arrow like the fixed connections between the modules of communication |
| stack.</p> |
| <h5 id="mobility-model">Mobility Model</h5> |
| <p>The second important component of the node is the mobility module <code>VSimRTIMobility</code>, which extends |
| the BasicMobility. Unlike other mobility models as RandomWaypoint it does not generate node movements |
| itself and has a straight static character. Node position updates are always triggered by the Eclipse MOSAIC |
| ScenarioManager. Hence,mobility is completely controlled by Eclipse MOSAIC and in turn by the coupled traffic |
| simulator. After successful position update the <code>VSimRTIMobility</code> module informs other modules about |
| this event via the NotificationBoard.</p> |
| <h5 id="additional-functionality">Additional Functionality</h5> |
| <p>At last, the module NotificationBoard is defined for each node. This module was already mentioned in |
| the model overview of INETMANET. It enables a very efficient way for dynamic communication between |
| the individual modules. There is no direct and static connection needed between the modules, because |
| modules can subscribe dynamically for notification about dedicated events.</p> |
| <h3 id="simulation-setup">Simulation Setup</h3> |
| <p>The setup of the complete simulation is illustrated in the following Figure 3 From the view of OMNeT++, |
| the simulation is a network which has a dynamic topology and is referenced as the simulated network |
| in the omnetpp.ini-file for configuration. The ini-file gives access to all parameters which are offered |
| to be configured by the included simple modules. The parameters are referred to by their hierarchical |
| names with the simulated network as root module. As it is possible to assign already default values for |
| parameters in the modules NED file, not every parameter needs to be configured in the ini-file. The |
| simulation consists of basically three parts.</p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-architecture-of-the-whole-simulation-scenario"> |
| |
| |
| <a data-fancybox="" href="../images/implementation_simulation.jpeg" data-caption="Architecture of the whole Simulation Scenario"> |
| |
| |
| <img src="../images/implementation_simulation.jpeg" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Architecture of the whole Simulation Scenario |
| </figcaption> |
| |
| |
| </figure> |
| |
| <h5 id="simulated-nodes">Simulated Nodes</h5> |
| <p>Obviously the major part of the simulation is dedicated to the nodes. They are compound modules either |
| from type Vehicle or RSU and have the properties as described in the previous section. The number |
| of nodes in the simulation can vary over simulation time and is dynamically managed by the Eclipse MOSAIC |
| ScenarioManager.</p> |
| <h5 id="common-communication-dependent-modules">Common Communication Dependent Modules</h5> |
| <p>The second part covers the modules which actually count to the communication stack, but are common |
| for all simulated nodes. These modules are the ChannelControl and the FlatNetworkGenerator. |
| The ChannelControl keeps track of all nodes, their positions and Radio Channels. The main task is to |
| determine which nodes are in communication range and which other nodes are within interference |
| distance. The FlatNetworkGenerator is part of the Network Layer. It is used to instantiate a network |
| with a flat topology and assigns the IP addresses to all nodes. Additionally it runs Dijstra’s shortest path |
| algorithm to discover the routes and adds them into the routing tables. It is assumed that the routing |
| tables are of kind of the RoutingTable from the specific NetworkLayer package. This is the reason why |
| every node is equipped with the RoutingTable submodule. This approach works out for the current |
| simulation purposes, but when any Ad hoc Routing protocols will be introduced to the simulation model |
| the FlatNetworkGenerator and the RoutingTable modules are likely be obsolete and would have to be |
| replaced.</p> |
| <h5 id="eclipse-mosaic-scenariomanager">Eclipse MOSAIC ScenarioManager</h5> |
| <p>The <code>ScenarioManager</code> is an experimental feature that implements a central control instance in |
| simulations with INETMANET framework. It is loaded with a script in XML notation and is used to setup and control simulation experiments. Actually the original ScenarioManager and the new |
| Eclipse MOSAIC ScenarioManager have nearly nothing in common but the fact that both are used as a central |
| management instance to enhance simple configurations to simulate more sophisticated scenarios. The |
| general tasks of the Eclipse MOSAIC ScenarioManager contain the simulation start up with instantiation of |
| common modules as ChannelControl and initialization of the Eclipse MOSAIC EventScheduler (detailed later) |
| and the controlled simulation shut down. But most important beside these are the management of node |
| mobility and management of V2X communication which are triggered by Eclipse MOSAIC during simulation.</p> |
| <p>The <strong>Mobility Management</strong> is responsible for administration of simulated nodes and their mobility. |
| This includes introducing nodes to simulation, updating node positions and removing nodes from |
| simulation.</p> |
| <p>The node introduction method is triggered by Eclipse MOSAIC with the commands <code>ADD_NODES</code> or <code>ADD_RSU_NODES</code> respectively. It adds the node according to its node id to the managed modules and creates the complete compound module. Important for later message handling is the setup of connections to the dedicated Eclipse MOSAIC App, which is done via so called gates. At the moment, the Eclipse MOSAIC Apps are statically initialized, but the concept is suitable to be extended later when other transport protocols and in turn |
| applications have to be simulated.</p> |
| <p>Upon <code>MOVE_NODE</code> command, which contains the affected node id and new position to be updated, the |
| node is moved via the <code>VSimRTIMobility</code> module.</p> |
| <p>At last the <code>REMOVE_NODE</code> command indicates that a node leaves the simulation. On this event, the according node is deleted and unregistered from managed modules.</p> |
| <p>The <strong>CommunicationManagement</strong> controls the sending and receiving of V2X messages.</p> |
| <p>The <code>SEND_V2X_MESSAGE</code> command initiates the sending process. It contains the sender node id and |
| the transport protocol. Thus the Eclipse MOSAIC ScenarioManager can select the according Eclipse MOSAIC app at the according node.</p> |
| <p>When a message from another node successfully arrives at the application layer the Eclipse MOSAIC ScenarioManager |
| is notified by the according node. Then, it sets up a <code>RECV_V2X_MESSAGE</code> which is sent back |
| to Eclipse MOSAIC via the Eclipse MOSAIC EventScheduler. This intermediate step is introduced, since the Eclipse MOSAIC |
| EventScheduler is the only instance, which is connected to Eclipse MOSAIC and which knows when it is safe to |
| receive and send interactions.</p> |
| <h3 id="simulator-coupling">Simulator Coupling</h3> |
| <p>OMNeT++ is connected to Eclipse MOSAIC according to the concept of high-level-architecture (HLA). That |
| means that the OMNeT++ simulation program itself is encapsulated in the OMNeT++ federate. To |
| enable the coupling according to Eclipse MOSAIC concept, two components needed to be developed. First, the |
| OMNeT++ federate is extended with the customized Eclipse MOSAIC EventScheduler, which can receive and |
| send interactions forMobility and CommunicationManagement. The second component is the OMNeT++ |
| Ambassador that can handle on the one hand the OMNeT++ specific connection and on the other |
| hand the well-defined interface to Eclipse MOSAIC. The emphasis of both components lies in the synchronized |
| exchange of interactions i.e. a time management mechanism must be jointly realized by them. For this |
| purpose the conservative synchronization mechanism is implemented. The following figure gives an overview |
| of the included compenents.</p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-overview-of-simulator-coupling"> |
| |
| |
| <a data-fancybox="" href="../images/implementation_vehicle.jpeg" data-caption="Overview of Simulator Coupling"> |
| |
| |
| <img src="../images/implementation_vehicle.jpeg" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Overview of Simulator Coupling |
| </figcaption> |
| |
| |
| </figure> |
| |
| <h5 id="eclipse-mosaic-eventscheduler">Eclipse MOSAIC EventScheduler</h5> |
| <p>The Eclipse MOSAIC EventScheduler extends the simple standard scheduler of OMNeT++ to be able to implement the time management for the Conservative Synchronization with Eclipse MOSAIC. It is the only module in OMNeT++ which has access to the event queue or Future Event Set (FES). Since the OMNeT++ simulation |
| is an event driven simulation the scheduler has to fulfill two tasks. The first task is the actual scheduling |
| part which is always invoked by the simulation kernel to schedule the next event. It allows all events from |
| the FES to be processed up to the granted logical time $T$. If there are only events with a later time $T'$ than |
| $T$ left in the FES, it sends the Next Event Request (NER) to the OMNeT++ Ambassador at Eclipse MOSAIC side and |
| blocks the OMNeT++ simulation. Then the second task comes into operation. If necessary, it coordinates |
| the Receive Interaction procedure and merges the external events from Eclipse MOSAIC and hence from other |
| federates to the internal FES. Events with the same time stamp are ordered to the FES according to first |
| come first serve mechanism. Note that the handling of these simultaneous events is generally important |
| to ensure repeatable execution of simulations. The decision about ordering is in control of the federate |
| itself, since the RTI does not sufficiently have the information to do this. After the Receive Interaction |
| step, the RTI completes the time management cycle with the Time Advance Grant for $T'$. At this point the |
| scheduler can set its logical time to $T = T'$ and unblock the further processing.</p> |
| <p>Additionally the Eclipse MOSAIC EventScheduler provides the service for other modules to send interactions back |
| to the OMNeT++ Ambassador, since it is also the one module which is connected to Eclipse MOSAIC. Currently, |
| this is used by the Eclipse MOSAIC ScenarioManager to report the <code>RECEIVE_V2X_MESSAGES</code>.</p> |
| <h4 id="eclipse-mosaic-omnet-federate-development">Eclipse MOSAIC OMNeT++ Federate Development</h4> |
| <p>This section provides a description how to set up the <strong>OMNeT++ IDE</strong> for the Eclipse MOSAIC OMNeT++ Federate Development.</p> |
| <p>At this point it is awaited, that the |
| <a href="https://www.eclipse.org/mosaic/docs/simulators/network_simulator_omnetpp/">OMNeT++ Federate</a> is successfully installed.</p> |
| <h5 id="prepare-omnet-ide">Prepare OMNeT++ IDE</h5> |
| <ol> |
| <li> |
| <p>Create an empty directory somewhere inside your home directory. We will call it <code><omnetpp_workspace></code> from here on. This directory will be used as a workspace in your OMNeT++ IDE.</p> |
| </li> |
| <li> |
| <p>Open your OMNeT++ IDE by executing <code>omnetpp</code> in your terminal.</p> |
| </li> |
| <li> |
| <p>Select <code><omnetpp_workspace></code> as workspace and continue by clicking <code>Launch</code>.</p> |
| </li> |
| <li> |
| <p>Close the “Welcome” screen.</p> |
| </li> |
| <li> |
| <p>Since your workspace is empty, the OMNeT++ IDE will ask you if you want to install the INET framework and OMNeT++ programming examples.<br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-omnet-ide-install-inet"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-install-inet.png" data-caption="OMNeT++ IDE: Install INET"> |
| |
| |
| <img src="../images/omnetpp-ide-install-inet.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| OMNeT++ IDE: Install INET |
| </figcaption> |
| |
| |
| </figure> |
| |
| Decide by yourself if you want to do that:</p> |
| <ul> |
| <li>By clicking <code>OK</code> the INET framework is going to be installed into an <code>inet</code> folder in your <code><omnetpp_workspace></code></li> |
| <li>If you already have INET installed somewhere you can skip the installation and import your existing INET project: |
| <ol> |
| <li><code>Cancel</code> the dialog.</li> |
| <li>Choose <code>File</code> > <code>Open Projects from File System...</code></li> |
| <li>In the new window choose the directory of your existing INET installation as <code>Import Source</code> and click <code>Finish</code></li> |
| </ol> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>The project <code>inet</code> should now be visible in the <code>Project Explorer</code> of your OMNeT++ IDE.</p> |
| </li> |
| <li> |
| <p>Right-click on free space in the <code>Project Explorer</code> and choose <code>New</code> > <code>OMNeT++ Project...</code></p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-omnet-ide-create-new-omnet-project"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-new-project.png" data-caption="OMNeT++ IDE: Create new OMNeT++ Project"> |
| |
| |
| <img src="../images/omnetpp-ide-new-project.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| OMNeT++ IDE: Create new OMNeT++ Project |
| </figcaption> |
| |
| |
| </figure> |
| |
| </li> |
| <li> |
| <p>In the new window:</p> |
| <ol> |
| <li>Name the new project <code>federate</code></li> |
| <li><strong>Uncheck</strong> the box before <code>Use default location</code>, click <code>Browse</code> and select:<br> |
| <code><mosaic>/bin/fed/omnetpp/omnetpp_federate_src/src</code><br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-omnet-ide-create-new-omnet-project"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-new-project-2.png" data-caption="OMNeT++ IDE: Create new OMNeT++ Project"> |
| |
| |
| <img src="../images/omnetpp-ide-new-project-2.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| OMNeT++ IDE: Create new OMNeT++ Project |
| </figcaption> |
| |
| |
| </figure> |
| </li> |
| <li>Click <code>Next</code></li> |
| </ol> |
| </li> |
| <li> |
| <p>On the following <code>Initial Contents</code> page select <code>Empty Project</code> and continue by clicking <code>Finish</code><br> |
| You should now find two projects in the <code>Project Explorer</code> of your OMNeT++ IDE: <code>inet</code> and <code>federate</code></p> |
| </li> |
| <li> |
| <p>Right-click on the <code>federate</code> project and choose <code>Properties</code></p> |
| <ol> |
| <li>Go to <code>Project references</code> and <strong>check</strong> the box before <code>inet</code><br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-choose-project-references"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-project-references.png" data-caption="Choose project references"> |
| |
| |
| <img src="../images/omnetpp-ide-project-references.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Choose project references |
| </figcaption> |
| |
| |
| </figure> |
| </li> |
| </ol> |
| </li> |
| </ol> |
| <p>That’s it! None of the files should now be marked with an error symbol.</p> |
| <hr> |
| <h5 id="configure-rebuild-configuration">Configure Rebuild Configuration</h5> |
| <p>Since the Eclipse MOSAIC OMNeT++ Federate is not a classic OMNeT++ project, it cannot be build regulary with |
| the OMNeT++ IDE by just clicking on the <code>Build</code> button. However, to make the build process easy and intuitive |
| we provide a simple build script and the following desciption how to configure the OMNeT++ IDE to enable |
| building on a single click:</p> |
| <ol> |
| <li>In the OMNeT++ IDE select <code>Run</code> > <code>External Tools</code> > <code>External Tools Configuration...</code></li> |
| <li>Double-click in the left column on <code>Program</code> to create a new configuration.</li> |
| <li>Call it <code>rebuild federate</code></li> |
| <li>In the <code>Main</code> tab: |
| <ol> |
| <li>Under <code>Location</code> choose <code>Browse Workspace...</code> and select <code>federate/rebuild_federate.sh</code></li> |
| <li>Still in the <code>Main</code> tab under <code>Working Directory</code> choose <code>Browse Workspace...</code> and select <code>federate</code> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-omnet-ide-build-configuration"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-build-config.png" data-caption="OMNeT++ IDE Build Configuration"> |
| |
| |
| <img src="../images/omnetpp-ide-build-config.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| OMNeT++ IDE Build Configuration |
| </figcaption> |
| |
| |
| </figure> |
| </li> |
| </ol> |
| </li> |
| <li>In the <code>Build</code> tab <strong>uncheck</strong> the box before <code>Build before launch</code><br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-omnet-ide-build-configuration"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-build-config-2.png" data-caption="OMNeT++ IDE Build Configuration"> |
| |
| |
| <img src="../images/omnetpp-ide-build-config-2.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| OMNeT++ IDE Build Configuration |
| </figcaption> |
| |
| |
| </figure> |
| </li> |
| <li>Now you can <code>Apply</code> your changes and click on <code>Run</code>.</li> |
| <li>Since you have built the project at least once, you can rebuild it again by clicking here:<br> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-run-rebuild"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-run-rebuild.png" data-caption="Run rebuild"> |
| |
| |
| <img src="../images/omnetpp-ide-run-rebuild.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Run rebuild |
| </figcaption> |
| |
| |
| </figure> |
| </li> |
| </ol> |
| <p><strong>The following video shows the above described steps:</strong></p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <video controls > |
| <source src="../images/omnetpp-ide-rebuild-federate.mp4" type="video/mp4"> |
| </video> |
| <hr> |
| <h5 id="configure-debug-configuration">Configure Debug Configuration</h5> |
| <p>To debug the Eclipse MOSAIC OMNeT++ Federate during simulation you need to create a Debug Configuration. The following |
| instruction will tell you how to that:</p> |
| <ol> |
| <li>In your OMNeT++ IDE choose <code>Run</code> > <code>Debug Configurations...</code></li> |
| <li>In the new window double-click on <code>OMNeT++ Simulation</code> in the left column and name the new created debug configuration <code>federate</code>.</li> |
| <li>In the <code>Executable</code> row check <code>other</code> and type <code>/federate/federate</code></li> |
| <li>In the <code>Working dir</code> row type <code>/federate</code></li> |
| <li>In the <code>Ini file(s)</code> row type <code>debug.ini omnetpp.ini</code></li> |
| <li>At the end of the page click on the <code>More >></code> link. And make sure all fields in the <code>Advanced</code> area are <strong>empty</strong>.</li> |
| <li>For <code>Projects to build</code> select <code>Do not build automatically before launch</code></li> |
| <li>Now <code>Apply</code> your changes and try your configuration by clicking <code>Debug</code></li> |
| </ol> |
| <p><strong>The following images shows the final debug configuration:</strong></p> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <figure id="figure-final-debug-configuration"> |
| |
| |
| <a data-fancybox="" href="../images/omnetpp-ide-debug-config.png" data-caption="Final debug configuration"> |
| |
| |
| <img src="../images/omnetpp-ide-debug-config.png" alt="" > |
| </a> |
| |
| |
| |
| |
| <figcaption data-pre="Figure " data-post=":" class="numbered"> |
| Final debug configuration |
| </figcaption> |
| |
| |
| </figure> |
| |
| <hr> |
| <h3 id="the-omnet-ambassador">The OMNeT++ Ambassador</h3> |
| <p>The OMNeT++ Ambassador is the intermediate component between OMNeT++ and Eclipse MOSAIC. As it |
| implements the interface of an abstract federate ambassador in Eclipse MOSAIC. In the initialization phase the |
| Ambassador applies for the TimeManagement policies time constrained and time regulated at the RTI. |
| Remind that time constrained means that the time advances of the OMNeT++ Federate are dependent on |
| the other simulators in the federation and time regulating means that the OMNeT++ Federate itself can |
| prevent other federates from advancing their time.</p> |
| <p>The OMNeT++ simulation starts initially with an empty event queue and hence it needs to receive an |
| interaction to fill the event queue with the first events to be processed. That means that the typical time |
| management cycle in the Ambassador starts at step two with the Receive Interaction procedure. Note |
| that messages within Eclipse MOSAIC usually effect more than one interaction e.g. a VehicleUpdates interaction |
| contains information for added nodes and moved nodes. These are exchanged with OMNeT++ using a |
| simple byte protocol. After this procedure the third step of time management cycle is processed with |
| the initial Time Advance Grant. This is the point when the OMNeT++ simulation is able to start and the |
| initialization phase is finished. Hence the time management cycle can be executed from first step which |
| is waiting for a new NER until no federate requests further events and the simulation is finished.</p> |
| <h3 id="the-time-representation">The Time Representation</h3> |
| <p>One important issue for the simulation coupling is the common representation of the logical time at the |
| RTI and the different federates in the federation. Normally, the time is a federate-defined abstract data |
| type. The requirements for such a time are the ability for comparison and addition and most important |
| the possibility of conversion without the loss of precision. Otherwise, deadlocks in the synchronization |
| procedure are guaranteed. On the one hand Eclipse MOSAIC treats times as a 64-bit integer with a resolution of |
| nanoseconds. On the other hand the OMNeT++ simulation time is represented by the type <code>simtime_t</code> |
| which is a typedef to double. It is generally known that conversions from floating point to fixed point are |
| vulnerable to rounding errors. To circumvent this issue the underlying raw 64-bit integer of the <code>simtime_t</code> |
| representation is also made accessible, which works perfect if the scale exponent for time precision was |
| previously initialized to $-9$ (i.e. nanoseconds).</p> |
| |
| </div> |
| |
| |
| |
| |
| |
| |
| <div class="article-widget"> |
| |
| <div class="post-nav row col-12"> |
| |
| |
| |
| <div class="post-nav-item col-6"> |
| <div class="meta-nav">Previous</div> |
| <a href="/mosaic/docs/extending_mosaic/sumo_ambassador_details/" rel="next">Sumo Ambassador Implementation</a> |
| </div> |
| |
| |
| |
| <div class="post-nav-item col-6"> |
| <div class="meta-nav">Next</div> |
| <a href="/mosaic/docs/extending_mosaic/delay_models/" rel="prev">Delay Models</a> |
| </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 & 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 © 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/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.1824b36a85a484362f116f1e24481eb9.js"></script> |
| |
| |
| |
| <script type="application/javascript" src="/mosaic/js/mosaic-wg-cards.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">×</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> |