首页> 中国专利> 基于流表项有效时间的SDN大象流侦测器实现方法

基于流表项有效时间的SDN大象流侦测器实现方法

摘要

本发明公开了一种基于流表项有效时间的SDN大象流侦测器实现方法,包括如下步骤:1)大象流侦测器初始化流表项;2)大象流侦测器动态调节流表项有效时间;3)大象流侦测器统计流数据分组信息;4)大象流侦测器补全校正流统计信息;5)大象流侦测器对大象流进行建模;6)大象流侦测器侦测大象流。这种方法在不修改现有接口协议的前提下,保证了侦测的高精度、低延时、和低控制带宽消耗,适用于高速数据中心网络通过快速高精度识别大象流对网络性能和资源进行管理和优化,保证对延时和带宽有特别要求的应用的服务质量和用户体验。

著录项

  • 公开/公告号CN114978967A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 桂林航天工业学院;

    申请/专利号CN202210596267.6

  • 发明设计人 廖灵霞;赵长青;潘矜矜;秦斌;

    申请日2022-05-30

  • 分类号H04L43/12(2022.01);H04L45/02(2022.01);H04L45/028(2022.01);H04L41/14(2022.01);

  • 代理机构桂林市华杰专利商标事务所有限责任公司 45112;

  • 代理人刘梅芳

  • 地址 541004 广西壮族自治区桂林市七星区金鸡路2号

  • 入库时间 2023-06-19 16:33:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):H04L43/12 专利申请号:2022105962676 申请日:20220530

    实质审查的生效

说明书

技术领域

本发明涉及大象流侦测技术,具体是一种基于流表项有效时间的SDN大象流侦测器实现方法。

背景技术

传统计算机网络是一个基于TCP/IP架构的分层系统,不同类型的网络设备在不同层工作。数据分组(包)是计算机网络传输信息的单元。数据分组在通过不同网络设备的传输过程中需根据不同层面协议进行封装和解封。因此,每个数据分组除了包含需要传输的用户信息外,还包含了多种协议的首部字段,便于在不同设备进行传输。在这些字段中,计算机网络将具有相同五元组(源IP地址字段、目的IP地址字段、源端口号字段、目的端口号字段、协议号字段)的数据分组定义成流。因此,流是具有相同五元组的数据分组的时间序列,也就是特定网络应用传输的包的集合,比如某个视频流、语音流、文件流等。根据流包含的字节数或者占用网络带宽的多少,计算机网络通常将流分为大象流和老鼠流。大象流包含字节数大、持续时间长、消耗的网络带宽高,老鼠流字包含节数少,持续时间短,消耗的带宽低,但通常要求低传输延时。当多个大象流共享相同的网络路径时,该路径大概率会被堵塞,造成整个网络性能的恶化。侦测大象流可以把网络中的大象流及时准确地识别出来,以便优化大象流的路由,避免网络的拥堵。因此,大象流侦测是当前网络性能管理和资源优化的常用手段。

典型大象流侦测器是一个大象流的侦测软件,输入被测数据流,根据大象流模型,输出被测数据流的侦测结果。传统计算机网络的大象流侦测器主要部署在普通主机或者专用服务器上。由于主机通常只能收集本地的数据流信息,基于主机的大象流侦测器占用的资源少,但只能侦测本地的大象流,制定局部的管理和优化策略。部署在专用服务器的大象流侦测器通常需要收集全网的流量信息对全网的大象流进行侦测,制定和部署全局的网络管理和优化策略,对网络进行全局管理和优化。由于传统计算机网络并没有定义通用的接口和协议进行网络流量的搜集,专用服务器需要开发特定接口和协议完成全网流量的搜集,导致侦测器开发难度大、兼容性差、部署难度高。同时,网络流量的搜集过程可能会占用大量的数据传输带宽,影响用户数据分组的传输和恶化网络的性能。另外,由于传统计算机网络缺乏通用接口协议的支持,大象流侦测后制定的全局网络管理和优化策略也很难通过专用服务器部署到各网络设备,网络的全局管理和优化实际上很难实现。

