锦城软件定义网络实验(只用于教学,第八周结束后自行删除)

一、实验环境简介:

Ubuntu 20.0.4

Ryu/Opendaylight+mininet+sflow(网络监视技术)+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中并上报给controller,controller再下发流表项和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:
(1)RYU:ryu-manager命令启动ryu控制器,并且打开ofctl_rest.py和simple_switch.py,作为交换机的转发规则
启动命令:ryu-manager ofctl_rest.py simple_switch.py
(2)ODL直接启动
///
终端3:
在miniedit中构建网络拓扑,并设置控制器为远程控制器,s1-s2交换机的地址为10.0.0.001-10.0.0.002,h1-h4主机的IP地址分别为10.0.0.1-10.0.0.4
可保存脚本运行、可直接图形化界面运行,但是要确保链路能正常通信;
下发流表划分vlan:vlan0:h1,h3,其余划分vlan1
/
终端4:
配置sFlow Agent,虚拟交换机配置sFlow Agent,sFlow Collector 才能收集到流量信息进行分析和呈现。键入以下指令部署sFlow Agent: 
sudo ovs-vsctl -- --id=@sflow create sflow agent=s1-eth0 target=\"127.0.0.1:6343\" sampling=10 polling=20 -- -- set bridge s1 sflow=@sflow上述命令的主要意思如下:1)agent:监控s1-eth0 网卡产生的流量;s1-eth0是为s1创建的端口;2)target:sFlow-RT的IP,默认端口6343;3)bridge:需要开启sFlow的网桥;4)sampling:采样率,表示每隔N个Packet就取样一次5)polling:轮询时间,每隔N秒polling一次(提示:如果有N个网桥,就需要执行N次部署 sFlowAgent 的指令,我们本次实验中只有一个网桥,所以执行一次就可以了。)
查看已经配置的 sFlow Agent信息,通过命令:sudo ovs-vsctl list sflow
使用命令ip link,可以查看虚拟交换机端口与端口编号的映射

Agent 是否配置成功,我们可以通过其WebUI进行查看,在浏览器中输入网址http://127.0.0.1:8008/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
然后分别在Keys,Value列输入: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_timeout","hard_timeout"为10,20,30抑制的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云架构(二) 大使模式

