We propose a network service framework where common network functions such as routing and multicast can be customized on a per-application basis. Network service customization is achieved through service plug-in modules that can be dynamically loaded by applications. In addition to their customization, services can also be composed to form complex aggregate services. Finally, our framework is deployed using an overlay network infrastructure.