发明内容
本发明实施例的目的在于提供一种下发流表的方法及装置,以在流表空间不足时,根据数据流的信誉值来有选择的下发流表,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率。具体技术方案如下:
第一方面,本发明实施例提供了一种下发流表的方法,应用于软件定义网络SDN中的控制器,所述SDN还包括交换机,所述方法包括:
在接收所述交换机发送的包含待处理数据包的流表请求后,获得所述交换机的流表空间的当前占用大小;
当所述当前占用大小大于预设阈值且小于流表空间满值时,获得所述待处理数据包所对应数据流的信誉值;
判断所述信誉值与预设最小信誉值、预设最大信誉值的大小,若所述信誉值小于或等于预设最小信誉值,则不下发流表;若所述信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发所述待处理数据包所对应的流表;若所述信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向所述交换机下发所述待处理数据包所对应的流表。
可选的,所述预设概率标准为:
获得预设时间段内所接收到的各个流表请求中的待处理数据包的信誉值;
将所获得的多个信誉值中,位于预设最小信誉值和预设最大信誉值之间的多个信誉值做比较,针对最大信誉值对应的待处理数据包下发对应流表。
可选的,所述当所述当前占用大小大于预设阈值且小于流表空间满值时,获得所述待处理数据包所对应数据流的信誉值,具体为:
当所述当前占用大小大于预设阈值且小于流表空间满值时,从预先存储的各个数据流所对应信誉值中,查找获得所述待处理数据包所对应数据流的信誉值;
其中,各个数据流的信誉值,由以下公式计算获得:
c=(P-A)/P
其中,c为数据流的信誉值;P为该数据流的平均承诺速率;A为该数据流的实际平均速率。
可选的,所述方法还包括:
当所述当前占用大小不大于所述预设阈值时,向所述交换机下发所述待处理数据包所对应的流表。
可选的,所述方法还包括:
当所述当前占用大小等于所述流表空间满值时,不向所述交换机下发所述待处理数据包所对应的流表或通过代替流表空间中满足预设条件的流表的方式向所述交换机下发所述待处理数据包所对应的流表。
第二方面,本发明实施例还提供了一种下发流表的装置,应用于软件定义网络SDN中的控制器,所述SDN还包括交换机,所述装置包括:
流表占用空间获得模块,用于在接收所述交换机发送的包含待处理数据包的流表请求后,获得所述交换机的流表空间的当前占用大小;
信誉值获得模块,用于当所述当前占用大小大于预设阈值且小于流表空间满值时,获得所述待处理数据包所对应数据流的信誉值;
流表下发决策模块,用于判断所述信誉值与预设最小信誉值、预设最大信誉值的大小,若所述信誉值小于或等于预设最小信誉值,则不下发流表;若所述信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发所述待处理数据包所对应的流表;若所述信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向所述交换机下发所述待处理数据包所对应的流表。
可选的,所述流表下发决策模块所采用的预设概率标准为:
获得预设时间段内所接收到的各个流表请求中的待处理数据包的信誉值;
将所获得的多个信誉值中,位于预设最小信誉值和预设最大信誉值之间的多个信誉值做比较,针对最大信誉值对应的待处理数据包下发对应流表。
可选的,所述信誉值获得模块具体用于:
当所述当前占用大小大于预设阈值且小于流表空间满值时,从预先存储的各个数据流所对应信誉值中,查找获得所述待处理数据包所对应数据流的信誉值;
其中,预先存储的各个数据流的信誉值,由以下公式计算获得:
c=(P-A)/P
其中,c为数据流的信誉值;P为该数据流的平均承诺速率;A为该数据流的实际平均速率。
可选的,所述流表下发决策模块还用于:当所述当前占用大小不大于所述预设阈值时,向所述交换机下发所述待处理数据包所对应的流表。
可选的,所述流表下发决策模块还用于:当所述当前占用大小等于所述流表空间满值时,不向所述交换机下发所述待处理数据包所对应的流表或通过代替流表空间中满足预设条件的流表的方式向所述交换机下发所述待处理数据包所对应的流表。
本发明实施例中,根据数据流在网络中的属于实际特性的信誉值来决定是否下发流表,具体的,在接收所述交换机发送的包含待处理数据包的流表请求后,当所述当前占用大小大于预设阈值且小于流表空间满值时,若所述信誉值小于或等于预设最小信誉值,则不下发流表,这样可以为后面信誉值高的数据流或想被处理的数据流的流表预留一定的空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若该信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发该待处理数据包所对应的流表,可根据实际需要,来规定该范围内的哪一个或一类数据流可以被处理,从而提高重要数据流不被丢弃的概率,同时,也为更高信誉值的数据流的流表节省流表空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若所述信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向所述交换机下发所述待处理数据包所对应的流表,对于信誉值大于预设最大信誉值的数据流,不再按照信誉值大小下发流表,而是根据数据包到达的时间顺序来下发,这样可保证数据包被处理的公平性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出一种下发流表的方法及装置,以在流表空间不足时,根据数据流的信誉值来有选择的下发流表,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率,当新来的数据流,在交换机中都查不到相对应的转发规则,向控制器请求流规则时,且交换机的流表空间达到阈值时,运用本发明,使得控制器根据流表的信誉值,有选择地下发流表。
下面结合具体实施例进行说明。
先对本发明提出的一种下发流表的方法进行说明,如图2所示,图2为本发明实施例所提供的一种下发流表的方法的流程图,该方法应用于软件定义网络SDN中的控制器,该SDN还包括交换机,该方法包括:
S101、在接收交换机发送的包含待处理数据包的流表请求后,获得该交换机的流表空间的当前占用大小;
当交换机接收到待处理的数据包时,交换机均会查询自身所保存的流表,如果查询到具有与相应的数据包相匹配的流表项的流表时,则执行该流表内的动作域,即会按照该流表项中的转发规则将数据流进行转发或者丢弃。其中,交换机查询自身所保存的流表的过程与现有技术相同,由于本发明的发明点不在于此,因此,此处不做赘述。
如果没有查到具有与相应的数据包相匹配的流表项的流表,则交换机将该数据包封装成特定的消息发送给控制器请求流规则,即将数据包打包成Packet_In的形式上传到控制器中,控制器处理后下发具有与相应的数据包相匹配的流表项的流表给相应的交换机,交换机更新流表,这里所说的更新主要是指添加,当然也可以是替换。针对添加的情况,如果此时交换机流表的空间不足时,交换机将流上传控制器请求流规则,下发流表后,无法保存该流表,此时,数据包可能会被丢弃。
而本步骤中,在控制器接收所述交换机发送的包含待处理数据包的流表请求后,为了降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率,不直接下发具有与相应的数据包相匹配的流表项的流表给相应的交换机,而是先获得所述交换机的流表空间的当前占用大小。
本步骤中,是从流表空间占用模块中查询获得的交换机的流表空间的当前占用大小。
S102、当当前占用大小大于预设阈值且小于流表空间满值时,获得该待处理数据包所对应数据流的信誉值;
本发明实施例中,预先设定了预设阈值以及预先确定了各个交换机的流表空间满值,并进行保存处理,进而,当接收到流表请求后,可以依据所保存的两类值来确定待处理数据包所对应流表的下发方式。可以理解的是,预设阈值是根据具体情况设定的,主要根据对于公平性和信誉值之间的衡量设定的,如果想公平性占比例大一点,则可以设定预设阈值设的大一点,如设为置流表空间满值的三分之二;如果注重信誉值高的用户,则可以设定预设阈值设的小一点,如设置为流表空间满值的三分之一,这里的流表空间满值是交换机流表空间的属性。需要强调的是,关于预设阈值的设定可以根据实际情况进行设定,本发明实施例所给出的具体值仅仅作为示例,并不应该构成对本发明实施例的限定。
可以理解的是,当当前占用大小大于预设阈值且小于流表空间满值时,表明流表空间的空闲量不多,后续可能带来高信誉值的数据流对应的流表因流表空间不足而下发失败的问题,此时,可以获得该待处理数据包所对应数据流的信誉值。
S103、判断该信誉值与预设最小信誉值、预设最大信誉值的大小,若该信誉值小于或等于预设最小信誉值,则不下发流表;若该信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发该待处理数据包所对应的流表;若该信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向该交换机下发所述待处理数据包所对应的流表。
本步骤中,判断该信誉值与预设最小信誉值、预设最大信誉值的大小,针对不同的具体情况来决定是否下发相应的流表。另外,需要强调的是,控制器为待处理数据包确定流表的具体实现方式可以采用技术中所存在的方式。
具体的,所采用的预设概率标准可以设置成以下情况,但不限于此:
获得预设时间段内所接收到的各个流表请求中的待处理数据包的信誉值;
将所获得的多个信誉值中,位于预设最小信誉值和预设最大信誉值之间的多个信誉值做比较,针对最大信誉值对应的待处理数据包下发对应流表。
这样设置,可以保证在空间不足且信誉值都不太高或不太低的情况下,优先考虑信誉值高的,对信誉值高的数据流对应的数据包优先处理。
需要说明的是,获得该待处理数据包所对应数据流的信誉值,具体为:
从预先存储的各个数据流所对应信誉值中,查找获得所述待处理数据包所对应数据流的信誉值。
所需要处理的数据流的信誉值是预先被存储的,本实施例中,是先存储在信誉值管理模块中的,信誉值管理模块是通过在控制器维护一个数据结构,存储数据流的信誉值。
数据流的信誉值可以根据流的平均速率,带宽占用率,抖动,延迟,丢包,可用性等指标进行计算确定。
在一种实施例中,采用流的平均速率计算流的信誉值,具体的,被存储的每个预先存储的数据包所对应数据流的信誉值,由以下公式计算获得:
c=(P-A)/P
其中,c为数据流的信誉值;P为该数据流的平均承诺速率;A为该数据流的实际平均速率。
若c<0,即实际平均速率A大于承诺速率P,则信誉值为负,且实际平均速率A越大,信誉值c越小;
若c=0,即实际平均速率A等于承诺速率P,则信誉值c=0;
若c>0,即实际平均速率A小于承诺速率P,则信誉值为正,且实际平均速率A越小,信誉值c越大。
由于数据流的速度是实时变化的,不同时间段内,数据流的实际平均速率可能也是不同的,可能是任意历史预定长度的时间内的平均速率,为了保证准确性,可以采用最接近数据包到达交换机的时间最近的历史预定长度时间内的平均速度,并且通过定时更新来保证更加准确。可以每隔一定时间,重新计算信誉值,并通过更新存储的信誉值来保证信誉值的实时性,从而保证信誉值的准确性,当来一条新的数据流时,起始可以给其设定一个预设的信誉值,当经过一段时间后,在通过上述计算方法计算信誉值并更新存储的信誉值。
本发明实施例中,根据数据流在网络中的属于实际特性的信誉值来决定是否下发流表,具体的,在接收所述交换机发送的包含待处理数据包的流表请求后,当所述当前占用大小大于预设阈值且小于流表空间满值时,若所述信誉值小于或等于预设最小信誉值,则不下发流表,这样可以为后面信誉高的数据流或想被处理的数据流的流表预留一定的空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若该信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发该待处理数据包所对应的流表,可根据实际需要,来规定该范围内的哪一个或一类数据流可以被处理,从而提高重要数据流不被丢弃的概率,同时,也为更高信誉值的数据流的流表节省流表空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若所述信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向所述交换机下发所述待处理数据包所对应的流表,对于信誉值大于预设最大信誉值的数据流,不再按照信誉值大小下发流表,而是根据数据包到达的时间顺序来下发,这样可保证数据包被处理的公平性。
更进一步的,在另一实施例中,本发明实施例所提供的一种下发流表的方法还可以包括:
当当前占用大小不大于预设阈值时,向交换机下发该待处理数据包所对应的流表。
一般情况下,交换机的流表空间会定时清理,当当前占用大小不大于预设阈值时,直接向交换机下发该待处理数据包所对应的流表,处理数据包,能够保证流表空间的正常使用,一般不会出现下发的流表无法保存的情况。
更进一步的,在另一实施例中,本发明实施例所提供的一种下发流表的方法还可以包括:当当前占用大小等于所述流表空间满值时,不向所述交换机下发所述待处理数据包所对应的流表或通过代替流表空间中满足预设条件的流表的方式向所述交换机下发所述待处理数据包所对应的流表。
流表空间已满,如果直接进行添加操作,流表无法被保存,则相应的数据包会被丢弃,无法被处理,这时可以决定不下发流表,如果还想处理该数据包时,可以通过代替流表空间中满足预设条件的流表的方式向所述交换机下发所述待处理数据包所对应的流表,这样就能够保存相应的流表。这里所说的预设条件可以是该流表的使用频率是流表空间中最低的,或是一定使用频率范围内的流表中的任一个,当然还可以是其它预设条件,不限于此。
上述方法中,对于可以下发流表的数据流,通过计算等流程产生Route_Mod消息,此消息携带流表变更消息,通过创建Flow_Mod消息,Flow_Mod消息中有相应的match、action、option域,将Flow_Mod消息以Packet_out的形式发送给相应的交换机,更新流表。
相应于上述方法实施例,本发明还提出了一种下发流表的装置,应用于软件定义网络SDN中的控制器,所述SDN还包括交换机,如图3所示,该装置包括:
流表占用空间获得模块31,用于在接收交换机发送的包含待处理数据包的流表请求后,获得该交换机的流表空间的当前占用大小;
信誉值获得模块32,用于当当前占用大小大于预设阈值且小于流表空间满值时,获得待处理数据包所对应数据流的信誉值。
流表下发决策模块33,用于判断该信誉值与预设最小信誉值、预设最大信誉值的大小,若该信誉值小于或等于预设最小信誉值,则不下发流表;若该信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向该交换机下发该待处理数据包所对应的流表;若该信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向该交换机下发所述待处理数据包所对应的流表。
本发明实施例中,根据数据流在网络中的属于实际特性的信誉值来决定是否下发流表,具体的,在接收所述交换机发送的包含待处理数据包的流表请求后,当所述当前占用大小大于预设阈值且小于流表空间满值时,若所述信誉值小于或等于预设最小信誉值,则不下发流表,这样可以为后面信誉高的数据流或想被处理的数据流的流表预留一定的空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若该信誉值大于预设最小信誉值且小于预设最大信誉值,则根据预设概率标准向所述交换机下发该待处理数据包所对应的流表,可根据实际需要,来规定该范围内的哪一个或一类数据流可以被处理,从而提高重要数据流不被丢弃的概率,同时,也为更高信誉值的数据流的流表节省流表空间,从而降低高信誉值的数据流对应的流表因流表空间不足而下发失败概率;若所述信誉值大于或等于预设最大信誉值,则依据接收数据包的时间顺序,向所述交换机下发所述待处理数据包所对应的流表,对于信誉值大于预设最大信誉值的数据流,不再按照信誉值大小下发流表,而是根据数据包到达的时间顺序来下发,这样可保证数据包被处理的公平性。
具体的,在一种实现方式中,所述流表下发决策模块所采用的预设概率标准可以为:
获得预设时间段内所接收到的各个流表请求中的待处理数据包的信誉值;
将所获得的多个信誉值中,位于预设最小信誉值和预设最大信誉值之间的多个信誉值做比较,针对最大信誉值对应的待处理数据包下发对应流表。
具体的,所述信誉值获得模块32具体用于:
从预先存储的各个数据流所对应信誉值中,查找获得所述待处理数据包所对应数据流的信誉值;
其中,预先存储的各个数据流的信誉值,由以下公式计算获得:
c=(P-A)/P
其中,c为数据流的信誉值;P为该数据流的平均承诺速率;A为该数据流的实际平均速率。
更进一步的,所述流表下发决策模块33还用于:当所述当前占用大小不大于所述预设阈值时,向所述交换机下发所述待处理数据包所对应的流表。
更进一步的,所述流表下发决策模块33还用于:当所述当前占用大小等于所述流表空间满值时,不向所述交换机下发所述待处理数据包所对应的流表或通过代替流表空间中满足预设条件的流表的方式向所述交换机下发所述待处理数据包所对应的流表。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。