Giter Site home page Giter Site logo

Comments (13)

ydp avatar ydp commented on August 24, 2024 1

Hello, as boots only make sure that other machines won't get IP from boots, but how can we make sure our network booting machine does not get IP from existing DHCP server? Do we still need to add dhcp-ignore in existing DHCP server to prevent network booting get IP from existing DHCP server?

from boots.

alexellis avatar alexellis commented on August 24, 2024

Screenshot 2020-04-06 at 10 50 12

from boots.

alexellis avatar alexellis commented on August 24, 2024

@nathangoulding who should this be assigned to, to get it resolved? A simple one-liner in the README is enough to disambiguate and reassure testers.

from boots.

nathangoulding avatar nathangoulding commented on August 24, 2024

@alexellis is this still valid?

from boots.

bingzhangdai avatar bingzhangdai commented on August 24, 2024

Yes, the same question with @ydp. Should we modify the existing DHCP server? @alexellis

from boots.

bingzhangdai avatar bingzhangdai commented on August 24, 2024

Hi @ydp I tried the demo in my local network and carefully checked the logs. You do not need to add the ignore in existing DHCP server. Both existing DHCP and Tinkerbell will respond to DHCP request, and the client will ignore the one without PXE info. Hence only Tinkerbell's DHCP will take effect, which is very handy.

from boots.

bingzhangdai avatar bingzhangdai commented on August 24, 2024

Definitely, I would recommend adding the explanation in README.

from boots.

ydp avatar ydp commented on August 24, 2024

@bingzhangdai Thanks for your reply! I did similar test before but get opposite answer. In my experiment, if client does not get pxe info, it just hangs. Maybe this is client related? related to the pxe version which is Nic related? or I should try more experiments?

from boots.

bingzhangdai avatar bingzhangdai commented on August 24, 2024

@ydp I am not an expert in this area, but I can tell you what I saw.

First, you should check the boot container (if you run the example by docker compose) log to see if Tinkerbell did recieved the DHCP request. You should get something similar to this,

{"level":"info","ts":1691115288.4517825,"caller":"[email protected]/handler.go:105","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"recv","mac":"ac:1f:6b:ee:0c:dc","via":"0.0.0.0","iface":"ens192","xid":"\"6c:ee:0c:dc\"","type":"DHCPDISCOVER","secs":4}
{"level":"info","ts":1691115288.451905,"caller":"boots/dhcp.go:88","msg":"parsed option82/circuitid","service":"github.com/tinkerbell/boots","pkg":"main","mac":"ac:1f:6b:ee:0c:dc","circuitID":""}
{"level":"info","ts":1691115288.4522583,"caller":"[email protected]/handler.go:61","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"send","mac":"ac:1f:6b:ee:0c:dc","dst":"255.255.255.255","iface":"ens192","xid":"\"6c:ee:0c:dc\"","type":"DHCPOFFER","address":"10.3.1.21","next_server":"10.3.1.94","filename":"undionly.kpxe"}

This indicated that the DHCP was recieved and IP address was assigned.

Actually, I did expereince the hanging during IPXE initialising devices... in Hyper-v generation 1 VM, but I still got the above log

image

I do not know whether it is Tinkerbell's problem or just incompatibility between Tinkerbell and Hyper-v's NIC or PXE. I turned my head to physical machines and then succeeded. By looking carefully at the screeshot, what I can tell for sure is the hanging I encountered had nothing to do with DHCP.

Hope this would help. :)

from boots.

ydp avatar ydp commented on August 24, 2024

Thank you @bingzhangdai I will try more experiments!

from boots.

ydp avatar ydp commented on August 24, 2024

I did more experiments (20 times pxe boot on 2 machines), only one machine stuck in below status in one time (which could be a potential ipxe or networking issue).
image
so, looks like the problem does not exist!!
At least, the first phase when Intel boot agent try to get pxe info, it will not hang, unless there is absolutely no pxe info returned by any dhcp servers, which I also did an experiment, it will hang with error like this:
image

Then, I found that I actually recorded the process when I had the stuck issue several months ago, below is the screenshot:
image
Indeed, the Intel boot agent works well, it only hangs at ipxe booting phase.

Then I remembered that back then I did not actually use tinkerbell boots, I was using Openstack Ironic to boot machines, the ipxe binary used was 1.21.1+git-20220113, but now, the ipxe version I am using is 1.0.0+ (from the first screenshot), and I checked the code commit used is tinkerbell/ipxedust#76 , which is using ipxe binary from 2023/03/07, which is much newer.
So, I guess the old ipxe binary has issue to ignore the incorrect dhcp server, in my case it is 10.106.62.254 , the correct dhcp server should be 10.106.55.171 .
Anyway, as long as no issue happens like the second screenshot, I would think boots and Intel boot agent work well regarding ignoring other dhcp server.

from boots.

bingzhangdai avatar bingzhangdai commented on August 24, 2024

Glad to hear. "No boot framework" or "nothing to boot" may also result from missing files from tftp like initramfs-aarch64, initramfs-x86_64, vmlinuz-aarch64, vmlinuz-x86_64 or so. I can see the error from boots log. Anyway, it is merely a minor problem :)

from boots.

ydp avatar ydp commented on August 24, 2024

Hi @bingzhangdai Just let you know, I am still not convinced by the experiment result, and asked questions in ipxe/ipxe#1012 , they told me it should be undefined behavior. So for safety reason, even though my several experiments showed success, I will still switch back to "only one DHCP" environment.

from boots.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.