与传统计算机网络将控制与转发功能耦合在网络设备不同,软件定义网络(Software Defined Networking, 简称SDN)定义了一种控制与转发功能完全解耦的新型网络架构。 基于软件定义网络架构的计算机网络包含完全分离的控制平面和数据平面。数据平面包含各类转发设备,如SDN交换机或者路由器,控制平面包含SDN控制器。SDN转发设备根据转发规则完成对数据包的转发,但其本身并不具备创建转发规则的能力,转发规则的创建需要SDN控制器来完成。SDN网络将转发规则称为流表项,流表项保存在转发设备的流表。流表其实是转发设备的部分内存空间。由于流表项是基于流的转发规则,一个SDN转发设备比一个传统转发设备需要更多的转发规则。同时每条流表项包含了匹配字段、转发动作、统计信息、有效时间、cookie等较多信息,因此,每条流表项占用更多的内存空间。由于每个转发设备的内存空间有限,每条SDN流表项配置了有效时间管理该流表项在流表的生命周期,提高流表资源的利用率,避免流表溢出恶化网络性能。另一方面,由于每条流表项都有有效时间,当转发设备接收到一个数据分组后在其流表查找对应的流表项时,有两种情况转发设备无法找到对应的流表项:1)接收到的数据分组属于一个新流,其对应的流表项还未创建;2)接收到的数据分组不属于一个新流,但是对应的流表项已经失效并被清理出流表内存。无论哪一种情况,转发设备都会将接收到的数据分组封装成packet_in流表项创建请求发送到SDN控制器。SDN控制器接收到packet_in请求后会创建对应的转发规则,并通过flow_mod消息将流表项下发到转发设备的流表保存。所以,SDN转发设备会将每个流的第一个包和部分后续包转发到SDN控制器。每个流转发到SDN控制器的数据分组的总数由每个流表项的有效时间决定。OpenFlow协议作为当前SDN控制平面和数据平面交互的标准接口,可以完成对网络中所有SDN转发设备的配置、管理、和监控。除了packet_in和flow_mod等流表项创建请求和下发消息外,OpenFlow协议还支持发送轮询消息搜集每个流表项记录的统计信息。控制器可以根据这些统计信息汇总全网的流量信息,并进一步构建全局网络视图,对整个网络进行全局管理和优化。由于SDN控制器可以获取全网流量信息并根据流量信息,SDN控制器是部署大象流侦测器进行全网大象流侦测,并进一步进行全局网络管理和资源优化策略的制定和下发的最佳场所。

由于SDN控制器可以直接轮询每个转发设备每条流表项统计的流量信息,基于这些流量统计信息的大象流侦测器侦测精度高,但实时性受到SDN控制器轮询周期的限制。提高轮询频率可以提高侦测的实时性,但消耗过多控制器资源,占用过多控制通道带宽。由于SDN网络的控制通道和数据通道通常共享网络基础设施,控制通道占用过多带宽,意味着数据通道的实际可用带宽降低;发送流表项统计信息占用过多的控制器带宽意味着其它控制信息能使用的实际控制带宽降低,最终造成网络的流表项创建延时增大,数据包的转发延时增大,网络的综合性能恶化。所以,在SDN控制器上部署的基于流表项统计信息的大象流侦测器会加大SDN控制器的负载,消耗网络的控制器带宽。该类型大象流侦测器通常需要控制器具有较高的计算和存储资源,且部署在低速SDN网络。由于高速SDN网络每个转发设备单位时间处理的数据分组多,流表包含的流表项数量大,流统计信息要求更新频繁以及时侦测网络的大象流,部署该类侦测器在控制器会消耗大量控制器资源和控制通道带宽,导致网络流表项创建延时增加,网络流表包的转发延时增加,有可能不能满足延时敏感的应用,如线上医疗、线上银行、线上教学等的需求。

发明内容

本发明的目的是针对现有技术中存在的不足,而提出一种基于流表项有效时间的SDN大象流侦测器实现方法。这种方法能保证侦测的高精度、低延时、和低控制带宽消耗,适用于高速数据中心网络通过快速高精度识别大象流对网络性能和资源进行管理和优化,能保证对延时和带宽有特别要求的应用的服务质量和用户体验。

实现本发明目的的技术方案是:

基于流表项有效时间的SDN大象流侦测器实现方法,包括如下步骤:

1)大象流侦测器初始化流表项:大象流侦测器首先需要为转发设备接收到的每个新流初始化流表项,当转发设备接收到一个新流的第一个数据分组时,由于转发设备的流表内存没有预先为该数据分组配置流表项,转发设备不知道如何处理该数据分组,转发设备于是将数据分组封装成packet_in请求发送到大象流侦测器要求创建匹配的流表项,由于大象流侦测器其实是带有大象流侦测功能的控制器,大象流侦测器会解析接收到的packet_in请求,生成flow_mod响应,为大象流侦测器接收到的数据分组初始化有效时间粒度、类型、大小三维度动态可调的流表项,并下发到转发设备;大象流侦测器将流表项有效时间的粒度初始化为微秒,类型为硬有效,大小为几十到几百之间;

