sFlow流量监控实现DDoS防御

1 实验目的

  • 理解sFlow-rt的基本配置与操作;
  • 掌握通过floodlight进行DDoS防御的原理;
  • 掌握mininet中sFlow agent的配置过程;

2 实验原理

sFlow可以提供周期性的网络接口统计采样和数据包采样,能够提供各接口的流量信息,且几乎不会对被统计设备造成任何负担,管理成本极低。sFlow的部署分为两部分:sFlow agent和sFlow collector。sFlow agent内嵌入网络设备中获取设备的实时信息并封装成sFlow报文发送给sFlow collector。

此处的sFlow软件选择sFlow-rt,sFlow-rt可统计到每个接口的流量信息,我们通过sFlow-rt的rest api获取json数据并对json数据进行解析获得。对解析到的数据进行判断分析后即可实施策略。我们在DDoS攻击下可调用Floodlight的staticflowentrypusher丢弃DDoS攻击包进行防御。

3 实验任务

本次实验是在一台物理主机上完成实验拓扑,mininet部署,控制器部署和sFlow collector部署。通过mininet模拟一个switch和三台host,在mininet中配置sFlow agent,控制器选择Floodlight,sFlow collector选择sFlow-rt。

实验拓扑如下图:

sflow流量监控之dos防御 图1

4 实验步骤

4.1 搭建环境

创建mininet虚拟机、floodlight虚拟机和桌面版sFlow-rt虚拟机,并启动虚拟机。

4.2 启动验证sFlow-rt

登录虚拟机sFlow-rt并切换到sFlow-rt目录并启动sFlow-rt。

打开firefox浏览器,在浏览器地址栏中输入http://localhost:8008。sFlow-rt的web页面如下所示。

sflow流量监控之dos防御 图15

4.3 创建控制器测试脚本

登录选择虚拟机floodlight,切换到floodlight/example目录,执行以下命令查询虚拟机交换机dpid。

通过shift+pageup键可以向上翻阅命令行:

sflow流量监控之dos防御 图16

在输出结果中寻找dpid号如下:

sflow流量监控之dos防御 图17

切换到floodight安装目录下。

执行以下命令创建文件,并使用vim命令编辑该文件。

在dropkt.json文件中添加如下内容,switch对应的编号则为之前获取的虚拟机交换机dpid,请根据实际情况进行修改,编辑完成后保存退出。

sflow流量监控之dos防御 图18

执行以下命令启动floodlight。

4.4 创建拓扑

登录虚拟机mininet,在虚拟机/home/mininet目录下创建文件topo-1sw_3host.py,并添加内容。

本实验拓扑结构的由Python脚本生成,请在topo-2sw_2host.py脚本中添加如下内容。

添加完成后保存退出。

执行以下命令启动Mininet,生成测试拓扑结构。

说明
通过screen mn命令启动mininet,这样可以通过ctrl+a+d和screen –r命令进行系统命令行和mininet命令行之前的窗口切换。

请根据实际情况将ip为Floodlight的ip,添加protocols参数指定OpenFlow协议版本。
mn为mininet启动命令。

  • --mac指定虚拟主机的mac地址顺序编号,若不带此参数则随机编号
  • --controller指定of交换机的控制器
  • --switch指定虚拟交换机的类型,ovsk表示虚拟交换机为ovs Kernel mode
  • --custom指定自定义拓扑文件
  • --topo指定加载拓扑的名字

执行ctrl+a+d命令切换到系统命令行。

4.5 部署sFlow agent

网络拓扑创建完成后,需要在mininet中部署sFlow agent。

步骤1.在mininet环境中输入ifconfig命令查看当前网卡状态。

网桥s1无IP,通过eth0端口是无法监控到Mininet内部两个主机的ping测试。

步骤2.执行以下命令把eth0端口IP复制给s1,由s1端口作为sFlow Agent来监听。

步骤3.输入ifconfig |more命令查看配置后的各端口状态,如下图,s1已经得到eth0之前的IP和掩码,eth0无IP

sflow流量监控之dos防御 图19

步骤4.输入screen –r命令切换到mininet命令行窗口,执行ping测试,检查端口是否配置正确。

如果ping通则ctrl+c终止测试,如果不通则仔细检查配置。

步骤5.执行crtl+a+d命令切换到虚拟机窗口。

步骤6.执行以下命令开启OvS的sFlow功能,并配置sFlow Agent。

参数说明:

1)agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量;
2)target:sFlow-rt的IP,默认端口6343;
3)bridge:需要开启sFlow的网桥;

Firewall REST API实验 图17注意:该命令执行的次数和需要开启sFlow的网桥的数目有关,有几个网桥,就需要执行几次此命令。

步骤7.输入如下命令查看已经配置的Agent信息。

sflow流量监控之dos防御 图20

步骤8.在虚拟机窗口输入ip link命令,查看交换机端口名称与端口编号的映射关系。

如下图eth0对应的编号是2,s1对应的编号是19。

sflow流量监控之dos防御 图21

步骤9.查看sFlow agent是否配置成功。

1.登录sFlow-rt页面,查看Agents选项卡,如下图所示已将虚拟机mininet(10.0.0.36)加到监控对象。

sflow流量监控之dos防御 图22

2.单击“10.0.0.106”,进入该虚拟机所监控的端口列表页面,如下编号为19、2的端口都有监控,此处我们以“19.flows”为例,本实验主要的监控也是以“19.flows”为主。

sflow流量监控之dos防御 图23

3.单击“19.flows”进入端口监控页面。

sflow流量监控之dos防御 图24

4.6 ddos攻击和防御验证

步骤1.在mininet虚拟机中执行screen –r命令切换到mininet窗口。

步骤2.执行以下命令通过host1向host2泛洪的方式进行dos攻击。

步骤3.在floodlight安装目录中执行以下操作。
1.查询下发的交换机流表

其中“00:00:00:00:00:00:00:01”为虚拟交换机的dpid。

sflow流量监控之dos防御 图25

sFlow-rt中的流量情况如下所示:

sflow流量监控之dos防御 图26

2 执行以下命令下流表Drop数据包。

sflow流量监控之dos防御 图27

slow-rt中的流量情况如下所示,从图中可以看出,h1向h2泛洪的包迅速的被完全的丢弃了。

sflow流量监控之dos防御 图28

3.执行命令删除交换机下发的所有流表

其中“00:00:00:00:00:00:00:01”为虚拟交换机的dpid。

sflow流量监控之dos防御 图29

sFlow-rt中的流量情况如下所示,图中可以看出删除下发的drop流表后,泛洪的数据包流表又恢复了。

sflow流量监控之dos防御 图30

5 实验结论

流量监控是sdn中很重要的一个环节,我们在获取各个接口的实时信息后,可以实现很多的服务,比如负载均衡,QOS,流量工程等,做好sFlow与控制器的交互,完善流量监控的功能,可以为以后的各种服务提供帮助。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/15130.html

分享到:
条评论

登录后才可以评论

SDNLAB君 发表于15-12-01
0