SD-Anti-DDoS: Fast and efficient DDoS defense in software-defined networks
Cui Y, Yan L, Li S, et al. SD-Anti-DDoS: Fast and efficient DDoS defense in software-defined networks[J]. Journal of Network and Computer Applications, 2016, 68: 65-79.
本文提出一种针对DDoS攻击的检测与缓解机制,由四部份组成:attack detection trigger,attack detection,attack traceback,attack mitigation。本文质量一般,不过packet_in trigger提出觉得有点创新。
introduction
本文通过trigger来触发检测算法进行检测,检测到后再分析switch是否为恶意攻击的路径,再结合全局拓扑和受攻击者IP找到恶意流的源switch,从源进行缓解。 整体架构如图4:
init state:检测packet_in是否有异常。 detecxtion state:检测DDoS是否发生。 Traceback State:检测包攻击路径 Mitigation state:根据找到的source switch进行缓解。
- 1.发生异常
- 2.没检测到DDoS攻击
- 3.检测到DDoS攻击
- 4.没找到攻击包路径
- 5.path,source switch被找到
- 6.清理完成。
图5为组件和工作流程图
[]
由图可见本机制的4部分合作关系下面分别介绍这四部份。
Attack detection trigger
本部份主要检测packet_in是否有异常的数据量峰值包括两部份:消息容量计算,消息容量异常检测,使用的是exact-STORM算法,它使用的一种Indexed Trream Buffer(ISB)的数据结构,ISB以节点的形式存储信息,主要结构为:
- n.obj: packet_in消息的velocity,其实就是时间间隔到达的包数除以时间间隔。
- n.id
- n.count_after: buffer中其他点与当前点的V在一定范围内的个数。
- n.nn_before: 最相近的指定个节点id组成的列表。
packet_in消息异常检测流程和算法如图6和A1:
算法和流程图讲的是一个东西。当指定数据的packet_in包到达后计算该时间间隔的包体积V(就是包数除以时间),并使用exact-STORM来检测是否异常。 exact-STORM算法如A2:
本算法中,如果buffer中包与本包的V差值在R之内的个数+与本包V值最近的几个包数(没说几个)<某个值,则本包被视为游离包,返回异常。 使用本触发方法比定期触发更节省资源。
Attack detection
本文使用的检测算法:BPNN(没具体讲算法怎么用。)输入层5,隐藏层10,输出层1.输入特征为:流项的包数,流项的字节数,流项的包率,流项的字节率,流项的生存时间。具体流程见图7:
解释:对每个流抽取特征并检测,如果是恶意流:存dIP,如果恶意流数量超过一定值:找到最可能的dIP,停止分析。
attack traceback
利用前一阶段获得的信息进行路径发现和路径源头。具体流程见图8
这里再次使用BPNN算法,计算S中的每个流,如果恶意流数量超过一定值而将该S定为恶意S,再根据dIP,恶意S和全局拓扑找到source。
attack mitigation
目的:阻寒攻击流量。 在source给恶意流量以最高优先级插入丢弃策略,流项见图9
评价
RYU中,使用25个S,200个host,重要参数设置见表2
整体性能评估
表3各模块启动时间,图10:CPU使用率,图11控制器网络负载
表4为寻找路径结果
找到两条路径:e11-a3-c1-a2-e6和e16-a4-c1-a2-e6 表5为在block前后controller接收率的变化
##结果性能对比
- 本文的优点:触发型检测,可删除S中的entries(没有具体的性能对比),对比见表6
- 比较trigger和periodic的性对,本文只是自己跟自己比,没有跟别人比。
Comput.NetW.这个怎么样?
如果这篇文章帮到了你, 那就赞助我一瓶水吧, 这可以让我有动力去写更多的文章
Sponsor