A service mesh is a dedicated infrastructure layer like the open source project Istio, that controls how different parts of a distributed application share data with one another, without adding it into the application’s code. More precisely, service meshes control service-to-service communication in a microservices architecture to perform load balancing, deliver service requests to other services, encrypt data, and discover other services.
A service mesh is composed of a data plane and a control plane. The data plane consists of intelligent proxies that are responsible to control all communication between the services. The control plane on the other hand acts as the brain of the mesh and controls the proxies. Or simple: the data plane forwards data while the control plan controls how this data is forwarded.