BIND 10 Team Call



  • jinmei
  • Shane
  • Stephen
  • Michal
  • Tomek
  • Aharen
  • Kambe
  • Fujiwara
  • Jelte
  • kevin
  • Larissa
  • Marcin
  • Jeremy

Sprint (NSEC) Status Check (10 minutes)

Check to see how our progress on our current sprint is
#1803, #1804, #1806 basically done
#1810 should be quite easy
Most difficult/interesting tickets done
Jinmei: how important to complete?
Shane: pretty important...
Jinmei: most of the things can be started when we are reviewing #1803 and #1804; without the dependency task we may need to do some more cleanup after that

AS112 Status Report (5 minutes)

Jeremy gives a quick update on the AS112 status
Jeremy: running in production for almost a week, handling 5k-6k queries/second. Opened several tickets based on this work (8 to 10); stats in particular will be talked about later; appears to be working adequately; AUTH_ZONEMGR_ERROR and ZONEMGR_UNKNOWN_ZONE_NOTIFIED appearing in logs
Shane: not sure why so few queries?
Jeremy: asked ops, not sure about reponse yet; was 55k-60k queries, last week was 16k-17k
Jelte: what is reporting this? BIND 10?
Jeremy: this is just packets with netstat, gives a rough estimate; we're handling everything, not dropping anything
Jeremy: I plan to write a summary of all of this

Interface Detection and Use (15 minutes)

We should talk about how we detect and use interfaces, as this caused issues with our AS112 box. Hopefully Tomek can give us some insight from the work in this area he has done for Kea.
Ticket is

We have an API for this but ASIO does not support the use of interface. We have to either hack ASIO or bypass ASIO.

So we would need the target address and a way to set the sending address in ASIO, or a way to bypass ASIO.

From DHCP, we also need to bind socket to specific interfaces, since DHCPv6 uses link-local multicast. In Kea we bind to a specific interface and join a multicast group.

Shane: So if we wanted to continue to use ASIO we could bind to each interface separately.
Michal: Yes we would have to detect interfaces, and know when they go up and down.
Tomek: I needed this for DHCP, so we have this as the interface manager. What is missing is notification about state changes on interfaces.
Shane: Also only on Linux?
Tomek: Yes currently only on Linux, stubbed on other systems.
Existing code is available in src/lib/dhcp/ It is used by dhcp4 and dhcp6 components.

BIND9 periodically scans interfaces, especially for IPv4.

Shane: I don't know if there are any portable ways for this...
Tomek: There are 4 separate ways of detecting interface changes, just on Linux. Definitely non-portable. Probably the most portable is to detect interfaces again and compare with what we have now.
Shane: I guess if we have 10s of seconds, it should be fine except for people with 1000s of interfaces.
Tomek: We can make this a parameter.

Michal: I feel we will still need a receptionist, and it could use something other than ASIO, maybe.

Only necessary for wildcard?
Jinmei: Yes, basically. Except for minor cases like an address has been moved.

Jelte: what happens if you remove an address and add it again?
Jinmei: highly dependent on the kernel, in BSD you can still use the address as long as you have the socket bound to the address; in my vague memory in other OS it is more strict; in any case it's a quite tricky situation and we should not consider it now

Jelte: if we don't do this soon, I propose at least removing the wildcard address from the default
Michal: most people have a reasonable number of interfaces and wildcard works for them
Jinmei: maybe workaround is to use a warning-level log message when it detects that? Anytime we use the wildcard.

ACTION: Larissa and Shane to discuss what to do and when. (By next sprint.)

Gathering User Stories (10 minutes)

Larissa reports on this effort for our UI work

About 15 users, mix of types
Extra use cases by CoB tomorrow would be good, hoping to send list of use cases to customers on Friday

Jinmei: maybe you would like to send inquiry to bind10-users list? I think subscribers are slightly different from developers...
Larissa: thought I had...
Jeremy: I saw it there. It's there!

Year 4 Project Plan (15 minutes)

Shane presents the current status of the year 4 plan

Larissa: will we have problems because of not doing msgq
Michal: we will have to pay the price because of working with the clumsy API
Jinmei: my understanding is that msgq proposals have various independent things from fixing current problems to adding some nice features, maybe we could focus on fixes.

Jinmei: for example, if we could only add logging we could have more debugging
Michal: I think we should at least fix the libraries, because we cannot do asynchronous use now, no notification at all
Jinmei: we can think about re-focusing the feature even if the implementation is sub-optimal, so adding logging with minimal effort...
Michal: if you don't want to configure logging then it's okay, but I think that logging without configuration is useless

Jelte: I was kind of thinking that the convenient RPC would help the configuration backend changes a lot, though not strictly necessary
Jelte: for logging you need to connect to the msgq and sending commands and reading configuration... #1914 and #1921 I think are most important

Shane: I'll try to get some of this work in, we have estimates so I can try to prioritize

Jinmei: does this include vacation and meetings and other distractions
Shane: no...
Jinmei: data source scaling...
Shane: in-memory data source

Stats lossage

What to do about stats being reset when auth servers stop and start? See ticket #1941.

On AS112 multiple auth servers, counters are reset periodically (see ticket).
If 32-bit unsigned integer, stats can overflow in 1 day!

Michal: this should get fixed when we fix statistics like we talked about
Jeremy: can you please comment into #1941? then I'm done with this topic.

Include directory naming

Should we rename src/lib/dns to src/lib/libdns++ or src/lib/dns++? This discussion prompted by #1930. (I recall we discussed this over a year ago.)

Jinmei: I don't think the conflict with BIND 9 is a big issue, because whichever name we choose the conlict can happen. We should distinguish by adding a proper prefix or something. /include/bind10 or something.

