Redes de Datos
1er parcial – 2015
Solución
Esta es una posible solución a las preguntas planteadas. Por razones didácticas normalmente contiene bastante más información que la mínima necesaria para responder la pregunta.
Pregunta 1
(6 puntos)
a) Explique las características que determinan que un servicio se clasifique como “orientado a conexión”.
Un servicio “orientado a conexión” es aquel donde se distinguen 3 fases en la comunicación. Una primer fase de establecimiento de conexión, una segunda fase de intercambio de datos y una última fase de corte de conexión.
En las fases de establecimiento y corte de conexión, se intercambian mensajes de control y es posible acordar parámetros de funcionamiento entre transmisor y receptor. También sería posible realizar reserva de recursos para la conexión.
Al establecer una conexión se garantiza que el receptor está dispuesto a recibir información.
b) Explique las diferencias con un servicio “no orientado a conexión”.
En un servicio “no orientado a conexión”, no existen las fases de establecimiento y corte indicadas en la parte a), sino que solamente existe la fase de intercambio de datos.
Esto significa que cuando un transmisor desea enviar datos a un receptor, simplemente los envía, no teniendo certeza si el receptor está dispuesto a recibirlos.
c) Explique qué aspectos pueden considerarse al momento de definir la calidad de un servicio.
Algunos aspectos que pueden considerarse al definir la calidad de un servicio, pueden ser:
• capacidad del canal o ancho de banda
• velocidad o troughput de la comunicación
• retardo entre origen y destino
• variación de retardo
• tasa de errores
Para diferentes aplicaciones estos parámetros pueden ser más o menos importantes. En algunas aplicaciones es más importante la tasa de errores y en otros el retardo o la variación de retardo. Las características de los servicios (orientados o no a conexión, confiables o no) pueden brindar facilidades para ofrecer diferentes calidades de servicio.
Pregunta 2
(10 puntos)
En el sistema de nombres de dominio (DNS):
a) Describa la estructura básica del árbol de etiquetas. Defina los principales registros utilizados en el DNS.
El sistema de nombres de dominio surgió ante la necesidad de vincular las direcciones IP que entienden las máquinas a nombres de dominio más amigables para los humanos, aunque desde sus inicios se utilizó para guardar también otros tipos de información. Originalmente, siendo pocos (del orden de cientos) los dominios existentes, se utilizaban tablas que realizaban este vínculo, pero con el paso del tiempo se hizo necesario un sistema escalable, eficiente, descentralizado, que evitara la saturación de los servidores y la superposición de nombres. Así surgió el DNS.
Cada nombre está compuesto por etiquetas alfanuméricas que convencionalmente se representan unidas
por puntos. Estas etiquetas se ordenan en un “árbol” de nombres, partiendo de una «raíz», que son los root servers (son 13 direcciones IPv4 y otras tantas IPv6, con copias distribuidas para dar redundancia), coordinados por la IANA. La raíz convencionalmente se representa por un punto.
De la raíz se extienden «ramas» hasta los TLD (Top Level Domains), dominios de primer nivel. Estos se dividen entre dominios genéricos, vinculados a actividades específicas (por ejemplo edu, com, info, org), y dominios de países (uy, br, me, ar). A cada uno de estos dominios se le delega la autoridad de manejar las ramas derivadas, esto implica la posibilidad de crear dominios y la responsabilidad de conocerlos, etc. Es así como cada uno de estos dominios puede contener subdominios (de nivel 2), que a su vez pueden particionarse en nuevos subdominios, delegándose la autoridad respectivamente y así se va conformando el árbol. Las hojas son dominios sin subdominios.
Los nombres completos se leen concatenando las etiquetas con puntos, desde las hojas a la raíz. Un ejemplo es que la etiqueta iie, en el dominio fing, bajo edu, bajo uy, cuyo nombre completo es: iie.fing.edu.uy.
La información en cada nodo y hoja del árbol (y la necesaria sobre los nodos y hojas del siguiente nivel), se guarda en registros (Resource Records). Estos constan de 5 campos: Nombre (cualquier etiqueta del árbol), Clase (hemos visto sólo internet en el curso «IN»), Tipo (tipo de registro), Valor (contenido del registro) y TTL (tiempo de validez de la información en el caché).
Los tipos de registro más usados son: A (mapea un nombre a una dirección IP), NS (indica el nombre de un servidor de nombres para un dominio, es decir un servidor autoritativo para el dominio), MX (nombre de máquina que recibe correo para un dominio), PTR (inverso de A, mapea una dirección IP a un nombre), AAAA (mapea un nombre a una dirección Ipv6), y otros como TXT, CNAME, etc.
La forma de recorrer el árbol, independiente de si los servidores son o no recursivos, y asumiendo que no hay información en ningún caché, es (siempre) desde la raíz hacia las hojas (o nodos) deseados.
Para comunicarse con un equipo del cual se conoce su nombre, se debe obtener la dirección IP. La búsqueda de esa correspondencia se realiza consultando al DNS por el registro A asociado al nombre buscado. La búsqueda comienza por la raíz y se va consultando a diferentes servidores hasta obtener la respuesta buscada. Las respuestas intermedias pueden ser el registro NS de un servidor donde seguir buscando o el registro A buscado. Esto depende de si el servidor responde consultas recursivas o no, de si el dato buscado está en el caché o no, y de si el servidor es autoritativo o no para el recurso buscado.
b) Explique el proceso de delegación de autoridad y qué registros se utilizan para implementarlo.
El proceso de delegación de autoridad es una parte fundamental de DNS. Es lo que permite la escalabilidad del sistema. Un servidor es autoritativo para un dominio cuando es responsable de administrar los recursos de ese dominio y sus subdominios. La delegación de autoridad es una autorización por parte del servidor autoritativo de un dominio para que otro servidor administre la información de un subdominio. Una vez delegada la administración del subdominio a otro servidor, este pasa a ser responsable de los registros que se asocien a ese subdominio así como las eventuales delegaciones a subdominios de menor nivel.
Para delegar autoridad, el dominio autoritativo (zona padre) debe conocer los nombres de servidores de nombre (registros NS) de quien se hará responsable (zona hija), y en caso que dicho nombre se encuentre en la zona delegada, debe conocer también su dirección IP (glue record) para que sea posible acceder a ellos. Participan entonces del proceso de delegación de autoridad los registros NS y A.
c) Explique detalladamente cómo se utiliza el DNS para resolver el nombre asociado a la dirección IP 164.73.38.1
Si bien el funcionamiento general de DNS está orientado a buscar recursos (direcciones IP, servidores de correo, etc) a partir de nombres de dominio, existe un dominio genérico en el TLD que es «in-addr.arpa». Esta rama es creada para ubicar un nombre desde una dirección IP (IPv4). En los siguientes 4 niveles
tenemos la posibilidad de elegir un número entre 0 y 255. el primer nivel representa el primer octeto de la dirección IP, el segundo nivel mapea el valor del segundo octeto, y así sucesivamente.
Para hallar un nombre asociado a una IP, se utiliza el mismo sistema de búsqueda descrito anteriormente bajo el TLD específico in-addr.arpa. y un tipo de registro llamado PTR.
Para esto se conforma una etiqueta a partir de la dirección IP invirtiendo los octetos de bits concatenados por puntos de la dirección IP. Si la IP es A.B.C.D (dotted decimal notation) se construirá la etiqueta D.C.B.A.in-addr.arpa y se buscará el registro PTR asociado a ella en el DNS. De esta forma se sigue manteniendo el orden para la búsqueda del árbol (a la derecha el más general, a la izquierda más específico).
En este caso se debe realizar una consulta del registro PTR correspondiente a 1.38.73.164.in-addr.arpa.
Pregunta 3
(12 puntos)
a) Defina los conceptos control de flujo y control de congestión en capa de transporte. Fundamente para cada uno:
i. ¿Cuál es su función?
ii. ¿Qué elementos de red (enrutadores, máquinas, etc) intervienen en cada uno de los controles?
iii. ¿Qué campos del encabezado de TCP intervienen en cada uno de los controles?
Control de Flujo:
i) El objetivo general del control de flujo es que un emisor no envíe mas información de la que el receptor puede procesar. En capa de transporte, el emisor y el receptor son dos entidades de capa de transporte, a cada una de las cuales se le ha asignado un buffer acotado para el intercambio de información, y luego la aplicación lee la información de este buffer.
Si la aplicación del cliente lee información a una tasa menor de la que ésta es almacenada en el buffer (recepcionada), comienza a incrementarse la utilización del buffer, si persiste esta situación, la información que envía en transmisor simplemente será descartada por falta de espacio en el buffer de recepción.
El control de flujo en capa de transporte se implementa realimentando al transmisor sobre el tamaño de buffer disponible que tiene el receptor. Indicando en cada momento, cuanto es la cantidad máxima que puede recibir.
ii) En el control de flujo de capa de transporte, solo intervienen las entidades de transporte del equipo origen y del destino.
iii) Para el escenario de TCP como capa de transporte, el campo del encabezado que se utiliza por excelencia es el Window Size que informa la cantidad de bytes disponible para recibir nueva información. Los números de secuencia y el largo de datos contenidos en el segmento (no es parte del encabezado TCP), y el campo suma de comprobación o checksum, también intervienen, si los números de secuencia caen fuera del rango que se esta esperando (ventana de recepción) o se detecta un error, se descarta y no se utiliza el buffer.
Por último, recordar que al comienzo de la conexión TCP se negocian otros parámetros, como el Window Scale.
Control de Congestión:
i) El objetivo general del control de congestión es evitar o paliar la congestión en la red. La congestión ocurre cuando en algún equipo de capas inferiores a la capa de transporte, en el trayecto de ida o vuelta del intercambio de información, se esta intentando cursar más tráfico del que es posible (capacidad de procesamiento, capacidad de los enlaces, etc).
Hay que tener presente que evitar por completo la congestión durante todo el tiempo en todos los tipos de tráfico, llevaría a redes mucho mas costosas, por lo cual por lo general existe una solución de compromiso entre el nivel de descarte, la utilización de la red, cuánto están dispuestos a pagar los clientes y el costo del equipamiento adicional.
Por su naturaleza, la congestión puede ocurrir en cualquier punto del trayecto entre el origen y el destino, generalmente corresponden a proveedores de conectividad a internet diferentes, empresas que tienen diferentes realidades y criterios de diseño. Por lo general en las redes que brindan conectividad a internet, la congestión no se evita del todo, admitiéndose cierto grado de congestión.
Típicamente el control de congestión en capa de transporte se puede hacer de dos formas. La primera es controlando cuánta información se transmite sin realimentación de la red (control en lazo abierto, por ejemplo aplicar un algoritmo de balde con goteo o balde con fichas). La segunda forma es que pueda obtener realimentación de la red (lazo cerrado) y ajustar la tasa de envío de acuerdo al nivel de congestión de la red. Por ejemplo TCP considera la llegada de ACK como información del estado de la red. En otro tipo de redes, los propios nodos cuando detectan congestión, adicionan información en los encabezados de los datos intercambiados.
ii) En la parte previa se menciona que en una comunicación entre dos partes alcanza con que haya un elemento congestionado dentro del camino de ida o vuelta (se pierde o demora el envío o sus reconocimientos), para que los extremos perciban que existe congestión.
Si bien en TCP el control de congestión lo hacen los extremos, se utiliza un estimador único que agrega todos los efectos percibidos en el camino de ida y vuelta, por lo que de forma indirecta intervienen todos los equipos del camino.
iii) Los campos que intervienen por excelencia son los números de secuencia y los números de reconocimiento. Esto es lo que permite realizar la realimentación de información de estado de la red descripta en la parte i).
Por último, se recuerda que al comienzo de la conexión TCP se negocian otros parámetros, como SACK o NACK, de ser así forman parte del encabezado extendido de TCP.
Observación: No fue visto en el curso y esta fuera del alcance del mismo, pero es posible que se utilice un par de bits del encabezado IP para notificar de la congestión, la propuesta se llama Explicit Congestion Notification en IP (RFC 3168). Antes de llegar a producirse congestión, el equipo intermedio utiliza uno de estos bits en los paquetes para notificar al extremo que ocurrió congestión en algún punto del camino. El origen de esta propuesta apuntaba a redes inalámbricas, donde la pérdida de un segmento puede no deberse a congestión en la red sino a colisiones en la red inalámbrica, pero ante esta situación erróneamente TCP baja el tamaño de la ventana.
b) Explique cómo estima TCP el Round Trip Time (RTT)
El RTT en TCP se estima basado en la información del tiempo transcurrido entre que se envió el segmento y cuando llegó su reconocimiento (ACK). Formalmente lo que se hace es una estimación móvil ponderada.
RTT[n] = a RTT[n-1] + ( 1 - a ) M[n] (Jacobson a = 7/8)
El estimador de RTT luego de recibir el ACK del segmento n, se basa en el valor del estimador de RTT hasta el segmento n-1 y el tiempo transcurrido entre el envío del segmento n y la llegada de su reconocimiento M[n].
De esta forma el estimador de RTT es una variable dinámica que captura la situación en que se encuentran los dos interlocutores (misma LAN o en países diferentes), y recoge todos los factores de demora en el camino de ida y vuelta. En caso de haber congestión, los primeros síntomas son el incremento del valor de RTT.
c) ¿El control de flujo y el control de congestión, utilizan el valor de RTT para poder cumplir con su objetivo? En caso de ser afirmativa su respuesta, explique de qué forma lo utiliza cada una de las funciones.
Además del valor de RTT, TCP estima un valor para el temporizador de retransmisión de datos, este valor al igual que el valor de RTT se adecua de forma dinámica.
Primero se estima el valor de la desviación estándar D[n], basado en la diferencia entre el valor esperado de RTT en el instante n (el estimador de RTT[n-1]) y la medición de RTT en el instante n ( M[n] ).
D[n] = b D[n-1] + ( 1 - b ) |RTT[n] – M[n]| ( Jacobson b = ¾) Luego se utiliza como estimador de timeout para el segmento n: Timeout [n] =RTT[n-1] + c * D[n-1] ( Jacobson c = 4)
Si pensamos en una estadística de los valores de RTT posibles y la probabilidad de ocurrencia, todo ACK que llegue más tarde que el valor medio más c veces la desviación estándar, se asume que es poco probable (evento raro), por lo cual a partir de ese punto expira el temporizador de retransmisión y se retransmite.
Los valores de las ponderaciones de los estimadores de RTT, desviación estándar y timeout, pueden presentar diferencias de acuerdo a las implementaciones de software (variante de TCP, en el caso visto en el curso se utiliza la propuesta de Jacobson).
Para el control de flujo, siendo estrictos, no se utiliza el valor RTT, al menos no de forma diferente al uso que propone el mecanismo de ventanas deslizantes, como parte del estimador de tiempo de retransmisión. Cada vez que se envía un segmento, si el ACK NO retorna antes del estimador de tiempo retransmisión (Timeout[n]) , se re-envía el segmento.
En el caso de control de congestión, también el RTT se utiliza como parte de la estimación del valor de timeout, sólo que cada vez que ocurre que NO llega el ACK antes del estimador de tiempo de retransmisión, el transmisor asume que hay congestión y actualiza la ventana de congestión para disminuir la cantidad de información a enviar (el valor depende de la implementación de software y de otros factores de la transmisión de datos). En caso de no haber congestión, típicamente cada RTT (o valor cercano al mismo) estarían llegando los ACK de los segmentos enviados.
Observación: El estimador de RTT y D obtenido con el segmento n-1, son los valores que se utilizan como predictores del segmento n. Una vez que llega el ACK del segmento n, se actualiza el estimador para el segmento n+1.
Pregunta 4
(10 puntos)
a) Defina el cometido y funciones de la función de ruteo (routing) en la capa de red de Internet.
En la capa de red se distinguen dos funciones principales que son la función de ruteo y la función de forwarding o encaminamiento. La función de ruteo es la que se encarga de construir la tablas de rutas o tabla de enrutamiento de los enrutadores o equipos de la red.
Las tablas de rutas contienen la información de cuál es el próximo salto asociado a un determinado destino, y su contenido puede provenir tanto de configuración (rutas estáticas) como de uno o varios “protocolos de enrutamiento” que a cada destino conocido le asocian el mejor salto con algún criterio, en general en base a un criterio de distancia en función de una métrica.
En el caso de Internet la tabla de rutas asocia a cada prefijo IP (red/máscara) la dirección IP del próximo salto o la interfaz por la que los paquetes con direcciones correspondientes a ese prefijo deben ser encaminados.
En general la función de ruteo modifica las tablas de rutas cuando cambia la topología de la red.
b) Defina el cometido y funciones de la función de encaminamiento (forwarding) en la capa de red de Internet.
La función de encaminamiento o “forwarding” es la que se encarga enviar los paquetes hacia el próximo salto que lo acerque al destino final del paquete. Utilizan las tablas de enrutamiento construidas por la función de ruteo.
La función de forwarding se aplica para cada paquete que debe ser encaminado.
En el caso de Internet para cada paquete recibido la función de encaminamiento busca en la tabla de enrutamiento el prefijo más específico que contiene a la IP de destino del paquete (longest prefix match), enviando el paquete al próximo salto indicado en la entrada correspondiente (o descartando el paquete si no hay ninguna entrada que lo contenga).
c) Explique las características determinantes de las clasificaciones: i. ruteo interno/ruteo externo
La clasificación del ruteo en interno y externo se basa en la existencia de entidades independientes definidas, llamadas sistemas autónomos, e indica si el ruteo es entre entidades de un mismo sistema autónomo o entre entidades de distintos sistemas autónomos. Hablamos de ruteo interno cuando los equipos participantes se encuentran todos en el mismo sistema autónomo, mientras que el ruteo externo se da cuando los equipos se encuentran en distintos sistemas autónomos.
ii. ruteo estático/ruteo dinámico
La clasificación en ruteo estático y dinámico se refiere a la existencia o no de un proceso automático de creación y actualización de las tablas de rutas. En el caso del ruteo estático el contenido de las tablas de rutas se define administrativamente (por configuración), mientras que en el caso del ruteo dinámico los equipos involucrados intercambian información de topología y costos para crear y actualizar automáticamente las tablas de rutas
d) Explique las características principales del funcionamiento de las familias de protocolos de vector distancia y estado del enlace.
Las familias de protocolos de vector distancia y estado de enlace se utilizan en el ruteo dinámico para intercambiar información entre los nodos y calcular las rutas a ingresar en la tabla de rutas.
vecinos la información de todos los destinos que conoce y la mejor distancia para alcanzar cada uno de ellos. Con las tablas recibidas de los nodos vecinos actualiza la información de los mejores caminos (los que minimizan la distancia) y usando esto actualiza la tabla de rutas. Las decisiones se basan entonces en la información “local” (la propia y la que le envían los nodos vecinos). Al no disponer de información de topología, son susceptibles de generar loops de encaminamiento debido al problema del conteo a infinito. En los protocolos de estado de enlace cada nodo verifica el estado de todos los enlaces a los que se encuentra conectado, y anuncia a los demás equipos de la red por inundación la información propia (descripción del nodo y del estado de sus enlaces). Con la información recibida de los demás nodos de la red cada enrutador posee toda la información de la topología de la red y puede calcular los mejores caminos a cada destino. Al disponer de toda la información de topología no corremos el riesgo de generar loops de encaminamiento. En general no es necesario reenviar toda la información periódicamente, sino que se envían solamente las diferencias cuando se producen cambios.
En la tabla que sigue se sintetizan las principales características vistas en el teórico
Vector Distancia Estado del enlace
Qué envía ? Todo lo que aprendió Sólo distancias a sus vecinos
A quién envía ? A sus vecinos A todos los enrutadores
Convergencia Lenta (por problema de conteo a
infinito)
Rápida
Carga a la red Mucha (c/router manda toda su
tabla cada x segundos) Poca (c/router envía solo sus vecinos cuando hay cambios)
Necesidad de CPU y memoria Baja Alta
Pregunta 5
(6 puntos)
a) ¿Cómo se realiza el encaminamiento de los paquetes en las redes de circuitos virtuales? ¿Qué tipo de tablas se utiliza para esta función?
En las redes de circuitos virtuales antes de la transferencia de datos se establece un circuito virtual, por el cual se enviaran todos los paquetes de la comunicación. Este circuito virtual se identifica por un “identificador de circuito virtual” o etiqueta, un número que como vimos en clase se intercambia entre pares de vecinos en el camino de origen a destino y que puede cambiar en cada salto del camino.
El encaminamiento se realiza utilizando las etiquetas mencionadas, el emisor del paquete le agrega un encabezado donde se encuentra el identificador del circuito virtual que comparte con el primer enrutador, y cada equipo en el camino al recibir el paquete debe identificar el circuito virtual, cambiar la etiqueta por la correspondiente al siguiente tramo del camino y reenviarlo al siguiente salto.
Para poder realizar el encaminamiento de los paquetes, el enrutador debe tener una tabla que indique la correspondencia entre cada identificador de entrada con el correspondiente identificador de salida y la información para alcanzar al siguiente nodo del camino (al menos la interfaz de salida). Esta tabla puede configurarse administrativamente, ser actualizada mediante un proceso de establecimiento de circuitos virtuales por señalización, o en el caso de MPLS ser actualizada por un protocolo de distribución de etiquetas
b) ¿En qué caso son necesarias direcciones de capa de red y tablas de rutas en las redes de circuitos virtuales? ¿Cuándo se utilizan?
Una vez que está establecido el circuito virtual no es necesario que los nodos conozcan el enrutamiento para llegar al destino, ya que alcanza con la información de las etiquetas como vimos en la parte (a). Sin embargo, si estamos en una red de circuitos virtuales donde estos se establecen mediante señalización
(SVCs), entonces es necesario el direccionamiento de los nodos de la red y las tablas de rutas para poder encaminar el pedido de establecimiento de circuito virtual.
Pregunta 6
(6 puntos)
a) Explique la utilidad de los mecanismos de control de admisión a la red vistos en clase (“balde con goteo” y “balde con fichas”).
Los mecanismos de control de admisión en la capa de red son para ayudar al control de congestión de la red. Permiten realizar un control en lazo abierto ya que sin tener una realimentación del estado de la red, ajustan el ingreso del tráfico en base a sus parámetros de configuración.
En el caso del balde con goteo, se controla la velocidad máxima de ingreso de datos a la red y en el caso del balde con fichas se controla la velocidad promedio y el tamaño de ráfaga.
b) Explique detalladamente cómo funciona el mecanismo de “balde con fichas”. Identifique los parámetros que determinan su funcionamiento y explique cómo afectan su comportamiento. Explique qué efecto tiene un mecanismo de este tipo sobre el tráfico que desea ingresar a la red.
El balde con fichas es un buffer que acumula el crédito de fichas (paquetes o bytes) que pueden ingresar a la red. Las fichas se generan a una velocidad Vg constante y el balde tiene una capacidad máxima de fichas C.
Los datos que ingresan a la red pueden hacerlo en la medida que haya crédito disponible. Si la velocidad de entrada de datos es menor o igual a la velocidad de generación de fichas, entonces el balde se irá llenando mientras no se supere la capacidad máxima.
Cuando la velocidad de entrada de datos supera a la velocidad de generación de fichas, entonces se empezarán a consumir las fichas almacenadas. Esto podrá mantenerse mientras haya fichas en el balde. Si las fichas acumuladas se acaban, para poder seguir ingresando datos a la red habrá que esperar que se vuelvan a generar fichas, de modo que la velocidad de salida quedará limitada a la velocidad de generación de fichas.
El mecanismo permite ráfagas de corta duración (limitadas por la capacidad del balde y la velocidad de generación de fichas) de modo de evitar un ingreso excesivo de datos a la red que podrían causar congestión en la misma.
Dependiendo de la implementación, los datos que no pueden ingresar cuando no hay fichas podrían perderse o acumularse en el transmisor.