2)大象流侦测器动态调节流表项有效时间:大象流侦测器根据流表项失效的次数调节流表项有效时间,大象流侦测器为新流初始化流表项时,为流表项配置了粒度、类型、大小三维度动态可调的有效时间,当流表项在转发设备流表内存超时失效后,该流表项会被转发设备清理出流表内存,所以,当转发设备接收到一个数据分组却由于流表项超时的原因在其流表内存找不到匹配的流表项时,转发设备也会将数据分组封装成packet_in请求发送到控制器要求激活匹配的流表项,这时,大象流侦测器会生成flow_mod响应激活原流表项,同时调整其有效时间,具体为:保持现有流表项有效时间类型,将大小翻倍,再根据大小值是否溢出将有效时间粒度从微秒增大到毫秒,或者从毫秒增大到秒;

3)大象流侦测器统计流数据分组信息:采用大象流侦测器自己接收到的数据分组统计流信息,即每当大象流侦测器接收到一个packet_in请求时,首先对请求进行解析,然后在生成flow_mod响应的为数据分组生成或激活流表项的同时,解析后的数据分组信息会被大象流侦测器进行统计,统计信息主要记录流当前的字节数,计算方法是把控制器接收到的该流的数据分组大小进行累加,所以,大象流侦测器维护了一个流统计信息表,该信息表包含:源IP地址,目的IP地址,源端口号,目的端口号,协议号,初始流表项有效时间大小,粒度,当前流表项有效时间大小,粒度,当前接收总字节数,校正后总字节数;当控制器接收到一个packet_in请求并把其包含的数据分组解析出来,大象流侦测器会提取该数据分组的五元组信息,即源IP地址,目的IP地址,源端口号,目的端口号,协议号,并在信息表中查找匹配的流,如果找到匹配的流,说明接收到的数据分组是已有流的一个数据分组,将该数据分组的大小累加到当前接收总字节数,并更新该流的总字节数;如果没有找到,说明接收到的数据分组属于一个新流,大象流侦测器在流统计信息表中添加一个新记录,并根据数据分组和流表项初始有效时间对该纪录进行初始化;

4)大象流侦测器补全校正流统计信息:转发设备并没有把自己接收到的每一个数据分组转发到控制器,当转发设备的流表项有效时,接收到的数据分组会被转发设备直接根据匹配流表项的指令转发到相应的端口,与大象流侦测器没有交互,只有当流表项超时失效后,转发设备才将接收到的数据分组转发到大象流侦测器,所以,大象流侦测器根据接收到的数据分组有缺失,统计的流信息需要进行补全校正,因此,每当大象流侦测器接收到一个packet_in请求完成流统计信息更新后,马上对统计信息进行校正,主要校正流总字节数,方法是估计该流表项在最近这个有效时间内被多少数据分组使用,再将该数据分组数乘以数据分组平均字节数,乘积就是该流在最近这个有效时间内控制器缺失的字节数,将该字节数加上原有的字节数的和就是该流校正后的总字节数,然后大象流侦测器用该流表项最近有效时间大小除以该流表项初始有效时间大小的商来估计缺失的数据分组数,用最新接收到的数据分组字节数估计该流数据分组平均字节数,对流总字节数进行校正;

5)大象流侦测器对大象流进行建模:大象流侦测器使用阈值型大象流模型,由于计算机网络通常把超过10K字节的流直接定义为大象流,大象流侦测器流信息统计的缺失,以及侦测精度和速度,把超过6K字节的流判定为大象流:

6)大象流侦测器侦测大象流:每当大象流侦测器接收到一个packet_in请求,在完成对流统计信息的更新和校正后,判断该流是否是大象流,判断方法是直接比较该流校正后的字节数,如果超过6K字节,该流被判为大象流,同时更新该流的流表项有效时间粒度为秒,类型为空闲有效,大小为5,下发转发设备。

步骤1)中所述的由于大象流侦测器其实是带有大象流侦测功能的控制器,具体为:

1)大象流侦测器是一个支持大象流侦测的SDN控制器,以开源Ryu控制器为基础,大象流侦测功能以Ryu外部应用的形式加入到Ryu控制器,与Ryu内部核心应用共享Ryu控制器的OpenFlow消息处理和事件派遣模块,大象流侦测应用主要包括两个模块:交换和侦测;交换模块接收Ryu控制器的OpenFlow消息处理和事件派遣模块传递的packet_in请求,生成flow_mod响应再通过Ryu控制器的OpenFlow消息处理和事件派遣模块下发到转发设备;侦测模块主要包含流信息统计、校正、和大象流侦测功能;

