Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro

Página creada Flavio Fraga
 
SEGUIR LEYENDO
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Transporte de tráfico IP sobre redes basadas en
                   contenido

           Marielena Márquez Barreiro

                      Trabajo de fin de grado
            Escuela de Ingeniería de Telecomunicación
      Grado en Ingeniería de Tecnologías de Telecomunicación

                          Tutores
                   Miguel Rodríguez Pérez
                   Sergio Herrería Alonso

                       Curso 2020/2021
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de                       Grado en Ingeniería de Mención:
                                                                 Ingeniería de                    Tecnologías de         Telemática
                                                                                                  Telecomunicación
                                                                 Telecomunicación

Índice
Introducción .................................................................................................................................. 1
Objetivos ....................................................................................................................................... 2
Named Data Networking (NDN)................................................................................................... 3
   Bases de su funcionamiento ...................................................................................................... 4
   Estado del arte: aplicaciones y avances ..................................................................................... 5
Metodología y desarrollo .............................................................................................................. 6
   Escenario desarrollado .............................................................................................................. 7
   Instalación y configuración del escenario ................................................................................. 8
   Captura y procesado de paquetes IP ........................................................................................ 10
   Inyección en la red de paquetes IP .......................................................................................... 11
   Pasarela con protocolo básico ................................................................................................. 12
   Pasarela con protocolo mejorado ............................................................................................ 14
   Pruebas realizadas ................................................................................................................... 16
Resultados ................................................................................................................................... 18
Conclusiones ............................................................................................................................... 19
Bibliografía ................................................................................................................................. 19
Anexo 1: Conceptos relevantes sobre el protocolo NDN ............................................................ 21
Anexo 2: Configuración y pruebas con tecnologías de enlace para conectividad entre nodos NDN
..................................................................................................................................................... 25
Anexo 3: Funcionamiento detallado de la pasarela con el protocolo básico ............................... 27
Anexo 4: Modelado del código de la pasarela con el protocolo mejorado.................................. 33
Anexo 5: Resultados de las pruebas con iperf............................................................................. 36

                                                                          0
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de            Grado en Ingeniería de Mención:
                                          Ingeniería de         Tecnologías de         Telemática
                                                                Telecomunicación
                                          Telecomunicación

        TRANSPORTE DE TRÁFICO IP
        SOBRE REDES BASADAS EN
              CONTENIDO
                   Autor: Marielena Márquez Barreiro
                   Tutores: Miguel Rodríguez Pérez,
                         Sergio Herrería Alonso
                           Curso: 2020/2021
1. Introducción
No es necesario resaltar el tremendo impacto que ha tenido la invención de Internet en las vidas
del ser humano a día de hoy y, sin lugar a dudas, que tendrá a futuro. Indiscutiblemente vivimos
en un mundo impulsado por las comunicaciones digitales, siendo intrínsecas y esenciales en
prácticamente cualquier sector de nuestra sociedad. Las suposiciones y bases iniciales sobre las
que nació el Internet que conocemos han ido mutando con su evolución, surgiendo con el paso de
los años nuevos usos y aplicaciones. Sin embargo, los fundamentos de estas ya no concuerdan
con aquellos del modelo de comunicación original que subyace de la pila de protocolos TCP/IP.

La realidad es que, para la inmensa mayoría de las comunicaciones del presente, el requisito IP
de comunicarse descubriendo y especificando un origen y un destino supone una limitación y una
dificultad. Esto se debe a que lo único realmente importante en muchas de las aplicaciones
actuales son los datos en sí mismos.

Para adaptarse a esta nueva visión de las aplicaciones a nivel conceptual, es inevitable e
imprescindible transformar la arquitectura del modelo de red predominante actualmente. Los
cimientos para ajustarse a las necesidades del presente ya no pueden ser los que sostienen al
modelo original (los terminales en comunicaciones punto a punto y sus direcciones). Ahora el
foco debe ponerse en lo relevante hoy en día para los usuarios y aplicaciones vigentes: el
contenido de las comunicaciones.

En este contexto nació el proyecto Named Data Networking (NDN) [1], fundado en 2010 por la
National Science Foundation (NSF) de los Estados Unidos. Este aspira a ser una alternativa a la
arquitectura TCP/IP, desarrollándose con principios ajustados a los incipientes patrones de
comunicación, focalizándose en la transmisión de los datos en sí mismos y, por lo tanto,
poseyendo gran potencial de cara a los entornos IoT (Internet of Things). Dicho proyecto es
relativamente reciente y aún se encuentra en vías de investigación y desarrollo para solventar las
dificultades técnicas que han ido surgiendo. A pesar de esto, los avances y pruebas significativas
ya realizadas convierten a esta arquitectura en candidata indiscutible para el Internet del futuro.

Pero ninguna transición es sencilla. Aún cuando la arquitectura NDN llegue a estar
completamente validada y consolidada, la actualización y/o reemplazo de los millones de
dispositivos actuales que no la implementan será un proceso arduo. Con la motivación de idear
un mecanismo factible que facilite dicho proceso surge la idea de desarrollar el sistema que se
presenta a continuación: una pasarela que soporte el transporte de tráfico IP a través de una red
NDN.

                                                1
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de             Grado en Ingeniería de Mención:
                                           Ingeniería de          Tecnologías de         Telemática
                                                                  Telecomunicación
                                           Telecomunicación

2. Objetivos
Entre las aplicaciones que predominan en Internet en nuestro día a día destaca el consumo de
contenido multimedia, redes sociales, aplicaciones móviles o e-commerce. El nexo común entre
ellas es la concepción de Internet como un mecanismo de distribución de contenido. Para esta
interpretación, como ya se apuntaba, el protocolo IP resulta poco práctico e innecesariamente
complejo, al estar basado en la comunicación punto a punto.

Por esta razón, en este proyecto se han explorado las posibilidades que ofrece una arquitectura de
red alternativa y novedosa como NDN a la hora de adaptar la capa de red a las necesidades del
mundo actual, caracterizado por el uso de Internet como una red de distribución más que como
la red de comunicación que era en su creación.

Para ello, será imprescindible conocer y comprender con cierto grado de profundidad los
principios de diseño, desarrollo e investigación en torno a la arquitectura de red NDN. Estos
conocimientos serán necesarios para llegar a completar el objeto sustancial de este Trabajo Fin
de Grado: el desarrollo de una herramienta que facilite y agilice la transformación de la forma en
la que se diseñan, desarrollan y despliegan redes y aplicaciones a día de hoy.

