网站不符合个人备案性质,优化公司治理结构,百度自然搜索排名优化,哈尔滨模板网站建设一、实验环境简介#xff1a;
Ubuntu 20.0.4
Ryu/Opendaylightmininetsflow(网络监视技术)Apifox/postman(REST API流表控制工具)
二、软件定义网络知识图谱 三、SDN知识概述
1.SDN的三个主要特征#xff1a; 网络开放可编程#xff1b; 控制平面与数据平面分离…一、实验环境简介
Ubuntu 20.0.4
Ryu/Opendaylightmininetsflow(网络监视技术)Apifox/postman(REST API流表控制工具)
二、软件定义网络知识图谱 三、SDN知识概述
1.SDN的三个主要特征 网络开放可编程 控制平面与数据平面分离 逻辑上的集中控制
2.SDN的架构 应用程序通过北向接口再到南向接口对数据平面/转发层的控制 东西接口主要用于控制器集群之间的通信用于增强整个控制平面的可靠性和可拓展性 SDN控制平面通过下发指令到SDN数据平面SDN数据平面反馈信息到控制平面 SDN控制平面只关心如何编程去控制网络不关心底层协议而SDN数据平面将不同协议整合到匹配表由SDN控制器负责调用。 3.SDN南向编程接口–OpenFlow Openflow有多个版本现在比较稳定的版本是1.3和1.0此次实验用的是1.3。 Controller通过下发Openflow协议通道下发策略给Openflow交换机openflow交换机就成了策略的执行者例如controller下发流表项给openflow交换机当数据包从端口进入到交换机且匹配流表项失时就将数据包放到packet-in中并上报给controllercontroller再下发流表项和packet-out对数据的具体处理来告诉交换机如何处理这个报文。在1.0的基础上新增了组表和meter表支持table-miss动作。 4.Openflow流表组成 Openflow流表组成流表中含有若干流表项每个流表项包括 匹配域、优先级、计数器、指令、计时器、Cookie 5.组表的组成 组成号、类型、计数器、动作桶 6.Meter表的组成 主要用来计量和限速。 结构组成 计量表号、计数带、计数器 从而实现QoS功能。 7.Openfow通道 即控制器和交换机交流信息的通道。它由三种类型的报文如下 控制器给交换机发送信息的报文 Features:有Request和Reply两种Request用来请求交换机的特征信息和端口的特征信息即属性。 Configuration包括请求、回复、设置交换机的配置信息。 Modify-State用于修改交换机的流表、组表、Meter表、端口的状态。 Read-State用于获取交换机的流表、组表、Meter表、端口的状态。 Packet-out用于响应Packet-in报文经常跟随在Flow-Mod报文后用来指挥匹配失败的报文这个报文可以由控制器接收然后回馈给交换机也可以是交换机匹配失败放到缓存中。 Barrier分为Request和Reply两种用于确保操作的执行顺序。 Role-Request多控制器下控制器用来请求角色。 Asynchronous-Configuration异步配置。 Asynchronous报文 packet-in当数据报匹配流表项失败的时候上交给Controller处理或者存到交换机的缓存中。通过Packet-in报文通知交换机处理。 Flow-Removed当一个流表项失效的时候 每个流表项都有一个计时器用来计算当前流表运行的时间当然也有失效时间。 Port-Status当端口状态发生变化的时候通过该报文告知控制器。 Role-Status告知控制器角色发生了变化。 Controller-Status告知控制器Openflow的连接的变化。 Flow-Monitor告知控制器流表的改变。 Symmetric报文 控制器或者交换机任意一方发送的报文无需得到对方的邀请和许可。Hello通道建立初期用来协商版本。Echo用于测试时延和带宽。Error一般交换机告知控制器请求发生错误。Experimenter用于实验场景的报文。 交换机向控制器发起TCP连接建立请求之后执行如下过程。 四、DDoS攻击原理 当数据包到交换机后根据OpenFlow协议的转发机制和流表匹配的数据包按规则转发无法和流表项匹配的数据包就会以Packet_ in消息通过南向接口上交至控制器处理计算路由策略并下发流表项规则至交换机。当攻击者向SDN网络中的受害主机发动DDoS攻击时一般使用大量的经过伪造IP地址和端口的攻击数据包发送到网络中这时将产生大量Packet_in消息快速的消耗控制器和交换机之间安全信道的带宽以及控制器系.统资源。影响正常数据包的发送。 主动防御技术 通过Floodlight控制器向OpenFlow交换机下发流表抑制攻击流量。流表是交换机进行转发策略控制的核心数据结构。交换机芯片通过查找流表项来决策进入交换机网络的数据包执行适当的处理动作。可以理解为交换机收到数据包之后该做什么的一系列规则。下发一条流表好比一条指令告诉交换机收到数据包之后该做什么。
OpenFlow每个流表项由三个部分组成用于数据包匹配的包头域Header Fields用于统计匹配数据包个数的计数器Counters用于对匹配的数据包如何处理的动作Actions包头域OpenFlow流表的包头域OpenFlow v1.1之后被称作匹配域用于对交换机接收到的数据包的包头内容进行匹配。在OpenFlow v1.0中流表的包头域中包括了12个元组。
五、实验过程
///
终端1
安装curl:sudo apt install curl
安装sflow:
下载安装包wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz
解压安装包tar -zxvf sflow-rt.tar.gz
查看安装包ls
查看路径pwd
输入命令cd sflow-rt
然后启动./start.sh
看到下列信息证明启动成功。其中 6343 是sFlow Collector 的默认端口
8008 则是 sFlow 的WebUI端口。
注意执行sflow-rt需要先配置好jdk否则会报Java不存在的错误具体配置过程见opendaylight实验手册
///
终端2
1RYU:ryu-manager命令启动ryu控制器并且打开ofctl_rest.py和simple_switch.py作为交换机的转发规则
启动命令ryu-manager ofctl_rest.py simple_switch.py
2ODL直接启动
///
终端3
在miniedit中构建网络拓扑并设置控制器为远程控制器s1-s2交换机的地址为10.0.0.001-10.0.0.002h1-h4主机的IP地址分别为10.0.0.1-10.0.0.4
可保存脚本运行、可直接图形化界面运行但是要确保链路能正常通信
下发流表划分vlanvlan0h1,h3其余划分vlan1
/
终端4
配置sFlow Agent虚拟交换机配置sFlow AgentsFlow Collector 才能收集到流量信息进行分析和呈现。键入以下指令部署sFlow Agent
sudo ovs-vsctl -- --idsflow create sflow agents1-eth0 target\127.0.0.1:6343\ sampling10 polling20 -- -- set bridge s1 sflowsflow上述命令的主要意思如下1agent监控s1-eth0 网卡产生的流量s1-eth0是为s1创建的端口2targetsFlow-RT的IP默认端口63433bridge需要开启sFlow的网桥4sampling采样率表示每隔N个Packet就取样一次5polling轮询时间每隔N秒polling一次提示如果有N个网桥就需要执行N次部署 sFlowAgent 的指令我们本次实验中只有一个网桥所以执行一次就可以了。
查看已经配置的 sFlow Agent信息通过命令sudo ovs-vsctl list sflow
使用命令ip link可以查看虚拟交换机端口与端口编号的映射
Agent 是否配置成功我们可以通过其WebUI进行查看在浏览器中输入网址http://127.0.0.18008/html/index.html可以看见各项监控状态。 ///
终端5运行 sflow-rt/get-app.sh sflow-rt flow-trend然后将之前的sFlow重新启动点击sFlow中Apps或者
浏览器访问http://localhost:8008/app/flow-trend/html/index.html
然后分别在KeysValue列输入ipsource,ipdestination,stack、bytes 然后点击右面的 Submit提交然后将自动转到图形化流量监控页面。 ///
终端3
在mininet窗口下
使用如下指令打开 Host1和Host3的终端xterm h1 h3
然后在 Host1 上启动一个 http 服务python3 -m http.server 80在h3的窗口ping h1的地址在sflow的页面中观察流量走向
///
终端6
运行抓包工具抓取对应网卡的包查看报文信息
/ 模拟Ddos攻击
///
终端3
DDoS模拟攻击在 mininet 终端中执行h3 ping -f h1
-f 参数的意思就是 Ping Flood 模拟 Flood Attack。h3 ping –f h1
观察交换机的流量走向
//
终端6
运行抓包工具抓取对应网卡的包查看报文信息
/ 查看表盘CPU的占用率 Ddos防御
监测到流量异常之后需要利用控制器向OpenFlow交换机下发流表抑制攻击流量。
由于前面的DDoS采用的ping洪范攻击因此我们需要下发流表将攻击流down掉因此利用postman添加流表
///
终端7
拷贝安装包至终端
安装包sudo dpkg -i 这是要安装的软件包名称
如果遇到依赖不全的问题再输入sudo apt install -f
安装完成后直接双击打开
首先进入Apifox利用get操作可以获得已有的流表所以url填http://ryu或者ODL/stats/flow/1 2添加流表操作为了抑制攻击流我们下发流表控制从交换机的端口1经过的流量url为http://ryu/odl/stats/flowentry/add功能选择post方式在Body中选择JSON进行流表的编写。dpid代表交换机的号;priority表示优先级优先级数字越大表示越优先处理;在match写入的in_port代表交换机输入端口为1的端口;dl_type字段代表ip协议其中2048的16进制0x0800代表ipv4协议;nw_proto代表:ip协议上搭载的协议类型其中1代表icmp协议;在本实验中也就是h1连接交换机的端口actions中为空表示交换机对于h1的流量不作任何处理。编写完成后点击send进行流表下发如果发送成功会返回200OK。POST http://localhost:8080/stats/flowentry/add
{dpid: 1,cookie_mask:1,table_id:0,idle_timeout:30,hard_timeout:30,priority:65535,flags:1,match:{in_port:1,dl_type:2048,nw_proto:1},actions:[]
}下图分别是idle_timeouthard_timeout为102030抑制的情况。