https://bugzilla.novell.com/show_bug.cgi?id=657402 https://bugzilla.novell.com/show_bug.cgi?id=657402#c0 Summary: dhcpcd sends RENEWAL as ethernet broadcast instead of unicast Classification: openSUSE Product: openSUSE 11.4 Version: Factory Platform: All OS/Version: openSUSE 11.3 Status: NEW Severity: Normal Priority: P5 - None Component: Network AssignedTo: bnc-team-screening@forge.provo.novell.com ReportedBy: martin.konold@erfrakon.de QAContact: qa@suse.de Found By: --- Blocker: --- Created an attachment (id=403341) --> (http://bugzilla.novell.com/attachment.cgi?id=403341) Wireshark Sceenshot User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.8) Gecko/20100723 SUSE/3.6.8-1.1 Firefox/3.6.8 I discovered that the dhcpcd has a regression since SLES10 with regards to DHCP renewals. When dhcpcd got the initial lease successfully it shall perform a DHCP RENEW after T1. In contrast to the initial DHCP REQUEST the RENEWAL is not a broadcast but a unicast message to the DHCP Server. Current (Factory) dhcpcd-3.2.3 as used since OpenSUSE 11.0 has a regression which was not present in dhcpcd-1.3.22pl4 (SLES-10). Correct DHCP renewal semantics as implemented in dhcpcd-1.3.22pl4: * After renewal is due a special DHCP REQUEST is send as a unicast message to the DHCP Server * This unicast message is sent to the IP of the DHCP server * If the DHCP server is within the same LAN this unicast message is sent to the MAC address of the DHCP server on the ethernet layer. * If the DHCP server is in another network the unicast message is sent to the responsible gateway MAC address Incorrect DHCP renewal semantics as implemented in dhcpcd-3.2.3 (Factory) * After renewal is due a special DHCP REQUEST is send as a unicast message to the DHCP Server * This unicast message is sent to the IP of the DHCP server * If the DHCP server is within the same LAN this unicast message is sent to the MAC BROADCAST address (ff:ff:ff:ff:ff:ff) on the ethernet layer. * If the DHCP server is in another network the unicast message is sent to the MAC BROADCAST address (ff:ff:ff:ff:ff:ff) on the ethernet layer instead directly to the responsible gateway MAC address. * At least CISCOs by default don't forward packages received via Ethernet broadcast to the destination server. Consequences OpenSUSE cannot perform DHCP renewals --> After the lease finally expires the network access is interrupted and a new lease has to be aquired. --> errors on the network level, outages etc. Reproducible: Always Steps to Reproduce: 1. obtain a DHCP lease e.g using rcnetwork restart 2. verify that a DHCP lease was granted (check /var/lib/dhcpcd/dhcpcd-eth0.info 3. wait for DHCP renewal (or use /sbin/dhcpcd -n to force it manually) 4. use a network sniffer like wireshark for tracing the DHCP REQUEST Actual Results: 1. A DHCP REQUEST with correct payload is generated. 2. This unicast UDP packet is sent to the IP address of the DHCP server. 3. On layer 2 (ethernet) the package is sent to ff:ff:ff:ff:ff:ff (ethernet broadcast) 4. The package is dropped by the gateway 5. The package is not received by the DHCP Server (which lives in a different broadcast domain) 6. The renewal does not happen 7. Some time later the DHCP lease expires 8. A new lease needs to be requested by dhcpcd 9. A short network outage is noticable and some applications have trouble Expected Results: 1. A DHCP REQUEST with correct payload is generated. 2. This unicast UDP packet is sent to the IP address of the DHCP server. 3. On layer 2 (ethernet) the package is sent to MAC address of the DHCP server (same network) or to the MAC address of the gateway. 4. The package is directly received by the DHCP server or 5. forwarded by the responsible gateway as a unicast package 5. The package is received by the DHCP Server (which might live in a different broadcast domain) 6. The renewal is Acknowledge 7. The lease does never finally expire as the RENEWAL is working as defined in the RFCs 8. No network outages are observed -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.