ES2333519T3 - Una arquitectura de controlador de dispositivo de red. - Google Patents

Una arquitectura de controlador de dispositivo de red. Download PDF

Info

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
Application number
ES02744030T
Other languages
English (en)
Inventor
Mario Andjelic
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES2333519T3 publication Critical patent/ES2333519T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common 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.
Campo técnico de la invención
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).
Antecedentes de la invención
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.
Resumen de la invención
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.
Breve descripción de los dibujos
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.
Descripción detallada de las realizaciones de la invención
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.
ES02744030T 2002-06-19 2002-06-19 Una arquitectura de controlador de dispositivo de red. Expired - Lifetime ES2333519T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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.

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