28 de abril de 2018

Descubrimiento de rutas o traceroute

El descubrimiento de rutas (que en la jerga se llama "traceo") se puede realizar utilizando un programa incluido en la mayoría de los sistemas operativos y que recibe diferentes denominaciones según cada caso, la más habitual: traceroute.

Operación
El programa permite descubrir y revisar cada uno de los saltos que atraviesa la ruta que toman los paquetes desde el punto en el que se ejecuta el programa y hacia un destino específico.

El programa envía 3 paquetes UDP al destino, utilizando los puertos 33434 (el primer paquete), 33435 (el segundo paquete) y 33436 (el tercer paquete).
Traceroute utiliza paquetes UDP. Sin embargo, algunos sistemas operativos permiten utilizar diferentes paquetes (TCP o UDP).
Microsoft Windows en su aplicación Tracert no utiliza paquetes UDP sino ICMP echo request.

El proceso se inicia enviando primero una secuencia de paquetes UDP con TTL = 1 y a partir de allí se va incrementando el valor del campo TTL de uno en uno hasta llegar al destino o al límite de saltos definido (por defecto 30).

En todos los casos utiliza igual que ping respuestas de ICMP, en este caso utiliza mensajes time exceeded. Opera colocando el valor del campo TTL de los paquetes que envía, inicialmente, en 1. De esta manera la interfaz del primer salto asume que el TTL ha expirado (al valor de TTL que recibe resto uno: 1 – 1 = 0) y envía un mensaje ICMP al origen indicando que ha excedido el TTL del paquete. En esa notificación al origen el dispositivo que genera el mensaje ICMP se identifica a sí mismo por la dirección IP del puerto que descartó el paquete.  De esta manera el sistema en el que se ejecuta el programa obtiene la dirección IP del primer salto o gateway de la red.
A continuación se genera un segundo paquete UDP con TTL igual a 2; de esta forma el nuevo paquete pasa el gateway, es enrutado y finalmente al llegar al próximo gateway o puerto que debe atravesar será descartado y se generará una nueva notificación de TTL excedido. De esta manera se obtiene ahora la dirección IP del segundo salto en la ruta hacia el destino. El proceso continúa de esta manera incrementando el valor del campo TTL de uno en uno hasta llegar al puerto destino o alcanzar el límite de saltos definido (30 por defecto).


De esta forma el sistema donde se ejecuta la aplicación puede identificar la dirección IP (IPv4 o IPv6) de cada dispositivo o salto que está en la ruta del paquete hacia el destino.

El valor máximo por defecto del campo TTL es 30, por lo que inicialmente al ejecutar el programa se rastrean los primeros 30 saltos. Si es preciso este valor puede ser ajustado.
Entre la información que proporciona el resultado de la ejecución de traceroute se encuentra:
  • El listado ordenado de direcciones IP de cada salto que recorre el paquete en su ruta hacia el destino.
  • La demora en milisegundos que ha registrado cada uno de los 3 paquetes que se han enviado en cada porción del trayecto.
  • La identidad de cada salto.



Traceroute nos permite entonces, conocer detalladamente la ruta que recorre nuestro tráfico hasta el dispositivo de destino y también (en el caso de mensajes de destino inalcanzable), determinar en qué punto del trayecto se está interrumpiendo una ruta para, a partir de este dato y con la ayuda de un diagrama de la red poder localizar dónde se encuentra posiblemente un problema.

Traceroute en diferentes sistemas operativos
Cada sistema operativo tiene su propia versión de este programa, con algunas características que le son propias.

En sistemas Microsoft:
El programa que opera recibe el nombre de "tracert"
C:\>tracert www.google.com

En sistemas Linux:
user@localhost:/# traceroute www.google.com

En sistemas Apple:
Utilizando la interfaz gráfica seleccionar: Aplicaciones > Utilidades > Utilidad de Red
Seleccionar la pestaña "Traceroute" y escribir el dominio o IP.

En sistemas Cisco IOS:
Router#traceroute [protocolo] [destino]

Las respuestas posibles cuando se ejecuta el comando desde la línea de comando de un router Cisco IOS son:
!H El router no ha enviado el comando.
P El protocolo es inalcanzable.
N La red es inalcanzable.
* Time out

Router#traceroute [destino] source [interfaz]
Permite especificar la interfaz a través de la cual se desea enviar los paquetes UDP. Si no se utiliza esta opción el dispositivo define la interfaz de salida (es decir la IP de origen) en función de lo indicado en la tabla de enrutamiento.

Además hay en Internet servicios que reciben la denominación genérica de "looking glass" que permiten ejecutar este programa desde puntos específicos de Internet.
Algunos de esos servicios son:

Las abreviaturas y siglas utilizadas en este post puede encontrarlas desarrolladas en
que está disponible en la Librería en Línea de EduBooks.


