Add direct burst violations and increase epm limit.

This commit is contained in:
asofold 2014-07-26 01:06:58 +02:00
parent 4eefc0c3ff
commit 9f03a3ea06
5 changed files with 11 additions and 5 deletions

View File

@ -60,7 +60,7 @@ public class MorePackets extends Check {
} }
// Check for a violation of the set limits. // Check for a violation of the set limits.
final double violation = NetStatic.morePacketsCheck(data.morePacketsFreq, time, 1f, cc.morePacketsEPSMax, cc.morePacketsEPSIdeal, data.morePacketsBurstFreq, cc.morePacketsBurstPackets, cc.morePacketsBurstEPM); final double violation = NetStatic.morePacketsCheck(data.morePacketsFreq, time, 1f, cc.morePacketsEPSMax, cc.morePacketsEPSIdeal, data.morePacketsBurstFreq, cc.morePacketsBurstPackets, cc.morePacketsBurstDirect, cc.morePacketsBurstEPM);
// Process violation result. // Process violation result.
if (violation > 0.0) { if (violation > 0.0) {

View File

@ -81,6 +81,7 @@ public class MovingConfig extends ACheckConfig {
/** The maximum number of packets per second that we accept. */ /** The maximum number of packets per second that we accept. */
public final float morePacketsEPSMax; public final float morePacketsEPSMax;
public final float morePacketsBurstPackets; public final float morePacketsBurstPackets;
public final double morePacketsBurstDirect;
public final double morePacketsBurstEPM; public final double morePacketsBurstEPM;
public final ActionList morePacketsActions; public final ActionList morePacketsActions;
@ -175,7 +176,8 @@ public class MovingConfig extends ACheckConfig {
morePacketsCheck = config.getBoolean(ConfPaths.MOVING_MOREPACKETS_CHECK); morePacketsCheck = config.getBoolean(ConfPaths.MOVING_MOREPACKETS_CHECK);
morePacketsEPSIdeal = config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSIDEAL); morePacketsEPSIdeal = config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSIDEAL);
morePacketsEPSMax = Math.max(morePacketsEPSIdeal, config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSMAX)); morePacketsEPSMax = Math.max(morePacketsEPSIdeal, config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSMAX));
morePacketsBurstPackets = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_PACKETS); morePacketsBurstPackets = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_EPM);
morePacketsBurstDirect = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_DIRECT);
morePacketsBurstEPM = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_EPM); morePacketsBurstEPM = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_EPM);
morePacketsActions = config.getOptimizedActionList(ConfPaths.MOVING_MOREPACKETS_ACTIONS, Permissions.MOVING_MOREPACKETS); morePacketsActions = config.getOptimizedActionList(ConfPaths.MOVING_MOREPACKETS_ACTIONS, Permissions.MOVING_MOREPACKETS);

View File

