dhcp: Wie wird das renewal-Intervall berechnet?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
StYxXx
Beiträge: 14
Registriert: 25.08.2008 21:26:41
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

dhcp: Wie wird das renewal-Intervall berechnet?

Beitrag von StYxXx » 01.03.2019 00:53:22

Hallo,

mir ist folgendes aufgefallen:
Mein Rechner bekommt eine lease time von 3600 mitgeteilt, wenn er sich mit dem Netzwerk verbindet.
tcpdump:
Lease-Time Option 51, length 4: 3600
bzw. syslog
NetworkManager[646]: <info> [1551397277.1178] dhcp4 (eth0): lease time 3600
dhclient wählt jedoch offenbar willkürliche Werte zur Aktualisierung aus, so steht im syslog jeweils (Auszug):
dhclient[25533]: bound to 192.168.0.31 -- renewal in 1691 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1436 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1356 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1739 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1630 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1393 seconds.
dhclient[25643]: bound to 192.168.0.31 -- renewal in 1436 seconds.
Also völlig verschiedene und krumme Werte, die ungefähr im Mittel 40% der eigentlichen lease time betragen, was mir recht kurz erscheint. Ich vermute, dass es irgendwie mit sowas wie [leastetime/faktor+random] berechnet wird. Ich fand dazu allerdings nichts mit google und bin neugierig.

/etc/dhcp/dhclient.conf hat keinen passenden Eintrag und interessanterweise sind die Dateien /var/lib/dhclient.*.leases seit Jahren nicht angefasst worden und deren Inhalte entsprechend veraltet.

Grüße :)

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: dhcp: Wie wird das renewal-Intervall berechnet?

Beitrag von eggy » 01.03.2019 06:17:44

Ich hab "ungefähr die Hälfte der Zeit" im Hinterkopf, kann mich aber irren, ist schon nen paar Jahre her, dass ich mich damit beschäftigt hatte. Sollte aber alles in nem RFC stehen.

Kurze Suche im Netz bringt das zu Tage: https://docs.microsoft.com/en-us/previo ... echnet.10) demnach wars zumindest bei Windows 2k mal 50%.
Kann aber sein, das Linuxe da etwas flexibler sind.

Glücklicherweise haben wir hier freie Software ... daher ein kurzer Blick in den Source von isc-dhcp-client: ./.pc/dhclient-dividebyzero.patch/client/dhclient.c

Code: Alles auswählen

* In addition, there are several relevant per-lease variables.
 *   T1_expiry, T2_expiry, lease_expiry: lease milestones
 * In the active lease, these control the process of renewing the lease;
Die Datei ist verständlich, sehr gut dokumentiert, aber doch recht umfangreich.
Lohnt sich für Dich wahrscheinlich, da mal in Ruhe durchzugehn.

Mit dem Wissen um die T1 & T2 nochmal schnell nen Blick ins RFC https://www.ietf.org/rfc/rfc2131.txt
Times T1 and T2 are configurable by the server through options. T1
defaults to (0.5 * duration_of_lease). T2 defaults to (0.875 *
duration_of_lease). Times T1 and T2 SHOULD be chosen with some
random "fuzz" around a fixed value, to avoid synchronization of
client reacquisition.

A client MAY choose to renew or extend its lease prior to T1. The
server MAY choose to extend the client's lease according to policy
set by the network administrator. The server SHOULD return T1 and
T2, and their values SHOULD be adjusted from their original values to
take account of the time remaining on the lease.
Aber manchmal ist es wirklich zu einfach... Wikipedia https://de.wikipedia.org/wiki/Dynamic_H ... n_Protocol sagt:
Zusammen mit der IP-Adresse erhält der Client in der DHCPACK-Nachricht neben der "lease time", also der Gültigkeitsdauer der IP-Konfiguration, zwei Fristen: Die "renewal time" T1 und die "rebinding time" T2. Der Standard schlägt vor, dass T1 auf die Hälfte und T2 auf 7/8, also 87,5 % der Gültigkeitsdauer der lease time gesetzt wird. Für beide Werte kann der DHCP-Server optional andere Werte vorgeben.
Edit: zweiten Absatz aus RFC noch eingefügt

Antworten