Generador de latencia para simular condiciones reales de enlaces WAN

Fecha: 28 de octubre del 2014 Clase: Exploration 3

 

Escenario

 

En este escenario se intentan reproducir las condiciones de latencia propias de enlaces WAN,

y que no son posibles en un ambiente de laboratorio, como muchos escenarios de las clases.

 

 

En las pruebas originales se utilizó una versión trial de un simulador de enlaces, pero la idea original

se gestó en una charla en el cofee break de las clases con un alumno para crear un prototipo casero

y configurar la latencia a demanda con un preset.

 

Todo el mérito de este desarrollo es de Nahuel Osella quien le dio vida al prototipo.

 

Pruebas con el software de emulación de latencia

 

 

 

 

 

 

 

C:\Users\CIT>ping 192.168.72.101 -t

 

Haciendo ping a 192.168.72.101 con 32 bytes de datos:

Respuesta desde 192.168.72.101: bytes=32 tiempo=480ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=289ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=47ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=642ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=521ms TTL=128

---resumido---

Respuesta desde 192.168.72.101: bytes=32 tiempo=839ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=198ms TTL=128

Tiempo de espera agotado para esta solicitud.

Respuesta desde 192.168.72.101: bytes=32 tiempo=477ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=832ms TTL=128

Tiempo de espera agotado para esta solicitud.

Respuesta desde 192.168.72.101: bytes=32 tiempo=266ms TTL=128

Respuesta desde 192.168.72.101: bytes=32 tiempo=746ms TTL=128

Tiempo de espera agotado para esta solicitud.

Respuesta desde 192.168.72.101: bytes=32 tiempo=412ms TTL=128

---resumido---

Respuesta desde 192.168.72.101: bytes=32 tiempo=231ms TTL=128

 

Estadísticas de ping para 192.168.72.101:

    Paquetes: enviados = 50, recibidos = 39, perdidos = 11

    (22% perdidos),

Tiempos aproximados de ida y vuelta en milisegundos:

    Mínimo = 47ms, Máximo = 842ms, Media = 470ms

 

 

Pruebas con el generador de latencia de “Circo System”

 

 

 

 

Pruebas iniciales del prototipo

 

(gentileza de Nahuel Osella)

 

C:\Users\CIT>ping -t 192.168.1.201 (esta es la IP del generador)

 

Haciendo ping a 192.168.1.201 con 32 bytes de datos:

Respuesta desde 192.168.1.201: bytes=32 tiempo=65ms TTL=100 (con 60 mseg de retardo)

Respuesta desde 192.168.1.201: bytes=32 tiempo=60ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=62ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=63ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=11ms TTL=100 (con 10 mseg de retardo)

Respuesta desde 192.168.1.201: bytes=32 tiempo=10ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=9ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=7ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=223ms TTL=100 (con 300 mseg de retardo)

Respuesta desde 192.168.1.201: bytes=32 tiempo=294ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=293ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=520ms TTL=100 (con 500 mseg de retardo)

Respuesta desde 192.168.1.201: bytes=32 tiempo=573ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=570ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=575ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=2060ms TTL=100 (con 2000 mseg de retardo)

Respuesta desde 192.168.1.201: bytes=32 tiempo=2176ms TTL=100

Respuesta desde 192.168.1.201: bytes=32 tiempo=2176ms TTL=100

---resumido---

 

Estadísticas de ping para 192.168.1.201:

    Paquetes: enviados = 139, recibidos = 139, perdidos = 0

    (0% perdidos),

Tiempos aproximados de ida y vuelta en milisegundos:

    Mínimo = 7ms, Máximo = 2182ms, Media = 547ms

Control-C

^C

 

 

Pruebas reales con tráfico IPSec

 

Con este escenario se intenta verificar las caídas del tunel IPSec por pérdidas de paquetes, pérdidas por latencia

o paquetes duplicados. Se intenta generar una conexión tan miserable como las condiciones reales a las que se

enfrenta el tráfico en internet.

 

El HUB en el centro, aporta colisiones y como TAP para sniffear el tráfico en la WAN.

 

 

 

(gentileza de Nahuel Osella)

 

Verificación

 