2)大象流侦测器虽然不需要修改现有的SDN接口和协议,但SDN网络所使用的转发设备需要升级软件支持有效时间粒度、类型、大小三维度动态可调的流表项,软件升级主要修改流表项有效时间的粒度的解析,涉及的功能主要包括:调整定时器的精度以支持细粒度流表项有效时间,在流表项的创建、流表项的修改、流表项的失效清理时解析写在流表项cookie部分的有效时间粒度。

步骤1)中所述的大象流侦测器初始化流表项具体为:

1)大象流侦测器为SDN网络数据分组配置有效时间粒度、类型、大小三维度动态可调的流表项,大象流侦测器为流表项配置秒、毫秒、微秒这三种粒度的有效时间,有效时间类型为硬有效和空闲有效两种,流表项有效时间的类型和大小通过享有流表项的有效时间部分实现,该有效时间部分包含硬有效时间和空闲有效时间两个2字节无符号短整数,因此,有效时间大小为1到25535(2

本技术方案实际上是一个含有大象流侦测器模块的SDN控制器软件,通过构建粒度、类型、大小等多维度动态可调流表项有效时间,使得SDN控制器在创建流表项时,能够根据该流表项失效的次数动态调节流表项的有效时间粒度、类型、和大小,进而使得每个流前期的数据分组匹配的流表项具有较细的粒度和较短的有效时间值,而后期的数据分组匹配的流表项的有效时间的粒度和大小增大。这样配置的流表项有效时间能够保证转发设备不增发过多packet_in流表项创建请求的前提下,大象流可以转发更多的数据分组到控制器而转发的老鼠流的数据分组总数增加不大。因此,SDN控制器可以通过收集转发的packet_in请求直接统计网络的流信息,并进一步根据该信息对大象流进行侦测。由于技术方案方法不需要轮询各转发设备流表项的统计信息,控制器的消耗低,控制通道带宽的占用少。尽管本技术方案方法可能会使得大象流转发到控制器的数据分组总数略微增加,但由于大象流通常消耗带宽,对延时并不敏感,用户体验不会受到影响。同时由于老鼠流本身包含的数据分组少,本技术方案方法并不会导致更多的老鼠流数据分组转发到控制器,保证了老鼠流的低延时。另外,SDN控制器可以在接收到转发设备的packet_in请求时对大象流进行侦测,避免了统计信息轮询周期对大象流侦测实时性的影响。由于高速SDN网络数据分组的平均间隔时间很短,现有OpenFlow协议支持的以秒为单位的流表项有效时间的时间精度不够,本技术方案在不更新现有OpenFlow协议的前提下,实现了流表项有效时间粒度的动态调节以支持高速SDN网络流表项有效时间的多维度动态调节。由于流表项有效期间转发设备接收到的数据分组不会转发到控制器,只有流表项失效后转发设备接收到的数据分组才会转发到控制器要求创建流表项,流表项有效时间会造成控制器接收到的数据分组的缺失(对比转发设备实际接收到的数据分组)。缺失得越多代表转发到控制器的数据分组越少,控制带宽占用越小,网络转发延时会越小。但是,缺失得越多会造成控制器根据接收到的数据分组生成的统计信息越不准确,降低了大象流侦测的精度和实时性。所以,本技术方案还实现了一个轻量级的数据分组缺失补全方法,校正控制器根据接收的数据分组生成的统计信息,以提高大象流侦测器的实时性和精度。

本技术方案适用于高速SDN网络的大象流侦测。支持现有的OpenFlow协议,但现有SDN控制器对packet_in请求的处理方法需要适当更新,相应的,物理或软件SDN转发设备处理flow_mod相应的方法也需要进行相应的更新。本技术方案实际是一个包含大象流侦测器的SDN控制器软件和更新后的物理/软件SDN转发设备软件。

本技术方案与现有技术相比,具有以下优点和有益效果:

1.本技术方案的大象流侦测器在SDN控制器实现。本技术方案采用Ryu控制器,并在其应用层实现了一个大象流侦测器应用。该应用主要包含两个模块:交换模块和大象流侦测模块。交换模块主要完成packet_in请求的处理,flow_mod响应的生成和下发,flow_mod响应的生成部分主要完成匹配流表项的生成,粒度、类型、大小可动态调节的流表项有效时间在该部分实现。当交换模块处理packet_in请求时,将解析出来的数据分组信息传递给大象流侦测模块对流统计信息进行更新和补全校正,如果发现某个流的总字节数超过6K,直接将该流判定为大象流,并通知交换模块修改该流的流表项有效时间并再次下发流表项到转发设备。

2.本技术方案采用粒度、类型、大小可动态调节的流表项有效时间支持大象流的侦测。现有OpenFlow协议可支持流表项有效时间类型和大小的动态调节,但只支持秒粒度的有效时间。本技术方案在不改变现有OpenFlow协议的前提下,直接利用现有流表项的cookie部分对流表项有效时间的粒度进行设置。本技术方案支持微秒、毫秒、和秒三种粒度流表项有效时间,在改进后的Ryu控制器的交换模块的flow_mod响应模块实现了粒度、类型、大小可动态调节的流表项有效时间。交换机部分在本技术方案提供的改进后的OpenvSwitch软件交换机的ofproto/ofproto_dpif.c实现。

3.本技术方案对网络的每个数据分组的流表项有效时间进行动态调节。调节方法具体为:首先根据网络的平均包速设定网络数据分组的初始流表项有效时间粒度、类型、和大小;然后每当控制器接收到一个由于流表项超时转发的packet_in请求,控制器将保持该数据分组的流表项有效时间类型不变,大小翻倍,粒度根据有效时间大小是否溢出而增大,直到该流被判定为大象流。控制器将被判定为大象流的流表项有效时间粒度直接设置为秒,类型为空闲有效,大小为5秒。由于老鼠流包含的包数少,老鼠流的流表项会及时失效清理出流表内存,避免流表溢出。由于大象流包含的数据分组数多,采用逐渐增大的有效时间保证大象流的前期转发更多数据分组到控制器,便于控制器在大象流前期完成侦测,提高侦测及时性;同时降低大象流的中后期转发到控制器的数据分组数,便于控制大象流发送到控制器的总包数,避免占用过多控制通道带宽,增加大象流的转发延时。

4.本技术方案还包含一个转发数据分组补全校正方法。该方法以流表项的初始有效时间为数据分组的间隔时间,每个流最新接收到的数据分组的字节数为缺失数据分组的平均字节数,缺失数据分组总数通过流表项的最近有效时间除以数据分组的间隔时间计算,缺失数据分组的总字节数用缺失数据分组总数乘以平均数据分组字节数计算。每当控制器接收到一个packet_in请求,大象流侦测器对统计信息进行更新和补全校正。

5.本技术方案对大象流进行侦测时采用基于流字节数的侦测模型。根据当前大部分侦测器将字节数超过10K的流定义为大象流,本技术方案的控制器考虑到数据分组的缺失和侦测的精度和及时性要求,根据自己生成的数据分组统计信息将当前流字节数超过6K的流判定为大象流。

这种方法保证了侦测的高精度、低延时、和低控制带宽消耗,适用于高速数据中心网络通过快速高精度识别大象流对网络性能和资源进行管理和优化,保证对延时和带宽有特别要求的应用的服务质量和用户体验。

附图说明

图1为实施例中SDN网络转发设备发送流表项生成请求到SDN控制器的原理图;

图2为实施例中SDN网络转发设备直接转发数据分组的原理图;

图3为实施例中大象流侦测器(Ryu控制器)的结构图;

图4为实施例中大象流侦测器的工作原理图;

图5为实施例中描述支持粒度、类型、大小可动态调节流表项有效时间的流表项结构图;

图6为实施例中描述流表项失效时间调节方法原理图;

图7为实施例中描述支持粒度、类型、大小可动态调节流表项有效时间的转发设备软件(OpenvSwitch软件交换机)的结构图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述,但不是对本发明的限定。

实施例:

基于流表项有效时间的SDN大象流侦测器实现方法,包括如下步骤:

1)大象流侦测器初始化流表项:大象流侦测器首先需要为转发设备接收到的每个新流初始化流表项,当转发设备接收到一个新流的第一个数据分组时,由于转发设备的流表内存没有预先为该数据分组配置流表项,转发设备不知道如何处理该数据分组,转发设备于是将数据分组封装成packet_in请求发送到大象流侦测器要求创建匹配的流表项,由于大象流侦测器其实是带有大象流侦测功能的控制器,大象流侦测器会解析接收到的packet_in请求,生成flow_mod响应,为大象流侦测器接收到的数据分组初始化有效时间粒度、类型、大小三维度动态可调的流表项,并下发到转发设备;大象流侦测器将流表项有效时间的粒度初始化为微秒,类型为硬有效,大小为几十到几百之间;

