La especificación de interfaz de controlador de red ( NDIS ) es una interfaz de programación de aplicaciones (API) para controladores de interfaz de red (NIC).
Fue desarrollado conjuntamente por Microsoft y 3Com Corporation y se utiliza principalmente en Microsoft Windows . Sin embargo, los proyectos de código abierto NDISwrapper y Project Evil permiten que muchas NIC compatibles con NDIS se utilicen con Linux , FreeBSD y NetBSD . magnussoft ZETA , un derivado de BeOS , admite varios controladores NDIS.
El NDIS forma la subcapa de control de enlace lógico (LLC), que es la subcapa superior de la capa de enlace de datos OSI (capa 2). Por lo tanto, el NDIS actúa como interfaz entre la subcapa de control de acceso al medio (MAC), que es la subcapa inferior de la capa de enlace de datos, y la capa de red (capa 3).
NDIS es una biblioteca de funciones a menudo denominada " envoltorio " que oculta la complejidad subyacente del hardware NIC y sirve como interfaz estándar para controladores de protocolo de red de nivel 3 y controladores MAC de nivel de hardware.
Las versiones de NDIS compatibles con varias versiones de Windows son las siguientes: [1]
El tráfico aceptado por la NIC está controlado por un controlador de minipuerto NDIS [17] mientras que varios protocolos, como TCP/IP , se implementan mediante controladores de protocolo NDIS. [18] Un solo minipuerto puede estar asociado con uno o más protocolos. Esto significa que el tráfico que llega al minipuerto puede ser recibido en paralelo por varios controladores de protocolo. Por ejemplo, Winpcap agrega un segundo controlador de protocolo en el minipuerto seleccionado para capturar paquetes entrantes. Además, es posible simular varias NIC virtuales implementando controladores de minipuerto virtuales que envían y reciben tráfico desde una única NIC física. Un ejemplo de uso de un controlador de minipuerto virtual es agregar NIC virtuales, cada una con una VLAN diferente . Debido a que las implementaciones no pueden asumir que otros controladores recibieron los mismos búferes, uno debe tratar los búferes entrantes como de solo lectura y un controlador que cambia el contenido del paquete debe asignar sus propios búferes. Los controladores de minipuerto NDIS también pueden usar interfaces del modelo de controlador de Windows para controlar el hardware de red. [19]
Otro tipo de controlador es el controlador intermedio NDIS. Los controladores intermedios se ubican entre las capas MAC e IP y pueden controlar todo el tráfico que acepta la NIC. En la práctica, los controladores intermedios implementan tanto interfaces de minipuerto como de protocolo. El controlador de minipuerto y el controlador de protocolo se comunican realmente con las interfaces de minipuerto y protocolo correspondientes que residen en el controlador intermedio. Este diseño permite agregar varios controladores intermedios encadenados entre los controladores de minipuerto y protocolo. Por lo tanto, los proveedores de controladores no pueden asumir que la interfaz a la que envían tráfico está implementada por el último controlador de la cadena. Para escribir aplicaciones que utilicen NDIS, se pueden utilizar ejemplos que acompañan al Kit de controladores de Windows (WDK) de Microsoft. El ejemplo "PassThru" es un buen punto de partida para los controladores intermedios, ya que implementa todos los detalles necesarios requeridos en este tipo de controlador, pero simplemente pasa el tráfico al siguiente controlador de la cadena.