一种流表置换方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种流表置换方法及装置。
背景技术
网络设备中的流表可以有多个流表项。每个流表项包括用于匹配数据包的匹配字段,以及对应的指令集。匹配字段用来匹配数据包。指令集用于描述匹配流表项的处理方式,包含处理数据包的动作。
在基于专用集成电路(英文:application-specific integrated circuit,简称:ASIC)转发芯片的流转发交换机中,通常使用内容可寻址存储器(英文:content-addressable memory,简称:CAM),例如三态内容可寻址存储器(英文:ternary content-addressable memory,简称:TCAM),中的访问控制列表(英文:access control list,简称ACL),实现流表的硬件转发。CAM中的流表可以称为硬流表。在理想情况下ASIC转发芯片的CAM资源应该充足,每个流表项都能通过硬件转发。但是ASIC转发芯片的CAM容量有限,而如果流表的规格很大,ASIC转发芯片的CAM不能满足流表的需求。
网络设备中的SDN(英文:software-defined networking,简称:SDN)控制器向流转发交换机发送流表项,流转发交换机中的中央处理器(英文:central processing unit,简称:CPU)接收到流表项后,发送给网络设备的ASIC转发芯片,ASIC转发芯片将接收到的流表项存储在CAM中。但是CAM资源有限,目前基于ASIC转发芯片的流转发交换机为了支持更大流的流表通常不会受限于有限的CAM资源,而采用CPU结合ASIC转发芯片的方式,尽可能的满足控制器的更大流的流表的需求。
在ASIC转发芯片中通常会预先配置一条所有数据包都匹配的ACL,该ACL的优先级最低。这个所有数据包都匹配的ACL对应的流表项可以被称为通配流表项。该通配流表项的指令集中处理数据包的动作为将数据包发送给CPU。流转发交换机接收SDN控制器向流转发交换机发送的流表项,SDN控制器发送的流表项有一个该SDN控制器指定的优先级。该流表项及其优先级被流转发交换机的CPU保存在CPU管理的流表中,该流表称为软流表。CPU指示ASCI转发芯片生成对应的ACL,该ACL包括其对应流表项的匹配字段和指令集。根据Openflow控制器发送的流表项生成的ACL比通配流表项的ACL的优先级高。ASIC转发芯片的CAM资源使用完毕之后,新建流表项则无法通过CAM资源转发,能够匹配该流表项的流则会匹配到通配流表项的ACL,使得能够匹配该新建流表项的流发送给CPU。从而该流由CPU进行转发处理,该过程称为软转发。
当TCAM资源耗尽时,对于新建流表采用CPU作软转发处理,而CPU能力是有限的,当软转发的流量大时,由于CPU能力不足,便会造成业务中断。而此时,在ASIC转发芯片中用作硬件加速转发的流表所占用的ACL有可能没有得到充分的利用。可能因为一些流量小的流的流表占用CAM资源,而流量大的流使用CPU做软转发,导致设备性能利用不充分。
发明内容
本发明实施例提供一种流表置换方法及装置,用以解决因为一些流量小的流的流表占用CAM资源,而流量大的流使用CPU做软转发,导致设备性能利用不充分的问题。
第一方面,本发明实施例提供了一种流表置换方法,该方法包括:
当第一类型流表项中至少一个流表项的优先级等于置换优先级时,中央处理器CPU确定优先级等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项;所述置换优先级为所有第二类型流表项中优先级最低的流表项的优先级,所述第二类型流表项为软流表中除了通配流表项外在硬件转发芯片的内容可寻址存储器中有对应流表项的流表项,所述第一类型流表项为所述软流表的所有流表项中除了所述通配流表项和所述第二类型流表项外的流表项;
所述CPU获取所述至少一个第一类型流表项的包速率,并获取所述至少一个第二类型流表项的包速率以及所述软流表的丢包率;
所述CPU根据所述至少一个第一类型流表项的包速率以及所述软流表的丢包率计算所述至少一个第一类型流表项的修正包速率;
所述CPU在满足触发条件时,将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发;
所述触发条件包括以下至少一项:
所述至少一个第一类型流表项中的一个或多个流表项的包速率低于第一速率值;
所述软流表的丢包率高于第二速率值;
所述至少一个第一类型流表项中的一个或多个流表项的修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率。
其中,所述软流表的丢包率为通配流表项的包速率与承诺访问速率CAR值的差,所述CAR值为硬件转发芯片允许发送给CPU的最大包速率。
结合第一方面,在第一方面的第一种可能的实现方式中,所述CPU将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发,包括:
对所述至少一个第一类型流表项的修正包速率和所述至少一个第二类型流表项的包速率排序,将速率最大的N个流表项转由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述CPU在确定满足触发条件之前,还包括:
分别根据获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率,所述第一类型流表项的相对速率是第一类型流表项的包速率相对于预设的第一类型流表项基数的比值;并
分别根据获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率,所述第二类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值;
所述CPU在确定满足触发条件之后,将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的至少一个第二类型流表项转由硬件转发芯片进行转发之前,包括:
根据所述至少一个第一类型流表项的修正包速率及第一类型流表项基数将所述至少一个第一类型流表项的相对速率进行转化,且经过转化后的所述至少一个第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同;
所述CPU将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发,包括:
对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的的相对速率排序,将相对速率最大的N个流表项由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,确定第一类型流表项中至少一个流表项的优先级等于置换优先级,包括:周期性的确定第一类型流表项中至少一个流表项的优先级等于置换优先级;
根据获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率,包括:
分别周期性的根据获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率;
分别根据获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率,包括:
分别周期性的根据获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率;
所述方法还包括:
将确定的所述至少一个第一类型流表项在本周期的相对速率保存在预设的第一类型流表项的权重表项中;将确定的所述至少一个第二类型流表项在本周期的相对速率保存在预设的第二类型流表项的权重表项中;
第一类型流表项的权重表项还用于保存第一类型流表项的距离本周期最近的前N个周期的相对速率,第二类型流表项的权重表项还用于保存第二类型流表项的距离本周期最近的前M个周期的相对速率,其中,M和N为正整数。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的的相对速率排序,包括:
对所述至少一个第一类型流表项的权重表项中保存的本周期和距离本周期最近的前N个周期的相对速率之和,和所述至少一个第二类型流表项的权重表项中保存的本周期和距离本周期最近的前M个周期的相对速率之和进行排序,M和N为正整数。
第二方面,本发明实施例还提供了一种流表置换装置,该装置包括:
第一确定单元,用于当确定第一类型流表项中至少一个流表项的优先级等于置换优先级时,确定优先级等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项;所述置换优先级为所有第二类型流表项中优先级最低的流表项的优先级,所述第二类型流表项为软流表中除了通配流表项外在硬件转发芯片的内容可寻址存储器中有对应流表项的流表项,所述第一类型流表项为所述软流表的所有流表项中除了所述通配流表项和所述第二类型流表项外的流表项;
获取单元,用于获取所述第一确定单元确定的所述至少一个第一类型流表项的包速率,并获取所述第一确定单元确定的所述至少一个第二类型流表项的包速率以及所述软流表的丢包率;
计算单元,用于根据所述获取单元获取所述至少一个第一类型流表项的包速率以及所述软流表的丢包率计算所述至少一个第一类型流表项的修正包速率;
处理单元,用于在所述第一确定单元确定满足触发条件时,将所述计算单元计算的所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发;
所述触发条件包括以下至少一项:
所述至少一个第一类型流表项中的一个或多个流表项的包速率低于第一速率值;
所述软流表的丢包率高于第二速率值;
所述至少一个第一类型流表项中的一个或多个流表项的修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率。
其中,所述软流表的丢包率为通配流表项的包速率与承诺访问速率CAR值的差,所述CAR值为硬件转发芯片允许发送给CPU的最大包速率。
结合第二方面,在第二方面的第一种可能的实现方式中,所述处理单元,具体用于对所述至少一个第一类型流表项的修正包速率和所述至少一个第二类型流表项的包速率排序,将速率最大的N个流表项转由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,该装置还包括:
第二确定单元,用于在所述第一确定单元确定满足触发条件之前,分别根据所述获取单元获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率,所述第一类型流表项的相对速率是第一类型流表项的包速率相对于预设的第一类型流表项基数的比值;并分别根据所述获取单元获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率,所述第二类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值;
转化单元,用于在所述第一确定单元确定满足触发条件之后,根据所述计算单元得到的所述至少一个第一类型流表项的修正包速率及第一类型流表项基数将所述至少一个第一类型流表项的相对速率进行转化,且经过转化后的所述至少一个第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同;
所述处理单元,具体用于对经过所述转化单元转化的所述至少一个第一类型流表项的相对速率和所述第二确定单元确定的所述至少一个第二类型流表项的的相对速率排序,将相对速率最大的N个流表项由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一确定单元,在确定第一类型流表项中至少一个流表项的优先级等于置换优先级时,具体用于周期性的确定第一类型流表项中至少一个流表项的优先级等于置换优先级;
所述第二确定单元,具体用于分别周期性的根据所述获取单元获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率;分别周期性的根据所述获取单元获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率;
所述装置还包括:
保存单元,用于将所述第二确定单元确定的所述至少一个第一类型流表项在本周期的相对速率保存在预设的第一类型流表项的权重表项中;将所述第二确定单元确定的所述至少一个第二类型流表项在本周期的相对速率保存在预设的第二类型流表项的权重表项中;
第一类型流表项的权重表项还用于保存第一类型流表项的距离本周期最近的前N个周期的相对速率,第二类型流表项的权重表项还用于保存第二类型流表项的距离本周期最近的前M个周期的相对速率,其中,M和N为正整数。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述处理单元,具体用于:
对所述保存单元保存在所述至少一个第一类型流表项的权重表项中的本周期和距离本周期最近的前N个周期的相对速率之和,和保存在所述至少一个第二类型流表项的权重表项中的本周期和距离本周期最近的前M个周期的相对速率之和进行排序,M和N为正整数。
利用本发明实施例提供的方案,在CPU转发能力不足时,或者在硬件转发芯片中用作硬件加速转发的流表所占用的ACL没有得到充分利用时,确定通过CPU进行转发的流表项中,流量相对小的流表项通过硬件转发芯片进行转发,使得硬件转发芯片资源得到充分利用。
附图说明
图1为本发明实施例提供的一种流表置换方法流程图;
图2为本发明实施例提供的另一种流表置换方法流程图;
图3为本发明实施例提供的一种流表置换装置示意图;
图4为本发明实施例提供的一种流表置换设备示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
本发明实施例提供一种流表置换方法及装置,用以解决因为一些流量小的流的流表占用ACL资源,而流量大的流使用CPU做软转发,导致设备性能利用不充分的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本发明实施例提供了一种流表置换方法,如图1所示,该方法包括:
步骤101,当第一类型流表项中至少一个流表项的优先级等于置换优先级时,CPU确定优先级等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项。
本发明实施例中的CPU与硬件转发芯片在同一个网络设备中。该网络设备可以是流转发交换机。
其中,所述置换优先级为所有第二类型流表项中优先级最低的流表项的优先级,所述第二类型流表项为软流表中除了通配流表项外在硬件转发芯片的内容可寻址存储器中有对应的流表项(即有一个包括该流表项的匹配字段和指令集的ACL)的软流表的流表项,所述第一类型流表项为软流表的所有流表项中除了通配流表项和第二类型流表项外的流表项。
其中,在硬件转发芯片中通常会预先配置一条所有流表项中数据包都匹配的ACL,该ACL的优先级最低。这个所有数据包都匹配的流表项可以被称为通配流表项。
硬件转发芯片可以是ASIC,或者为网络处理器(英文:network processor,简称NP),还可以为可编程逻辑器件(英文:programmable logic device,简称:PLD)或者其组合等等。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,简称:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,简称:FPGA),通用阵列逻辑(英文:generic array logic,简称:GAL)或其任意组合。
硬件转发芯片的CAM可以在该硬件转发芯片中,也可以是和该硬件转发芯片相连的独立的CAM。
步骤102,所述CPU获取所述至少一个第一类型流表项的包速率;并获取所述至少一个第二类型流表项的包速率以及所述软流表的丢包率;所述CPU根据所述第一类型流表项的包速率以及所述软流表的丢包率计算所述至少一个第一类型流表项的修正包速率。
CPU可以对匹配软流表中流表项的包计数,以得到软流表中的第一类型流表项的包速率。
具体的,CPU从所述硬件转发芯片获取所述至少一个第二类型流表项的包速率以及所述软流表的丢包率。所述软流表的丢包率具体为通配流表项的包速率与承诺访问速率(英文:Committed Access Rate,简称CAR)值的差,所述CAR值为从硬件转发芯片允许发送给CPU的最大包速率。
硬件转发芯片可以对匹配ACL中的流表项的包计数,以得到ACL中的流表项对应的第二类型流表项和通配流表项的包速率。硬件转发芯片可以针对CPU接口的丢包进行计数,因此可以直接获取到软流表的丢包率。还可以获取通配流表项的包速率,因此可以通过获取的通配流表的包速率与CAR值计算软流表的丢包率。
第一类型流表项的修正包速率为对该第一类型流表项的实际包速率的估计。第一类型流表项的实际包速率是指所述网络设备接收到的所有包中能够匹配该第一类型流表项的包的包速率。由于能够匹配第一类型流表项的包在CAM中匹配通配流表项,而能够被发送给CPU的包的总速率不能超过CAR值,超过的部分被丢弃,因此在发送给CPU的包有丢包的情况下,第一类型流表项的实际包速率一般大于CPU计数得到的包速率,因此CPU用其记数得到的包速率和软流表的丢包率估计实际包速率。
步骤103,所述CPU在满足触发条件时,将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发。
其中,所述触发条件可以包括以下至少一项:
所述至少一个第一类型流表项中的一个或多个流表项的包速率低于第一速率值;第一速率值可以设置为0,或者设置为大于0的数值。
所述软流表的丢包率高于第二速率值;第二速率值可以设置为0,或者设置为大于0的数值。
至少一个第一类型流表项中的一个或多个流表项的修正包速率大于至少一个第二类型流表项中的一个流表项的包速率。
利用本发明实施例提供的方案,在CPU转发能力不足时,或者在硬件转发芯片中用作硬件加速转发的流表所占用的ACL没有得到充分利用时,确定通过CPU进行转发的流表项中,流量相对小的流表项通过硬件转发芯片进行转发,使得硬件转发芯片资源得到充分利用。
可选的,当第一类型流表项中至少一个流表项的优先级高于置换优先级时,网络设备的CPU将所述第一类型流表项中优先级高于所述置换优先级的一个或多个流表项发送给所述网络设备的硬件转发芯片,硬件转发芯片在接收到该一个或多个流表项后,将这一个或多个流表项存储在CAM中得到对应的ACL,转发网络设备接收到的包中能够匹配ACL的包。
可选的,所述CPU将所述至少一个第一类型流表项中修正包速率大于至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由硬件转发芯片进行转发具体可以通过以下方式:
对所述至少一个第一类型流表项的修正包速率和所述至少一个第二类型流表项的的包速率排序,将速率最大的N个流表项由硬件转发芯片进行转发,其中N为所述至少一个第二类型流表项的数量。则所述至少一个第一类型流表项和至少一个第二类型的流表项中除N个以外的其他流表项则通过CPU进行转发。其中,第一类型流表项的速率是修正包速率,第二类型流表项的速率是包速率。
若速率最大的前N个流表项中既包括第一类型流表项也包括第二类型流表项,则CPU将其中的第一类型流表项发送给网络设备的硬件转发芯片,硬件转发芯片在接收到该第一类型流表项后,将该第一类型流表项存储在CAM中得到对应的ACL,转发网络设备接收到的包中能够匹配ACL的包。该第二类型流表项已经在硬件转发芯片的CAM中,因此CPU可以将第二类型流表项发送给硬件转发芯片也可以不发送给硬件转发芯片,即第二类型流表项在硬件转发芯片中的对应ACL不变。
其中,排序时,若将速率从大到小进行排序,则将排在前N个的流表项由硬件转发芯片进行转发。还可以将速率从小到大进行排序,则将排在后N个的流表项由硬件转发芯片进行转发。
在其中一个实施例中,在步骤102所述CPU获取所述至少一个第一类型流表项的包速率;并获取所述至少一个第二类型流表项的包速率以及软流表的丢包率之后,可以分别根据获取的第一类型流表项的包速率确定第一类型流表项的相对速率,并分别根据获取的第二类型流表项的包速率确定第二类型流表项的相对速率;所述第一类型流表项的相对速率是第一类型流表项的包速率相对于预设的第一类型流表项基数的比值,所述第二类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值。
其中,第一类型流表项基数和第二类型流表项基数可以是根据CAR值预设的。
CAR值可以通过CPPS表示,CPPS是CPU processed Packets Per Second的缩写。
然后根据获取到的软流表的丢包率及第一类型流表项的相对速率确定第一类型流表项的修正包速率。
根据获取到的第一类型流表项的修正包速率及第一类型流表项基数将第一类型流表项的相对速率进行转化,且经过转化后的第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同。
然后对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的相对速率排序,将相对速率最大的N个流表项由硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
其中,排序时,若将相对速率从大到小进行排序,则将排在前N个的流表项由硬件转发芯片进行转发。还可以将相对速率从小到大进行排序,则将排在后N个的流表项由硬件转发芯片进行转发。
下面结合实例对本发明实施例做具体说明。
当第一类型流表项中至少一个流表项的优先级等于置换优先级,或者第一类型流表项中至少一个流表项的优先级大于置换优先级时,均可以通过以下方式实现。
首先预设的第二类型流表项的基数可以是CPPS/4。当CPPS>=256时,预设的第一类型流表项的基数可以是CPPS/256,当CPPS小于256时,预设的第一类型流表项的基数可以是1/CPPS。本发明以预设的第一类型流表项的基数是CPPS/256为例。
具体的,可以设置置换周期。
在每个周期,分别执行,如图2所示:
步骤201,CPU确定第一类型流表项中至少一个流表项的优先级大于等于置换优先级时,获取第一类型流表项的包速率、至少一个第二类型流表项的包速率以及软流表的丢包率。
其中,CPU还确定优先级大于等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项。
步骤202,CPU分别根据获取的第一类型流表项的包速率确定第一类型流表项的相对速率,并分别根据获取的第二类型流表项的包速率确定第二类型流表项的相对速率,将确定的各个第一类型流表项在本周期的相对速率保存在预设的第一类型流表项的权重表项中;将确定的第二类型流表项在本周期的相对速率保存在预设的第二类型流表项的权重表项中。
可选地,第二类型流表项的权重表项还用于保存第二类型流表项的距离本周期最近的前M个周期的相对速率,第一类型流表项的权重表项还用于保存第一类型流表项的距离本周期最近的前N个周期的相对速率;M和N均为正整数。本发明实施例中以保存多个周期的相对速率为例。
其中,权重表项可以与流表项关联保存。
可选地,所述预设的权重表还可以用于保存优先级。本发明实施例中以还包括有优先级为例。
由于各个第一类型流表项的包速率以及各个第二类型流表项的包速率直接存储起来占用空间较大,则通过将第二类型流表项的包速率按照预设的第二类型流表项的基数转换成相对速率,第一类型流表项的包速率按照预设的第一类型流表项的基数转换成相对速率。将转换后的值分别存储在各自对应的权重表中,则能够节省存储空间。
具体的,可以通过以下方式设置权重表项。每个权重表项采用32比特(bit)表示。高16bit用于存储流表项的优先级,后16bit用于存储流表项的相对速率。
步骤203,CPU确定是否满足触发条件,若是,执行步骤204,若否,执行步骤201。
其中触发条件可以以下至少一项:
第二类型流表项中的至少一个流表项的相对速率低于第一速率阈值。
软流表的丢包率低于第二速率阈值。
步骤204,CPU根据软流表的丢包率及至少一个第一类型流表项的相对速率确定第一类型流表项的修正包速率;执行步骤205。
其中,至少一个第一类型流表项为CPU确定的至少一个第一类型流表项中优先级大于等于所述置换优先级的至少一个第一类型流表项;至少一个第二类型流表项为第二类型流表项中优先级等于所述置换优先级的至少一个第二类型流表项。
具体的,确定第一类型流表项的修正包速率可以采用如下方式:
设某一个第一类型流表项的相对速率RS值是n,软流表的丢包率值是m,以第一类型流表项的基数采用CPPS/256,第二类型流表项的基数为CPPS/4为例。则该一个第一类型流表项的实际包速率为:
S=n*(1/256)*CPPS+m*(n/256)。
针对第一类型流表项,如果有丢包,则所有第一类型流表项的包速率总和必然为1CPPS。
则每个第一类型流表项能够分摊得到的丢包率为:丢包率*该第一类型流表项的RS占所有第一类型流表项的RS之和的比例。
由于所有第一类型流表项的包速率之和为1CPPS,第一类型流表项的基数采用CPPS/256,则每个第一类型流表项能够分摊得到的丢包率为:m*(n/256)。
步骤205,CPU根据至少一个第一类型流表项的修正包速率及第一类型流表项基数将至少一个第一类型流表项的相对速率进行转化。执行步骤206。
其中,经过转化后的至少一个第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同。
根据第一类型流表项的修正包速率及第二类型流表项基数将第一类型流表项的相对速率进行转化,具体可以通过如下方式:
转换后的各个第一类型流表项的相对速率RS=S/(1/4CPPS)。其中1/4CPPS为预设置的第二类型流表项的基数。
其中第二类型流表项置换为第一类型流表项的RS转换算法为:设第二类型流表项RS为n,则转换后的第一类型流表项RS=n*64。
步骤206,CPU对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的的相对速率排序,将相对速率最大的N个流表项由硬件转发芯片进行转发。其中N为所述至少一个第一类型流表项的数量。
具体的,CPU对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的的相对速率排序,将排在前N个的流表项由硬件转发芯片进行转发,具体可以通过以下方式:
对第一类型流表项的权重表项值和第二类型流表项的权重表项值进行排序,所述第一类型流表项的权重表项值由转化后的第一类型流表项的相对速率和优先级值组成,所述第二类型流表项的权重表项值由第二类型流表项的相对速率和优先级值组成;将排在前N个的流表项由硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
其中,对第一类型流表项的权重表项值和第二类型流表项的权重表项值进行排序时,可以采用快速排序算法。当然还可以采用现有技术中提供的其它排序方式进行排序,本发明实施例在此不作具体限定。
利用以上实现方式,根据排序结果,将权重较大的流表采用硬件转发芯片的进行硬件转发。具体的,若其中某条第二类型流表项权重表项值小于某条第一类型流表项权重表项值,则需要将此第二类型流表项释放TCAM资源,并使得该条第一类型流表项获得此TCAM资源,以加速转发,则该第二类型流表项由CPU转发。
在本发明实施例中以第二类型流表项对应的权重表中保存包括本周期在内的4个周期的值。预设置的第二类型流表项的基数为1/4CPPS,如下表1所示,针对每条第二类型流表项对应的权重表采用32bit表示,高16bit用于存储流表的优先级值Pri,后16bit用于存储相对速率,则该权重表用于保存本周期及距离本周期最近的前3个周期的相对速率。每个周期占用4bit。RS-L1用于存储本周期的相对速率,RS-L2用于存储前第1个周期的相对速率,RS-L3用于存储前第2个周期的相对速率,RS-L4用于存储前第3个周期的相对速率。
表1
则在每个周期将分别根据获取的第一类型流表项的包速率确定第一类型流表项的相对速率进行存储时具体可以通过以下方式:
将存储的前4个周期相对速率向右移动4bit,即将存储在RS-L4的前第4个周期的相对速率删除,将前第3个周期相对速率存储在RS-L4中,前第2个周期的相对速率存储在RS-L3中,前第1个周期的相对速率存储在RS-L2中,然后将本周期确定的相对速率存储在RS-L1中。
则在第一类型流表项的权重表项值和第二类型流表项的权重表项值进行排序时,具体通过32bit组成权重表项值进行排序。即通过优先级值以及包括本周期在内的4个周期的相对速率值进行排序。
在本发明实施例中以第一类型流表项对应的权重表中保存包括本周期在内的2个周期的值。根据实际需要,预设值的第一类型流表项的基数为1/256CPPS,如下表2所示,针对每条第一类型流表项对应的权重表采用32bit表示,高16bit用于存储第一类型流表项的优先级值Pri,后16bit用于存储第一类型流表项的相对速率,则该权重表用于保存本周期及距离本周期最近的前1个周期的相对速率。每个周期占用8bit。RS-L1用于存储本周期的相对速率,RS-L2用于存储前1个周期的相对速率。
表2
则在每个周期分别将根据获取的各个第一类型流表项的包速率确定各个第一类型流表项的相对速率进行存储时具体可以通过以下方式:
将存储的前2个周期相对速率向右移动8bit,即将存储在RS-L2的前第2个周期的相对速率删除,将前第1个周期相对速率存储在RS-L2中,然后将本周期确定的相对速率存储在RS-L1中。
则在对第一类型流表项的权重表项值和第二类型流表项的权重表项值进行排序时,具体通过32bit组成权重表项值进行排序。即通过优先级值以及包括本周期在内的2个周期的相对速率值进行排序。
具体的,CPU对经过转化的第一类型流表项的相对速率和第二类型流表项的相对速率排序,将相对速率最大的N个流表项发送给硬件转发芯片后,第一类型流表项和第二类型流表项中除N个以外的流表项通过CPU进行转发。
通过CPU进行转发的流表项中可能包括第二类型流表项和第一类型流表项。则对应第二类型流表项的相对速率进行转化,经过转化后的第二类型流表项的相对速率与第一类型流表项的相对速率所采用的基数相同。并将转化后的相对速率保存在权重表项中。
通过硬件转发芯片进行转发的流表项中可能包括第二类型流表项和第一类型流表项。针对第一类型流表项的相对速率由于在之前排序之前已经进行了转化,则直接将转化后的分别保存在权重表项中。
若第一类型流表项的权重表中保存的相对速率的周期数,以及第二类型流表项的权重表中保存的相对速率的周期数不同,如上述具体实例。则在存储转化后第一类型流表项的相对速率时,由于第一类型流表项仅保存2个周期的相对速率,则可以将转化后的第一类型流表项存储在第二类型流表项对应的权重表的高位,转化后的本周期的相对速率存储在RS-L1对应的位置,转化后的前一个周期的相对速率存储在RS-L2的位置,其它位用0补充。例如表3。
表3
则可以将转化后的第二类型流表项的相对速率存储在第一类型流表项对应的权重表项中,转化后的本周期的相对速率存储在RS-L1对应的位置,转化后的前一个周期的相对速率存储在RS-L2的位置,其它周期的相对速率舍弃,例如表4。
表4
本发明实施例还提供了一种流表置换装置,如图3所示,该装置包括第一确定单元301,获取单元302,计算单元303以及处理单元304。
第一确定单元301,用于当确定第一类型流表项中至少一个流表项的优先级等于置换优先级时,确定优先级等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项;所述置换优先级为所有第二类型流表项中优先级最低的流表项的优先级,所述第二类型流表项为软流表中除了通配流表项外在硬件转发芯片的内容可寻址存储器中有对应流表项的流表项,所述第一类型流表项为所述软流表的所有流表项中除了所述通配流表项和所述第二类型流表项外的流表项。
获取单元302,用于获取所述第一确定单元301确定的所述至少一个第一类型流表项的包速率,并获取所述第一确定单元301确定的所述至少一个第二类型流表项的包速率以及所述软流表的丢包率。
计算单元303,用于根据所述获取单元302获取所述至少一个第一类型流表项的包速率以及所述软流表的丢包率计算所述至少一个第一类型流表项的修正包速率。
处理单元304,用于在所述第一确定单元301确定满足触发条件时,将所述计算单元303计算得到的所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项转由所述硬件转发芯片进行转发。
其中,所述触发条件可以包括以下至少一项:
所述至少一个第一类型流表项中的一个或多个流表项的包速率低于第一速率值。
所述软流表的丢包率高于第二速率值。
所述至少一个第一类型流表项中的一个或多个流表项的修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率。
在其中一个的实施例的一个场景中,所述处理单元,具体用于对所述计算单元303计算得到的所述至少一个第一类型流表项的修正包速率和所述获取单元302获取的所述至少一个第二类型流表项的的包速率排序,将速率最大的N个流表项转由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
在本发明实施例的另一个场景中,该装置还可以包括:
第二确定单元,用于在所述第一确定单元301确定满足触发条件之前,分别根据所述获取单元302获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率,所述第一类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值;并分别根据所述获取单元302获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率,所述第二类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值。
转化单元,用于在所述第一确定单元301确定满足触发条件之后,根据所述第二确定单元确定的至少一个第一类型流表项的修正包速率及第一类型流表项基数将所述至少一个第一类型流表项的相对速率进行转化,且经过转化后的所述至少一个第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同。
所述处理单元304,具体用于对经过所述转化单元转化的所述至少一个第一类型流表项的相对速率和所述第二确定单元确定的至少一个第二类型流表项的的相对速率排序,将相对速率最大的N个流表项由所述硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
在本发明实施例的又一个场景中,所述第一确定单元301,在确定第一类型流表项中至少一个流表项的优先级等于置换优先级时,具体用于周期性的确定第一类型流表项中至少一个流表项的优先级等于置换优先级。
所述第二确定单元,具体用于分别周期性的根据所述获取单元302获取的所述至少一个第一类型流表项的包速率确定所述至少一个第一类型流表项的相对速率;分别周期性的根据所述获取单元302获取的所述至少一个第二类型流表项的包速率确定所述至少一个第二类型流表项的相对速率。
所述装置还包括:
保存单元,用于将所述第二确定单元确定的所述至少一个第一类型流表项在本周期的相对速率保存在预设的第一类型流表项的权重表项中;将所述第二确定单元确定的所述至少一个第二类型流表项在本周期的相对速率保存在预设的第二类型流表项的权重表项中。
第一类型流表项的权重表项还用于保存第一类型流表项的距离本周期最近的前N个周期的相对速率,第二类型流表项的权重表项还用于保存第二类型流表项的距离本周期最近的前M个周期的相对速率,其中,M和N为正整数。
具体的,所述处理单元304具体用于:
对所述至少一个第一类型流表项的权重表项中保存的本周期和距离本周期最近的前N个周期的相对速率之和,和所述至少一个第二类型流表项的权重表项中保存的本周期和距离本周期最近的前M个周期的相对速率之和进行排序,M和N为正整数。
利用本发明实施例提供的方案,在CPU转发能力不足时,或者在硬件转发芯片中用作硬件加速转发的流表所占用的ACL没有得到充分利用时,确定通过CPU进行转发的流表项中,流量相对小的流表项通过硬件转发芯片进行转发,使得硬件转发芯片资源得到充分利用。
基于上述实施例提供的流表置换方法及装置,本发明实施例还提供一种流表置换设备,如图4所示,本发明实施例提供流表置换设备包括处理器401、存储器402、内容可寻址存储器403和硬件转发芯片404。其中,硬件转发芯片404和存储器402均与处理器401连接,硬件转发芯片404与CAM 403连接。其中,CAM403还可以设置于硬件转发芯片404内部。本发明实施例中不限定上述部件之间的具体连接介质,本发明实施例在图4中以存储器402和处理器401之间通过总线连接,总线在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限,例如硬件转发芯片405与处理器401之间可通过总线连接。
本发明实施例中硬件转发芯片404可以是NP,ASIC,PLD或其组合。上述PLD可以是CPLD,FPGA,GAL或其任意组合。
本发明实施例中CAM 403,例如可以是TCAM。本发明实施例CAM 403中存储有ACL。
本发明实施例中存储器402,用于存储处理器401执行的程序代码,可以是只读存储器(英文:read-only memory,简称:ROM),随机存取存储器(英文:random-accessmemory,简称:RAM),也可以是电可擦可编程只读存储器(英文:Electrically ErasableProgrammable Read-Only Memory,简称:EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此,例如存储器402可以是上述存储器的组合。
本发明实施例中处理器401,可以是一个通用的CPU。
处理器401,可调用存储器402存储的程序代码,根据所述程序代码执行以下操作:
当确定第一类型流表项中至少一个流表项的优先级等于置换优先级时,确定优先级等于所述置换优先级的至少一个第一类型流表项和优先级等于所述置换优先级的至少一个第二类型流表项;所述置换优先级为所有第二类型流表项中优先级最低的流表项的优先级,所述第二类型流表项为软流表中除了通配流表项外在硬件转发芯片404连接的CAM403中有对应流表项的流表项,所述第一类型流表项为所述软流表的所有流表项中除了所述通配流表项和所述第二类型流表项外的流表项。
获取所述至少一个第一类型流表项的包速率,并获取所述至少一个第二类型流表项的包速率以及所述软流表的丢包率。
处理器401可以对匹配软流表中流表项的包计数,以得到软流表中的第一类型流表项的包速率。
具体的,处理器401从所述硬件转发芯片404获取所述至少一个第二类型流表项的包速率以及所述软流表的丢包率。所述软流表的丢包率具体为通配流表项的包速率与CAR值的差,所述CAR值为从硬件转发芯片404允许发送给处理器401的最大包速率。
硬件转发芯片404可以对匹配ACL中的流表项的包计数,以得到ACL中的流表项对应的第二类型流表项和通配流表项的包速率。硬件转发芯片404可以针对处理器与硬件转发芯片所连接的接口的丢包进行计数,因此可以直接获取到软流表的丢包率。还可以获取通配流表项的包速率,因此可以通过获取的通配流表的包速率与CAR值计算软流表的丢包率。
处理器401根据所述至少一个第一类型流表项的包速率以及所述软流表的丢包率计算所述至少一个第一类型流表项的修正包速率。
处理器401在确定满足触发条件时,将所述至少一个第一类型流表项中修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率的一个或多个第一类型流表项发送给硬件转发芯片404,从而使得硬件转发芯片404在接收到该一个或者多个流表项后,将这一个或者多个流表项存储在CAM 403中得到对应的ACL,转发该置换设备接收到的包中能够匹配ACL的包。
其中,所述触发条件包括以下至少一项:
所述至少一个第一类型流表项中的一个或多个流表项的包速率低于第一速率值;
所述软流表的丢包率高于第二速率值;
所述至少一个第一类型流表项中的一个或多个流表项的修正包速率大于所述至少一个第二类型流表项中的一个流表项的包速率。
在其中一种实现方式中,处理器401对所述至少一个第一类型流表项的修正包速率和所述至少一个第二类型流表项的的包速率排序,将速率最大的N个流表项转由所述硬件转发芯片404进行转发,其中N为所述至少一个第一类型流表项的数量。
若速率最大的N个流表项中既包括第一类型流表项也包括第二类型流表项,则处理器401将其中的第一类型流表项发送给流表置换设备的硬件转发芯片404,硬件转发芯片404在接收到该第一类型流表项后,将该第一类型流表项存储在CAM403中得到对应的ACL,转发流表置换设备接收到的包中能够匹配ACL的包。该第二类型流表项已经在硬件转发芯片404连接的CAM403中,因此处理器401可以将第二类型流表项发送给硬件转发芯片404也可以不发送给硬件转发芯片404,即第二类型流表项在硬件转发芯片404中的对应ACL不变。
在其中另一个实现方式中,处理器401还用于:
获取所述至少一个第一类型流表项的包速率;并获取所述至少一个第二类型流表项的包速率以及软流表的丢包率之后,可以分别根据获取的第一类型流表项的包速率确定第一类型流表项的相对速率,并分别根据获取的第二类型流表项的包速率确定第二类型流表项的相对速率;所述第一类型流表项的相对速率是第一类型流表项的包速率相对于预设的第一类型流表项基数的比值,所述第二类型流表项的相对速率是第二类型流表项的包速率相对于预设的第二类型流表项基数的比值。
其中,第一类型流表项基数和第二类型流表项基数可以是根据CAR值预设的。
CAR值可以通过CPPS表示,CPPS是CPU processed Packets Per Second的缩写。
然后根据获取到的软流表的丢包率及第一类型流表项的相对速率确定第一类型流表项的修正包速率。
根据获取到的第一类型流表项的修正包速率及第一类型流表项基数将第一类型流表项的相对速率进行转化,且经过转化后的第一类型流表项的相对速率与第二类型流表项的相对速率所采用的基数相同。
然后对经过转化的所述至少一个第一类型流表项的相对速率和所述至少一个第二类型流表项的相对速率排序,将相对速率最大的N个流表项由硬件转发芯片进行转发,其中N为所述至少一个第一类型流表项的数量。
其中,排序时,若将相对速率从大到小进行排序,则将排在前N个的流表项由硬件转发芯片进行转发。还可以将相对速率从小到大进行排序,则将排在后N个的流表项由硬件转发芯片404进行转发。
本发明实施例提供的流表置换设备可以是网络交换机、路由器等,例如流转发交换机,本发明实施例不做限定。
利用本发明实施例提供的流表置换设备,在处理器401转发能力不足时,或者在硬件转发芯片404中用作硬件加速转发的流表所占用的ACL没有得到充分利用时,确定通过处理器401进行转发的流表项中,流量相对小的流表项,然后将确定的流量相对小的流表项通过硬件转发芯片404进行转发,使得硬件转发芯片404资源得到充分利用。
本发明实施例提供的流表置换装置和流表置换设备,可用于执行本发明实施例涉及的流表置换方法,故对于本发明实施例中流表置换装置和流表置换设备400描述不够详尽的地方,可参阅相关方法及其附图的描述,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。
本发明是参照本发明实施例的方法和设备各自的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。