teora-tos: (0.02)
	Al usar el Linux como router/gateway/firewall el manipular el campo TOS
	de las cabeceras IP nos permite variar la prioridad de los paquetes


*POR HACER*
-Como se manipula el TOS en el kernel 2.4? (con iptables parece que no)

Resumen de contenido:
--------------------
TOS
    No modificar el bit 1 del TOS
    CONCLUSIONES:
    MANIPULACIN DE TOS:
    MAS AYUDA:
    Anexo-I El campo TOS en el kernel



TOS
    TOS -Type of Service- es el segundo byte en la cabecera IP, y nos permite
    fijar prioridades a los paquetes en las reglas de filtrado de paquetes

    Podemos por ejemplo dar ms prioridad a http que a ftp de forma que una
    descarga ftp continuada no ralentice la navegacin web

    De este byte nos interesan tres bits, ya que el bit "High Reliability" no
    parece tener uso en los kernel de Linux (2.0, 2.2, 2.4):


      Low delay (prioridad alta) mascara 0x10

      Low delay + High Throughput (medio-alta) mascara 0x18 (solo kernel >=2.2)

      Ningn bit TOS (prioridad normal)

      High Throughput (prioridad baja) mascara 0x08

      Min cost (prioridad mnima) mascara 0x02 (solo kernel >=2.2)


    No modificar el bit 1 del TOS

	El man ipchains avisa de no modificar el bit 1 de TOS, esto lo podemos
	hacer usando como andmask 0x01



    CONCLUSIONES:

    - Si es suficiente con tres prioridades (normal, alta y baja) basta con los
     bits TOS LOWDELAY y THROUGHPUT tanto en 2.0, como en 2.2

    - Si hacen falta cinco prioridades, es preciso utilizar un kernel 2.2



    MANIPULACIN DE TOS:

        ---Ejemplo con LOWDELAY---

	kernel comando
	2.0 ipfwadm -t 0x01 0x10
	2.2 ipchains -t 0x01 0x10
	    # Con el primer valor se hace una operacin AND,
	    # ---son CERO los bits que queremos poner a CERO---
	    # Con el segundo valor se hace una operacin XOR,
	    # ---son UNO los bits que queremos poner a UNO---

	2.4 iptables ????



    MAS AYUDA:

      RFCs: paquete doc-rfc en /usr/doc/doc-rfc, en general muy tcnicos

	RFC791 (en Ingls) Definicin del protocolo IP, en el captulo 3
         (SPECIFICATION) estn todos los campos y para que sirven

	RFC1349 (en Ingls) Type of Service in the Internet Protocol Suite

	man ipchains (busca: -t, --TOS andmask xormask)



Anexo-I El campo TOS en el kernel
----------------
kernel 2.0 (en archivo /net/ipv4/ip_forward.c)
IPTOS_LOWDELAY ->   SOPRI_INTERACTIVE	#prioridad alta                                       
IPTOS_THROUGHPUT -> SOPRI_BACKGROUND	#prioridad baja
resto		->  SOPRI_NORMAL   	#prioridad media


----------------
kernel 2.2
definicin de bits de TOS:	include/linux/ip.h	IPTOS_*
prioridades segn TOS:		net/ipv4/route.c	TC_PRIO_*
importancia de cada prioridad:	include/linux/pkt_sched.h

TOS:			Mask	Prioridad			Prioridad
----			----	---------			---------
IPTOS_LOWDELAY          0x10	TC_PRIO_INTERACTIVE		6
LOWDELAY + THROUGHPUT	0x18	TC_PRIO_INTERACTIVE_BULK	4
 -			 -	TC_BESTEFFORT			(0)
IPTOS_THROUGHPUT        0x08	TC_PRIO_BULK			2
IPTOS_MINCOST           0x02	TC_PRIO_FILLER			1

Sin uso: IPTOS_RELIABILITY	0x04	  -


----------------
kernel 2.3-2.4
= kernel 2.2


----------------
