Agenda: ejercicios-mediciones-analisis-redes-metricas.txt

File ejercicios-mediciones-analisis-redes-metricas.txt, 14.8 KB (added by admin, 8 years ago)
Line 
1REDES:
2Ejercicios de Definiciones de Rendimiento y Mediciones
3=========================================================
4
5Notas:
6------
7* Comandos precedidos con "$" implican que Ud. debe ejecutar el comando como un usuario general no como root.
8* Comandos precedidos con "#" implican que Ud. debe ejecutar el comando como root
9* Comandos con lineas de comando mas especificas (ej. "GW-RTR>" o "mysql>") implican que Ud. esta ejecutando el comando en un dispositivo remoto, o dentro de otro programa
10* Si un comando termina con "\" indica que el comando continua en la linea siguiente, y que Ud. debe considerar las dos lineas como una sola secuencia
11
12Ejercicio Parte I
13==================
14
150. Login a su servidor virtual
16
17NOTA: Durante el ejercicio si Ud. encuentra que el comando
18apt-get da error, entonces debe actualizar la base de datos de apt. Para ello:
19
20      $ sudo apt-get update
21
22
23Metricas de Rendimiento de Red
24------------------------------
25
261. ping
27-------
28
29ping es un programa wue envia paquetes ICMP de tipo "solicitud de eco", y espera "respuesta de eco" procedente de la entidad encuestada. Dependiendo del sistema operativo usado, puede ser que vea la demora de retorno minima, maxima, y mediana, y en algunas casos la desviacion estandar de la mediana en las respuestas ICMP de la entidad encuestada.
30Para mas detalles:
31
32http://en.wikipedia.org/wiki/Ping
33
34Bloquear ping a nivel de firewall es generalmente una mala idea.
35Tomando en cuenta lo anterior, trate de usar ping de varias formas:
36
37    $ ping localhost
38
39Presione ctrl-c para detener el proceso. Aqui va la respuesta tipica a este comando:
40
41PING localhost (127.0.0.1) 56(84) bytes of data.
4264 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time0.020 ms
43    64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.006 ms
44    64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.006 ms
45    64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.006 ms
46    64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.006 ms
47    64 bytes from localhost (127.0.0.1): icmp_seq=6 ttl=64 time=0.009 ms
48    64 bytes from localhost (127.0.0.1): icmp_seq=7 ttl=64 time=0.007 ms
49    ^C
50    --- localhost ping statistics ---
51    7 packets transmitted, 7 received, 0% packet loss, time 5994ms
52    rtt min/avg/max/mdev = 0.006/0.008/0.020/0.005 ms
53
54
55Pregunta: Por que la respuesta al primer paquete toma 20ms meintras que el resto de las respuestas es mucho mas rapido? Este es un tipo de demora. Que tipo de demora es?
56
57
582. traceroute
59-------------
60
61Alguna vez ha usado traceroute? Ha revisado en detalle como funciona?
62Si no lea aqui:
63
64http://en.wikipedia.org/wiki/Traceroute
65
66Puede ser que necesite instalar el paquete traceroute antes de poder usarlo. De esta forma:
67
68        $ sudo apt-get install traceroute
69
70Una vez installado:
71
72        $ traceroute nsrc.org
73
74Aqui vemos una muestra de respuesta de traceroute a nsrc.org (lineas se parten debido a la longitud de linea):
75
76traceroute to nsrc.org (128.223.157.19), 64 hops max, 52 byte packets
77 1  gw.ws.nsrc.org (10.10.0.254)  1.490 ms  1.069 ms  1.055 ms
78 2  192.248.5.2 (192.248.5.2)  2.741 ms  2.450 ms  3.182 ms
79 3  192.248.1.126 (192.248.1.126)  2.473 ms  2.497 ms  2.618 ms
80 4  mb-t3-01-v4.bb.tein3.net (202.179.249.93)  26.324 ms  28.049 ms  27.403 ms
81 5  sg-so-06-v4.bb.tein3.net (202.179.249.81)  103.321 ms  91.072 ms  91.674 ms
82 6  jp-pop-sg-v4.bb.tein3.net (202.179.249.50)  168.948 ms  168.712 ms  168.903 ms
83 7  tpr5-ge0-0-0-4.jp.apan.net (203.181.248.250)  172.789 ms  170.367 ms  188.689 ms
84 8  losa-tokyo-tp2.transpac2.net (192.203.116.145)  579.586 ms  284.736 ms  284.202 ms
85 9  abilene-1-lo-jmb-702.lsanca.pacificwave.net (207.231.240.131)  303.736 ms  284.884 ms  530.854 ms
8610  vl-101.xe-0-0-0.core0-gw.pdx.oregon-gigapop.net (198.32.165.65)  328.082 ms  305.800 ms  533.644 ms
8711  vl-105.uonet9-gw.eug.oregon-gigapop.net (198.32.165.92)  336.680 ms  617.267 ms  495.685 ms
8812  vl-3.uonet2-gw.uoregon.edu (128.223.3.2)  310.552 ms  421.638 ms  612.399 ms
8913  nsrc.org (128.223.157.19)  309.548 ms  612.151 ms  611.505 ms
90
91Ud. comprende lo que cada linea significa? Si no, vea la pagina de Wikipedia y ademas lea el manual en linea
92
93    $ man traceroute
94
95para mas informacion. Que significa si ve lineas como estas?
96
97    15  * * *
98    16  * * *
99    17  * * *
100
101Si ve lo anterior, significa que el dispositivo remoto no responde a peticion de eco ICMP, o esta configurado con direcciones privadas (vea RFC 1918.)
102
103
104Como puede ver, traceroute puede ser usado para determinar en que lugar(es) hay problemas en la conexion entre dos puntos de la red.
105
106Trate de ejecutar traceroute otra vez al mismo host (nsrc.org). Esta vez tomara' menos tiempo. Por que?
107
1083. mtr
109------
110
111La herramienta mtr combina ping y traceroute en una sola pantalla que se actualiza dinamicamente. Antes de usarlo es posible que deba instalarlo:
112
113        $ sudo apt-get install mtr-tiny
114
115Ahora pruebe:
116
117        $ mtr nsrc.org
118
119La respuesta del programa se ve diferente en diferentes versiones de Linux y UNIX, pero en esencia vera' un resumen de la perdida de paquetes en cada paso en el camino al dispositivo encuestado, numero de paquetes de solicitud de eco ICMP enviado, el tiempo de retorno (RTT) mas reciente, y el mejor, peor, y average tiempo de retorno, asi como la desviacion estandar de estos.
120Al mostrar el % de paquetes perdidos en este formato, es mucho mas facil detectar en que punto puede ser que tenga problemas su red (o conexion)
121
122
123
124
125------------------------------------------------------------------------
126
127
128Ejercicios Parte II
129====================
130
131Analisis de Redes
132-----------------
133
1341. lsof y netstat
135-------------------
136
137Para verificar que servicios estan corriendo en su servidor, puede utilizar un grupo de herramientas con multitud de opciones.
138Utilizando el manual del sistema (man), puede ver lo que los comandos proveen como informacion. Note que hay muchas opciones y combinaciones!
139
140Para visualizar las paginas de manual utilize "man lsof", "man netstat", o tambien  "lsof -h" and "netstat -h". Recuerde ejecutar estos comandoos como root para tener los suficientes privilegios y permisos necesarios.
141Puede ser que necesite instalar lsof antes de usarlo. Para ello:
142
143        $ sudo apt-get install lsof
144
145* Using lsof, what IPv4 services are listening on your machine?
146* Using netstat, what IPv4 and IPv6 services are listening on your machine?
147
148When you run lsof and netstat you should run them as root:
149
150        $ sudo lsof
151        $ sudo netstat
152
1532. tcpdump and tshark
154---------------------
155
156Primero, instalemos estos paquetes:
157
158        $ sudo apt-get install tcpdump tshark
159
160Use tcpdump asi:
161
162        $ sudo tcpdump -i lo -A -s1500 -w /tmp/tcpdump.log
163
164Ahora genere algun trafico en su interface de loopback (lo) en otra terminal. Esto es, abra una sesion de ssh a su servidor virtual, o enviiele solicitudes de eco ICMP.
165
166Por ejemplo:
167
168        $ ping localhost
169        $ ssh localhost
170 
171etc. Para terminar presione CTRL-C
172
173Nota: ssh genera informacion mucho mas interesante. Leamos el fichero de salida resultante con tshark:
174
175        $ sudo tshark -r /tmp/tcpdump.log | less
176
177Que vee? Puede seguir la sesion de ssh originada anteriormente paso a paso?
178
179Ahora usaremos ftp. Primero instalemos un cliente de FTP:
180
181
182        $ sudo apt-get install ftp
183
184Ahora trataremos esto:
185
186        $ sudo rm /tmp/tcpdump.log
187        $ sudo tcpdump -i eth0 -A -s1500 -w /tmp/tcpdump.log
188
189En la otra terminal, ejecute:
190
191        $ ftp limestone.uoregon.edu
192 
193        Connected to limestone.uoregon.edu.
194        220 FTP Server ready.
195        Name (limestone.uoregon.edu:sysadmin): anonymous
196        Password: <anything you want>
197        ftp> exit
198
199Termine la session de tcpdump en la otra terminal (CTRL-C). Ahora vea el contenido del fichero de salida:
200
201        $ sudo tshark -r /tmp/tcpdump.log | less
202
203Puede ver su password? 
204
205Si Ud. tiene una buena cantidad de trafico en su red, entonces la cantidad de informacion compilada en tcpdump.log puede ser bastante grande. Puede buscar patrones de su sesion de FTP de esta forma:
206
207
208        "/FTP"
209
210en la pantalla de salida. Dado que ud. redirecciono' via una "tuberia" la salida del comando tshark al utilitario paginador less, el uso del buscador de patrones "/" del paginador funciona bien
211Ahora presione "n" para la proxima ocurrencia del patron "FTP".
212Debe ver una linea con la cadena:
213
214        "FTP Request: PASS PasswordYouTypedIn"
215
216Detectar passwords no encriptados en una LAN inalambrica es facil con una herramienta como esta
217
218Recuerde limpiar el fichero de coleccion:
219
220        $ rm /tmp/tcpdump.log
221
222
2233. Usando iperf
224--------------
225
226Instale iperf:
227
228        $ sudo apt-get install iperf
229
230Use "man iperf" o "iperf -h" como ayuda.
231
232Pida a su colega de al lado ejecutar:
233
234        $ iperf -s
235
236Conectese al servidor de su colega usando:
237
238        $ iperf -c ipNeighbor
239
240Si no conoce la direccion IP del servidor de su colega, pidale que la determine de esta forma con el comado ifconfig:
241
242
243        $ ifconfig eth0
244
245Cuanto ancho de banda hay entre sus dos servidores?
246Ud. puede repetir este ejercicio con cualquier otro servidor donde iperf este' instalado y usted tenga una cuenta de usuario. Es una forma rapida y simple de determinar el ancho de banda entre dos puntos.
247 
248Para detener el servidor de iperf que Ud ejecuto' como "iperf -s" simplemete presione CTRL-c
249
250Si tiene tiempo para seguir probando opciones de iperf: si tiene un servidor remoto fuera del taller donde pueda instalar iperf, puede determinar el ancho de banda entre estos dos puntos.
251
252
253Otras cosas interesantes a probar:
254
255* Pruebe TCP usando varios tallas de ventana (-2).
256
257* Verifique TCP MSS (-m). Como afecta esto el rendimiento? Que cosa es "descubrimiento del MTU del camino"  (Path MTU discovery)
258
259* Pruebe con dos threads en paralelo (-P) y compare los totales. Hay alguna diferencia? Por que?
260
261* Pruebe con diferentes tallas de paquetes y la opcion TCP_NODELAY (-N).
262
263
264=====================================================================
265Opcionales/Pruebas Avanzadas
266=====================================================================
267
268A) ping con talla de paquete variable
269-------------------------------------
270
271Por defecto, ping envia datagramas IP de talla 84 bytes:
272
273* 20 bytes encabezamiento IP
274*  8 bytes encabezamiento ICMP
275* 56 bytes rellenos de datos
276
277Sin embargo, Ud. puede enviar paquetes mas grandes usando la opcion -s. Usando "-s 1472" podra enviar un datagrama IP de 1500 bytes, que es el maximo en redes Ethernet (la suya). Por encima de 1500, el paquete es mas grande qe la talla maxima de paquete (MTU = Maximum Transmission
278Unit). Este simple mecanismo permite diagnosticar muchos tipos de problemas, e incluso distinguir entre demora de transmision y demora de propagacion (alguien recuerda la diferencia?)
279Encontremos un servidor que este relativamente cerca de nosotros.
280(Use traceroute ppara ver algun servidor cerca) 
281        $ traceroute nsrc.org
282
283Busque otro servidor que este al menos 2 o mas saltos de distancia (pues como su enrutador es virtual, la herramienta no funciona adecuadamente con servidores virtualizados)
284El segundo salto es el enrutador que es el gateway de nuestro laboratorio al exterior. Este esta muy cerca para usarlo en la medicion, no dara' diferencia substanciales. Nos referiremos al servidor que selecciono' como PING_MACHINE.
285
286Envia 20 pings standard a esa direccion:
287
288        $ ping -c20 PING_MACHINE
289
290Anote el tiempo de retorno (RTT) *average*  (t1).
291
292Ahora envie 20 pings de talla maxima:
293
294        $ ping -c20 -s1472 PING_MACHINE
295
296Otra vez, Anote el tiempo de retorno (RTT) *average*  (t1).
297
298La demora de propagacion en ambos casos es la misma (mismo camino), por tanto el tiempo de retorno mas grande debe ser debido a la demora de transmision.
299Ahora puede estimar la demora de transmision y de ahi el ancho de banda entre dos puntos:
300
301    aumento en tiempo de transmission  =  t2 - t1
302    aumento en bits enviados           =  (1500-84) * 8 * 2  = 22656
303
304(multiplique por 2 porque el tiempo de retorno equivale a eniar el pauqete dos veces, la ida y la vuelta)
305
306Divida los bits por el tiempo para obtener un estimado de los bits por segundo, Recuerde convertir de segundos a milisegundos primero:
307
308Ejemplo:
309       
310t2 = 1.71
311t1 = 1.14
312
313t2-t1 = 0.57
314
3150.57 ms = 0.00057 sec
316
31722656 bits / 0.00057 sec = 39747368.42 bps
318
319Ahora puede convertir a Kbps, Mbps, etc.
320
321Haciendo esto para diferentes saltos, es posible estimar el ancho de banda en cada tramo, aun cuando esten remotos.
322Existe una herramienta que facilita esto:  "pathchar" , pero debe de compilarla de codigo fuente
323Algunos binarios para OS especificos aqui:
324
325
326ftp://ftp.ee.lbl.gov/pathchar/
327
328La pagina web con documentacion aqui:
329
330http://www.caida.org/tools/utilities/others/pathchar/
331
332
333
334B) tcpdump parte II
335-------------------
336
337Puede utilizar tcpdump como una herramienta de analsis forense en tiempo-real. Tcpdump tiene muchas opciones, y tomaria mucho tiempo explicar todas las posibilidades. Utilicemos un caso practico:
338
339Observemos una solicitud de DHCP de una PC y las respuestas recibidas
340
341Primero conectese a su servidor virtual, como root:
342
343    $ sudo bash
344
345
346Usemos el utilitario screen (multi-pantallas)
347
348    # apt-get install screen
349   
350Ejecute screen:
351
352    # screen
353   
354Ahora podemos tener mutiples terminales. Empecemos a colectar datos en ua pantalla:
355
356    # tcpdump -s0 -ni eth0 port 67 or port 68
357
358Abramos otra pantalla con screen:
359
360        Press ctrl-a c
361   
362Lea el manual de tcpdump para saber que hacen las opciones "-s0", "-n" and "-i":
363
364        # man tcpdump
365       
366(Busque "-s" escribiendo  "/" y entonces  "-s" y presione ENTER. Presione "n" para ver la proxima ocurrencia de la cadena -s")
367
368Ahora haga una solicitud de DHCP para una nueva direccion IP para eth0 en su servidor:
369
370        # dhclient
371       
372Retorne a la pantalla anterior para ver la informacion de salida de tcpdump (presione "ctrl-a p") (p = previa, n= proxima)
373
374Debe ver algo como esto:
375
376tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
377listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
37818:03:05.003190 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 52:54:4a:5e:68:77, length 300
37918:03:05.004349 IP 10.10.0.254.67 > 10.10.0.250.68: BOOTP/DHCP, Reply, length 300
380
381        Para detener la sesion de tcpdump presione "ctrl-c"
382
383Usted sabe lo que esto significa? Por que especificamos a tcpdump que "escuchara" en los puertos 67 y 68? Si busca en el fichero  /etc/services encontrara' las definiciones de ambos puertos como "bien conocidos":
384
385bootps           67/udp     # Bootstrap Protocol Server
386bootps           67/tcp     # Bootstrap Protocol Server
387bootpc           68/udp     # Bootstrap Protocol Client
388bootpc           68/tcp     # Bootstrap Protocol Client
389
390
391Puede retornar a la pantalla donde corrio' dhclient
392Y teclee:
393
394        ctrl-a-n
395       
396Y:
397
398        # exit
399
400Si le interesa la herramienta "screen", vea:   
401
402        http://www.howtoforge.com/linux_screen
403
404
405