Cloud computing is used pervasively in business, government, healthcare, education and security, as well as for entertainment and social interaction. Indeed, it has become one of the most critical pieces of infrastructure in the United States. Cloud computing continues to evolve to serve the ever-growing needs of these applications. Modern cloud applications are structured as a set of interacting microservices. These microservices need rich communication functionality, beyond what networks have traditionally offered, including load balancing, access control, performance monitoring and debugging, encryption, compression, and fault injection. Developers use service meshes to achieve this functionality, but service meshes today have notoriously low performance and high resource consumption due to repeated traversal of the host network stack. The vision of the project is to enable high-performance and efficient communication between microservices via application-defined networking (ADN), where developers specify needed communication functionality at a high level and a compiler automatically generates an optimized implementation. ADN has the potential to significantly improve cloud services by reducing the overheads of microservice applications, improving cloud application performance and reducing waste of resources like CPU and energy.<br/><br/><br/>ADN is a significant departure from current service meshes and traditional networking. In ADN, application developers specify microservices' communication needs using an SQL-like high-level language. From this specification, the ADN controller automatically generates a running implementation that is specific to the application and spreads the desired functionality across available software and hardware platforms (e.g., the kernel, SmartNICs), and it adapts the implementation to the workload. By specializing to application needs (e.g., even message headers are custom) and to the deployment environment, ADN implementations can be highly streamlined. ADN is a new design point in engineering network functionality, compared to the current paradigm of generality adopted by existing network stacks and service meshes. It also creates new opportunities are difficult to realize today. For example, fine-grained load balancing decisions can be made based on fields specific to the application's RPCs (Remote Procedure Calls), and the load balancer can be automatically scaled when the workload increases. Realizing the ADN vision requires innovations across the stack. The proposed work will be carried out through three complementary building blocks: (1) a declarative language with reusable abstractions to specify the desired network functionality; (2) a compiler that translates the specified network behavior into configurations for distributed hardware and software processing platforms; (3) a runtime system that dynamically adjusts these configurations to optimize application performance. Investigating these building blocks will address fundamental research questions regarding the concise specification of application-level (layer 7) network behavior, efficient execution of network policies on hardware, and disruption-free application-level network upgrades.<br/><br/>This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.