wiki:Year3PlanDraftUpdate

WORK IN PROGRESS... please ignore!!!

0. Introduction

This plan was based on a request to put together a description of how we plan on delivering production-ready BIND 10 this project year. To answer that, I put together this document. Since then, the project has advanced, and we are now starting the final quarter of BIND 10 Year 3 (Y3).

This document does the following:

  1. Explains how we do planning in Scrum.
  2. Provides a description of the release schedule for Y3.
  3. Goes through the additional, non-release work for Y3.
  4. Explains the plans for insuring reliability.
  5. Details the plans for putting BIND 10 into production at ISC.
  6. Presents the ideas for a beta program to get user feedback.

1. Scrum Planning

BIND 10 uses the Agile method known as Scrum. Scrum typically approaches planning by creating a "product backlog". This is a list of functionality that needs to be added. These may be collected into "themes" (related user stories) or "epics" (large user stories). Planning is done per-sprint, rather than for the entire product backlog.

Another aspect of Scrum is that planning is done by the team doing the work, rather than an external person or group. In BIND 10, the programme manager and product owner agree with the team what features from the product backlog get added, and then the team breaks these down into tasks and estimates the difficulty of the tasks, and finally the tasks for each sprint are agreed.

In a project the size of BIND 10 it would take weeks of the entire team's time doing only planning to attempt to produce accurate estimates of the entire timeline for the year. This year, we have done a lot of planning in our face to face meeting. The main purpose of that planning has been to make sure the team is productive until the next face to face planning session, so we plan for approximately four months worth of tasks.

Time, Resources, Delivery

In Scrum, time (dates) and resources (budget) are fixed, while scope is movable.

This matches well with BIND 10, where we have various "time boxes". The biggest is our 1-year focus, and within that we have releases every 6-weeks, and within each release we have 2-week "sprints" of activity. These schedules can be moved slightly, but are basically fixed. The project team also has no influence over the budget. This money comes from the project sponsors, and is limited to what they provide.

What this means for BIND 10 is that our methodology is to try to deliver as much functionality as possible in each time box, rather than deciding exactly what we need to build and then figure out the resourcing needed for that work.

Looking at Status

Currently the best way to see what the BIND 10 team is working on is to look at the roadmap page:

http://bind10.isc.org/roadmap

The milestone titled Sprint-YYYYMMDD contains all of the work being actively done by the software developers.

2. Releases

We have a set of 6-week releases, with the following dates:

Release     Date      Notes
 Y3-1    2011-05-19   -
 Y3-2    2011-07-05   -
 Y3-3    2011-08-19   IETF 81 (2011-07-24 to 2011-07-29)
 Y3-4    2011-10-13   Extended 2 weeks due to F2F, ISC All Hands
 Y3-5    2011-11-28   IETF 82 (2011-11-13 to 2011-11-18)
 Y3-6    2012-01-19   Extended 2 weeks due to Christmas & New Year, plus F2F
 Y3-7    2012-03-01   -
 Y3-8    2012-03-29   IETF 83 (2012-03-25 to 2012-03-30)

Our feature implementations depend on these releases. Our goals are:

  1. Add at least 1 new visible feature at each release
  2. Complete our needed features by the end of the year

Statistics goals are:

  1. Stats HTTP+XML and SNMP interface implemented
  2. Collect statistics items (equivalent to BIND 9) in Auth/Xfrin/Xfrout module
  3. Test and improve performance related to introduced statistics features

Release: Y3-1

Date: 2011-05-19
Status: RELEASED (See the release announcement)

Grant feature progress:

  • TSIG completed

Additional progress:

  • Logging system implemented (logging work started)
  • msgq replacements researched
  • secure socket creator started

Notes:

  • This release is the currently development target, and is on target.
  • Additional work, for example tickets remaining from previous sprints, is also included.

Release: Y3-2

Date: 2011-07-05
Status: RELEASED (See the release announcement)

Grant feature progress:

  • ACLs completed
  • High-performance data source
    • Experimental refactor implemented (not merged)

Additional progress:

  • Logging conversion continued

Original goals not completed:

  • High-performance data source
    • Refactor of data sources
    • Profiling of refactored data sources
  • DNSSEC for in-memory started (NSEC completed)
  • msgq replacement
  • Work on supporting all RRTYPE codes started
  • Logging conversion completed (logging work completed)

Notes:

  • The refactoring of data sources combines work on the SQL and in-memory data sources, and allows a lot of additional further work.

Analysis:

  • Actual work focused on ACL and logging as externally-visible features, which consumed most available time.

