工具:floodlight,mininet,sflow-rt
需要用到java,ant ,curl ,等工具
1.ubuntu20.04启动floodlight
cd floodlight
java -jar target/floodlight.jar
floodlight的UI:http://127.0.0.1:8080/
2.构建拓扑
保持 Floodlight 运行的终端,再新开一个终端窗口,输入指令,构建我们所需的拓扑结构。
例:
sudo mn --controller=remote,ip=127.0.0.1,port=6633 --topo=single,3
(也可以采用miniedit工具进行可视化构建。)
3.DDos攻击检测
1) 启动sFlow-RT
保持Mininet 运行的终端,再新开一个终端窗口,输入如下指令,启动sFlow-RT。
cd sflow-rt
./start.sh
2 ) 配置sFlow Agent
我们需要在虚拟交换机配置sFlow Agent,这样sFlow Collector 才能收集到流量信息进行分析和呈现。
键入以下指令部署sFlow Agent :
sudo ovs-vsctl -- --id=@sflow create sflow agent=eth0 target=\"127.0.0.1:6343\" sampling=10 polling=20 -- set bridge s1 sflow=@sflow
通过如下指令可以查看已经配置的 sFlow Agent信息:
sudo ovs-vsctl list sflow
输入ip link 指令可以查看,虚拟交换机端口与端口编号的映射
可以看到s1 交换机对应的编号是4,交换机连接host1的端口对应的编号是5,依次类推。
查看sFlow Agent 是否配置成功,我们可以通过其WebUI进行查看:
localhost:8008/app/flow-trend/html/index.html
点击页面上的 Apps选项, 再点击flow-trend选项
然后分别在Keys,Value,Filter列填入:ipsource,ipdestination,stack;bytes;留空 ,然后点击右面的 Submit (√)提交-------,之后,将自动转到图形化流量监控页面
然后切换到mininet 控制台窗口,使用如下指令,打开 Host1,和Host2的终端:
mininet> xterm h1 h2
然后在 Host1 上启动一个 http 服务
python -m http.server 80&
在 Host2 上 ping Host1
ping 10.0.0.1
然后去观察流量, 可以看到,流量很正常,在 Host2 终端中可以按 Ctrl+c,停止ping。可以试试访问一下 Host1的HTTP服务。
3.DDos攻击检测
接下来,我们进行DDoS 模拟攻击,在 mininet 终端中执行,h2 ping -f h1 ,-f 参数的意思就是 Ping Flood ,模拟 Flood Attack。
h2 ping –f h1
再去观察交换机流量