Dicha herramienta, a grandes rasgos, implementará la funcionalidad de pasarela para transportar
paquetes IP usando NDN como protocolo de red. Para llegar a conseguir su funcionamiento
exitoso, se definen una serie de actividades globales que marcan el desarrollo de este proyecto:

    •   El diseño de un protocolo que permita el transporte de paquetes IP sobre una red NDN.
    •   La creación de una aplicación que capture, procese y encamine el tráfico IP a través de la
        red NDN.
    •   El desarrollo de un escenario de prueba que permita validar el funcionamiento del sistema
        implementado. Sobre dicho escenario se realizarán pruebas de rendimiento y se ejecutará
        una aplicación de streaming de vídeo para demostrar la transmisión exitosa de datos
        multimedia a través de la pasarela desarrollada.
    •   El estudio y desarrollo de las modificaciones necesarias en el protocolo para optimizar su
        rendimiento (tasa).

Este sistema se plantea para emplearse sobre un escenario como el representado en la Figura 1,
en el que el núcleo de la red está integrado por equipos comunicándose usando el protocolo NDN.
Los gateways serán aquellos routers que se encuentran en la frontera de dicho núcleo,
interconectándolo a redes de equipos que solo implementen IP. La aplicación desarrollada se
estará ejecutando en estos gateways, cada uno conectado a una subred IP diferente. Será gracias
a ella que se consiga comunicación entre las distintas subredes IP. Así, los equipos que solo
implementen la pila TCP/IP enviarán paquetes que atravesarán el núcleo NDN de forma
transparente para ellos.

                              Figura 1: Escenario de la pasarela IP-NDN

                                                 2
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de            Grado en Ingeniería de Mención:
                                             Ingeniería de         Tecnologías de         Telemática
                                                                   Telecomunicación
                                             Telecomunicación

En resumen, el foco deberá estar puesto en la consecución de un funcionamiento exitoso de dicha
pasarela, realizando y evaluando pruebas claras que validen su correcta operación. Esto no se
conseguirá sin antes comprender y familiarizarse con los principios, mecanismos y herramientas
disponibles para trabajar y desarrollar con NDN como protocolo de red. De todo ello cabe destacar
la relevancia de aprender a experimentar y desarrollar con ciertas tecnologías novedosas, como
son: el software del router que implementa el protocolo NDN (NFD, Named Data Networking
Forwarding Daemon) [2]; la librería oficial de programación en C++ que implementa las
primitivas del protocolo NDN (ndn-cxx) [3]; o la librería libpcap [4] para la captura, filtrado y
procesado de paquetes necesarios.

Finalmente, es importante señalar también las limitaciones a las que se encuentra ligado este
proyecto. Se trata de un marco sin conocimiento previo alguno, ni teórico ni práctico, y que
precisa del uso de tecnologías desconocidas para desarrollar, desde cero, una herramienta
innovadora. Todo ello, además, en un tiempo de investigación y desarrollo limitado. Por esta
razón, ciertas líneas y funcionalidades muy significativas proporcionadas por el modelo de NDN
quedarán fuera del ámbito de este trabajo, como pueden ser el área de la seguridad o la
autoconfiguración de rutas.

3. Named Data Networking (NDN)
El concepto de Named Data Networking (NDN) nace y evoluciona a partir de su proyecto
predecesor Content-Centric Networking (CCN), con la intención de crear una arquitectura de red
alternativa a IP que tenga los datos como motivo central. Concretamente, se trata de un diseño
arquitectónico específico dentro de la línea global de investigación Information-Centric
Networking (ICN). NDN pretende convertirse en la nueva capa de red universal, pudiendo
ejecutarse sobre cualquier otro protocolo y pudiendo cualquier protocolo ejecutarse sobre él
(inclusive IP en ambos casos). Es decir, al igual que IP, su diseño pretende compatibilizar el
desarrollo e innovación independiente de protocolos en capas inferiores y superiores. Pero, al
contrario de IP, aspira a cambiar el objetivo del servicio de red propiamente dicho, esto es, que
deje de ser la entrega de paquetes a una cierta dirección destino, para convertirse en la
recuperación de datos identificados por un nombre concreto [1].

NDN mantiene la arquitectura en forma de reloj de arena del Internet actual, pero transformando
su núcleo: la capa de red (la parte estrecha del reloj que se aprecia en la Figura 2) se altera
buscando adaptarla al concepto de red de distribución. Esta parte central se diseñó inicialmente
con el propósito de proporcionar las funcionalidades mínimas necesarias para conseguir
interconectividad a nivel global, imponiendo la restricción de que las únicas entidades nombrables
en los paquetes IP serían los extremos de las comunicaciones.1 Y es justamente esta imposición
la raíz de muchos de los problemas de este modelo, asociados al control y distribución de
contenidos. Esta clase de inconvenientes del paradigma de la comunicación punto a punto se ve
reflejada en, por ejemplo, los Content Distribution Networks (CDN)2 o en el hecho de que el
protocolo Transport Layer Security (TLS) procure la protección de las comunicaciones, en lugar
de la protección de los datos.

Por ese motivo, NDN elimina dicha restricción en su modelo, estableciendo que el nombre en sus
paquetes puede identificar objetos más allá de los extremos de la comunicación: desde un
fragmento de un contenido multimedia hasta un comando para realizar una acción concreta. De
esta forma, se deja atrás la unidad de comunicación fundamental de la arquitectura TCP/IP: un
can

1
  Requisito explícito presente en el RFC791 (Internet Protocol).
2
  La caída de Fastly, un gran proveedor de Internet, a principios del mes de junio de 2021 evidencia las
terribles consecuencias de la tendencia a re-centralizar Internet que demuestran los CDN.

                                                   3
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de              Grado en Ingeniería de Mención:
                                            Ingeniería de           Tecnologías de         Telemática
                                                                    Telecomunicación
                                            Telecomunicación

                         Figura 2: Arquitecturas IP y NDN. Reproducido de [1].

punto a punto con los extremos de la comunicación identificados por una dirección IP.3 Ahora,
en cambio, los bloques principales de la arquitectura NDN pasan a ser los fragmentos de
contenido.

Este protocolo aplica ciertos principios arquitectónicos disruptivos. Incluye, por ejemplo, un
bloque de seguridad específico para asegurar el contenido de los paquetes (no el contenedor),
firmando todos los datos nombrados que se transmiten. Consigue así desacoplar la confianza en
los datos de la confianza en los hosts y permite mecanismos como el caché automático para
optimizar el ancho de banda. Pretende, también, la autorregulación del tráfico en la red por medio
del balance de flujo entre paquetes Interest y Data. Y, además, soporta funcionalidades como el
reenvío multipath y el almacenamiento en red, con el objetivo de fomentar la competencia entre
distintas implementaciones y el poder de decisión del usuario final para elegir entre ellas.

