Skip to content

Commit b2e71e6

Browse files
authored
Merge pull request #43017 from tengqm/ipvs-scheduler
Amend the list of ipvs schedulers with descriptions
2 parents 9174257 + c99df9f commit b2e71e6

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

content/en/docs/reference/networking/virtual-ips.md

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,7 @@ _This proxy mode is only available on Linux nodes._
207207
In `ipvs` mode, kube-proxy watches Kubernetes Services and EndpointSlices,
208208
calls `netlink` interface to create IPVS rules accordingly and synchronizes
209209
IPVS rules with Kubernetes Services and EndpointSlices periodically.
210-
This control loop ensures that IPVS status matches the desired
211-
state.
210+
This control loop ensures that IPVS status matches the desired state.
212211
When accessing a Service, IPVS directs traffic to one of the backend Pods.
213212

214213
The IPVS proxy mode is based on netfilter hook function that is similar to
@@ -222,12 +221,41 @@ higher throughput of network traffic.
222221
IPVS provides more options for balancing traffic to backend Pods;
223222
these are:
224223

225-
* `rr`: round-robin
226-
* `lc`: least connection (smallest number of open connections)
227-
* `dh`: destination hashing
228-
* `sh`: source hashing
229-
* `sed`: shortest expected delay
230-
* `nq`: never queue
224+
* `rr` (Round Robin): Traffic is equally distributed amongst the backing servers.
225+
226+
* `wrr` (Weighted Round Robin): Traffic is routed to the backing servers based on
227+
the weights of the servers. Servers with higher weights receive new connections
228+
and get more requests than servers with lower weights.
229+
230+
* `lc` (Least Connection): More traffic is assigned to servers with fewer active connections.
231+
232+
* `wlc` (Weighted Least Connection): More traffic is routed to servers with fewer connections
233+
relative to their weights, that is, connections divided by weight.
234+
235+
* `lblc` (Locality based Least Connection): Traffic for the same IP address is sent to the
236+
same backing server if the server is not overloaded and available; otherwise the traffic
237+
is sent to servers with fewer connections, and keep it for future assignment.
238+
239+
* `lblcr` (Locality Based Least Connection with Replication): Traffic for the same IP
240+
address is sent to the server with least connections. If all the backing servers are
241+
overloaded, it picks up one with fewer connections and add it to the target set.
242+
If the target set has not changed for the specified time, the most loaded server
243+
is removed from the set, in order to avoid high degree of replication.
244+
245+
* `sh` (Source Hashing): Traffic is sent to a backing server by looking up a statically
246+
assigned hash table based on the source IP addresses.
247+
248+
* `dh` (Destination Hashing): Traffic is sent to a backing server by looking up a
249+
statically assigned hash table based on their destination addresses.
250+
251+
* `sed` (Shortest Expected Delay): Traffic forwarded to a backing server with the shortest
252+
expected delay. The expected delay is `(C + 1) / U` if sent to a server, where `C` is
253+
the number of connections on the server and `U` is the fixed service rate (weight) of
254+
the server.
255+
256+
* `nq` (Never Queue): Traffic is sent to an idle server if there is one, instead of
257+
waiting for a fast one; if all servers are busy, the algorithm falls back to the `sed`
258+
behavior.
231259

232260
{{< note >}}
233261
To run kube-proxy in IPVS mode, you must make IPVS available on

0 commit comments

Comments
 (0)