Branch: refs/heads/new-pmtud
Home:
https://github.com/kronosnet/kronosnet
Commit: 18fe60ab186a708827e7488aabe963363e10f37e
https://github.com/kronosnet/kronosnet/commit/18fe60ab186a708827e7488aabe96…
Author: Fabio M. Di Nitto <fdinitto(a)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(a)redhat.com>