Páginas

Mostrando entradas con la etiqueta acelerar. Mostrar todas las entradas
Mostrando entradas con la etiqueta acelerar. Mostrar todas las entradas

jueves, 21 de mayo de 2020

Limitar Ancho de Banda y Priorizar Trafico Mikrotik

Necesitamos hacer doble encolamiento. Una cola para el manejo de ancho de banda y otra para priorización de tráfico. Las colas se implementan en un solo lugar. No se puede hacer en el Queue Tree, simultáneamente, en un router administrador con múltiples clientes.

Vamos a usar Simple Queue para el manejo de ancho de banda por usuario.

A partir de RouterOS 6 el número de colas no es relevante, el acceso a las colas no es secuencial sino por hashing. De manera que, podemos tener cientos de colas, que pueden ser creadas manualmente, dinámicamente o utilizando scripts. Eficiente en equipos multicore (3011, 4011, CCR, etc.).

Para la priorización de servicios usaremos Queue Tree

Planes

. 3M/512k
. 4M/1M
. Doble velocidad por las noches

Crear Queue Types.
Queue List - Queue Types

Serán 4 Queue types una para cada velocidad
1. 3M
2. 512k
3. 4M
4. 1M

También vamos a crear 4 Queue types adicionales para la doble velocidad. 6M 1M 8M 2M.

Colas de bajada (DOWN)
Clasifier: Dst. Address

Colas de subida (UP)
Clasifier: Src. Address







Generar Simple Queues para asignar el ancho de banda a cada uno de los clientes, ejemplo.



Priorizar Tráfico

. ICMP
. WEB HTTP/HTTPS
. VoIP
. DNS

IP Firewall MANGLE

Marcar tráfico ICMP



Marcar conexión

Primero marcamos la conexión
No-mark para asegurarnos de que lo que vamos a marcar no tiene una marca previa.

Marcar paquetes ICMP

Marcar los paquetes que van a pasar por esa conexión



Marcar tráfico Web HTTP/HTTPS



Marcar paquetes Web



Nuevo Protocolo QUIC Google un híbrido entre tcp y udp utiliz el IP protocolo 17.

Marcar tráfico QUIC



Marcar paquetes QUIC



VoIP telefonía IP. Lo que hace es enviar audio en paquetes IP. La mayoría utiliza un rango de puertos. También podemos utilizar la utilidad Torch para averiguarlo. 5060-5082 y 10000-20000.

Marcado de tráfico VoIP



Marcado de paquetes



Marcar el resto del tráfico



Marcado de paquetes




De esta manera podemos priorizar tráfico, por ejemplo, para bajar la latencia en los juegos. Recuerde que podemos utilizar Torch para monitorear a que puertos se conecta la aplicación y que protocolos está utilizando. A partir de esa información puede generar un par de reglas para marcar la conexión y marcar el paquete.

Mangle es una estructura pasiva dentro de RouterOS. De manera que no estamos realizando ninguna acción sobre esas conexiones. Estas marcas serán utilizada por otra estructura del Router.

Al hablar de QoS la esctructura es HTB o queue tree. Vamos a hacer uso de esos paquetes para dar prioridad.


Las prioridades van desde 1-8 siendo 1 la mayor prioridad.

La suma de los limit A no puede ser mayor que el valor del padre, en este caso 100M.








El proceso para priorizar tráfico DNS es el mismo.





OpenBSD es genial!.

viernes, 13 de julio de 2012

Acelerar optimizar sistema

Fuentes:
http://wiki.sabayon.org/index.php?title=How_to_optimize_and_accelerate_your_system
http://www.linuxeando.org/foros/index.php?topic=729.0

Optimizar y acelerar sistema gentoo.

Muchas por no decir todas estas reglas serán aplicables (seguramente), a casi todas las distribuciones Linux, aunque tengo que decir que la mayoría no las necesitará porque los programadores y mantenedores de esas distros (las basadas en Red Hat y Debian, por ejemplo), las incorporan por defecto. Ubuntu, Debian, Centos, etc. Desde el portátil que escribo (Dell Inspiron con Ubuntu 8.04 preinstalado en sda2 y gentoo en sda3)  he podido comprobar que esta optimización no es necesaria en ubuntu.

$ ls -l /dev/disk/by-label

total 0
lrwxrwxrwx 1 root root 10 jul 13 07:41 boot -> ../../sda1
lrwxrwxrwx 1 root root 10 jul 13 07:40 datos -> ../../sda9
lrwxrwxrwx 1 root root 10 jul 13 08:09 gentoo_h -> ../../sda7
lrwxrwxrwx 1 root root 10 jul 13 08:09 gentoo_r -> ../../sda3
lrwxrwxrwx 1 root root 10 jul 13 07:40 ubuntu_h -> ../../sda6
lrwxrwxrwx 1 root root 10 jul 13 07:40 ubuntu_r -> ../../sda2

He instalado (en otro disco duro pero en esta misma máquina), la distribución Centos 6.2 incluida en Linux Magazine del mes de March 2012 que me enviaron de regalo después de pasar el examen LPIC-1 y la verdad viene optimizada al máximo y con mucho software pre-instalado. Centos es una maravilla de distro para usuario final y extremadamente potente y segura en Servidores, con mucha documentación en diferentes idiomas.