3.1. Bases de su funcionamiento

Los principios de diseño de la arquitectura NDN dan lugar a un protocolo de comunicación en el
que se diferencian claramente dos roles: el productor (servidores del contenido) y el consumidor
(receptores del contenido). Además, el proceso de comunicación en sí mismo es impulsado por
los receptores. Estas entidades intercambian paquetes que pueden ser de dos tipos: Interest o Data,
ambos nombrados para identificar a un fragmento de datos concreto. El proceso de comunicación
se puede describir de la siguiente manera:
     1. Un consumidor crea un paquete Interest, con el nombre que identifica los datos que desea
        recibir, y lo envía a la red.
     2. Los routers de la red NDN reenvían este paquete Interest hacia algún nodo que contenga
        una copia del dato nombrado, esto es, hacia algún productor (o productores) de los datos.
        Para ello se basarán en el nombre especificado en el paquete.
     3. Cuando el productor, o los productores, reciban el Interest, responderán con un paquete
        Data: este tendrá el nombre y contenido correspondientes, y estará firmado con la clave
        de la fuente original del dato. Este paquete llegará de vuelta al consumidor siguiendo el
        camino inverso del Interest que lo generó.

Para comprender mejor el protocolo NDN, su funcionamiento y ventajas, se incluye en el Anexo
1 una explicación más extensa de los conceptos relevantes sobre la entrega de los datos, el
encaminamiento de los paquetes y los elementos concretos que conforman su arquitectura.

3
 Aunque el canal punto a multipunto también existe en IP, el modelo punto a punto es claramente
predominante.

                                                  4
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de            Grado en Ingeniería de Mención:
                                          Ingeniería de         Tecnologías de         Telemática
                                                                Telecomunicación
                                          Telecomunicación

3.2. Estado del arte: aplicaciones y avances

Los avances conseguidos desde la aparición de NDN son prometedores. En primer lugar, se ha
logrado tener una especificación del protocolo disponible para todos los usuarios. En ella se
encuentran estandarizados los formatos de los paquetes Interest y Data [5], así como la
descripción de las funcionalidades soportadas por este protocolo de red [6]. Además, se dispone
de librerías para desarrollar aplicaciones usando aspectos claves del protocolo como el
nombramiento de los paquetes, su reenvío y enrutado, o la gestión de confianza.

Con todo ello, ya se han implementado y probado diversas aplicaciones funcionales. Gracias a
ellas, se ha conseguido verificar y validar ciertas ventajas de la arquitectura NDN, ilustrando así
tanto sus beneficios como los retos que aún quedan por cumplir. Entre las múltiples aplicaciones
desarrolladas en estos años, por las mejoras que evidencian, se destacan las siguientes:
    • NDNVideo [7]: ha demostrado la capacidad de reproducir un streaming de vídeo HD en
         directo a través de NDN. Con esto se ilustraron los beneficios de NDN de cara a la
         distribución de contenidos multimedia. Por ejemplo, reflejó que:
              o El almacenamiento en red elimina la necesidad de una comunicación directa entre
                  productor y consumidor, lo que supone una mejora considerable en cuanto a la
                  escalabilidad de este tipo de aplicaciones.
              o El diseño del espacio de nombres, marcado por la aplicación, ofrece soporte para
                  la selección de fragmentos del vídeo y su reagrupación.
    • ChronoChat [8]: consiste en una aplicación de chat multiusuario en tiempo real. Su
         funcionamiento ha permitido constatar avances en cuanto a técnicas de sincronización de
         datos y modelos de confianza no jerárquicos.
    • Ndnrtc [9]: se trata de una aplicación de videoconferencia, por lo que se sitúa en el mismo
         marco que la aplicación anterior. En este caso, su desarrollo permitió investigar varios
         aspectos de las comunicaciones en tiempo real, como el control de la congestión, la
         adaptación de tasa y la sincronización.
    • Aplicaciones relacionadas con la automatización y gestión de edificios [10]: mediante
         este tipo de aplicaciones se han explorado requisitos específicos en cuanto al diseño de
         los espacios de nombres y del almacenamiento en redes extensas y heterogéneas de
         sensores y otros dispositivos. En particular, trataron de dar soporte a la necesidad
         prioritaria de estas aplicaciones de centrarse en la recopilación y agregación de datos.
    • Interconexión de vehículos [11]: el desarrollo de esta clase de aplicaciones ha mostrado
         las ventajas de NDN en cuanto a la recuperación de contenido en base a la localización.
         Además, han permitido diseñar también nuevos modelos de confianza con la finalidad de
         ajustarlos a comunicaciones ad-hoc y oportunistas.
    • Cabe mencionar que hay muchas más aplicaciones que han supuesto progresos en la
         evolución de NDN, más allá de las ya mencionadas: sistemas de archivos distribuidos,
         juegos multiusuario, herramientas de gestión de red, aplicaciones para la salud…

Esta variedad de aplicaciones resalta las principales características que hacen de NDN una
arquitectura ideal para el futuro de las comunicaciones: la distribución de contenido,
nombramiento amigable ajustado a las necesidades de cada aplicación, seguridad robusta y
soporte para movilidad y broadcast.

Así mismo, se ha apostado por incentivar el desarrollo por parte de los usuarios de más
aplicaciones que sigan demostrando la capacidad de este protocolo para resolver problemas reales.
Con esta motivación, tal y como ya se esbozaba, hay disponibles una serie de herramientas para
que todo usuario pueda colaborar en dicha tarea. Todas ellas conforman la plataforma NDN,
integrada por un conjunto de paquetes software que implementan los componentes críticos de la

                                                5
Transporte de tráfico IP sobre redes basadas en contenido Marielena Márquez Barreiro
Escuela de            Grado en Ingeniería de Mención:
                                            Ingeniería de         Tecnologías de         Telemática
                                                                  Telecomunicación
                                            Telecomunicación