2)大象流侦测器动态调节流表项有效时间:大象流侦测器根据流表项失效的次数调节流表项有效时间,大象流侦测器为新流初始化流表项时,为流表项配置了粒度、类型、大小三维度动态可调的有效时间,当流表项在转发设备流表内存超时失效后,该流表项会被转发设备清理出流表内存,所以,当转发设备接收到一个数据分组却由于流表项超时的原因在其流表内存找不到匹配的流表项,转发设备也会将数据分组封装成packet_in请求发送到控制器要求激活匹配的流表项,这时,大象流侦测器会生成flow_mod响应激活原流表项,同时调整其有效时间,具体为:保持现有流表项有效时间类型,将大小翻倍,再根据大小值是否溢出将有效时间粒度从微秒增大到毫秒,或者从毫秒增大到秒;

3)大象流侦测器统计流数据分组信息:传统的SDN大象流侦测器通过强制控制器周期轮询网络中每个转发设备的每条流表项统计的数据分组信息汇集全网的流数据分组统计信息,再根据这个统计信息侦测大象流,本例采用大象流侦测器自己接收到的数据分组统计流信息,即每当大象流侦测器接收到一个packet_in请求时,首先对请求进行解析,然后在生成flow_mod响应的为数据分组生成或激活流表项的同时,解析后的数据分组信息会被大象流侦测器进行统计,统计信息主要记录流当前的字节数,计算方法是把控制器接收到的该流的数据分组大小进行累加,所以,大象流侦测器维护了一个流统计信息表,该信息表包含:源IP地址,目的IP地址,源端口号,目的端口号,协议号,初始流表项有效时间大小,粒度,当前流表项有效时间大小,粒度,当前接收总字节数,校正后总字节数;当控制器接收到一个packet_in请求并把其包含的数据分组解析出来,大象流侦测器会提取该数据分组的五元组信息,即源IP地址,目的IP地址,源端口号,目的端口号,协议号,并在信息表中查找匹配的流,如果找到匹配的流,说明接收到的数据分组是已有流的一个数据分组,将该数据分组的大小累加到当前接收总字节数,并更新该流的总字节数;如果没有找到,说明接收到的数据分组属于一个新流,大象流侦测器在流统计信息表中添加一个新记录,并根据数据分组和流表项初始有效时间对该纪录进行初始化;

