生动的SDN基础内容介绍(六)--SDN应用平面和网络测量

  • 背景
  • 网络测量
    • 网络测量的定义
    • 网络测量的对象
      • 网络状态参数
      • 网络性能参数
      • 网络流量参数
        • Heavy Hitter和Hierarchical Heavy Hitter
        • Heavy Change、DDoS和Superspreader
    • 基于SDN的网络测量
      • 基于抽样的测量
      • 基于数据流的测量
      • 基于流表规则的测量
  • 基于意图的网络测量
  • 总结

背景

前几章基本上把SDN的基础知识介绍完了,这章会介绍一下SDN的应用平面和网络测量。

SDN的理念最早出现于2008年,经过十多年的尝试,由于一些局限性,SDN仍无法动摇传统网络结构的地位。

SDN被最多应用的地方就是数据中心或者是园区内的网络管理。

SDN比较适合中小规模范围的网络管理。

那么首先说说什么是网络测量。

网络测量

比较推荐阅读戴冕师兄的《软件定义网络的测量方法研究》来对基于SDN的网络测量有个大体上的认知。

网络测量的定义

啥叫网络测量?

就是对网络进行主动或者被动的测量,发现网络的一些行为特征,通过这些行为特征可以进行网络管理与威胁的检测。

主动测量是通过向网络中注入特定的探测报文,通过实时收集探测报文来进行实时的网络测量,但是很显然这样会给网络增加一定的负担。

被动测量是在不注入新的流量的情况下对网络流量进行监测。

网络测量的对象

通常,测量对象可分为网络状态参数、网络性能参数和网络流量参数:

1、网络状态参数包括网络的链路信息和拓扑结构,即显示网络的基本信息。

2、网络性能参数包括吞吐量、链路时延、丢包率等,即反映网络的瞬时状态。

3、网络流量参数是对一个测量周期内的网络流量进行采集和分析,包括Heavy Hitter检测、Super Source检测等。

网络状态参数

在SDN中,对网络状态参数进行测量其实很简单,因为SDN可以获取到当前网络的链路信息、主机信息、交换机信息等。用这些信息可以很方便地构建出网络拓扑。

网络性能参数

对网络性能参数的测量其实也很简单,因为这些是瞬时的测量,只需要对流表项进行查询,然后进行数据的处理即可。当然了,其中一些测量对象还是需要更复杂的处理的。

对流表项的查询可以用(三)中介绍的两种方法:REST API和基于事件的查询。

网络流量参数

而最复杂的就是网络流量参数,也是现阶段网络测量的一个研究热点,摘自戴冕师兄的论文:

网络中传输的流量是网络测量研究工作中最重要的测量对象,对流量进行深入地挖掘和分析可以发现网络中潜在的问题,这是指导网络管理和安全工作的重要依据。网络管理者根据流量的统计特征可以制定更好的管理策略和安全策略。流量统计特征的主要表征参数包括:

  1. Cardinality: 一个测量周期内测量的不同流的数量;
  2. Flow size distribution: 一个测量周期内所有流的大小的分布比例;
  3. Entropy: 流长分布的熵值;
  4. Heavy Hitter: 测量周期内一条流的大小超过一定阈值;
  5. Hierarchical Heavy Hitter: Heavy Hitter 的扩展,基于报文头部的某个或者某些字段最长前缀聚合的Heavy Hitter,且它的大小减去所有子Hierarchical Heavy Hitter 节点的大小之和后仍然超过一定阈值;
  6. Heavy Change: 一条流在相邻周期之间的大小之差超过一定的阈值;
  7. DDoS(distributed denial of service): 一个目的主机在测量周期内接收的来自不同源主机请求的数量超过一定阈值;
  8. Superspreader: 一个源主机在测量周期内向不同目的主机发送请求的数量超过一定阈值.

可以看到网络流量参数有很多种,我介绍一下4-8这五种网络流量参数:

Heavy Hitter和Hierarchical Heavy Hitter

1、首先得说说什么是大象流,什么是老鼠流。