Cordoba#sh crypto ipsec sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id status

192.168.11.10   192.168.10.10   QM_IDLE           1004 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

Cordoba#

 

Cordoba#sh crypto ipsec sa

 

interface: FastEthernet0/1

    Crypto map tag: VPN, local addr 192.168.11.10

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (172.16.2.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (172.16.1.0/255.255.255.0/0/0)

   current_peer 192.168.10.10 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 9105, #pkts encrypt: 9105, #pkts digest: 9105

    #pkts decaps: 9109, #pkts decrypt: 9109, #pkts verify: 9109

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 27 (paquetes duplicados)

     ---resumido---

Cordoba#

 

 

Utilización de la función “duplicador de paquetes” para verificar el check de IPSec

 

 

*Oct 27 22:09:21.382: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed

connection id=5, sequence number=39

*Oct 28 00:21:04.617: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed

connection id=29, sequence number=321

*Oct 27 22:06:43.710: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed

connection id=3, sequence number=326

 

 

La VPN nunca se cayó, por consiguiente, el IPSec, al menos en esta prueba, no se vuelve inestable

ante latencia, la próxima prueba será también con mayor pérdida de paquetes, allá vamos.

 

Configuración de los equipos

 

Rosario#sh runn

Building configuration...

 

Current configuration : 1299 bytes

!

version 12.2

!

hostname Rosario

!

ip dhcp pool DHCP

   network 172.16.1.0 255.255.255.0

   default-router 172.16.1.1

!

crypto isakmp policy 10

 encr aes 256

 authentication pre-share

 group 5

 lifetime 3600

crypto isakmp key Presh4red address 192.168.11.10

!

crypto ipsec transform-set ENCRIPTA esp-3des esp-sha-hmac

 mode transport

!

 crypto map MYMAP 10 ipsec-isakmp

 set peer 192.168.11.10

 set security-association lifetime seconds 900

 set transform-set ENCRIPTA

 set pfs group5

 match address 101

!

interface Ethernet0

 ip address 172.16.1.1 255.255.255.0

 ip nat inside

!

interface Ethernet1

 ip address 192.168.10.10 255.255.255.0

 ip nat outside

 crypto map MYMAP

!

ip nat inside source list 100 interface Ethernet1 overload

ip classless

ip route 0.0.0.0 0.0.0.0 192.168.10.1

!

access-list 100 deny   ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255

access-list 100 permit ip 172.16.1.0 0.0.0.255 any

access-list 101 permit ip 172.16.1.0 0.0.0.255 172.16.2.0 0.0.0.255

!

end

 

Rosario#

 

Cordoba#sh runn

Building configuration...

 

Current configuration : 1934 bytes

!

version 12.4

!

hostname Cordoba

!

ip dhcp pool DHCP

   network 172.16.2.0 255.255.255.0

   default-router 172.16.2.1

!

crypto isakmp policy 10

 encr aes 256

 authentication pre-share

 group 5

 lifetime 3600

 crypto isakmp key Presh4red address 192.168.10.10

!

crypto ipsec transform-set ENCRIPTA esp-3des esp-sha-hmac

 mode transport

!

crypto map VPN 10 ipsec-isakmp

 set peer 192.168.10.10

 set security-association lifetime seconds 900

 set transform-set ENCRIPTA

 set pfs group5

 match address 101

!

interface FastEthernet0/0

 ip address 172.16.2.1 255.255.255.0

 ip nat inside

!

interface FastEthernet0/1

 ip address 192.168.11.10 255.255.255.0

 ip nat outside

 crypto map VPN

!

ip route 0.0.0.0 0.0.0.0 192.168.11.1

ip classless

ip nat inside source list 100 interface FastEthernet0/1 overload

!

access-list 100 deny   ip 172.16.2.0 0.0.0.255 172.16.1.0 0.0.0.255

access-list 100 permit ip 172.16.2.0 0.0.0.255 any

access-list 101 permit ip 172.16.2.0 0.0.0.255 172.16.1.0 0.0.0.255

!

end

 

Cordoba#

 

 

 

(2014) Networking may cause paranoid minds

Rosario, Argentina