一种动态流量监控方法

文档序号:9306647阅读:1238来源:国知局
一种动态流量监控方法
【技术领域】
[0001]本发明属于网络数据处理技术领域,具体涉及一种动态流量监控方法。
【背景技术】
[0002]互联网目前已成为人类社会最重要的信息基础设施,随着互联技术不断发展,网络运行中所带来的一系列问题也逐渐凸显出来,其中突出的是由网络流量过大所引发的网络拥塞;同时网络设备和应用也日益复杂化,因此人们迫切需求对网络流量进行高效的管理和监控。但是传统方法来对网络流量控制,是将控制逻辑和转发逻辑都耦合在软件或者硬件平台上,使得其复杂程度高、灵活性低,限制了网络设备对数据处理的能力。

【发明内容】

[0003]本发明所要解决的技术问题是现有网络流量控制方法存在灵活性差、复杂程度高及数据处理效率低等问题,提供一种动态流量监控方法。
[0004]为解决上述问题,本发明是通过以下技术方案实现的:
[0005]—种动态流量监控方法,包含以下操作步骤:
[0006]步骤1,控制器向FPGA发送参数配置的命令;
[0007]步骤2,FPGA接收到命令后,进行识别,若是发送给自己的命令则根据通信协议进行解析,若否则丢弃;
[0008]步骤3,提取命令中的有效信息,并根据有效信息中的地址信息在FPGA内存空间寻址,寻址完成即将有效信息写入该地址空间;
[0009]步骤4,当检测到内存空间有更新数据时,则将数据读出作为令牌桶和令牌轮询调度的配置参数;
[0010]步骤5,完成令牌桶和令牌轮询调度的参数配置后,开始接收来自不同输入端口的报文,并根据不同端口输入的报文,将报文标记为不同类型,并存入对应的FIFO中;
[0011]步骤6,当令牌桶中令牌数量大于或等于报文字节长度时,则允许当前报文通过,此时从FIFO中读取报文进行转发,并从令牌桶中减少相应报文字节长度数量的令牌;当令牌桶中令牌数量小于报文字节长度时,则等待;
[0012]步骤7,当检测到FIFO的某个缓存队列长度大于或等于设定的阈值时,则给令牌轮询调度发送调度请求,同时启动超时计数器;
[0013]步骤8,在设定的时间到达时,若该缓存队列长度小于设定的阈值,则说明自调整成功,则返回步骤7,等待FIFO的其他缓存队列发起调度;若该缓存队列长度依然大于设定的阈值,则说明自调整失败,FPGA向控制器发送反馈信号;
[0014]步骤9,收到调度请求后,令牌轮询调度将原先指向虚拟桶的发令牌路径调度至该FIFO0
[0015]步骤3中提取命令中的有效信息包括地址信息、数据信息和动作信息。
[0016]步骤9还进一步包括冲突解决机制,即:
[0017]若某个缓存队列正在进行自调整的期间,另一个缓存队列也发送自调整请求信号,则由设计的调度算法,等待上一个缓存队列自调整完成后处理下一个队列发起的请求;
[0018]在单个虚拟桶的情况下,若同一时刻有两个或两个以上缓存队列向令牌轮询调度发起调度请求,则不进行自调整,直接向上层控制器发送反馈信号,由控制器做出相应动作处理。
[0019]步骤9中所述的虚拟桶的个数为一个或一个以上。
[0020]步骤9中,若调度的次数大于I次时,则将令牌路径由当前FIFO调度至发起调度请求FIFO。
[0021]步骤8中,当控制器接收到FPGA发送的反馈信号后,控制器会根据需要对参数配置命令进行修改。
[0022]与现有技术相比,本发明具有如下特点:
[0023]1.运用SDN架构的思想,使得控制层与转发层分离,同时采用FPGA作为实现硬件逻辑设计和转发平台,充分利用FPGA在处理数据“并行计算”优势,提高了处理数据效率;
[0024]2.建立良好的反馈和冲突解决机制,控制层收到转发层上传异常信号,用户可通过控制器动态对输出流量的调控;
[0025]3.硬件采用多级流水线令牌桶和轮训调度策略设计实现灵活的动态带宽分配,更为有效应对突发流量的情况。
【附图说明】
[0026]图1为本发明基于FPGA流量监控总体方案设计图。
[0027]图2为本发明基于FPGA流量监控硬件程序设计流程图(一次调度)。
[0028]图3为控制器对硬件参数配置示意图。
[0029]图4为I次令牌轮询调度策略示意图。
[0030]图5为M次令牌轮询调度策略示意图。
【具体实施方式】
[0031]—种动态流量监控方法,通过控制层和转发层分离的架构实现方便、快捷的动态流量监控,如图1 ;硬件采用FPGA平台设计令牌桶算法和调度电路实现灵活的动态带宽分配,有效应对突发流量情况,如图2。其具体包含以下操作步骤:
[0032]步骤1,以netmagic平台为例,由上层控制器通过连接在上层控制器和底层FPGA间的通信协议,向FPGA发送参数配置命令,如图3。通过运行在本地主机和FPGA平台间通信协议(NMAC协议)所提供可编程接口,由控制器向硬件平台发起建立连接的请求,通过三次握手与底层FPGA建立连接,实现友好的交互控制界面,便于高效、快捷访问FPGA内部地址空间和接受底层FPGA反馈信息。
[0033]步骤2,FPGA接收到命令后,进行识别,若是发送给自己的命令则根据通信协议进行解析,若否则丢弃。
[0034]步骤3,根据通信协议的格式和规则解析命令,提取命令中的有效信息(地址、数据和动作等),根据有效信息中的地址信息在FPGA内存空间寻址,找到该地址空间,寻址完成即将数据信息写入该地址所指向的内存空间(RAM0,RAM1,……,RAMn)。
[0035]步骤4,流量控制模块中的3个令牌桶组和令牌轮训调度模块检测指定内存空间(RAMO,RAM1..RAMn)是否有数据更新。当检测到对应的内存单元更新数据,则读取指定地址内存空间中数据信息,并将数据读出作为令牌桶和令牌轮询调度配置参数,完成令牌桶和令牌轮询调度参数配置。
[0036]设计令牌桶可配置参数包括令牌增加的时间间隔T(时间粒度)、T周期向令牌桶内添加的令牌个数N、令牌桶中可放置的最大令牌数(桶深)L ;轮询令牌轮询调度计时参数Time0
[0037]步骤5,完成对流量控制模块和令牌调度模块的参数初始化后,开始接收来自输入控制模块的报文。根据不同端口输入的报文,将输入的报文标记为不同类型。在本实施例中,设定三个输入端口 portl、port2、port3,同时将对应报文标记为类型I (PRl)、类型2(卩1?2)、类型3(?1?3)。如3’bOOl表示由第一个端口输入的报文。在根据不同输入端口将报文标记为不同类型时,也可以实际需求,修改为不同信息源、不同类型等报文。
[0038]每个类型报文分别存入对应的FIFO缓存中,并设定FIFO的阈值Thi (i = 1、2、3) ο在本实施例中,FIFO缓冲接口采用双端口设计,即读写同时进行,提高报文处理速度;若FIFO有溢出则丢弃当前报文。缓冲队列长度检测模块根据FIFO输出信号usedw,实时检测FIFO的队列长度(Length)。
[0039]步骤6,当令牌桶中令牌数量满足一定条件时,即桶内令牌数量大于或等于报文的字节长度时,则允许当前报文通过,即从缓存FIFO中读取报文转发,并减少令牌桶内相应数量令牌;否则等待。
[0040]在本实施例中,流量控制模块由3个令牌桶组和I个虚拟桶构成,每个令牌桶组共用一个令牌信号,令牌轮询调度根据计数器CT以周期T向3个令牌桶组和I个虚拟桶发送令牌信号。3个令牌桶组的桶深L相同,T周期向类型为PR1、PR2、PR3令牌桶组内添加的令牌个数分别为N1、N2、N30若需要大规模令牌桶组完成流量控制,则设置多个数量虚拟桶,可同时满足多个令牌桶组调度。
[0
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1