发明内容
本发明的目的在于克服上述技术缺陷,提出了一种适用于SDN架构的设备感知方法;该方法通过扩展POF匹配域定义:状态参数域(SPF,State Parameter Field),可以将系统实时状态参数作为匹配值,从而实现基于设备状态的流控,即“设备感知”;同时,一些基于设备状态的机制也可以被支持,如时间敏感网络(TSN)基于系统时间的数据流过滤机制,进一步增强了SDN转发面流量控制策略的可编程性和智能化。
为了实现上述目的,本发明提出了一种基于协议无感知转发的设备状态感知方法,该方法包括在软件定义网络SDN架构中的SDN交换机执行的如下步骤:
接收数据流;
根据流表中配置的状态参数域,提取出相应的状态参数;所述状态参数域为在POF现有匹配域中增加的用于获取交换设备实时状态参数的匹配域;
根据提取的状态参数进行流表表项匹配,获得流表匹配结果;
根据流表匹配结果对数据流进行相应的处理。
作为上述方法的一种改进,所述状态参数域定义为(SPF ID,{偏移,长度})三元组,其中,SPF ID用于标识状态参数类型;{偏移,长度}用于将一个状态参数域划分为多个子参数域;其中,偏移是指相对于状态参数域的起始地址的偏移量,单位是比特或字节;长度是该子参数域的长度,单位是比特或字节。
作为上述方法的一种改进,所述方法还包括:预先通过SDN控制器对SDN交换机进行配置的步骤,具体包括:
配置状态参数与状态参数域的映射关系;
配置状态参数域为流表匹配域。
作为上述方法的一种改进,在所述配置状态参数与状态参数域的映射关系之前还包括:
预先存储每个状态参数的指针,并且初始化指向空地址;
为状态参数域分配一个或多个内存空间,并将该内存空间分为若干个内存块,同时将每个内存块的起始地址映射到相应的SPF ID。
作为上述方法的一种改进,在所述配置状态参数与状态参数域的映射关系后还包括:将状态参数与状态参数域进行绑定的步骤,具体为:
根据状态参数与状态参数域的映射关系,将每个状态指针指向相应状态参数域的具体地址addr1;其中,addr1=addr0+偏移,addr0为SPF ID的起始地址。
作为上述方法的一种改进,所述根据流表中配置的状态参数域,提取出相应的状态参数;具体包括:
根据流表匹配域获取SPF ID;
根据SPF ID找到该状态参数域所处内存块的起始地址,然后根据{偏移,长度}提取出该状态参数。
作为上述方法的一种改进,所述方法还包括:解除状态参数与状态参数域的映射关系的步骤,具体为:将原状态参数指针指向空地址。
作为上述方法的一种改进,所述方法还包括:修改设备状态参数与状态参数域的映射关系的步骤,具体包括:
根据新的SPF ID找到该状态参数域所处内存块的起始地址,然后根据偏移值,进一步找到该状态参数域的具体地址;
将原状态参数指针重新指向该状态参数域的具体地址。
作为上述方法的一种改进,所述方法还包括:实时更新状态参数域的步骤,具体包括:
检查状态参数的指针是否为空;
若为空,则说明状态参数未使能,不更新该状态参数域;
若非空,则更新该状态参数指针所指向的内存块。
本发明还提供了一种基于协议无感知转发的设备状态感知系统,该系统应用在软件定义网络SDN架构中的SDN交换机,所述系统包括:接收模块、状态监测模块、流表匹配模块和转发模块;
所述接收模块,用于接收数据流;
所述状态监测模块,用于根据流表中配置的状态参数域,提取出相应的状态参数;所述状态参数域为在POF现有匹配域中增加的用于获取交换设备实时状态参数的匹配域;
所述流表匹配模块,用于根据提取的状态参数进行流表表项匹配,获得流表匹配结果;
所述转发模块,用于根据流表匹配结果对数据流进行相应的处理。
作为上述系统的一种改进,所述状态参数域定义为(SPF ID,{偏移,长度})三元组,其中,SPF ID用于标识状态参数类型;{偏移,长度}用于将一个状态参数域划分为多个子参数域;其中,偏移是指相对于状态参数域的起始地址的偏移量,单位是比特或字节;长度是该子参数域的长度,单位是比特或字节。
作为上述系统的一种改进,所述系统还包括:设置在SDN控制器上的状态参数管理模块和流表配置模块;
所述状态参数管理模块,用于配置状态参数与状态参数域的映射关系;
所述流表配置模块,用于配置状态参数域为流表匹配域。
作为上述系统的一种改进,所述系统还包括:SPF管理模块,用于为状态参数域分配一个或多个内存空间,并将该内存空间分为若干个内存块,同时将每个内存块的起始地址映射到相应的SPF ID。
作为上述系统的一种改进,所述系统还包括:状态参数指针管理模块,用于绑定、解除和修改状态参数与SPF映射关系;具体包括:绑定单元、解除单元和修改单元;
所述绑定单元,用于根据状态参数与状态参数域的映射关系,将每个状态指针指向相应状态参数域的具体地址addr1;其中,addr1=addr0+偏移,addr0为SPF ID的起始地址;
所述解除单元,用于将原状态参数指针指向空地址;
所述修改单元,用于根据新SPF ID找到该状态参数域所处内存块的起始地址,然后根据偏移值,进一步找到该状态参数域的具体地址;将原状态参数指针重新指向该状态参数域的具体地址。
作为上述系统的一种改进,所述SPF管理模块还包括:实时更新状态参数域单元,用于检查状态参数的指针是否为空;若为空,则说明状态参数未使能,不更新该状态参数域;若非空,则更新该状态参数指针所指向的内存块。
本发明还提供了一种交换机,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
与现有技术相比,本发明的优势在于:
1、本发明的系统通过扩展POF匹配域定义:状态参数域(SPF,State ParameterField),可以将系统实时状态参数作为匹配值,从而实现基于交换设备状态的流控,解决了POF不能感知转发设备实时状态的限制;
2、基于本发明的系统,一些基于设备状态的机制也可以被支持,如时间敏感网络(TSN)基于系统时间的数据流过滤机制,进一步增强了SDN转发面流量控制策略的可编程性和智能化。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
实施例1
本发明公开了一种基于POF的设备状态感知系统。所述系统适用于SDN架构,包含SDN控制器和SDN交换机,控制器与交换机通过SDN南向接口下发状态参数与SPF的映射关系以及配置了SPF为匹配域的流表。当数据流到达时,由交换机根据流表中配置的状态参数域,提取出该状态参数进行流表表项匹配,并应用相应流量转发策略;在POF现有匹配域基础上,通过为POF增加状态参数域(SPF,State Parameter Field),实现转发设备实时状态如队列剩余空间,端口状态,系统时钟等信息的感知。
如图1所示,本发明的实施例1提供了一种基于协议无感知转发的设备状态感知系统。所述系统适用于软件定义网络架构,所述系统包括:设置在SDN控制器上的状态参数管理模块和流表配置模块;
状态参数管理模块,用于配置或解除状态参数与SPF的映射关系;
流表配置模块,用于配置SPF为流表匹配域;
流表配置模块通过配置SPF为匹配域,可以获取实时设备状态信息如队列剩余空间,端口状态,系统时钟等信息作为流表匹配值,可以支持基于时间触发机制的时间敏感网络(TSN,Time-Sensitive Network),基于队列空间监测的主动队列管理等基于系统实时状态的转发控制机制在SDN架构下的编程实现。
以及设置在SDN交换机上的接收模块,状态监测模块、流表匹配模块、转发模块、状态参数指针管理模块和SPF管理模块;
所述接收模块,用于接收到达交换设备的数据流;
所述状态监测模块,用于根据流表中配置的状态参数域,提取出相应的状态参数;该模块包括:内存监测,端口状态监测和系统时间监测的多个独立的状态监测单元。
所述流表匹配模块,用于根据提取的状态参数进行流表表项匹配,获得流表匹配结果;
所述转发模块,用于根据流表匹配结果对数据流进行相应的处理。
所述状态参数指针管理模块,用于更新和维护状态参数与SPF映射关系;具体包括:绑定单元、解除单元和修改单元;
所述绑定单元,用于根据状态参数与状态参数域的映射关系,将每个状态指针指向相应状态参数域的具体地址addr1;其中,addr1=addr0+偏移,addr0为SPF ID的起始地址;
所述解除单元,用于将原状态参数指针指向空地址;
所述修改单元,用于根据新SPF ID找到该状态参数域所处内存块的起始地址,然后根据偏移值,进一步找到该状态参数域的具体地址;将原状态参数指针重新指向该状态参数域的具体地址。
由状态参数管理模块配置或解除设备状态参数与SPF的映射关系时,交换机端状态参数指针管理模块预先存储每个状态参数的指针,并且初始化指向空地址;当SPF内存分配完成,收到控制器下发状态参数与SPF的映射关系后,状态参数指针管理模块将每个状态参数指针指向相应SPF的具体地址。所述设备状态参数与SPF的映射关系可以在交换机端绑定(固化)。
SPF管理模块,用于进行SPF内存分配、初始化;
SPF管理模块为SPF分配一个或多个内存空间。在SPF初始化时,该内存空间可以再分为若干个内存块,同时将每个内存块的起始地址映射到相应的SPF ID。SPF内存空间在分块时,可以分为定长的内存块,也可以是非定长的内存块。
SPF管理模块还包括:实时更新状态参数域单元,用于检查状态参数的指针是否为空;若为空,则说明状态参数未使能,不更新该状态参数域;若非空,则更新该状态参数指针所指向的内存块。
由交换机端完成设备状态参数与SPF的绑定时,交换机端的状态参数指针管理模块预先存储每个状态参数的指针,当SPF内存分配完成,将每个状态参数指针指向相应SPF的内存具体地址。
所述系统控制器下发状态参数与SPF的映射关系和配置了匹配域为SPF的流表时,可采用POF,OpenFlow等支持或通过扩展支持SPF(ID,{偏移,长度})元组定义方式的SDN南向接口协议。
实施例2
本发明的实施例2提供了一种基于POF的设备状态感知方法,包含以下步骤:
步骤1)控制器配置状态参数与SPF ID的映射关系,配置SPF为流表的匹配域;
步骤2)在交换机端,为SPF分配存储空间;
状态参数域(SPF)由(ID,{偏移,长度})元组来定义,其中ID可以标识出匹配域类型为SPF,与包头域和metadata域等进行区分;SPF ID与设备状态参数可以是一对一映射,也可以是一对多映射,一个SPF内部可以通过{偏移,长度}划分为多个子参数域;其中,偏移是指相对于SPF的起始地址的偏移量,单位可以是比特或字节;长度是该子参数域的长度,单位可以是比特或字节。
状态参数域(SPF)通过SPF ID来标识,并且一个SPF内部可以通过{偏移值,长度}划分为多个参数域。在交换机端需要为SPF分配一个或多个存储空间,存储空间也可以继续划分为多个内存块,同时将每个内存块的起始地址映射到相应的SPF ID。SPF ID主要两个作用:
1、用于说明该匹配域为SPF类型而不是metadata或数据包头域;
2、表明存储状态参数的内存块的起始地址。单独的一个SPFID是不能定义任何状态参数域。
为了便于SPF的管理,可以为一个SPF ID绑定一种系统属性,然后在同一个SPF ID域中,通过{偏移值,长度}又可以定义同一系统属性的多种状态参数,如系统属性为内存,通过{偏移值,长度}又可以定义已使用内存,剩余内存等状态参数;或者如系统属性为系统时间,通过{偏移值,长度}可以定义不同精度的时间参数域,如时隙,毫秒等。
在SPF初始化时,该内存空间可以再分为若干个内存块,同时将每个内存块的起始地址映射到相应的SPF ID。SPF内存空间在分块时,可以分为定长的内存块,也可以是非定长的内存块。
步骤3)在交换机端,将设备状态参数与SPF绑定(固化),如图2的实线箭头所示,包括以下步骤:
步骤3-1)交换机端预先存储每个状态参数的指针,并且初始化指向空地址;
步骤3-2)交换机端将每个内存块的起始地址映射到相应的SPF ID;
步骤3-3)根据状态参数与状态参数域的映射关系,将每个状态指针指向相应SPF的具体地址addr1;其中,addr1=addr0+偏移,addr0为SPF ID的起始地址。
一个SPF ID下可以有多个SPF,通过{偏移,长度}划分。而每个状态参数指针是直接指向用(SPFID,{偏移,长度})三元组定义的某个SPF,而不是整个SPFID的起始地址addr0。SPFID是用于记录起始地址addr0的,根据起始地址,再加{偏移}就可以知道某个SPF的具体起始地址addr1=addr0+偏移,而具体状态参数指针是直接指向具体的addr1的。
此外,根据需要还可以解除设备状态参数与状态参数域的映射关系:将原状态参数指针指向空地址;
或者,修改或重新配置状态参数域与状态指针映射关系:
根据新的SPF ID找到该状态参数域所处内存块的起始地址,然后根据偏移值,进一步找到该状态参数域的具体地址;
将原状态参数指针重新指向该状态参数域的具体地址。
控制器的状态参数模块可以配置状态参数与任意SPF ID映射及解除映射,前提是交换机端SPF与状态参数指针映射不是绑定的(固化),是可以运行时配置的。如果在交换机端将SPF与状态参数指针映射绑定(固化),那么状态参数管理模块仅供控制器查询SPF与状态参数指针的映射关系,不能配置SPF与状态参数的映射,这样交换机端开发变简单,但是配置灵活性降低。
控制器与交换机通过SDN南向接口下发状态参数与SPF的映射关系以及配置了SPF为匹配域的流表。SDN南向接口协议可以为POF,其中状态参数与SPF的映射关系可以通过扩展POF消息,也可以利用POF预留POFT_EXPERIMENTER消息发送该配置信息;其次,配置SPF为流表匹配域,可以通过扩展POF匹配域类型实现:通过匹配域ID来识别SPF,按照POF的匹配域定义方式{偏移,长度}来提取SPF。
步骤4)在交换机运行时,交换机的状态监测模块实时更新SPF,如图2中虚线箭头所示,具体步骤如下:
交换机的状态监测模块首先检查状态参数的指针是否为空;
若为空,则说明状态参数未使能即没有启用,即没有任何流表将该状态参数域设为匹配域,所以不需要实时更新该SPF;
若非空,则更新该状态参数指针所指向的内存域。
步骤5)当数据流到达交换机时,根据流表中配置的(SPF ID,{偏移,长度})来唯一的确定一个状态参数域,并根据SPF ID找到该SPF的地址,然后根据{偏移,长度}提取出该状态参数,进行流表表项匹配,并应用相应流量控制策略。
在POF现有匹配域基础上,为POF增加状态参数域(SPF,State Parameter Field),来获取交换设备实时状态信息如队列剩余空间,端口状态,系统时钟等;
实施例3
下面结合附图进一步阐述如何基于本发明来实现时间敏感网络(TSN,Time-Sensitive Network)基于时间的流量过滤机制(PSFP,Per-Stream Filtering andPolicing)。
如图3所示,一个典型的POF逻辑交换机由管理单元和转发单元组成。管理单元主要负责状态信息监测和系统资源管理,其中状态监测模块可以分为内存管理和端口状态管理等独立的状态监测模块。转发单元主要负责查表转发。管理单元与转发单元之间可以通过共享内存来进行信息交互。
在交换机端系统初始化时,预留部分共享内存作为状态参数域(SPF),如图4中的(a)所示,将该内存空间进一步的划分为多个内存块,并将每个内存块的起始地址映射到相应的SPF ID。
在交换机端系统初始化完成后,由控制器状态参数模块根据应用需求生成设备状态参数与SPF ID的映射信息。本实施例中,为支持PSFP机制,控制器配置设备状态参数-系统时间(时隙)映射到SPF(0x7002,{0,32}),其中SPF ID及{偏移,长度}是本实施例随机设定的,具体实施时是由状态参数模块进行管理和配置的。
此外,也可以将系统时间(单位:毫秒)映射到SPF(0x7002,{32,64}),配置结果如图4中的(c)所示。本实施例此处意在说明,为了便于SPF的管理,可以为一个SPF ID绑定一种系统属性,如图4中的(b)所示,配置SPF ID 0x7002为系统时间域,然后在同一个SPF ID域中,通过{偏移值,长度}又可以定义不同精度的系统时间参数域,如{0,32}域为系统时间,单位为:时隙,而{32,64}域也为系统时间,但是单位为:毫秒。
控制器通过SDN南向接口POF协议,下发系统时间(时隙)与SPF(0x7002,{0,32})的映射关系。
在收到控制器下发的映射关系后,交换机端实现系统时间(时隙)与SPF的映射主要包括以下步骤:
a)交换机端预先存储系统时间状态参数的指针,并且初始化指向空地址;
b)换机端将根据SPF ID 0x7002找到该SPF地址,然后根据偏移值0,进一步找到系统时间参数在该域内的具体地址;
c)将系统时间参数指针指向该地址。
同理,控制器状态参数模块可以解除状态参数与SPF映射,只需要重新下发状态参数与新SPF的映射关系即可。在交换机端解除状态参数与SPF的映射主要包括以下步骤:
a)换机端将根据新的SPF ID找到该SPF地址,然后根据偏移值,进一步找到系统时间参数在该域内的具体地址;
b)将原系统时间参数指针重新指向该地址;
控制器的状态参数模块可以配置状态参数与任意SPF ID映射及解除映射,前提是交换机端SPF与状态参数指针映射不是绑定的(固化),是可以运行时配置的。如果在交换机端将SPF与状态参数指针映射绑定(固化),那么状态参数管理模块仅供控制器查询SPF与状态参数指针的映射关系,不能配置SPF与状态参数的映射,这样交换机端开发变简单,但是配置灵活性降低。
在交换机端完成了SPF与系统时间参数的映射后,控制器就可以将系统时间(时隙)域作为流表的匹配域,生成PSFP流表,如图5所示,流表的ID为2,流表类型为区域匹配(Range Match),流表的匹配域类型为SPF,ID为0x7002,更具体的匹配域为0x7002域中偏移值为0,长度为32比特的域,即当前系统时间(时隙)。
时间感知整形(TAS,Time Aware Shaper)引擎相当于状态监测模块之一,负责系统时间(时隙)的更新维护。当交换机开始运行时,如图6所示,由TAS引擎负责更新系统时间(时隙)域,具体步骤如下:
a)TAS引擎首先检查系统时间(时隙)参数的指针是否为空;
b)若为空,则说明系统时间(时隙)参数未使能,不更新该SPF;
c)若非空,则更新系统时间(时隙)参数指针所指向的SPF。
与此同时,数据流开始到达交换机。经过第一张流表后,识别出需要进入PSFP流表的数据流。进入PSFP流表前需要根据该流表的匹配域从系统时间域中读取当前时隙,然后将获取的当前时隙与表项中参数作比较,如果该时隙处于开始时隙和结束时隙之间,则该流匹配表项,即通过了PSFP检测;如果不在该范围内,则丢弃该数据流。如上所述,实现了TSN的基于时间的PSFP机制。
本发明解决了POF不能感知转发设备实时状态的限制,使能了POF对基于时间触发机制的时间敏感网络,基于队列空间监测的主动队列管理等基于设备实时状态的流量转发机制在SDN架构下的编程支持,进一步增强了SDN交换机流量控制策略的可编程性和智能化。
实施例4
本发明的实施例4提出了一种交换机,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例2中的方法。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。