4)大象流侦测器补全校正流统计信息:转发设备并没有把自己接收到的每一个数据分组转发到控制器,当转发设备的流表项有效时,接收到的数据分组会被转发设备直接根据匹配流表项的指令转发到相应的端口,与大象流侦测器没有交互,只有当流表项超时失效后,转发设备才将接收到的数据分组转发到大象流侦测器,所以,大象流侦测器根据接收到的数据分组有缺失,统计的流信息需要进行补全校正,因此,每当大象流侦测器接收到一个packet_in请求完成流统计信息更新后,马上对统计信息进行校正,主要校正流总字节数,方法是估计该流表项在最近这个有效时间内被多少数据分组使用,再将该数据分组数乘以数据分组平均字节数,乘积就是该流在最近这个有效时间内控制器缺失的字节数,将该字节数加上原有的字节数的和就是该流校正后的总字节数,然后大象流侦测器用该流表项最近有效时间大小除以该流表项初始有效时间大小的商来估计缺失的数据分组数,用最新接收到的数据分组字节数估计该流数据分组平均字节数,对流总字节数进行校正;

5)大象流侦测器对大象流进行建模:大象流侦测器使用阈值型大象流模型,由于计算机网络通常把超过10K字节的流直接定义为大象流,大象流侦测器流信息统计的缺失,以及侦测精度和速度,把超过6K字节的流判定为大象流:

6)大象流侦测器侦测大象流:每当大象流侦测器接收到一个packet_in请求,在完成对流统计信息的更新和校正后,判断该流是否是大象流,判断方法是直接比较该流校正后的字节数,如果超过6K字节,该流被判为大象流,同时更新该流的流表项有效时间粒度为秒,类型为空闲有效,大小为5,下发转发设备。

步骤1)中所述的由于大象流侦测器其实是带有大象流侦测功能的控制器,具体为:

1)大象流侦测器是一个支持大象流侦测的SDN控制器,如图3所示,以开源Ryu控制器为基础,大象流侦测功能以Ryu外部应用的形式加入到Ryu控制器,与Ryu内部核心应用共享Ryu控制器的OpenFlow消息处理和事件派遣模块,大象流侦测应用主要包括两个模块:交换和侦测;交换模块接收Ryu控制器的OpenFlow消息处理和事件派遣模块传递的packet_in请求,生成flow_mod响应再通过Ryu控制器的OpenFlow消息处理和事件派遣模块下发到转发设备;侦测模块主要包含流信息统计、校正、和大象流侦测功能:

