UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DDoSDetection.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "CoreMinimal.h"
9#include "HAL/Platform.h"
10#include "HAL/PlatformTime.h"
11
12
13// Delegates
14
19
20
21
60
61
125
130{
133
134
137 {
138 }
139
140 void ApplyState(FDDoSState& Target)
141 {
142 Target.bSendEscalateAnalytics = bSendEscalateAnalytics;
143 Target.EscalateQuotaPacketsPerSec = EscalateQuotaPacketsPerSec;
144 Target.EscalateQuotaDisconnPacketsPerSec = EscalateQuotaDisconnPacketsPerSec;
145 Target.EscalateQuotaBadPacketsPerSec = EscalateQuotaBadPacketsPerSec;
146 Target.EscalateTimeQuotaMSPerFrame = EscalateTimeQuotaMSPerFrame;
147 Target.PacketLimitPerFrame = PacketLimitPerFrame;
148 Target.PacketTimeLimitMSPerFrame = PacketTimeLimitMSPerFrame;
149 Target.NetConnPacketTimeLimitMSPerFrame = NetConnPacketTimeLimitMSPerFrame;
150 Target.CooloffTime = CooloffTime;
151 }
152
157 void ApplyAdjustedState(FDDoSState& Target, float FrameAdjustment)
158 {
159 // Exclude escalation triggers from this
160 //Target.EscalateTimeQuotaMSPerFrame = (EscalateTimeQuotaMSPerFrame == -1 ? -1 : EscalateTimeQuotaMSPerFrame * FrameAdjustment);
161 Target.PacketLimitPerFrame = (PacketLimitPerFrame == -1 ? -1 : (int32)((float)PacketLimitPerFrame * FrameAdjustment));
162 Target.PacketTimeLimitMSPerFrame = (PacketTimeLimitMSPerFrame == -1 ? -1 : (int32)((float)PacketTimeLimitMSPerFrame * FrameAdjustment));
163 Target.NetConnPacketTimeLimitMSPerFrame = (NetConnPacketTimeLimitMSPerFrame == -1 ? -1 : (int32)((float)NetConnPacketTimeLimitMSPerFrame * FrameAdjustment));
164 }
165};
166
167
173{
174public:
179
180
186 NETCORE_API void Init(int32 MaxTickRate);
187
191 NETCORE_API void InitConfig();
192
196 NETCORE_API void SetMaxTickRate(int32 MaxTickRate);
197
204
205
209 NETCORE_API void PreFrameReceive(float DeltaTime);
210
215
216
221 {
222 // Limit checks to once every 128 packets
223 if (((NonConnPacketCounter + DisconnPacketCounter) & 0x7F) == 0)
224 {
226 }
227 }
228
233 {
234 // Limit checks to once every 128 packets
235 if ((NetConnPacketCounter & 0x7F) == 0)
236 {
238 }
239 }
240
241
249
250
251 // Brief accessors
252
253 bool IsDDoSDetectionEnabled() const { return bDDoSDetection; }
254 bool IsDDoSAnalyticsEnabled() const { return bDDoSAnalytics; }
257
270
271protected:
278
289
290
291
292protected:
295
298
301
304
305
308
311
314
317
320
321
324
327
330
331
334
337
340
341
344
347
350
351
354
357
360
363
366
367
368public:
371};
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
return true
Definition ExternalRpcRegistry.cpp:601
void Init()
Definition LockFreeList.h:4
Definition DDoSDetection.h:173
int32 StartFramePacketCount
Definition DDoSDetection.h:359
double LastPerSecQuotaBegin
Definition DDoSDetection.h:343
bool CheckNetConnLimits()
Definition DDoSDetection.h:284
int8 HitchFrameTolerance
Definition DDoSDetection.h:336
bool ShouldBlockNonConnPackets() const
Definition DDoSDetection.h:255
int32 GetNetConnPacketCounter() const
Definition DDoSDetection.h:261
void IncDisconnPacketCounter()
Definition DDoSDetection.h:262
int32 GetErrorPacketCounter() const
Definition DDoSDetection.h:267
NETCORE_API void PreFrameReceive(float DeltaTime)
Definition DDoSDetection.cpp:262
int32 LogHitCounter
Definition DDoSDetection.h:329
double StartFrameRecvTimestamp
Definition DDoSDetection.h:353
int32 HitchTimeQuotaMS
Definition DDoSDetection.h:333
int8 WorstActiveState
Definition DDoSDetection.h:313
int32 DDoSLogSpamLimit
Definition DDoSDetection.h:326
NETCORE_API void UpdateSeverity(bool bEscalate)
Definition DDoSDetection.cpp:178
double LastMetEscalationConditions
Definition DDoSDetection.h:316
NETCORE_API bool CheckNonConnQuotasAndLimits()
Definition DDoSDetection.cpp:353
bool bDDoSLogRestrictions
Definition DDoSDetection.h:323
NETCORE_API void SetMaxTickRate(int32 MaxTickRate)
Definition DDoSDetection.cpp:173
FDDoSSeverityEscalation NotifySeverityEscalation
Definition DDoSDetection.h:370
void IncErrorPacketCounter()
Definition DDoSDetection.h:266
double ExpectedFrameTime
Definition DDoSDetection.h:362
int32 GetNonConnPacketCounter() const
Definition DDoSDetection.h:259
bool IsDDoSDetectionEnabled() const
Definition DDoSDetection.h:253
NETCORE_API void InitConfig()
Definition DDoSDetection.cpp:100
TArray< FDDoSPacketCounters > CounterPerSecHistory
Definition DDoSDetection.h:346
bool bMetEscalationConditionsThisFrame
Definition DDoSDetection.h:319
NETCORE_API FDDoSDetection()
Definition DDoSDetection.cpp:65
void IncBadPacketCounter()
Definition DDoSDetection.h:264
int32 GetBadPacketCounter() const
Definition DDoSDetection.h:265
void CondCheckNonConnQuotasAndLimits()
Definition DDoSDetection.h:220
bool bHitFrameNetConnLimit
Definition DDoSDetection.h:303
bool bDDoSAnalytics
Definition DDoSDetection.h:297
int32 GetDisconnPacketCounter() const
Definition DDoSDetection.h:263
int8 ActiveState
Definition DDoSDetection.h:310
void CondCheckNetConnLimits()
Definition DDoSDetection.h:232
double EndFrameRecvTimestamp
Definition DDoSDetection.h:356
bool bDDoSDetection
Definition DDoSDetection.h:294
void IncDroppedPacketCounter(int32 Count=1)
Definition DDoSDetection.h:268
float FrameAdjustment
Definition DDoSDetection.h:365
bool bHitFrameNonConnLimit
Definition DDoSDetection.h:300
bool CheckLogRestrictions()
Definition DDoSDetection.h:245
TArray< FDDoSStateConfig > DetectionSeverity
Definition DDoSDetection.h:307
bool IsDDoSAnalyticsEnabled() const
Definition DDoSDetection.h:254
int32 GetDroppedPacketCounter() const
Definition DDoSDetection.h:269
int32 LastCounterPerSecHistoryIdx
Definition DDoSDetection.h:349
int32 HitchFrameCount
Definition DDoSDetection.h:339
bool ShouldBlockNetConnPackets() const
Definition DDoSDetection.h:256
void IncNetConnPacketCounter()
Definition DDoSDetection.h:260
void IncNonConnPacketCounter()
Definition DDoSDetection.h:258
NETCORE_API void PostFrameReceive()
Definition DDoSDetection.cpp:337
Definition Array.h:670
static double Seconds()
Definition AndroidPlatformTime.h:20
Definition DDoSDetection.h:26
int32 NonConnPacketCounter
Definition DDoSDetection.h:28
int32 ErrorPacketCounter
Definition DDoSDetection.h:40
int32 DisconnPacketCounter
Definition DDoSDetection.h:34
int32 NetConnPacketCounter
Definition DDoSDetection.h:31
int32 WorstFrameReceiveTimeMS
Definition DDoSDetection.h:46
int32 BadPacketCounter
Definition DDoSDetection.h:37
FDDoSPacketCounters()
Definition DDoSDetection.h:49
int32 DroppedPacketCounter
Definition DDoSDetection.h:43
Definition DDoSDetection.h:130
FDDoSStateConfig()
Definition DDoSDetection.h:135
void ApplyAdjustedState(FDDoSState &Target, float FrameAdjustment)
Definition DDoSDetection.h:157
void ApplyState(FDDoSState &Target)
Definition DDoSDetection.h:140
FString SeverityCategory
Definition DDoSDetection.h:132
Definition DDoSDetection.h:66
int32 EscalateQuotaBadPacketsPerSec
Definition DDoSDetection.h:77
int32 EscalateQuotaDisconnPacketsPerSec
Definition DDoSDetection.h:74
bool HasHitQuota(FDDoSPacketCounters &InCounter, int32 TimePassedMS) const
Definition DDoSDetection.h:115
int32 PacketLimitPerFrame
Definition DDoSDetection.h:83
int32 PacketTimeLimitMSPerFrame
Definition DDoSDetection.h:86
int16 EscalateTimeQuotaMSPerFrame
Definition DDoSDetection.h:80
bool bSendEscalateAnalytics
Definition DDoSDetection.h:68
int32 CooloffTime
Definition DDoSDetection.h:92
int32 NetConnPacketTimeLimitMSPerFrame
Definition DDoSDetection.h:89
FDDoSState()
Definition DDoSDetection.h:95
int32 EscalateQuotaPacketsPerSec
Definition DDoSDetection.h:71