| .. SPDX-License-Identifier: GPL-2.0 |
| |
| =========== |
| IPvs-sysctl |
| =========== |
| |
| /proc/sys/net/ipv4/vs/* Variables: |
| ================================== |
| |
| am_droprate - INTEGER |
| default 10 |
| |
| It sets the always mode drop rate, which is used in the mode 3 |
| of the drop_rate defense. |
| |
| amemthresh - INTEGER |
| default 1024 |
| |
| It sets the available memory threshold (in pages), which is |
| used in the automatic modes of defense. When there is no |
| enough available memory, the respective strategy will be |
| enabled and the variable is automatically set to 2, otherwise |
| the strategy is disabled and the variable is set to 1. |
| |
| backup_only - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| If set, disable the director function while the server is |
| in backup mode to avoid packet loops for DR/TUN methods. |
| |
| conn_reuse_mode - INTEGER |
| 1 - default |
| |
| Controls how ipvs will deal with connections that are detected |
| port reuse. It is a bitmap, with the values being: |
| |
| 0: disable any special handling on port reuse. The new |
| connection will be delivered to the same real server that was |
| servicing the previous connection. |
| |
| bit 1: enable rescheduling of new connections when it is safe. |
| That is, whenever expire_nodest_conn and for TCP sockets, when |
| the connection is in TIME_WAIT state (which is only possible if |
| you use NAT mode). |
| |
| bit 2: it is bit 1 plus, for TCP connections, when connections |
| are in FIN_WAIT state, as this is the last state seen by load |
| balancer in Direct Routing mode. This bit helps on adding new |
| real servers to a very busy cluster. |
| |
| conntrack - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| If set, maintain connection tracking entries for |
| connections handled by IPVS. |
| |
| This should be enabled if connections handled by IPVS are to be |
| also handled by stateful firewall rules. That is, iptables rules |
| that make use of connection tracking. It is a performance |
| optimisation to disable this setting otherwise. |
| |
| Connections handled by the IPVS FTP application module |
| will have connection tracking entries regardless of this setting. |
| |
| Only available when IPVS is compiled with CONFIG_IP_VS_NFCT enabled. |
| |
| cache_bypass - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| If it is enabled, forward packets to the original destination |
| directly when no cache server is available and destination |
| address is not local (iph->daddr is RTN_UNICAST). It is mostly |
| used in transparent web cache cluster. |
| |
| debug_level - INTEGER |
| - 0 - transmission error messages (default) |
| - 1 - non-fatal error messages |
| - 2 - configuration |
| - 3 - destination trash |
| - 4 - drop entry |
| - 5 - service lookup |
| - 6 - scheduling |
| - 7 - connection new/expire, lookup and synchronization |
| - 8 - state transition |
| - 9 - binding destination, template checks and applications |
| - 10 - IPVS packet transmission |
| - 11 - IPVS packet handling (ip_vs_in/ip_vs_out) |
| - 12 or more - packet traversal |
| |
| Only available when IPVS is compiled with CONFIG_IP_VS_DEBUG enabled. |
| |
| Higher debugging levels include the messages for lower debugging |
| levels, so setting debug level 2, includes level 0, 1 and 2 |
| messages. Thus, logging becomes more and more verbose the higher |
| the level. |
| |
| drop_entry - INTEGER |
| - 0 - disabled (default) |
| |
| The drop_entry defense is to randomly drop entries in the |
| connection hash table, just in order to collect back some |
| memory for new connections. In the current code, the |
| drop_entry procedure can be activated every second, then it |
| randomly scans 1/32 of the whole and drops entries that are in |
| the SYN-RECV/SYNACK state, which should be effective against |
| syn-flooding attack. |
| |
| The valid values of drop_entry are from 0 to 3, where 0 means |
| that this strategy is always disabled, 1 and 2 mean automatic |
| modes (when there is no enough available memory, the strategy |
| is enabled and the variable is automatically set to 2, |
| otherwise the strategy is disabled and the variable is set to |
| 1), and 3 means that the strategy is always enabled. |
| |
| drop_packet - INTEGER |
| - 0 - disabled (default) |
| |
| The drop_packet defense is designed to drop 1/rate packets |
| before forwarding them to real servers. If the rate is 1, then |
| drop all the incoming packets. |
| |
| The value definition is the same as that of the drop_entry. In |
| the automatic mode, the rate is determined by the follow |
| formula: rate = amemthresh / (amemthresh - available_memory) |
| when available memory is less than the available memory |
| threshold. When the mode 3 is set, the always mode drop rate |
| is controlled by the /proc/sys/net/ipv4/vs/am_droprate. |
| |
| est_cpulist - CPULIST |
| Allowed CPUs for estimation kthreads |
| |
| Syntax: standard cpulist format |
| empty list - stop kthread tasks and estimation |
| default - the system's housekeeping CPUs for kthreads |
| |
| Example: |
| "all": all possible CPUs |
| "0-N": all possible CPUs, N denotes last CPU number |
| "0,1-N:1/2": first and all CPUs with odd number |
| "": empty list |
| |
| est_nice - INTEGER |
| default 0 |
| Valid range: -20 (more favorable) .. 19 (less favorable) |
| |
| Niceness value to use for the estimation kthreads (scheduling |
| priority) |
| |
| expire_nodest_conn - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| The default value is 0, the load balancer will silently drop |
| packets when its destination server is not available. It may |
| be useful, when user-space monitoring program deletes the |
| destination server (because of server overload or wrong |
| detection) and add back the server later, and the connections |
| to the server can continue. |
| |
| If this feature is enabled, the load balancer will expire the |
| connection immediately when a packet arrives and its |
| destination server is not available, then the client program |
| will be notified that the connection is closed. This is |
| equivalent to the feature some people requires to flush |
| connections when its destination is not available. |
| |
| expire_quiescent_template - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| When set to a non-zero value, the load balancer will expire |
| persistent templates when the destination server is quiescent. |
| This may be useful, when a user makes a destination server |
| quiescent by setting its weight to 0 and it is desired that |
| subsequent otherwise persistent connections are sent to a |
| different destination server. By default new persistent |
| connections are allowed to quiescent destination servers. |
| |
| If this feature is enabled, the load balancer will expire the |
| persistence template if it is to be used to schedule a new |
| connection and the destination server is quiescent. |
| |
| ignore_tunneled - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| If set, ipvs will set the ipvs_property on all packets which are of |
| unrecognized protocols. This prevents us from routing tunneled |
| protocols like ipip, which is useful to prevent rescheduling |
| packets that have been tunneled to the ipvs host (i.e. to prevent |
| ipvs routing loops when ipvs is also acting as a real server). |
| |
| nat_icmp_send - BOOLEAN |
| - 0 - disabled (default) |
| - not 0 - enabled |
| |
| It controls sending icmp error messages (ICMP_DEST_UNREACH) |
| for VS/NAT when the load balancer receives packets from real |
| servers but the connection entries don't exist. |
| |
| pmtu_disc - BOOLEAN |
| - 0 - disabled |
| - not 0 - enabled (default) |
| |
| By default, reject with FRAG_NEEDED all DF packets that exceed |
| the PMTU, irrespective of the forwarding method. For TUN method |
| the flag can be disabled to fragment such packets. |
| |
| secure_tcp - INTEGER |
| - 0 - disabled (default) |
| |
| The secure_tcp defense is to use a more complicated TCP state |
| transition table. For VS/NAT, it also delays entering the |
| TCP ESTABLISHED state until the three way handshake is completed. |
| |
| The value definition is the same as that of drop_entry and |
| drop_packet. |
| |
| sync_threshold - vector of 2 INTEGERs: sync_threshold, sync_period |
| default 3 50 |
| |
| It sets synchronization threshold, which is the minimum number |
| of incoming packets that a connection needs to receive before |
| the connection will be synchronized. A connection will be |
| synchronized, every time the number of its incoming packets |
| modulus sync_period equals the threshold. The range of the |
| threshold is from 0 to sync_period. |
| |
| When sync_period and sync_refresh_period are 0, send sync only |
| for state changes or only once when pkts matches sync_threshold |
| |
| sync_refresh_period - UNSIGNED INTEGER |
| default 0 |
| |
| In seconds, difference in reported connection timer that triggers |
| new sync message. It can be used to avoid sync messages for the |
| specified period (or half of the connection timeout if it is lower) |
| if connection state is not changed since last sync. |
| |
| This is useful for normal connections with high traffic to reduce |
| sync rate. Additionally, retry sync_retries times with period of |
| sync_refresh_period/8. |
| |
| sync_retries - INTEGER |
| default 0 |
| |
| Defines sync retries with period of sync_refresh_period/8. Useful |
| to protect against loss of sync messages. The range of the |
| sync_retries is from 0 to 3. |
| |
| sync_qlen_max - UNSIGNED LONG |
| |
| Hard limit for queued sync messages that are not sent yet. It |
| defaults to 1/32 of the memory pages but actually represents |
| number of messages. It will protect us from allocating large |
| parts of memory when the sending rate is lower than the queuing |
| rate. |
| |
| sync_sock_size - INTEGER |
| default 0 |
| |
| Configuration of SNDBUF (master) or RCVBUF (slave) socket limit. |
| Default value is 0 (preserve system defaults). |
| |
| sync_ports - INTEGER |
| default 1 |
| |
| The number of threads that master and backup servers can use for |
| sync traffic. Every thread will use single UDP port, thread 0 will |
| use the default port 8848 while last thread will use port |
| 8848+sync_ports-1. |
| |
| snat_reroute - BOOLEAN |
| - 0 - disabled |
| - not 0 - enabled (default) |
| |
| If enabled, recalculate the route of SNATed packets from |
| realservers so that they are routed as if they originate from the |
| director. Otherwise they are routed as if they are forwarded by the |
| director. |
| |
| If policy routing is in effect then it is possible that the route |
| of a packet originating from a director is routed differently to a |
| packet being forwarded by the director. |
| |
| If policy routing is not in effect then the recalculated route will |
| always be the same as the original route so it is an optimisation |
| to disable snat_reroute and avoid the recalculation. |
| |
| sync_persist_mode - INTEGER |
| default 0 |
| |
| Controls the synchronisation of connections when using persistence |
| |
| 0: All types of connections are synchronised |
| |
| 1: Attempt to reduce the synchronisation traffic depending on |
| the connection type. For persistent services avoid synchronisation |
| for normal connections, do it only for persistence templates. |
| In such case, for TCP and SCTP it may need enabling sloppy_tcp and |
| sloppy_sctp flags on backup servers. For non-persistent services |
| such optimization is not applied, mode 0 is assumed. |
| |
| sync_version - INTEGER |
| default 1 |
| |
| The version of the synchronisation protocol used when sending |
| synchronisation messages. |
| |
| 0 selects the original synchronisation protocol (version 0). This |
| should be used when sending synchronisation messages to a legacy |
| system that only understands the original synchronisation protocol. |
| |
| 1 selects the current synchronisation protocol (version 1). This |
| should be used where possible. |
| |
| Kernels with this sync_version entry are able to receive messages |
| of both version 1 and version 2 of the synchronisation protocol. |
| |
| run_estimation - BOOLEAN |
| 0 - disabled |
| not 0 - enabled (default) |
| |
| If disabled, the estimation will be suspended and kthread tasks |
| stopped. |
| |
| You can always re-enable estimation by setting this value to 1. |
| But be careful, the first estimation after re-enable is not |
| accurate. |