Transcript Slide 1
Computer Science’2005, Technical University of Sofia
CIGDP – a protocol for generation &
dissemination of traffic information in
Vehicular Ad-hoc Networks
Mitko Shopov
On October 1, 2005
VANET Unique Characteristics
High mobility that leads to dynamic, rapidly changing topology
Regular movement, restricted by both road topologies and traffic
rules
Communication locality, limited to vehicles geographically close to
each other
Partitioned
Vehicles are usually aware of their position and spatial environment
through the use of GPS and pre-stored digital maps
Vehicles have sufficient power, computing and storage capacity
New proposed approach
Messages for traffic events will be generated and disseminated by
the vehicles in the opposite direction
Blue cars Participants in traffic event
Red car Generate and disseminate the message (marked ACTIVE)
Green cars Store message (marked PASSIVE). Can become ACTIVE
Message structure
Current location of the vehicle
Time of registration
Location of event (road segment)
Direction
Status (active or passive)
Code of event (jam, etc.)
Time-to-Live
Some other information
Time-to-Live Field
TTL determine how long to disseminate the
message
It is decremented on every crossroad
More when crossroad is with equal streets
Less on crossroads with trunk and secondary
streets
Status field
Status field takes two values: ACTIVE & PASSIVE
Only Active vehicle disseminate the message
Passive vehicle only store the message and act as
back-up
Passive vehicle can become Active to increase
reliability and expand the covered area
Implementation Issues
Java language gives us platform independence
Simulation is done through Java based
JiST/SWANS simulator
STRAW realistic vehicle mobility model
Algorithms
Distance calculations:
1.
2.
3.
4.
5.
Location_new = get_location() from GPS;
distance = calculate_euclidean_distance(
location_new , location_old );
Push distance to distances’ array
Location_old = location_new;
Sleep ( 1 second );
Algorithms (2)
Jam detection:
1.
2.
3.
4.
5.
6.
7.
for i in 3 minutes interval do
d = d + distances[ i ];
If d <= d1 then
jam = true;
else
jam = false;
Sleep ( Δt1 seconds);
Algorithms (3)
Enquiry for new events:
1.
2.
3.
4.
5.
6.
send (enquiry message) to all neighbors;
while receiving responses do
responses_count++;;
If responses_count > (max * Number of lanes)
then
generate_message (jam);
Sleep ( Δt2 seconds);
Algorithms (4)
Message dissemination:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
If status of message m is Active then
If message m1 is received and m1 is new version of m then
Erase (m);
m.status = passive;
Else
send (m) to all neighbors;
Sleep ( Δt3 seconds;)
Else if new message m2 is received and m2.status = active then
Sleep ( Δt3 + random offset );
Else
m.status = active ;
Sleep (Δt3 seconds);
End if
Functional scheme
Distance
Calculation
Thread
Jam
Detection
Thread
Java Virtual
Machine
Message
Disseminati
on Thread
Enquiry
events
Thread
Q&A