22 de abril de 2018

Delay, Round Trip Time, Jitter

En nuestro vocabulario técnico de todos los días muchas veces se va desfigurando el significado preciso de algunos términos que es conveniente cada tanto retomar.

Delay
El delay (o "retardo" en castellano) es el tiempo que demora un bit en viajar desde un dispositivo origen hasta un dispositivo destino a través de la red.
Se expresa en milisegundos y tiene varios componentes.
El delay tiene componentes fijos (que no pueden ser modificados) y componentes variables (que pueden ser optimizados en mayor o menor medida).
El componente fijo inevitable es el delay de transmisión que es provocado por el tiempo de propagación de la señal a través del medio físico (cobre, fibra óptica, señal de radiofrecuencia).
Entre los componentes variables debemos considerar el delay de serialización (tiempo que demanda la copia de los bits de la memoria del dispositivo al medio físico), el delay de procesamiento (tiempo requerido por cada dispositivo para definir el reenvío o no del bit), el delay de buffer (que es el tiempo que el bit permanece en espera antes de ser enviado en caso de congestión).

El delay considera el tiempo necesario para establecer la comunicación solamente en sentido origen-destino.
¿Puede ser "medido" utilizando el ping?
No, el ping no mide delay.

RTT
El Round Trip Time (RTT) es el parámetro que muestra como resultado un ping.
Es el tiempo requerido para que una comunicación circule desde el origen hasta el destino y regrese al origen.
Es decir que considera el delay de ida, el delay de procesamiento de la respuesta, y el delay de regreso.
Por eso es una medición solamente aproximativamente del delay, porque en realidad el delay no es la mitad del RTT.
Porque RTT incluye el delay de procesamiento de la respuesta; y porque el delay de ida no es necesariamente igual al delay de regreso.

Con esas consideraciones, el RTT es una aproximación simple y accesible al estado de una ruta que permite realizar comparaciones sobre todo de una misma ruta en diferentes momentos.

Jitter
El Jitter es la variación del delay de una ruta durante una comunicación.
Como dije antes, el delay tiene una componente variable que es importante. Esto hace que durante el desarrollo de una comunicación el delay de cada paquete pueda ser diferente, lo que afecta la calidad de las comunicaciones en tiempo real (voz y video).

El jitter es más difícil de medir y requiere de herramientas específicas como pueden ser iperf o jperf. No puede ser evaluado con herramientas simples como ping o pathping.

Herramientas de los sistemas operativos

Ping
Herramienta basada en paquetes ICMP que permite verificar accesibilidad, RTT y pérdida de paquetes.
Se trata de un programa que utiliza las solicitudes ICMP echo (echo request) para enviar un datagrama a una dirección IP de destino y luego queda en espera de una respuesta (echo reply) a ese datagrama. 
El resultado de esa solicitud de echo puede ser utilizado para evaluar la confiabilidad de la ruta al destino, el delay de esa ruta y si el nodo de destino es “alcanzable” o no.

C:\>ping 8.8.8.8

Haciendo ping a 8.8.8.8 con 32 bytes de datos:
Respuesta desde 8.8.8.8: bytes=32 tiempo=10ms TTL=56
Respuesta desde 8.8.8.8: bytes=32 tiempo=10ms TTL=56
Respuesta desde 8.8.8.8: bytes=32 tiempo=9ms TTL=56
Respuesta desde 8.8.8.8: bytes=32 tiempo=11ms TTL=56

Estadísticas de ping para 8.8.8.8:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:

    Mínimo = 9ms, Máximo = 11ms, Media = 10ms

Es importante tener presente que el resultado de la ejecución del comando no muestra precisamente el delay de la conexión entre origen y destino sino el RTT.

Tracert
El descubrimiento o “traceo” de rutas se puede realizar utilizando el programa traceroute presente en múltiples sistemas operativos. Este programa permite descubrir y revisar salto por salto la ruta que toman los paquetes hacia un destino específico. 
Se envían 3 paquetes UDP al destino, utilizando los puertos 33434 (el primer paquete), 33435 (el segundo paquete) y 33436 (el tercer paquete). El proceso se inicia enviando primero una secuencia de paquetes UDP con TTL = 1 y a partir de allí se va incrementando el valor del campo TTL de uno en uno hasta llegar al destino o al límite de saltos definido (por defecto 30).
Microsoft Windows en su aplicación Tracert no utiliza paquetes UDP sino ICMP echo request.
En todos los casos utiliza respuestas de ICMP, en este caso paquetes time exceeded. 
El valor máximo por defecto del campo TTL es 30, por lo que inicialmente al ejecutar el programa se rastrean los primeros 30 saltos. Si es preciso este valor puede ser ajustado.
Entre la información que proporciona el resultado de la ejecución de traceroute se encuentra:

  • El listado ordenado de direcciones IP de cada salto que recorre el paquete en su ruta hacia el destino.
  • La demora en milisegundos que ha registrado cada uno de los 3 paquetes que se han enviado en cada porción del trayecto. Se trata nuevamente de RTT, no delay.
  • La identidad de cada salto.