Release: Y3-3

Date: 2011-08-19
Status: RELEASED (See the release announcement)

Contents:

  • Many RRTYPE codes implemented, including all important ones
    • Added SRV, NAPTR, HINFO, MINFO, AFSDB
    • Already had DNAME, PTR, MX, RP, DNSKEY, TXT, RRSIG, NSEC3PARAM, AAAA, NSEC3, DS, OPT, A, NSEC, NS, CNAME, SOA, TSIG
    • Remaining types can be found on the RRTypes page
  • msgq replacement research done, as subtickets of #765, with results summarized on msgqReplacements, discussed at the team face to face meeting at the end of 2011-08
  • Socket creator support process is now started, and the API design has been completed (in ticket #801)
  • New model for writing to data sources designed (in ticket #1068)
  • Significant data source refactoring work done
  • Completion work on previous features (ACL, logging)
  • Additional documentation
  • Bug fixes

Full ticket listings can be found in these links:

http://bind10.isc.org/query?group=status&milestone=Sprint-20110712
http://bind10.isc.org/query?group=status&milestone=Sprint-20110802
http://bind10.isc.org/query?group=status&milestone=Sprint-20110816

Comparison with original goals:

FeaturePlannedActual
DDNS, IXFR-out, IXFR-in New model for writing to data sources Model developed, but not yet implemented
Refector of data sources Complete Largely complete
Profiling of refactored data sources Complete Not done
Performance improvements to existing data sources Complete Not done
Update NSD-inspired prototype to match refactored code Complete Not done
RRTYPE codes implemented All Many, including most important ones
msgq replacement Replacement done Research complete, still need actual replacement
Socket creator completed Complete Partially complete
b10-auth use multiple cores Complete Not started
Equivalent of "rndc reload" and other such commands for in-memory data source(s) Complete Pending writeable data sources

Notes:

  • We did not expect lot of new user visible features here, but we needed to prepare for our IXFR work using the architecture designed at the Prague Face-to-Face meeting.
  • Performance should have been faster than BIND 9 at this point, but the refactoring work is not far enough along.

Release: Y3-4

Date: 2011-10-13
Status: RELEASED (See the release announcement)

Full ticket listings can be found at these links:

http://bind10.isc.org/query?group=status&milestone=Sprint-20110830
http://bind10.isc.org/query?group=status&milestone=Sprint-20110927
http://bind10.isc.org/query?group=status&milestone=Sprint-20111011

Grant feature progress:

  • IXFR-in completed

Additional progress:

  • Per-module stats reporting
  • Per-zone ACLs for outbound zone transfers
  • Experimental (non-functional) DHCP process added

Release: Y3-5

Date: 2011-11-24
Status: RELEASED (See the release announcement)

Full ticket listings can be found at these links:

http://bind10.isc.org/query?group=status&milestone=Sprint-20111025
http://bind10.isc.org/query?group=status&milestone=Sprint-20111108
http://bind10.isc.org/query?group=status&milestone=Sprint-20111122

Grant feature progress:

  • IXFR-out completed (IXFR in both directions now supported)

Additional progress:

  • Boss flexibility added
  • libdhcp++ (DHCPv6 library) added
  • System tests using Lettuce added
  • Statistics reporting for specific counters or resources

Release: Y3-6

Date: 2012-01-19
Status: In-progress

Full ticket listings can be found at these links:

http://bind10.isc.org/query?group=status&milestone=Sprint-20111206
http://bind10.isc.org/query?group=status&milestone=Sprint-20111220
http://bind10.isc.org/query?group=status&milestone=Sprint-20120110

Expected features:

  • Socket creator completed

Release: Y3-7

Date: 2012-03-01

Expected features:

  • DDNS completed
  • NSEC & NSEC3 support in in-memory data source

Additional progress:

  • Performance profiling and enhancement begun
  • Initial multi-core strategy for b10-auth designed
  • Additional system tests

The approach is probably:

  1. To finish DDNS in the 1st sprint, at the same time as beginning the profiling work
  2. Do a large chunk of NSEC3 work in the 2nd sprint, and implement some low hanging performance improvements
  3. Complete the NSEC3 work, and implement more performance improvements

Release: Y3-8

Date: 2012-03-29

Expected features:

  • Better authoritative performance than BIND 9
  • Name server identifiers support

Here we will likely:

  1. Perform more optimization
  2. Implement name server identifiers support

Release Plan for Statistics


Release: Y3-1
Date: 2011-05-19

Feature progress:

  • Stats HTTP+XML interface implemented

Release: Y3-4
Date: 2011-10-11

Feature progress:

  • Stats read item definitions from cfgmgr
  • Statistics items defined
  • Statistics items in Auth module collected partially

Release: Y3-5
Date: 2011-11-22

Feature progress:

  • Statistics items in Auth module collected
  • Statistics items in Xfrin/Xfrout? module collected partially

Release: Y3-6
Date: 2012-01-10

Feature progress:

  • Stats SNMP interface basic-designed

Release: Y3-7
Date: 2012-02-21

Feature progress:


Release: Y3-8
Date: 2012-03-29

Feature progress:

  • Statistics items in Xfrin/Xfrout? module collected
  • Stats SNMP interface implemented

Additional Progress:

  • Test and improve performance related to introduced statistics features

3. Additional Work

Several pieces of work are not included in the release schedule.

Command Tool

While important, the design of this tool makes it basically an external component to BIND 10. As such, the development does not need to be done by the main BIND 10 team. We are currently discussing implementation of this component by a developer or developers not on the BIND 10 team.

Test Platform for Recursive Resolution

Like the command tool, this is basically an external component. We are also considering this platform as something that may be developed by resources outside of the main BIND 10 team.

A number of additional items planned for year 3 will probably not be delivered in this year's releases. The basic approach taken was to focus on features important for the authoritative side.

DNSSEC validation

DNSSEC validation is a major undertaking, and the largest outstanding piece of work on the recursive resolution side.

msgq replacement

The msgq to D-Bus replacement is something that needs to be done, but is not (yet) critical.

Views

Views are a very important feature for split-horizon DNS environment, and also for combined recursive / authoritative DNS setups. They are (hopefully) less important for authoritative only DNS servers.

Hooks

Hooks are one of the "killer features" of BIND 10, and will differentiate it from other DNS software by providing unprecedented flexibility. Unfortunately there is likely not to be time for this work in year 3.

4. Production Testing & Reliability

Interoperability Testing

This suite already exists in a basic form, and was used at the end of BIND 10 Y2 to test the server. This testing is done as part of the release engineering and will be further automated throughout the year. The first report of results will appear in 2012, after enough RRTYPES have been implemented and the DNSSEC work is completed.

Security Audit

On advice, the security audit has been postponed to Y4.

System Testing

Our intention here is to use an existing system-testing platform to perform these tests. This work will be undertaken by release engineering in conjunction with the testing engineers working on the project from CNNIC. Research is currently underway, and test design can probably begin in 2011-07.

5. Operational Experience

ISC will put BIND 10 on increasingly more critical services.

  • BIND10.ISC.ORG served by a BIND 10 server is running now. (The N10.ISC.ORG name server.)
  • AS112 served by a BIND 10 server was put online in 2011-12, but resulted in some operational problems because of the high load on the server. This will be attempted again after BIND 10 performance is adequate.
  • A public test recursive resolver was set up using BIND 10. This is a bit like OpenDNS or Google Public DNS, except that the goal is to allow people to check that BIND 10 works properly for them without having to set up a server.
  • SNS, ISC's secondary name service will have a BIND 10 server added to it's anycast DNS cloud. BIND 10 will not be put into production on SNS in Y3, but it is still a goal.
  • The F-root name server will have BIND 10 servers added to the anycast service. Details of the adoption process have not yet been co-ordinated with ISC operational staff, and no specific date for this has yet been set.

6. Beta Program and Customer Focus Groups

ISC has had offers from several external organizations to begin testing BIND 10 in their labs. We also extended an offer to participants in the April 2011 BIND 10 Web Seminar to join the BIND 10 Beta Program, and have several customers who have indicated interest. We will kick off a beta program in June 2011, to gather coordinated feedback on BIND 10 features, functionality, and performance.

ISC will has conducted one open day to talk to users about their usage and what they want from the server in in 2011-08, and will have another one in 2012-01.

X. Major Updates

2011-06-23:

  • Release dates have all shifted a bit. There was not enough time from the end of our 3rd sprint until the release was made. So rather than being 2 days after the end of the sprint, it has been changed to 1 week (5 working days) after the end of the sprint.
  • Y3-2 release updated with expected progress.
  • Full NSEC3 support moved from 2011-10-11 to 2011-11-22 release. Authoritative server "complete" slips 6 weeks.

2011-12-23:

  • Updated the plan based on the current status. This changes the focus of Y3 from attempting to deliver both an authoritative and recursive production-ready server to only delivering an authoritative production-ready server.
Last modified 6 years ago Last modified on Dec 23, 2011, 4:29:33 PM