现在人们的日常生活离不开互联网了,平时工作的时候用微信交流,休息的时候刷刷b站和抖音,出行的时候用各种的app等等。我们的这些行为都会产生流量,但是流量的大小却不一样。比如说我给同学传一个大文件和我给他发一条消息产生的流量大小就不一样,比如说我看一部电影产生的流量就和看一张照片产生的流量不一样。

我们发微信、扫描二维码等行为产生的流量比较小,也就是老鼠流。
我们传输大文件、下载一个电影、刷视频等行为产生的流量比较大,就是大象流。

大家可能都听说过2-8定律,网络中同样也存在,老鼠流的数量很多,但是在网络的总流量中只占了一小部分,大象流的数量比较少,但是占了网络总流量的大部分。有的时候大象流会给网络设备造成很大的负担,甚至会对其正常的运行产生影响(如DOS攻击)。因此检测大象流是很有必要的。

大象流也就是大流,很多地方的叫elephant flow,但是我更喜欢Heavy Hitter(HH)这个称呼。大象流的定义就是测量周期内流量大于一定阈值的流。

听起来很好测,不就是下发流表项然后查询btyes和packets的数量嘛。是的,不过如果想进行细粒度的测量的话会消耗大量的流表项。

好嘛,细粒度又是啥。这个等到后续介绍网络测量的现有研究的时候再说。

2、说完了大象流,那分级大象流又是啥,Hierarchical Heavy Hitter(HHH)是HH的扩展形式。它可以用很少的信息来表示网络流量的状态,是网络流量的压缩表达形式。除了可以用来表示HH,HHH还可以用于攻击检测和网络异常检测。当测量的网段的流量的大小减去所有子HHH节点的大小之和后仍然超过一定阈值,那该网段就是HHH。

听起来很绕,没关系,让我们看一个例子。

上图为一棵三比特的流量树。圆圈下面的三个字符是ip前缀,也就是网段。圆圈里面是该网段的流量大小。叶子节点是一台台主机。把所有叶子节点的流量加在一起之后就是整个网段的流量,也就是根节点显示的60.

假设阈值为10,黑色节点为检测到的HHH节点,白色节点为非 HHH 节点。以流量大小为60的黑色节点为例,其ip前缀为***,其后代HHH节点的流量总和为11+15+23=49。显然这个节点是一个HHH节点,因为 60-49=11。

Heavy Change、DDoS和Superspreader

1、Heavy Change就是指相邻周期内变化超过一定阈值的流,也就是大小波动较大的流。

2、DDoS相信大家都不陌生,这应该是大家听过最多的一个网络安全名词了,电影里经常能看到好多黑客用DDoS攻击让服务器瘫痪(大部分电影里黑客的攻击行为可太离谱了,现实中哪儿有这么简单。。),不过现实中还是经常有DDoS攻击的。

一般是攻击者用0day或者社工控制许多台主机(也称为肉鸡),然后自己加了好多层跳板,用几台服务器控制肉鸡来对目标服务器发动拒绝服务攻击,然后目标服务器因为承受不住这么多的流量就会崩溃了。因此对DDoS的检测也是很有必要的。

DDoS的特征有许多,最明显的就是流量大、多ip多端口连接。

3、Superspreader,也叫Super Source,也叫做超点。与DDoS正相反,DDoS的目标服务器是从四面八方有好多连接找上他来,而SS是主动发起很多的连接给许多的主机和端口。在测量周期内向不同目的主机发送请求的数量超过一定阈值的主机。

《SCREAM: Sketch Resource Allocation for Software-defined Measurement》中提到超点检测可以用来检测蠕虫、端口扫描、P2P super nodes等。

基于SDN的网络测量

随着近年来网络应用的快速发展,视频和语音业务逐渐成为主流,使得网络中的数据规模迅速扩大。由于需要大量的计算和存储资源,传统方法不再适用于测量大流量。

基于传统网络结构的网络测量方法面临着两个严峻的挑战:
1、在传统网络结构中,管理者难以掌握全局网络信息,因为每个节点只能获取其相邻节点的状态信息。
2、目前的网络设备采用纵向一体化的结构,即网络控制单元和数据转发单元一体化,导致设备的可扩展性低。同时,网络服务固化在网络设备中,用户只能通过有限的接口对其
进行管理和配置,这使得研究人员难以快速、灵活地建立新的测量框架。