C:\>tracert 8.8.8.8

Traza a la dirección google-public-dns-a.google.com [8.8.8.8]
sobre un máximo de 30 saltos:

  1    2 ms      1 ms     1 ms  192.168.0.1
  2    17 ms     8 ms     8 ms  10.96.0.1
  3    11 ms    11 ms    10 ms  10.171.0.109
  4    42 ms    11 ms     8 ms  10.200.0.66
  5    19 ms    17 ms    18 ms  72.14.202.235
  6    28 ms    24 ms    19 ms  108.170.248.225
  7    59 ms     9 ms     9 ms  108.170.227.23
  8    13 ms     8 ms    10 ms  google-public-dns-a.google.com [8.8.8.8]

Traza completa.

Pathping

Herramienta disponible en sistemas operativos Microsoft.
Combina ping y tracert, a la vez que provee información estadística adicional tomada sobre la base de 100 paquetes enviados a cada uno de los saltos de la ruta.
Es una buena herramienta para la evaluación del estado de rutas activas, dada la estadística de tráfico que proporciona.
Como ocurre con ping, esta herramienta también presente un valor de RTT promedio de los 100 paquetes ICMP que envió a cada salto.


C:\>pathping 8.8.8.8

Seguimiento de ruta a google-public-dns-a.google.com [8.8.8.8]
sobre un máximo de 30 saltos:
  0  192.168.0.17
  1  192.168.0.1
  2  10.96.0.1
  3  10.171.0.109
  4  10.200.0.66
  5  72.14.202.235
  6  108.170.248.225
  7  108.170.227.23
  8  google-public-dns-a.google.com [8.8.8.8]

Procesamiento de estadísticas durante 200 segundos...
              Origen hasta aquí   Este Nodo/Vínculo
Salto  RTT    Perdido/Enviado = Pct  Perdido/Enviado = Pct  Dirección
  0                                           192.168.0.17
                                0/ 100 =  0%   |
  1    5ms     8/ 100 =  8%     8/ 100 =  8%  192.168.0.1
                                0/ 100 =  0%   |
  2   11ms     0/ 100 =  0%     0/ 100 =  0%  10.96.0.1
                                0/ 100 =  0%   |
  3   12ms     1/ 100 =  1%     1/ 100 =  1%  10.171.0.109
                                0/ 100 =  0%   |
  4   10ms     3/ 100 =  3%     3/ 100 =  3%  10.200.0.66
                                0/ 100 =  0%   |
  5   12ms     0/ 100 =  0%     0/ 100 =  0%  72.14.202.235
                                1/ 100 =  1%   |
  6   11ms     1/ 100 =  1%     0/ 100 =  0%  108.170.248.225
                                2/ 100 =  2%   |
  7  ---     100/ 100 =100%    97/ 100 = 97%  108.170.227.23
                                0/ 100 =  0%   |
  8   10ms     3/ 100 =  3%     0/ 100 =  0%  google-public-dns-a.google.com [8.8.8.8]

Traza completa.

Lo interesante de esta herramienta es que permite tener información no ya de un paquete individual sino de una ráfaga de 100 paquetes, lo que da una visión más ajustada del estado de una ruta específica.

Aplicaciones

Las abreviaturas y siglas utilizadas en este post puede encontrarlas desarrolladas en
que está disponible en la Librería en Línea de EduBooks.


7 de abril de 2018

Comandos: show interfaces status

El comando show interfaces status es un comando introducido en .IOS 12.1 pero que no está presente en todas las plataformas.
Es un comando presente en plataformas Cisco Catalyst, y es de suma utilidad para tareas de diagnóstico y monitoreo.

Permite verificar de modo sintético y simple el estado de operación de las diferentes interfaces (tanto capa 2 como capa 3) que es presentado en el formato de una tabla en la que cada fila corresponde a una interfaz diferente.

Consideremos en primer lugar un ejemplo tomado de un switch con capacidades de ruteo (capa 3) para luego revisarlo con mayor detalle.

