Skip to content

Commit c99df9f

Browse files
committed
Amend the list of ipvs schedulers with descriptions
This PR fixes the IPVS scheduler name list by adding schedulers that were missing and adding some descriptions (copied for source code comments) for each.
1 parent 1d3eab1 commit c99df9f

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)