netconf/ planet

This planet aggregates posts related to version control and distro packaging.
Please refrain from using it as a discussion forum.

You can add your own feed to the list of feeds.

madduck's netconf-related blog posts The dhclient nightmare

Thank you, Ted Lemon and Paul Vixie for the ISC DHCP server and client! My days would be so boring without them. I revel in your wisdom, experience, and sheer genius when I get behind some of the design decisions you made when writing those pieces of software.

My current favourite is the hook integration into dhclient-script(8). Read what the manpage has to say about it:

[…] the client script checks for the presence of an executable /etc/dhcp3/dhclient-enter-hooks script, and if present, it invokes the script inline, using the Bourne shell . command. The entire environment documented under OPERATION is available to this script, which may modify the environment if needed to change the behaviour of the script.

Hooks which can modify the environment and thus influence all other hooks that follow, as well as the script which applies the network configuration dhclient obtained to the local machine! Yay! Genius!

You are my heroes.

NP: Pluto: Pipeline under the Ocean

Posted Tue 05 Aug 2008 16:53:08 UTC Tags: ?madduck
Jonathan's netconf posts Summer of code! I found out today that my proposal for Google Summer of Code 2008 has been accepted. This means I will be spending my summer working on netconf, a network configuration management system for Debian. I was so excited to get started that I already had two patches accepted before my application was even accepted :) Here’s my full proposal (txt, 7.3k). Here’s probably the most useful information from the proposal, my proposed week-by-week timeline:
  1. Before 5/26: Study the current netconf codebase, document and clean up code, write tests, stash away old documentation and code in current repo
  2. Week 1 [5/26]: Implement inet6 /etc/network/interfaces methods
  3. Week 2 [6/1]: Implement inet6/v4tunnel method
  4. Week 3 [6/8]: Design policy system and config format, initial implementation
  5. Week 4 [6/15]: Finish implementing policy system
  6. Week 5 [6/22]: Implement netlink socket listener + events
  7. Week 6 [6/29]: Implement wireless-tools and wpa-supplicant integration
  8. Week 7 [7/6]: Continue implementing wireless-tools and wpa-supplicant integration
  9. Week 8 [7/13]: Mid-term GSoC reviews; At this point, we should be very close to 1.0. The time that follows should be used as buffer space for things that may end up taking longer than estimated. Assuming a perfect world, full moon, and star alignment, the following weeks will be used to implement optional fun features.
  10. Week 9 [7/20]: Implement LinkLocal integration
  11. Week 10 [7/27]: Implement Additional DHCP options, http_proxy options
  12. Week 11 [8/3]: Implement ppp/wvdial functionality [Martin has offered to supply the hardware if necessary]
  13. Week 12 [8/10]: Run through the TODO [3] and implement minor leftover features
  14. Week 13 [8/17]: GSoC 2008 ends; have a beer :)
  15. After week 13: Continue to work with the netconf team to get 1.0 out the door; begin work on next challenges
I’ll keep this blog updated with my progress, covering both my successes and failures. Posted Tue 22 Apr 2008 16:14:00 UTC Tags: ?jroes
madduck's netconf-related blog posts netconf and the GSoC

I am very excited to announce that Jonathan Roes has successfully applied to the Google Summer of Code 2008 and will be working on netconf over this summer. With his help, I am confident that netconf 1.0 in Debian “lenny” is no longer a dream.

Jonathan is a soon-to-be computer science graduate from the University of North Carolina at Charlotte, and his application was (by far) the most convincing of the ten I received. He has several years of programming and Linux experience and it’s quite obvious that he has understood the philosophy of netconf.

I am looking forward to working with Jonathan!

NP: Underworld: Second Toughest of the Infants

Posted Tue 22 Apr 2008 12:24:00 UTC Tags: ?madduck
madduck's netconf-related blog posts Down and up and down and up

You are probably using DHCP on the machine currently in front of you. The “Dynamic Host Configuration Protocol” is a way for your computer to obtain an Internet address from a pool of available addresses, and to return it to the pool when you no longer need it. Basically every Internet service provider uses DHCP, or something similar.

As a network operating system, Linux has DHCP support (and had it for ages). In true Unix fashion, Debian sports at least four DHCP clients. Debian’s default is dhcp3-client, also known as dhclient.

The theory is that the client requests an address lease from the server and periodically renews it. This process yields a number of events, to which the operating system can react. For instance, initially, the client issues a PREINIT event to get the interface into a state where it can talk on the network, and a BOUND event as soon as it acquired a lease, or FAIL if it, uh, failed.

After a certain period of time, the client tries to renew the lease. If it succeeds, it issues a RENEW event; if it fails, it yields EXPIRE.

So much for the theory.

It seems that dhclient is rather stupid, which I tried to document in bug #459813 — it does things differently: given a lease, after a certain period of time, it just issues an EXPIRE event, which causes the operating system to deconfigure the interface and take down connectivity. Then, the client spits out a PREINIT event, followed by BOUND or FAIL, as appropriate.

I have not quite investigated what all this means, but this much is for sure: periodically, your machine goes offline, only to come back online a second later. If this were Windows, one would probably knock on wood and be glad that it works at all. But we’re on Linux here, Debian even, so this cannot be.

I’d love to be proven wrong, so if you have a minute, please try to verify. One way of doing so is to insert

echo "$(date) got $reason" >> /tmp/dhclient-script.reasons

towards the top of /sbin/dhclient-script and monitor the output file. Once your client renews, it should read:

Wed Jan  9 11:53:27 CET 2008 got RENEW

but instead you’ll see

Wed Jan  9 11:53:27 CET 2008 got EXPIRE
Wed Jan  9 11:53:28 CET 2008 got PREINIT
Wed Jan  9 11:53:33 CET 2008 got BOUND

and if you look closely enough, your interface will be unconfigured those seconds between EXPIRE and BOUND.

NP: The Flower Kings: @Live Recording, Uppsala City Theatre, Sweden, 10 February 2003

Posted Wed 09 Jan 2008 10:59:36 UTC Tags: ?madduck
madduck's netconf-related blog posts Netconf status update

If you care about netconf and wonder what’s the current status, you might want to ingest the status update I sent to the netconf-devel mailing list.

The most important point probably is: if you want to work on netconf, I’ll be readily available for questions on the mailing list, even though I cannot expend much time to hack myself over the next four months.

But I will consider coaching anyone who would like to contribute and wants to be coached in doing so. So don’t hesitate and let me know, and consider telling me a bit about what kind of projects you have worked on in the past.

NP: Mono: Under the Pipal Tree

Posted Tue 28 Aug 2007 14:18:29 UTC Tags: ?madduck
madduck's netconf-related blog posts Starting netconf development

This message just went out to the debian-devel mailinglist:

Even though I am still somewhat physically limited, my brain today decided to start on the netconf development. And since we all know that the waterfall model is the One True Model and that Extreme Programming no solution, I started by drafting a document, nothing formal, just thoughts on how to implement the various parts of netconf. And open questions I already know need to be answered.

I shall be posting this document to the netconf-devel mailing list sometime soon and am looking for comments (and answers and helpers). The purpose of this message is to get interested people to subscribe. Please do so that we can keep debian-devel free of this and so that I can get more feedback (and potentially help).

If you don’t know what I am talking about, check out the wiki page and slides from my last talk. Then subscribe.

Thanks for your attention; that is all.

NP: Trentemøller: The Last Resort

Posted Tue 08 May 2007 16:09:20 UTC Tags: ?madduck

Entries are updated every 16 */3 * * * (yes, this is cron).