Switch> show interfaces status

 Port   Name     Status     Vlan      Duplex Speed Type
 Fa0/1           disabled   routed      auto  auto 10/100BaseTX
 Fa0/2           disabled   routed      auto  auto 10/100BaseTX
 Fa0/3           disabled   routed      auto  auto 10/100BaseTX
 Fa0/4           disabled   routed      auto  auto 10/100BaseTX
 Fa0/5           disabled   routed      auto  auto 10/100BaseTX
 Fa0/6           connected  10        a-full a-100 10/100BaseTX
 Fa0/7           connected  10        a-full a-100 10/100BaseTX
 Fa0/8           connected  200       a-half a-100 10/100BaseTX
 Fa0/9           connected  trunk     a-full a-100 10/100BaseTX
 Fa0/10          disabled   routed      auto  auto 10/100BaseTX
 Fa0/11          disabled   routed      auto  auto 10/100BaseTX
 Fa0/12          disabled   routed      auto  auto 10/100BaseTX
 Fa0/13          disabled   routed      auto  auto 10/100BaseTX
 Fa0/14          disabled   routed      auto  auto 10/100BaseTX
 Fa0/15          disabled   routed      auto  auto 10/100BaseTX
 Fa0/16          disabled   routed      auto  auto 10/100BaseTX
 Fa0/17          disabled   routed      auto  auto 10/100BaseTX 
 Fa0/18          connected  200       a-half a-100 10/100BaseTX
 Fa0/19          connected  trunk     a-full a-100 10/100BaseTX
 Fa0/20          disabled   routed      auto  auto 10/100BaseTX
 Fa0/21          disabled   routed      auto  auto 10/100BaseTX
 Fa0/22          disabled   routed      auto  auto 10/100BaseTX
 Fa0/23          disabled   routed      auto  auto 10/100BaseTX
 Fa0/24          disabled   routed      auto  auto 10/100BaseTX
 Gi0/1           disabled   routed      full  1000 10/100/1000BaseTX
 Gi0/2           notconnect 1           full  1000 10/100/1000BaseTX


Lectura del comando

Switch> show interfaces status

 Port   Name     Status     Vlan      Duplex Speed Type
 Fa0/1           disabled   routed      auto  auto 10/100BaseTX
 Fa0/2           disabled   routed      auto  auto 10/100BaseTX

  • Port: Presenta la nomenclatura estándar de identificación de interfaces: tipo y ID.
  • Status: Indica el estado del puerto.
    Disabled: puerto administrativamente no habilitado.
    Connected: puerto habilitado y operativo (up/up).
    Notconnected: puerto habilitado pero no operativo (down/down).
  • Vlan: Permite verificar si el puerto está operanto en capa 3, o si está en capa 2 si se trata de un puerto troncal o de acceso.
    Los puertos que están más arriba son puertos ruteados, es decir, operan como interfaces capa 3.
  • Dúplex: Muestra la operación de modo dúplex.
    auto: configurado para negociación automática, pero no negocia pues no es un puerto connected.
  • Speed: Muestra la velocidad a la que opera el puerto.
    auto: configurado para negociación automática, pero no negocia pues no es un puerto connected.
  • Type: tipo de puerto.
    En este caso se trata de interfaces FastEthernet de cobre (RJ-45).

 Fa0/7           connected  10        a-full a-100 10/100BaseTX
 Fa0/8           connected  200       a-half a-100 10/100BaseTX

  • Vlan 200: Se trata de un puerto que opera en capa 2 como puerto de acceso y está asignado a la VLAN 200.
  • Dúplex a-full: El puerto negocia dúplex y ha negociado modo full dúplex.
    Dúplex a-half: El puerto negocia dúplex y ha negociado modo half dúplex.
  • Speed a-100: El puerto negocia velocidad y ha negociado operar a 100 Mbps.

 Fa0/9           connected  trunk     a-full a-100 10/100BaseTX

  • Vlan trunk: El puerto opera en capa 2 como puerto troncal. El comando no indica cuáles son las VLANs permitidas en ese troncal.

Variantes del comando

Switch> show interfaces status err-disabled 

  • Muestra las interfaces que han ingresado por algún motivo en estado err-disabled.

 Port    Name               Status       Reason
 Fa0/4                      notconnect   link-flap

  • Presenta de modo sintético los puertos que han ingresado en estado err-disabled, el estado actual de ese puerto y la razón que motivó el paso a error de cada puerto.

 informational error message when the timer expires on a cause
 --------------------------------------------------------------


 5d04h:%PM-SP-4-ERR_RECOVER:Attempting to recover from link-flap err-disable state on Fa0/4

  • Mensaje de estado que se mostratá al momento de que el puerto vuelva al estado operacional.


Router> show interfaces status inactive 

  • Permite verificar los puertos que se encuentran inactivos. Son puertos que como es el caso del ejemplo están up/up pero no operan de la operación de reenvío de tráfico regular del switch.

 Port    Name               Status       Reason 

 Fa0/2                      inactive     remote-span-vlan 



Las abreviaturas y siglas utilizadas en este post puede encontrarlas desarrolladas en
que está disponible en la Librería en Línea de EduBooks.