At the 2017 Africa Internet Summit in Nairobi, Kenya (AIS – http://internetsummitafrica.org ) an event to promote the IETF was held in collaboration with AFRINIC to identify skilled engineers who can contribute to the IETF. This is event was dubbed “Hackathon @AIS” and was a 2-day event, from 27-28 May, which covered technical work related to the IETF.
The purpose of the Hackathon was to gather able engineers from Africa to work on challenges based on IETF work and to show them how much of the work at the IETF is produced based on the IETF’s core tenets: rough consensus and running code. The event took place on the 27th and 28th of May 2017.
In this pilot event, participants were drawn from Kenya’s tech community, West and Central African Research and Education Network (WACREN), the UbuntuNET Alliance and the Kenya Education Network Trust (KENET) to take part in the 2-day activity. Thirty-nine participants from 12 different countries participated in the event.
Expert facilitators were sourced to lead the topics of the event as follows:
- Fernando Gont: IPv6 Hacking and how to write RFCs
- Codarren Velvindron: Kernel Hacking and Operating System Compliance to RFCs
- Joe Abley: CBOR DNS
Since the IETF is not well known in the region, some pre-event materials were provided to the participants to give them an introduction to the IETF as well as some reading materials on DNS and Networking so as to ensure that they could be able to handle the work at the Hackathon. The materials were as follows:
- DNS theory reading from the Internet Society’s Introduction to Network Operations Course
- Introduction to DNS
- How Caching DNS servers and Authoritative DNS servers work
- Networking theory reading from the Internet Society’s Introduction to Network Operations Course
- Review of IPv4 and IPv6
- Introduction to the IETF Flier (Prepared by the ARB)
- Reading on Concise Binary Object Representation and DNS (RFC 7049)
- Reading on CBOR DNS Draft
How the Hackathon was run
The trainees were split up into 3 groups, each handling 1 of the 3 topics. The 2 days were organized as follows: the 1st day was mostly building the participant’s capacity on the respective topics, and then the participants were given time to work on their respective topics. On the second day, we allowed the participants to work on their respective topics and then got presentations from each of the facilitators and some of the participants on the work they managed to do.
Topic 1: IPv6 Hacking and how to write RFCs
Under this topic, trainees were shown how to use tools to analyze IPv6 traffic and craft specific type of IPv6 packets. The trainees were given a breakdown of RFC 6946 and RFC 8021 and then allowed to test the implementation of those RFCs using the SI6 Networks IPv6 Toolkit. The participants processed IPv6 atomic fragments (RFC 6946) and then attempted to generate IPv6 atomic fragments (RFC 8021).
The trainees who did not have Linux/UNIX laptops were shown how to install an operating system on their Windows machines using VirtualBox since the Si6 Toolkit only works on Linux and UNIX operating systems. As an additional option for the participants, we had a lab of 40 Virtual Machines with the FreeBSD operating system for the trainees to access in the event they needed more testing. Some of the participants in the group successfully used the Toolkit to craft and test the RFC implementation. (Please see the Wiki for more info).
Topic 2: Concise Binary Object Representation and DN
Under this topic, trainees were taken through RFC 7049 and explained what the challenge was regarding finding a standard format of capturing and storing DNS traffic on servers. There is a current draft RFC of this work that trainees were required to read and then test out.
The work flow was as follows:
- The resources needed (DNS, coding, management, documentation) were identified
- This included downloading CBOR libraries from here: http://cbor.io/impls.html
- The selected programming languages for this particular topic were Java and Python. The trainees would then explore and test the CBOR libraries in Java and Python
The participants in this group were further split up into two groups who would try to explore how to work with the available CBOR binaries in either Java or Python programming languages (depending on their preference). Despite successfully loading the CBOR libraries in Java and Python, the participants did not have enough time to fully complete a test of the CBOR storage format against DNS Traffic. Sample DNS Traffic in the form of PCAP (Packet Capture) traffic was provided for them to try for themselves after the event.
Topic 3: Kernel Hacking and Operating System Compliance to RFCs
Under this topic, trainees were taken through how to run a Hackathon as well as getting a UNIX Operating System Compliant with an RFC. The Operating System used here was the FreeBSD operating system and the participants in this group were able to get the operating system compliant with RFC 4213 by making edits to the source code and and recompiling the FreeBSD kernel. The facilitator explained what RFC 4213 was about and then guided them on how to make edits to the FreeBSD source code and recompile the kernel to make the operating system compliant with this specific RFC.
General Topics for all Groups
The following were general topics that were presented by the facilitators for the benefit of all participants:
- Brief DNS Refresher
- Brief IPv6 Refresher
- How to write RFCs (tools that can be used to format the document)
- How to use GitHub as a development platform to collaborate on code development
- How to Participate in a Hackathon (Hackathon 101)
Lessons from this first Hackathon
Since this was a first-time event, a lot of lessons have been taken in order to make the next one even more successful:
- Topics to be covered need to be identified early and participants allowed time to read up on the materials
- Participants need to be provided with all the materials needed to participate in time including downloading and installing any necessary tools so that more work can be done at the Hackathon.
- Trainees with appropriate backgrounds need to be selected as such hackathons are all about technical expertise.
- Facilitators and participants should be allowed to engage early and even join specific groups so that on the day of the hackathon, more time can be spent on tackling a problem rather than gathering background on respective topics. This can be done in a form of “pre-hackathon” activity that goes on via a mailing list on conference calls.
- Expert facilitation is needed for this particular IETF activity. It is important to identify the right person for each topic that will be covered at the Hackathon and ensure that the facilitator will be available.
Post Hackathon Activities
Following the event, the participants continue to be encouraged to run similar activities in their countries to further increase awareness and participation of engineers to the work of the IETF as well as join some of the IETF’s Working Groups that interest them.
Since this event, one of the participants has actively taken a role in document work being done under the Community Networks initiative to write an RFC on the breakthrough work being done under Wireless for Communities in order to get the protocols being produced to be adopted as IETF RFCs.
Summary of the event
As a first time event, it was a good success and the lessons learnt will be used to inform future activities. The Hackathon has been fully documented and all the tools and presentations used are available on the event website here: https://hackathon.internetsummitafrica.org.