We envision that the use of embedded devices in cars will soon become a reality. To demonstrate the feasibility of the Smart Messages (SM) computing platform for real-world applications, we have developed EZCab, an application for locating and booking free cabs in densely crowded traffic environments (like Manhattan, where looking for a free cab can be quite an annoying experience). Instead of calling a cab company or merely ``gesturing'' to negotiate a cab for her destination, a client can simply inject an SM through her cell phone or handheld device, which performs seamlessly the same action. Unlike the existing solutions for inter-car communication that are based on certain infrastructures (which are expensive, cannot be deployed on every road. and provide only limited information), EZCab uses a peer-to-peer approach whose key benefits are scalability and practicality. A scenario for EZCab  is illustrated below.

Figure 1: Example scenario for EZCab

The client in Figure 1 injects an SM in the network to book a free cab. If no routes to a free cab exist, a FreeCabDiscovery SM will traverse the network up to a client-specified number of hops, looking for a free cab. Once this threshold is reached, the FreeCabDiscovery message migrates back to the client, setting up routing tables and reporting the probability of finding a free cab on the reverse path. The FreeCabDiscovery mechanism is illustrated in Figure 2.

Figure 2: FreeCabDiscovery SM sets the routing tables on the reverse path.

  1. After the routes have been set, a BookCab SM is injected in the network to locate a free cab discovered during FreeCabDiscovery. At each node, the BookCab SM checks if the taxi is free. If not, it chooses the next neighbor greedily (i.e., biggest probability). Upon reaching a free cab, the message sets the cab status to "occupied".

Figure 3: BookCab SM locates a free cab

  1. After BookCab SM has reached a free cab, the confirmation phase between the client and the cab's driver is initiated. A ReportFreeCab SM migrates back to the client's location, using geographical routing, to report that a booked cab is on the way.

  2. Once the client is informed, a Confirmation SM migrates back to the booked cab, with an acknowledgment to let the driver know that the handshake has succeeded.

Figure 4: The booking is confirmed

Upon reaching the client's location, the driver initiates a validation mechanism to ensure that the client is the same person who booked the cab. To enforce this, the client and the free cab exchange their public keys during the three-way handshake protocol. The cab driver, upon reaching the client's space, broadcasts a challenge in the zone, by encrypting a text using the client's public key. On receiving the encrypted text, the client decrypts it using her private key, in turn using the cab's public key to encrypt the text again and sending it to the cab. The client reply is decrypted at the cab and checked against the one sent earlier. If the reply text is identical, the client is validated.