--- category: Reference title: Routing & Traffic Management order: 20 bodyclass: docs layout: docs type: markdown --- ## Overview Istio provides a simple Domain-specific language (DSL) to control how API calls and layer-4 traffic flow across various microservices in the application deployment. The DSL is a [YAML mapping](../reference/writing-config.html) of a [protobuf](https://developers.google.com/protocol-buffers/docs/proto3) schema documented [here](https://github.com/istio/api/blob/master/proxy/v1/config/cfg.md). 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.html). For example, the above rule can be set using the following command: ```bash $ cat <