arquitectura. El conjunto de estas herramientas permite construir y probar redes NDN y
aplicaciones, destacando las siguientes:
    • NDN Forwarding Daemon (NFD) [2]: se trata de uno de los componentes del núcleo de
        la plataforma NDN, que permite experimentar con diferentes elementos del protocolo de
        forma modular y extensible. Ofrece soporte para el reenvío de paquetes NDN gracias a
        sus principales módulos:
             o Núcleo: incluye rutinas de computación hash, ficheros de configuración,
                 monitorización de interfaces, etc.
             o Interfaces: se implementa una abstracción de interfaces NDN sobre mecanismos
                 de transporte de más bajo nivel.
             o Tablas: estructuras de datos necesarias para permitir el reenvío de los paquetes
                 NDN, como son la Content Store (CS), la Pending Interest Table (PIT) y la
                 Forwarding Information Base (FIB). La funcionalidad y descripción de cada una
                 se encuentra detallada en el Anexo 1.
             o Reenvío: implementa los procedimientos para el procesado de paquetes NDN a
                 partir de la interacción entre interfaces, tablas y distintas estrategias de reenvío.
             o Protocolo de control NFD [12]: permite a usuarios, herramientas y programas del
                 plano de control recuperar, monitorizar y alterar el estado del NFD forwarder.
                 Para conseguirlo, utiliza el intercambio de paquetes Interest-Data entre las
                 aplicaciones y el NFD.
             o Control de la RIB (Routing Information Base), cuya descripción se encuentra
                 también en el Anexo 1.
    • Librería ndn-cxx [3]: software desarrollado para implementar las primitivas NDN en
        C++. Es la herramienta principal para que los usuarios puedan escribir y desarrollar
        nuevas aplicaciones.
    • ndnSIM [13]: simulador que permite evaluar el rendimiento de sistemas NDN en redes
        de gran tamaño. También proporciona medios para analizar el comportamiento de los
        componentes de su arquitectura y el flujo del tráfico.

Existe, ligado a todas estas herramientas, un banco de pruebas NDN en funcionamiento, el cual
interconecta routers programables de todas las instituciones participantes en el proyecto. Su
finalidad es la de evaluar tanto las aplicaciones como los componentes del núcleo de la
arquitectura. Consiste, por lo tanto, en un recurso compartido con propósitos de investigación que
acepta solicitudes de sitios externos para conectarse a él.

Como ya se apuntaba con anterioridad, todas estas aplicaciones y herramientas manifiestan el
auge de este novedoso protocolo de red. Sin embargo, la búsqueda de herramientas que faciliten
la posible futura etapa de transición entre TCP/IP y NDN ha resultado ser muy poco fructífera.
Sorprendentemente, los planteamientos de sistemas o herramientas que permitan transportar
datagramas IP sobre redes NDN son prácticamente inexistentes. A nivel formal, solo se ha
encontrado una propuesta enfocada a resolver el problema descrito [14]: evitar la problemática de
migrar el código original de aplicaciones basadas en TCP/IP a NDN. Es por este motivo que el
objeto de este Trabajo Fin de Grado cobra aún más relevancia.

4. Metodología y desarrollo
El desarrollo de este proyecto ha tenido dos vertientes claramente diferenciadas, tal y como ya se
apuntaba anteriormente: una vertiente teórica y otra práctica.

La primera etapa consistió únicamente en un ejercicio de investigación, tratándose, por lo tanto,
de un trabajo completamente teórico. En ella se hizo un aprendizaje exhaustivo sobre los
principales conceptos relacionados con la arquitectura NDN. De esta forma se consiguió adquirir

                                                  6
Escuela de              Grado en Ingeniería de Mención:
                                            Ingeniería de           Tecnologías de         Telemática
                                                                    Telecomunicación
                                            Telecomunicación

conocimientos acerca del protocolo, sus principios de diseño y elementos principales, su
funcionamiento y las herramientas y aplicaciones disponibles para trabajar con él. Esta base
teórica permitió pasar a una segunda etapa de desarrollo más práctica.

Este segundo período del proyecto estuvo centrado en familiarizarse con las herramientas que
componen la plataforma NDN, ya mencionadas en el apartado 3.2 de este documento. En
particular, se llevó a cabo, haciendo uso de la documentación oficial de NDN, la instalación del
software necesario, la configuración del entorno de desarrollo y la implementación de sencillas
aplicaciones de prueba para experimentar con las librerías del protocolo.

Una vez alcanzado cierto grado de soltura con estas herramientas, se pasó a la última, y más
importante, etapa de desarrollo. El trabajo consistió en el diseño de un protocolo que permitiese
transportar los paquetes IP sobre la red NDN configurada, comenzando así a implementar la
pasarela IP-NDN. Fue también en esta etapa final, cuando el código desarrollado ya era funcional,
que se desarrolló el escenario de pruebas para validar el funcionamiento del sistema. En dicho
escenario se realizaron múltiples ensayos hasta conseguir que la pasarela funcionara exitosamente
y, tras evaluar los resultados obtenidos, se propuso una optimización del protocolo inicial con el
propósito de mejorar su rendimiento. Tras implementar dicha mejora en el sistema se repitieron
las pruebas realizadas en el escenario desarrollado. De esta forma, se pudo concluir el proyecto
con un análisis comparativo de ambas versiones, el cual demuestra la operación satisfactoria de
la pasarela con unas prestaciones que cumplen (o incluso superan) los objetivos marcados
inicialmente.

4.1. Escenario desarrollado

En la Figura 3 se ilustra el escenario sobre el que la pasarela IP-NDN presentada en este proyecto
ha sido implementada y probada. La topología se compone de dos subredes IP independientes
(subred A a la izquierda y subred B a la derecha), las cuales están interconectadas por un núcleo
de routers que implementan NDN como protocolo de red (equipos centrales). En concreto, los
dos equipos situados en la frontera de dicho núcleo son los que ejecutan el código de la
herramienta implementada y, por este motivo, son los que ejercen el rol de gateways. Estos dos
routers son la clave para conseguir que los equipos situados en las subredes IP, que no soportan
NDN, se comuniquen. Esto es, los paquetes enviados por estos terminales atraviesan el núcleo
NDN de forma transparente para ellos gracias a nuestra pasarela implementada en los dos
gateways. El gateway situado en la frontera con la subred IP A se identifica como nodoA, mientras
que el que interconecta el núcleo NDN con la subred IP B se identifica como nodoB. El nodoA
ejerce el rol de productor para el prefijo /mired/nodoA, esto es, es el encargado de producir los
datos NDN correspondientes con los datagramas IP generados por la subred A. Por su parte, el
nodoB hace lo mismo para el prefijo /mired/nodoB.

                        Figura 3: Escenario de desarrollo de la pasarela IP-NDN

                                                  7
Escuela de             Grado en Ingeniería de Mención:
                                             Ingeniería de          Tecnologías de         Telemática
                                                                    Telecomunicación
                                             Telecomunicación

El software que se ejecuta en cada gateway dispone de una tabla de encaminamiento conformada
por duplas de gateways NDN y direcciones de subredes IP. Esta información permite conocer qué
subred IP es alcanzable por cada gateway del núcleo, ejerciendo el rol de productor de un prefijo
NDN concreto. Esto es, las entradas de esta tabla establecen hacia qué gateway debe reenviarse
un paquete IP capturado según la dirección IP destino de este, listando el identificador de dicho
gateway destino. Estos pares subred IP-nodo NDN serán conocidos por todos los gateways del
núcleo. Inicialmente, por simplicidad, esta tabla de encaminamiento es cargada directamente por
cada gateway a partir de un fichero local de configuración durante su inicialización.

