一箭多星: 如何syn flood 一个网段服务器
2016-01-22 01:50
253 查看
在负载均衡场景中,有时虚拟服务是以服务整个网段的, 比如IP:PORT有可能是 10.1.1.0:80 而不是10.1.1.1:80, 10.1.1.0:80 掩码如果是255.255.255.0, 那么10.1.1.0:80 就包括服务10.1.1.1:80 到10.1.1.254:80, 整个子网. 那么当虚拟服务为10.1.1.0:80, tcp syncookie 如何工作呢. 这个情况就比较复杂那, 一般的syn cookie硬件加速不能涵盖这种应用情况,因此会导致绝大部分的syncookie在软件中处理,导致CPU过高,服务会受到影响.
在最新一代的硬件加速器里,已经提供那针对网断虚拟服务器的syncookie处理功能,这样会极大地减少syncookie软件处理,减少CPU使用率,提高服务性能. 那么如何来测试这个新的硬件加速syncookie功能呢? 首先我们学要这个测试能够针对多个服务器同时并发TCP SYN packet, 而且以线速极的速度发包. 这里基于mTCP ewget应用,做出以下改进,设计出高速并发synflood应用
1, 增加静态连接库
libcidr 来处理命令行参数为网络子网的目标地址如: 10.1.1.0/24
2, 修改 mTCP mtcp_init_rss, 增加目标地址数参数,使mtcp_init_rss能够提前初始化基于源地址,目标地址,源端口,目标端口的地址池address_pool
3, 去掉 RSS CPU affinity check, 因为这会导致 GetRSSHash high CPU cycles, 因为mtcp_connect每次都会调用这个函数 mtcp_connect->FetchAddress->GetRSSCPUCore->GetRSSHash
4, 修改 mtcp/src/ip_out.c to 生成 随机源地址, 注意不要用 rand() 因为 rand() 不 thread-safe 会导致spin lock contention(_raw_spin_lock high cpu cycles from perf top and low packet rate also see
make your program slower with threads )
http://ickernel.blogspot.com/2016/01/syn-flood-network-virtual-server-in.html
在最新一代的硬件加速器里,已经提供那针对网断虚拟服务器的syncookie处理功能,这样会极大地减少syncookie软件处理,减少CPU使用率,提高服务性能. 那么如何来测试这个新的硬件加速syncookie功能呢? 首先我们学要这个测试能够针对多个服务器同时并发TCP SYN packet, 而且以线速极的速度发包. 这里基于mTCP ewget应用,做出以下改进,设计出高速并发synflood应用
1, 增加静态连接库
libcidr 来处理命令行参数为网络子网的目标地址如: 10.1.1.0/24
2, 修改 mTCP mtcp_init_rss, 增加目标地址数参数,使mtcp_init_rss能够提前初始化基于源地址,目标地址,源端口,目标端口的地址池address_pool
3, 去掉 RSS CPU affinity check, 因为这会导致 GetRSSHash high CPU cycles, 因为mtcp_connect每次都会调用这个函数 mtcp_connect->FetchAddress->GetRSSCPUCore->GetRSSHash
4, 修改 mtcp/src/ip_out.c to 生成 随机源地址, 注意不要用 rand() 因为 rand() 不 thread-safe 会导致spin lock contention(_raw_spin_lock high cpu cycles from perf top and low packet rate also see
make your program slower with threads )
http://ickernel.blogspot.com/2016/01/syn-flood-network-virtual-server-in.html
相关文章推荐
- Educational Codeforces Round 6(C)尺取法+贪心
- 16初出茅庐A题
- qt 容器类
- Educational Codeforces Round 6 (B)模拟
- Educational Codeforces Round 6 (A)贪心
- tensorflow源代码方式安装
- 关于Nginx+Gunicorn+uwsgi+后端框架到app架构梳理和思考
- js中变量声明的问题
- Educational Codeforces Round 6 620C Pearls in a Row(stl)
- 【20160122】深夜难眠,觉晓此生
- C语言判断一个字符串是否是另一个字符串的子串
- Android TextView控件 之滚动文字效果
- UI笔记之UIButton
- C 二分查找算法
- LUA相关基础知识
- MFC获取光标相对于控件所在行
- On Mac platform,Using Eclipse + PyDev Plugins + Python to build a Python development environment
- web.xml配置以及servlet生命周期
- [工作中的设计模式]单例模式singleton
- CCF模板生成系统