我正在使用具有 64 个主机(深度 = 2,扇出 = 4)的树拓扑运行 mininet。我为我的控制器使用了 pox(版本:eel)的 L3_learning.py 模块(我刚刚添加了一些功能这个模块,代码,本身没有改变,所以l3_learning用于路由)。
我想尝试在这个网络上运行正常和 ddos 攻击流量。问题是,当我在少量主机(少于 15 台主机)上运行正常流量时,例如间隔 0.1 秒(每秒 10 个数据包),以及来自 3 或 4 个不同来源的一些 3 受害者攻击,间隔 0.05 秒(每秒 20 个数据包)短时间(大约 3-4 分钟!!),在 pox 日志中我收到此错误:
ERROR:openflow.of_01:[00-00-00-00-00-01 1] OpenFlow Error:
[00-00-00-00-00-01 1] Error: header:
[00-00-00-00-00-01 1] Error: version: 1
[00-00-00-00-00-01 1] Error: type: 1 (OFPT_ERROR)
[00-00-00-00-00-01 1] Error: length: 76
[00-00-00-00-00-01 1] Error: xid: 11304
[00-00-00-00-00-01 1] Error: type: OFPET_BAD_REQUEST (1)
[00-00-00-00-00-01 1] Error: code: OFPBRC_BUFFER_UNKNOWN (8)
[00-00-00-00-00-01 1] Error: datalen: 64
[00-00-00-00-00-01 1] Error: 0000: 01 0e 00 60 00 00 2c 27 00 00 00 00 00 04 da 53 |...;............|
.
.
.
.
我用于流量的速率(10 个数据包/秒,20 个数据包/秒)非常低,这个错误的原因是什么?mininet中是否有任何数据包速率限制?还是与使用 pox 的 l3_learning.py 模块进行路由有关?我不知道我应该如何编写自己的路由解决方案!
并且通过模拟还显示一条警告消息:
WARNING:forwarding.l3_learning: 5 4 not sending packet for 10.0.0.28 back out of the inport port
WARNING:forwarding.l3_learning: 2 7 not sending packet for 10.0.0.7 back out of the inport port
.
.
.
这个消息是什么意思?
使用以下代码生成正常和攻击流量源:
def source():
not_valid =[10,127,254,255,1,2,169,172,192]
first = randrange(1,256)
while first in not_valid:
first = randrange(1,256)
ip = ".".join([str(first),str(randrange(1,256)),
str(randrange(1,256)),str(randrange(1,256))])
return ip
攻击目标由用户输入(在 64 个主机中)。以下行发送攻击数据包:
for i in xrange(0,10000):
packets = Ether()/IP(dst=dstIP,src=source())/TCP (dport=1,sport=80)
sendp( packets,iface=interface.rstrip(),inter=0.05)
感谢您的关注。