4.2. Instalación y configuración del escenario

Para completar la creación del escenario mostrado, ha sido necesario instalar y configurar un
entorno virtual de desarrollo. Todos los equipos presentes en él son emulados con máquinas
virtuales que tienen Ubuntu 20.04 como sistema operativo. A continuación, se lista el software
particular y más relevante que ha sido instalado y configurado en los tres equipos que integran el
núcleo de la red NDN:
    • La librería ndn-cxx y sus prerrequisitos, tal y como se describe en la documentación
         oficial de NDN, en el apartado Getting started with ndn-cxx [3].
    • El Named Data Networking Forwarding Daemon (NFD), siguiendo también las
         indicaciones especificadas en la documentación oficial de NDN, en el apartado Getting
         started with NFD [15].
    • La colección de herramientas esenciales proporcionadas por NDN, las ndn-tools [16]. En
         ella se incluyen herramientas de utilidad para el desarrollo de la pasarela IP-NDN, como
         son el ndnping, que permite probar el alcance entre dos nodos NDN, o el dissect-
         wireshark, una extensión del programa Wireshark para inspeccionar paquetes NDN.

Una vez instalado todo el software anterior en las máquinas virtuales, ya es posible lanzar el NFD
y conectarse a nodos NDN pertenecientes al banco de pruebas NDN. Con esto queda asegurada
la correcta instalación y configuración de nuestro router NDN [17]. Este proceso se realiza en
una única máquina virtual para, posteriormente, clonarla y replicar así la instalación y
configuración en los otros dos routers que implementan NDN, presentes en el escenario. En
cambio, las dos máquinas que representan equipos legacy 4 en el escenario, situadas en las
respectivas subredes IP, no constan del software desglosado: son simples máquinas virtuales con
Ubuntu 20.04 que implementan la típica arquitectura TCP/IP. La simulación y puesta en marcha
del escenario completo, integrado por estos cinco equipos configurados y conectados, ha sido
llevada a cabo en el emulador software de red GNS3 (Graphical Network Simulator-3).

Para proporcionar la conectividad entre los equipos de la red NDN se consideraron varias
tecnologías de enlace diferentes, con las que se pudo experimentar utilizando comandos de la guía
del NFD (disponibles en el apartado Manpages de la documentación oficial [15]):
    • El empleo directo de Ethernet como faz 5 de NDN, tanto empleando multicast como
        añadiendo una faz unicast con las direcciones MAC correspondientes.
    • El empleo del soporte IPv6.
    • La configuración de IPv4 para usar interfaces udp4 multicast o para crear interfaces punto
        a punto.

4
  Término empleado, en este contexto, para referirse a equipos que solamente implementan la arquitectura
TCP/IP y no soportan NDN.
5
  Generalización del concepto interfaz de red usado en la arquitectura de red actual. El término faz hace
referencia a una abstracción de cualquier canal de comunicación que el NFD pueda usar para el reenvío de
paquetes NDN, ya que el intercambio de paquetes no solo se lleva a cabo sobre interfaces físicas de red
sino que puede darse también entre aplicaciones en la misma máquina directamente.

                                                   8
Escuela de               Grado en Ingeniería de Mención:
                                             Ingeniería de            Tecnologías de         Telemática
                                                                      Telecomunicación
                                             Telecomunicación

Con cada una de estas alternativas de configuración de la red se consiguió conectividad entre los
nodos NDN, demostrada utilizando la herramienta ndnping. El proceso de configuración y
pruebas específicas realizadas en este punto del proyecto se presenta detallado en el Anexo 2. De
entre las alternativas descritas en este anexo, en el escenario de desarrollo del sistema final
implementado se optó por emplear IPv4 con rutas configuradas sobre faces UDP multicast. El
principal motivo de esta decisión fue la sencilla configuración que implicaba, si bien el resultado
final no depende en absoluto de la tecnología de enlace empleada.

Finalmente, con todo este procedimiento completado, era necesario familiarizarse con la API de
la librería ndn-cxx [18] antes de comenzar a desarrollar el código de la pasarela IP-NDN con ella.
Con este propósito, se creó una aplicación de comunicación básica sobre NDN. Esta aplicación
consiste en un módulo productor y otro consumidor simples, en el que el paquete Data transmitido
contiene la hora actual. A pesar de su sencillez, sirvió para demostrar el correcto funcionamiento
de la configuración definitiva de la red.

En resumen, para el desarrollo de la pasarela IP-NDN, se añade en el nodoA una ruta con el prefijo
/mired/nodoB hacia la faz udp4 multicast asociada al enlace que lo conecta al núcleo. 6
Análogamente, se añade una ruta en el nodoB con el prefijo /mired/nodoA. Es sólo en el nodo
intermedio del núcleo NDN donde es necesario tener añadidas dos rutas, una hacia cada prefijo
respectivamente. A modo de ejemplo, la Figura 4 muestra estas dos rutas añadidas en el nodo
intermedio del escenario desarrollado, mientras que en la Figura 5 se ven listadas las faces
disponibles en dicho equipo (marcadas en rojo las empleadas para crear esas dos rutas).

                       Figura 4: Rutas añadidas en el nodo intermedio de la red NDN

                      Figura 5: Faces disponibles en el nodo intermedio de la red NDN

6
 El comando empleado para ejecutar esta acción es: nfdc route add prefix  nexthop

                                                    9
Escuela de            Grado en Ingeniería de Mención:
                                          Ingeniería de         Tecnologías de         Telemática
                                                                Telecomunicación
                                          Telecomunicación

4.3. Captura y procesado de paquetes IP

Tal y como se ha señalado a lo largo de este documento, el objeto central de este Trabajo Fin de
Grado ha sido el desarrollo de una herramienta que permita transportar paquetes IP sobre una red
NDN. Para alcanzar dicho objetivo, además de la configuración del escenario descrita en el
apartado anterior y de la implementación del propio algoritmo que ofrece esta funcionalidad
(expuesta en los siguientes apartados), ha sido fundamental el desarrollo de un módulo de captura
del tráfico. Este módulo es imprescindible para el funcionamiento de la pasarela: los gateways
necesitan capturar y procesar los paquetes provenientes de la subred IP a la que estén conectados,
antes de aplicar el protocolo que permita a cada uno de ellos atravesar la red NDN.