El mérito de este artículo es de los chicos de Saboyan (derivada de Gentoo). Vease la url en la parte superior.

Detales de mi máquina:

$ uname -a
Linux zeus 3.3.8-gentoo #1 SMP Thu Jul 12 04:19:51 CEST 2012 x86_64 Intel(R) Core(TM)2 Duo CPU T5750 @ 2.00GHz GenuineIntel GNU/Linux.

$ cat /proc/meminfo|grep -i memtotal
MemTotal:        4045372 kB

Disco duro, Sata II 500 Gb 5400 RPM. 5MB memoria interna (un disco normalito).

Arrancar servicios Openrc en paralelo

Cambiar
# vi /etc/rc.conf

rc_parallel="YES"
rc_logger="NO"

Los servicios necesarios del sistema no deben desactivarse pero otros si. Puede conocerlos con la utilidad
# rc-update show
Rendimiento del disco duro:
# vi /etc/conf.d/hdparm
hda_args="-a16 -c1 -k1 -u1 -S0"
cdrom0_args="-c1 -k1 -u1

Agrego hdparm al arranque del sistema:
# rc-update add hdparm boot

preload es un demonio readhead adaptado que supervisa los programas más utilizados. Parte de esos programas los almacena en cache y aumentar la velocidad de carga:

# emerge -av preload
# rc-update add preload default

Los archivos temporales se borran durante el apagado, se puede colocar sus lugares de almacenamiento en la memoria RAM. Esto reduce el número de operaciones de disco , haciendo más rápido programas que utilizan carpetas temporales.

# vi /etc/fstab

 tmp     /tmp      tmpfs rw,mode=1777 0 0
 vartmp  /var/tmp  tmpfs rw,mode=1777 0 0


Retraso de la repetición del teclado, sin recompilar X11:
# vi /etc/X11/xorg.conf

Por defecto el tiempo de repetición de 500 milisegundos, y el tiempo de respuesta por defecto de 30 milisegundos. Esto cambia a 530 y 0, respectivamente.
....
Section "InputDevice"
Identifier "logitech"
Driver "kbd"
  Option "AutoRepeat" "530 0"
EndSection

En este sistema específico no implementé el resto de optimizaciones. Por si fuera útil incluyo los archivos /etc/sysctl.conf y /root/rules.sh (firewall) y como arrancarlo al iniciar el sistema.
Archivo /etc/sysctl.conf.

# cat /etc/sysctl.conf |grep ^[^#] | colorlog.pl
kernel.printk = 4 4 1 7
fs.inotify.max_ ser_watches = 524288
vm.mmap_min_add  = 65536
fs.file-max = 1 384
kernel.threads- ax = 2048
net.ipv4.conf.e h0.arp_ignore = 1
net.ipv4.conf.e h0.arp_announce = 2
net.ipv4.conf.a l.arp_ignore = 1
net.ipv4.conf.d fault.rp_filter = 1
net.ipv4.ip_for ard = 0
net.ipv4.icmp_e ho_ignore_broadcasts = 1
net.ipv4.conf.a l.rp_filter = 1
net.ipv4.conf.a l.send_redirects = 0
net.ipv4.conf.a l.accept_redirects = 0
net.ipv4.conf.a l.accept_source_route = 0
net.ipv4.conf.a l.arp_announce = 1
vm.swappiness = 5
Un firewall básico para un host con iptables.
# ls -l /root/rules.sh 
-rwx------ 1 root root 1229 jul 12 07:08 /root/rules.sh
# cat /root/rules.sh 

IPT=/sbin/iptables

# Flush old rules, old custom tables
echo " * flushing old rules"
$IPT --flush
$IPT --delete-chain

# Set default policies for all three default chains
echo " * setting default policies"
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

# Enable free use of loopback interfaces
echo " * allowing loopback devices"
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# All TCP sessions should begin with SYN
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Allow established and related packets
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Open the following ports
echo " * allowing ssh on port 22"
$IPT -A INPUT -p tcp --dport 22  -m state --state NEW -j ACCEPT

echo " * allowing dns on port 53"
$IPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT

echo " * allowing http on port 80"
$IPT -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

echo " * allowing https on port 443"
$IPT -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

echo " * allowing ping responses"
$IPT -A INPUT -p ICMP --icmp-type 8 -j ACCEPT

# DROP everything else and Log it
$IPT -A INPUT -j LOG
$IPT -A INPUT -j DROP
#
# Save settings
#
echo " * saving settings"

Ejecutar script:

# /root/rules.sh
 * flushing old rules
 * setting default policies
 * allowing loopback devices
 * allowing ssh on port 22
 * allowing dns on port 53
 * allowing http on port 80
 * allowing https on port 443
 * allowing ping responses
 * saving settings

Guardar la configuración actual:
# /etc/init.d/iptables save
iptables      | * Saving iptables state ...                                 [ ok ]

Iniciar iptables con el sistema:
# rc-update add iptables default
 * service iptables added to runlevel default

Linux es genial!.