Veins (Vehicles in Network Simulation) is an open source framework for simulating wireless network communication between road-going vehicles and infrastructure, such as traffic lights. Veins originated as a specialized application of the OMNeT++ network simulation library, which supports highly detailed network models covering the complete network stack down to the physical layer. SUMO is the first traffic simulation that supports coupling with Veins, which is solved by the so called TraCI protocol.
The TraCI Protocol
The protocol defines how a TCP connection is established between Veins and a traffic simulation, as well as the contents of the packages sent between both ends. The traffic simulation acts as the TraCI server, and waits for a network simulation (Veins), acting as a TraCI client, to initiate the TCP connection between both. Once the connection is established Veins takes control of the simulation flow by creating a continuous feedback loop between traffic and communication to accurately portray the effects of communication on the urban system.
As of version 1.5.5 CityMoS received its own implementation of the TraCI protocol, which allows it to run as a TraCI server in three different ways:
$ ./CityMoS --traci
Running as a TraCI server without additional parameters prompts CityMoS to start up and wait until an instance of Veins has connected. No simulation work will be done before that.
Timed blocking server
$ ./CityMoS --traci = 5
Running as a TraCI server with an additional time argument prompts CityMoS to start up, perform simulation until the given time and then to wait for incoming Veins connections. Once established, the traffic and network simulations are running in unison. This is the most common use case of simulation coupling where the CityMoS side is guaranteed some warm-up time until it reaches a steady state. Doing so ensures that recorded data is free of artifacts that may occur during the startup phase of the simulation
$ ./CityMoS --traci = -1
Running as a TraCI server with any negative parameters prompts CityMoS to run the simulation while at the same time waiting for an incoming Veins connection. In this mode Veins can take charge of the traffic simulation at any time
Region of Interest
In many use cases it is not necessary or useful for the network simulation to geographically cover the entirety of the traffic simulation. For example, the user might only be interested in the effects on a certain district in town, save computational resources to increase performance or reduce the impact of boundary conditions by excluding the border areas from the feedback loop.
Veins, and by extension the TraCI protocol, allow the user to define a region of interest, which delimits the geographic area of the traffic simulation that will be considered for the network simulation.