A la hora de decidir qué herramienta emplear para llevar a cabo este proceso de captura y
procesado, se ha tenido en cuenta que la librería ndn-cxx está implementada en C++ y, por lo
tanto, sería este el lenguaje de implementación de la pasarela IP-NDN. Por este motivo, la
herramienta empleada finalmente ha sido libpcap, la implementación para entornos UNIX de la
librería PCAP [19]. La documentación y ejemplos proporcionados por esta librería vienen
enfocados al desarrollo en lenguaje C y, gracias a esto, su uso en este sistema es compatible con
la programación usando ndn-cxx. Además, escribir este proceso en código C ofrece las ventajas
características de este lenguaje, como es su eficiencia para el trabajo en tiempo real.

En cada gateway, durante su inicialización, se realiza la configuración de la interfaz de la que se
desea capturar el tráfico, la cual lo conecta a la subred IP correspondiente. Esta configuración
sigue el proceso descrito a continuación e ilustrado en el diagrama izquierdo de la Figura 6:
    1. Se buscan las interfaces del equipo disponibles para abrir una captura, empleando el
         método pcap_findalldevs.
    2. Las interfaces encontradas se listan de forma numerada, mostrando el nombre y subred a
         la que pertenece cada una.
    3. El usuario introduce el número de la interfaz escogida y, automáticamente, se asigna un
         método gestor de la captura en modo promiscuo con la llamada a pcap_open_live.
    4. A este se le aplica un filtro que restringe la captura a paquetes IP provenientes de la
         dirección y máscara de la subred seleccionada.

Tras la configuración de la interfaz, durante su inicialización, el gateway crea un proceso
(pcap_reader) que se queda, en bucle, esperando la llegada de paquetes a través de esta interfaz
y se ocupa de capturarlos. Su funcionamiento está representado en el diagrama derecho de la
Figura 6. La captura se inicia de forma no bloqueante, gracias a la llamada al método
pcap_setnonblock, y se detecta la llegada de cada paquete con el método pcap_next. Para cada
paquete capturado se lleva a cabo un procesado del mismo, distinguiéndose los siguientes pasos:
    1. Se asegura que el paquete capturado se trate de un paquete IP, para lo cual se analiza el
        campo tipo presente en la cabecera Ethernet del mismo.
    2. Se analiza el contenido de la cabecera IP del paquete para obtener, entre otros datos, su
        dirección IP destino y el protocolo encapsulado en el paquete (ICMP, UDP o TCP).
    3. Se obtiene también el tamaño del paquete IP capturado, analizando el campo longitud de
        su cabecera que indica el tamaño total en bytes del datagrama.

Una vez finalizado este primer procesado, y ya prescindiendo de la cabecera Ethernet, se pasa a
comprobar si la dirección IP destino del paquete es alcanzable por alguno de los gateways del
núcleo. Es decir, se busca una entrada coincidente con esta dirección en la tabla de
encaminamiento del gateway, descrita en el apartado 4.1, para enviar hacia el prefijo
correspondiente este paquete. Esta tarea ya es realizada por el proceso pcap_callback en el que,
en caso de encontrar una coincidencia, el gateway inicia el protocolo de actuación diseñado para
transportar paquetes IP sobre la red NDN. Con la invocación de este método, el proceso
pcap_reader vuelve al inicio de su bucle para esperar de nuevo la llegada de otro paquete IP.

                                                10
Escuela de               Grado en Ingeniería de Mención:
                                              Ingeniería de            Tecnologías de         Telemática
                                                                       Telecomunicación
                                              Telecomunicación

        Figura 6: Diagramas de flujo del proceso de configuración, captura y procesado de paquetes IP

4.4. Inyección en la red de paquetes IP

Después de aplicarse el protocolo que lleva un paquete IP desde su gateway origen hasta el
gateway conectado a su subred IP destino, este último router realiza el procedimiento oportuno
para extraer el paquete IP original del paquete Data recibido. Este procedimiento será explicado
en detalle en los apartados posteriores.

Una vez recuperado el datagrama original, este debe enviarse por la subred IP conectada al
gateway para que llegue a su destinatario final. La herramienta empleada para llevar a cabo esta
tarea es un socket RAW, el cual permite transmitir paquetes IP directamente, sin protocolo de
transporte y sin necesidad de especificar las cabeceras de nivel de enlace. Además, ofrece la
posibilidad de escribir manualmente la cabecera del datagrama enviado. Cabe mencionar que una
de las restricciones que implica su uso es la necesidad de contar con privilegios de superusuario.
En concreto, el socket RAW empleado en este sistema pertenece a la familia AF_INET,
caracterizado por delegar la construcción de las cabeceras de nivel de enlace en el propio sistema
operativo. Además, el campo protocolo especificado en la creación del socket es IPPROTO_RAW,
el cual implica que el buffer de la llamada al método sendto sobre el socket ya contiene la cabecera
IP. De esta manera, la dirección destino contenida en esta cabecera se usa para encaminar el
paquete.

                                                     11
Escuela de              Grado en Ingeniería de Mención:
                                             Ingeniería de           Tecnologías de         Telemática
                                                                     Telecomunicación
                                             Telecomunicación

4.5. Pasarela con protocolo básico

La parte fundamental de este proyecto es el diseño e implementación del protocolo de transporte
de paquetes IP sobre el núcleo de la red NDN. Este procedimiento se activa cuando, tras la captura
y procesado de un paquete IP (descrita en el apartado 4.3), se encuentra, en la tabla de
encaminamiento del gateway, una entrada coincidente con la dirección IP destino del paquete
capturado. Antes de presentar el protocolo diseñado, es importante resaltar que, recordando los
principios de NDN, un dato no puede ser transmitido directamente, sino que dicha transmisión
debe ser desencadenada por la recepción previa de un paquete Interest solicitándolo. Por este
motivo, un gateway nunca podrá enviar datos (un paquete IP en este caso) hacia otro gateway sin
antes recibir una solicitud de los mismos de alguna forma. Esto es, sin existir en la red un Interest
pendiente de satisfacer.7

Teniendo esto en mente, la primera versión del algoritmo consta de tres etapas diferenciadas,
llevadas a cabo individualmente para cada paquete capturado. Para poder explicarlas con mayor
claridad, se plantea una situación específica en el escenario: el equipo perteneciente a la subred
IP B (con dirección 1.2.3.6 y al que nos referiremos de ahora en adelante como hostB) envía un
paquete IP destinado al nodo situado en la subred IP A (con dirección 5.6.7.10 y al que nos
referiremos como hostA). Este caso puede generalizarse a cualquier equipo en una subred IP
enviando tráfico dirigido a otro equipo en una subred IP diferente. En el escenario propuesto, el
proceso llevado a cabo es el siguiente (ilustrado de forma concisa mediante el diagrama de
tiempos de la Figura 7):

                             Figura 7: Protocolo básico de la pasarela IP-NDN

