Network Working Group M. Mathis Petición de Comentarios: 2018 J. Mahdavi Categoría: Informativo PSC S. Floyd LBNL A. Romanow Sun Microsystems Octubre 1996 Opciones de notificación de recepción selectiva en TCP Estado de este memorándum Este documento proporciona información para la comunidad Internet. No es la especificación de ningún estándar de Internet. La distribución de este memorándum no está limitada. Nota de Copyright Copyright (C) The Internet Society (1996). Todos los derechos reservados. Resumen El protocolo TCP puede experimentar un bajo rendimiento cuando se pierden múltiples paquetes de datos de una ventana. Con la limitada información que se dispone de las notificaciones de recepción acumulativas, un remitente TCP solo puede enterarse de un único paquete perdido por cada viaje de ida y vuelta. Un remitente agresivo podría optar por retransmitir paquetes más pronto, pero dichos segmentos retransmitidos podrían haber sido recibidos ya correctamente. Un mecanismo de notificación de recepción selectivo (SACK), combinado con una política selectiva de repetición de retransmisiones, puede ayudar a salvar dichas limitaciones. El receptor TCP devuelve paquetes SACK al remitente informándole de los datos que han sido recibidos. El remitente puede por tanto retransmitir solo los segmentos de datos que falta. Este memorándum propone una implementación de SACK y discute su rendimiento y aspectos relacionados. Reconocimientos Gran parte del texto de este documento se ha tomado directamente del RFC1072 [16] «Extensiones TCP para rutas con retardos grandes» por Bob Braden y Van Jacobson. A los autores les gustaría agradecer a Mathis, et al. Informativo [Pág. 1] RFC 2018 Notificación de recepción selectiva Octubre 1996 Kevin Fall (LBNL), Christian Huitema (INRIA), Van Jacobson (LBNL), Greg Miller (MITRE), Greg Minshall (Ipsilon), Lixia Zhang (XEROX PARC y UCLA), Dave Borman (BSDI), Allison Mankin (ISI) y otros sus revisiones y comentarios constructivos. Indice 1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. La opción SACK-Permitted . . . . . . . . . . . . . . . . . . . 5 3. Formato de la opción SACK . . . . . . . . . . . . . . . . . . 6 4. Generando opciones SACK: Comportamiento del receptor de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. Interpretando la opción SACK y la estrategia de retransmisión: Comportamiento del remitente de datos . . . . . 10 5.1 Aspectos sobre el control de congestiones . . . . . . . . . . 10 6. Eficiencia y comportamiento del peor caso . . . . . . . . . . 12 7. Ejemplos de opciones SACK . . . . . . . . . . . . . . . . . . 13 8. Renuncia por parte del receptor de los datos . . . . . . . . . 15 9. Consideraciones de seguridad . . . . . . . . . . . . . . . . . 16 Referencias . . . . . . . . . . . . . . . . . . . . . . . . . 17 Dirección de los autores . . . . . . . . . . . . . . . . . . . 18 A. Créditos de la traducción y conversión a XML . . . . . . . . . 19 Declaración completa de Copyright . . . . . . . . . . . . . . 20 Mathis, et al. Informativo [Pág. 2] RFC 2018 Notificación de recepción selectiva Octubre 1996 1. Introducción La pérdida de múltiples paquetes de una ventana de datos puede tener efectos catastróficos en el rendimiento del protocolo TCP. TCP [12] emplea un esquema de notificación de recepción en el cual, los segmentos recibidos que no están en el borde izquierdo de la ventana a la que pertenecen, no se notifican. Esto fuerza al remitente que o bien espere que se agote el tiempo de espera de la notificación para detectar los paquetes perdidos, o reenvíe segmentos que han sido correctamente recibidos [3]. Con el esquema de la notificación de recepción acumulativa, los múltiples segmentos descartados causan, generalmente, que el protocolo TCP pierda su reloj basado en las notificaciones (ACK), reduciendo el rendimiento global. La notificación de recepción selectiva (SACK) es una estrategia que corrige este comportamiento en el escenario de múltiples segmentos descartados. Con la notificación de recepción selectiva, el receptor de los datos puede informar al remitente de todos los segmentos que han llegado correctamente, por lo que el remitente solo tiene que retransmitir los segmentos que han sido perdidos. Diversos protocolos de transporte, incluidos el NETBLT [2], XTP [14], RDP [15], NADIR [5], y VMTP [1] utilizan notificación de recepción selectiva. Hay algunas evidencias empíricas a favor de la notificación de recepción selectiva -- experimentos simples con RDP han mostrado que desactivando la prestación de la notificación de recepción selectiva incrementa bastante el número de segmentos retransmitidos en las rutas de Internet con alto retardo y con grandes pérdidas de paquetes [11]. Un estudio de simulación reciente hecho por Kevin Fall y Sally Floyd [3], demuestra la fuerza del protocolo TCP con SACK sobre las implementaciones Tahoe y Reno del protocolo TCP sin SACK. El RFC1072 [VJ88] [17] describe una posible implementación de las opciones SACK para TCP. Desafortunadamente, nunca se ha llegado a desplegar en Internet, pues hubo desacuerdos sobre como las opciones SACK debían ser utilizadas en conjunción con la opción del cambio de ventana TCP (inicialmente descrito en el RFC1072 y revisado en [8]). Nosotros proponemos unas ligeras modificaciones de las opciones SACK tal y como se propusieron en el RFC1072. Específicamente, el envío de una notificación de recepción selectiva para los datos recibidos recientemente, reduce la necesidad de opciones SACK largas [9][10]. Además, la opción SACK ahora se compone de secuencias de números de 32 bit. Estas dos modificaciones representan los únicos cambios de la propuesta en el RFC1072. Dichos cambios hacen SACK más fácil de implementar y soluciona los problemas sobre su robustez. Mathis, et al. Informativo [Pág. 3] RFC 2018 Notificación de recepción selectiva Octubre 1996 Esta extensión de notificación de recepción selectiva emplea dos opciones TCP. La primera es una opción de habilitación, «SACK- permitted», la cual se puede enviar en un segmento SYN para indicar que la opción SACK puede ser empleada una vez se ha establecido la conexión. La otra es una opción propia de SACK que puede ser enviada mediante una conexión establecida una vez se ha dado permiso mediante SACK-permitted. La opción SACK se incluye en un segmento enviado desde una conexión TCP que está recibiendo datos de la conexión TCP que está enviando dichos datos; nos referiremos a dichas conexiones TCP como el receptor de datos y el remitente de datos respectivamente. Consideraremos un flujo de datos simple en particular; cualquier flujo de datos en la dirección inversa sobre la misma conexión puede ser tratada independientemente. Mathis, et al. Informativo [Pág. 4] RFC 2018 Notificación de recepción selectiva Octubre 1996 2. La opción SACK-Permitted Esta opción de dos bytes se puede enviar mediante un SYN por una conexión TCP que ha sido extendida para recibir (y probablemente para procesar) la opción SACK una vez que la conexión se ha abierto. NO DEBE ser enviada en segmentos distintos del SYN. La opción SACK-Permitted en TCP: Tipo: 4 +---------+------------+ | Tipo=4 | Longitud=2 | +---------+------------+ Mathis, et al. Informativo [Pág. 5] RFC 2018 Notificación de recepción selectiva Octubre 1996 3. Formato de la opción SACK La opción SACK se empleará para transportar información extendida sobre la notificación de recepción desde el receptor al remitente sobre una conexión TCP establecida. Opción SACK en TCP: Tipo: 5 Longitud: Variable +--------+--------+ | Tipo=5 |Longitud| +--------+--------+--------+--------+ | Borde izquierdo del primer bloque | +--------+--------+--------+--------+ | Borde derecho del primer bloque | +--------+--------+--------+--------+ | | / . . . / | | +--------+--------+--------+--------+ | Borde izquierdo del bloque n-esimo| +--------+--------+--------+--------+ | Borde derecho del bloque n-esimo | +--------+--------+--------+--------+ La opción SACK se enviará por un receptor de datos para informar al remitente de los datos de los bloques de datos no continuos que se han recibido y encolados. El receptor de datos espera la recepción de datos (quizás mediante retransmisiones) para rellenar los huecos de la secuencia vacía entre los bloques recibidos. Cuando se reciben segmentos que faltaban, el receptor de datos notifica la recepción de datos, generalmente, desplazando el borde izquierdo de la ventana en el campo numérico de la notificación de recepción de la cabecera TCP. La opción SACK no cambia el significado del campo número de notificación de recepción. Esta opción contiene una lista de algunos de los bloques de secuencias continuas de datos que han sido recibidos y encolados dentro de la ventana. Cada bloque continuo de datos encolados en el receptor de datos está definido en la opción SACK por dos enteros sin signo de 32 bits con la ordenación de bytes de red: o Borde izquierdo del primer bloque: Es el primer número de la Mathis, et al. Informativo [Pág. 6] RFC 2018 Notificación de recepción selectiva Octubre 1996 secuencia de este bloque. o Borde derecho del primer bloque: Es el número de la secuencia que sigue inmediatamente al último número de la secuencia de este bloque. Cada bloque representa los bytes de datos recibidos que están contiguos y aislados; es decir, los bytes justo antes del bloque, (Borde izquierdo del bloque - 1), y justo después del bloque, (Borde derecho del bloque), no han sido recibidos. Una opción SACK que especifica n bloques tendrá una longitud de 8*n+2 bytes, por tanto, los 40 bytes disponibles para las opciones TCP pueden especificar un máximo de 4 bloques. Normalmente SACK se empleará junto con la opción Timestamp empleada para RTTM [8], que emplea 10 bytes adicionales (más dos bytes de alineación); por lo que solo se podrán emplear 3 bloques SACK en este caso. La opción SACK es solo informativa, por tanto, aunque notifique al remitente de los datos que el receptor de datos ha recibido los segmentos indicados, el receptor de los datos puede descartar posteriormente los datos que se han notificado en una opción SACK. En la sección 8 hay una discusión de las consecuencias de las notificaciones SACK, en particular, que el receptor de datos puede renunciar o descartar datos ya enviados por SACK. Mathis, et al. Informativo [Pág. 7] RFC 2018 Notificación de recepción selectiva Octubre 1996 4. Generando opciones SACK: Comportamiento del receptor de datos Si el receptor de datos ha recibido la opción SACK-Permitted en el SYN de esta conexión, el receptor de datos puede optar por generar opciones SACK como se describe a continuación. Si el receptor de datos genera opciones SACK bajo alguna circunstancia, DEBE generarlas bajo todas las circunstancias permitidas. Si el receptor de datos no ha recibido una opción SACK-Permitted para una determinada conexión, NO DEBE enviar opciones SACK por dicha conexión. Si se envían, las opciones SACK DEBEN ser incluidas en todos los ACKs que no notifiquen el número de secuencia más alto de la cola del receptor de datos. Es esta situación, la red ha perdido o desordenado datos, por tanto el receptor mantiene datos no continuos en su cola. En el RFC1122, Sección 4.2.2.21, se discute los motivos por los que un receptor enviará ACKs en respuesta a segmentos adicionales recibidos en este estado. El receptor DEBE enviar un ACK por cada segmento válido que llegue conteniendo nuevos datos, y cada uno de esos ACKs «duplicados» DEBEN llevar una opción SACK. Si el receptor de datos escoge enviar una opción SACK, se aplican las siguientes reglas: o El primero bloque SACK (es decir, el que sigue inmediatamente a los campos tipo y longitud en la opción) DEBE especificar el bloque de datos continuo que contiene el segmento que lanzo este ACK, a no ser que dicho segmento incremente el campo numérico de notificación de recepción de la cabecera. Esto asegura que el ACK con la opción SACK refleja el cambio más reciente en el buffer de la cola del receptor de datos. o El receptor de datos DEBE incluir en la opción SACK, tantos bloques SACK distintos como le sea posible. Tenga presente que el espacio máximo disponible para las opciones puede que no sea suficiente para informar de todos los bloques presentes en la cola del receptor. o La opción SACK DEBE ser rellenada repitiendo los bloques SACK que fueron notificados recientemente (basados en el primer bloque SACK de las opciones SACK anteriores) que no son un subconjunto de alguno de los otros bloques SACK ya incluidos en la opción SACK que se está construyendo. Esto asegura que en una operación normal, cualquier parte del segmento que quede de un bloque no continuo de datos almacenado por el receptor se notificará en al menos tres opciones SACK sucesivas, incluso para implementaciones TCP con ventanas muy grandes [RFC1323] [18]. Después del primer bloque SACK, los siguientes bloques SACK de la opción SACK pueden estar listados en orden arbitrario. Mathis, et al. Informativo [Pág. 8] RFC 2018 Notificación de recepción selectiva Octubre 1996 Es muy importante que la opción SACK siempre informe el bloque que contiene el segmento que se ha recibido más recientemente, pues esto facilita al remitente la información más actualizada sobre el estado de la red y de la cola del receptor de datos. Mathis, et al. Informativo [Pág. 9] RFC 2018 Notificación de recepción selectiva Octubre 1996 5. Interpretando la opción SACK y la estrategia de retransmisión: Comportamiento del remitente de datos Cuando un ACK recibido contiene una opción SACK, el remitente de los datos DEBE registrar la notificación de recepción selectiva para su uso posterior. Se asume que el remitente de los datos tiene una cola de retransmisión que contiene los segmentos que han sido transmitidos pero que no se ha notificado su recepción, en ordenados por su número de secuencia. Si el remitente de los datos vuelve a empaquetar dichos datos antes de la retransmisión, los límites del bloque de una opción SACK que reciba puede que no coincidan con los límites de los segmentos de la cola de retransmisión; sin embargo, esto no supone una dificultad seria para el remitente. Una posible implementación del comportamiento del remitente es la siguiente. Supongamos que por cada segmento de la cola de retransmisión hay un (nuevo) bit de estado «SACKed», que se empleará para indicar que ese segmento en particular ha sido mencionado en una opción SACK. Cuando se recibe un segmento de confirmación de recepción con una opción SACK, el remitente de los datos activará los bits SACKed de los segmentos que han sido notificados selectivamente. En concreto, por cada bloque de la opción SACK, el remitente de los datos activará los bits SACKed de todos los segmentos de la cola de retransmisión que están completamente contenidos dentro de cada bloque. Esto requiere de comparaciones directas de los números de secuencia. Después que el bit SACKed se activa (como resultado de procesar una opción SACK recibida), el remitente de los datos saltará dicho segmento durante cualquier retransmisión posterior. Cualquier segmento que tiene el bit SACKed desactivado y sea inferior al segmento más grande con el bit SACKed activado, está disponible para ser retransmitido. Después de agotarse el tiempo de espera de una retransmisión el remitente de los datos DEBE desactivar todos los bits SACKed, ya que al agotarse el tiempo de espera, puede significar que el receptor de los datos ha renunciado. El remitente de los datos DEBE retransmitir el segmento del borde izquierdo de la ventana después de agotarse el tiempo de espera de una retransmisión, esté activado o no el bit SACKed de dicho segmento. Un segmento no se eliminará de la cola ni se liberará su buffer hasta que el borde izquierdo de la ventana lo sobrepase. 5.1 Aspectos sobre el control de congestiones Este documento no pretende especificar en detalle los algoritmos de Mathis, et al. Informativo [Pág. 10] RFC 2018 Notificación de recepción selectiva Octubre 1996 control de congestión para la implementación del protocolo TCP con SACK. Sin embargo, los algoritmos de control de congestión presentes en las implementaciones del estándar de facto TCP DEBEN ser preservados [13]. En particular, para mantener la robustez frente a paquetes reordenados por la red, la recuperación no se dispara por un solo informe ACK fuera-de-orden en el receptor. Es más, durante la recuperación el remitente de datos limita el número de segmentos enviados en respuesta a cada ACK. Las implementaciones existentes limitan al remitente de los datos a enviar un segmento durante las recuperaciones rápidas del tipo Reno, o dos segmentos durante el inicio-lento (slow-start) [6]. Otros aspectos del control de congestiones, como es la reducción de la ventana congestionada en respuesta a una congestión, debe ser preservados de forma similar. El uso de tiempos de espera como un mecanismo de detección de paquetes descartados no varían con la opción SACK. Ya que el receptor de los datos puede descartar datos SACKed, cuando se agota el tiempo de espera de una retransmisión el remitente de los datos DEBE ignorar la información SACK anterior para determinar que datos debe retransmitir. Investigaciones futuras sobre algoritmos de control de congestión pueden sacar provecho de la información adicional que provee SACK. Una posible área de estudio de este tipo es la modificación del protocolo TCP para entornos inalámbricos o por satélite donde la pérdida de paquetes no es necesariamente una indicación de congestión. Mathis, et al. Informativo [Pág. 11] RFC 2018 Notificación de recepción selectiva Octubre 1996 6. Eficiencia y comportamiento del peor caso Si la ruta de retorno que lleva los ACKs y las opciones SACK no tuviese ninguna pérdida, sería siempre suficiente un bloque por cada paquete con opciones SACK. Cada segmento que llegase mientras el receptor de datos mantiene datos discontinuos causará que el receptor de datos envíe de vuelta un ACK con una opción SACK conteniendo el bloque alterado de la cola del receptor. El remitente de los datos puede por tanto construir una réplica precisa de la cola del receptor uniendo todos los primeros bloques SACK. Dado que la ruta de retorno siempre perderá paquetes, la opción SACK se define para que incluya más de un bloque SACK en un solo paquete. Los bloques redundantes en el paquete con las opciones SACK incrementan la robustez de la entrega SACK frente a pérdidas de ACKs. Para un receptor que también está empleando la opción Timestamp [8], la opción SACK tiene espacio para incluir tres bloques SACK. Por tanto, cada bloque SACK se repetirá al menos tres veces, si es necesario, una vez en cada tres paquetes ACK sucesivos. Sin embargo, si todos los paquetes ACK que informan de un bloque SACK en particular se descarta, el remitente puede asumir que los datos en dichos bloques SACK no han sido recibidos, y retransmita de forma innecesaria dichos segmentos. El uso de otras opciones TCP pueden reducir el número de bloques SACK disponibles a 2 o incluso a 1. Esto reducirá la redundancia de la entrega SACK frente a pérdidas de ACKs. Incluso así, la necesidad de retransmisión innecesaria de paquetes de TCP con SACK es estrictamente menor que la de las implementaciones actuales del protocolo TCP. Las condiciones del peor caso necesarias para que el remitente retransmita datos innecesarios se discute con más detalle en un documento separado [4]. Las implementaciones anteriores de TCP que no tienen la opción SACK no se verán perjudicadas negativamente cuando compitan con otras implementaciones TCP con SACK. Este aspecto se discute con más detalle en [4]. Mathis, et al. Informativo [Pág. 12] RFC 2018 Notificación de recepción selectiva Octubre 1996 7. Ejemplos de opciones SACK Los siguientes ejemplos intentan demostrar el correcto comportamiento para la generación de opciones SACK por el receptor de datos. Asumimos que el borde izquierdo de la ventana es 5000 y que el transmisor de datos envía un grupo de 8 segmentos, cada uno contiene 500 bytes de datos. Caso 1: Los primeros 4 segmentos se reciben pero los últimos 4 se descartan. El receptor de datos devolverá un segmento TCP de ACK normal notificando la recepción con el número de secuencia 7000, sin opciones SACK. Caso 2: El primer segmento se descarta pero los restantes 7 se reciben. Con la recepción de cada uno de los últimos siete paquetes, el receptor de datos devolverá un segmento TCP de ACK que notificará la recepción con el número de secuencia 5000 y conteniendo una opción SACK especificando un bloque de datos encolados: Segmento que se Borde Borde envía ACK izquierdo derecho 5000 (perdido) 5500 5000 5500 6000 6000 5000 5500 6500 6500 5000 5500 7000 7000 5000 5500 7500 7500 5000 5500 8000 8000 5000 5500 8500 8500 5000 5500 9000 Caso 3: Los segmentos segundo, cuarto, sexto y octavo (último) se descartan. El receptor de datos envía ACKs del primer paquete de forma normal. El tercero, quinto y séptimo paquete mandan opciones SACK como las que siguen: Mathis, et al. Informativo [Pág. 13] RFC 2018 Notificación de recepción selectiva Octubre 1996 Segmento Primer bloque Segundo bloque Tercer bloque que se Borde Borde Borde Borde Borde Borde envía ACK izquierdo derecho izquierdo derecho izquierdo derecho 5000 5500 5500 (perdido) 6000 5500 6000 6500 6500 (perdido) 7000 5500 7000 7500 6000 6500 7500 (perdido) 8000 5500 8000 8500 7000 7500 6000 6500 8500 (perdido) Suponga en este punto, que el cuarto paquete se recibe fuera de orden. (Esto puede deberse o bien porque los datos se desordenaron en la red, o porque el segundo paquete fue retransmitido y perdido, y luego el cuarto paquete se retransmitió). En este momento el receptor de datos solo tiene dos bloques SACK de los que informar. El receptor de datos responde con la siguiente notificación de recepción selectiva: Segmento Primer bloque Segundo bloque Tercer bloque que se Borde Borde Borde Borde Borde Borde envía ACK izquierdo derecho izquierdo derecho izquierdo derecho 6500 5500 6000 7500 8000 8500 Suponga que en este punto, se recibe el segundo segmento. El receptor de datos por tanto responde con la siguiente notificación de recepción selectiva: Segmento Primer bloque Segundo bloque Tercer bloque que se Borde Borde Borde Borde Borde Borde envía ACK izquierdo derecho izquierdo derecho izquierdo derecho 5500 7500 8000 8500 Mathis, et al. Informativo [Pág. 14] RFC 2018 Notificación de recepción selectiva Octubre 1996 8. Renuncia por parte del receptor de los datos Tenga presente que el receptor de los datos puede descartar de su cola datos que no han sido notificados al remitente, incluso si se ha informado de dichos datos en una opción SACK. Dicho descarto de paquetes SACKed no es recomendable, pero puede realizarse si el receptor se queda sin espacio en el buffer de paquetes. El receptor de datos PUEDE decidir no mantener datos que han sido notificados en una opción SACK. En este caso, la generación de la opción SACK por parte del receptor se realizará de esta forma: o El primer bloque SACK DEBE reflejar el segmento más nuevo. Incluso si el segmento más nuevo va a ser descartado y el receptor ha descartado ya segmentos adyacentes, el primer bloque SACK DEBE informar, como mínimo, los bordes izquierdo y derecho del segmento más nuevo. o Excepto para el segmento más nuevo, todos los bloques SACK NO DEBEN informar de cualquier dato antiguo que ya no es almacenado por el receptor. Dado que el receptor de los datos puede descartar posteriormente datos notificados en una opción SACK, el remitente NO DEBE descartar datos antes de que sea notificada su recepción por el campo del número de notificación de la cabecera TCP. Mathis, et al. Informativo [Pág. 15] RFC 2018 Notificación de recepción selectiva Octubre 1996 9. Consideraciones de seguridad Este documento ni mejora ni empeora las características actuales de seguridad del protocolo TCP. Mathis, et al. Informativo [Pág. 16] RFC 2018 Notificación de recepción selectiva Octubre 1996 Referencias [1] Cheriton, D., "VMTP: Versatile Message Transaction Protocol", RFC 1045, February 1988. [2] Clark, D., Lambert, M. y L. Zhang, "NETBLT: A Bulk Data Transfer Protocol", RFC 998, March 1987. [3] Fall, K. y S. Floyd, "Comparisons of Tahoe, Reno, and Sack TCP", December 1995. [4] Floyd, S., "Issues of TCP with SACK", January 1996. [5] Huitema, C. y I. Valet, "An Experiment on High Speed File Transfer using Satellite Links", October 1981. [6] Jacobson, V., "Congestion Avoidance and Control", August 1988. [7] Jacobson, V. y R. Braden, "TCP Extensions for Long-Delay Paths", RFC 1072, October 1988. [8] Jacobson, V., Braden, R. y D. Borman, "TCP Extensions for High Performance", RFC 1323, May 1992. [9] "presentation to the Internet End-to-End Research Group", November 1994. [10] Mathis, M. y J. Mahdavi, "TCP Forward Acknowledgment Option, presentation to the Internet End-to-End Research Group", June 1995. [11] Partridge, C., "Private Communication", February 1987. [12] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", RFC 793, September 1981. [13] Stevens, W., "TCP/IP Illustrated, Volume 1: The Protocols", 1994. [14] Strayer, T., Dempsey, B. y A. Weaver, "XTP -- the xpress transfer protocol", 1992. [15] Velten, D., Hinden, R. y J. Sax, "Reliable Data Protocol", RFC 908, July 1984. [16] [17] Mathis, et al. Informativo [Pág. 17] RFC 2018 Notificación de recepción selectiva Octubre 1996 [18] [19] [20] Dirección de los Autores Matt Mathis Pittsburgh Supercomputing Center 4400 Fifth Ave Pittsburgh, PA 15213 US EMail: mathis@psc.edu Jamshid Mahdavi Pittsburgh Supercomputing Center 4400 Fifth Ave Pittsburgh, PA 15213 US EMail: mahdavi@psc.edu Sally Floyd Lawrence Berkeley National Laboratory One Cyclotron Road Berkeley, CA 94720 US EMail: floyd@ee.lbl.gov Allyn Romanow Sun Microsystems, Inc. 2550 Garcia Ave. MPK17-202 Mountain View, CA 94043 US EMail: allyn@eng.sun.com Mathis, et al. Informativo [Pág. 18] RFC 2018 Notificación de recepción selectiva Octubre 1996 Apéndice A. Créditos de la traducción y conversión a XML Este RFC ha sido traducido y convertido a XML según la especificación del RFC2629 [19] por Carlos Perelló Marín [20] en mayo de 2003. Mathis, et al. Informativo [Pág. 19] RFC 2018 Notificación de recepción selectiva Octubre 1996 Declaración completa de Copyright Copyright (C) The Internet Society (1996). Reservados todos los derechos. Le está permitido copiar y entregar a terceros este documento en su versión original o traducida. Puede procesar, copiar, publicar y distribuir, en parte o en totalidad, sin restricción de ningún tipo, trabajos derivados que comenten, expliquen o ayuden en la implementación de este documento, siempre que en cada copia o trabajo derivado incluya la mención de Copyright anterior junto con la presente nota. No le está sin embargo permitido modificar en ningún modo este documento, eliminar la mención de Copyright ni las referencias a The Internet Society u otras organizaciones de Internet, excepto con el fin de desarrollar los estándares de Internet (en cuyo caso deberá seguir los procedimientos para copyrights definidos en el proceso de Estándares Internet), o con el fin de traducirlo a otros idiomas distintos del inglés. Los permisos limitados concedidos más arriba son perpétuos y no serán revocados por la 'Internet Society' o sus sucesores o cesionarios. Este documento y la información contenida se ofrece "TAL CUAL". THE INTERNET SOCIETY Y THE INTERNET ENGINEERING TASK FORCE DESCARTAN CUALQUIER GARANTÍA EXPRESA O IMPLICITA POR EL USO DE LA INFORMACIÓN AQUÍ CONTENIDA Y EN PARTICULAR EXCLUYEN, SIN LIMITACIÓN ALGUNA, TODA GARANTÍA SOBRE POSIBLES INFRACCIONES DE DERECHOS O GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN Y ADECUACIÓN A LOS FINES PERSEGUIDOS. Agradecimiento Los fondos para las funciones desempeñadas por el editor RFC son proporcionados actualmente por la Internet Society. Mathis, et al. Informativo [Pág. 20]