而SDN的出现让网络测量领域有了新的研究方向,SDN的优点这里就不再赘述了,这里要提一下SDN的缺点。

上面说大象流的时候提到了细粒度,细粒度对应着粗粒度。(一)提到了SDN基本上都是基于流进行操作。比如说我要测量192.168.0.0/24是不是大象流只需要下发一个流表项,但如果我想测量192.168.0.0/24这个网段里的所有主机的流量是不是大象流,我需要下发很多的流表项。第一种情况就叫做粗粒度测量,因为只精确到了一个大的网段,第二种情况相较于第一种就是细粒度测量了。

(一)中也提到了SDN很大的一个缺点就是流表项的使用,流表项资源很稀少、下发效率也不是特别高。因此,虽然基于SDN的网络测量很方便,还是需要解决一些资源与效率问题的。现在很多研究都是关于“如何更好地利用网络资源进行快速的实时网络测量”。

我按我的理解把如今的网络测量框架分为三大类(也可能理解不到位):

基于抽样的测量

第一类是基于抽样的测量:

抽样是从总体流量数据中筛选出有代表性的子集,通过对该子集的测量结果推断原始流量的特征信息。NetFlow 和 sFlow 是抽样技术中具有代表性的应用实例。sFlow的实验可以看https://www.cnblogs.com/jianhaoscnu/articles/12779116.html。

OpenSample、FlowMon等测量框架从抽样的角度进行网络测量,其核心思想是利用 sFlow实现低延迟测量系统。OpenSample在SDN交换机的数据平面中部署了sFlow,根据流表项中部署的测量规则过滤网络流量后,通过sFlow代理采样收集给sFlow收集器,提供给上层分析器使用。

基于数据流的测量

第二类是基于数据流的测量:

数据流技术是使用特定的哈希函数对报文进行计算,将原始报文数据映射存储到 sketch 中。sketch是一种专门设计的数据结构,它利用哈希函数的性质,可以用很少的存储空间保存大量数据的统计特征信息。

该类型其实研究的很多,OpenSketch认为记录所有的流信息会带来巨大的计算和空间资源开销,使用sketch可以在高速网络环境下存储流量特征信息,只占用很小的空间资源。这一类的测量框架需要对数据平面进行修改。下图为《Software Defined Traffic Measurement with OpenSketch》中OpenSketch的结构:

基于流表规则的测量

第三类是基于流表规则的测量:

这类和前两类不同的是,它不需要额外的代理也不需要去修改数据平面,只在控制层和应用层完成对任务需求的解析、对资源的调度、下发流表项即可。我认为DREAM可以作为这类框架的代表,我毕设实现的系统的底层框架也是基于DREAM实现的。

下图为《DREAM: Dynamic Resource Allocation for Software-defined Measurement》中DREAM的框架:

可以看到的是DREAM只在控制层上进行了编写,未修改数据平面,实现起来比较方便。

值得一提的是OpenSketch和DREAM都是Minlan Yu大佬的文章,我当时做毕设的时候经常能在文献中看到这位大佬的名字。

但是这种纯上层的实现达不到很快的速度,也是DREAM的一个问题。

三种类型的测量框架都有优缺点。

基于意图的网络测量

(五)中讲了基于意图的网络IBN,类似的可以把意图驱动运用在网络测量上,让我们看一下《基于意图的网络研究综述》中的意图驱动网络测量实现流程:

以之前提到的DREAM框架为例子,其实DREAM的运行流程与该图很像。只不过DREAM并没有实现意图的获取与意图的转译。

因此我们可以在已有的框架之上添加意图的获取与映射,可以在应用层做意图的获取与转译,然后在北向协议和控制层做意图的映射。

意图驱动的网络测量框架可以让人们不关注底层的具体实现,只描述想对网络进行怎样的测量即可。

总结

花了几天的时间把毕设阶段接触的SDN的一些相关知识做了个总结,如有问题欢迎指出。

