ES2848846T3 - Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones - Google Patents

Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones Download PDF

Info

Publication number
ES2848846T3
ES2848846T3 ES11785167T ES11785167T ES2848846T3 ES 2848846 T3 ES2848846 T3 ES 2848846T3 ES 11785167 T ES11785167 T ES 11785167T ES 11785167 T ES11785167 T ES 11785167T ES 2848846 T3 ES2848846 T3 ES 2848846T3
Authority
ES
Spain
Prior art keywords
buffer
descriptor
mapped
data
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES11785167T
Other languages
English (en)
Inventor
Mohammad R Khawer
Lina So
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alcatel Lucent SAS
Original Assignee
Alcatel Lucent SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alcatel Lucent SAS filed Critical Alcatel Lucent SAS
Application granted granted Critical
Publication of ES2848846T3 publication Critical patent/ES2848846T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

Un método implementado por ordenador para la administración del buffer para un procesador multi-núcleo para usarse en un módem en una red de telecomunicaciones, estando el método caracterizado por: para cada uno de una pluralidad de núcleos de procesamiento unidos al módem: recibir (420) un paquete de datos de IP de TCP o UDP (304); adquirir (430) un buffer mapeado de núcleo a espacio de usuario (KU) y descriptor de buffer mapeado K-U correspondiente (320), en el que el descriptor está asociado con un paquete de datos y es indicativo del buffer mapeado K-U; insertar (440) el paquete de datos en el buffer; e insertar (470) el descriptor de buffer en un buffer circular mapeado K-U; en el que el descriptor del buffer se crea: creando un descriptor del marco que contiene un puntero de buffer mapeado K-U adquirido correspondiente al buffer mapeado K-U; insertando el descriptor del marco en una cola de marco especificada por una regla dinámica que mapea direcciones de IP a las colas de marco; y creando el descriptor del buffer a partir del descriptor de marco.

Description