7
  Existen algunas propuestas en la literatura que plantean la posibilidad de enviar datos en un paquete
Interest. A pesar de que ciertas redes ICN lo permiten, NDN no lo acepta: iría en contra de los principios
del propio protocolo.

                                                   12
Escuela de            Grado en Ingeniería de Mención:
                                                Ingeniería de         Tecnologías de         Telemática
                                                                      Telecomunicación
                                                Telecomunicación

       1. Tal y como ya se indicaba al final del apartado 4.3, el gateway nodoB, después de capturar
          y procesar el paquete procedente del hostB, ejecuta el proceso pcap_callback. En este
          punto, busca en su tabla de encaminamiento una coincidencia para la dirección 5.6.7.10.
          En ella encuentra una entrada asociando dicha dirección al gateway nodoA. Tras esto,
          procede a almacenar el paquete IP en su cola de paquetes pendientes por enviar,
          asignándole un número de secuencia que lo identifique unívocamente. Supongamos, por
          ejemplo, que este número es 3. Finalmente, para terminar la actividad del pcap_callback,
          el nodoB envía a la red NDN un Interest con el nombre /mired/nodoA/ip/request/nodoB/3.
          Generalizando, el nombre de los paquetes Interest enviados en este punto está formado
          por la concatenación de las cadenas del identificador del gateway destino del paquete
          (obtenido de la tabla de encaminamiento), /ip/request/ (ip actúa como identificador del
          proceso que actúa de pasarela y request especifica el comando para dicho proceso), el
          identificador del gateway origen del paquete8 y el número de secuencia con el que se
          almacenó el paquete (el parámetro necesario para el método request). A partir de ahora,
          nos referiremos a los paquetes enviados en este punto como Interests request.
       2. Todos los gateways, durante su inicialización, registran la faz que los conecta al núcleo
          NDN al prefijo /mired//ip/request. De esta forma, cuando
          reciben un paquete Interest con un nombre perteneciente a este prefijo, ejecutan una
          función callback registrada para gestionarla: onInterest_request. Gracias a esto, cuando
          el Interest enviado por el nodoB llega al nodoA (pues no hay ningún Data almacenado en
          los nodos intermedios que lo pueda satisfacer), este gateway ejecuta dicha función. Con
          su ejecución, se procesa el nombre del paquete recibido para extraer el identificador del
          gateway del que proviene y su correspondiente número de secuencia. Seguidamente, el
          nodoA genera un nuevo Interest con el nombre /mired/nodoB/ip/datagram/3 y lo envía a
          la red. A partir de ahora, para referirnos a estos paquetes Interests de respuesta,
          utilizaremos el término Interests datagram. Generalizando este caso particular, los
          Interest datagram se nombran concatenando el identificador del gateway que envió el
          Interest request y al que debe llegar este Interest datagram, /ip/datagram/ (ip vuelve a
          actuar como identificador del proceso que actúa de pasarela y datagram especifica el
          comando para dicho proceso) y el número de secuencia también extraído del Interest
          request recibido (el parámetro necesario para el método datagram). Este paquete actúa
          como un “permiso” concedido por el nodoA al nodoB para enviarle un datagrama IP.
          Además, a la hora de enviarlo, se le asocia otra función callback (onData), cuya ejecución
          será activada al recibirse el paquete Data asociado al Interest datagram enviado.
       3. Todos los gateways, también al inicializarse, registran la faz conectada al núcleo a otro
          prefijo NDN: /mired//ip/datagram. A este registro se le
          asocia otra función callback distinta para ejecutarse al recibirse un Interest de este prefijo:
          onInterest_datagram. En consecuencia, la recepción del Interest datagram enviado por
          el nodoA provoca la ejecución de esta función en el nodoB. En ella se comienza
          procesando el nombre en el paquete recibido con el propósito de extraer el número de
          secuencia incluido en él. Así, el gateway puede identificar el paquete IP para el que este
          Interest autoriza el envío y procede a recuperarlo de la cola de paquetes pendientes. Este
          paquete IP constituye el contenido del paquete Data que el nodoB envía en respuesta al
          Interest datagram recibido. Finalmente, una vez enviado el Data, el nodoB elimina el
          datagrama IP de su cola. Por su parte, cuando el nodoA recibe el Data, ejecuta el callback
          onData previamente mencionado: se extrae el contenido del Data, es decir, el paquete IP
          que transporta, y su tamaño. Una vez recuperado el datagrama, se procesa la cabecera IP
          que contiene con el propósito de conocer la dirección IP destino. En posesión de toda esta
          información, el nodoA envía, empleando el método sendto sobre el socket RAW, el
          paquete IP hacia su destino final, el hostA.

8
    El nombre identificativo del gateway se pasa como parámetro al lanzar la ejecución del sistema.

                                                     13
Escuela de            Grado en Ingeniería de Mención:
                                            Ingeniería de         Tecnologías de         Telemática
                                                                  Telecomunicación
                                            Telecomunicación

El funcionamiento completo del sistema ejecutado en cada gateway se describe con detalle en el
Anexo 3. En él se incluyen una serie de diagramas de actividad para ilustrar y explicar los procesos
concurrentes que actúan en estos equipos y que, en conjunto, hacen funcionar la pasarela de
manera exitosa. También en este Anexo se presenta la estructura del código implementado
mediante diagramas de clase.

4.6. Pasarela con protocolo mejorado

La pasarela IP-NDN, utilizando el protocolo descrito en el apartado anterior, se probó en el
escenario desarrollado. Las pruebas realizadas, explicadas con detalle en el próximo apartado,
demuestran que el sistema funciona correctamente empleando este protocolo básico. Sin
embargo, las prestaciones obtenidas con él no son satisfactorias: la tasa alcanzada es
excesivamente baja. Por este motivo, fue necesario implementar una nueva versión de la
herramienta, buscando mejorar su rendimiento. Se diseñó, con este propósito, una segunda
versión del protocolo de transporte de paquetes IP sobre el núcleo de la red NDN, el cual pretende
optimizar el envío de paquetes a través del núcleo.

