lunes, 8 de junio de 2009

Tipos de Servicio con DSCP

Posted by Nicolas | lunes, 8 de junio de 2009 | Category: , , |

A continuación se revisará un punto fundamental antes de hablar de QoS. Es necesario saber de qué forma se pueden marcar los paquetes IP y luego cómo se trata esto a nivel de etiquetas MPLS (no explicado en este post). Si se revisa el encabezado de los paquetes IP de acuerdo a la sección 3.1 (Internet Header Format) del RFC 791 se tiene.

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

En particular es de interés el campo de 8 bits Type of Service. La definición original dicta.

      Bits 0-2:  Precedence.
Bit 3: 0 = Normal Delay, 1 = Low Delay.
Bits 4: 0 = Normal Throughput, 1 = High Throughput.
Bits 5: 0 = Normal Relibility, 1 = High Relibility.
Bit 6-7: Reserved for Future Use.

0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+

Los valores de Precedence se definen como sigue.

111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine

El RFC 1349 (Type of Service in the Internet Protocol Suite) en la sección 3 (Specification of the Type of Service Octet) reformula este campo de la siguiente manera.

0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| PRECEDENCE | TOS | MBZ |
+-----+-----+-----+-----+-----+-----+-----+-----+

Donde MBZ ("must be zero") no es usado y TOS se define como sigue.

1000 -- minimize delay
0100 -- maximize throughput
0010 -- maximize reliability
0001 -- minimize monetary cost
0000 -- normal service

El RFC 2474 (Definition of the DS Field in the IPv4 and IPv6 Headers) actualiza nuevamente este campo utilizando Codepoints (DSCP) para definir el comportamiento en cada salto (PHB). La sección 3 (Differentiated Services Field Definition) en particular señala que el campo es denominado ahora DS (Differentiated Services) en reemplazo de ToS (Type of Service), cuyos seis primeros bits se utilizan para registrar el Codepoint (DSCP: differentiated services codepoint) respectivo y los dos últimos no son actualmente utilizados (CU:currently unused)

0 1 2 3 4 5 6 7
+---+---+---+---+---+---+---+---+
| DSCP | CU |
+---+---+---+---+---+---+---+---+

La sección 4.1 (A Default PHB) recomienda utilizar el Codepoint '000000' para la transmisión de paquetes best-effort. Además se definen los codepoints 'xxx000' como los Class Selector codepoints que permiten la compatibilidad con IP Precedence según la definición original del campo Type of Service.

El RFC 2597 (Assured Forwarding PHB Group) en su sección 6 (Recommended Codepoints) recomienda valores para utilizar para un grupo denominado Assured Forwarding.

Class 1 Class 2 Class 3 Class 4
+----------+----------+----------+----------+
Low Drop Prec | 001010 | 010010 | 011010 | 100010 |
Medium Drop Prec | 001100 | 010100 | 011100 | 100100 |
High Drop Prec | 001110 | 010110 | 011110 | 100110 |
+----------+----------+----------+----------+

El RFC 3246 (An Expedited Forwarding PHB) recomienda en la sección 2.7 (Recommended codepoint for this PHB) utilizar el Codepoint 101110 para EF PHB.

En resumen, entonces, se tienen los siguientes valores.

Codepoint.....Descripción
000000..........CS0
001000..........CS1
010000..........CS2
011000..........CS3
100000..........CS4
101000..........CS5
110000..........CS6
111000..........CS7
001010.........AF 11
001100.........AF 12
001110.........AF 13
010010.........AF 21
010100.........AF 22
010110.........AF 23
011010.........AF 31
011100.........AF 32
011110.........AF 33
100010.........AF 41
100100.........AF 42
100110.........AF 43
101110............EF

El cómo hacer uso de estas marcas se define en el RFC 2475 (An Architecture for Differentiated Services) y cómo introducirlas en pruebas dentro de nuestra red se muestra a continuación.

CE1#ping
Protocol [ip]:
Target IP address: 10.0.0.6
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface:
Type of service [0]: 96
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.6, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/110/152 ms
CE1#

96
?

---> 0x128 + 1x64 + 1x32 + 0x16 + 0x8 + 0x4 + 0x2 + 0x1
---> 01100000
---> DSCP 011000 = CS3 (0x32 + 1x16 + 1x8 + 0x4 + 0x2 + 0x1 = 24)
---> IP PRECEDENCE = 011 = 3 (Flash)

En total 4 comentarios:

  1. Muy buen resumen sobre los diferentes RFCs. Gracias

  2. Gracias por tomarte el tiempo y explicar :)

  3. Lo que si te queria consultar es si ese valor 24 que mencionas al final sirve para algo o se utiliza en alguna configuracion? CS3 (0x32 + 1x16 + 1x8 + 0x4 + 0x2 + 0x1 = 24)

  4. El tráfico IP con valor 96 en el campo TOS puede hacer match, ya sea a DSCP CS3, DSCP 24, IPP flash o IPP 3 en tu definición de clases de servicio. Ej:

    ROUTER(config)#class-map TEST
    ROUTER(config-cmap)#match ip precedence 3
    ROUTER(config-cmap)#match ip precedence flash
    ROUTER(config-cmap)#match ip dscp 24
    ROUTER(config-cmap)#match ip dscp cs3


Leave a Reply