生动的SDN基础内容介绍(六)--SDN应用平面和网络测量相关推荐

  1. 生动的SDN基础内容介绍(三)--Ryu控制器

    生动的SDN基础内容介绍(三)--Ryu控制器 控制器 Ryu的目录 Ryu的学习 simple_switch_13.py simple_switch_rest_13.py 交换机信息及流表项的查询 ...

  2. 生动的SDN基础内容介绍(五)--SDN北向协议/接口和意图驱动

    生动的SDN基础内容介绍(五)--SDN北向协议/接口和意图驱动 背景 北向协议 REST API REST API在Ryu中的实现 意图驱动 总结 背景 经过前几章的讲解,现在回过头来再看看SDN的 ...

  3. 生动的SDN基础内容介绍(二)--OpenFlow协议

    生动的SDN基础内容介绍(二)--OpenFlow协议 背景 OpenFlow OpenFlow的基础概念 流表项 流表 漏表 流表项的下发 流表项的删除 计量表 组表 控制器与交换机的通信 总结 背 ...

  4. folium基础内容介绍

    folium基础内容介绍 1. 简介 ​ folium是js上著名的地理信息可视化库leafet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leafle ...

  5. 图像标注的基础内容介绍

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Surya Remanan 编译:ronghuaiyang 导读 给大家介 ...

  6. 收藏 | 图像标注的基础内容介绍

    作者:Surya Remanan,来源:AI公园 介绍 "如果没有数据分析,公司就会变得既盲又聋,就像高速公路上的鹿一样在网络上游荡." - Geoffrey Moore 每个数据 ...

  7. 工赋开发者社区 | 当PLC与见“IT”:MES/MOM标准之ISA-95基础内容介绍

    ISA-95 简称S95,也有称作SP95.ISA-95 是企业系统与控制系统集成国际标准,由国际自动化学会(ISA,International Society of Automation) 在199 ...

  8. html+css+js基础内容(六)

    1.函数     函数就是将具有一定功能的一段JS代码的封装,可以在程序的多个地方被反复调用.     1)定义函数         格式一:             function 函数名([形参 ...

  9. metasploit基础命令介绍

    web安全学习了解:web渗透测试 官网:metasploit基础命令介绍 六个模块:   一.渗透攻击模块(exploit):利用发现的安全漏洞或配置弱点对远程目标系统进行攻击的代码 (1)主动渗透 ...

最新文章

  1. Python培训完可以找什么工作
  2. Velocity笔记--使用Velocity获取动态Web项目名的问题
  3. 微软聘请游说公司为收购雅虎作势
  4. python爬虫知识_Python 爬虫技术分享
  5. 团队-Forward团队一阶段互评
  6. Almost Union-Find UVA - 11987(并查集的删除操作)
  7. Go语言编程—Go语言中JSON的处理(map、struct 和 JSON字符串的相互转换)
  8. Nopcommerce主要用到的技术及特点
  9. Chrome浏览器截取全屏(无需安装任何插件)
  10. 常用的jar包下载网站(自用)
  11. 怎样在养殖订阅号文章中添加一键拨号功能
  12. 利用SHA-1算法和RSA秘钥进行签名验签(带注释)
  13. 智能路由器OpenWrt 开发环境 及 编译分析(一)
  14. 数据分析与预测(二)——pandas 函数read_csv解析
  15. 微型计算机主要技术指标是啥,微型计算机的主要技术指标
  16. linux查看GPU使用情况 linux如何查看GPU使用情况
  17. php 手机号机主姓名实名验证接口
  18. “免费的”苹果开发者账号(???)
  19. 蒲丰投针结果_只能用纸笔才能计算圆周率?蒲丰告诉你,投针游戏也可以
  20. 牛客网 玩泥巴 Wasserstein Distance

热门文章

  1. 【题解】AtCoder ARC128D - Neq Neq
  2. 小工程结算书范本_工程结算书范本
  3. yii2实现后端分页和模糊查询
  4. AutoCAD Civil 3D装配道路
  5. FRP搭建内网穿透(亲测有效)
  6. 什么是区块链(超详细)
  7. 为什么叫区块链存储?兼谈IPFSFilecoin, Chia
  8. 不要用 Mounty,一次惊险的数据恢复记录
  9. 拍照时的正确姿势你掌握了吗?(下)
  10. 腾讯云永久修改主机名