¿Qué son LPF y Socket/fallback en la salida de dhclient -v?

¿Qué son LPF y Socket/fallback en la salida de dhclient -v?

A continuación se muestra un ejemplo de resultado de ese comando:

$ sudo dhclient -v
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/00:15:5d:5a:e4:c5
Sending on   LPF/eth0/00:15:5d:5a:e4:c5
Listening on LPF/dummy0/6e:0b:72:f9:83:f0
Sending on   LPF/dummy0/6e:0b:72:f9:83:f0
Listening on LPF/bond0/82:a2:7e:03:69:19
Sending on   LPF/bond0/82:a2:7e:03:69:19
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0x3115634c)
DHCPDISCOVER on dummy0 to 255.255.255.255 port 67 interval 3 (xid=0x1ab3dc37)
DHCPDISCOVER on bond0 to 255.255.255.255 port 67 interval 3 (xid=0xcea7a32d)

No pude encontrar ninguna documentación sobre qué son "LPF" o "Socket/fallback".
¿Podría darnos alguna explicación y dónde encontrar más información al respecto?

El enlacehttps://www.isc.org/software/dhcp/no ayudó mucho.

Respuesta1

Aparentemente LPF se refiere al filtro de paquetes de Linux:https://gitlab.isc.org/isc-projects/dhcp/-/blob/master/common/lpf.c

En otros contextos, también se le conoce comoFiltrado de sockets de Linux o filtro de paquetes Berkeley.

Un cliente DHCP debe poder enviar y recibir paquetes UDP de difusión, mientras que la interfaz de red no necesariamente tiene todavía una dirección IP configurada. También debe preocuparse por qué interfaz pasarán los paquetes, para poder asignar la configuración de red a la interfaz de red específica en la que se recibió, y no a cualquier interfaz en un sistema que tenga más de una.

Una API de filtro de paquetes, como LPF en Linux, es la forma más flexible y eficiente para que el software DHCP le indique a la pila de red del sistema operativo: "Voy a usar un socket de paquetes sin formato porque mis necesidades de tráfico de red son un poco inusuales. pero todavía no quiero recibir una copia decada paqueteque llega a través de la interfaz de red: solo paquetes UDP en estos números de puerto en particular".

Si LPF o una API de filtro de paquetes similar no está disponible, el software DHCP tendría que depender de la API de sockets de red estándar y sus diversas extensiones, particularmente las opciones de socket. Pero estos no son compatibles de manera uniforme en todos los sistemas operativos compatibles con la suite ISC DHCP, por lo queEl código de sockets de ISC DHCP es bastante complejo.y lleno de #ifdefs.

Si no hay una API de filtro de paquetes ni opciones de socket particulares disponibles, la suite DHCP podría funcionar correctamente sólo si el host tiene exactamente una interfaz de red:

#if !defined(SO_BINDTODEVICE) && !defined(USE_FALLBACK)
    /* Make sure only one interface is registered. */
    if (once) {
        log_fatal ("The standard socket API can only support %s",
               "hosts with a single network interface.");
    }
    once = 1;
#endif

Cuando se utiliza una API de filtro de paquetes, la suite ISC DHCP también configura unaenchufe de reservautilizando la API de sockets de red estándar. En el lado de recepción, un socket de reserva simplemente descarta cualquier tráfico entrante: tal vez alguna API de filtro de paquetes produzca unCopiardel tráfico entrante, y el socket normal debe estar presente para garantizar que el sistema operativo no piense que el puerto UDP utilizado para DHCP está cerrado y cause que se envíen mensajes de error ICMP para cualquier paquete DHCP de unidifusión recibido (es decir, actualizaciones de un activo existente). alquiler).

En el lado del envío, el uso de un socket alternativo es menos obvio. Si alguien más sabe más, no dude en editar esta respuesta o agregar la suya propia.

información relacionada