Mukund: based on #1930, files are in /usr/include/bind10-devel/ even though the rest of the DNS library is under src/lib/dns we can rename it with automake, we don't have to rename the directory. If we want to see the ++ in the name then we can go with this, but otherwise I don't think we conflict in any way.

Jeremy: I was thinking the installed version should have ++ in the name so it is obvious it is a C++ version.

Jinmei: I think there are other libraries called blahblah++... what is the normal convention?
[ none found ]
Jinmei: My suggestion is to see what other utilities do to see if there is a convention.

Jeremy: anyone against it?
Jinmei: not necessarily but it looks a bit awkward
Mukund: will we have to change the source tree?
Jeremy: I think so
Jinmei: I don't mind that part

Okay, approved due to lack of negative consensus.

Wrong python packages used

Complicate code so multiple BIND10's can be ran at same time (for testing for example)? This is about ticket #1851.

Uncertainty that prepending works.

If we install everything under specific subdirectories, not in standard Python path, this doesn't happen. One of our libraries is in one of the parts.
So if we clarify this, we don't have to do anything further for this problem.

Jelte: version subdirectories
Jeremy: that would be fine also

Jinmei: I agree we should insure users can install multiple versions of BIND 10, but I suspect it is a simpler solution which works in most cases in practice, and I'd like to avoid tweaking the internal configuration to be more complicated (like prepending instead of appending, in a kind of ad-hoc manner)
Jelte: yes, although the current method is kind of... and there were some scary things around this code, and this turned out to work best so far
Jinmei: so if not urgent, I suggest we solve this by clarifying the install directories and revisit the topic if it still doesn't solve the problem

Separating DNS and DHCP Builds

We spoke about this at the F2F, but with work starting on updating perfdhcp, it would be helpful if we could bring this forwards.

Stephen: starting work on DHCP performance tool, which will have limited interaction with DNS (if at all); no need for Botan if you want DHCP performance tool
Stephen: this is a request to modify the build system to support specific tools
Jeremy: does it use the DHCP libraries?
Stephen: yes, or it will
Stephen: there is the likelihood that someone will want to build one component and it would be helpful if you can build parts without dependencies that you don't need

Stephen: should finish the first phase of perfdhcp work in 6 to 7 weeks time, would be nice to build without all of DNS at that time

Stephen: I was thinking --enable-dns, --enable-dhcp, and so on.
Jelte: we probably need to make internal configure changes for checking. I would very much like to keep "enable all" the deault there\\ Stephen: I think by default it should build everything.

Mukund: we could build whatever can be built
Stephen: yes, but you don't want to build everything if you don't have to

Jeremy: anyone know of another software which does what we want?
Jelte: Mozilla source tree... but doesn't use autoconf
Jeremy: maybe Apache 2...

Jinmei: is complicated, so if we add a major overhaul we should use the opportunity for a cleanup

Meta data source vs data source container

Prerequisite: at least these two message should be read beforehand:

If the discussions in these messages are reasonable and have been ready by a reasonable number of participants, we can either vote or throw a dice to make the decision. If it requires more discussions, I suggest continuining it on the list rather than wasting more precious meeting time.

Defer to list due to time-constraints, to be resumed at next bi-weekly call.

Assigning tickets to non-team-developer (non-sprint-member) submitter

Maybe tickets should not be assigned to users not on the sprint for feedback, as this may make the ticket get delayed or forgotten from the sprint developers.

Jeremy: Is assigning tickets for feedback, or who is working on the ticket? There were tickets assigned to me, and I wasn't doing work on it, what if it was another non-sprint member?

Shane: issue is about ownership, probably best to send mail or use jabber when assigning a ticket to insure people take ownership

Jinmei: I think it's quite natural to give ownership or something to the requestor. But I see the issue Jeremy mentioned, so I don't object to changing the semantics. Perhaps we should change it to "responsible developer" or something like that, since "owner" can be ambigous.
Jelte: I think "owner" does mean responsibility. But for me (as a developer) I start my day looking at my ticket queue. OTOH for very external people they get an e-mail whether they are assigned or not, and the external users are quite quick to respond (or at least notice) that something had happened in a ticket.

Jeremy: some ticket systems have a state called "feedback needed", and remind people about these.
Jelte: should we add that as a possible state between "reviewed" and "closed"?
Jeremy: maybe there is a Trac hack for that already.
Jelte: Might need feedback before you start work.

Mukund: some bugzillas have "more info" and "verified" states


  1. Developer does not know about Ctrl-@ issue. (This is regarding .)
  2. There is no inter-process synchronization for console output. In theory, it should be possible to implement it using lock file. (This is regarding .)
  3. Rotation problem with multiple processes has been reported and it should be fixed on trunk and upcoming 1.1.0 for FileAppender and RollingFileAppender. DailyRollingFileAppender still has issues with synchronization between multiple processes. (This is regarding .)

Need to detect the '\x00' and abort if we see it.
Stephen: we can add a check for this and abort - will determine whether the problem is in our code or the log4cplus code.
Mukund: have we seen this outside of MacOS?
Jeremy: don't think so... but on other systems we lose log entries

Need to propose some type of synchronization for console output with multiple processes.
Stephen: inter-process mutex for this? Something we add to our own code. At the same place where we check for '\x00', we can do this. Just a workaround.
Jelte: so the request is to have an official request to do this

Ran out of time. Call ended at 16:00:54 UTC

BIND 10 used in production

Git server migration

Date for next snapshot release? It has been around 4 sprints and 7 weeks since last snapshot release.

Library versioning Propose that only increase once per release if needed; but do on first need (first noticed).

Last modified 6 years ago Last modified on Jun 28, 2012, 1:26:14 PM