Branch: refs/heads/new-pmtud Home: https://github.com/kronosnet/kronosnet Commit: 18fe60ab186a708827e7488aabe963363e10f37e https://github.com/kronosnet/kronosnet/commit/18fe60ab186a708827e7488aabe963... Author: Fabio M. Di Nitto fdinitto@redhat.com Date: 2017-12-30 (Sat, 30 Dec 2017)
Changed paths: M libknet/internals.h M libknet/tests/knet_bench.c M libknet/threads_pmtud.c M libknet/transport_udp.c
Log Message: ----------- [PTMUd] if any threads receives a EMSGSIZE outside of a PMTUD run, force PTMUd to run
Scenario:
node X has MTU Y on the interface and application is sending packets with size >= Y.
The interface MTU is suddenly reduced to < Y
Before this change, the kernel would be dropping packets till the next PMTUd run.
After this change, the PMTUd will be informed that it has to rerun (overriding the pmtud_interval), reducing the packet drop to a minimum.
How to test:
force knet_bench to send 1500 size packets with ping_data (requires code change) and start it.
reduce MTU on the interface from 1500 to 1300 (for example)
Notice an immediate trigger of PMTUd run in debug mode
Note: going up, from 1300 to 1500 will wait for the next PMTUd re-run as there is no immediate way to detect this change unless we start listening to kernel netlink sockets with libnl3 (investigation in progress but not critical enough atm).
Signed-off-by: Fabio M. Di Nitto fdinitto@redhat.com