proto-bonding: ethernet bonding interface (device) dhcp client functionality hindered
Open
Nobody has claimed this yet.
- Dominant language
- Makefile
- Stars
- 4.6k
- Forks
- 4k
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 134
Description
Maintainer: @he-ma
Steps to reproduce (using luci-proto-bonding - src):
- go to:
Network→Interfaces→Add new interface...orbond0(aLink Aggregation (Channel Bonding)interface) →Advanced Settings - add one or more
Slave Interfaces - Set
Bonding PolicytoIEEE 802.3ad Dynamic link aggregation (802.3ad, 4) - go to:
General Settingstab - clear
IPv4 addressandIPv4 netmask - Save
Actual behaviour:
Expecting: non-empty value- Unable to create a Layer 2 bonding interface which can directly requisition an IP via DHCP
- The link aggregation device must be configured with a dummy non-colliding address (such as a loopback address) which serves no purpose/has potential to cause tangential issues which would otherwise be unnecessary (with regards to the Linux bonding driver itself)
- A parent bridge device containing the subsequently generated
bond-bond0device, as expected, can be configured as part of aDHCP clientinterface, rendering the mandated dummy static IP assigned to the bond interface entirely redundant
No local IP address defined- https://github.com/openwrt/packages/blob/master/net/bonding/files/lib/netifd/proto/bonding.sh#L199
Expected behavior:
A bonding Device (not an Interface, per the LuCI abstraction) can be created directly, without the requirement of a dummy static IP, and have its address managed with any combination of:
- as part of a
Static addressinterface - as part of a
DHCP clientinterface - as part of a parent bridge device, which itself is managed with a
DHCP clientinterface
Additional Information:
- using DHCP for a bonded interface (per the Linux kernel terminology) is supported (but requires active slaves, of course; something has to be able to broadcast the DHCP request)
- most tools in the Linux ecosystem have supported DHCP for bonded devices since at least 2004
- for example, netplan does not require either static or DHCP addresses to be configured, but also accepts and works perfectly fine with either approaches
NAME="OpenWrt"
VERSION="SNAPSHOT"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt SNAPSHOT"
VERSION_ID="snapshot"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r25529-1d3d6ef826"
OPENWRT_BOARD="mediatek/filogic"
OPENWRT_ARCH="aarch64_cortex-a53"
OPENWRT_TAINTS=""
OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt SNAPSHOT r25529-1d3d6ef826"
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js at the interface settings described, then inspect netifd/proto/bonding.sh around line 199. Reproduce the configuration with cleared IPv4 address and netmask. Done means a bonding device can be created without a dummy static address and can obtain an address through DHCP or a parent bridge.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, linux, shell
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100