@@ -207,8 +207,7 @@ _This proxy mode is only available on Linux nodes._
207
207
In ` ipvs ` mode, kube-proxy watches Kubernetes Services and EndpointSlices,
208
208
calls ` netlink ` interface to create IPVS rules accordingly and synchronizes
209
209
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.
212
211
When accessing a Service, IPVS directs traffic to one of the backend Pods.
213
212
214
213
The IPVS proxy mode is based on netfilter hook function that is similar to
@@ -222,12 +221,41 @@ higher throughput of network traffic.
222
221
IPVS provides more options for balancing traffic to backend Pods;
223
222
these are:
224
223
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.
231
259
232
260
{{< note >}}
233
261
To run kube-proxy in IPVS mode, you must make IPVS available on
0 commit comments