测试dos攻击对openflow中flow_table溢出的影响
环境准备 环境
安装mininet
安装pox 由于使用了mininet安装时添加了参数-a,所以在安装了mininet的同时,也安装了许多其他的软件,其中就包括了pox 使用pox 启动pox控制器
使用mininet连接pox控制器
测试演示 0.topo 我们部署一台交换机s0,三台主机连接到该交换机 1.修改交换机的流表数量为100,来模拟模拟交换机内存不足的情况
2.使用scapy发送大量的流量(二层),促使控制器不断的install新的流表
import socket address = (‘10.0.0.2‘,8080) s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(address) i = 1 while True: data,addr = s.recvfrom(2048) print "i:",i,"received:",data,"from",addr i = i + 1 s.close()
from scapy.all import * for i in range(100,1100): print(‘now:‘,i) pkt = Ether(src=‘00:00:00:00:00:01‘,dst=‘00:00:00:00:00:02‘)/IP(src=‘10.0.0.1‘,dst=‘10.0.0.2‘)/UDP(sport=i,dport=8080)/str(i) sendp(pkt,iface=‘h1-eth0‘) 3.运行结果 我们在设置流表上限最多为100条的情况下,可以看到在发送数据包个数大于100时,出现了数据包的丢包,同时在pox控制器端也出现了下发流表的报错 由于pox模块forwarding.l2_learning下发的流表带有hard_time字段,当数据包超过100后,新的数据包到来后,被交换机上报到控制器,但是在控制器下发流表回交换机的环节,因为流表达到上限,而旧的流表还没有过期,导致了无法install新的流表,数据包没有办法被处理,进而出现了丢包 4.结论 在实际场景,交换机的流表数量远远大于100,出现流表溢出的情况的可能性较低,但是可以看出,如果能有办法达到这个临界值的话,是可以造成交换机正常工作的。 其实只是要说明这个以上结论,只要将流表上限设为1,那么pingall命令都将会无法ping通,就已经足够说明危害了,但是该思路存在进一步改进的地方,毕竟去发送这么大的流量去溢出流表,似乎有点大材小用了,应该尝试去试着用小流量就可以造成流表操作的异常,当然,这也就和题目的dos不相干了。并且该危害也只影响到了交换机,对控制器没有影响,也不够威力 改进的方向
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 练习题(选择填空)1
- active-directory – 在Windows Server 2012上安装Active D
- 单元测试 – 如何在实际项目中的Microsoft Dynamics AX 201
- windows-7 – Outlook加密电子邮件boo boo
- windows – 使用git客户端和SVN存储库的最佳工具/方法
- 用Win2003?server打造安全的个人Web服务器
- Raspberry Pi 3 B+ 开箱基本配置(Windows环境下)
- 在Windows XP下安装Apache+MySQL+PHP环境
- batch-file – 从批处理脚本中分配IP
- windows-7 – 在windows7中设置JRE路径的要求,如设置JDK的路
- MSDN Windows XP Professional x64 Edition with
- windows-server-2008 – 默认域策略已损坏
- windows下安装memcached,报错:Failed to ignor
- windows启动过程
- windows-server-2012 – Windows Server:安装Es
- Nexus3.0搭建私服上传JAR包 Windows10
- 在32位Windows 7计算机上安装Python 3.5中的scip
- windows7环境下的http-server的问题 排查
- 如何在Windows 7上安装PHP 7的MongoDB驱动程序?
- Azure存储帐户备份(表和Blob)