In the application layer of networks, many application servers are middleboxes in the paths of messages from source to destination. Applications require, as a basic coordination mechanism, a way to route messages through the proper servers. This paper elaborates and justifies the requirements for such a coordination mechanism. It presents what is known about satisfying these requirements, and what questions still need to be answered. 1 Routing as a coordination mechanism In any networked application, routing is a fundamental execution mechanism. When a node sends a message, routing determines which node will receive it. The most familiar form of routing is routing for the network layer of the protocol stack, especially routing according to the “classic” Internet architecture. From this viewpoint, the sole purpose of routing is to get a message to its destination. The network literature typically distinguishes between routing, meaning the process by which routes are advertised and ...