Redes de Datos – Laboratorio 6 – Instructivo Laboratorio 6 Address Resolution Protocol (ARP) Instrucciones generales Para poder realizar exitosamente la práctica, deberá cumplir las siguientes etapas: Previo al laboratorio Estudiar la información contenida en este instructivo. Se recomienda consultar las referencias sugeridas u otras de su preferencia. Al comienzo del laboratorio se realizará un cuestionario sobre los temas tratados en este instructivo. Se recomienda realizar los ejercicios sugeridos al final del instructivo. Imprimir y leer el procedimiento de la práctica incluido en el Informe. Se recomienda imprimir una página por faz. Traer un disquete/memoria USB para guardar resultados. Durante el laboratorio Seguir el procedimiento indicado en el Informe y completarlo en forma grupal. El Informe deberá ser entregado al finalizar la práctica. NO SE ACEPTA ENTREGA DE INFORMES EN OTRO MOMENTO. Después del laboratorio Agradecemos que nos envíe sus aportes al foro específico creado en la página web del curso. Objetivos Al finalizar la práctica el estudiante será capaz de: Describir el proceso de descubrimiento de las direcciones de capa MAC mediante ARP. Visualizar e interpretar el intercambio de mensajes ARP en una red local. Preparación Address Resolution Protocol (ARP) Cuando una máquina A quiere enviar datos a la máquina B, la capa de red de la máquina A construye un paquete con dirección IP de origen la de A y con dirección IP de destino la de B, e inserta la carga útil a enviar a B. Después, pasa este paquete a la capa de enlace de A para su transferencia hacia B. Sin embargo, las capas de enlace no entienden las direcciones IP; necesitan una dirección propia del medio de transmisión en uso. En una red Ethernet u 802.3, por ejemplo, cada tarjeta Ethernet tiene una dirección de 48 bits asignada en fábrica, exclusiva de esa tarjeta (única), de modo que la colocación de dos tarjetas Ethernet cualesquiera en la misma red local no produciría nunca una colisión de direcciones, ya que no habrá nunca dos direcciones iguales (al menos si los fabricantes se ciñen a los conjuntos de direcciones que se Redes de Datos 2016 – Instructivo Laboratorio 6 Página 1 de 9 les han asignado). Las tarjetas Ethernet se comunican entre sí referenciando estas direcciones de 48 bits. Se hace patente entonces la necesidad de manejar algún tipo de mapeo entre direcciones IP y direcciones de capa de enlace, en lo posible con poco o ningún trabajo administrativo. El protocolo ARP es capaz de manejar ese mapeo sin intervención administrativa. ARP, Address Resolution Protocol o protocolo de resolución de direcciones (definido en la RFC 826), resuelve el problema de direccionamiento de capa de enlace en medios de difusión: establece un mapeo entre direcciones de capa de red (direcciones IP en TCP/IP) y direcciones de capa de enlace, cuya naturaleza depende del medio físico que soporta la subred. En las redes de difusión la subcapa MAC, Medium Access Control o subcapa de control de acceso al medio, es la encargada de arbitrar el uso del medio compartido, ya sea disponiendo turnos de transmisión o manejando colisiones; es usual denominar las direcciones usadas en medios de difusión como direcciones de capa MAC o simplemente direcciones MAC. Las direcciones de 48 bits de las redes Ethernet son las direcciones MAC de estas redes. El protocolo ARP funciona por sí solo, no requiere administración. Cuando la máquina A precisa enviar un paquete a la máquina B, el protocolo ARP es capaz de averiguar la dirección MAC de B conociendo sólo el número IP de B; el paquete es enviado sin más trámite. Para entender mejor esto, veamos el caso en que se usaran tablas completadas manualmente por el administrador de la red: Inicialmente se deberían cargar en todas las máquinas de la red una tabla guardando la correspondencia de direcciones (IP, MAC). Llegado el momento de cambiar la correspondencia entre número IP y dirección MAC asociadas a una máquina (por ejemplo: cada vez que se cambie tanto una tarjeta de red como una dirección IP), sería necesario actualizar esta información en todas las máquinas de la red, trasformándose en una tarea pesada y propensa a error (sobre todo si la red es grande). Formato del paquete ARP El mensaje ARP va como carga útil de la trama. El paquete ARP va como carga útil en la trama de capa MAC. Contiene, entre otros campos, las direcciones IP y MAC de origen y destino; no hay otra forma de hacer llegar esta información al otro extremo, porque las direcciones de capa MAC contenidas en los encabezados de la capa de enlace no llegan al proceso que se encarga de procesar ARP ya que cada capa suprime su encabezado al pasar el contenido a la capa superior. Redes de Datos 2016 – Instructivo Laboratorio 6 Página 2 de 9 Formato de mensaje ARP Detalle de los campos del mensaje ARP: Hardware Type: tipo de hardware – código del tipo de interfaz de hardware para el cual el interrogador busca respuesta, es 1 para Ethernet. Protocol Type: tipo de protocolo – código de tipo de dirección proporcionada por el transmisor, es 0x0800 para la dirección IP. Operation: operación – indica el tipo de operación: 1 para solicitud ARP, 2 para respuesta ARP, 3 para solicitud RARP, 4 para respuesta RARP. HLEN: longitud de la dirección de hardware – permite usar ARP en distintos tipos de redes, 6 en Ethernet. PLEN: longitud de la dirección de protocolo (de capa 3) – permite usar ARP en distintos tipos de redes, 4 en caso de IP. Sender HA: dirección hardware del emisor. Sender IP: dirección IP del emisor. Target HA: dirección hardware del destinatario. Target IP: dirección IP del destinatario. Funcionamiento de ARP Analizaremos los casos de transferencia de paquetes IP dentro de una misma LAN y entre dos LANs distintas. La figura muestra dos redes LAN pertenecientes a departamentos distintos de una organización. Ambas redes están unidas a un backbone corporativo de fibra óptica interno a la organización, posiblemente uniendo varios edificios separados cada uno con su LAN, o los diferentes pisos de un edificio, cada piso con su LAN. Redes de Datos 2016 – Instructivo Laboratorio 6 Página 3 de 9 Dos redes LAN y el backbone de una organización. Comunicación entre máquinas de una misma LAN. La máquina 1 con dirección IP1 desea enviar un paquete a la máquina 3 con dirección IP3 1: 1. Primeramente, la máquina 1 consulta su tabla de ruteo, detectando que la máquina 3 (con dirección IP3) se encuentra directamente conectada (IP1 AND MASK = IP3 AND MASK). 2. Utilizando el protocolo ARP (protocolo distinto de IP), la máquina 1 arma una trama con dirección MAC origen la suya propia (MAC origen = E1), MAC destino la dirección de difusión de 802.3 (Ethernet) (MAC destino = FF:FF:FF:FF:FF:FF) y como contenido un paquete de consulta ARP cuyo contenido podemos interpretar como la pregunta "¿Quién tiene la dirección IP IP3?". Además incluye la dirección MAC e IP origen en el contenido del paquete ARP (E1, IP1). 3. El paquete ARP enviado por la máquina 1 es recibido por todas las máquinas de la red LAN, incluida la máquina 3, que reconoce su propia dirección IP en la pregunta. La máquina 3 responde enviando una trama con dirección MAC origen E3, dirección MAC destino E1, y un paquete ARP de respuestaa la pregunta, "IP3 tiene dirección MAC E3". Dado que la correspondencia (IP1, E1) de la máquina 1 venía en el paquete ARP recibido por la máquina 3, esta dispone de dicha información, almacenándola. 4. La máquina 1 recibe la respuesta, dirigida específicamente hacia ella, hacia la dirección MAC E1. Por el contenido del paquete ARP dispone ahora de la dirección MAC de la máquina 3 (E3), y puede intercambiar paquetes IP con ella directamente. Dispone también de la dirección IP de la máquina 3, presente en el paquete recibido; tiene conocimiento entonces de la correspondencia (IP3, E3). La máquina 1 ha obtenido la dirección Ethernet de la máquina 3 (E3) sin intervención administrativa alguna; el protocolo ARP ha logrado averiguarla interrogando en la propia red. A partir de ahí los paquetes IP intercambiados utilizan como dirección IP de origen IP1 e IP3 como dirección de destino, a nivel de la trama Ethernet la dirección MAC de origen es E1 y la MAC de destino E3. Algunas optimizaciones mejoran la eficiencia del proceso: Dado que el paquete ARP de interrogación difundido en la red contiene el mapeo (IP1, E1) de la máquina 1 (emisora de la pregunta); la máquina 3 no necesita usar ARP para averiguar la dirección de subcapa MAC de la máquina 1 cuando quiera responderle. 1 Las direcciones IP las supondremos conocidas (pueden ser el resultado de una consulta al DNS). Redes de Datos 2016 – Instructivo Laboratorio 6 Página 4 de 9 Caché de ARP: las parejas de direcciones (dirección IP, dirección MAC) se guardan en memoria por un cierto tiempo; ulteriores consultas se realizan primero sobre este caché. Existe un tiempo de validez de las entradas en esta tabla, previendo un cambio de tarjeta Ethernet (implica un cambio de dirección, no hay dos tarjetas Ethernet con la misma dirección), y para evitar mantener indefinidamente en la tabla entradas inactivas. Transcurrido ese tiempo de validez la entrada se borra del caché y la consulta a la red, por difusión, debe repetirse. Las entradas en la tabla se actualizan en dos instancias: cuando se recibe una difusión o cuando se recibe una pregunta por la dirección IP propia: o Cuando la máquina A de dirección IPa recibe una difusión (broadcast) de ARP, si la máquina A tiene una entrada (IPx, Ex) en su tabla de ARP, al recibir una difusión ARP originada por IPx, actualiza su tabla de ARP con la nueva (o eventualmente la misma) dirección Ex. Si la máquina A no tenía una entrada (IPx, Ex) y la difusión de ARP no buscaba la IP de A ("¿Quién tiene Ipa?"), entonces se ignora y no se introduce la entrada en la tabla. o Cuando la máquina A recibe una pregunta por su propia dirección IPa desde una máquina con dirección IPy, guarda en su tabla la correspondencia (IPy, Ey) extraída de la trama donde viene la pregunta, asumiendo la alta probabilidad de pronta comunicación con la máquina que realizó la pregunta. ARP gratuito: cuando una máquina se prende, envía un paquete ARP de interrogación de su propia IP, por difusión. Nadie debería contestar, puesto que no debería haber otra máquina con la misma dirección IP; sin embargo, si fuese contestado, la máquina anunciaría al usuario el conflicto y no habilitaría la interfaz de red hasta que el administrador resuelva la colisión asegurando la inexistencia del mismo número IP en dos equipos de la red. Además de esta comprobación, como el paquete de interrogación se envió por difusión, todas las máquinas de la LAN lo recibieron; el paquete contiene el número IP y la dirección MAC del emisor, por lo que todas las máquinas de la red que tuvieran una entrada para esa IP en su tabla de ARP la actualizan con la nueva dirección MAC. Los paquetes ARP viajan dentro de la red local como carga útil de una trama Ethernet, el campo "Tipo" en capa MAC tiene el valor 0x08062, distinto del correspondiente a IP (0x0800). Comunicación entre máquinas de diferentes LANs. La máquina 1 en la red local A desea comunicarse con la máquina 8 en la red local B. El esquema corriente funciona así: 1. La máquina 1 ve la dirección IP destino de la máquina 8, IP8; por la búsqueda en su tabla de ruteo reconoce que ese destino no pertenece a su red local, sino que el próximo salto es (en el ejemplo) la dirección IP4, correspondiente al enrutador de conexión al backbone corporativo de la red local A. La dirección IP4 del enrutador está en la propia red local de la máquina 1, por lo que la dirección Ethernet E4 del enrutador se obtiene por comunicación ARP en la propia red como se describió anteriormente. Los paquetes IP intercambiados utilizan como dirección IP de origen IP1 e IP8 como dirección de destino, a nivel de la trama Ethernet la dirección MAC de origen es E1 y la MAC de destino E4 perteneciente a la interfaz del enrutador en el medio de difusión compartido con la máquina 1. 2. El enrutador de la red local A recibe el paquete, verifica que la dirección IP de destino pertenece a otra red, y lo reenvía según la información de sus tablas de ruteo, en este caso hacia el backbone, por su interfaz F1, con destino al enrutador de la red local B, interfaz F2. 2 "0x" indica notación hexadecimal Redes de Datos 2016 – Instructivo Laboratorio 6 Página 5 de 9 3. El enrutador de red local B recibe el paquete en la interfaz F2, consulta su tabla de ruteo y lo reenvía hacia la máquina 8. El enrutador de la red local B, (IP7, E5) está en la red de la máquina 8 (IP8, E6); la resolución de direcciones Ethernet por ARP es la descrita anteriormente. El paquete IP dentro del Departamento B utiliza como dirección IP de origen IP1 e IP8 como dirección de destino, a nivel de la trama Ethernet la dirección MAC de origen es E5 (perteneciente a la interfaz del enrutador en el medio de difusión compartido con la máquina 8) y la MAC de destino E8. 4. La máquina 8 responde a la máquina 1 dirigiendo su paquete IP al enrutador de la red local B, siguiendo un camino inverso al descrito. Las direcciones en el backbone de fibra óptica se obtienen igualmente por ARP dentro del backbone. Los paquetes IP entre redes locales A y B viajan dentro del backbone como carga útil de una trama FDDI de acuerdo al ejemplo. Tener presente que las direcciones IP de origen y destino nunca se modifican durante el trayecto de la máquina 1 a la máquina 8, pero las direcciones MAC que intervienen depende de los medios de difusión locales a cada tramo. Proxy ARP Se hace necesario a veces implementar una misma red IP (un conjunto de números IP determinados por una cierta red y máscara) sobre varias LANs físicamente diferentes. Un ejemplo es una máquina R con dos tarjetas de red Ethernet; en una de ellas se encuentra una máquina A, en la otra una máquina B. A quiere comunicarse con B, ambas están en la misma red IP pero en distintas LANs. Es posible configurar la máquina R para responder directamente consultas ARP relativas a cualquiera de las dos LANs; esta técnica se denomina proxy ARP: 1. La máquina A pide por ARP la dirección MAC de la máquina B, de la cual conoce la IP. 2. La máquina R responde con su propia dirección MAC. 3. A arma su trama con la dirección MAC de R. 4. Cuando la máquina R recibe esta trama la enruta hacia la red LAN donde está la máquina B. Tabla de ARP Las máquinas almacenan los mapeos (dirección IP, dirección MAC) de las máquinas que conocen. Esto mejora mucho la eficiencia: no es necesario ejecutar el protocolo en cada comunicación. Los mapeos se capturan reteniendo la información según se explicó el funcionamiento de ARP. Las entradas de la tabla se borran transcurrido su tiempo de validez (típicamente 20 minutos). También pueden ingresarse entradas específicas, o borrarse, por comandos emitidos por el supervisor. El comando Unix arp permite conocer el contenido de la tabla ARP de la máquina local: # arp -a c3.ls.iie.edu.uy (172.16.0.11) at 00:03:B3:00:5B:87 [ether] on eth1 d3.ls.iie.edu.uy (172.16.0.12) at 00:E0:06:EC:20:2E [ether] on eth1 ? (172.16.0.253) at 52:54:4C:19:16:A2 [ether] on eth1 gw-380.fing.edu.uy (164.73.38.1) at 00:D0:95:91:36:2C [ether] on eth0 Redes de Datos 2016 – Instructivo Laboratorio 6 Página 6 de 9 La salida de este comando muestra los datos almacenados en una entrada ARP: dirección IP, la dirección de hardware (dirección de capa MAC: en este caso una dirección Ethernet de 48 bits), tipo de hardware (Ethernet en este caso) y el nombre de la interfaz (eth0 o eth1 en este caso). Es posible borrar entradas de la tabla de arp utilizando el comando arp con la opción –d y luego la IP del equipo. Adicionalmente el comando arp trata de averiguar los nombres asociados a las direcciones IP incluidas en la tabla usando el DNS. Este comportamiento se puede evitar con la opción -n. RARP En algunas circunstancias, en particular cuando se trata de máquinas sin disco, es necesario obtener un número IP correspondiente a una dirección MAC determinada. Este es el caso inverso de ARP; el protocolo que lo resuelve se denomina RARP, Reverse Address Resolution Protocol (definido en la RFC 903). Una máquina sin disco carga su sistema operativo desde una máquina remota que actúa como servidor. Para comunicarse con esta máquina remota se necesita su dirección IP, además de la propia. Al carece de disco, ninguna de estas direcciones se encuentran disponibles; lo único disponible es la dirección MAC de la propia interfaz de red. A través del protocolo RARP, por difusión, la máquina puede obtener su dirección IP, mediante una pregunta tal como "Tengo la dirección MAC E1, ¿sabe alguien mi dirección IP?" El servidor RARP recibe este paquete, como todos los de la red, y responde a la dirección MAC E1 de la máquina emisora. La principal limitación de RARP es que obliga a tener un servidor RARP en cada red local, porque al igual que ARP dirige sus mensajes a la dirección de difusión de la red, y estos mensajes no son reenviados por los enrutadores. Además, solo informa la dirección IP de la máquina que se está iniciando pero no brinda datos del servidor de arranque ni la máscara a utilizar, entre otras cosas. BOOTP BOOTP (descrito en las RFCs 951, 1048 y 1084) es un protocolo similar a RARP en su función, pero usa mensajes UDP, que sí son reenviados por los enrutadores. Además de permitir a una máquina sin disco obtener su propia IP, BOOTP provee información adicional como la dirección IP del servidor donde está su imagen de memoria con sistema operativo, la dirección IP del enrutador por defecto y la máscara de subred a usar. DHCP BOOTP presenta el inconveniente de requerir administración para cada nueva máquina ingresada a la red: el mapeo (dirección MAC, dirección IP) de la nueva máquina debe ingresarse a mano. Para superar esta limitación fue desarrollada una extensión de BOOTP llamada DHCP, Dynamic Host Configuration Protocol o protocolo dinámico de configuración de máquinas (descrito en las RFCs 2131 y 2132). DHCP permite tanto la asignación manual como automática de números IP. Este protocolo ha desplazado a RARP y BOOTP en la mayoría de las instalaciones. Se basa en un servidor DHCP capaz de asignar números IP (y otros parámetros) a máquinas que lo soliciten. El servidor DHCP puede estar en una LAN diferente a la máquina que solicita el IP; esto lo hace inalcanzable por difusión, haciendo necesario disponer de un agente relay DHCP en cada LAN. El proceso de descubrimiento del número IP de una máquina requiere lo siguientes pasos: 1. La máquina A arranca y desea obtener su número IP. Para ello, emite por difusión un paquete llamado DHCP DISCOVER. Redes de Datos 2016 – Instructivo Laboratorio 6 Página 7 de 9 2. Este paquete es recibido por todas las máquinas de la red LAN de A, en particular por el agente relay DHCP. 3. El agente relay DHCP reconoce el paquete DHCP DISCOVER y lo envía al servidor DHCP en exclusiva (unicast), posiblemente en una red remota. El único dato necesario para este envío es el número IP del servidor DHCP. 4. El servidor DHCP responde con un mensaje OFFER conteniendo una dirección IP y otros parámetros. El servidor obtiene un número IP de un conjunto (pool) de direcciones IP disponibles, llevando el control de cuáles están asignadas. 5. La máquina A recibe el paquete OFFER a través del agente relay DHCP. Responde al servidor DHCP con un paquete REQUEST en el cual acepta la oferta. 6. El servidor DHCP responde con un paquete ACK y asigna la dirección. El paquete ACK incluye varios parámetros configurables, entre otros la duración de la asignación. 7. La máquina A dispone de su número IP; lo verifica mediante ARP: si alguien responde (el IP recibido ya está siendo usado) la máquina A se queja al servidor emitiendo un paquete DECLINE, recomenzando las negociaciones. Si el IP no está siendo usado (nadie responde) la máquina A puede iniciar comunicaciones normalmente. 8. Cuando se acerca el fin del tiempo de validez del IP la máquina envía al servidor un nuevo paquete REQUEST para renovar su asignación y continuar usando el número IP asignado. 9. Cuando la máquina A desea terminar su uso del IP envía al servidor un paquete RELEASE. El servidor libera ese IP para asignarlo a otra solicitud. El tiempo de validez de la dirección IP resuelve el problema de máquinas que no devuelven correctamente sus números IP: la máquina se desconecta pero el servidor no se entera, y no puede reasignar el número. La técnica de asignar números IP con un cierto tiempo de validez se denomina "leasing". Ejercicios Estudiar los comandos de UNIX: arp, ping, traceroute. Procedimiento En el informe. Conclusiones En el informe. Redes de Datos 2016 – Instructivo Laboratorio 6 Página 8 de 9 Para conocer más Tanenbaum, Andrew. "Computer networks", 4a. edición, Prentice-Hall, 2003; 3a. edición, Prentice-Hall, 1996. Hay traducción al español de ambas ediciones. Comer, Douglas. "Redes Globales de información con Internet y TCP/IP", 3a. edición, Prentice-Hall, 1996. Capítulos: 5, ARP; 6, RARP; 21, BOOTP y DHCP. Super Man Pages. Páginas "man" de unix en línea (http://linuxcommand.org/superman_pages.php). WireShark (Ethereal). Analizador de protocolos de red. Página principal: http://www.wireshark.org/ Curso Básico de Unix. Un curso introductorio al sistema operativo Unix, orientado a Linux. Intérprete de comandos, sistema de archivos, editor vi, expresiones regulares, filtros, programación del shell. http://iie.fing.edu.uy/~vagonbar/unixbas/index.htm . The Internet Lab Manual. Es una colección de instructivos para realizar prácticas de laboratorio en redes de datos. Si bien el equipo requerido es inalcanzable, el contenido de los instructivos es altamente aprovechable. Página principal: http://www.cs.virginia.edu/~itlab/book/ Enlaces: http://www.cs.virginia.edu/~itlab/book/links/ Para la presente práctica son útiles los siguientes instructivos: Introducción: http://www.cs.virginia.edu/~itlab/book/pdf/Ch_0_v4.pdf Lab 1: Introducción al laboratorio Internet: http://www.cs.virginia.edu/~itlab/book/pdf/lab1new_v24.pdf Redes de Datos - Curso 2016 Página del curso: Eva Redes de Datos Facultad de Ingeniería - UDELAR - Rocha, Uruguay. Redes de Datos 2016 – Instructivo Laboratorio 6 Página 9 de 9