MLS is an efficient location service for mobile ad hoc networks that allows nodes to efficiently lookup the location of other nodes despite concurrent node mobility. MLS uses a hierarchy of location servers where each node maintains location pointers to servers in exponentially increasing areas. Lookup routing overhead is close to optimal at O(d) where d is the distance between nodes, and amortized publish cost due to mobility is O(d log d). Temporary forwarding pointers are used to support concurrency and repair lookup paths when nodes move between server areas. Simulation results show MLS can support maximum node speeds of up to 1/15 of the underlying routing message speed.