Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2024-01-11T14:52:45Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/3192Allow `perfdhcp` to behave like an endpoint client2024-01-11T14:52:45ZChrisPortmanAllow `perfdhcp` to behave like an endpoint client---
name: perfdhcp DHCPv4 not as a relay
about: Support for perfdchp DHCPv4 Operation as a normal client (not relay)
---
**Is your feature request related to a problem? Please describe.**
I would like to be able to use perfdhcp to test...---
name: perfdhcp DHCPv4 not as a relay
about: Support for perfdchp DHCPv4 Operation as a normal client (not relay)
---
**Is your feature request related to a problem? Please describe.**
I would like to be able to use perfdhcp to test a dhcp implementation including the ability to process DORA over broadcast.
**Describe the solution you'd like**
An option that enabled perfdhcp to act as an end client as opposed to a relay, which means using broadcast traffic, not setting
giaddr and binding to port 68 and not 67.
**Additional context**
I'm specifically trying to tests a DHCP application on the same host. This means that the dhcp process binds on 67 and the current behaviour of perfdhcp is to also bind on 67 which fails. If perfdhcp can function as a normal client, it can use 68.
**Funding its development**
Unfortunately no, but see next section
**Participating in development**
I have a patch ready to submit via a MR once I can get permission to fork.
**Contacting you**
Please reach out via github. I can provide email via a direct message if required.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2875perfdhcp enhancements: do not allow -6 -J usage without -A2023-06-15T16:13:14ZPiotrek Zadrogaperfdhcp enhancements: do not allow -6 -J usage without -AWhile working on #2834 it occurred to me that using `perfdhcp -6 -J` without `-A1` makes no sense.
It could be considered as an exception and some nice hint could be returned to the user.While working on #2834 it occurred to me that using `perfdhcp -6 -J` without `-A1` makes no sense.
It could be considered as an exception and some nice hint could be returned to the user.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/2397perfdhcp -W doesn't limit the number of requests via -n if the rate is not me...2023-07-31T13:50:53ZAndrei Pavelandrei@isc.orgperfdhcp -W doesn't limit the number of requests via -n if the rate is not mentioned via -rExpectation, even when `-r` is not specified:
```shell
Running: perfdhcp -4 -l vethclient -n 100 -r 100 -W 1000000
***Statistics for: DISCOVER-OFFER***
sent packets: 100
received packets: 100
```
Reality:
```shell
Running: perfdhcp -4 -...Expectation, even when `-r` is not specified:
```shell
Running: perfdhcp -4 -l vethclient -n 100 -r 100 -W 1000000
***Statistics for: DISCOVER-OFFER***
sent packets: 100
received packets: 100
```
Reality:
```shell
Running: perfdhcp -4 -l vethclient -n 100 -W 1000000
***Statistics for: DISCOVER-OFFER***
sent packets: 2394
received packets: 97
```
Discovered while responding to https://lists.isc.org/pipermail/kea-users/2022-May/003432.html.outstandinghttps://gitlab.isc.org/isc-projects/kea/-/issues/1742perfdhcp complains about wrong exchange when receiving reply in rapid-commit ...2022-11-02T15:10:20ZAndrei Pavelandrei@isc.orgperfdhcp complains about wrong exchange when receiving reply in rapid-commit modeThese are relevant options accepted by perfdhcp (description seems wrong, shouldn't exchange be SOLICIT-REPLY?):
```
-c Adds a rapid-commit option (exchanges will be SOLICIT-ADVERTISE).
-i Performs only the initial ...These are relevant options accepted by perfdhcp (description seems wrong, shouldn't exchange be SOLICIT-REPLY?):
```
-c Adds a rapid-commit option (exchanges will be SOLICIT-ADVERTISE).
-i Performs only the initial part of the exchange: DISCOVER-OFFER if -4 is selected, SOLICIT-ADVERTISE
if -6 is chosen.
```
This is a warning that you get if you try to use `-c` without `-i`:
```
"-i must be set to use -c"
```
but then perfdhcp complains:
```
ERROR: running perfdhcp: Packets exchange not specified
```
```
ExchangesMapIterator it = exchanges_.find(xchg_type);
if (it == exchanges_.end()) {
isc_throw(BadValue, "Packets exchange not specified");
}
```
The fix could be as simple as allowing `-c` without `-i`.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/1563allow perfdhcp to send renew only2022-11-02T15:10:17ZAndrei Pavelandrei@isc.orgallow perfdhcp to send renew onlyWas trying to spin up a fast setup for support#17299 to see that a DHCP client does not exit it's renew state while changing configurations. This is not easily achieveable with the current perfdhcp which, at most, sends 1:1:1 discover:re...Was trying to spin up a fast setup for support#17299 to see that a DHCP client does not exit it's renew state while changing configurations. This is not easily achieveable with the current perfdhcp which, at most, sends 1:1:1 discover:requests:renews/solicits:requests:renews. I would like to send 1:1:n messages or even 0:0:n. Solutions:
* 1:1:n
* Don't remove from the ack_storage/reply_storage after a renew message has been sent
* Allow renew rate to surpass rate
* As an extension to allow 0:0:n
* Save the ack_storage/reply_storage in a file on one run. Load the ack_storage/reply_storage from file in the run that sends renews only.
This would also result in an increase of performance measurements if performance experiments are run in this mode. The assumption here is that discovers and solicits are more resource-intensive to be handled. So getting rid of them would result in more leases (fine, renews) per second.
And that is not a cheap unrealistic shortcut, but rather a scenario more closer to reality.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/1545perfdhcp command line examples are needed2022-11-02T15:10:19ZTomek Mrugalskiperfdhcp command line examples are neededOne person complained about [lack of perfdhcp command line examples](https://lists.isc.org/pipermail/kea-users/2019-August/002512.html) on kea-users, which gotten a reply with someone pointing out to some ancient document Tomek and Marc...One person complained about [lack of perfdhcp command line examples](https://lists.isc.org/pipermail/kea-users/2019-August/002512.html) on kea-users, which gotten a reply with someone pointing out to some ancient document Tomek and Marcin wrote in 2012.
We should either add a new section to the ARM explaining basics of perfdhcp, or extend current man page. I think long term ARM section would be better, as we may evolve it into performance tips.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/1133Modify perfdhcp to track stats per subnet, when mulitple subnets are targetted2022-11-02T15:10:20ZThomas MarkwalderModify perfdhcp to track stats per subnet, when mulitple subnets are targettedIt would be handy if perfdhcp could track statistics for each subnet it has been told to send target.It would be handy if perfdhcp could track statistics for each subnet it has been told to send target.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/482perfdhcp avalanche: more research needed for selecting proper periods for che...2022-11-02T15:10:19ZMichal Nowikowskiperfdhcp avalanche: more research needed for selecting proper periods for checking resending packetsCurrently this is 200ms. It was choosen based on experiments.
The whole scenario times were more less the lowest between 50ms and 200ms.
This issue reflects review comment: https://gitlab.isc.org/isc-projects/kea/merge_requests/237#note...Currently this is 200ms. It was choosen based on experiments.
The whole scenario times were more less the lowest between 50ms and 200ms.
This issue reflects review comment: https://gitlab.isc.org/isc-projects/kea/merge_requests/237#note_45247
This time is located in avalanche_scen.cc file, in run() method.backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/420Decrease CPU workload for low traffic condition in perfdhcp2022-11-02T15:10:19ZTomek MrugalskiDecrease CPU workload for low traffic condition in perfdhcp#283 implemented support for optional threaded support in perfdhcp. The code behaves better when generating high volume traffic on multi-core systems. However, it does not handle well situations where there is only one core and little tr...#283 implemented support for optional threaded support in perfdhcp. The code behaves better when generating high volume traffic on multi-core systems. However, it does not handle well situations where there is only one core and little traffic is needed.
During discussions on !135 and related it became apparent that the approach to slip for 1 us is not the right solution. The code should behave adaptively and calculate time to the next action rather than check it a million times per second.
Related MR: !165backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/336Perfdhcp: Implement burst-size2022-11-02T15:22:52ZTomek MrugalskiPerfdhcp: Implement burst-sizeBefore #283 there was an aggresivity parameter that controlled how many packets are sent at once. After #283 changes it was no longer used.
There may be scenarios where bursty traffic is useful. We should add a parameter called burst-size.Before #283 there was an aggresivity parameter that controlled how many packets are sent at once. After #283 changes it was no longer used.
There may be scenarios where bursty traffic is useful. We should add a parameter called burst-size.outstandinghttps://gitlab.isc.org/isc-projects/kea/-/issues/60Add automatic rate adjustment to perfdhcp2022-11-02T15:08:41ZGhost UserAdd automatic rate adjustment to perfdhcpTo facilitate performance measurements, it would be helpful if perfdhcp had an automatic rate adjustment feature.
With this, perfdhcp would start sending packets a specified initial rate, then periodically adjust the rate upwards or dow...To facilitate performance measurements, it would be helpful if perfdhcp had an automatic rate adjustment feature.
With this, perfdhcp would start sending packets a specified initial rate, then periodically adjust the rate upwards or downwards automatically until it reached the maximum rate at which the fraction of packets lost was no higher than a given value.backlog