SafeChildren Banner

Havoc Oracle Solaris Experts

jueves, 30 de noviembre de 2006

Tunning de red para Solaris

Muchos de los parámetros que tiene configurado Solaris sobre la capa TCP/IP son algo escasos o ajustados, realizando algunas pequeñas modificaciones podemos obtener grandes rendimientos.

Para ello, crearemos un archivo llamado /etc/rc2.d/S99ndd con el siguiente conjunto de modificaciones, puedes descargarlo de aquí

# cat <<! >/etc/rc2.d/S99ndd

# tamaño máximo de ventana de congestión
# Según la relación: max_buf = 2 x cwnd_max
ndd -set /dev/tcp tcp_max_buf 4194304
ndd -set /dev/tcp tcp_cwnd_max 2097152

# aumentamos el tamaño de la ventana tcp
ndd -set /dev/tcp tcp_xmit_hiwat 65536
ndd -set /dev/tcp tcp_recv_hiwat 65536

# tiempo de espera antes de cerrar una conexion tcp
ndd -set /dev/tcp tcp_time_wait_interval 60000

# Ataque SYNC
ndd -set /dev/tcp tcp_ip_abort_cinterval 60000

# default: 480000
ndd -set /dev/tcp tcp_ip_abort_interval 60000

# default: 7200000
ndd -set /dev/tcp tcp_keepalive_interval 900000

# default: 1
ndd -set /dev/tcp tcp_slow_start_initial 2

# default: 1024
ndd -set /dev/tcp tcp_conn_req_max_q0 4096

# default: 128
ndd -set /dev/tcp tcp_conn_req_max_q 1024

# soporte para hacer de router
ndd -set /dev/tcp ip_forwarding 1

!

# chown root:sys /etc/rc2.d/S99ndd
# chmod 750 /etc/rc2.d/S99ndd

La variable ip_forwarding puede ser puesta a 0 si no queremos que nuestra máquina enrute paquetes, si esta variable no está puesta a 1, no será posible hacer NAT para utilizarla como Router.



4 comentarios:

  1. Urko, una consulta, si queremos aplicalr esta configuración supongo que debe ser utilizada a pratir de un reinicio de sistema correcto?, y si queremos hacer las pruebas en caliente, solo basta escribir el ser de info?

    ResponderEliminar
  2. Los parámetros de la capa TCP pueden ser modificados "en caliente" con el comando /usr/sbin/ndd

    Por ejemplo, si queremos ver el impacto de ampliar la ventana:


    # ndd -set /dev/tcp tcp_xmit_hiwat 65536
    # ndd -set /dev/tcp tcp_recv_hiwat 65536

    Por defecto la ventana es de 1048576

    Para ver los parámetros actuales, se debe utilizar la opción -get

    bash-2.05# ndd -get /dev/tcp tcp_max_buf
    1048576

    Lo mejor de estos parámetros es "prueba y error" ya que podemos conseguir algún tipo de mejoría en los servicios (como a mí) que son más importantes (Oracle/NFS) y perder en otros (SOCKET.CONNECT)

    Espero haber solucionado tu duda.

    Urko

    ResponderEliminar
  3. Hola Urko,

    ¿Y como puedo hacer que ndd sea gestionado por SMF? en concreto ¿Cómo puedo hacer el fichero manifest para ndd?
    Un saludo

    ResponderEliminar
  4. Hola Anónimo,

    Bueno, lo cierto es que los cambios que se introducen mediante <ndd> no son el formato perfecto para SMF, principalmente porque son cambios de configuraciones. A no ser que quieras tener unas configuraciones para unas dependencias, y otras para otras dependencias.

    Pero, respondiendo a tu pregunta, la forma más sencilla es

    1.- Utilizar un XML base (el de Tomcat puede servir) Manifest Tomcat 6 para Solaris SMF
    2.- Modificar el script de ejecución que se encuentra en /lib/svc/method/xyz
    3.- Crear en la opción "start" los valores a poner de <ndd>
    4.- Crear en la opción "stop" los valores "por defecto"

    Espero haberte ayudado,

    Un Saludo,
    Urko

    ResponderEliminar