ISC Open Source Projects issueshttps://gitlab.isc.org/groups/isc-projects/-/issues2019-03-14T16:12:04Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/438Write Performance Guide for Kea2019-03-14T16:12:04ZTomek MrugalskiWrite Performance Guide for KeaSeveral customers are asking about best recommended practices. We published performance numbers, but that's not sufficient as we are a software dev company and our numbers are synthetic. The goal of this is to publish a document that exp...Several customers are asking about best recommended practices. We published performance numbers, but that's not sufficient as we are a software dev company and our numbers are synthetic. The goal of this is to publish a document that explains what parameters and factors affect performance.
@knobee will surely have some suggestions what questions should be answered here.Kea1.6Tomek MrugalskiTomek Mrugalskihttps://gitlab.isc.org/isc-projects/kea/-/issues/436Update contributors guide2019-05-27T16:50:19ZTomek MrugalskiUpdate contributors guideAfter Gitlab migration our contributors guide is outdated. Need to clean it up and probably turn into a separate doc.After Gitlab migration our contributors guide is outdated. Need to clean it up and probably turn into a separate doc.Kea1.6Tomek MrugalskiTomek Mrugalskihttps://gitlab.isc.org/isc-projects/kea/-/issues/431Write a script that cleans up config backend DB2019-04-10T11:35:45ZTomek MrugalskiWrite a script that cleans up config backend DB@marcin and @tomek discussed a concept of wiping database. This may address several issues:
- system tests need to discard all data from a DB after a CB test.
- after schema was extended, every unit-test creates and then tears down the ...@marcin and @tomek discussed a concept of wiping database. This may address several issues:
- system tests need to discard all data from a DB after a CB test.
- after schema was extended, every unit-test creates and then tears down the schema. With many (around 40) tables, this is very slow process. We should have an option (possibly even enabled by default) to wipe data from the tables rather then tear them down and recreate every time. (TRUNCATE TABLE is supposedly faster than DELETE FROM, but has some constraints and can't be used everywhere).Kea1.6https://gitlab.isc.org/isc-projects/kea/-/issues/429Include global parameter data type in CB MySQL Config Backend2019-02-04T12:36:59ZMarcin SiodelskiInclude global parameter data type in CB MySQL Config BackendThe global parameters in CB are stored as strings in the database. That simplifies the structure of the database allowing for having single SQL table for all types of global parameters. However, there is an issue on the server side that ...The global parameters in CB are stored as strings in the database. That simplifies the structure of the database allowing for having single SQL table for all types of global parameters. However, there is an issue on the server side that it cannot recognize the type it should cast the parameter to when it is fetched from the database. We have decided to add a column into the `dhcpX_global_parameter` table that defines a data type. e.g. string, timestamp, real, number etc.Kea1.6Marcin SiodelskiMarcin Siodelskihttps://gitlab.isc.org/isc-projects/kea/-/issues/426cassandra unit tests ends with success even though they fail2019-02-07T14:25:22ZWlodzimierz Wencelcassandra unit tests ends with success even though they failsome of the unit tests were reported as passed even though they fail due to broken cassandra environment
```
[ RUN ] CqlLeaseMgrTest.maxDate4
/home/jenkins/workspace/kea-master-db-backends/src/share/database/scripts/cql/dhcpdb_drop...some of the unit tests were reported as passed even though they fail due to broken cassandra environment
```
[ RUN ] CqlLeaseMgrTest.maxDate4
/home/jenkins/workspace/kea-master-db-backends/src/share/database/scripts/cql/dhcpdb_drop.cql:19:OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1
/home/jenkins/workspace/kea-master-db-backends/src/share/database/scripts/cql/dhcpdb_drop.cql:20:OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1
runCqlSchema failed:cqlsh -u keatest -p keatest -k keatest -f/home/jenkins/workspace/kea-master-db-backends/src/share/database/scripts/cql/dhcpdb_drop.cql
[ OK ] CqlLeaseMgrTest.maxDate4 (56934 ms)
```
there are more of such tests here: https://jenkins.isc.org/job/kea-master-db-backends/29/consoleText
just find `runCqlSchema failed`Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/424Update cb_cmds commands to refuse reservations in remote-subnet4-set2019-02-27T10:35:30ZFrancis DupontUpdate cb_cmds commands to refuse reservations in remote-subnet4-setIf there is a reservations entry in the subnet definition:
- throw if it is not a list
- ~~if it is not empty warn and remove it before parsing~~
- if it is not empty return an error
Please edit this and remove one of the choices whe...If there is a reservations entry in the subnet definition:
- throw if it is not a list
- ~~if it is not empty warn and remove it before parsing~~
- if it is not empty return an error
Please edit this and remove one of the choices when the list if not empty. IMHO the last one is better: drastic but do not suggest reservations were added to the database.
Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/422distcheck failure after #3752019-01-22T22:38:54ZWlodzimierz Wenceldistcheck failure after #375After https://gitlab.isc.org/isc-projects/kea/issues/375 Jenkins is reporting:
```
make[2]: Leaving directory `/home/jenkins/workspace/kea-master-distcheck/kea-1.5.0-git/_build/m4macros'
rm -f config.status config.cache config.log config...After https://gitlab.isc.org/isc-projects/kea/issues/375 Jenkins is reporting:
```
make[2]: Leaving directory `/home/jenkins/workspace/kea-master-distcheck/kea-1.5.0-git/_build/m4macros'
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
ERROR: files left in build directory after distclean:
./src/bin/agent/tests/testvalid.json
make[1]: *** [distcleancheck] Error 1
make[1]: Leaving directory `/home/jenkins/workspace/kea-master-distcheck/kea-1.5.0-git/_build'
```
https://jenkins.isc.org/job/kea-master-distcheck/178/Kea1.6https://gitlab.isc.org/isc-projects/kea/-/issues/421Create config backend for DHCPv62019-02-12T11:50:08ZFrancis DupontCreate config backend for DHCPv6#28 and co for DHCPv6. Mainly copy files and change 4 for 6...#28 and co for DHCPv6. Mainly copy files and change 4 for 6...Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/417Incorrect Return Value of IfaceMgr::send2019-02-19T10:47:32ZGhost UserIncorrect Return Value of IfaceMgr::send**Describe the bug**
Precondition: PktFilterLPF or PktFilterBPF is used
If IfaceMgr::send(const Pkt4Ptr& pkt) is called, it returns false if successfull.
The Documentation and the header state:
/// @return true if sending was success...**Describe the bug**
Precondition: PktFilterLPF or PktFilterBPF is used
If IfaceMgr::send(const Pkt4Ptr& pkt) is called, it returns false if successfull.
The Documentation and the header state:
/// @return true if sending was successful
bool send(const Pkt4Ptr& pkt);
The return statement of this method looks like this:
return (packet_filter_->send(*iface, getSocket(*pkt).sockfd_, pkt));
PktFilter::send shall return 0 on success, which converts to false.
pkt_filter.h:
class PktFilter {
/// @return result of sending the packet. It is 0 if successful.
virtual int send(const Iface& iface, uint16_t sockfd,
const Pkt4Ptr& pkt) = 0;
This behavior is not reproducible if PktFilterInet is used.
The reason is that it returns the RV of sendmsg.
sendmsg returns the number of sent characters.
pkt_filter_inet.cc:
int result = sendmsg(sockfd, &m, 0);
return (result);
This means PktFilterInet::send will most likely return values larger than 0 if successfull.
PktFilterBPF performs correct, just as PktFilterLPF does.
**To Reproduce**
Steps to reproduce the behavior:
1. Run Kea dhcpv4 with the default PktFilter (PktFilterLpf) on a Linux Machine
2. Register a Plugin and send a packet by calling IfaceMgr::send(const Pkt4Ptr& pkt)
**Expected behavior**
The Documentation states that the method shall return true on success. In fact it returns false.
**Environment:**
- Kea version: 1.3.0 (git 62af6072a51d2fa319268e9ca615e244506fc5ef)
But the bug is still present on the current master branch
- OS: Linux OS based on Kernel 4.14
- Which features were compiled in
Kea source configure results:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Package:
Name: kea
Version: 1.3.0
Extended version:1.3.0 (git 62af6072a51d2fa319268e9ca615e244506fc5ef)
OS Family: Linux
Using GNU sed: yes
Premium package: no
C++ Compiler:
CXX: g++
CXX_VERSION: g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
CXX_STANDARD: 201402
DEFS: -DHAVE_CONFIG_H
CPPFLAGS: -DOS_LINUX -I$(top_srcdir)/ext/coroutine -DBOOST_ASIO_HEADER_ONLY -DBOOST_ASIO_DISABLE_THREADS=1
CXXFLAGS: -g -O2
LDFLAGS: -Wl,-R/build/3.5.0.x/botan/_/usr/lib -lpthread
KEA_CXXFLAGS: -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC
Python:
PYTHON_VERSION: not needed (because kea-shell is disabled)
Boost:
BOOST_VERSION: 1.67
BOOST_INCLUDES:
BOOST_LIBS: -lboost_system
Botan:
CRYPTO_VERSION: 2.4.0
CRYPTO_CFLAGS:
CRYPTO_INCLUDES: -I/build/3.5.0.x/botan/_/usr/include/botan-2
CRYPTO_LDFLAGS: -L/build/3.5.0.x/botan/_/usr/lib
CRYPTO_LIBS: -L/build/3.5.0.x/botan/_/usr/lib -lbotan-2 -lbotan-2
OpenSSL: no
Log4cplus:
LOG4CPLUS_VERSION: 1.2.0
LOG4CPLUS_INCLUDES:
LOG4CPLUS_LIBS: -llog4cplus
Flex/bison:
FLEX: flex
BISON: bison -y
MySQL:
no
PostgreSQL:
no
Cassandra CQL:
no
Developer:
Enable Debugging: yes
Google Tests: no
Valgrind: found
C++ Code Coverage: no
Logger checks: no
Generate Documentation: no
Parser Generation: no
Kea-shell: no
- Hooks loaded: lease4_renew, lease4_select, lease6_rebind, lease6_renew, lease6_select, pkt4_receive, pkt4_send, pkt6_receive, pkt6_send
**Describe the solution you'd like**
Fix of IfaceMgr::send(const Pkt4Ptr& pkt) and
PktFilterInet::send(const Iface& iface, uint16_t sockfd,
const Pkt4Ptr& pkt)
to make them perform according to the Documentation.
**Contacting you**
Email me at matthias.stoeckl@secunet.comKea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/416missing any information about configuring Radius accounting in Kea Admin Refe...2019-01-29T06:14:12ZMichal Nowikowskimissing any information about configuring Radius accounting in Kea Admin ReferenceIt would be good to define what parameters are available and what they mean.
It would be nice to provide an example like it is done for radius access.It would be good to define what parameters are available and what they mean.
It would be nice to provide an example like it is done for radius access.Kea1.6https://gitlab.isc.org/isc-projects/kea/-/issues/415there are memory leaks found by valgrind in case of Kea and Radius configuration2019-02-07T08:51:03ZMichal Nowikowskithere are memory leaks found by valgrind in case of Kea and Radius configurationI have performed some memory testing of Kea with Radius configuration.
I configured Radius with 50.000 clients.
I enabled Radius access and accounting in Kea configuration.
Then I run perfdhcp this way:
```
sudo perfdhcp -4 -bmac=08:00:2...I have performed some memory testing of Kea with Radius configuration.
I configured Radius with 50.000 clients.
I enabled Radius access and accounting in Kea configuration.
Then I run perfdhcp this way:
```
sudo perfdhcp -4 -bmac=08:00:27:f9:00:01 -l enp0s10 -R 49000 -d1000 -r 1000 -f 1000 -t 4
```
I'm not sure if it was working as I expected. I expected that:
* perfdhcp will sent DHCP Discovers for 49000 clients starting from MAC 08:00:27:f9:00:01
* it will be sending 1000 requests / 2 and the same rate for renewals
* as results it will force Kea to make lots of access and accounting requests to Radius
The results are attached as kea-mem.png. Memory usage was continuously growing.
![kea-mem](/uploads/5ec57b638aa5897200879c22a9669d71/kea-mem.png)
Then I used valgrid to check for leaks:
```
sudo valgrind --leak-check=yes kea-dhcp4 -c /usr/local/etc/kea/kea-dhcp4.conf
```
7 minutes of testing generated attached report. It finds some memory leaks:
```
==26647== LEAK SUMMARY:
==26647== definitely lost: 264,624 bytes in 6,971 blocks
==26647== indirectly lost: 27,138,956 bytes in 232,087 blocks
==26647== possibly lost: 11,954 bytes in 41 blocks
==26647== still reachable: 72,722 bytes in 23 blocks
==26647== suppressed: 0 bytes in 0 blocks
```
[valgrind-report.txt](/uploads/b97867749479d8415119f1bfae6ebee0/valgrind-report.txt)Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/413Merge DHCPv6 global parameters fetched from the CB into the configuration2019-04-10T18:23:48ZMarcin SiodelskiMerge DHCPv6 global parameters fetched from the CB into the configuration`SrvConfig::merge` must be updated to merge global parameters into existing staging or current configuration.
After conferring with Marcin, we agreed to expand the scope of this issue to incorporate merging:
1. globals
2. options defs
...`SrvConfig::merge` must be updated to merge global parameters into existing staging or current configuration.
After conferring with Marcin, we agreed to expand the scope of this issue to incorporate merging:
1. globals
2. options defs
3. options
4. shared-networks
5. subnets
As this work is largely replicating what was done for v4.
Kea1.6Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/412Merge DHCPv6 options fetched from the CB into the configuration2019-04-10T18:24:32ZMarcin SiodelskiMerge DHCPv6 options fetched from the CB into the configuration`SrvConfig::merge` must be updated to merge options into existing staging or current configuration.`SrvConfig::merge` must be updated to merge options into existing staging or current configuration.Kea1.6Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/411Merge DHCPv6 option definitions fetched from the CB into the configuration2019-04-10T18:24:14ZMarcin SiodelskiMerge DHCPv6 option definitions fetched from the CB into the configuration`SrvConfig::merge` must be updated to merge DHCPv6 option definitions into existing staging or current config.`SrvConfig::merge` must be updated to merge DHCPv6 option definitions into existing staging or current config.Kea1.6Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/410Merge DHCPv6 shared networks fetched from the CB into the configuration2019-09-02T07:12:01ZMarcin SiodelskiMerge DHCPv6 shared networks fetched from the CB into the configuration`SrvConfig::merge` must be updated to merge DHCPv6 shared networks into existing staging or current config.`SrvConfig::merge` must be updated to merge DHCPv6 shared networks into existing staging or current config.Kea1.6Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/409Update cb_cmds with commands to manage other objects for DHCPv62019-05-15T15:01:03ZMarcin SiodelskiUpdate cb_cmds with commands to manage other objects for DHCPv6CB DHCPv6 code for shared networks, option definitions and option datas.
CB DHCPv6 code for shared networks, option definitions and option datas.
Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/408Update cb_cmds with commands to manage subnets for DHCPv62019-05-11T08:00:36ZMarcin SiodelskiUpdate cb_cmds with commands to manage subnets for DHCPv6Managing subnets in CB DHCPv6. Will be reuse as a skeleton for other DHCPv6 objects (shared network, option definition and data) in #409.
Managing subnets in CB DHCPv6. Will be reuse as a skeleton for other DHCPv6 objects (shared network, option definition and data) in #409.
Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/407Update cb_cmds with commands to manage global parameters for DHCPv62019-05-09T13:00:46ZMarcin SiodelskiUpdate cb_cmds with commands to manage global parameters for DHCPv6First part of CB DHCPv6 work: it will be divided into a premium MR reorganizing code and a second MR adding the DHCPv6 part for global parameters.
First part of CB DHCPv6 work: it will be divided into a premium MR reorganizing code and a second MR adding the DHCPv6 part for global parameters.
Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/406Update cb_cmds with commands to retrieve configuration data for DHCPv42019-11-26T10:34:09ZMarcin SiodelskiUpdate cb_cmds with commands to retrieve configuration data for DHCPv4We need to update the cb_cmds hooks library to support commands to retrieve configuration information from the database via the configuration backend for subnets, shared networks, global parameters, options and option definitions. The fo...We need to update the cb_cmds hooks library to support commands to retrieve configuration information from the database via the configuration backend for subnets, shared networks, global parameters, options and option definitions. The following are the examples of the corresponding backend commands: `getSubnet4`, `getModifiedSubnets4` etc.Kea1.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/405Update cb_cmds with commands to delete configuration data for DHCPv42019-01-25T22:47:56ZMarcin SiodelskiUpdate cb_cmds with commands to delete configuration data for DHCPv4The cb_cmds must be updated to support commands to delete subnets, shared networks, options, option definitions and global parameters from the database via the configuration backends, e.g. `deleteSubnet4`, `deleteAllSubnets4` etc.The cb_cmds must be updated to support commands to delete subnets, shared networks, options, option definitions and global parameters from the database via the configuration backends, e.g. `deleteSubnet4`, `deleteAllSubnets4` etc.Kea1.6Francis DupontFrancis Dupont