Network and Kernel Tunable That Affect NetBackup Interface MTU Size on loopback interface for internal sockets: performance If it does not impact other applications, should match netbackup/NET_BUFFER_SZ (which affects all NBU sockets - internal and external - which may have dependancies on the configuration of remote hosts). output: netstat -ni (ifconfig -a | grep mtu) # Sol8: lo0=8232 eri0=1500 output: netstat -ni # AIX5: lo0=16896 en0=1500 output: netstat -ni # SuSE9: lo=16436 eth0=1500 Network Buffer or Window Size (may impact performance, should play nice with NBU NET_BUFFER_SZ): output: no -a | grep 'sb_max' # AIX4/5.1: 1048576, hard max output: no -a | grep 'tcp_sendspace' # AIX4/5.1: 16384, tunable max output: no -a | grep 'tcp_recvspace' # AIX4/5.1: 16384, tunable max output: ndd –get /dev/tcp tcp_hiwater_max # HP-UX 11.0: 2147483647 output: ndd –get /dev/tcp tcp_xmit_hiwater_def # HP-UX 11.0: 32768 output: ndd –get /dev/tcp tcp_recv_hiwater_def # HP-UX 11.0: 32768 output: ndd –get /dev/tcp tcp_xmit_hiwater_max # HP-UX 11.11: output: ndd –get /dev/tcp tcp_recv_hiwater_max # HP-UX 11.11: output: ndd -get /dev/tcp tcp_xmit_hiwat # Sol8: 16384 bytes output: ndd -get /dev/tcp tcp_recv_hiwat # Sol8: 24576 bytes output: ndd –get /dev/tcp tcp_max_buf # Sol10: 1048576 bytes, hard max output: ndd -get /dev/tcp tcp_xmit_hiwat # Sol10: 49152 bytes, tunable max output: ndd -get /dev/tcp tcp_recv_hiwat # Sol10: 49152 bytes, tunable max Note: 6.5 (proposed) Stop setting SO_SNDBUF/SO_RCVBUF between bpbkar/dbext and bptm/bpdm for the write socket and add NET_BUFFER_SZ processing to bpfilter (ET1032804). Note: Win2K and Win2K3 TCP Features: http://support.microsoft.com/kb/224829 . Obscure Performance Problems In rare instances, Solaris 10 internal network for catalog backups may be signficantly degraded until this change is made. mdb -kw do_tcp_fusion/W 0 To make it permanent, add 'set ip:do_tcp_fusion = 0' to /etc/system. The xinetd.conf file has a setting which can restrict the number of sockets between a remote host interface a specific service local. This can cause sockets not to become connected. defaults { per_source 1 } # Linux Significant performance degradation was seen on AIX with the following non-standard tuning in place with netbackup/NET_BUFFER_SZ = 65536. Changing the contents of NET_BUFFER_SZ to 262144 resolved the problem. no -o rfc1323=1 no -o sb_max=1310720 no -o tcp_sendspace=262144 no -o tcp_recvspace=262144 chdev -l en0 -a state=up -a rfc1323=1 -a tcp_recvspace=262144 -a tcp_sendspace=262144 These touch files may also be of use although not related to the network side; netbackup/NET_BUFFER_SZ # Sets SO_[SND|RCV]BUF. netbackup/db/config/SIZE_DATA_BUFFERS # netbackup/db/config/SIZE_DATA_BUFFERS_NDMP # NDMP STUs only. netbackup/db/config/SIZE_DATA_BUFFERS_DISK # DSUs only. netbackup/db/config/SIZE_DATA_BUFFERS_MULTI # ITC/MultipleCopies only. netbackup/db/config/SIZE_DATA_BUFFERS_FT # FT Client only. netbackup/db/config/NUMBER_DATA_BUFFERS # netbackup/db/config/NUBMER_DATA_BUFFERS_RESTORE # Restores only. netbackup/db/config/NUMBER_DATA_BUFFERS_DISK # DSUs only. netbackup/db/config/NUMBER_DATA_BUFFERS_MULTI # ITC/MultipleCopies only. netbackup/db/config/NUMBER_BUFFERS_FT # FT Client only. Initial Connection Timeout: This is how long the TCP stack will wait for a connection to be established. output: no -a | grep keepinit # AIX = 150/2 seconds output: sysconfig -q inet | grep tcp_keepinit # Tru64 = 150/2 seconds Retransmission (errno=32, status=24): output: ndd -get /dev/tcp tcp_ip_abort_interval # Solaris = 480000 ms output: ndd -get /dev/tcp tcp_rexmit_interval_initial # Solaris = 3000 ms output: ndd -get /dev/tcp tcp_rexmit_interval_min # Solaris = 400 ms output: ndd -get /dev/tcp tcp_rexmit_interval_max # Solaris = 60000 ms output: ndd -get /dev/tcp tcp_ip_abort_interval # HP-UX 11.0 = 600000 ms output: ndd -get /dev/tcp tcp_rexmit_interval_initial # HP-UX 11.0= 1500 ms output: ndd -get /dev/tcp tcp_rexmit_interval_min # HP-UX 11.0= 500 ms output: ndd -get /dev/tcp tcp_rexmit_interval_max # HP-UX 11.0= 60000 ms Connection Keep Alive Probes: Decrease these settings to prevent firewalls from dropping 'idle' sessions, typically master->bpbrm for automatic database jobs and dbext-->bprd for the application backup jobs. Time before first probe. output: no -a | grep keepidle # AIX 4.3.3 = 14400/2 secs total output: ndd -get /dev/tcp tcp_keepalive_interval # HP-UX 11.0 = 7200000 ms output: sysctl net.ipv4.tcp_keepalive_time # Linux output: sysconfig -q inet | grep tcp_keepalive_default # Tru64 = 1=enabled output: sysconfig -q inet | grep tcp_keepidle # Tru64 = 14400/2 sec probe#1 Time between probes. output: no -a | grep keepintvl # AIX 4.3.3 = 150/2 seconds output: ndd -get /dev/tcp tcp_keepalive_interval # HP-UX 11.0 = 7200000 ms output: sysctl net.ipv4.tcp_keepalive_intvl # Linux output: ndd -get /dev/tcp tcp_keepalive_interval # Solaris 7/8 = 7200000 ms output: sysconfig -q inet | grep tcp_keepintvl # Tru64 = 150/2 sec probe#n Maximum probes before socket is reset. output: no -a | grep tcp_keepcnt # AIX 4.3.3 = 8 count before close output: ndd -get /dev/tcp tcp_keepalives_kill # HP-UX 11.0 = output: sysctl net.ipv4.tcp_keepalive_probes # Linux output: sysconfig -q inet | grep tcp_keepcnt # Tru64 = 8 count before close Remote Application Close Timeout: This is how long the local TCP stack will wait for the remote application to close the socket after the local application has performed it’s. output: ndd -get /dev/tcp tcp_fin_wait_2_flush_interval # Solaris = 675000 output: ndd -get /dev/tcp tcp_fin_wait_timer # HP-UX 10.20 = 0 output: ndd -get /dev/tcp tcp_fin_wait_2_timeout # HP-UX 11.0 = 0 Closed Connection Timeout: Decrease or enable these settings to allow the host TCP stack to quickly recycle ports for sockets that have been closed by both the local and remote application. output: ndd -get /dev/tcp tcp_close_wait_interval # Solaris 2.6 = 240000 ms output: ndd -get /dev/tcp tcp_time_wait_interval # Solaris 7/8/9 = 240000 ms output: ndd -get /dev/tcp tcp_time_wait_interval # HP-UX 11 = 60000 ms output: no -a | grep tcp_timewait # AIX = 1 * 15 seconds output: sysctl net.ipv4.vs.timeout_timewait # Linux 2.2 = 60 seconds output: sysctl net.ipv4.tcp_tw_recycle # Linux 2.4 = 0 (no fast recycling) output: sysctl net.ipv4.tcp_tw_reuse # Linux 2.4 = 0 (even with protocol done) output: sysctl net.ipv4.tcp_fin_timeout # Linux 2.4 = 60 seconds timeout_timewait output: sysconfig -q inet | grep tcp_msl # Tru64 = 60 (1/2 secs, time_wait = tcp_msl*2) Nagle's Algorithm and Small Packet Delays: By default TCPv4 is configured to delay transmitting small packets so as to aggregate data bound for a remote destination. This delay can be minimized be either setting socket option TCP_NODELAY in the application or the following tunables. output: ndd -get /dev/tcp tcp_naglim_def # Solaris 8/9 = 4095 (1=disable) output: no -a | grep tcp_nodelayack # AIX = 0 (1=disable) Determining Variable Names, Default Values, and Value Ranges: Solaris 8: ndd -get /dev/tcp ? HP-UX: ndd -get /dev/tcp ? ; ndd -h ; ndd -h parmName AIX: no -a ; man no Tru64: sysconfig -s ; sysconfig -Q modName Linux: sysctl -a W2K: tcpip2k.asp Changing Variable Values: Solaris 8: ndd -set /dev/tcp HP-UX: ndd -set /dev/tcp AIX: no -o = Linux: sysctl = ; sysctl -p [/etc/sysctl.conf] System Configuration Files For Network At Startup: Solaris: /etc/init.d/inetinit HP-UX: /etc/rc.config.d/ndd.conf Linux: /etc/sysctl.conf AIX: /etc/tunables/nextboot Windows Registry Information: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveInterval KeepAliveTime Interfaces\\TCPInitialRtt InitialRtt MaxUserPort TcpMaxDataRetransmissions TcpNumConnections TcpTimedWaitDelay HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters SessionKeepAlive Value Name: KeepAliveTime (Win2000, Win2003) Key: Tcpip\Parameters Value Type: REG_DWORD-time in milliseconds Valid Range: 1-0xFFFFFFFF Default: 7,200,000 (two hours) Recommendation: 300,000 Description: The parameter controls how long before TCP attempts to verify that an idle connection is still intact by sending a keep-alive packet. If the remote system is still reachable and functioning, it acknowledges the keep-alive transmission. Keep-alive packets are not sent by default. This feature may be enabled on a connection by an application. Value Name: KeepAliveInterval (Win2000, Win2003) Key: Tcpip\Parameters Value Type: REG_DWORD-time in milliseconds Valid Range: 1-0xFFFFFFFF Default: 1000 (one second) Description: This parameter determines the interval between keep-alive retransmissions until a response is received. Once a response is received, the delay until the next keep-alive transmission is again controlled by the value of KeepAliveTime. The connection is aborted after the number of retransmissions specified by TcpMaxDataRetransmissions has gone unanswered. Value Name: TcpMaxDataRetransmissions (Win2000, Win2003) Key: Tcpip\Parameters Data Type: REG_DWORD - Number Valid Range: 0 -0xFFFFFFFF Default: 5) Description: This parameter controls the number of times TCP retransmits an individual datasegment (non connect segment) before aborting the connection. The retransmission timeout is doubled with each successive retransmission on a connection. It is reset when responses resume. The base timeout value is dynamically determined by the measured round-trip time on the connection. Value Name: TCPInitialRtt (Win2000) Key: Tcpip\Parameters\Interfaces\ Data Type: REG_DWORD Valid Range: 3000-65535 (decimal) Default: 0xBB8(3000 decimal) Description: This parameter controls the initial retransmission timeout used by TCP on each new connection. It applies to the connection request (SYN) and to the first datasegments sent on each connection. For example, the value data 5000 decimal sets the initial retransmit time to five seconds. Value Name: InitialRtt (WinNT40, Win2000) Key: Tcpip\Parameters Data Type: REG_DWORD Valid Range: 0-65535 (decimal) Default: 0xBB8(3000 decimal) Description: This parameter controls the initial retransmission timeout used by TCP on each new connection. It applies to the connection request (SYN) and to the first datasegment(s) sent on each connection. Value Name: MaxUserPort (Win2000, Win2003) Key: Tcpip\Parameters Data Type: REG_DWORD Value: 65534 Valid Range: 5000-65534 (decimal) Default: 0x1388 (5000 decimal) Description: The result will be an increase in the available port range available to applications on the host. Value Name: TcpNumConnections (Win2000, Win2003) Key: Tcpip\Parameters Value Type: REG_DWORD-number Valid Range: 0-0xFFFFFE Default: 0xFFFFFE Description: This parameter limits the maximum number of connections that TCP can have open simultaneously. Value Name: TcpTimedWaitDelay (Win2000, Win2003) Key: Tcpip\Parameters Value Type: REG_DWORD-time in seconds Valid Range: 30-300 (decimal) (Win2000) Default: 0xF0 (240 decimal) (Win2000) Valid Range: 0-300 (decimal) (Win2003) Default: 0x78 (120 decimal) (Win2003) Description: This parameter determines the length of time that a connection stays in the TIME_WAIT state when being closed. While a connection is in the TIME_WAIT state, the socket pair cannot be reused. This is also known as the 2MSL state because the value should be twice the maximum segment lifetime on the network. See RFC 793 for further details. Value Name: SessionKeepAlive (Win2000, Win2003) Key: Netbt\Parameters Value Type: REG_DWORD-time in milliseconds Valid Range: 60,000-0xFFFFFFFF Default: 3,600,000 (1 hour) Description: This value determines the time interval between keep-alive transmissions on a session. Setting the value to 0xFFFFFFF disables keep-alives. Suggested N/work tuning from Oracle TN. ndd -set /dev/tcp tcp_close_wait_interval 60000 ndd -set /dev/tcp tcp_time_wait_interval 60000 ndd -set /dev/tcp tcp_conn_req_max_q 1024 ndd -set /dev/tcp tcp_conn_req_max_q0 4096 ndd -set /dev/tcp tcp_ip_abort_interval 60000 ndd -set /dev/tcp tcp_keepalive_interval 900000 ndd -set /dev/tcp tcp_rexmit_interval_initial 3000 ndd -set /dev/tcp tcp_rexmit_interval_max 10000 ndd -set /dev/tcp tcp_rexmit_interval_min 3000 ndd -set /dev/tcp tcp_smallest_anon_port 1024 ndd -set /dev/tcp tcp_slow_start_initial 2 ndd -set /dev/tcp tcp_xmit_hiwat 32768 ndd -set /dev/tcp tcp_recv_hiwat 32768