|
|
[[_TOC_]]
|
|
|
|
|
|
## GSoC 2018 students
|
|
|
## GSoC 2018 students
|
|
|
Congratulations on identifying one of the core technologies critical to networking and the Internet! DHCP is how devices get addresses so they can participate in a network, and the most basic way of controlling and restricting access. Working on core infrastructure like this gives you an opportunity to have a significant impact.
|
|
|
|
|
|
1. We recommend that you first read the [Introduction to the Kea Users Guide](http://kea.isc.org/docs/kea-guide.html#intro).
|
... | ... | @@ -10,17 +10,17 @@ Congratulations on identifying one of the core technologies critical to networki |
|
|
5. Send us that draft, and we will respond back with comments and advice, and probably ask you to provide more details. You are on your way to creating a good quality final proposal.
|
|
|
6. **Submit your proposal (.pdf) to GSOC between March 12 - 27th.**
|
|
|
|
|
|
## Ideas for Kea Community Projects
|
|
|
## Ideas for Kea Community Projects
|
|
|
The ideas list below is intended to provide you with starter ideas for GSOC projects. Please feel free to propose something different, we are flexible. These are all things we would like to see in Kea, that the core team doesn't have time to work on. Some of these projects may be a little ambitious for a GSOC project - if you want to propose something that is a little easier or less ambitious, that is fine. It is better to downscope the project and complete it than attempt something unrealistic.
|
|
|
|
|
|
|
|
|
## Check the Kea project roadmap
|
|
|
## Check the Kea project roadmap
|
|
|
|
|
|
Familiarize yourself with what's going on in the project, as Kea is a very lively project.
|
|
|
|
|
|
### 1. Kea Event Reporting
|
|
|
### 1. Kea Event Reporting
|
|
|
|
|
|
Kea has a RESTful API for various management activities and monitoring, like statistics, ability to inspect and manage configuration on various levels, including configuration and run-time elements. However, it does not provide any way to signal that certain events have occurred, like running out of addresses, an address detected to be duplicate or other faulty conditions.
|
|
|
Kea has a RESTful API for various management activities and monitoring, like statistics, ability to inspect and manage configuration on various levels, including configuration and run-time elements. However, it does not provide any way to signal that certain events have occurred, like running out of addresses, an address detected to be duplicate or other faulty conditions.
|
|
|
|
|
|
**Why**: Modern networks get more and more complex. With increasing complexity it is important to be able to keep up the pace while not being overwhelmed with the amount of information. Being able to filter out the noise and pick only the essential information can take you a long way.
|
|
|
|
... | ... | @@ -32,13 +32,13 @@ Kea has a RESTful API for various management activities and monitoring, like sta |
|
|
|
|
|
**Complexity:** medium (assuming you know C++ and know a thing or two about REST API) to insane (if you never heard about DHCP and think laptops and phones connect to networks by pure magic)
|
|
|
|
|
|
### 2. Statistics enhancements (2 candidates)
|
|
|
### 2. Statistics enhancements (2 candidates)
|
|
|
|
|
|
Kea is currently able to report dozens of statistics. However, for each statistic there is only one specific value being reported. For certain types of activities it is highly desirable to have multiple observations over time. Having many data points gives an insight into processes that are changing over time, e.g. daily patterns in user activities, DOS detection and mitigation etc.
|
|
|
Kea is currently able to report dozens of statistics. However, for each statistic there is only one specific value being reported. For certain types of activities it is highly desirable to have multiple observations over time. Having many data points gives an insight into processes that are changing over time, e.g. daily patterns in user activities, DOS detection and mitigation etc.
|
|
|
|
|
|
**Why**: Sysadmins love to have deeper insight into what's going on in their networks. Some dangerous events can be predicted and prevented.
|
|
|
|
|
|
**Outcome**: Add some new types of statistics to Kea, such as time-series 'buckets'. This will likely require implementing additional functions to manage statistics, set thresholds, recalculate values, export all or a subset of values, etc.
|
|
|
**Outcome**: Add some new types of statistics to Kea, such as time-series 'buckets'. This will likely require implementing additional functions to manage statistics, set thresholds, recalculate values, export all or a subset of values, etc.
|
|
|
|
|
|
**Skills required:** C++11 necessary, basic understanding of mathematical statistics would be useful.
|
|
|
|
... | ... | @@ -52,7 +52,7 @@ Kea software provides a REST API for remote management, but today we don't provi |
|
|
|
|
|
**Why**: Because going through tons of logs is difficult. Looking at shiny dashboard in your browser is much easier way to understanding what's going on in your network. A good dashboard that presents only the most important things will get you a long way.
|
|
|
|
|
|
**Outcome**: The result could be either a standalone web GUI dashboard for Kea, or a code blob submitted (likely to another open source project) implementing support for the Kea REST API.
|
|
|
**Outcome**: The result could be either a standalone web GUI dashboard for Kea, or a code blob submitted (likely to another open source project) implementing support for the Kea REST API.
|
|
|
|
|
|
**Skills required:** depends on the solution chosen (!JavaScript, PHP, Node.js or similar)
|
|
|
|
... | ... | @@ -60,7 +60,7 @@ Kea software provides a REST API for remote management, but today we don't provi |
|
|
|
|
|
**Difficulty**: medium, assuming you have prior experience with REST API
|
|
|
|
|
|
### 4. HTTP GET Support
|
|
|
### 4. HTTP GET Support
|
|
|
Kea supports many commands that are exposed via REST interface. Some of them are read-only in nature, like retrieving configuration (whole or parts of it, like whole configuration, specific subnet, specific host, specific address lease etc.) or statistics. Unfortunately, Kea uses POST mechanism to retrieve all of them. Some commands could be limited to GET mechanism. Many deployments that do not want to change Kea configuration on the fly could limit access to GET only rather than allowing POST access. This would have security benefits.
|
|
|
|
|
|
**Why**: Nice small security improvement in REST interface that will be applauded by users. Great way to learn internals of HTTP protocol.
|
... | ... | @@ -73,13 +73,13 @@ Kea supports many commands that are exposed via REST interface. Some of them are |
|
|
|
|
|
**Difficulty**: easy/medium
|
|
|
|
|
|
### 5. **Multi-tenancy**
|
|
|
### 5. **Multi-tenancy**
|
|
|
|
|
|
Typical DHCP server is expected to manage a certain number of subnets, with the expectation that each subnet is unique. However, in some deployments it may be desired to use overlapping address spaces, e.g. multiple home gateways each using the same template of privave addresses (RFC1918). This requires a thorough understanding of how DHCP operates.
|
|
|
|
|
|
**Why**: People saying "nah, can't be done?" always annoyed you? Prove them wrong.
|
|
|
|
|
|
**Outcome**: A server that can handle ovelapping subnets in different locations without getting confused about the which device belongs to which subnet. I'm not aware of any DHCP software that could pull that off. Doing something for the first time is fun, even if it's a bit risky.
|
|
|
**Outcome**: A server that can handle overlapping subnets in different locations without getting confused about the which device belongs to which subnet. I'm not aware of any DHCP software that could pull that off. Doing something for the first time is fun, even if it's a bit risky.
|
|
|
|
|
|
**Skills required:** C++11, good understanding of DHCP, some database (MySQL, Postgres and/or Cassandra) experience is also needed.
|
|
|
|
... | ... | @@ -87,7 +87,7 @@ Typical DHCP server is expected to manage a certain number of subnets, with the |
|
|
|
|
|
**Difficulty**: hard
|
|
|
|
|
|
### 6. DDNS GSS-TSIG
|
|
|
### 6. DDNS GSS-TSIG
|
|
|
|
|
|
Kea is a DHCP server that has the capability to generate DNS Updates. Those updates are protected with TSIG signatures. There is a mechanism that defines how to extend TSIG with GSS-API interface. For details, see [wikipedia page on GSS-TSIG](https://en.wikipedia.org/wiki/Generic_Security_Service_Algorithm_for_Secret_Key_Transaction). Also see [GSS-TSIG overview](https://docs.infoblox.com/display/NAG8/About+GSS-TSIG).
|
|
|
|
... | ... | @@ -115,7 +115,7 @@ Being able to handle the reconfiguration process covers several aspects. First, |
|
|
|
|
|
**Difficulty**: medium
|
|
|
|
|
|
### 8. LDAP backend
|
|
|
### 8. LDAP backend
|
|
|
|
|
|
One of the most attractive features of Kea is the option of storing all leases in a separate database backends. Kea currently supports both MySQL and PostgreSQL database backends and we are working on a project now to add Cassandra support. One of the best-loved features of ISC DHCP was the community-contributed LDAP backend. It would be great if we could have an equivalent LDAP backend for Kea.
|
|
|
|
... | ... | @@ -129,7 +129,7 @@ One of the most attractive features of Kea is the option of storing all leases i |
|
|
|
|
|
**Difficulty**: easy/medium
|
|
|
|
|
|
### 9. Performance benchmarks
|
|
|
### 9. Performance benchmarks
|
|
|
|
|
|
Kea supports several database backends: memfile, MySQL, Postgres and Cassandra. We're in a process of accepting [a patch](https://github.com/isc-projects/kea/pull/36) for google benchmark. Once the code is merged, we should start measuring performance of each backend, tweak its parameters as necessary and improve its performance.
|
|
|
|
... | ... | @@ -143,13 +143,13 @@ Kea supports several database backends: memfile, MySQL, Postgres and Cassandra. |
|
|
|
|
|
**Difficulty**: trivial to hard (depending on your expertise and how deep you want to go)
|
|
|
|
|
|
### 10. **Leasequery support**
|
|
|
### 10. **Leasequery support**
|
|
|
|
|
|
The mechanism defined in RFC4388 and RFC5007 provide a mechanism to query the server for specific leases. In simpler words you can query the server and check if an address is used and if it is, who is using it. This mechanism is typically used by relays that check whether specific client indeed has specific address. See #5510 for a nice example.
|
|
|
|
|
|
**Why**: Learning one of more advanced DHCP features. You will learn how protocols are defined, how to get the protocol standard from IETF, how to read and understand it and how to implement a new feature that is conformant to the specification.
|
|
|
|
|
|
**Outcome**: Extend Kea server with the leasequery capability.
|
|
|
**Outcome**: Extend Kea server with the leasequery capability.
|
|
|
|
|
|
**Skills required:** C++11 required, DHCPv4/DHCPv6 familiarity is desired, but not strictly required
|
|
|
|
... | ... | @@ -157,7 +157,7 @@ The mechanism defined in RFC4388 and RFC5007 provide a mechanism to query the se |
|
|
|
|
|
**Difficulty**: easy
|
|
|
|
|
|
### 11. ISC DHCP => Kea Migration Assistant
|
|
|
### 11. ISC DHCP => Kea Migration Assistant
|
|
|
This is a web site, or web page anyway, that will enable a user to upload an ISC DHCP configuration file. The file will then be fed through a modified version of ISC DHCP which will save the configuration file in a format that Kea can import. The process will also generate a log file, which will flag any errors or configuration statements in the original file that could not be translated to a Kea configuration. We have the modified version of ISC DHCP already more or less done, what we need is the infrastructure and UI to upload, process, and respond back to the user.
|
|
|
|
|
|
**Why**: To help a current user of ISC DHCP migrate to Kea, by generating an equivalent configuration for Kea from an existing ISC DHCP configuration.
|
... | ... | @@ -167,15 +167,15 @@ To predict how likelihood of success of a migration at this time. |
|
|
To introduce DHCP administrators to Kea as a potential option
|
|
|
To introduce ISC DHCP support services
|
|
|
|
|
|
**Outcome**:
|
|
|
**Outcome**:
|
|
|
A web site or we page that will upload and parse an ISC DHCP configuration file, and emit a resulting Kea configuration file or files, and a log file with messages about what did not translate.
|
|
|
it might be even better if the log messages could quote from the configuration file, to make it easier to find the bits that did not translate
|
|
|
Must allow the user to download the resulting file(s), or email a link to a download file within <10 minutes.
|
|
|
Must allow the user to download the resulting file(s), or email a link to a download file within <10 minutes.
|
|
|
Extra credit:
|
|
|
- provide some advice about interpreting the resulting log files
|
|
|
- provide links to documentation or better, some steps to migrate the current deployment, including migrating the active leases
|
|
|
|
|
|
**Skills required:** This is mostly a web front-end development job, but knowledge of DHCP is also very helpful.
|
|
|
**Skills required:** This is mostly a web front-end development job, but knowledge of DHCP is also very helpful.
|
|
|
|
|
|
**Mentor:** Tomek Mrugalski, Vicky Risk
|
|
|
|
... | ... | @@ -185,11 +185,11 @@ Extra credit: |
|
|
Two projects have been selected and completed. Here are the results:
|
|
|
|
|
|
### 3. Kea Monitoring Dashboard
|
|
|
Desciption of this project on GSoC web pages: https://summerofcode.withgoogle.com/archive/2018/projects/5093363330056192/
|
|
|
Description of this project on GSoC web pages: https://summerofcode.withgoogle.com/archive/2018/projects/5093363330056192/
|
|
|
|
|
|
Results of this work can be found on GitHub: https://github.com/isc-projects/kea-anterius
|
|
|
|
|
|
### 7. IPv6 Reconfiguration and Renumbering
|
|
|
Desciption of this project on GSoC web pages: https://summerofcode.withgoogle.com/archive/2018/projects/6295758684815360/
|
|
|
Description of this project on GSoC web pages: https://summerofcode.withgoogle.com/archive/2018/projects/6295758684815360/
|
|
|
|
|
|
Results of this work can be found here: https://gitlab.isc.org/isc-projects/kea/wikis/designs/reconfigure-design |