ES2333519T3 - Una arquitectura de controlador de dispositivo de red. - Google Patents
Una arquitectura de controlador de dispositivo de red. Download PDFInfo
- Publication number
- ES2333519T3 ES2333519T3 ES02744030T ES02744030T ES2333519T3 ES 2333519 T3 ES2333519 T3 ES 2333519T3 ES 02744030 T ES02744030 T ES 02744030T ES 02744030 T ES02744030 T ES 02744030T ES 2333519 T3 ES2333519 T3 ES 2333519T3
- Authority
- ES
- Spain
- Prior art keywords
- space
- user
- core
- nic
- device driver
- 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.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
- Vending Machines For Individual Products (AREA)
- Placing Or Removing Of Piles Or Sheet Piles, Or Accessories Thereof (AREA)
Abstract
Una arquitectura de controlador de dispositivo de red para permitir el acceso entre el espacio del núcleo del sistema operativo y un Controlador de Interfaz de Red, también referenciado como un NIC, así como entre el espacio de usuario y dicho NIC (30), que comprende: - un controlador de dispositivo de espacio del núcleo (10) adaptado para permitir el acceso entre el espacio del núcleo y el espacio de usuario a través de un interfaz de espacio de usuario-espacio del núcleo (15); y - la funcionalidad de controlador de dispositivo de espacio de usuario (20) que incluye: - medios para permitir el acceso directo entre el espacio de usuario y dicho NIC a través de un interfaz de espacio de usuario-NIC (25) para enviar y recibir información a/desde la red, y - medios para interconectar dicho interfaz de espacio de usuario-espacio del núcleo (15) y dicho interfaz de espacio de usuario-NIC (25) para permitir acceso tunelizado del espacio de usuario entre el espacio del núcleo y dicho NIC para enviar y recibir información a/desde la red, caracterizada porque la información a ser transferida entre un protocolo de nivel de núcleo (45) en el espacio del núcleo y dicho NIC se tunelizará a través del espacio de usuario mediante el uso combinado de dicho controlador de dispositivo del espacio del núcleo (10), dicha funcionalidad de controlador de dispositivo de espacio de usuario (20), dicho interfaz de espacio de usuario-espacio del núcleo (15) y dicho interfaz de espacio de usuario-NIC (25).
Description
Una arquitectura de controlador de dispositivo
de red.
La presente invención generalmente se refiere a
una arquitectura de controlador de dispositivo de red para acceso
flexible y eficaz a un controlador de interfaz de red (NIC).
Los programas de ordenador generalmente se
pueden dividir en dos tipos, programas de sistema operativo y
programas de aplicaciones. El sistema operativo (OS) se puede ver
como un gestor de recursos que hace disponibles a los usuarios los
recursos de ordenador tales como procesadores, memoria, dispositivos
de entrada/salida (I/O) y dispositivos de comunicación. También
proporciona la funcionalidad base sobre la que se pueden escribir y
ejecutar los programa de aplicaciones. Funciones importantes del
sistema operativo incluyen compartir componentes físicos entre
usuarios, evitar que los usuarios se interfieran entre ellos,
programar recursos, organizar datos para acceso rápido y seguro, y
soportar las funciones de I/O y las comunicaciones de red.
A la parte central del OS se refiere comúnmente
como el núcleo. El núcleo normalmente es solamente una parte del
código de lo que comúnmente suele pensarse como el OS entero, pero
es una de las partes usadas más intensivamente del código. El
núcleo define el denominado espacio de usuario, en el que corren los
programas de aplicaciones, y proporciona los servicios a las
aplicaciones de usuario, incluyendo la gestión de memoria, asignar
los recursos de procesamiento, y responder a las llamadas del
sistema desde los procesos o aplicaciones de usuario. Otras
funciones importantes del núcleo incluyen manejar interrupciones,
sincronización y gestión de procesos, así como gestión de I/O
incluyendo las comunicaciones de red.
Dado que muchos dispositivos de componentes
físicos distintos se pueden conectar al sistema informático, se
implementa alguna funcionalidad de I/O como funcionalidad común que
es independiente del dispositivo. La funcionalidad del dispositivo
relacionado entonces se asigna dentro de los denominados
controladores de dispositivo. Esto significa que una aplicación de
usuario que necesita acceder a un dispositivo de componentes físicos
particular, tal como un dispositivo de comunicación de red, hace
que un sistema llame al OS, el cual a su vez invoca el controlador
de dispositivo asociado con el dispositivo de componentes
físicos.
Un Controlador de Interfaz de Red (NIC) es un
dispositivo de componentes físicos que comúnmente está conectado a
los sistemas informáticos para proporcionar capacidades de
comunicación de red, tales como comunicación Ethernet o ATM. Los
controladores de NIC normalmente implementan protocolos de bajo
nivel, tales como de protocolos de capa 1 (PHY) y capa 2 (MAC,
LLC), mientras que los protocolos de alto nivel (por ejemplo, la
serie de protocolos TCP/IP) tradicionalmente se asignan en el OS,
ejecutándose en el modo de núcleo. Además, las agrupaciones, por
ejemplo, normalmente tienen protocolos propietarios que se ejecutan
en la parte de arriba de Ethernet porque el TCP/IP (Protocolo de
Comunicación de Transporte/Protocolo Internet) no es muy apropiado
para el procesado de datos de agrupación en las Redes de Área de
Sistema (SANs). Estos protocolos propietarios generalmente también
están corriendo en modo de núcleo.
No obstante, el procesamiento centralizado de
protocolo en el núcleo impide que las aplicaciones de usuario
logren el rendimiento potencial bruto ofrecido por las redes de alta
velocidad que soportan. El problema de rendimiento se debe
principalmente a copiar el mensaje entre el espacio de usuario y el
espacio de núcleo, caché contaminada, interrupciones y código no
optimizado. La copia intensiva del mensaje crea una gran sobrecarga,
especialmente para mensajes cortos, y constituye la principal razón
para la alta carga de procesador y el bajo flujo de los subsistemas
de red con sistemas operativos estándar.
Este problema ha llegado a ser más pronunciado
con la llegada de las tecnologías de comunicación de red de altas
prestaciones tales como Gigabit Ethernet, ATM e Infiniband. El
principal desafío es poner en uso tales tecnologías de
comunicaciones de altas prestaciones se encuentra en primer lugar en
construir sistemas que puedan hacer eficientemente de interfaz de
estos medios de red y mantener el alto ancho de banda de todo el
camino entre dos aplicaciones de red que se comunican.
Esto ha conducido a la industria informática a
desarrollar controladores de dispositivos de red que soportan
acceso al NIC directamente desde el espacio de usuario, evitando
copiar mensajes entre el espacio de usuario y el espacio de núcleo.
El ejemplo más comúnmente conocido de este tipo de arquitectura de
acceso de red de espacio de usuario es la Arquitectura de Interfaz
Virtual (VIA) desarrollada por la Corporación Intel, la Corporación
Microsoft y la Corporación Compaq Computer. La Arquitectura de
Interfaz Virtual (VIA) es un estándar de la industria para Redes de
Área de Sistema que soporta acceso directo, cero copia del espacio
de usuario al NIC. La Arquitectura VIA fue diseñada para eliminar
la copia de mensajes, las interrupciones por mensaje y otra
sobrecarga del núcleo que ha hecho que las aplicaciones de red
tradicionales lleguen a ser cuellos de botella de prestaciones en
el pasado. Como se describió, por ejemplo, en la Guía del
Desarrollador de especificación de Arquitectura de Interfaz Virtual
(VI) de Intel, 9 de septiembre de 1998 y la Solicitud de Patente
Internacional WO 00/41358, la Arquitectura VIA evita las copias de
datos intermedios y no pasa por el núcleo del sistema operativo
para logar comunicación de ancho de banda alto y baja latencia. El
modelo VIA incluye un consumidor de VI y un proveedor de VI. El
consumidor de VI típicamente incluye una facilidad de comunicación
de sistemas operativos y aplicación de usuario y un agente de
usuario de VI. El proveedor de VI típicamente incluye la
combinación de un NIC de VI y un agente del núcleo de VI. El
Interfaz Virtual (VI) es un interfaz directo entre un NIC de VI y
un proceso o aplicación de usuario. El VI permite al NIC acceder
directamente a la memoria de la aplicación de usuario para
operaciones de transferencia de datos entre la aplicación y la red.
El VI generalmente comprende una cola para enviar y una cola para
recibir, cada una de las cuales se puede asignar directamente al
espacio de dirección de usuario, dando de esta manera acceso directo
del espacio de usuario al nivel de red y no pasando por el núcleo
del sistema operativo.
El informe técnico DART - Una Pastilla de
Interfaz de Red ATM de Baja Sobrecarga,
TR-96-18, Julio de 1996 expone un
NIC de ATM diseñado para comunicación de baja sobrecarga y alto
ancho de banda, proporcionando acceso directo y protegido de la
aplicación a/desde la red.
La principal desventaja de la arquitectura VIA
(y arquitecturas similares) es que requiere controladores NIC
habilitados especialmente para VIA, y no pueden funcionar con los
controladores NIC fuera de la plataforma tales como los
controladores habituales NIC de Ethernet. Dado que una gran cantidad
de funcionalidades para la comunicación de red se basa en
protocolos de nivel de núcleo tales como TCP/IP, se requieren tanto
un NIC habilitado para VIA como un NIC habitual de Ethernet
(TCP/IP) con la arquitectura VIA. La arquitectura VIA de esta
manera no está optimizada para la implementación dentro de sistemas
existentes, sino que requiere generalmente rediseño de los
componentes físicos de los sistemas existentes, además de un NIC
adicional y/o puerto NIC al sistema. Rediseñar una placa de
circuito, incluyendo diseño, pruebas, manipulación del producto,
mantenimiento, piezas de recambio, etc., puede conducir a costes
adicionales del orden de millones de dólares.
La solicitud de patente internacional, publicada
como WO 99/39254, se refiere a una arquitectura de programas
informáticos para proporcionar controladores de dispositivo de
componentes físicos de bajo nivel a partir del modo de usuario bajo
sistemas operativos multitarea. La arquitectura incluye un
controlador de interfaz del sistema de modo supervisor de capa fina
para presentar un interfaz completo a una aplicación de usuario. La
arquitectura también tiene un controlador de encaminamiento de
dispositivo también ubicado en la parte supervisora del sistema
operativo para encaminar entre el controlador de interfaz del
sistema y el controlador de dispositivo concreto ubicado en la
parte de modo de usuario del sistema operativo. Una envoltura de
controlador de dispositivo emula un modo supervisor como entorno
para el controlador de dispositivo.
La presente invención supera estas y otras
desventajas de las adaptaciones de la técnica previa.
Es un objetivo general de la presente invención
proporcionar acceso flexible y eficaz a un controlador de interfaz
de red (NIC), eliminando la CPU como el cuello de botella en la
cadena de comunicación.
También es un objetivo de la invención
proporcionar una arquitectura de controlador de dispositivo de red
mejorada y optimizada en costes. En particular, es beneficioso si la
arquitectura de controlador de dispositivo de red se adapta para la
implementación e integración en sistemas existentes.
Otro objetivo de la invención es proporcionar un
controlador de dispositivo de red flexible y robusto que no dependa
del NIC y trabaja con cualesquiera componentes físicos NIC fuera de
la plataforma.
Estos y otros objetivos se cumplen por la
invención como se define por las reivindicaciones de patente
anexas.
La idea general de la invención es proporcionar
una arquitectura de controlador de dispositivo de red eficaz,
flexible y rentable por medio del acceso integrado al espacio de
núcleo y acceso al espacio de usuario al NIC, preferentemente sobre
el mismo puerto NIC. Esto se consigue permitiendo el acceso directo
del espacio de usuario al NIC, en similitud a las arquitecturas de
acceso de red del espacio de usuario, y de forma más importante
permitiendo el acceso tunelizado del espacio de usuario entre el
espacio de núcleo y el NIC.
Desde un punto de vista de la arquitectura, la
nueva arquitectura de controlador de dispositivo de red normalmente
comprende un controlador de dispositivo de espacio de núcleo así
como una funcionalidad de controlador de dispositivo de espacio de
usuario. El controlador de dispositivo de espacio de núcleo se
adapta para permitir el acceso entre el espacio de núcleo y el
espacio de usuario a través de un interfaz de espacio de
usuario-espacio de núcleo. La funcionalidad de
controlador de dispositivo de espacio de usuario se adapta para
permitir el acceso directo entre el espacio de usuario y dicho NIC
a través de un interfaz de espacio de usuario-NIC
para enviar y recibir información a/desde el nivel de red. Esta
funcionalidad de controlador de dispositivo de espacio de usuario
también se adapta para interconectar el interfaz de espacio de
usuario-espacio de núcleo y el interfaz de espacio
de usuario-NIC para permitir el acceso tunelizado
del espacio de usuario entre el espacio de núcleo y el NIC para
enviar y recibir información a/desde el nivel de red. La información
a ser transferida entre un protocolo de nivel de núcleo en un
espacio de núcleo y el NIC se tunelizará a través del espacio de
usuario mediante uso combinado del controlador de dispositivo de
espacio de núcleo, la funcionalidad de controlador de dispositivo
de espacio de usuario, el interfaz de espacio de
usuario-espacio de núcleo y el interfaz de espacio
de usuario-NIC. De esta manera, se obtiene acceso
eficaz del espacio de usuario al NIC, mientras que al mismo tiempo
se permite ejecutar los protocolos a nivel de núcleo sobre el mismo
NIC.
Preferentemente, el controlador de espacio de
núcleo tiene dos modos de funcionamiento distintos. En el primer
modo, el controlador de dispositivo de espacio de núcleo es
utilizable para acceder directamente al NIC a través de un interfaz
de NIC-espacio de núcleo. En el segundo modo,
también referenciado como modo de acceso tunelizado de espacio de
usuario, el controlador de dispositivo de espacio de núcleo es
utilizable para acceder al NIC a través de la funcionalidad de
controlador de dispositivo de espacio de usuario.
Ventajosamente, la funcionalidad de controlador
de dispositivo de espacio de usuario se configura para la ejecución
en el contexto de aplicación de una aplicación de usuario, por
ejemplo implementada como una funcionalidad de librería de usuario.
Por seguridad y robustez, cuando se activa el modo de acceso
tunelizado de espacio de usuario, el sistema operativo ordena al
controlador de dispositivo de espacio de núcleo conmutar de vuelta
al primer modo de funcionamiento si la aplicación de usuario se
bloquea. Como una segunda línea de defensa, o como alternativa, el
controlador de dispositivo de espacio de núcleo se puede
proporcionar opcionalmente con un vigilante que conmuta de vuelta
al primer modo de funcionamiento si no ha habido llamada desde la
funcionalidad de controlador de dispositivo de espacio de usuario
durante un periodo de tiempo predeterminado.
En una implementación preferente, el controlador
de dispositivo de espacio de núcleo tiene dos bloques básicos de
construcción, el centro de controlador de dispositivo de red y el
agente de espacio de núcleo. El centro de controlador de
dispositivo de red se basa preferentemente en un controlador de
dispositivo de red estándar, por ejemplo obtenido de un
suministrador comercial, con la funcionalidad adicional de hacer
trabajar el controlador de dispositivo tanto en el modo por defecto
así como en el modo de acceso tunelizado de espacio de usuario de
la invención. En el modo por defecto, el centro del controlador de
dispositivo de red funciona como un controlador de dispositivo de
red habitual, accediendo directamente al NIC. En el modo de acceso
tunelizado de espacio de usuario, el centro de controlador encamina
los datos salientes al agente del núcleo y recibe los datos
entrantes del agente del núcleo. El agente del núcleo gestiona el
interfaz de espacio de usuario-espacio de núcleo, y
soporta la transferencia de información a/desde la funcionalidad de
controlador de dispositivo de espacio de usuario. El agente del
núcleo generalmente comprende la funcionalidad común a distintos
tipos de controladores NIC, permitiendo, de esta manera, fácil
adaptación de los controladores de dispositivo de red estándares
para un NIC particular a la nueva arquitectura de controlador de
dispositivo de red que soporta el acceso tunelizado del espacio de
usuario entre el espacio de núcleo y el NIC.
En conclusión, la invención permite el acceso
simultáneo del espacio de usuario y del espacio de núcleo a la capa
de red sobre el mismo puerto NIC, conduciendo, de esta manera, a una
reducción del número de puertos NIC requeridos y eliminando la
necesidad de rediseño de los componentes físicos. Mediante la
ejecución en la parte de superior del mismo NIC, se puede lograr un
coste/huella más pequeño y una mejor utilización de la red. La
nueva arquitectura de controlador de dispositivo de red se adecua
bien a las aplicaciones que necesitan comunicación de red de alto
rendimiento así como a la funcionalidad que se basa en los
protocolos de nivel de núcleo. Ejemplos de tales aplicaciones se
pueden encontrar en entornos embebidos, sistemas de comunicaciones y
así sucesivamente.
Se debería entender que las expresiones
"acceso NIC" y "acceder al NIC" incluyen tanto enviar
información como recibir información desde el nivel de red.
Otros beneficios de la nueva arquitectura de
controlador de dispositivo de red incluyen:
- Disipación de potencia y espacio de
componentes físicos reducido, lo cual es especialmente importante
para el tipo embebido de sistemas;
- Menos cableado;
- Número reducido de puertos requeridos en los
conmutadores de comunicación asociados, permitiendo de esta manera
el uso de conmutadores más pequeños y baratos; y
- Uso eficiente del ancho de banda en la
red.
Otras ventajas ofrecidas por la presente
invención se apreciarán tras la lectura de la descripción siguiente
de las realizaciones de la invención.
La invención junto con otros objetivos y
ventajas de la misma, se comprenderá mejor por referencia a la
siguiente descripción tomándola junto con los dibujos anexos, en los
que:
La Fig. 1 es un diagrama de bloques general
esquemático de una arquitectura de controlador de dispositivo de red
de acuerdo a una realización preferente de la invención;
La Fig. 2 ilustra el acceso del espacio de
núcleo y el acceso del espacio de usuario integrado al NIC suportado
por la transferencia del mensaje de copia cero dentro del
controlador de dispositivo de red de acuerdo con la invención;
La Fig. 3 es un diagrama de bloques esquemático
que ilustra una realización preferente de la arquitectura de
controlador de dispositivo de red de acuerdo con la invención;
La Fig. 4 es un diagrama de flujo esquemático de
un método para el acceso de red de acuerdo con una realización
preferente de la invención;
Las Fig. 5-10 son vistas
simplificadas que ilustran distintos casos de tráfico en la
arquitectura distribuida de controlador de dispositivo de red de la
Fig. 3; y
La Fig. 11 ilustra un ejemplo particular de una
implementación del sistema global.
A través de los dibujos, se usarán los mismos
caracteres de referencia para los elementos similares o
correspondientes.
La Fig. 1 es un diagrama de bloques general
esquemático de una arquitectura de controlador de dispositivo de
red de acuerdo con una realización preferente de la invención; La
arquitectura de controlador de dispositivo de red se ilustra en su
entorno de sistema, incluyendo el espacio de usuario, el espacio de
núcleo así como el espacio de red.
La invención propone una arquitectura de
controlador de dispositivo de red en que una fracción de la
funcionalidad de controlador de dispositivo estándar se distribuye
al espacio de usuario proporcionando comunicación NIC directa, y el
controlador de dispositivo de espacio de núcleo tiene la
funcionalidad adicional para el acceso al NIC a través del espacio
de usuario. La funcionalidad de controlador de dispositivo de red se
distribuye de esta manera entre el espacio de núcleo y el espacio
de usuario, y el controlador de dispositivo de red global comprende
un controlador de dispositivo de espacio de núcleo 10 y una
funcionalidad de controlador de dispositivo de espacio de usuario
20. El controlador de dispositivo de espacio de núcleo 10 se adapta
para permitir acceder a la funcionalidad de controlador de
dispositivo de espacio de usuario 20 a través de un interfaz de
espacio de usuario-espacio de núcleo 15. La
funcionalidad de controlador de dispositivo de espacio de usuario
20 se adapta para permitir el acceso directo entre el espacio de
usuario y el NIC 30 a través de un interfaz de espacio de
usuario-NIC 25, y también se adapta para
interconectar el interfaz de espacio de
usuario-espacio de núcleo 15 y el interfaz de
espacio de usuario-NIC 25 para proporcionar acceso
de espacio de núcleo y acceso de espacio de usuario integrado al
NIC 30. La funcionalidad de controlador de dispositivo de espacio
de usuario 20 proporciona acceso directo del espacio de usuario de
copia cero al NIC, mientras que la información a ser transferida
entre el espacio de núcleo y el NIC será "tunelizada" a través
del espacio de usuario mediante uso combinado del controlador de
dispositivo de espacio de núcleo 10, la funcionalidad de
controlador de dispositivo de espacio de usuario 20 y los dos
interfaces asociados 15, 25.
De esta manera, se obtiene acceso de espacio de
usuario eficiente al NIC 30, mientras que al mismo tiempo los
protocolos de nivel de núcleo 45 se permiten que se ejecuten sobre
el mismo NIC. La arquitectura de controlador de dispositivo de red
de la invención soporta el uso de un puerto NIC dedicado para el
tráfico del espacio de usuario a/desde una aplicación de usuario
40, pero también soporta compartición eficiente del mismo puerto
tanto para los protocolos de nivel de núcleo como los protocolos de
nivel de usuario. La posibilidad de compartir el mismo puerto NIC
generalmente abre a soluciones optimizadas en coste. Otro beneficio
importante de compartir el mismo puerto NIC es la posibilidad de
integrar la nueva arquitectura de controlador de dispositivo dentro
de sistemas existentes, sin modificaciones de los componentes
físicos. De esta manera, se puede evitar el rediseño del sistema,
conduciendo a ahorros de costes del orden de varios millones de
dólares.
Preferentemente, el controlador de dispositivo
de espacio de núcleo 10 tiene dos modos de funcionamiento distintos.
En el primer modo, el controlador de dispositivo de espacio de
núcleo 10 funciona como un controlador de dispositivo de red
estándar que accede directamente al NIC 30 a través del interfaz de
espacio de núcleo-NIC 35. En el segundo modo, al
que también se refiere como modo de acceso tunelizado de espacio de
usuario, el controlador de dispositivo de espacio de núcleo 10 es
utilizable para acceder al NIC 25 por medio del mecanismo de
tunelización del espacio de usuario descrito arriba.
Ventajosamente, la funcionalidad del controlador
de dispositivo de espacio de usuario 20 se configura para la
ejecución en el contexto de aplicación de una aplicación de usuario
40, por ejemplo implementada como una funcionalidad de librería de
usuario. Es importante que los protocolos de nivel de núcleo 45 no
se detengan en el caso de un bloqueo o punto muerto de la
aplicación de usuario. En el modo de acceso tunelizado de espacio
de usuario, el sistema operativo ordena al controlador de
dispositivo de espacio de núcleo 10 conmutar de vuelta al primer
modo de funcionamiento si se bloquea la aplicación de usuario. El
controlador de dispositivo de espacio de núcleo 10 ahora accede al
mismo puerto NIC como hizo la aplicación de usuario antes de
bloquearse. Como una segunda línea de defensa, o como una
alternativa, el controlador de dispositivo de espacio de núcleo 10
se puede proporcionar opcionalmente con un vigilante de programas 12
que conmuta de vuelta al primer modo de funcionamiento si no hay
llamada desde la funcionalidad de controlador de dispositivo de
espacio de usuario 20 durante un periodo de tiempo predeterminado.
Alternativamente, se puede conectar un vigilante de componentes
físicos basado en contador a la arquitectura de controlador de
dispositivo de red.
En una realización preferente de la invención,
todos los interfaces de comunicación 15, 25 y 35 dentro de la nueva
arquitectura de controlador de dispositivo de red soportan
transferencia de información de copia cero. Para una mejor
comprensión de la invención, se describirá ahora un ejemplo de
acceso de espacio de usuario y acceso de espacio de núcleo
integrado al NIC soportado por transferencia de mensaje de copia
cero dentro del controlador de dispositivo de red con referencia a
la Fig. 2. Cada uno de los interfaces 15, 25 y 35 preferentemente
se basa en una estructura de memoria compartida, por ejemplo en
forma de colas de almacenadores. Cada interfaz se asocia
normalmente con una cola de envío (KTX; TX; NTX) y una cola de
recepción (KRX; RX; NRX). Las colas de almacenadores típicamente se
adaptan para mantener información de puntero, y se acceden
escribiendo para el final y leyendo desde el principio. La
información de puntero apunta a datos reales tal como un mensaje
almacenado en la memoria común.
La transferencia de información se describirá
ahora en la dirección saliente desde la aplicación de usuario al
NIC, tanto para los protocolos de nivel de usuario, así como para
los protocolos de nivel de núcleo. Es evidente que la transferencia
de información es similar en la dirección entrante.
En el caso de un protocolo terminado de espacio
de usuario, se almacena un mensaje MSG-1 a ser
enviado desde una aplicación de usuario 40 al NIC 30 en la memoria
del sistema común 50 o cualquier otra memoria a la que se pueda
acceder por los componentes del sistema implicado. Un puntero
P-1 que apunta (línea discontinua) a la posición de
memoria correspondiente en la memoria del sistema 50 se entrega a la
funcionalidad de controlador de dispositivo de espacio de usuario
20 junto con una petición para acceso NIC. La funcionalidad de
controlador de dispositivo de espacio de usuario 20 pone el puntero
en la cola TX (localizada en el espacio de dirección de usuario)
del interfaz de espacio de usuario-NIC 25. El NIC 30
posteriormente consume el mensaje leyendo el puntero de la cola TX
y realizando un acceso directo a memoria (DMA) desde la posición
correspondiente en la memoria del sistema 50 para traer el
mensaje.
En el caso de una aplicación de usuario 40 en
necesidad de un protocolo de nivel de núcleo, la aplicación de
usuario hace una correspondiente llamada de sistema, y se copia el
mensaje a ser transferido al NIC 30 dentro del espacio de núcleo y
se gestiona por el protocolo de espacio de núcleo invocado 45. Una
vez que el mensaje MSG-2 está en el espacio de
núcleo, generalmente no habrá más copia de mensajes. En su lugar, el
protocolo de nivel de núcleo 45 entrega un puntero
P-2 que apunta (línea discontinua) a la posición de
memoria del mensaje en la memoria del sistema 50 al controlador de
dispositivo de espacio de núcleo 10, que inserta el puntero en la
cola KTX del interfaz de espacio de usuario-espacio
de núcleo 15. La funcionalidad de controlador de dispositivo de
espacio de usuario 20 obtiene la cola KTX y mueve el puntero a la
cola TX del interfaz de espacio de usuario-NIC 25.
Una vez el puntero se ha movido al principio de la cola, el NIC 30
leerá el puntero y traerá el mensaje correspondiente a través de un
acceso DMA a la memoria del sistema 50.
Preferentemente, todas las colas almacenadoras
se asignan en el espacio de direcciones del núcleo por el
controlador de dispositivo de espacio de núcleo. Las colas se
asignan al espacio de direcciones de la funcionalidad de
controlador de dispositivo de espacio de usuario. Para hacer
visibles las colas al NIC, primero se asignan al espacio de
direcciones de enlace común NIC y las direcciones obtenidas entonces
se escriben a los registros NIC específicos.
Trabajando con punteros de mensaje, en lugar de
mensajes completos, no habrá copia de mensajes real.
La Fig. 3 es un diagrama de bloques esquemático
que ilustra una realización preferente de la arquitectura de
controlador de dispositivo de red de acuerdo con la invención. El
controlador de dispositivo de espacio de núcleo 10 preferentemente
tienen dos bloques de construcción básicos, un centro del
controlador de dispositivo de red (centro del NDD) 14 y un agente
de espacio de núcleo 16. Junto con la funcionalidad de controlador
de dispositivo de espacio de usuario 20, el centro del NDD 14 y el
agente del núcleo 16 generalmente definen la arquitectura de
controlador de dispositivo de red global.
Los mensajes de espacio de usuario se
intercambian entre el espacio de usuario y el NIC sin implicación
del núcleo, y dado que la funcionalidad de controlador de
dispositivo de espacio de usuario típicamente trabaja en modo de
sondeo, no habrá interrupciones por mensaje. Los mensajes que se
originan desde los usuarios de nivel de núcleo se tunelizan entre
el centro del NDD 14 y el NIC 30, a través del agente del núcleo 16,
la funcionalidad de controlador de dispositivo de espacio de usuario
20 y los interfaces asociados 15, 25.
La mayoría de los sistemas operativos tales como
Tru64, Linux, Windows y OSE soportan alguna forma de estructura de
controlador de dispositivo, que comprende un juego de reglas,
interfaces y directrices sobre cómo desarrollar controladores de
dispositivo. Estas estructuras están bien documentadas y los
proveedores de OS a menudo suministran herramientas para generar
plantillas de controlador de dispositivo, ahorrando de esta manera
valioso tiempo de diseño y esfuerzo para desarrollar nuevos
controladores de dispositivo. El centro del controlador de
dispositivo de red 14 así como el agente del núcleo 16 generalmente
se implementan de acuerdo a una estructura conveniente de
controlador de dispositivo.
El centro del controlador de dispositivo de red
14 preferentemente se basa en un controlador de dispositivo de red
estándar, por ejemplo obtenido de un proveedor comercial, con la
funcionalidad adicional de hacer trabajar el controlador de
dispositivo tanto en el modo por defecto así como en el modo de
acceso tunelizado de espacio de usuario de la invención. El código
fuente para el controlador de dispositivo de red de diseño base
normalmente se puede obtener del proveedor del controlador de
dispositivo, o usando un código fuente disponible libremente
(Linux, NetBSD y FreeBSD por ejemplo). La adaptación base de diseño
para permitir la tunelización del espacio de usuario típicamente se
puede realizar añadiendo alrededor de 50 líneas de código (\sim1%
del código base de diseño) al controlador de dispositivo base de
diseño. También es posible diseñar el centro del NDD 14 en casa
usando cualquiera de las herramientas disponibles para generar
controladores de dispositivo.
En el modo por defecto, el centro del NDD 14
funciona como un controlador de dispositivo de red habitual,
accediendo directamente al NIC.
En el modo de acceso tunelizado de espacio de
usuario, el centro del NDD 14 encamina los datos salientes al
agente del núcleo y recibe los datos entrantes del agente del
núcleo. El centro del NDD o la funcionalidad de controlador de
dispositivo de espacio de usuario preferentemente también enmascaran
las interrupciones relacionadas con el procesamiento del mensaje
dado que la funcionalidad de controlador de dispositivo de espacio
de usuario 20 normalmente trabaja en modo de sondeo.
Convenientemente, el agente del núcleo 16
realiza algunos procedimientos de inicialización, asigna memoria
contigua, implementa el interfaz de espacio de
usuario-espacio de núcleo 15 así como el interfaz
a/desde el centro del NDD 14, y asigna la configuración asignada de
memoria y la memoria contigua y los registros de estado (CSR) al
espacio de direcciones de la funcionalidad de controlador de
dispositivo de espacio de usuario 20. El agente del núcleo 16
soporta la transferencia de mensajes entre el centro del NDD 14 y la
funcionalidad de controlador de dispositivo de espacio de usuario
20 a través del interfaz de espacio de
usuario-espacio de núcleo 15. Dado que las colas
FIFO KTX, KRX del interfaz de espacio de
usuario-espacio de núcleo se asignan en el espacio
de direcciones de núcleo y se asignan al espacio de direcciones de
usuario, no se requiere copia de mensajes entre el agente del
núcleo 16 y la funcionalidad de controlador de dispositivo de
espacio de usuario 20. El módulo de agente del núcleo generalmente
no es dependiente del NIC particular usado por el sistema, y puede
soportar transparentemente y simultáneamente distintos tipos de
controladores NIC, incluyendo controladores NIC de ATM, Fast
Ethernet y Gigabit Ethernet.
El agente del núcleo 16 también se puede adaptar
para monitorizar el estado de cualquier proceso usando la
funcionalidad de controlador de dispositivo de espacio de usuario
20. Esto hace posible al agente del núcleo ordenar al centro del NDD
14 conmutar de vuelta al modo por defecto en el caso de un fallo de
proceso de usuario.
En un caso típico, el agente del núcleo 16 se
puede realizar mediante aproximadamente 200 líneas de nuevo código
con alrededor de 300 líneas de código de estructura de controlador
de dispositivo estándar.
Como se mencionó arriba, la funcionalidad de
controlador de dispositivo de espacio de usuario 20 es una parte
pequeña de la funcionalidad de controlador de dispositivo total, y
preferentemente se implementa como la funcionalidad de librería de
usuario ejecutando en el espacio de usuario. Normalmente trabaja en
el modo de sondeo y soporta intercambio directo de mensajes entre
el espacio de usuario y el NIC. Típicamente, la funcionalidad de
controlador de dispositivo de espacio de usuario se puede realizar
mediante aproximadamente 200 líneas de código.
El interfaz entre los protocolos de nivel de
núcleo 45 tales como TCP/IP y DLI (Interfaz de Enlace de Datos) por
una parte y el centro del NDD 14 por otra parte, es convenientemente
un API (Interfaz de Programación de Aplicaciones) de controlador de
dispositivo de red existente suministrado con el OS.
El interfaz entre el centro del NDD 14 y el
agente del núcleo 16 es normalmente un API que soporta
enviar/recibir mensajes sobre un NIC específico.
El interfaz 15 entre el agente del núcleo 14 y
la funcionalidad de controlador de dispositivo de espacio de
usuario 20 se realiza preferentemente como un interfaz de fichero
estándar, soportando peticiones de funcionalidad de controlador de
dispositivo de espacio de usuario para abrir una conexión hacia el
agente del núcleo, asignando memoria almacenadora contigua y CSR
asignados de memoria desde el agente del núcleo al contexto de
aplicación. Si se desea, también puede soportar la funcionalidad de
vigilancia implementada en el agente del núcleo así como la
notificación de estado del NIC desde el agente del núcleo 16 a la
funcionalidad de controlador de dispositivo de espacio de usuario
20. La transferencia del mensaje entre el agente del núcleo 14 y la
funcionalidad de controlador de dispositivo de espacio de usuario
20 se realiza por medio de una estructura de memoria compartida,
como se describió previamente.
El interfaz entre la aplicación de usuario 40 y
la funcionalidad de controlador de dispositivo de espacio de
usuario 20 normalmente es un API que soporta enviar/recibir mensajes
directamente entre el espacio de direcciones de usuario y el NIC
30, en combinación con el interfaz basado en cola FIFO 25 entre la
funcionalidad de controlador de dispositivo de espacio de usuario
20 y el NIC 30. Este interfaz se puede realizar como un interfaz VI
estándar.
La Fig. 4 es un diagrama de flujo de un método
para acceso de red de acuerdo con una realización preferente de la
invención. En el paso S1, el acceso directo entre el espacio de
usuario y el NIC se proporciona a través de un interfaz de espacio
de usuario-NIC. En el paso S2, que se refiere al
modo de funcionamiento por defecto, el acceso directo entre el
espacio de núcleo y el NIC se puede proporcionar a través de un
interfaz de espacio de núcleo-NIC. En un modo de
acceso tunelizado de espacio de usuario, el acceso entre el espacio
de núcleo y el NIC se proporciona en dos pasos, proporcionando un
interfaz de espacio de usuario-espacio de núcleo en
el paso S3 e interconectando el interfaz de espacio de
usuario-espacio de núcleo y el interfaz de espacio
de usuario-NIC directo en el paso S4. La robustez y
fiabilidad se mantiene conmutando de vuelta al modo por defecto en
el paso S5 si la aplicación se bloquea. Como una segunda línea de
defensa, o como una alternativa al paso S5, se puede usar un
vigilante como en el paso S6, conmutando de vuelta al modo por
defecto si no ha habido llamada desde el espacio de usuario durante
un periodo de tiempo predeterminado. A continuación, se describirán
ejemplos ilustrativos de una serie de distintos casos de tráfico en
la arquitectura de controlador de dispositivo de red distribuida de
la Fig. 3 con referencia a las Fig. 5-10, cada una
de las cuales ilustra solamente aquellos componentes del sistema
que son relevantes al caso de tráfico respectivo.
El sistema informático se reinicia y carga el
sistema operativo. El sistema operativo se carga con un controlador
de dispositivo de red en el espacio de núcleo para permitir el
acceso a la red y más particularmente al controlador de interfaz de
red (NIC) 30. El controlador de dispositivo de espacio de núcleo
realizará un procedimiento de inicialización estándar como un
controlador de dispositivo de red de base de diseño (NDD), también
denominado como el centro del NDD 14.
La funcionalidad adicional es el registro al
agente del núcleo (no se muestra) del procedimiento anexo llamado
para cada NIC que controla el controlador. En el procedimiento de
registro, se envía un puntero CSR al agente del núcleo, y se
registran algunas funciones de rellamada automática en el agente del
núcleo (para conmutar entre modos, reconfigurar el NIC, empujar los
mensajes entrantes recibidos a través del agente del núcleo,
informar de errores, y así sucesivamente).
Para cada NIC controlado por el controlador NDD,
se establece por defecto el modo de funcionamiento, lo que
significa que el flujo de mensajes irá directamente desde el centro
del NDD 14 al NIC 30 y viceversa, como se ilustra en las Fig. 5 y
6. En la dirección saliente, ilustrada en la Fig. 5, el centro del
NDD 14 funciona como un NDD de base de diseño. La funcionalidad
adicional implica comprobar si está activado el modo tunelizado de
espacio de usuario para este interfaz. Si el modo de acceso
tunelizado de espacio de usuario está apagado, los mensajes al NIC
se ponen en el anillo NTX del centro del NDD 14. En la dirección
entrante, ilustrada en la Fig. 6, el centro del NDD 14 funciona
como un NDD de base de diseño, y los mensajes desde el NIC se ponen
en el anillo NRX.
A continuación, se inicializa y comienza una
aplicación de usuario. La ejecución de la funcionalidad de
controlador de dispositivo de espacio de usuario 20 en un contexto
de aplicación de la aplicación de usuario abre una conexión al
agente del núcleo 16 e indica con qué puerto quiere comunicar.
También solicita desde el agente del núcleo 16 la asignación del
área DMA y los registros CSR a su propio espacio de direcciones, y
el agente del núcleo 16 asigna memoria visible al NIC 30 al espacio
de direcciones de usuario. La funcionalidad de controlador de
dispositivo de espacio de usuario 20 ordena al agente del núcleo 16
conmutar al modo de acceso tunelizado de espacio de usuario. El
agente del núcleo reenvía la orden al centro del NDD 14, que primero
realiza un reinicio y entonces marca que el modo de acceso
tunelizado de espacio de usuario está activado para este interfaz
NIC particular. El centro del NDD 14 realiza entonces la
inicialización básica del NIC 30, y el agente del núcleo 16
preferentemente inicia la funcionalidad de vigilancia.
La funcionalidad de controlador de dispositivo
de espacio de usuario 20 establece los registros en el NIC 30
indicando dónde están localizados los anillos TX, RX. También puede
establecer los registros NIC para mejorar el rendimiento sobre PCI
(Interconexión de Componentes Periféricos) o cualquier otra
estructura de enlace común usada por la invención. Posteriormente,
la funcionalidad de controlador de dispositivo de espacio de usuario
20 habilita los motores TX, RX.
En la dirección saliente desde el espacio de
usuario directamente al NIC, como se ilustra en la Fig. 7, la
aplicación de usuario entrega descriptores de mensaje (similares a
los descriptores usados en la arquitectura VIA) o simples punteros
a la funcionalidad de controlador de dispositivo de espacio de
usuario 20, que pone los descriptores de mensaje en el anillo TX
ubicado en el espacio de direcciones de usuario. Trabajando con
punteros/descriptores de mensaje, en lugar de mensajes completos, no
habrá copia de mensajes real. El NIC 30 consume los mensajes usando
los descriptores de mensaje en el anillo TX para encontrar la
posición relevante en la memoria común.
En la dirección saliente desde un usuario de
nivel de núcleo al NIC, como se ilustra en la Fig. 8, el centro del
NDD 14 funciona como un NDD de base de diseño con la funcionalidad
adicional de comprobar si está activado el modo de acceso
tunelizado de espacio de usuario para este interfaz NIC. Si está
activado el modo de acceso tunelizado, el centro del NDD 14 entrega
los descriptores de mensaje entrante al agente del núcleo 16, que
pone los descriptores en el anillo KTX usado para la comunicación
con la funcionalidad de controlador de dispositivo de espacio de
usuario 20.
En un intervalo configurable, por ejemplo cada 1
ms, la funcionalidad de controlador de dispositivo de espacio de
usuario 20 normalmente sondeará el anillo KTX y moverá-insertará los
descriptores dentro del anillo TX usado para la comunicación entre
la funcionalidad de controlador de dispositivo de espacio de usuario
20 y el NIC 30. El NIC 30 finalmente consume los mensajes
trayéndolos desde la memoria común usando los descriptores de
mensaje transferidos.
Dos casos distintos de tráfico en la dirección
entrante desde el NIC se ilustran en las Fig. 9 y 10. El NIC 30
pone los descriptores asociados con los mensajes entrantes en el
anillo RX, y se sondea la funcionalidad de controlador de
dispositivo de espacio de usuario 20 para los descriptores de
mensajes entrantes. Los descriptores de mensajes se traen desde el
anillo RX. Para cada mensaje, se investiga si el tipo (Ethernet)
encaja con el que espera la aplicación de usuario. Si hay un
adaptación, el mensaje se entrega al usuario, como se ilustra en la
Fig. 9. Si no hay adaptación, el descriptor del mensaje se inserta
en el anillo KRX, correspondiente a la Fig. 10. En un intervalo
configurable, por ejemplo cada 1 ms, la funcionalidad de controlador
de dispositivo de espacio de usuario 20 llama al agente del núcleo
16. El agente del núcleo 16 entonces trae los descriptores
relativos a los mensajes entrantes desde el anillo KRX y los entrega
al centro del NDD 14, que realiza las operaciones necesarias para
entregar los mensajes al usuario de nivel de núcleo.
Si se bloquea la aplicación de usuario, el
sistema operativo informará normalmente al agente del núcleo 16,
que a su vez ordenará al centro del NDD 14 conmutar de vuelta al
modo por defecto. Como una segunda línea de defensa opcional, o
como alternativa, el agente del núcleo 16 se puede proporcionar con
un vigilante para manejar el caso cuando el sistema operativo por
alguna razón falla al informar al agente del núcleo 16 que se ha
bloqueado la aplicación de usuario. Por ejemplo, el vigilante se
puede implementar de tal manera que ordene al centro del NDD 14
conmutar de vuelta al modo por defecto, si no hay llamada desde la
funcionalidad de controlador de dispositivo de espacio de usuario
20 durante un periodo predeterminado, por ejemplo 10 ms. Esto
asegurará que la funcionalidad base del NDD nunca se pierda durante
más de un periodo de tiempo mínimo predeterminado.
Un ejemplo particular de una implementación del
sistema global se ilustra en la Fig. 11. El sistema global
comprende:
- \bullet
- Dos placas base de procesador central (CPBB-A, CPBB-B). Cada placa CPBB comprende uno o más servidores Alpha (EV68ab, 667MHz) y 1 GB de RAM.
- \bullet
- Dos placas de enlace común de actualización (UPBB-A, UPBB-B), una por CPBB. Cada placa UPBB comprende un NIC Gigabit Ethernet Intel 82543GC, junto con otros componentes UPBB.
- \bullet
- Un enlace común cPCI de 32 bit/66 MHz entre la CPU y el puente cPCI-PCI, y un enlace común PCI de 64bit/33 MHz entre el puente cPCI-PCI y el NIC Intel 82543GC.
- \bullet
- Una conexión de fibra Gigabit Ethernet (SX) entre dos pares CPBB-UPBB, que están conectadas una a una.
- \bullet
- Dos unidades base de I/O, cada una de las cuales se conecta al puente cPCI-PCI, y a un concentrador de red opcional así como conectado en serie a un PC-consola.
En las pruebas de prototipos, se usó una CPBB
para la ejecución del caso del servidor de un programa de prueba, la
otra CPBB para la ejecución del caso del cliente del programa de
prueba. El PC-consola se usa para acceder a la
aplicación que se ejecuta en las CPBBs.
Las mediciones indican que con la germinación
del protocolo eficiente en el espacio de usuario normalmente es
posible eliminar la CPU como un cuello de botella en la cadena de
comunicación. En las pruebas bidireccionales simultáneas, el enlace
común PCI llega a ser el cuello de botella, mientras que en las
pruebas bidireccionales alternativas para mensajes más grandes de
498 octetos, Ethernet llega a ser el cuello de botella. El hecho de
que el enlace común PCI llegue a ser el cuello de botella no es
sorprendente dado que es un enlace común compartido. Hoy en día,
existen enlaces comunes PCI mucho mejores en el mercado. Este NIC
Intel particular soporta enlace común PCI de 64bit/66MHz, que dobla
sustancialmente la capacidad comparado a usar el enlace común PCI
de 64bit/33MHz mencionado arriba. El PCI-X también
en el mercado hoy en día se ejecuta en 64bit/133 MHz. El
PCI-X 2.0 permitirá al enlace común ejecutarse al
doble de velocidad de transmisión de datos (266 MHz) así como al
cuádruple de velocidad de transmisión de datos (532 MHz). Además, el
PCI-SIG (Grupo de Interés Especial PCI) dará a
conocer PCI 3.0, que es un conmutador a la interconexión serie que
permite flujo más rápido, huella más pequeña y retrocompatibilidad
hacia los usuarios de programas informáticos. Obviamente, hay un
camino suave en el aumento del flujo del enlace común PCI en el
sistema,
Las mediciones han mostrado que con la
coexistencia de los protocolos de espacio de usuario y espacio de
núcleo sobre el mismo puerto Ethernet, es posible lograr un régimen
estable de 435 000 pares de señales por segundo (50 octetos de
datos) entre los dos servidores Alpha basados en CPBB sobre PCI y
Gigabit Ethernet con solo un 28,73% de carga de procesador. Con un
controlador de dispositivo de red estándar en el mismo entorno de
procesador, la carga de procesador alcanzará el 100% ya en 46 000
pares de señales por segundo.
Las realizaciones descritas arriba se dan
meramente como ejemplos, y se debe comprender que la presente
invención no está limitada a ellas. Es importante señalar también
que la invención no depende de la tecnología de comunicación
(Ethernet, ATM, Infiniband,...), sistema operativo (Tru64, Linux,
Solaris, Win,...) o CPU del ordenador principal (Alpha, Intel,
PowerPC,...).
Adicionalmente, la invención es relevante para
todos los tipos de información y datos, así como para todos los
tipos de redes, incluyendo redes LAN (Red de Área Local), MAN (Red
de Área Metropolitana), WAN (Red de Área Ampliada) y SAN (Red de
Área de Sistema).
Otras modificaciones, cambios y mejoras que
contienen los principios básicos que subyacen expuestos y
reivindicados aquí están dentro del alcance de la invención.
Claims (24)
1. Una arquitectura de controlador de
dispositivo de red para permitir el acceso entre el espacio del
núcleo del sistema operativo y un Controlador de Interfaz de Red,
también referenciado como un NIC, así como entre el espacio de
usuario y dicho NIC (30), que comprende:
- un controlador de dispositivo de espacio del
núcleo (10) adaptado para permitir el acceso entre el espacio del
núcleo y el espacio de usuario a través de un interfaz de espacio de
usuario-espacio del núcleo (15); y
- la funcionalidad de controlador de dispositivo
de espacio de usuario (20) que incluye:
- -
- medios para permitir el acceso directo entre el espacio de usuario y dicho NIC a través de un interfaz de espacio de usuario-NIC (25) para enviar y recibir información a/desde la red, y
- -
- medios para interconectar dicho interfaz de espacio de usuario-espacio del núcleo (15) y dicho interfaz de espacio de usuario-NIC (25) para permitir acceso tunelizado del espacio de usuario entre el espacio del núcleo y dicho NIC para enviar y recibir información a/desde la red,
caracterizada porque la información a ser
transferida entre un protocolo de nivel de núcleo (45) en el espacio
del núcleo y dicho NIC se tunelizará a través del espacio de usuario
mediante el uso combinado de dicho controlador de dispositivo del
espacio del núcleo (10), dicha funcionalidad de controlador de
dispositivo de espacio de usuario (20), dicho interfaz de espacio de
usuario-espacio del núcleo (15) y dicho interfaz de
espacio de usuario-NIC (25).
\vskip1.000000\baselineskip
2. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 1, en donde dicho
controlador de dispositivo de espacio de núcleo (10) se adapta para
establecer dicho interfaz de espacio de
usuario-espacio de núcleo (15) en relación a dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20).
3. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 1, en donde dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20) se adapta para traer información de puntero, apuntando a los
datos en una memoria común (50), desde un almacenador de memoria
asociado con uno de dicho interfaz de espacio de
usuario-espacio de núcleo y dicho interfaz de
espacio de usuario-NIC e insertando dicha
información de puntero dentro de un almacenador de memoria asociado
con el otro de dichos interfaces, interconectando por ello dicho
interfaz de espacio de usuario-espacio de núcleo
(IS) y dicho interfaz de espacio de usuario-NIC
(25).
4. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 1, en donde cada uno de
dicho interfaz de espacio de usuario-espacio de
núcleo (15) y dicho interfaz de espacio de
usuario-NIC (25) se asocia con dos almacenadores de
memoria, un almacenador de transmisión y un almacenador de
recepción.
5. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 4, en donde, para la
comunicación saliente de protocolo de nivel de núcleo, dicho
controlador de dispositivo de espacio de núcleo (10) se adapta para
insertar la información de puntero, apuntando a los datos en una
memoria común (50), dentro del almacenador de transmisión asociado
con dicho interfaz de espacio de usuario-espacio de
núcleo, y dicha funcionalidad de controlador de dispositivo de
espacio de usuario (20) se adapta para traer dicha información de
puntero de allí e insertarlo dentro del almacenador de transmisión
asociado con dicho interfaz de espacio de
usuario-NIC, y dicho NIC (30) se adapta para traer
dicha información de puntero desde el almacenador de transmisión
asociado con dicho interfaz de espacio de
usuario-NIC y para leer los datos correspondientes
desde dicha memoria común (50) basado en la información de puntero
obtenida.
6. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 4, en donde, para la
comunicación entrante de protocolo de nivel de núcleo, dicho NIC
(30) se adapta para insertar la información de puntero, apuntando a
los datos en una memoria común (50), dentro del almacenador de
recepción asociado con dicho interfaz de espacio de
usuario-espacio de núcleo, y dicha funcionalidad de
controlador de dispositivo de espacio de usuario (20) se adapta para
traer dicha información de puntero desde el almacenador de recepción
asociado con dicho interfaz de espacio de
usuario-NIC, y e insertarla dentro del almacenador
de recepción asociado con dicho interfaz de espacio de
usuario-espacio de núcleo, y dicho controlador de
dispositivo de espacio de núcleo (10) se adapta para traer dicha
información de puntero para transferir a un protocolo de nivel de
núcleo (45), que lee los datos correspondientes de dicha memoria
común (50) basados en la información de puntero.
7. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 1, en donde dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20) se configura para la ejecución en el contexto de aplicación de
una aplicación de usuario.
8. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 7, en donde dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20) se implementa como una funcionalidad de librería de espacio de
usuario.
9. La arquitectura de controlador de dispositivo
de red de acuerdo con la reivindicación 1, en donde dicho
controlador de dispositivo de espacio de núcleo (10) se utiliza para
acceder directamente a dicho NIC (30) a través de un interfaz de
espacio de núcleo-NIC (35) en un primer modo de
funcionamiento, y se utiliza para acceder a dicho NIC (30) a través
de dicho interfaz de espacio de usuario-espacio de
núcleo (15), dicha funcionalidad de controlador de dispositivo de
espacio de usuario (20) y dicho interfaz de espacio de
usuario-NIC (25) en un segundo modo de
funcionamiento.
10. La arquitectura de controlador de
dispositivo de red de acuerdo con la reivindicación 9, en donde
dicha funcionalidad de controlador de dispositivo de espacio de
usuario (20) se configura para la ejecución en el contexto de
aplicación de una aplicación de usuario, y dicho controlador de
dispositivo de espacio de núcleo (10) se adapta para conmutar a
dicho primer modo de funcionamiento en respuesta a un fallo de la
aplicación de usuario.
11. La arquitectura de controlador de
dispositivo de red de acuerdo con la reivindicación 9 o 10, en donde
dicho controlador de dispositivo de espacio de núcleo (10) incluye
la funcionalidad de vigilancia para conmutar a dicho primer modo de
funcionamiento si no hay llamada desde dicha funcionalidad de
controlador de dispositivo de espacio de usuario (20) durante un
periodo de tiempo predeterminado.
12. La arquitectura de controlador de
dispositivo de red de acuerdo con la reivindicación 9, en donde
dicho controlador de dispositivo de espacio de núcleo (10)
comprende:
- un agente del núcleo (16) para gestionar dicho
interfaz de espacio de usuario-espacio de núcleo
(15);
- un centro de controlador de dispositivo de red
(14) utilizable para acceder directamente a dicho NIC (30) en dicho
primer modo de funcionamiento, y utilizable para encaminar los datos
salientes a dicho agente de espacio de núcleo (16) y para recibir
datos entrantes desde dicho agente de espacio de núcleo (16) en
dicho segundo modo de funcionamiento.
\vskip1.000000\baselineskip
13. La arquitectura de controlador de
dispositivo de red de acuerdo con la reivindicación 12, en donde
dicha funcionalidad de controlador de dispositivo de espacio de
usuario (20) se configura para la ejecución en el contexto de
aplicación de una aplicación de usuario, y dicho agente de espacio
de núcleo (16) se adapta para responder a un fallo de aplicación de
usuario ordenando conmutar a dicho centro de controlador de
dispositivo de red (14) a dicho primer modo de funcionamiento.
14. La arquitectura de controlador de
dispositivo de red de acuerdo con la reivindicación 12 o 13, en
donde dicho agente de espacio de núcleo (16) incluye la
funcionalidad de vigilancia para ordenar conmutar a dicho centro de
controlador de dispositivo de red (14) a dicho primer modo de
funcionamiento si no hay llamada desde la funcionalidad de
controlador de dispositivo de espacio de usuario (20) durante un
periodo de tiempo predeterminado.
15. Un método para permitir el acceso entre el
espacio de núcleo del sistema operativo y un Controlador de Interfaz
de Red, también referido como un NIC, así como entre el espacio de
usuario y dicho NIC (30), dicho método que comprende los pasos
de:
- permitir el acceso entre el espacio de núcleo
y el espacio de usuario a través de un interfaz de espacio de
usuario-espacio de núcleo (15);
- permitir el acceso directo entre el espacio de
usuario y dicho NIC a través de un interfaz de espacio de
usuario-NIC (25) para enviar y recibir información
a/desde la red; e
- interconectar dicho interfaz de espacio de
usuario-espacio de núcleo (15) y dicho interfaz de
espacio de usuario-NIC (25) para permitir el acceso
tunelizado del espacio de usuario entre el espacio de núcleo y dicho
NIC para enviar y recibir información a/desde la red,
caracterizado porque la información a ser
transferida entre un protocolo de nivel de núcleo (45) en el espacio
de núcleo y dicho NIC se tunelizará a través del espacio de usuario
por el interfaz de espacio de usuario-espacio de
núcleo interconectado (15) y el interfaz de espacio de
usuario-NIC (25).
\vskip1.000000\baselineskip
16. El método de acuerdo con la reivindicación
15, en donde dicho paso de interconexión comprende los pasos de:
- traer la información de puntero, apuntando a
los datos en una memoria común (50), desde un almacenador de memoria
asociado con uno de dicho interfaz de espacio de
usuario-espacio de núcleo (15) y dicho interfaz de
espacio de usuario-NIC (25); e
- insertar dicha información de puntero dentro
de un almacenador de memoria asociado con el otro de dicho
interfaces.
\vskip1.000000\baselineskip
17. El método de acuerdo con la reivindicación
15, en donde dicha funcionalidad de acceso NIC se distribuye entre
un controlador de dispositivo de espacio de núcleo (10) y la
funcionalidad de controlador de dispositivo de espacio de usuario
(20).
18. El método de acuerdo con la reivindicación
17, que además comprende, para la comunicación saliente de protocolo
de nivel de núcleo, los pasos de insertar la información de puntero
dicho controlador de dispositivo de espacio de núcleo (10),
apuntando a los datos en una memoria común (50), dentro del
almacenador de transmisión asociado con dicho interfaz de espacio de
usuario-espacio de núcleo (15), y dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20) que trae dicha información de puntero de allí e insertarla
dentro del almacenador de transmisión asociado con dicho interfaz de
espacio de usuario-NIC (25), y dicho NIC (30) que
trae dicha información de puntero desde el almacenador de
transmisión asociado con dicho interfaz de espacio de
usuario-NIC y que lee los datos correspondientes de
dicha memoria común (50) basados en la información de puntero
obtenida.
19. El método de acuerdo con la reivindicación
17, que además comprende, para la comunicación entrante de protocolo
de nivel de núcleo, los pasos de insertar dicha NIC (30) la
información de puntero, apuntando a los datos en una memoria común
(50), dentro de un almacenador de recepción asociado con dicho
interfaz de espacio de usuario-NIC (25), y dicha
funcionalidad de controlador de dispositivo de espacio de usuario
(20) que trae dicha información de puntero desde el almacenador de
recepción asociado con dicho interfaz de espacio de
usuario-NIC e insertarla dentro del almacenador de
recepción asociado con dicho interfaz de espacio de
usuario-espacio de núcleo (15), y dicho controlador
de dispositivo de espacio de núcleo (10) que trae dicha información
de puntero para transferir a un protocolo de nivel de núcleo (45),
que lee los datos correspondientes de dicha memoria común (50)
basados en la información de puntero.
20. El método de acuerdo con la reivindicación
15, en donde dicho paso de permitir acceso directo entre el espacio
de usuario y dicho NIC (30) y dicho paso de interconexión se
ejecutan en el contexto de aplicación de una aplicación de
usuario.
21. El método de acuerdo con la reivindicación
20, en donde dicho paso de permitir acceso directo entre el espacio
de usuario y dicho NIC (30) y dicho paso de interconexión se
realizan por la funcionalidad de controlador de dispositivo de
espacio de usuario (20) implementada como la funcionalidad de
librería de espacio de usuario.
22. El método de acuerdo con la reivindicación
15, que además comprende los pasos de:
- en un primer modo de funcionamiento de un
controlador de dispositivo de espacio de núcleo (10), acceder
directamente a dicho NIC (30) desde dicho controlador de dispositivo
de espacio de núcleo (10) a través de un interfaz de espacio de
núcleo-NIC (35);
- en un segundo modo de funcionamiento de dicho
controlador de dispositivo de espacio de núcleo (10), acceder a
dicho NIC (30) a través del interfaz de espacio de
usuario-espacio de núcleo interconectado (15) y el
interfaz de espacio de usuario-NIC (25).
\vskip1.000000\baselineskip
23. El método de acuerdo con la reivindicación
22, en donde dicho paso de permitir acceso directo entre el espacio
de usuario y dicho NIC (30) y dicho paso de interconectar se
ejecutan en el contexto de aplicación de una aplicación de usuario,
y el sistema operativo ordena conmutar a dicho controlador de
dispositivo de espacio de núcleo (10) a dicho primer modo de
funcionamiento en respuesta a un fallo de aplicación de usuario.
24. El método de acuerdo con la reivindicación
22 ó 23, que además comprende el paso de conmutar a dicho primer
modo de funcionamiento si no hay llamada del espacio de usuario a
dicho controlador de dispositivo de espacio de núcleo (10) durante
un periodo de tiempo predeterminado.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/SE2002/001225 WO2004001615A1 (en) | 2002-06-19 | 2002-06-19 | A network device driver architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2333519T3 true ES2333519T3 (es) | 2010-02-23 |
Family
ID=29997657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES02744030T Expired - Lifetime ES2333519T3 (es) | 2002-06-19 | 2002-06-19 | Una arquitectura de controlador de dispositivo de red. |
Country Status (10)
Country | Link |
---|---|
US (2) | US7451456B2 (es) |
EP (1) | EP1514191B1 (es) |
CN (1) | CN1647054B (es) |
AT (1) | ATE443291T1 (es) |
AU (1) | AU2002345467A1 (es) |
BR (1) | BR0215746B1 (es) |
DE (1) | DE60233760D1 (es) |
DK (1) | DK1514191T3 (es) |
ES (1) | ES2333519T3 (es) |
WO (1) | WO2004001615A1 (es) |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2333519T3 (es) * | 2002-06-19 | 2010-02-23 | Telefonaktiebolaget L M Ericsson | Una arquitectura de controlador de dispositivo de red. |
GB0221464D0 (en) * | 2002-09-16 | 2002-10-23 | Cambridge Internetworking Ltd | Network interface and protocol |
US7443845B2 (en) * | 2002-12-06 | 2008-10-28 | Cisco Technology, Inc. | Apparatus and method for a lightweight, reliable, packet-based transport protocol |
US7475142B2 (en) * | 2002-12-06 | 2009-01-06 | Cisco Technology, Inc. | CIFS for scalable NAS architecture |
US7411973B2 (en) * | 2003-03-11 | 2008-08-12 | Broadcom Corporation | System and method for interfacing with a management system |
US7581033B2 (en) * | 2003-12-05 | 2009-08-25 | Unisys Corporation | Intelligent network interface card (NIC) optimizations |
US7506343B2 (en) * | 2004-08-19 | 2009-03-17 | International Business Machines Corporation | System and method for passing information from one device driver to another |
US7694312B2 (en) | 2004-09-10 | 2010-04-06 | Pleora Technologies Inc. | Methods and apparatus for enabling bus connectivity over a data network |
US7414975B2 (en) * | 2005-03-24 | 2008-08-19 | Ixia | Protocol stack |
US8121148B2 (en) * | 2005-03-24 | 2012-02-21 | Ixia | Protocol stack using shared memory |
US20060242270A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Isolation of user-mode device drivers |
CN100351788C (zh) * | 2005-05-18 | 2007-11-28 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
WO2006134373A2 (en) | 2005-06-15 | 2006-12-21 | Solarflare Communications Incorporated | Reception according to a data transfer protocol of data directed to any of a plurality of destination entities |
US20070011358A1 (en) * | 2005-06-30 | 2007-01-11 | John Wiegert | Mechanisms to implement memory management to enable protocol-aware asynchronous, zero-copy transmits |
US7596644B2 (en) * | 2006-01-11 | 2009-09-29 | Solarflare Communications, Inc. | Transmit rate pacing system and method |
US7650471B2 (en) * | 2006-01-06 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Head of queue cache for communication interfaces |
US8572729B1 (en) * | 2006-01-30 | 2013-10-29 | Mcafee, Inc. | System, method and computer program product for interception of user mode code execution and redirection to kernel mode |
US8116312B2 (en) | 2006-02-08 | 2012-02-14 | Solarflare Communications, Inc. | Method and apparatus for multicast packet reception |
US20070204278A1 (en) * | 2006-02-24 | 2007-08-30 | Radzykewycz Tim O | Driver services publication |
US9948533B2 (en) | 2006-07-10 | 2018-04-17 | Solarflare Communitations, Inc. | Interrupt management |
US9686117B2 (en) * | 2006-07-10 | 2017-06-20 | Solarflare Communications, Inc. | Chimney onload implementation of network protocol stack |
US8874780B2 (en) | 2006-07-17 | 2014-10-28 | Qualcomm Incorporated | Data buffering and notification system and methods thereof |
US20080025290A1 (en) * | 2006-07-27 | 2008-01-31 | Sharon Barkai | Distributed edge network |
CN100428171C (zh) * | 2006-12-08 | 2008-10-22 | 杭州华三通信技术有限公司 | 数据平面与控制平面之间的通讯方法 |
GB2446172B (en) * | 2007-01-30 | 2009-01-21 | Hewlett Packard Development Co | Control of data transfer |
US7925795B2 (en) * | 2007-04-30 | 2011-04-12 | Broadcom Corporation | Method and system for configuring a plurality of network interfaces that share a physical interface |
US8205218B1 (en) * | 2007-06-29 | 2012-06-19 | Emc Corporation | Data storage system having common software environment |
US7950025B1 (en) * | 2007-06-29 | 2011-05-24 | Emc Corporation | Common software environment |
US7950022B1 (en) * | 2007-06-29 | 2011-05-24 | Emc Corporation | Techniques for use with device drivers in a common software environment |
EP2168052A4 (en) * | 2007-07-16 | 2011-03-09 | Bigfoot Networks Inc | DATA BUFFER AND NOTIFICATION SYSTEM AND RELATED METHODS |
US8225329B1 (en) * | 2007-09-13 | 2012-07-17 | Juniper Networks, Inc. | Tail synchronized FIFO for fast user space packet access |
US20090089475A1 (en) * | 2007-09-28 | 2009-04-02 | Nagabhushan Chitlur | Low latency interface between device driver and network interface card |
US8929372B2 (en) * | 2007-10-30 | 2015-01-06 | Contextream Ltd. | Grid router |
CN101163074B (zh) * | 2007-11-12 | 2010-12-08 | 中兴通讯股份有限公司 | 一种WiMAX终端设备主机驱动方法 |
US8185783B2 (en) * | 2007-11-22 | 2012-05-22 | Microsoft Corporation | Split user-mode/kernel-mode device driver architecture |
US8239486B2 (en) * | 2008-03-19 | 2012-08-07 | Oracle International Corporation | Direct network file system |
US8359603B1 (en) * | 2008-03-28 | 2013-01-22 | Emc Corporation | Techniques for inter-user-space communication |
CN101252527B (zh) * | 2008-04-09 | 2011-01-26 | 腾讯科技(深圳)有限公司 | 一种网络中转的方法、网络中转服务器和内核管理模块 |
US8467295B2 (en) | 2008-08-21 | 2013-06-18 | Contextream Ltd. | System and methods for distributed quality of service enforcement |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
US8379516B2 (en) * | 2009-12-24 | 2013-02-19 | Contextream Ltd. | Grid routing apparatus and method |
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 |
US8737417B2 (en) * | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging 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 |
US10873613B2 (en) | 2010-12-09 | 2020-12-22 | Xilinx, Inc. | TCP processing for devices |
US9258390B2 (en) | 2011-07-29 | 2016-02-09 | Solarflare Communications, Inc. | Reducing network latency |
US9674318B2 (en) | 2010-12-09 | 2017-06-06 | Solarflare Communications, Inc. | TCP processing for devices |
US9600429B2 (en) | 2010-12-09 | 2017-03-21 | Solarflare Communications, Inc. | Encapsulated accelerator |
US8533812B1 (en) * | 2011-03-03 | 2013-09-10 | Symantec Corporation | Systems and methods for securing access to kernel devices |
CN102158493B (zh) * | 2011-04-15 | 2015-12-09 | 北京奇虎科技有限公司 | 一种Cookie解析方法、装置及一种客户端 |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
CN102209042B (zh) * | 2011-07-21 | 2014-04-16 | 迈普通信技术股份有限公司 | 一种避免先入先出队列溢出的方法及设备 |
US9081586B2 (en) * | 2011-11-29 | 2015-07-14 | Futurewei Technologies, Inc. | Systems and methods for customizing optimization/transformation/ processing strategies |
CN102520957A (zh) * | 2011-12-19 | 2012-06-27 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统的软件分离设计的方法 |
US9524197B2 (en) | 2012-09-06 | 2016-12-20 | Accedian Networks Inc. | Multicasting of event notifications using extended socket for inter-process communication |
US10505747B2 (en) | 2012-10-16 | 2019-12-10 | Solarflare Communications, Inc. | Feed processing |
US9742877B2 (en) | 2012-12-04 | 2017-08-22 | International Business Machines Corporation | Clustering support across geographical boundaries |
CN103078720B (zh) * | 2012-12-28 | 2015-11-25 | 华为技术有限公司 | 报文处理方法及装置 |
US9436621B1 (en) * | 2013-03-13 | 2016-09-06 | Emc Corporation | Layered device driver |
US9378046B1 (en) | 2013-03-13 | 2016-06-28 | Emc Corporation | Manipulating hardware using a layered device driver |
US9459910B1 (en) * | 2013-03-13 | 2016-10-04 | Emc Corporation | Controlling a layered driver |
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
US9621653B2 (en) | 2014-02-14 | 2017-04-11 | Western Digital Technologies, Inc. | Method and apparatus for a network connected storage system |
US9483420B2 (en) | 2014-02-28 | 2016-11-01 | Ncr Corporation | Self-service terminal (SST) device driver |
US9436395B2 (en) | 2014-03-14 | 2016-09-06 | Advanced Micro Devices, Inc. | Mechanisms to save user/kernel copy for cross device communications |
US9584628B2 (en) | 2015-03-17 | 2017-02-28 | Freescale Semiconductor, Inc. | Zero-copy data transmission system |
US10135789B2 (en) | 2015-04-13 | 2018-11-20 | Nicira, Inc. | Method and system of establishing a virtual private network in a cloud service for branch networking |
US11036533B2 (en) | 2015-04-17 | 2021-06-15 | Samsung Electronics Co., Ltd. | Mechanism to dynamically allocate physical storage device resources in virtualized environments |
US10838852B2 (en) | 2015-04-17 | 2020-11-17 | Samsung Electronics Co., Ltd. | System and method to extend NVME queues to user space |
US10331616B2 (en) * | 2015-08-05 | 2019-06-25 | Futurewei Technologies, Inc. | Integration of network linecard (LC) to host operating system (OS) |
CN105512286B (zh) * | 2015-11-27 | 2019-09-24 | 浪潮(北京)电子信息产业有限公司 | 一种读写数据免拷贝系统与方法 |
US20170249162A1 (en) * | 2016-02-25 | 2017-08-31 | Red Hat Israel, Ltd. | Safe transmit packet processing for network function virtualization applications |
TWI592803B (zh) * | 2016-03-11 | 2017-07-21 | 晨星半導體股份有限公司 | 嵌入式系統之操作方法與控制晶片 |
CN107204908A (zh) * | 2016-03-17 | 2017-09-26 | 阿里巴巴集团控股有限公司 | 一种基于通信接口框架的消息发送、接收方法及装置 |
RU2638781C2 (ru) * | 2016-09-29 | 2017-12-15 | Общество с ограниченной ответственностью "ГРЭК" | Способ организации прямого доступа в память при передаче информации между физическими объектами |
US10992568B2 (en) | 2017-01-31 | 2021-04-27 | Vmware, Inc. | High performance software-defined core network |
US20200036624A1 (en) | 2017-01-31 | 2020-01-30 | The Mode Group | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US10778528B2 (en) | 2017-02-11 | 2020-09-15 | Nicira, Inc. | Method and system of connecting to a multipath hub in a cluster |
US10999100B2 (en) | 2017-10-02 | 2021-05-04 | Vmware, Inc. | Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
US10778466B2 (en) | 2017-10-02 | 2020-09-15 | Vmware, Inc. | Processing data messages of a virtual network that are sent to and received from external service machines |
US11223514B2 (en) | 2017-11-09 | 2022-01-11 | Nicira, Inc. | Method and system of a dynamic high-availability mode based on current wide area network connectivity |
CN109688058B (zh) * | 2018-12-19 | 2021-03-02 | 迈普通信技术股份有限公司 | 报文处理方法、装置及网络设备 |
US10684963B2 (en) * | 2018-12-28 | 2020-06-16 | Intel Corporation | Fixed ethernet frame descriptor |
US20190179554A1 (en) * | 2019-02-21 | 2019-06-13 | Intel Corporation | Raid aware drive firmware update |
WO2020236296A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating efficient packet injection into an output buffer in a network interface controller (nic) |
US11121985B2 (en) | 2019-08-27 | 2021-09-14 | Vmware, Inc. | Defining different public cloud virtual networks for different entities based on different sets of measurements |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US12041479B2 (en) | 2020-01-24 | 2024-07-16 | VMware LLC | Accurate traffic steering between links through sub-path path quality metrics |
US20200319812A1 (en) * | 2020-06-03 | 2020-10-08 | Intel Corporation | Intermediary for storage command transfers |
US11709710B2 (en) * | 2020-07-30 | 2023-07-25 | Vmware, Inc. | Memory allocator for I/O operations |
US11575591B2 (en) | 2020-11-17 | 2023-02-07 | Vmware, Inc. | Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN |
US11929903B2 (en) | 2020-12-29 | 2024-03-12 | VMware LLC | Emulating packet flows to assess network links for SD-WAN |
US11792127B2 (en) | 2021-01-18 | 2023-10-17 | Vmware, Inc. | Network-aware load balancing |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
US11615042B2 (en) | 2021-03-31 | 2023-03-28 | Nutanix, Inc. | Common framework for kernel-assisted device polling |
US12009987B2 (en) | 2021-05-03 | 2024-06-11 | VMware LLC | Methods to support dynamic transit paths through hub clustering across branches in SD-WAN |
US11509571B1 (en) | 2021-05-03 | 2022-11-22 | Vmware, Inc. | Cost-based routing mesh for facilitating routing through an SD-WAN |
US11729065B2 (en) | 2021-05-06 | 2023-08-15 | Vmware, Inc. | Methods for application defined virtual network service among multiple transport in SD-WAN |
US12015536B2 (en) | 2021-06-18 | 2024-06-18 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds |
US12047282B2 (en) | 2021-07-22 | 2024-07-23 | VMware LLC | Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN |
US11943146B2 (en) | 2021-10-01 | 2024-03-26 | VMware LLC | Traffic prioritization in SD-WAN |
US11816057B2 (en) * | 2021-10-19 | 2023-11-14 | Citrix Systems, Inc. | User space driver for I/O traffic distribution and packet processing |
US11909815B2 (en) | 2022-06-06 | 2024-02-20 | VMware LLC | Routing based on geolocation costs |
US12057993B1 (en) | 2023-03-27 | 2024-08-06 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
US12034587B1 (en) | 2023-03-27 | 2024-07-09 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2570399A (en) * | 1998-01-30 | 1999-08-16 | 3Com Corporation | Software architecture for providing low level hardware device drivers from the user mode under multi-tasking operating systems |
JPH11238030A (ja) * | 1998-02-20 | 1999-08-31 | Mitsubishi Electric Corp | Pci−pciブリッジおよびそのための先入れ先出しメモリ |
US6658469B1 (en) * | 1998-12-18 | 2003-12-02 | Microsoft Corporation | Method and system for switching between network transport providers |
US6347337B1 (en) * | 1999-01-08 | 2002-02-12 | Intel Corporation | Credit based flow control scheme over virtual interface architecture for system area networks |
US20020120732A1 (en) * | 2001-02-27 | 2002-08-29 | Lee Daniel Joseph | Open internet protocol services platform |
US7061899B2 (en) * | 2001-05-01 | 2006-06-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing network security |
US7007157B2 (en) * | 2001-10-30 | 2006-02-28 | Microsoft Corporation | Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic |
ES2333519T3 (es) | 2002-06-19 | 2010-02-23 | Telefonaktiebolaget L M Ericsson | Una arquitectura de controlador de dispositivo de red. |
-
2002
- 2002-06-19 ES ES02744030T patent/ES2333519T3/es not_active Expired - Lifetime
- 2002-06-19 AT AT02744030T patent/ATE443291T1/de not_active IP Right Cessation
- 2002-06-19 EP EP02744030A patent/EP1514191B1/en not_active Expired - Lifetime
- 2002-06-19 AU AU2002345467A patent/AU2002345467A1/en not_active Abandoned
- 2002-06-19 DE DE60233760T patent/DE60233760D1/de not_active Expired - Lifetime
- 2002-06-19 WO PCT/SE2002/001225 patent/WO2004001615A1/en not_active Application Discontinuation
- 2002-06-19 CN CN028291557A patent/CN1647054B/zh not_active Expired - Fee Related
- 2002-06-19 US US10/517,724 patent/US7451456B2/en not_active Expired - Lifetime
- 2002-06-19 BR BRPI0215746-2A patent/BR0215746B1/pt not_active IP Right Cessation
- 2002-06-19 DK DK02744030T patent/DK1514191T3/da active
-
2008
- 2008-11-05 US US12/265,103 patent/US8332875B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN1647054B (zh) | 2010-09-08 |
WO2004001615A1 (en) | 2003-12-31 |
US20090077572A1 (en) | 2009-03-19 |
CN1647054A (zh) | 2005-07-27 |
EP1514191B1 (en) | 2009-09-16 |
BR0215746A (pt) | 2005-03-22 |
AU2002345467A1 (en) | 2004-01-06 |
US7451456B2 (en) | 2008-11-11 |
DK1514191T3 (da) | 2009-12-07 |
DE60233760D1 (de) | 2009-10-29 |
EP1514191A1 (en) | 2005-03-16 |
US8332875B2 (en) | 2012-12-11 |
BR0215746B1 (pt) | 2015-02-10 |
ATE443291T1 (de) | 2009-10-15 |
US20050210479A1 (en) | 2005-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2333519T3 (es) | Una arquitectura de controlador de dispositivo de red. | |
US11182317B2 (en) | Dual-driver interface | |
ES2830355T3 (es) | Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware | |
EP1358562B1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
US20180375782A1 (en) | Data buffering | |
Takahashi et al. | PM2: High performance communication middleware for heterogeneous network environments | |
US8990801B2 (en) | Server switch integration in a virtualized system | |
US7352763B2 (en) | Device to receive, buffer, and transmit packets of data in a packet switching network | |
US20020091826A1 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
KR100640515B1 (ko) | 주변장치로부터 호스트 컴퓨터 시스템에 인터럽트를전달하기 위한 방법 및 장치 | |
US20080022016A1 (en) | Network memory pools for packet destinations and virtual machines | |
EP1358563A1 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
EP2040176A1 (en) | Dynamic Resource Allocation | |
US20020049875A1 (en) | Data communications interfaces | |
US20020049878A1 (en) | Data communications interfaces | |
Miller et al. | Lower level architecture of the Sombrero single address space distributed operating system |