--- bodyclass: docs headline: 'Routing & Traffic Management' layout: docs title: Routing & Traffic Management type: markdown sidenav: doc-side-reference-nav.html --- ## Overview Istio provides a simple Domain-specific language (DSL) based on the proto3 schema (documented [here](https://github.com/istio/api/blob/master/proxy/v1/config/cfg.md)) to control how API calls and layer-4 traffic flows across various microservices in the application deployment. The DSL allows the operator to configure service level properties such as circuit breakers, timeouts, retries, as well as set up common continuous deployment tasks such as canary rollouts, A/B testing, staged rollouts with %-based traffic splits, etc. For example, a simple rule to send 100% of incoming traffic for a "reviews" microservice to version "v1" can be described using the Rules DSL as follows: ```yaml destination: reviews.default.svc.cluster.local route: - tags: version: v1 weight: 100 ``` The destination is the name of the service (specified as a fully qualified domain name (FQDN)) to which the traffic is being routed. In a Kubernetes deployment of Istio, the route *tag* "version: v1" corresponds to a Kubernetes *label* "version: v1". The rule ensures that only Kubernetes pods containing the label "version: v1" will receive traffic. There are two types of rules in Istio, **Route Rules**, which control request routing, and **Destination Policies**, which specify policies, for example, circuit breakers, that control requests for a destination service. Istio rules can be set and displayed using the [istioctl CLI](istioctl.md). For example, the above rule can be set using the following command: ```bash $ cat <