@ -507,6 +507,7 @@ public abstract class ConfPaths {
public static final String MOVING_MOREPACKETS_EPSMAX = MOVING_MOREPACKETS + "epsmax"; public static final String MOVING_MOREPACKETS_EPSMAX = MOVING_MOREPACKETS + "epsmax";
private static final String MOVING_MOREPACKETS_BURST = MOVING_MOREPACKETS + "burst."; private static final String MOVING_MOREPACKETS_BURST = MOVING_MOREPACKETS + "burst.";
public static final String MOVING_MOREPACKETS_BURST_PACKETS = MOVING_MOREPACKETS_BURST + "packets"; public static final String MOVING_MOREPACKETS_BURST_PACKETS = MOVING_MOREPACKETS_BURST + "packets";
public static final String MOVING_MOREPACKETS_BURST_DIRECT = MOVING_MOREPACKETS_BURST + "directviolation";
public static final String MOVING_MOREPACKETS_BURST_EPM = MOVING_MOREPACKETS_BURST + "epmviolation"; public static final String MOVING_MOREPACKETS_BURST_EPM = MOVING_MOREPACKETS_BURST + "epmviolation";
public static final String MOVING_MOREPACKETS_ACTIONS = MOVING_MOREPACKETS + "actions"; public static final String MOVING_MOREPACKETS_ACTIONS = MOVING_MOREPACKETS + "actions";

View File

@ -358,7 +358,8 @@ public class DefaultConfig extends ConfigFile {
set(ConfPaths.MOVING_MOREPACKETS_EPSIDEAL, 20); set(ConfPaths.MOVING_MOREPACKETS_EPSIDEAL, 20);
set(ConfPaths.MOVING_MOREPACKETS_EPSMAX, 22); set(ConfPaths.MOVING_MOREPACKETS_EPSMAX, 22);
set(ConfPaths.MOVING_MOREPACKETS_BURST_PACKETS, 40); set(ConfPaths.MOVING_MOREPACKETS_BURST_PACKETS, 40);
set(ConfPaths.MOVING_MOREPACKETS_BURST_EPM, 30); set(ConfPaths.MOVING_MOREPACKETS_BURST_DIRECT, 30);
set(ConfPaths.MOVING_MOREPACKETS_BURST_EPM, 120);
set(ConfPaths.MOVING_MOREPACKETS_ACTIONS, "cancel vl>10 log:morepackets:0:2:if cancel vl>100 log:morepackets:0:2:if cancel cmd:kickpackets"); set(ConfPaths.MOVING_MOREPACKETS_ACTIONS, "cancel vl>10 log:morepackets:0:2:if cancel vl>100 log:morepackets:0:2:if cancel cmd:kickpackets");
set(ConfPaths.MOVING_MOREPACKETSVEHICLE_CHECK, true); set(ConfPaths.MOVING_MOREPACKETSVEHICLE_CHECK, true);

View File

@ -35,7 +35,7 @@ public class NetStatic {
* @param burstEPM Events per minute to trigger a burst violation. * @param burstEPM Events per minute to trigger a burst violation.
* @return The violation amount, i.e. "count above limit", 0.0 if no violation. * @return The violation amount, i.e. "count above limit", 0.0 if no violation.
*/ */
public static double morePacketsCheck(final ActionFrequency packetFreq, final long time, final float packets, final float maxPackets, final float idealPackets, final ActionFrequency burstFreq, final float burstPackets, final double burstEPM) { public static double morePacketsCheck(final ActionFrequency packetFreq, final long time, final float packets, final float maxPackets, final float idealPackets, final ActionFrequency burstFreq, final float burstPackets, final double burstDirect, final double burstEPM) {
// Pull down stuff. // Pull down stuff.
final long winDur = packetFreq.bucketDuration(); final long winDur = packetFreq.bucketDuration();
final int winNum = packetFreq.numberOfBuckets(); final int winNum = packetFreq.numberOfBuckets();
@ -90,7 +90,9 @@ public class NetStatic {
double violation = (double) fullCount - (double) (maxPackets * winNum * winDur / 1000f); double violation = (double) fullCount - (double) (maxPackets * winNum * winDur / 1000f);
final float burst = packetFreq.bucketScore(0); final float burst = packetFreq.bucketScore(0);
if (burst > burstPackets) { if (burst > burstPackets) {
// TODO: Account for "just now lag", i.e. time until first occupied one > 0.
burstFreq.add(time, 1f); // TODO: Remove float packets or do this properly. burstFreq.add(time, 1f); // TODO: Remove float packets or do this properly.
violation = Math.max(violation, burst - burstDirect);
violation = Math.max(violation, burstEPM * (double) (burstFreq.bucketDuration() * burstFreq.numberOfBuckets()) / 60000.0 - (double) burstFreq.score(0f)); violation = Math.max(violation, burstEPM * (double) (burstFreq.bucketDuration() * burstFreq.numberOfBuckets()) / 60000.0 - (double) burstFreq.score(0f));
} }
return Math.max(0.0, violation); return Math.max(0.0, violation);