DESCRIPCIÓN
Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones
Antecedentes de la invención
Las realizaciones a modo de ejemplo de la invención se refieren a un esquema de mensajería de copia cero, de no bloqueo, y sin bloqueo para soporte de múltiples celdas en un tablero moderno individual usando un procesador multi-núcleo. Mientras que la invención se refiere particularmente a la técnica de telecomunicaciones inalámbricas, y se describirá, además, con referencia específica a éstas, se apreciará que la invención puede tener utilidad en otros campos y otras aplicaciones.
A modo de antecedente, LTE (Evolución a Largo Plazo) es un proyecto 3GPP que evoluciona rápido que se orienta a mejorar el estándar de telefonía móvil UMTS (Sistema Universal de Telefonía Móvil) para abarcar las demandas futuras en las redes de comunicaciones. LTE mejora la eficiencia y el ancho de banda de las redes inalámbricas, reduce los costos y mejora la experiencia del servicio. Específicamente, la LTE hace uso de nuevas oportunidades de espectro y ofrece mejor integración con otros estándares abiertos. La LTE generalmente incluye RAN LTE (Red de Acceso por Radio) (también conocida como EUTRAN) junto con un EPS (Sistema de Paquete Evolucionado, también llamado Núcleo de Paquete Evolucionado).
Los sistemas de comunicaciones generalmente se dividen en dos funciones primarias: las funciones del plano de datos y las funciones del plano de control. En los productos de LTE anteriores, se usan al menos dos procesadores en el tablero moderno: uno para soportar las funciones del plano de control (tiempo no real, por ej., Operaciones, Administración y Manejo (u OA&M), y funcionalidades relacionadas con el manejo de procesamiento de llamadas), y otro para terminar y soportar las funciones del plano de datos (tiempo real, por ej., procesamiento de la capa de LTE 2). Tanto los planos de control como de datos utilizan diferentes instancias del sistema operativo (OS), tales como Linux para el plano de control y un OS en tiempo real tal como vXWorks (fabricado y vendido por Wind River Systems de Alameda, California) para el núcleo en plano de datos. Normalmente, un tablero moderno soporta un sector o celda. Así para soportar configuraciones de múltiples celdas (por ej., 3 celdas o 6 celdas) sería necesario proporcionar tantos tableros modernos como número de celdas.
Un procesador multi-núcleo puede usarse en una estación base LTE inalámbrica en un tablero moderno. Un sistema operativo tal como SMP Linux con un parche PREEMPT_RT puede ejecutarse en una partición SMP que contiene los ocho núcleos. En esta configuración el plano de control (hilos/procesos en tiempo no real) y el plano de datos (hilos/procesos en tiempo real) comparten las mismas instancias del sistema operativo aunque se unen para ejecutarse en diferentes núcleos. El uso del paquete de protocolos Linux para enviar/recibir paquetes TCP/UDP de los procesos/hilos en tiempo real, tales como el planificador LTE L2 ejecutado en el núcleo de plano de datos, puede producir picos de latencia ilimitados que pueden discontinuar el procesamiento del planificador LTE L2. Esto se debe al hecho de que el paquete de protocolos Linux no está diseñado para ser sin bloqueo, y dado que también es usado por los procesos/hilos en tiempo no real tales como OAM, y CALLP ejecutados en el núcleo del plano de control.
En un entorno SMP, un bloqueo tomado por un proceso o hilo en tiempo no real en un núcleo (tal como se encuentra en el plano de control) puede hacer que el pico de latencia para un hilo o proceso en tiempo real espere que el bloqueo se libere en un núcleo diferente (tal como se encuentra en el plano de datos). De este modo, existe una necesidad de lograr un esquema de mensajería de no bloqueo, copia cero, sin bloqueo que no use el paquete de Protocolos Linux para la trayectoria de datos rápidos en el núcleo del plano de datos para satisfacer las necesidades de rendimiento del tablero moderno basado en un procesador multi-núcleo que usa una partición. Sin dicho esquema, el sistema puede estar sujeto a picos de latencia ilimitados que podrían descomponer el sistema entero, especialmente con respecto al procesamiento del planificador LTE L2.
El documento US 2008/276056 A1 divulga un sistema de comunicaciones de poner en cola y eliminar de cola de punto a punto que usa un método de gestión de buffer para un procesador multi-núcleo en el que un buffer se adquiere en la memoria compartida entre el núcleo y el espacio de usuario. El buffer puede contener una cola de marco que puede guardar los datos recibidos de la red y al que se accede usando dos punteros - un puntero delantero para apuntar a la ubicación de la memoria más vieja donde los datos están escritos, y un puntero de cola para apuntar a la ubicación de la memoria más vieja donde los datos se leyeron.
El documento WO 2005/098623 A2 divulga un planificador basado en requisitos previos que tiene en cuenta los requisitos previos de recursos del sistema para ejecución.
Sumario de la invención
La invención se define en las reivindicaciones adjuntas. En la siguiente descripción, el término "realización" debe comprenderse como que significa un "ejemplo" siempre que se refiere a materia no cubierta por las reivindicaciones.
En un ejemplo, se proporciona un método implementado por ordenador para mensajería con copia de datos cero, de no bloqueo en un procesador multi-núcleo. El método incluye, para cada uno de una pluralidad de núcleos, adquirir un núcleo para el buffer de mapeo de usuario-espacio (K-U) y el correspondiente descriptor del buffer, insertar un paquete de datos en el buffer; e insertar el descriptor del buffer en un buffer circular.
En un ejemplo, se proporciona un aparato para proporcionar acceso de copia cero, de no bloqueo a buffers entre procesos usuario-espacio y procesos de espacio del núcleo. El aparato incluye un tablero moderno, un procesador multi-núcleo que tiene una pluralidad de núcleos de procesador unidos al tablero moderno. El tablero moderno incluye el espacio del núcleo, espacio de usuario y un buffer circular para cada núcleo del procesador adaptado para almacenar el espacio del núcleo a descriptores del buffer mapeado en espacio de usuario (K-U).
En un ejemplo, se proporciona un portador de datos permanentes usable por computadora que almacena instrucciones que hacen que una computadora adquiera, para cada uno de una pluralidad de núcleos de procesamiento, un buffer circular para almacenar descriptores de buffer. Los descriptores del buffer almacenados en un buffer circular contienen información sobre los buffers que se mapean del espacio de núcleo al espacio de usuario (K-U). Las instrucciones también hacen que el ordenador realice lo siguiente usando uno o más hilos del espacio del núcleo en conjunción con uno o más componentes de hardware: recibir un paquete de datos en una interfaz de Ethernet, adquirir un buffer mapeado K-U y el puntero correspondiente, insertar el paquete de datos recibido en un buffer mapeado K-U, poner en cola un descriptor de marco que comprende el puntero del buffer mapeado K-U que contiene el paquete de datos en una cola de marco, y después de que el paquete de datos llega delante de la cola de datos, generar una señal de interrupción que invoca un proceso que crea un descriptor de buffer del descriptor de marco. El descriptor de buffer asociado con el paquete de datos se inserta luego en el buffer circular especificado de acuerdo con la cola del marco para el mapeo del buffer circular.
El alcance adicional de aplicabilidad de la presente realización a modo de ejemplo resultará evidente a partir de la descripción detallada proporcionada a continuación. Debe entenderse, sin embargo, que la descripción detallada y los ejemplos preferidos, mientras que indican formas de realización específicas de la invención, se dan únicamente a modo ilustrativo, ya que varios cambios y varias modificaciones dentro del alcance de la invención resultarán evidentes para aquellas personas con experiencia en la técnica.
DESCRIPCIÓN DE LAS FIGURAS
La presente invención existe en la construcción, la gestión y la combinación de las varias partes del dispositivo, y los pasos del método, por lo cual los objetivos contemplados se logran como se establece más completamente de aquí en adelante, como se menciona específicamente en las reivindicaciones, y se ilustra en los dibujos que se incluyen, en los que:
La FIG. 1 ilustra una realización de una arquitectura de plataforma de acuerdo con los aspectos de la presente invención; La FIG. 2 ilustra una arquitectura a modo de ejemplo para implementar la capa de abstracción de núcleo que se muestra en la FIG. 1;
La FIG. 3 ilustra un sistema basado en BED DPAA para proporcionar el flujo de datos de ingreso de los paquetes de datos; La FIG. 4 representa una descripción de alto nivel del flujo de proceso con respecto a un paquete de datos entrantes; La FIG. 5 ilustra un sistema basado en BED DPAA para proporcionar el flujo de datos de egreso de los paquetes de datos; y
La FIG. 6 representa una descripción de alto nivel del flujo de proceso con respecto a un paquete de datos salientes (de egreso).
DESCRIPCIÓN DETALLADA
Ahora con referencia a los dibujos en los que lo que se muestra es para fines ilustrativos de las reivindicaciones solamente y no para fines de limitación del asunto reivindicado, la FIG. 1 proporciona una vista de un sistema en el que pueden incorporarse las realizaciones actualmente descritas.
Con referencia ahora a la FIG. 1, se muestra una arquitectura de plataforma 100 a modo de ejemplo. La arquitectura generalmente se usa en un tablero moderno, pero debe comprenderse que puede usarse en otras aplicaciones. En esta realización, una partición se define con los ocho núcleos presentes en ella. Se apreciará, sin embargo, que el procesador multi-núcleo 100 puede tener cualquier número de núcleos. Con esta realización, es posible de este modo usar una instancia del sistema operativo (OS) multiprocesamiento simétrico (SMP) individual 102 que corre en la totalidad de los núcleos (por ej., ocho núcleos). Dado que los planes de control y datos están bajo una instancia del OS, generalmente se requiere cuidado para asegurar que un problema con los datos de control no degrade también el plano de control.
En este ejemplo, el procesador multi-núcleo 100 sirve a tres celdas (mostradas como 104, 106 y 108 en la figura). Cada celda requiere un planificador de enlace ascendente (UL) (mostrado como 110, 112, y 114 en la figura) y un planificador de enlace descendente (DL) (mostrado como 116, 118, y 120 en la FIG. 1).
Se sabe que la capa de Control de Enlace de Radio (RLC) se usa para segmentar, concatenar y corregir errores en marcos de paquetes enviados y recibidos a través de la interfaz de aire LTE. El software de Control de Enlace de Radio y el Control de Acceso a Medios (RLC/MAC) se usa en el grupo inalámbrico GPRS (2.5G). Proporciona transferencia de datos reconocidos y no reconocidos entre la estación móvil y el controlador de la estación base (BSC). De este modo, también incluye un bloque de RLC/MAC 122, que es la unidad de transporte básico en la interfaz de aire que se usa entre el móvil y la red. El bloque RLC/MAC 122 se usa para transportar datos y señalización de RLC/MAC.
El procesador multi-núcleo 100 también proporciona Operaciones, Administración y Gestión (OA&M) 124 y un módulo CALLLP 126 que proporciona servicios de gestión de llamados en tiempo no real.
Además, el procesador multi-núcleo 100 incluye una capa de abstracción (CAL) 128, que esconde los detalles específicos del núcleo del software de aplicación de la Capa 2 (L2). La Capa 2 es la Capa de Enlace de Datos del modelo OSI de siete capas de las redes informáticas. La Capa de Enlace de Datos es la capa del protocolo que transfiere datos entre nodos adyacentes de la red en una red de área amplia o entre nodos en el mismo segmento de la red de área local. La Capa de Enlace de Datos proporciona medios funcionales y de procedimientos para trasferir datos entre entidades de la red y podría proporcionar los medios para detectar y posiblemente corregir errores que pueden ocurrir en la Capa Física. Los ejemplos de protocolos de enlaces de datos son Ethernet para redes de área local (multi-nodo), el Protocolo Punto a Punto (PPP), HDLC y ADCCP para conexiones punto a punto (nodo dual). En este caso, L2 generalmente se refiere al procesamiento del planificador l2 que se necesita para la interfaz de aire LTE, que tiene requerimientos en tiempo real muy ajustados.
Para cumplir con las necesidades de rendimiento en tiempo real de la estación base, que es responsable de manejar el tráfico y la señalización entre el dispositivo de comunicación móvil y el sub-sistema de conmutación de red, se puede usar un OS tal como SMP Linux con parche PREEMPT_RT. Por supuesto, se comprenderá que pueden usarse otros sistemas operativos. Se elige un OS de fuente abierta tal como SMP Linux con Preempt_RT sobre un OS en tiempo real de núcleo de avanzada tal como vxWorks dado que vxWorks tiene aranceles de licencia muy elevados para su uso. Para lograr el comportamiento determinista en dicha configuración de SMP, el sistema se implementa preferentemente de una manera que emplea construcciones de reserva del núcleo y afinidad del núcleo para lograr un comportamiento de sistema AMP. Esto también es deseable para lograr el mejor rendimiento de SMP Linux con OS PREEMPT_RO, por ejemplo. El uso de servicios de copia cero de no bloqueo, tales como servicios de gestión del buffer y mensajería, también puede ayudar a abordar los temas de latencia que pueden aparecer por el uso de SMP Linux con Os PREEm PT_RT.
Una de las funciones principales de la capa de abstracción del núcleo (128) como se muestra en la FIG. 1 es proporcionar aplicaciones del más alto nivel tales como procesamiento L2, con diversos servicios que utilizan capacidades completas de la plataforma multi-núcleo. La capa de abstracción del núcleo está diseñada de este modo para lograr varios objetivos. Primero, debe soportar una Interfaz BED (Unidad de Ethernet de Plano Posterior) basada en DPAA, mientras que esconde la implementación de DPAA y específica de multi-núcleo a partir de un software de aplicación a nivel superior (es decir, software L2). Segundo, debe utilizar componentes de hardware DPAA P4080 para proporcionar una trayectoria de datos acelerados para datos en el plano de usuario en ambas direcciones de ingreso y egreso. Tercero, debe proporcionar tanta flexibilidad como sea posible para adaptarse fácilmente a los cambios en configuración (es decir, sin requerir cambios en el código). Un ejemplo de la configuración CAL es una configuración de recursos DPAA para grupos de buffer, colas del margo de ingreso, y colas del marco de egreso.
Para resumir, una implementación de la presente invención usa la totalidad de los núcleos del procesador en una partición. Esto requerirá el uso de solamente una instancia del OS, y no necesita usar un hipervisor. Dado que puede ser difícil para el Linux simple cumplir con todas las necesidades de procesamiento en tiempo real, se prefiere un OS tal como SMP Linux con parche PREEMPT_RT. Un OS de recurso abierto también se usa para reducir el costo. El sistema incorpora además capacidades de afinidad del núcleo y reserva de la CPU para SMP Linux para definir un comportamiento del sistema similar a AMP dentro de la configuración SMP, lo que permite configuraciones de 6 celdas o incluso 9 celdas. Debido a que la instancia del OS se comparte entre núcleos en tiempo no real (tales como el plano de control) y núcleos en tiempo real (tales como los planos de datos), surgen los problemas cuando se toma un bloqueo de parte de un hilo/proceso en tiempo no real que causa una demora para un hilo/proceso en tiempo real ya que el hilo/proceso en tiempo real tiene que esperar para la liberación del bloqueo para el(los) núcleos en el plano de datos. Dado que el paquete de protocolos Linux no garantiza una implementación sin bloqueos, esta invención define un esquema de mensajería de no bloqueo para un proceso en tiempo real (planificador LTE L2) que se ejecuta en núcleos en el plano de datos, para enviar/recibir paquetes de IP TCP/UDP mientras que se evita el uso del paquete de protocolos. El proceso en tiempo no real, tal como la ejecución de OA&M en el núcleo del plano de control, continuará usando el paquete de protocolos Linux para su operación normal. Debido a temas de Linux GPL nuestro planificador LTE L2 de marca registrada es operado por el espacio de usuario. Para enviar y recibir datos de IP de TCP/u Dp del planificador LTE L2, los datos tienen que cruzar el límite de espacio usuarionúcleo que normalmente requiere una copia de datos. De este modo, la potencia de consumo del procesador para copiar los datos de una ubicación de memoria a otra gasta recursos valiosos. De esta manera, es aconsejable proporcionar un método y un sistema que permite un servicio de mensajería eficiente sin bloqueo, de copia cero y no bloqueo para los hilos/procesos en tiempo real que se ejecutan en los núcleos en el plano de datos mientras permiten que el plano de control opere en su manera normal (tal como mediante el uso del paquete de protocolos Linux tradicional).
Con referencia ahora a la FIG. 2, se muestra una arquitectura 200 a modo de ejemplo que logra estos y otros objetivos. Se sabe que un sistema operativo de ordenador convencional usualmente separa memoria virtual en el espacio del núcleo y el espacio de usuario. El espacio del núcleo se reserva estrictamente para ejecutar el núcleo, extensiones del núcleo y la mayoría de las unidades del dispositivo. En contraste, el espacio de usuario es un área de memoria en la que todas las aplicaciones en modo usuario trabajan y esta memoria puede intercambiarse cuando sea necesario. En este aspecto, una capa de abstracción del núcleo (CAL) 201 incluye varios módulos en espacio de usuario, incluyendo, pero sin limitación: un módulo de inicialización de la capa de abstracción (CALInit) 202 que carga la configuración de la red LTE y cualquier regla de PCD estática a los administradores de marco (FMAN) 230 y 232 y configura el marco CAL en base a un conjunto de archivos de configuración, un módulo del buffer de la capa de abstracción del núcleo (CALBuf) 204, un módulo de mensajería de la capa de abstracción del núcleo (CALMsg) 206 que proporciona servicios de mensajería al software de L2 para enviar y recibir datos del plano de usuario a o de otro tablero (es decir, eCCM) sin el uso del paquete de protocolos Linux, un análisis de la capa de abstracción del núcleo, módulo de reclasificación y distribución (CALPcdFmc) 208 que proporciona reglas de Análisis, Clasificación y Distribución (PDC) y configuraciones que serán usadas por cada FMAn (230, 232) para marcos de ingreso a núcleos apropiados, y un rastro DPAA de la capa de abstracción del núcleo (CALDpaaTrace) 210 que proporciona capacidades de rastreo para habilitar y deshabilitar rastros en la unidad DPAA de la capa de abstracción del núcleo (CALDPAADriver) 212, que es un módulo de espacio del núcleo.
La arquitectura 200 incluye además un sistema operativo adecuado 214 tal como SMP Linux con parche Preempt RT. El sistema operativo 214, a su vez, soporta varias unidades, tales como la mencionada anteriormente CALDPAADriver 212, al menos una unidad administradora de marco (FMAN) 216, al menos una unidad administradora del buffer (BMAN) 218, y al menos una unidad administradora de cola (QMAN) 220.
Según lo mostrado en la FIG. 2, la arquitectura 200 puede incluir adecuadamente una tela P4080 CoreNet 222, que es una arquitectura de interconexión adecuada para que la red en chip susceptible de actualizarse se conecte a múltiples núcleos de procesamiento de arquitectura con cachés, cachés individuales y subsistemas de memoria.
El procesador P4080 incluye una implementación de la nueva Arquitectura de Aceleración de la Trayectoria de Datos (DPAA). De este modo, la arquitectura 200 puede incluir, además una DPAA P4080224. La DPAA 224 está diseñada para optimizar el procesamiento de red multi-núcleo tal como la dispersión de la carga y compartimiento de recurso, incluyendo interfaces de red y aceleradores de hardware. Como se muestra, la DPAA 224 generalmente incluye varios administradores tales como una BMAN 226, una QMAN 228, y una primera y segunda FMAN 230 y 232, respectivamente.
El módulo CALInit 202 normalmente carga la configuración de la red LTE y cualquier regla de PCD estática a los administradores de marco 230 y 232 y configura la red CAL en base a un conjunto de archivos de configuración. El módulo CALInit 202 forma interfaz con una herramienta FMC (Herramienta de Configuración FMan) (no se muestra) o cualquier número de FMan API(s) (no se muestra) para configurar las PCD FMan, y la unidad CALDPAADriver 212 para cargar y ajustar la configuración de CAL (por ej., recursos de DPA del plano de usuario).
El módulo CALPcdFmc 208 proporciona reglas de Análisis, Clasificación y Distribución (PDC) y configuraciones que serán usadas por cada FMan (230, 232) para direccionar marcos de ingreso a los núcleos apropiados.
El módulo CALInit 202 es responsable de proporcionar varias funcionalidades. Para el núcleo principal en el arranque, el módulo CALInit 202 configura un marco CAL para soportar el procesamiento de "trayectoria rápida". Este paso puede incluir inicializar la unidad CALDPAADriver 212, que a su vez (a) crearía varios recursos de DPAA necesarios para procesar datos del plano de usuario (por ej., grupos de buffer, FQs (o colas de marco) y (b) crear la infraestructura CAL necesaria para soportar la gestión del buffer y servicios de mensajería a través de DPAA (por ej., tablas internas que mantienen la configuración del grupo de buffer, FQs, y la asociación entre las FQs de ingreso y las direcciones de IP del Planificador DL, etc.). El módulo CALInit 202 también carga reglas PCD de FMC de LTE (estáticas) y configuraciones de la red.
Se sabe que en un sistema de comunicación inalámbrico de múltiple acceso, los transmisores y receptores pueden comunicarse usando un paquete de comunicación de múltiples capas. Las capas pueden incluir, por ejemplo, una capa física, una capa de control de acceso medio (MAC), una capa de control de enlace de radio (RLC), una capa de protocolo (por ej., capa de protocolo de convergencia de datos del paquete (PDCP)), una capa de aplicación y así sucesivamente. La capa de RLC recibe unidades de datos de servicio (SDU) de la capa de PDCP, y concatena o segmenta las SDU en unidades de datos del protocolo de RLC (PDU) para transmisión a la capa MAC.
De esta manera, el módulo CALBuf 204 facilita servicios de manejo del buffer de no bloqueo para aplicaciones L2 para usar en el procesamiento de SDU del RLC. Como se conoce en la técnica, un algoritmo de no bloqueo asegura que los hilos que compiten por un recurso compartido no tienen su ejecución infinitamente pospuesta por exclusión mutua. Un algoritmo de no bloqueo es sin bloqueo (o libre de bloqueo) si se garantiza el progreso a nivel del sistema. El módulo CALBuf 204 también soporta realizar cola para los datos estáticos del grupo de buffer (por ej., estado de agotamiento de grupo, recuento de agotamiento, estado de disponibilidad del grupo, recuento de error de asignación de grupo, etc.). El módulo CALBuf 204 forma una interfaz con CALDPAADriver 212 para implementar los servicios. El módulo CALBuf 204 proporciona un esquema de administración del buffer sin bloqueo que es extremadamente crítico para la operación del sistema apropiado en un entorno multi-núcleo, donde un bloqueo tomado por un proceso en tiempo no real puede causar problemas de latencia para un proceso en tiempo real que espera para la liberación de ese bloqueo.
La unidad CALDPAADriver 212 es el componente del espacio del núcleo de CAL 201 y ayuda a implementar y proporcionar servicios de administración del buffer y servicios de mensajería usando APIs BMAN y QMAN. Como se usa en la presente memoria, el término API (o interfaz de programación de aplicaciones) se refiere a una interfaz implementada por un programa de software que le permite interactuar con otro software. Facilita la interacción entre diferentes programas de software de manera similar al modo en que la interfaz de usuario facilita la interacción entre los usuarios y los ordenadores. Una API es implementada por aplicaciones, bibliotecas y sistemas operativos para determinar sus vocabularios y convenciones de llamada, y se usa para acceder a sus servicios. Puede incluir especificaciones para rutinas, estructuras de datos, clases de objetos y protocolos usados para comunicarse entre el consumidor y el implementador de la API.
La unidad CALDPAADriver 212 es responsable de administrar los recursos de DPAA (grupos de buffer y colas de marco) que se usarán para distribuir los datos del plano de usuario; proporcionar interfaz de espacio de usuario a otros módulos CAL a través de varias operaciones de archivo tales como abrir, liberar, control i-o (ioctl) para inicialización, administración del buffer, y servicios de mensajería; realizar mapeo del buffer del espacio del núcleo a usuario (K-U); proporcionar grupo del buffer DPAA y datos estadísticos de receptor y transmisor; e implementar servicios para administrar buffers de anillo. Se debe tener en cuenta que los buffers de anillo representan la cola de la L2 del software de CAL y generalmente se usa en para almacenar FDs destinados a un DLT L2 específico. El módulo CALMsg 206 proporciona APIs para que L2 recupere los descriptores del buffer de un anillo.
Todos los componentes CAL descritos con anterioridad generalmente son middleware de plataforma (ejecutados en el espacio de usuario), con excepción del CALDPAADriver 212. La unidad CALDPAADriver 212 es una unidad personalizada que se ejecuta en el espacio del núcleo, y está diseñada para implementar y prestar los servicios que necesita el middleware del espacio de usuario CAL,en particular aquellos servicios que dependen de los componentes de hardware P4080 DPAA.
El módulo CALBuf 204 presta servicios de administración del buffer que se usarán exclusivamente para procesamiento de datos de "trayectoria rápida". El módulo CALBuf 204 proporciona API del espacio de usuario a la aplicación de L2. El módulo CALBuf 204 colabora con el CALDpaaDriver 212 para proporcionar el servicio de administración de buffer de copia cero y no bloqueo para buffers que la unidad CALDpaa 212 crea pero son administrados por el BMAN 226.
El módulo CALMsg 206 proporciona servicios para recibir (ingresar) SDU de RLC y enviar (egresar) SDU de RLC a través de DPAA. El módulo CALMsg 206 también soporta la cola para los datos estadísticos de la interfaz de Ethernet Tx/Rx (por ej., número de FDs recibidos o transmitidos, número de FDs descartados, varios tipos de FDs malos, etc.). El módulo CALMsg 206 forma una interfaz con CALDPAADriver 212 para implementar los servicios. El módulo CALMsg 206 proporciona servicio de mensajería de copia cero de no bloqueo a la aplicación L2 de LTE para enviar o recibir paquetes de Ip TCP/UDP sin el uso del paquete de protocolos. Esto asegura que el software de aplicación no encuentre picos de latencia no ligada que pueden descomponer el comportamiento propio del sistema LTE, que tiene requerimientos de procesamiento muy estrictos en tiempo real.
El módulo CALMsg 206 proporciona servicios de mensajería al software L2 para enviar y recibir datos del plano de usuario a o de otro tablero (es decir, eCCM). El módulo CALMsg 206 generalmente hace interfaz con el CALDPAADriver 212 para proporcionar servicios de mensajería de copia cero de no bloqueo a través de DPAA. Esta particularidad permite que el software de la aplicación de L2 envíe y reciba paquetes de IP TCP/UDP sin el uso del paquete de protocolo para evitar demoras de latencia no ligada.
El módulo CALMsg 206 implementa y proporciona APIs que soportan varios servicios, tales como los descritos en los siguientes párrafos.
Un servicio posible es el registro de las entidades de la aplicación (de L2) con el servicio CALMsg, en donde una entidad puede recibir paquetes entrantes a través de "trayectoria rápida." Durante este proceso de registro, se crea una cola de la L2 del software de CAL (es decir, un anillo de los descriptores del buffer, o en otras palabras, un buffer circular para los descriptores del buffer) para mantener los descriptores del buffer recibidos destinados a la entidad. También durante este registro, el módulo CALMsg 206 crea una asociación entre las FQ de ingreso a la dirección de IP y el anillo de los ID del descriptor del buffer para posterior referencia en otro procesamiento (por ej., determinando qué anillo de los descriptores del buffer empujan un descriptor del buffer a cuando el marco llega a una FQ). El módulo CALMsg 206 también realiza mapeo de núcleo a espacio de usuario de los anillos relevantes de los descriptores del buffer, y configura la regla PCD para la entidad de aplicación (si no fue realizado aún por reglas estáticas). Además, al comienzo del proceso de registro, el CAL 201 implementa una estrategia de defensa para asegurar que todos los buffers adquiridos por la aplicación sean liberados apropiadamente cuando un hilo se cuelga.
Un segundo servicio proporcionado por el módulo CALMsg 206 es recuperar un marco destinado a la entidad de aplicación. La dirección del buffer devuelto apunta al inicio del área de datos comenzando con el encabezado de Ethernet.
Un tercer servicio proporcionado por el módulo CALMsg 206 es enviar un mensaje a una entidad externa a través de DPAA en la interfaz de Ethernet configurada para procesar los datos del plano de Usuario (por ej., eth0). Se espera que la L2 ingrese todos los encabezados (Ethernet, IP, UDP) necesarios y, que el hardware esté configurado apropiadamente para generar e ingresar una suma de verificación de IP y una suma de verificación de UDP.
Un cuarto servicio es hacer cola para datos estadísticos del puerto receptor y transmisor.
Un quinto servicio es eliminar el registro de una entidad de aplicación del módulo CALMsg 206. Una vez que se ha eliminado el registro de la entidad de aplicación, ya no será capaz de recibir paquetes a través de la "trayectoria rápida". Como parte del proceso de eliminación del registro, el CAL liberará todos los buffers adquiridos por el software de aplicación. Para el caso en el que el módulo CALMsg 206 se use para recibir marcos a través de la trayectoria rápida, el anillo asociado de los descriptores del buffer y la regla PCD también serán retirados.
Con referencia a la FIG. 3, se muestra una visión general de alto nivel de un sistema de Unidad de Ethernet de Plano posterior (BED) basado en DPA 300 adaptado para proporcionar el flujo de datos de ingreso de los paquetes. El lado izquierdo de la FIG. 3 ilustra la trayectoria tomada por los paquetes destinados a ir al núcleo X del plano de control usando un paquete de protocolo tradicional. El lado derecho del diagrama ilustra el paquete transversal para el núcleo Y del plano de datos donde el Planificador L2 de LTE se encuentra en ejecución.
Para fines ilustrativos, el planificador L2 de LTE consiste en dos hilos en tiempo real. Los dos hilos incluyen el Planificador DL que se muestra como PLANIFICADOR DL 324 en la FIG. 3 que entra en acción para flujo de paquetes de ingreso, y un planificador de enlace ascendente mostrado como PLANIFICADOR UL que entra en acción para el flujo de paquetes de egreso.
Desde la perspectiva del hardware, cada núcleo tiene un portal de software 316. Cada portal tiene un número especificado de canales. Cada canal tiene ocho colas de trabajo (WQ) basadas en prioridades que comprenden la pluralidad de colas de marco (FQ). A un alto nivel, cuando FMAN 302 recibe un paquete de datos 304, adquiere un buffer mapeado en espacio de Núcleo-Usuario de tamaño adecuado de BMAN 226, y copia el paquete recibido en el buffer, el FMAn 302 determina (de acuerdo con las reglas de PCD) qué FQ ingresa 306 para sacar de cola el paquete, y usa la QMAN API 308 para sacar de cola el paquete de datos 304 sobre la FQ apropiada FQ 306. Cuando el paquete de datos 304 hace su recorrido al registro de hardware DQRR 328, se genera una interrupción de portal para el núcleo especificado (tal como el Núcleo Y 312). En otras palabras, QMAN maneja todas las FQ para los diversos canales. Las WQ están allí para implementar la calidad de servicio (QoS). De modo que cada paquete que llega habiendo estado puesto en cola en una Fq atraviesa colas de hardware internas dentro de QMAN. Las Fq que llegan delante de la cola, y están listas para procesamiento, se colocan en el registro de DQRR por el QMAN. El registro de DQRR tiene una profundidad de 15 entradas. Como cada entrada (que es un descriptor de cola de marco que contiene información sobre la FQ, tal como el puntero al buffer del paquete, una función de llamada asociada, etc.), es mantenida por la función de llamada registrada 330 en la rutina de servicio de Interrupción (ISR), el QMAN 308 automáticamente pone en cola el siguiente descriptor de FQ en el DQRR.
Luego, se ejecuta la función de llamada registrada "UplaneDispatcher" 330, que es una parte de la Unidad DPA CAL 314 para la FQ 306, en el espacio del núcleo y realiza el procesamiento adecuado del paquete. El anillo de los descriptores del buffer 320 para cada instancia del Planificador DL tiene un ID de Anillo. El anillo del descriptor del buffer 320 también está mapeado del núcleo al espacio de usuario (K-U) para permitir que los componentes del espacio de usuario (como por ejemplo, CALMSG 326), y del espacio del núcleo (como por ejemplo, la Unidad DPA CAL 314) de CAL 128 accedan a éste sin ningún problema de direccionamiento y sin la necesidad de copia de datos. Durante la inicialización celular, el CALMSG 326 proporciona un servicio a la aplicación de usuario Planificador DL 324 para registrarse con CALMSG 326. En ese momento también se crea una asociación de mapeo entre la FQ de ingreso 306, y el ID de anillo 320. La función de llamada 330 determina a qué ID de anillo 320 pertenece este descriptor de cola de marco particular, y crea un descriptor de buffer mediante la copia del puntero de buffer mapeado en espacio de núcleo a usuario (junto con cualquier info de registro de contabilidad) y puesta en cola del descriptor del buffer sobre el anillo mapeado en espacio de núcleo-usuario apropiado de los descriptores de buffer 320 para procesamiento posterior mediante el hilo del planificador DL de espacio de usuario asociado 324 en un núcleo Y del plano de datos particular 312.
El proceso del Planificador DL 324 se ejecuta en un modo de "Ejecutar hasta la Compleción" en el espacio de usuario. El hilo en tiempo real despierta cada momento Delta T, e invoca la API CALMSG 326 para consultar, si hay paquetes en cola para este consumo en el anillo de los descriptores del buffer 320. Si hay, el Planificador DL 326 procesa (o consume) los paquetes en el anillo 320. Dado que el paquete recibido no ha atravesado el paquete de protocolo estándar, éste contiene el encabezado completo del paquete (TCP/UDP/IP/Ethernet). El Planificador d L 324 ignora el encabezado del paquete y opera en el área de datos del paquete. Cuando se realiza, libera el buffer usando la API CALBUF 204. Una vez que ya no hay más paquetes para que el planificador DL 324 procese, el hilo del planificador DL 324 vuelve al estado de reposo. Dado que solo hay un productor (CAL DPADriver 314) y un consumidor (un hilo del Planificador DL específico 324) para cada anillo de descriptores del buffer 320, este esquema puede implementarse con operaciones atómicas que no requieren ningún bloqueo del software. Una ventaja adicional se logra por el uso de buffers mapeados del núcleo al espacio de usuario junto con un anillo de los descriptores del buffer tal como el anillo de los descriptores del buffer 320. El uso de los buffers mapeados del núcleo al espacio de usuario obvia cualquier necesidad de copia de datos porque el paquete atravesará desde las unidades del dispositivo de espacio del núcleo hasta su destino final en el espacio de usuario.
En la realización a modo de ejemplo, el tráfico del plano de control y el tráfico del plano de datos se aíslan unos de otros y se dirigen a interfaces de Ethernet separadas. Un FMAN 302 puede soportar múltiples interfaces de Ethernet. El paquete de protocolo Linux se une a, y se ejecuta en, el núcleo del plano de control X 332. El módulo de PCD CAL establece reglas PCD estáticas y permite que el FMAN 302 ponga en cola todos los paquetes 304 que llegan a la interfaz de Ethernet del plano de control a una Cola de Marco (FQ) 334 que será manipulada por la unidad DPA FSL 336 que se ejecuta en el espacio de Núcleo. La unidad 336 traslada los paquetes al paquete de protocolos Linux 338. Una copia de datos también está involucrada cuando el paquete cruza el espacio de núcleo al límite del espacio de usuario. Esto se muestra en el lado izquierdo de la FIG. 3.
Una vista de alto nivel del flujo de proceso con respecto a un paquete de datos entrante para el núcleo del plano de datos se ilustra en la FIG. 4. El método de la FIG. 4 puede implementarse por el aparato ilustrado en la FIG. 3.
En la etapa 410, un Planificador DL 320 se registra con el CALMSG 326. El sistema también crea un anillo de los descriptores del buffer 320 que se mapean del espacio de núcleo al espacio de usuario (K-U) para permitir que tanto la entidad de espacio de núcleo (tal como CALDPAADriver 314), como la entidad del espacio de usuario (tal como la CALMSG 326) accedan al anillo. Este paso puede realizarse por CALMSG 326 en conjunción con el módulo CALDPAADriver 314 para cada celda configurada en el tablero moderno. De esta manera, si hay tres celdas soportadas en un tablero moderno, entonces hay tres anillos separados de descriptores de buffer 320 (uno para cada celda), y CALDPAADriver 314 tendrá un mapeo entre la FQ de ingreso FQ 306 a un anillo específico de los descriptores del buffer 320. En la realización de ejemplo, solo hay un anillo de los descriptores del buffer 320 para cada instancia del PLANIFICADOR DL 324. El anillo de los descriptores del buffer tiene un puntero de lectura y un puntero de escritura. Dado que solo hay un productor (tal como, por ejemplo, el uplaneDispatcher 330 de CALDPAADriver 314 en el espacio de núcleo), y un consumidor (tal como el Planificador DL 324 en el espacio de usuario), el anillo de los descriptores del buffer 320 se implementa en un modo de no bloqueo usando operación atómica.
En el paso 420, la interfaz de Ethernet del plano de datos específico recibe un paquete de datos 304.
En el paso 430, el FMAN 302 adquiere un buffer/token mapeado separado de núcleo a usuario del BMAN (FIG. 2, 226).
En la etapa 440, el FMAN 302 inserta el paquete de datos recibidos 304 en el buffer adquirido.
En el paso 450, según las reglas de PCD dinámicas establecidas por el módulo CAL (CALMSG 206) durante la inicialización celular (que proporciona un mapeo entre una dirección de IP y una FQ de ingreso 306), el FMAN 302, con ayuda de QMAN 308, pone en cola el paquete sobre la FQ apropiada 306.
En el paso 460, cuando el paquete se hace camino sobre el registro de DQRR de hardware 328, el sistema, a través de un procesador multi-núcleo P4080, genera una interrupción para el portal del software 316 para el Núcleo Y 312 (el núcleo en el plano de datos). La función de llamada que se registra para la FQ específica (en este caso el upIaneDispatcher 330) se ejecutará cuando la rutina ISR en el espacio del núcleo procese el paquete. En esencia, la función de llamada crea un descriptor del buffer de la información contenida en el Descriptor de Cola del Marco (FD) de la entrada del DQRR procesada. Un puntero del buffer de FD se copia en el descriptor del buffer, junto con cierta información adicional de contabilidad.
En el paso 470, la unidad CALDPAA 314 pone en cola al descriptor de buffer generado en el paso 460 en el anillo de los descriptores de buffer 320 asociados con el núcleo Y 312.
Los pasos 410 a 470 se realizan por hardware (FMAN y QMAN) en conjunción con el hilo del núcleo de CALDPAADriver 314 (por ej., el uplaneDispatcher 330). En la realización de ejemplo, los pasos 480 a 495 se realizan en un proceso o hilo independiente del (de los) proceso(s) o hilo(s) que realizaron los pasos 410 a 470. De esta manera, los pasos 480-495 se realizan por hilos del espacio de usuario tal como el Planificador DL 324 en el núcleo Y del plano de datos 312.
Contemporáneo con los pasos 410 a 470, el Planificador DL 324 se ejecuta en un ciclo sin fin al modo compleción, y se activa en un intervalo de TTI (Tiempo para Interrumpir). En el paso 480, una vez activo, el Planificador DL 324 invoca un CALMSG API 326 para consultar si hay algún paquete no procesado en el anillo de los descriptores del buffer 320 para consumo. Si no hay paquetes de datos no procesados en el anillo de los descriptores del buffer 320, el PLANIFICADOR DL 324 recibirá una respuesta de no bloqueo del módulo CALMSG 326 que indica que no hay paquetes no procesados. El hilo del Planificador DL 324 luego queda en reposo hasta el siguiente TTI.
En el paso 485, si el Planificador DL 324 determina que hay paquetes de datos no procesados, entonces el método avanza al paso 490, y así el método avanza a 495.
En el paso 490, el Planificador DL 324 procesa el siguiente paquete de datos en el anillo de los descriptores del buffer 320. El siguiente paquete se indica mediante el puntero de lectura del anillo. Después de que se procesa el paquete de datos, el Planificador DL 324 libera el buffer mapeado K-U usando API CALBUF 204. En la realización de ejemplo, el paquete de datos que será procesado contiene ambos de uno o más encabezados y un área de datos. El Planificador DL 324 ignora el encabezado y opera en el área de datos. El encabezado se usa para direccionar el paquete hasta su destino, lo que se logra en la realización de ejemplo sin el uso de un paquete de protocolo. Una vez que el PLANIFICADOR DL 324 procesa todos los paquetes, el método avanza al paso 495 donde el PLANIFICADOR DL descansa.
La realización de ejemplo soporta tres celdas (actualizables a seis celdas). Cada celda tendrá su propio Planificador DL (hilo del PLANIFICADOR DL 324) que se une a, y se ejecuta en, su propio núcleo del plano de datos específico. De esta manera, en la realización de ejemplo, hay un mínimo de tres hilos de PLANIFICADOR Dl (FIG. 1, 116, 118, y 120) que se ejecutan en tres núcleos del plano de datos diferentes. De manera similar cada celda necesita un Planificador L2 UL (PLANIFICADOR UL). De esta manera, hay tres hilos del PLANIFICADOR UL (FIG. 1, 110, 112, y 114) que se ejecutan en tres núcleos del plano de datos diferentes.
Durante la configuración de la celda, las reglas de PDC dinámicas (es decir, el mapeo de las direcciones de IP a las FQ de ingreso) se ajustan por el módulo CALMSG 326. El módulo CALMSG 326 también puede realizar funciones de contabilidad, tal como mapeo de FQ de ingreso a los ID del anillo de los descriptores del buffer. Las reglas de PCD permiten que el FMAN examine la dirección de IP de cada paquete y determine en qué FQ poner en cola el paquete. La información de contabilidad adicional (tal como la FQ de ingreso 306 al mapeo de ID del anillo de los descriptores del buffer 320) permite que el hilo del núcleo uplaneDispatcher 330 decida en qué anillo de los descriptores del buffer debe poner un descriptor del buffer dado con un paquete de datos entrantes. De esta manera, se logra un esquema de mensajería de copia cero y sin bloqueo que permite el ingreso de paquetes para alcanzar un hilo del planificador DL 324 que se ejecuta sobre el núcleo del plano de datos Y 312 sin el uso de un paquete de protocolo convencional.
Con referencia a la FIG. 5, se muestra una visión general de alto nivel de un sistema de Unidad de Ethernet de Plano posterior (BED) basado en DPA 500 adaptado para proporcionar el flujo de datos de egreso de los paquetes. La realización de ejemplo 500 proporciona una solución que no usa el paquete de protocolos Linux para transmitir el tráfico del plano de datos de egreso. El lado izquierdo de la FIG. 5 ilustra la trayectoria tomada por los paquetes enviados del núcleo X del plano de control 532 usando un paquete de protocolo tradicional 538. La aplicación al espacio de usuario en tiempo no real tal como OAM&M 124 que se ejecuta en el núcleo del plano de control X 532 envía paquetes de IP TCP/u Dp IP usando el paquete de protocolo 538. El paquete de protocolo 538 envía el paquete a la unidad DPA FSL 536 en el espacio de núcleo. El proceso de enviar el paquete del núcleo X 532 en el espacio de usuario a la unidad DPA FSL 536 en el espacio de núcleo requiere una copia de los datos. La unidad DPA FSL 536 pone en cola al paquete en una FQ 534 que finalmente recibe el servicio de FMAN 506 con ayuda de QMAN 508, y el paquete se transmite en la interfaz de Ethernet. El lado derecho del diagrama ilustra el paquete transversal para paquetes que se originan en el núcleo Y 512 del plano de datos donde el Planificador UL de L2 de LTE 502 se encuentra en ejecución sin el uso del paquete de protocolo 538. De este modo, el flujo de datos de egreso también usa un esquema de mensajería de copia cero, sin bloqueo que no incurre en picos de latencia ilimitados.
Una vista de alto nivel del flujo de proceso con respecto a un paquete de datos saliente (es decir, flujo de datos de egreso para el núcleo del plano de datos) se ilustra en la FIG. 6. El método de la FIG. 6 puede implementarse por el aparato ilustrado en la FIG. 5.
En el paso 610, el planificador UL 502 adquiere un buffer mapeado separado de núcleo a usuario del CALBUF 522.
En el paso 620, cuando el planificador UL 502 está listo para transmitir un paquete de IP TCP/UDP, el planificador UL 502 prepara el paquete completo (con encabezado y carga), y luego invoca la API CALMSG 522.
En el paso 630, el CALMSG 522, con ayuda de CALDPAADriver 524, pone en cola al paquete preparado en la FQ de egreso apropiada 504 del canal CHB asociado con la interfaz de Ethernet del plano de datos. Esta eliminación de cola se realiza sin el uso de la pila de protocolo y confía en su lugar en el esquema de mensajería cero, de no bloqueo para evitar picos de latencia ilimitada.
En el paso opcional 640, el QMAN 508 determina un estado de si la operación de poner en cola fue exitosa o no, y esta respuesta se envía de regreso al Planificador UL de la aplicación de usuario 502 si así desea recibir el estado.
En el paso 650, el FMAN 506, con ayuda de QMAN 508, procesa todos los paquetes de las varias FQ 504. Aunque hay un cambio de contexto involucrado siempre que el paquete atraviese el límite de espacio de usuario a espacio de núcleo, no hay copia de datos involucrada. De este modo, el procesamiento de paquetes por FMAN 506 se realiza en un modo eficaz para el hardware de modo tal que cada núcleo individual tenga penalidad de rendimiento insignificante o ninguna. Cada Planificador UL 302 tiene una Fq 504 específica en el canal de destino (CH B 526) para transmitir paquetes a la interfaz de Ethernet. También hay un productor (una instancia del hilo de PLANIFICADOR UL 502 en el espacio de usuario), y una FQ de egreso específico 504 que es consumida por FMAN 506 en el hardware.
En el paso 660, una vez que se transmite el paquete, el FMAN 506 libera el buffer nuevamente a BMAN (FIG. 2, 226).
Una persona capacitada en la técnica reconocería ampliamente que los pasos de los diversos métodos descritos anteriormente pueden ser realizados por ordenadores programados. En la presente memoria, algunas realizaciones también pretenden cubrir dispositivos de almacenamiento, por ejemplo, medios de almacenamiento de datos digitales, que son legibles por máquinas o por ordenadores y codifican programas de instrucciones ejecutables por máquinas o ejecutables por ordenadores, en los que dichas instrucciones realizan algunos o todos los pasos de dichos métodos descritos anteriormente. Los dispositivos de almacenamiento de programas pueden ser, por ejemplo, memorias digitales, medios de almacenamiento magnéticos tales como discos magnéticos y cintas magnéticas, discos duros, o medios de almacenamiento de datos digitales legibles de manera óptica. Las realizaciones también pretenden cubrir ordenadores programados para realizar dichos pasos de los métodos descritos anteriormente.
La descripción anterior simplemente proporciona una divulgación de las realizaciones particulares de la invención y no está destinada para los fines de limitar la misma a ella. De esta manera, la invención no está limitada solamente a las realizaciones descritas anteriormente. Más bien, se reconoce que un experto en la técnica concebiría realizaciones alternativas que caen dentro del alcance de la invención.

Claims (2)

REIVINDICACIONES
1. Un método implementado por ordenador para la administración del buffer para un procesador multi-núcleo para usarse en un módem en una red de telecomunicaciones, estando el método caracterizado por:
para cada uno de una pluralidad de núcleos de procesamiento unidos al módem:
recibir (420) un paquete de datos de IP de TCP o UDP (304);
adquirir (430) un buffer mapeado de núcleo a espacio de usuario (KU) y descriptor de buffer mapeado K-U correspondiente (320), en el que el descriptor está asociado con un paquete de datos y es indicativo del buffer mapeado K-U; insertar (440) el paquete de datos en el buffer; e
insertar (470) el descriptor de buffer en un buffer circular mapeado K-U;
en el que el descriptor del buffer se crea:
creando un descriptor del marco que contiene un puntero de buffer mapeado K-U adquirido correspondiente al buffer mapeado K-U;
insertando el descriptor del marco en una cola de marco especificada por una regla dinámica que mapea direcciones de IP a las colas de marco; y
creando el descriptor del buffer a partir del descriptor de marco.
2. El método de acuerdo con la Reivindicación 1, en el que la adquisición de un buffer mapeado K-U, la inserción del paquete de datos (304) en el buffer y la inserción del descriptor del buffer en el buffer circular se realizan por uno o más hilos del núcleo en conjunción con componentes de hardware, y que además comprende:
ejecutar un hilo del espacio de usuario (201) que se activa en intervalos periódicos;
en el que el hilo del espacio de usuario, tras activarse, consulta al buffer circular para determinar si cualquier descriptor del buffer no procesado existe en el buffer circular; y
tras determinar que un descriptor del buffer no procesado existe en el buffer circular, procesar el paquete de datos (304) dentro del buffer usando el mismo hilo de espacio de usuario o uno diferente.
ES11785167T 2010-11-12 2011-10-19 Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones Active ES2848846T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/945,146 US8737417B2 (en) 2010-11-12 2010-11-12 Lock-less and zero copy messaging scheme for telecommunication network applications
PCT/US2011/056829 WO2012064471A1 (en) 2010-11-12 2011-10-19 Lock-less and zero copy messaging scheme for telecommunication network applications

Publications (1)

Publication Number Publication Date
ES2848846T3 true ES2848846T3 (es) 2021-08-12

Family

ID=44999873

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11785167T Active ES2848846T3 (es) 2010-11-12 2011-10-19 Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones

Country Status (8)

Country Link
US (1) US8737417B2 (es)
EP (1) EP2638467B1 (es)
JP (1) JP5726316B2 (es)
KR (1) KR101549422B1 (es)
CN (1) CN103210619B (es)
ES (1) ES2848846T3 (es)
TW (1) TWI451339B (es)
WO (1) WO2012064471A1 (es)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8504744B2 (en) 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US9071499B2 (en) * 2011-03-28 2015-06-30 Citrix Systems, Inc. Systems and methods for emulating a NIC for packet transmission on hardware RSS unaware NICs in a multi-core system
US9357482B2 (en) 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations
CN102761489B (zh) * 2012-07-17 2015-07-22 中国科学技术大学苏州研究院 基于流水线模式的数据包零拷贝的核间通信方法
CN103475899B (zh) * 2013-07-30 2016-09-07 融创天下(上海)科技发展有限公司 数据分发方法和装置
CN103488717B (zh) * 2013-09-11 2017-02-22 北京华胜天成科技股份有限公司 一种无锁数据汇聚方法及装置
US9519514B2 (en) * 2014-01-29 2016-12-13 Marvell Israel (M.I.S.L) Ltd. Interfacing with a buffer manager via queues
US10015164B2 (en) 2014-05-07 2018-07-03 Cryptography Research, Inc. Modules to securely provision an asset to a target device
CN103945456B (zh) * 2014-05-12 2017-06-27 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN104052676B (zh) * 2014-06-13 2017-12-05 华为技术有限公司 一种发送通路装置及发送通路的数据处理方法
CN104102494B (zh) * 2014-07-31 2017-07-25 武汉邮电科学研究院 无线通信基站空口数据cipher加速方法
US10257089B2 (en) 2014-10-30 2019-04-09 At&T Intellectual Property I, L.P. Distributed customer premises equipment
US10348621B2 (en) 2014-10-30 2019-07-09 AT&T Intellectual Property I. L. P. Universal customer premise equipment
US9817776B2 (en) 2015-01-19 2017-11-14 Microsoft Technology Licensing, Llc Memory descriptor list caching and pipeline processing
US10079779B2 (en) 2015-01-30 2018-09-18 Nicira, Inc. Implementing logical router uplinks
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
DE102017124105A1 (de) * 2016-10-24 2018-04-26 Denso Corporation Verfahren zur Portierung einer Single-Core Steuerungssoftware auf ein Multi-Core Steuergerät oder zur Optimierung einer Multi-Core Steuerungssoftware
FR3063095B1 (fr) 2017-02-20 2019-03-15 Utilis Piece thermoplastique renforcee pour une structure porteuse
US10819820B1 (en) * 2017-03-24 2020-10-27 Amazon Technologies, Inc. On-path data caching in a mesh network
US10733096B2 (en) * 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
CN111209123A (zh) * 2019-12-26 2020-05-29 天津中科曙光存储科技有限公司 一种本地存储io协议栈数据交互方法和装置
CN114509993B (zh) * 2020-11-16 2023-06-20 沈阳中科数控技术股份有限公司 一种基于国产cpu的自主可控数控系统构建方法
CN112702275A (zh) * 2020-12-29 2021-04-23 迈普通信技术股份有限公司 基于每包转发的方法、装置、网络设备及计算机存储介质
TWI792728B (zh) * 2021-11-29 2023-02-11 瑞昱半導體股份有限公司 封包處理加速裝置
CN115334586B (zh) * 2022-10-17 2023-01-03 深圳市领创星通科技有限公司 数据转发方法、装置、计算机设备和存储介质

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295133A (en) 1992-02-12 1994-03-15 Sprint International Communications Corp. System administration in a flat distributed packet switch architecture
US6141346A (en) 1995-07-19 2000-10-31 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
US5913230A (en) 1997-01-07 1999-06-15 Richardson; John J. Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US7299052B2 (en) 1998-11-09 2007-11-20 Samsung Electronics Co., Ltd. System and method for reallocating a traffic channel in soft handoff state
US6606298B1 (en) 1999-06-30 2003-08-12 Cisco Technology, Inc. Module firmware recovery
US6842811B2 (en) 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US6999432B2 (en) 2000-07-13 2006-02-14 Microsoft Corporation Channel and quality of service adaptation for multimedia over wireless networks
US6799200B1 (en) 2000-07-18 2004-09-28 International Business Machines Corporaiton Mechanisms for efficient message passing with copy avoidance in a distributed system
US7089289B1 (en) 2000-07-18 2006-08-08 International Business Machines Corporation Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
US6735620B1 (en) 2000-07-18 2004-05-11 International Business Machines Corporation Efficient protocol for retransmit logic in reliable zero copy message transport
US6584330B1 (en) 2000-07-18 2003-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive power management for a node of a cellular telecommunications network
JP2002050996A (ja) 2000-07-31 2002-02-15 Sony Corp 整数倍相互関係を有するブロック長を用いて符号化された信号を通信伝送路を介して送信する通信システム
US7089335B2 (en) 2000-10-30 2006-08-08 Microsoft Corporation Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device
US7096034B2 (en) 2001-10-01 2006-08-22 Microsoft Corporation System and method for reducing power consumption for wireless communications by mobile devices
US7768522B2 (en) 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US7007042B2 (en) 2002-03-28 2006-02-28 Hewlett-Packard Development Company, L.P. System and method for automatic site failover in a storage area network
US7254812B1 (en) 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US7093013B1 (en) 2002-06-19 2006-08-15 Alcatel High availability system for network elements
WO2004001615A1 (en) * 2002-06-19 2003-12-31 Telefonaktiebolaget Lm Ericsson A network device driver architecture
US7180866B1 (en) 2002-07-11 2007-02-20 Nortel Networks Limited Rerouting in connection-oriented communication networks and communication systems
US7020484B2 (en) 2002-10-29 2006-03-28 Qualcomm Incorporated Controlling multiple modems in a wireless terminal using energy-per-bit determinations
US7539853B2 (en) 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
US7810124B2 (en) 2003-01-28 2010-10-05 Thomson Licensing Robust mode staggercasting fast channel change
US7003597B2 (en) 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
ES2325957T3 (es) 2003-08-25 2009-09-25 Interdigital Technology Corporation Funcionamiento de enlace ascendente mejorado en una transferencia suave.
EP1678920B1 (en) 2003-10-15 2007-04-18 NTT DoCoMo, Inc. Apparatus and method for controlling an operation of a plurality of communication layers in a layered communication scenario
WO2005041533A1 (en) 2003-10-15 2005-05-06 Ntt Docomo, Inc. Apparatus and method for controlling an operation of a plurality of communication layers
US7206966B2 (en) 2003-10-22 2007-04-17 Hewlett-Packard Development Company, L.P. Fault-tolerant multi-core microprocessing
US7370326B2 (en) 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
WO2005104576A1 (fr) 2004-04-22 2005-11-03 Utstarcom Telecom Co., Ltd. Systeme sans fil distribue destine a la commande centrale d'une ressource
JP4414305B2 (ja) 2004-08-19 2010-02-10 富士通株式会社 中継装置および中継装置の再起動方法並びに中継装置用ソフトウェアプログラム
US8888600B2 (en) 2004-08-25 2014-11-18 Igt Emulation methods and devices for a gaming machine
US7352693B2 (en) 2005-01-31 2008-04-01 Nextel Communications Inc. Fault tolerant wireless communication systems and methods
US7933197B2 (en) 2005-02-22 2011-04-26 Cisco Technology, Inc. Method and apparatus for constructing a repair path around a non-available component in a data communications network
US7620753B1 (en) 2005-03-17 2009-11-17 Apple Inc. Lockless access to a ring buffer
US8644246B2 (en) 2005-07-05 2014-02-04 Nokia Corporation Scheduling information at serving cell change
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7472261B2 (en) 2005-11-08 2008-12-30 International Business Machines Corporation Method for performing externally assisted calls in a heterogeneous processing complex
US20070113229A1 (en) 2005-11-16 2007-05-17 Alcatel Thread aware distributed software system for a multi-processor
DE602005007620D1 (de) 2005-12-14 2008-07-31 Ntt Docomo Inc Vorrichtung und Verfahren zur Bestimmung der Übertragungspolitik für mehrere und verschiedenartige Anwendungen
US8072879B2 (en) 2006-02-03 2011-12-06 Cisco Technology, Inc. Technique for determining whether to reestablish fast rerouted primary tunnels based on backup tunnel path quality feedback
US8689025B2 (en) 2006-02-21 2014-04-01 Qualcomm Incorporated Reduced terminal power consumption via use of active hold state
US7295952B1 (en) 2006-05-24 2007-11-13 International Business Machines Corporation Enabling high availability and load balancing for JMX Mbeans
US20080002681A1 (en) 2006-06-30 2008-01-03 Symbol Technologies, Inc. Network wireless/RFID switch architecture for multi-core hardware platforms using a multi-core abstraction layer (MCAL)
US20080002702A1 (en) 2006-06-30 2008-01-03 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (MCAL)
WO2008005793A2 (en) 2006-06-30 2008-01-10 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (mcal)
CN101106490B (zh) 2006-07-11 2012-01-04 华为技术有限公司 预置流分类器的建立方法及其系统和用户终端
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
CN101491059B (zh) 2006-07-20 2013-02-13 高通股份有限公司 用于在包括gps的实用引擎与应用程序之间共享网络连接的方法和设备
US7873964B2 (en) 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
US8059532B2 (en) 2007-06-21 2011-11-15 Packeteer, Inc. Data and control plane architecture including server-side triggered flow policy mechanism
US8279865B2 (en) * 2007-04-20 2012-10-02 John Giacomoni Efficient pipeline parallelism using frame shared memory
US7936772B2 (en) * 2007-07-13 2011-05-03 International Business Machines Corporation Enhancement of end-to-end network QoS
US8055822B2 (en) 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US8194699B2 (en) 2007-09-21 2012-06-05 Intel Corporation Radio scheduler and data plane interface
US20100296428A1 (en) 2007-09-28 2010-11-25 Pin-Han Ho A robust system and method for wireless data multicasting using superposition modulation
US8527622B2 (en) 2007-10-12 2013-09-03 Sap Ag Fault tolerance framework for networks of nodes
EP2220884B1 (en) 2007-12-17 2019-08-14 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for mitigating cell outage
US7944815B2 (en) 2008-02-14 2011-05-17 Allied Telesis Holdings K.K. System and method for network recovery from multiple link failures
US7831710B2 (en) 2008-02-25 2010-11-09 International Business Machines Corporation Communication of offline status between computer systems
FI20085217A0 (fi) 2008-03-07 2008-03-07 Nokia Corp Tietojenkäsittelyjärjestely
CN101546276B (zh) 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US8024417B2 (en) 2008-06-04 2011-09-20 Microsoft Corporation Simple flow control protocol over RDMA
US8638790B2 (en) 2008-06-23 2014-01-28 Qualcomm Incorporated Method and apparatus for managing data services in a multi-processor computing environment
US20100029266A1 (en) 2008-07-02 2010-02-04 Nokia Corporation System and methods for quality of experience reporting
US7957297B2 (en) 2008-07-14 2011-06-07 Cisco Technology, Inc. Termination message for wireless wide area network routers
EP2313830B1 (en) 2008-08-13 2013-10-02 Hewlett-Packard Development Company, L.P. Dynamic utilization of power-down modes in multi-core memory modules
US20100080116A1 (en) 2008-09-29 2010-04-01 Qualcomm Incorporated Re-establishing a radio resource control connection with a non-prepared base station
US8271996B1 (en) 2008-09-29 2012-09-18 Emc Corporation Event queues
US8812714B2 (en) 2008-11-12 2014-08-19 Citrix Systems, Inc. Systems and methods for application fluency policies
KR101546780B1 (ko) 2008-12-18 2015-08-25 삼성전자주식회사 광대역 무선통신 망에서 서비스 플로우 변경 시 오류 처리를 위한 장치 및 방법
WO2010084688A1 (ja) 2009-01-20 2010-07-29 シャープ株式会社 移動局装置、基地局装置、無線リンク同期判定方法
JP5042248B2 (ja) 2009-01-22 2012-10-03 株式会社日立製作所 移動体通信システム、呼制御サーバ及びアクセスゲートウェイ装置
CN101801015B (zh) 2009-02-06 2014-03-12 中兴通讯股份有限公司 一种小区退服故障的处理方法及装置
KR101617048B1 (ko) 2009-06-01 2016-05-02 엘지전자 주식회사 다중 반송파 시스템에서 요소 반송파의 실패를 처리하는 방법 및 장치
US8099546B2 (en) 2009-06-09 2012-01-17 Red Hat, Inc. Mechanism for a lockless ring buffer in overwrite mode
US8413153B2 (en) 2009-06-12 2013-04-02 Freescale Semiconductor Inc. Methods and systems for sharing common job information
US20100322067A1 (en) 2009-06-19 2010-12-23 Qualcomm Incorporated Method and apparatus to faciliate reestablishing communications in a wireless network
US8737407B2 (en) 2009-06-22 2014-05-27 Citrix Systems, Inc. Systems and methods for distributed hash table in multi-core system
US9775046B2 (en) 2009-06-26 2017-09-26 Qualcomm, Incorporated Power management
US8400955B2 (en) 2009-09-21 2013-03-19 Samsung Electronics Co., Ltd. System and method for power saving by coordinated wake-up in a wireless multi-band network
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
US8737262B2 (en) 2009-11-24 2014-05-27 Red Hat Israel, Ltd. Zero copy transmission with raw packets
US20130061231A1 (en) 2010-05-11 2013-03-07 Dong-Qing Zhang Configurable computing architecture
US9298768B2 (en) 2010-07-21 2016-03-29 Sqream Technologies Ltd System and method for the parallel execution of database queries over CPUs and multi core processors
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US20120093047A1 (en) 2010-10-14 2012-04-19 Alcatel-Lucent USA Inc. via the Electronic Patent Assignment System (EPAS) Core abstraction layer for telecommunication network applications
US8504744B2 (en) 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US8675577B2 (en) 2010-12-20 2014-03-18 Intel Corporation Signaling techniques for a multimedia-aware radio and network adaptation
US20120207011A1 (en) 2011-02-11 2012-08-16 Renesas Mobile Corporation Method and apparatus for responding to an unrecoverable error
US9357482B2 (en) 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations

Also Published As

Publication number Publication date
JP2014501003A (ja) 2014-01-16
KR20130087553A (ko) 2013-08-06
TWI451339B (zh) 2014-09-01
JP5726316B2 (ja) 2015-05-27
US8737417B2 (en) 2014-05-27
US20120120965A1 (en) 2012-05-17
WO2012064471A1 (en) 2012-05-18
KR101549422B1 (ko) 2015-09-02
TW201237762A (en) 2012-09-16
CN103210619B (zh) 2015-10-21
CN103210619A (zh) 2013-07-17
EP2638467A1 (en) 2013-09-18
EP2638467B1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
ES2848846T3 (es) Esquema de mensajería de no bloqueo o copia cero para aplicaciones en redes de telecomunicaciones
JP5726320B2 (ja) 単一のモデム・ボードにおける改善されたマルチセル・サポートのための方法およびシステム
US20210117360A1 (en) Network and edge acceleration tile (next) architecture
US8504744B2 (en) Lock-less buffer management scheme for telecommunication network applications
EP2928135B1 (en) Pcie-based host network accelerators (hnas) for data center overlay network
KR101636308B1 (ko) 전기 통신 네트워크 애플리케이션들을 위한 코어 추상화 계층
EP2928136A2 (en) Host network accelerator for data center overlay network
EP3563532B1 (en) A multi-core lock-free rate limiting apparatus and method
Pantelis Design and Implementation of the Send Part of an Advanced RDMA Engine
Rosen et al. Linux API