O que são LPF e Socket/fallback na saída de dhclient -v?

O que são LPF e Socket/fallback na saída de dhclient -v?

Abaixo está um exemplo de saída desse 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)

Não consegui encontrar nenhuma documentação sobre o que são "LPF" ou "Socket/fallback".
Você poderia dar alguma explicação e onde encontrar mais sobre isso?

A ligaçãohttps://www.isc.org/software/dhcp/não ajudou muito.

Responder1

Aparentemente LPF refere-se ao Filtro de Pacotes Linux:https://gitlab.isc.org/isc-projects/dhcp/-/blob/master/common/lpf.c

Em outros contextos, também é conhecido comoFiltragem de soquete Linux ou filtro de pacotes Berkeley.

Um cliente DHCP precisa ser capaz de enviar e receber pacotes UDP de transmissão, enquanto a interface de rede ainda não possui necessariamente um endereço IP configurado. Ele também precisa se preocupar com qual interface os pacotes passarão, para atribuir a configuração de rede à interface de rede específica na qual foi recebido, e não a qualquer interface em um sistema que tenha mais de uma.

Uma API de filtro de pacotes, como LPF no Linux, é a maneira mais flexível e eficiente para o software DHCP informar à pilha de rede do sistema operacional: "Vou usar um soquete de pacote bruto porque minhas necessidades de tráfego de rede são um pouco incomuns, mas ainda não quero receber uma cópia docada pacoteque chega através da interface de rede - apenas pacotes UDP nesses números de porta específicos."

Se o LPF ou uma API de filtro de pacotes semelhante não estiver disponível, o software DHCP terá que contar com a API de soquetes de rede padrão e suas diversas extensões - particularmente opções de soquete. Mas eles não são suportados uniformemente em todos os sistemas operacionais suportados pelo conjunto ISC DHCP e, portanto,o código de soquetes do ISC DHCP é bastante complexoe cheio de #ifdefs.

Se não houver API de filtro de pacotes nem opções de soquete específicas disponíveis, o conjunto DHCP poderá funcionar corretamente apenas se o host tiver exatamente uma interface de rede:

#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

Quando uma API de filtro de pacotes está sendo usada, o conjunto ISC DHCP também configura umsoquete de reservausando a API de soquetes de rede padrão. No lado de recepção, um soquete substituto apenas descarta qualquer tráfego que chega: talvez alguma API de filtro de pacotes produza umcópia dedo tráfego de entrada, e o soquete regular precisa estar presente para garantir que o sistema operacional não pense que a porta UDP usada para DHCP está fechada e fará com que mensagens de erro ICMP sejam enviadas para quaisquer pacotes DHCP unicast recebidos (ou seja, atualizações de um ativo existente alugar).

No lado do envio, o uso de um soquete substituto é menos óbvio. Se alguém souber mais, sinta-se à vontade para editar esta resposta ou adicionar a sua própria.

informação relacionada