En el protocolo básico, cada paquete Data enviado a la red NDN, una vez completado todo el
procedimiento definido en el apartado anterior, transporta únicamente un paquete IP. Esto es, el
protocolo de intercambio de paquetes NDN entre gateways se activa una vez por cada paquete IP
capturado. Esta es la razón por la cual la tasa obtenida con la primera versión del protocolo es tan
reducida: el transporte de cada paquete IP genera el envío de 3 paquetes sobre el núcleo. La
motivación del diseño de la nueva versión del protocolo fue, por un lado, evitar esta limitación y,
por otro lado, aprovecharse de la realidad de la gran mayoría de aplicaciones actuales: un
consumidor, por regla general, no solicita solamente un dato al servidor, sino que solicita
múltiples datos y de manera consecutiva. Este es claramente el caso de, por ejemplo, cualquier
aplicación que implica la reproducción de contenidos multimedia.

El principal cambio del protocolo mejorado con respecto al básico es que, con esta nueva versión,
cada paquete Data que atraviesa el núcleo NDN puede contener uno o varios paquetes IP. La
característica común de todos los datagramas transportados en el mismo Data es que su gateway
destino es el mismo. Precisamente por este motivo, existe un cambio radical en cuanto al
modelado del sistema. Mientras que en la primera versión de la pasarela IP-NDN cada gateway
mantenía una sola cola con todos los paquetes IP pendientes, en esta nueva versión, el gateway
mantiene una cola independiente por cada otro gateway del núcleo.9 Además, cada cola tiene su
propio número de secuencia para identificar unívocamente a los elementos que la integran. Estos
elementos ya no son paquetes IP individuales, sino que se trata de macro-paquetes. Este término
lo utilizaremos de ahora en adelante para referirnos a la concatenación de varios paquetes IP con
un mismo gateway destino. Así, con esta nueva versión, el contenido de cada paquete Data
enviado será un macro-paquete. Cada uno estará integrado por un número de paquetes IP variable,
condicionado por el tamaño de estos. Esta restricción viene dada por el propio NFD, ya que limita
la longitud máxima de los datos transportados en un paquete Data.

Para implementar este cambio conceptual en el protocolo, se realizaron numerosos cambios en la
implementación de la pasarela IP-NDN. Sin embargo, no fue necesario cambiar nada del
procedimiento ejecutado en cada gateway para la captura y procesado de paquetes IP entrantes.
Es decir, el proceso descrito en el apartado 4.3 se mantiene exactamente igual. Tampoco hay
variaciones en el intercambio de mensajes entre los gateways (Interest request, Interest datagram
y Data), a excepción de que el nombre de los paquetes Interest datagram incluye a mayores el
identificador del gateway que lo envía. Este parámetro, con la nueva versión, es necesario para

9
 El resto de gateways presentes en el núcleo se conocen gracias a la tabla de encaminamiento cargada en
cada gateway durante su inicialización.

                                                  14
Escuela de           Grado en Ingeniería de Mención:
                                          Ingeniería de        Tecnologías de         Telemática
                                                               Telecomunicación
                                          Telecomunicación

que el gateway que desea enviar el macro-paquete sepa de qué cola extraerlo. Esto se traduce en
que, ahora, el número de secuencia ya no basta para identificar un paquete pendiente en el
gateway, sino que se necesita conocer a mayores a qué cola pertenece.

Las modificaciones más significativas en cuanto a la operativa de la herramienta se reflejan en
los diagramas de actividad de la Figura 8. En concreto, el funcionamiento cambia a partir del
momento en el que el gateway, durante la ejecución del callback pcap_callback, comprueba su
tabla de encaminamiento y procede a almacenar el paquete. Ahora, la búsqueda de una entrada
coincidente en su tabla de encaminamiento, además de indicar si el destino es alcanzable a través
del núcleo y hacia qué gateway enviar (o no) el Interest request, permite conocer en qué cola se
debe almacenar este nuevo paquete IP. La lógica detrás del propio proceso de añadir el datagrama
a la cola correspondiente es mucho más complejo que en la versión básica de la pasarela. Antes
bastaba con generar un nuevo objeto de la clase Paquete_cola y añadirlo al map que modelaba la
cola del nodo, asociándole el número de secuencia correspondiente como identificador. Sin
embargo, ahora, las acciones del gateway a la hora de almacenar el datagrama capturado dependen
de su estado. Tal y como se muestra en el diagrama central de la Figura 8:
     1. Primero se comprueba si la cola para el gateway destino en cuestión está vacía, es decir,
         si no contiene ningún macro-paquete aún. Si lo está, se crea un nuevo macro-paquete con
         el datagrama, asignándole el número de secuencia que corresponda en ese momento.
     2. Si en la cola ya hay algún macro-paquete, se procede a comprobar si es viable concatenar
         el nuevo datagrama al último macro-paquete de la cola. Para que esto sea factible, deben
         darse dos condiciones. Por un lado, la suma de la longitud de dicho macro-paquete (la
         longitud del conjunto de paquetes IP que lo conforman) y la longitud del nuevo paquete
         IP, no puede superar el máximo impuesto para un paquete Data. A mayores, dicho macro-
         paquete no puede estar ya en proceso de ser enviado en un paquete Data. En caso de
         cumplirse ambas condiciones, el nuevo paquete IP se concatena al final de este último
         macro-paquete, sin necesidad de añadir uno nuevo a la cola.
     3. Por el contrario, si la suma anterior supera el tamaño máximo o si el último macro-
         paquete está siendo procesado para enviarse, se crea un nuevo macro-paquete con este
         datagrama. Se le asocia el número de secuencia siguiente al último empleado en su cola,
         actualizando así dicho contador para este gateway destino.

El resultado de la lógica anterior determina la respuesta a la cuestión fundamental de este nuevo
protocolo: ¿es necesario enviar un nuevo Interest request a la red? La respuesta es directa:
solamente es necesario si se generó un nuevo macro-paquete. Por el contrario, si el paquete IP
entrante se concatenó a un macro-paquete ya existente en la cola, el gateway sabe que
eventualmente recibirá el Interest datagram que le permitirá incluir este paquete IP en un Data.
Por lo tanto, no tiene necesidad de volver a solicitarlo con un nuevo Interest request, ahorrando
así el intercambio de 3 nuevos paquetes NDN en el núcleo.

Estas modificaciones a la hora de almacenar y gestionar los paquetes IP pendientes no se traducen
en cambios significativos en la forma de recuperarlos de la cola. El proceso es muy semejante a
la versión básica de la pasarela. Lo único que cambia es que, como ya se insinuaba previamente,
el gateway que recibe el Interest datagram no solo emplea el número de secuencia indicado, sino
que también debe saber a qué cola acudir según el gateway del que proviene el Interest. Pero el
sistema de búsqueda y recuperación es el mismo: el número de secuencia permite extraer
directamente el macro-paquete concreto de la cola, ya que sigue siendo modelada por un map.
Estos datos son directamente el contenido del Data que envía al gateway en respuesta.

                                               15
También puede leer