-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Network Boot IPv6 does not work with remote tftp server and DHCPv6 Relay #1938
Comments
Thanks for the bug report. Unfortunately, IPV6 support is not being actively developed in the bootloader right now so this is unlikely to change in the near future. |
It feels like this is probably a small bug in the code that parses the dhxpv6 advertise message. It’s tragic that the bootloader code isn’t open source. I’m sure there are people who would be willing to work on this if they could. I am going to try some further diagnostics today to get more information and will post what I find here. I may even go as far as implementing a NAT66 against a LL address to see if that works. |
So by changing the tftp:// URL on the DHCP server to "tftp://[xxxx:xxxx:xxxx:2000::200:2]/start.elf" I do see the PI requesting NS for xxxx:xxxx:xxxx:2000::200:2 instead of :: which I believe confirms that there is a bug in handling an off-net tftp server. |
The plot thickens... It appears that after the DHCP process occurs, there's an NS packet sent by the DHCP Relay:
Which the Raspberry pi answers (above). However, the pi then refuses to respond to any further NS requests from any other host, thus making it essentially mandatory for the DHCP server and the TFTP server to be one and the same and on-link in order to work. This seems like a completely untenable situation in all but the most basic of test or laboratory networks.
This trio of packets repeats over and over until the Pi exceeds its retry count for 530cf66c/config.txt (and subsequently config.txt is repeated with the same pattern and behavior). So in short, if the IPv6 netboot capability of a pi functions at all, the only scenario in which it is apparently possible is if one puts the entire boot functionality (tftp server, dhcp server at least) on the same host and puts them on-link with the pi. This falls well short of the RFC specificaiton for IPv6 netboot and also well short of most real-world requirements for same. |
name: Bug: IPv6 Netboot using DHCPv6 Relay and TFTP server on far side of router(s)
about: I'm trying to get a Pi 5 to boot via IPv6.
Describe the bug
Attempting to network boot Pi 5 with USE_IPV6=1 and boot order 0xf417 on an IPv6-only network.
DHCPv6 completes, but the PI does not send a request to the tftp server provided in option 61 (Bootfile-URL).
Instead, it sends out a series of neighbor solicitation packets to ff02::1:ff00:0 asking "who has ::".
To reproduce
Environment is as follows:
IPv6 Prefix redacted to xxxx:xxxx:xxxx. Everything is within the same /48 prefix. All other IPv6 quartets are as spelled out below.
Raspberry Pi 5 8GB ethernet (wired) connection to v6-only VLAN on Juniper ex4200 (xxxx:xxxx:xxxx:2000::/64). v6only VLAN on ex4200 is on three interfaces: ge-0/0/15 (direct to pi, access port) and ae0/ae1 which are 2x10G LAG (LACP/802.3ad) connections to a pair of Juniper MX-240 routers.
Routers have multiple virtual circuits connecting to another MX-240 located at my other site. TFTP Server is located at this site and connected (L2) through another ex4200 to the MX-240 at that site. TFTP Server is xxxx:xxxx:xxxx::200:2/64. There is an analyzer port configured on the ex4200 allowing me to sniff traffic to/from the raspberry pi.
DHCP is KEA running in an HA config on a pair of Nano-pi R6S units which are connected on a different VLAN to the same ex4200 switch and routed via the MX-240 routers.
Relevant KEA configuration fragments are as follows:
I can see the Pi sending out a DHCP request and I get a proper response (via the MX-240 relays):
(tcpdump output from analyzer port)
However, after this, instead of sending a tftp RRQ to the intended server, it starts sending out IPv6 NS packets looking for neighbor :: as follows:
These continue to repeat until the connection times out and it falls through to HTTP which fails because there is no DHCP4 or IPv4 configuration at all on this subnet and then it falls through and boots from the SD card.
Expected behaviour
Everything is as expected up to the DHCP6 reply.
After the DHCP6 reply is received, I expect the host to send NS packets for the VRRP address provided in the RA advertisements from both routers and then send tftp RRQ packets to the tftp server defined in the DHCP reply, then boot from the downloaded file.
Actual behaviour
As stated above, the R.Pi starts sending ICMP6 NS packets requesting the MAC address for :: instead of trying to reach out to the given TFTP server.
System
Which model of Raspberry Pi? Pi5 8GB
Which OS and version (
cat /etc/rpi-issue
)?Raspberry Pi reference 2024-11-19
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, 891df1e21ed2b6099a2e6a13e26c91dea44b34d4, stage4
Which firmware version (
vcgencmd version
)? I will have to add this later. It's the latest firmware I was able to obtain (Dec. 2024 IIRC)Which kernel version (
uname -a
)? 6.6.51Logs
Relevant logs are included above.
Additional context
Nothing to add at this time, but happy to answer any questions or cooperate in any way possible in getting this solved. Willing to run alpha or beta firmware to test solutions.
The text was updated successfully, but these errors were encountered: