Vehicular Ad hoc NETworks (VANETs), an emerging technology, would allow vehicles on roads to form a self-organized network without the aid of a permanent infrastructure. As a prerequisite to communication in VANETs, an efficient route between communicating nodes in the network must be established, and the routing protocol must adapt to the rapidly changing topology of vehicles in motion. This is one of the goals of VANET routing protocols. In this paper, we present an efficient routing protocol for VANETs, called the Reliable Inter-VEhicular Routing (RIVER) protocol. RIVER utilizes an undirected graph that represents the surrounding street layout where the vertices of the graph are points at which streets curve or intersect, and the graph edges represent the street segments between those vertices. Unlike existing protocols, RIVER performs real-time, active traffic monitoring and uses these data and other data gathered through passive mechanisms to assign a reliability rating to each street edge. The protocol then uses these reliability ratings to select the most reliable route. Control messages are used to identify a node’s neighbors, determine the reliability of street edges, and to share street edge reliability information with other nodes.