Ambassador pattern (https://learn.microsoft.com/en-us/azure/architecture/patterns/ambassador) 简单描述 创建一个助手服务,这个服务代表消费服务或者应用程序发送网络请求。大使服务可以看做是与客户机同一个位置的进程外代理。 这种…

Web CSS笔记2

目录 1、背景 ①、背景图片(image) ②、背景平铺(repeat) ③、背景位置(position) ④、背景附着(attachment) ⑤、背景透明(CSS3) ⑥、背景图片缩放大小(size): ⑦、背景简写 2、标签显…

java智慧工地源码 大型建筑公司应用的智慧工地系统源码 智慧工地建筑管理系统源码

java智慧工地源码 大型建筑公司应用的智慧工地系统源码 智慧工地建筑管理系统源码 智慧工地是智慧地球理念在工程领域的具体体现,它代表了一种全新的工程全生命周期管理理念。通过运用信息化手段,智慧工地能够精确设计和模拟工程项目,实现互…

【高危漏洞】关于视频分片上传的漏洞修复

修改文件crmeb/app/services/system/attachment/SystemAttachmentServices.php 增加下方代码,将分片上传的第几片强制转成INT类型解决 $data[chunkNumber] (int)$data[chunkNumber];

linux命令-ln命令详解

文章目录 前言一、ln命令介绍1. 简介2. 硬链接2.1 inode介绍 3. 软连接(符号链接)4. 语法5. 选项和参数 二、示例用法1. 创建硬链接2. 创建软链接2.1 给文件创建软链接2.2 给目录创建软链接 总结 前言 本文介绍了ln命令的用法和特点,包括硬链…

【TypeScript】解决字面量类型推断错误的四种方式

解决字面量类型推断错误的四种方式 方式一:对象属性使用类型断言方式二:传参使用类型断言方式三:对象使用类型断言方式四:对象属性使用变量,变量使用字面量类型参考 declare function handleRequest(url: string, meth…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式,macvlan模式、ipvlan模式等,下面介绍交换机端及服务器端配置示例。 前置要求: 准备一台物理交换机,以 H3C S5130 三层交换机为例准备一台物理服务器&…

AD域---共享文件夹-容量配额管理

域环境共享文件夹-容量配额管理 要求 1/李斯用户配额10G云盘空间,张珊用户配额30G云盘空间 2/D:\ 配额-启用配额-启用配额管理-拒绝将磁盘空间给超过配额限制的用户-勾选 3/将磁盘空间限制为:55GB,将警告等级设为50GB 4/选择该卷的配额记录选项-勾选…

大型集团公司企业文化知识竞活动赛策划方案

一场高端企业文化知识竞赛活动完整策划书,按诗词大会舞美标准进行设计,竞赛规则新颖,值得收藏。 天纵高端知识竞赛服务商,20多年现场经验和软硬件开发。 专业承办全国高端知识竞赛活动。线上线下各类竞赛活动均可执行,…

鸿蒙开发之了解ArkTS

鸿蒙开发者官网 : https://developer.huawei.com/consumer/cn/ 开发鸿蒙要用的软件是 DevEco Studio ArkTS建立在JS和TS的基础之上,扩展了声明式UI开发范式和状态管理,提供更简洁和自然的开发方式。 ArkTS引入了渲染引擎的增强&#xff0c…

04. 【Android教程】Android 工程解析及使用

在上一章中已经搭建好了 Android 开发环境,本章我们将一起通过 Eclipse 创建我们的第一个 Android App。 1. 创建 Android 工程 首先打开 Eclipse,在菜单栏依次选择“New” -> “Android App Project”。如果是第一次创建,可能没有“Andr…

ChatGPT,来一份3·28雷布斯米时捷上市发布会即时发言稿

你新招了一个秘书。上班第一天,你对他说:“3月28号我可能会受邀参加雷老板的米时捷’上市发布会,届时我可能会有十分钟的发言机会,你现在准备一篇演讲稿。” 秘书问你有何指导意见? 你自己都不知说啥子,能…

gcc任意版本安装流程(linux)

一.更换镜像源 仅仅针对有需要换镜像需求的用户 sudo gedit /etc/apt/sources.list 用于在基于Debian的Linux发行版(如Ubuntu)上用来编辑软件源列表的命令。 我们更换阿里源: deb http://mirrors.aliyun.com/ubuntu/ focal main restricted…

fl studio21.2中文版下载及使用基础教学

FL Studio 21.2.2是一款功能强大的音乐制作软件,也被广大用户称为“水果编曲”。这款软件支持简体中文和英语,适用于Windows 10/11(仅限64位)以及MacOS 10.13.6或更高版本的系统。 在FL Studio 21.2.2中,用户可以享受…

AI论文速读 | 【综述】用于轨迹数据管理和挖掘的深度学习:综述与展望

论文标题:Deep Learning for Trajectory Data Management and Mining: A Survey and Beyond 作者:Wei Chen(陈伟), Yuxuan Liang(梁宇轩), Yuanshao Zhu, Yanchuan Chang, Kang Luo, Haomin Wen(温皓珉), Lei Li, Yanwei Yu(于彦伟), Qingsong Wen(文青…

【PADS 原理图Logic发送网表元器件丢失的解决办法】

1、PADS版本:VX1.2 2、PADS Logic原理图导入PCB Layout后,发现总有几个元器件怎么导都不会显示在PADS Layout上,如下图: PADS Logic上也选择了封装,还是不行,如下图: 3、解决办法: …

深入了解 Postman 请求头的使用方法

当你在使用 Postman 发送请求时,请求头(Headers)是你可以包含在 HTTP 请求中的重要部分之一。请求头包含了关于请求的元数据信息,这些信息对于服务器来处理请求是非常重要的。下面是一份详细的图文介绍,说明了如何在 P…

电源模块 YULIN俞霖科技DC/DC电源模块 直流升压 高压稳压

Features 最低工作电压:0.7V电压隔离:1000VDC /3000VDC 平均无故障时间: > 800,000 小时短路与电弧保护无最低负载要求:可空载工作输入电压:5、12、15、24VDCOutput 100,200、300、400、500 、600、800、 1000、1…

特征工程 | 特征选择、特征降维

目录 一. 特征选择1. 方差选择法2. 相关系数法3. 卡方检验 二. 特征降维1. LDA(线性判别分析法)2. PCA(主成分析法) 一. 特征选择 特征选择的目的是从原有特征中找出主要特征,原始特征可能包含冗余或无关变量(或称特征、属性、指标等) 手工 …