Básicamente es la diferencia entre una cola de mensajes full-duplex (Netlink) y las funciones getter / setter ( ioctl
). Ambos están destinados a que las aplicaciones del usuario se comuniquen con los servicios del kernel, pero ahí es donde terminan las similitudes:
- Los servicios del kernel pueden enviar información directamente a las aplicaciones del usuario a través de Netlink, mientras que usted habría encuestado explícitamente el kernel con funciones
ioctl
, una operación relativamente costosa. - Netlink comms es muy asíncrono , y cada lado recibe mensajes en algún momento después de que el otro lado los envíe.
ioctl
s son puramente sincrónicos : “¡Hola, kernel, DESPIERTA! ¡Necesito que proceses mi solicitud AHORA! ¡CHOP CHOP! ” - Netlink admite comunicaciones multicast entre el kernel y múltiples procesos de espacio de usuario, mientras que los
ioctl
s son estrictamente uno a uno. - Los mensajes de Netlink pueden perderse por varias razones (por ejemplo, sin memoria), mientras que los
ioctl
s son generalmente más confiables debido a su naturaleza de procesamiento inmediato. - Netlink es efectivamente solo para Linux; hay un RFC que extiende su utilidad al mundo de las redes definidas por software (SDN), pero no conozco a nadie que lo haya implementado para una adopción generalizada. Por el contrario, el código escrito para usar
ioctl
s comunes (p. Ej., La serie de E / S de terminal) es en gran parte portátil en todas las plataformas.
Si está implementando un módulo de kernel de Linux y se pregunta qué método usar, le recomiendo lo siguiente:
- Control :
ioctl
debería ser su primera opción, a menos que haya una razón primordial, debido a su inmediatez y entrega confiable. - Datos : para pasar datos ocasionalmente,
ioctl
debería funcionar bien. Para datos masivos, y especialmente si observa operaciones asincrónicas, se prefiere Netlink.
- ¿Cuál es la diferencia clave entre una red definida por software y una red tradicional?
- ¿Qué herramientas gratuitas se utilizan para agregar usuarios, limitar el ancho de banda y bloquear algunos sitios web en la red de internet de una escuela con ambas PC en el laboratorio y WiFi?
- ¿Cuáles son los mejores blogs para entusiastas de las redes informáticas?
- ¿MCITP es un lenguaje de red?
- ¿Cuál es la principal diferencia entre subredes, CIDR y superredes?