基于QLearning强化学习的LDoS攻击实时防御机制matlab模拟与仿真
目录
✅1.问题描述
低速率拒绝服务(Low-rate Denial of Service, LDoS)攻击是一种新型的网络攻击方式。与传统的洪泛式DDoS攻击不同,LDoS攻击以低平均速率、周期性脉冲的方式向目标服务器发送攻击流量,利用TCP协议的重传超时(RTO)机制,精确地在RTO超时时刻发送短暂的高速脉冲,迫使TCP连接反复进入超时重传状态,从而严重降低合法用户的吞吐量。由于其平均流量极低,传统基于流量阈值的检测方法难以有效识别,具有极强的隐蔽性。
针对上述问题,本文提出一种基于Q-Learning强化学习的LDoS攻击实时防御机制。将网络防御问题建模为马尔可夫决策过程(MDP),利用Q-Learning算法在线学习最优防御策略,通过动态调整服务资源分配来保障系统在遭受LDoS攻击时的正常服务能力。
✨2.LDoS攻击模型
LDoS攻击流量可以用周期性矩形脉冲函数来描述。设攻击脉冲的周期为T,脉冲持续时间为l,脉冲峰值速率为R,则攻击流量函数为:

LDoS攻击的关键在于选择T≈RTOmin,使得每个脉冲恰好在TCP重传定时器超时时刻到达,从而触发TCP的指数退避机制。此时TCP连接的有效吞吐量急剧下降,可用下式近似:

其中η表示正常流量的归一化吞吐率。当l/T较大时,系统服务能力严重退化。
🔍3.基于Q-Learning的防御机制原理
1️⃣状态空间S: 系统周期性地采集网络特征参数,构成状态向量。在每个检测周期ΔT内,提取以下特征:
st=(x1,x2,x3,x4)
其中x1为当前周期内的流量突变度,x2为TCP重传率,x3为服务响应延迟,x4为CPU利用率。为了便于Q表存储,对连续状态进行离散化。定义流量突变度为:

其中σflow和μflow分别为检测周期内流量的标准差和均值。TCP重传率定义为:

其中Nretrans为重传包数,Ntotal为总包数。将每个特征量化为m个等级,则状态空间大小为∣S∣=m4。
2️⃣动作空间A: 防御动作基于动态服务资源分配,定义如下动作集合:

其中a0表示保持当前配置不变,a1表示增加服务队列缓冲区大小,a2表示启用流量限速,a3表示调整TCP超时参数(随机化RTO),a4表示综合执行多种防御手段。具体的资源调整量定义为:

其中B0为基础缓冲区大小,αi为第i个动作对应的调整系数。
3️⃣奖励函数R: 奖励函数的设计是防御机制的关键。综合考虑服务响应率和资源消耗:

其中Nserved/Nrequest为正常请求的服务成功率,Cresource/Cmax为归一化资源消耗,Dpenalty为惩罚项(当检测到攻击仍未有效防御时给予负奖励),ω1,ω2,ω3为权重系数且满足:
ω1+ω2+ω3=1
4️⃣Q-Learning算法:Q-Learning是一种无模型的时序差分强化学习算法,通过维护一个Q值表 Q(s,a)来估计在状态s下执行动作a的长期累积期望回报。Q值更新规则为:

5️⃣动态服务资源分配:当Q-Learning模块选定防御动作后,系统端执行动态资源分配。设当前系统服务资源向量为Rt=(Bt,λt,τt),分别表示缓冲区大小、限速阈值和RTO参数。执行动作at后资源更新为:

🚀4.着色Petri网CPN建模
1️⃣CPN基本结构:着色Petri网是一种高级Petri网,通过为托肯赋予"颜色"(数据类型)来增强建模能力。CPN模型定义为一个九元组:
CPN=(P,T,A,Σ,V,C,G,E,I)
其中,P为库所集合,T为变迁集合,A为有向弧集合,Σ为颜色集,V为变量集,C为颜色函数,G为守卫函数,E为弧表达式函数,I为初始标识函数。
2️⃣攻防CPN模型,建立以下关键库所:

对于检测变迁Tdetect:

📚5.MATLAB程序
%% ======================== 环境模拟函数 ========================
function [features, served_ratio, resource_cost] = simulate_step(...
action, prev_features, attack, sys, resource, t)
% 生成攻击流量
t_mod = mod(t * 0.1, attack.T);
if t_mod < attack.l
attack_flow = attack.R * (0.8 + 0.4*rand);
else
attack_flow = 2 * rand;
end
normal_flow = sys.normal_rate * (0.8 + 0.4*rand);
total_flow = attack_flow + normal_flow;
% 根据动作调整资源
switch action
case 1 % 保持不变
B = resource.B; lam = resource.lambda; tau_rand = 0;
case 2 % 增加缓冲区
B = min(resource.B * 1.3, sys.B_max); lam = resource.lambda; tau_rand = 0;
case 3 % 启用限速
B = resource.B; lam = resource.lambda * 0.7; tau_rand = 0;
case 4 % RTO随机化
B = resource.B; lam = resource.lambda; tau_rand = 1;
case 5 % 综合防御
B = min(resource.B * 1.2, sys.B_max);
lam = resource.lambda * 0.8; tau_rand = 1;
end
% 计算特征
x1_raw = attack_flow / max(total_flow, 1); % 流量突变度
x2_raw = min(attack_flow / max(total_flow, 1) * (1 - tau_rand*0.3), 1); % 重传率
effective_capacity = min(B / sys.B0, 1) * lam;
x3_raw = max(total_flow - effective_capacity, 0) / max(total_flow, 1); % 延迟
x4_raw = min(total_flow / sys.C_max, 1); % CPU利用率
% 服务成功率
if total_flow <= effective_capacity
served_ratio = min(normal_flow / max(normal_flow, 1), 1);
else
drop_ratio = (total_flow - effective_capacity) / total_flow;
served_ratio = max(1 - drop_ratio * 1.2, 0.1);
if action >= 3
served_ratio = min(served_ratio * 1.3, 0.98);
end
end
resource_cost = (B/sys.B_max * 0.3 + (1-lam/sys.lambda0)*0.3 + tau_rand*0.4);
features = [x1_raw, x2_raw, x3_raw, x4_raw];
end
💡6.仿真结果分析




👇7.完整程序下载
完整可运行代码,博主已上传至CSDN,使用版本为MATLAB2024b:
(本程序包含程序操作步骤视频)
基于QLearning强化学习的LDoS攻击实时防御机制matlab模拟与仿真【包括程序,中文注释,程序操作视频】资源-CSDN下载

浙公网安备 33010602011771号