2)大象流侦测器虽然不需要修改现有的SDN接口和协议,但SDN网络所使用的转发设备需要升级软件支持有效时间粒度、类型、大小三维度动态可调的流表项,软件升级主要修改流表项有效时间的粒度的解析,涉及的功能主要包括:调整定时器的精度以支持细粒度流表项有效时间,在流表项的创建、流表项的修改、流表项的失效清理时解析写在流表项cookie部分的有效时间粒度。

步骤1)中所述的大象流侦测器初始化流表项具体为:

1)大象流侦测器为SDN网络数据分组配置有效时间粒度、类型、大小三维度动态可调的流表项,大象流侦测器为流表项配置秒、毫秒、微秒这三种粒度的有效时间,有效时间类型为硬有效和空闲有效两种,流表项有效时间的类型和大小通过享有流表项的有效时间部分实现,该有效时间部分包含硬有效时间和空闲有效时间两个2字节无符号短整数,因此,有效时间大小为1到25535(2

由于侦测大象流需要首先获取网络流量统计信息,而通常获取网络流量信息的方法是控制器轮询统计各转发设备保存在流表项的统计信息,消耗大量SDN控制器与转发设备之间控制通道带宽。为了降低该控制通道带宽,本例使用控制器接收到的packet_in请求对流量信息进行统计和更新,从而进一步完成大象流的侦测。控制器通过接收到的packet_in请求对流量信息进行统计和更新的原理如图1所示。当转发设备接收到一个数据分组时,首先到流表内存查找该数据分组匹配的流表项,如果没找到,转发设备将接收到的数据分组封装成packet_in请求发送到控制器,请求控制器为该数据分组创建匹配的流表项。找不到匹配的流表项的原因有两种:一种是该数据分组是新流的第一个包,匹配的流表项尚未被创建;另一种是该数据分组属于已接收到的某个流,但该流匹配的流表项已失效。如果找到匹配的流表项,转发设备直接根据流表项的动作指令对流进行处理,不与控制器发生交互,如图2所示。

本例的大象流侦测器的架构如图3所示。该侦测器实际上是SDN控制平面的一个增强型控制器。控制器以开源Ryu控制器为基础,全新设计的大象流侦测器应用以Ryu外部应用的形式加入到Ryu控制器,与Ryu内部核心应用共享Ryu控制器的OpenFlow消息处理和事件派遣模块。大象流侦测应用主要包括两个模块:交换和侦测。交换模块主要负责接收Ryu事件派遣模块分发的packet_in事件,对packet_in请求进行解析,创建或者更新流表项,再将流表项通过事件派遣和OpenFlow消息处理模块下发到转发设备。经过交换模块解析后的packet_in请求同时送入侦测模块。侦测模块首先更新流统计信息,然后对统计信息进行补全和校正,最后根据流总字节数是否超过阈值判定是否是大象流。

本例的大象流侦测器的工作原理如图4所示。大象流侦测器模块循环判断是否接收到Ryu事件派遣模块的新packet_in请求。当接收到新packet_in请求时,侦测器的交换模块首先对请求进行解析提取数据分组信息,然后判断该数据分组是否是新流的第一个包。如果是,交换模块为该新流初始化流表项(有效时间粒度通常为微秒,类型为硬有效,大小为几十到几百微秒),保存该流表项信息,下发该流表项到转发设备;如果不是,交换模块调整已有流表项有效时间粒度和大小,保持有效时间不变,保存该流表项信息,下发流表项到转发设备。解析后的packet_in请求同时送入大象流侦测模块。侦测模块首先更新该流的统计信息,然后根据当前收到的数据分组的大小,初始流表项有效时间,新近失效的流表项有效时间对流统计信息进行补全和校正,最后根据校正后的统计信息对大象流进行侦测。如果该流被判定大象流,将该流的现有流表项的有效时间粒度设备为秒,类型为空闲,大小为5,重新下发到转发设备。

本例的大象流侦测器可以实现秒、毫秒、微秒三种粒度的流表项有效时间的配置。由于现有的OpenFlow协议只支持以秒为单位的有效时间,目前的SDN控制器和转发设备都只支持以秒粒度的流表项有效时间。本例的大象流侦测器在不修改已有OpenFlow协议的基础上,通过现有流表项的cookie部分对流表项有效时间的粒度进行设置。OpenFlow协议定义的流表项结构如图5所示。流表项主要包含5个部分:匹配字段,指令集,统计信息,有效时间,cookie。匹配字段包含不同协议的多个首部字段,用于流表项与数据分组的匹配。指令集包含对数据分组的处理动作,如:转发到指定端口,丢弃,广播到所有端口等。统计信息保存了对所有调用过该流表项的数据分组的统计结果。有效时间包含配置硬有效时间和空闲有效时间,每个有效时间是一个2字节无符号整型数。Cookie部分是一个8字节的无符号长整数类型,可以根据需要在控制器和转发设备之间进行数据的交互。因此,本例方法将流表项有效时间的粒度用一个2字节的无符号短整数表示,写入cookie部分最低的2字节。其中1表示秒,2表示毫秒,3表示微秒,0表示无效。

本例的大象流侦测器为各流动态调节流表项有效时间的粒度、类型、和大小,如图6所示。当控制器收到每个新流的第一个数据分组时,根据网络包平均到达时间配置初始流表项有效时间为硬有效,微秒级粒度,大小为几十到几百微秒(如图6的包1)。每当转发设备收到一个数据分组,且由于流表项有效时间超时的原因无法找到匹配流表项时,转发设备将该流表封装成packet_in请求转发到控制器要求激活流表项(如图6的包3)。控制器收到请求后,会将原来的流表项有效时间大小加倍,下发到转发设备。由于流表项有效时间为2字节无符号短整数,当大小超过当前粒度的最大值时,需要提高粒度的等级。由于控制器接收到packet_in请求会触发大象流侦测模块对流统计信息进行跟新和校正。当校正后的流总字节数超过6K,该流会判定为大象流,而大象流的流表项会被控制器设置为空闲超时5秒重新下发到转发设备。由于大象流包含的包多,根据流表项失效次数调节流表项有效时间的粒度和大小,可以控制大象流转发到控制器的总包数,而且在流早期发送更多的包保证大象流在早期可以被及时准确侦测。由于老鼠流包含的包少,为流表项有效时间配置微秒级粒度保证老鼠流的及时转发且其流表项及时失效被清理出流表内存,避免流表内存溢出。

如图1所示,本例的大象流侦测器基于控制器自己生成的流统计信息对大象流进行侦测。每当控制器接收到一个packet_in请求会触发大象流侦测器对更新流统计信息。本例方法采用传统的基于流字节数的大象流模型,即把当前流字节数超过6K的流判定为大象流。所以,流统计信息主要记录流当前的字节数,计算方法是把控制器器接收到的该流的数据分组大小进行累加。因此,大象流侦测器维护了一个流统计信息表,该信息表包含地信息如表1所列:源IP地址,目的IP地址,源端口号,目的端口号,协议号,初始流表项有效时间大小,粒度,当前流表项有效时间大小,粒度,当前接收总字节数,校正后总字节数。 当控制器接收到一个packet_in请求并把其包含的数据分组解析出来,大象流侦测器会提取该数据分组的五元组信息(源IP地址,目的IP地址,源端口号,目的端口号,协议号),并在信息表中查找匹配的流,如果找到匹配的流,说明接收到的数据分组是已有流的一个数据分组,将该数据分组的包大小累加到当前接收总字节数更新该流的总字节数。同时,转发设备在流表项有效时间内直接转发的数据分组数为当前流表项有效时间除以流表项初始有效时间的商。由于转发设备直接转发的数据分组不会发送到控制器,这些数据分组数乘以控制器最近接收到的数据分组的大小粗略估计了转发设备直接转发的数据分组的总字节数。将该字节数加入当前接收总字节数即为校正后的总字节数。用校正后的流总字节数进行大象流的侦测可以更快,更精确地判定大象流。

本例基于开源的Ryu控制器开发, 交换机可以是开源或商业的软件或物理交换机。为了支持粒度可调流表项有效时间,本例利用当前OpenFlow协议定义的流表项的cookie部分对有效时间粒度进行配置,保证了对当前OpenFlow协议的兼容性。为了解析支持粒度可调流表项有效时间的流表,SDN交换机需要适当修改解析方法对其支持。本例给出了OpenvSwitch开源软件交换机的修改方法,如图7所示,OpenvSwitch的守护进程ovs-vswitchd持续检查其位于内核的数据通道是否接收到新的数据分组,当接收到新数据分组时,数据通道检查内存流表是否有匹配流表项,如果有,直接按照流表项的指令对数据分组进行处理;否则,该数据分组通过守护进程上传到OpenFlow协议处理模块,将数据分组封装成packe_in请求,再通过守护进程发送到控制器。当守护进程接收到控制器下发的flow_mod响应时,守护进程调用OpenFlow协议处理模块对响应进行解析,并将解析出的流表项下发到数据通道,写入流表内存,完成该数据分组的转发。所以,本例需要更新OpenvSwitch的OpenFlow协议处理模块,保证正确封装packe_in请求,解析flow_mod响应。同时,守护进程还需要循环检查流表内存各流表项状态,将已失效流表项清理出流表内存,避免流表内存溢出。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号