利索能及
我要发布
收藏
专利号: 201310135991X
申请人: 华为技术有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-09-06
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种流表转换方法,其特征在于,包括:

在控制和转发相分离的网络设备架构中,获取软件形式的多级流表中的所有的完整匹配流;

从所述所有的完整匹配流中选取待处理流;其中,所述待处理流指需要添加到所述软件形式的多级流表中的流表项或者需要在所述软件形式的多级流表中删除的流表项所在的所有的完整的匹配流;

将所述待处理流等价转换成单级流表;其中,所述单级流表是单表多域的;

构造硬件对应的硬件形式的多级流表,并确定所述硬件形式的多级流表中流表的数目和每个所述流表的匹配域类型;

为每个所述流表创建一个新流表项;

遍历所述单级流表中的每个完整匹配流的所有匹配域;

判断所述单级流表中是否有未遍历的匹配域;

若有未遍历的匹配域,则在所述硬件形式的多级流表中查找与每个所述未遍历的匹配域类型对应的流表;

根据所述未遍历的匹配域类型对应的流表获取所述未遍历的匹配域对应的流表项;

将每个所述未遍历的匹配域类型和匹配域的值插入所述未遍历的匹配域对应的新流表项中,并执行所述遍历所述单级流表中的每个所述完整匹配流的所有匹配域。

2.根据权利要求1所述的方法,其特征在于,利用N叉数表示所述软件形式的多级流表的流表项的关系,所述获取所述软件形式的多级流表中的所有的完整匹配流,包括:生成所述N叉数的根节点;其中,所述根节点为所述软件形式的多级流表的第一个流表的一个流表项;

生成所述根节点的子节点;其中,所述子节点为所述第一个流表的任一流表项跳转到指定流表且匹配域匹配成功后所得到的所有流表项;所述子节点与所述流表项具有一一对应的关系;

采用递归算法对所述根节点的所有子节点进行操作,建立所述N叉数;其中,所述N为一个正整数;

如果任一流表项含有跳转指令操作,根据所述跳转操作指令跳转到对应的流表中,未匹配到与所述任一流表项相同的匹配域,则删除所述任一流表项所代表的节点,得到更新后的二叉数;

遍历所述更新后的N叉数,得到所述更新后的N叉数的所有叶子节点;

采用递归算法查找所述所有叶子节点的父节点直到根节点,获得所述所有的完整匹配流。

3.根据权利要求2所述的方法,其特征在于,所述从所述所有的完整匹配流中选取待处理流,包括:判断所述N叉数的节点对应的流表项的匹配域与预先下发的匹配域是否相同;

如果存在某一节点对应的流表项的匹配域与所述预先下发的匹配域相同,则所述某一节点所在的完整匹配流为待处理流。

4.根据权利要求3所述的方法,其特征在于,所述将所述待处理流等价转换成所述单级流表,包括:构造一个单表多域的流表项;其中,所述流表项中包含匹配域和匹配域匹配成功后所要执行的策略;

遍历所述待处理流,将所述待处理流的所有流表项中的每一个匹配域依次填充到新构造的单表多域的流表项中;其中,所述待处理流的每个策略按顺序依次填充到所述单表多域的流表项的策略列表中。

5.根据权利要求4所述的方法,其特征在于,

所述待处理流中具有跳转命令的策略和写入命令的策略不能填充到单表多域的策略列表中;

如果某个流表项中的操作是设置某个匹配域时,而所述流表项之后有匹配所述匹配域的操作,则所述匹配域不能添加到所述流表项中。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:若没有未遍历的匹配域,则遍历所述新流表项;

判断所述新流表项中是否有未遍历的新流表项;

若所述新流表项中有未遍历的新流表项,则查找所述未遍历的新流表项的匹配域;

若所述未遍历的新流表项没有匹配域,则删除所述未遍历的新流表项,并执行所述遍历所述新流表项。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:若所述未遍历的新流表项含有匹配域,则在当前所述未遍历的新流表项中填充与所述完整匹配流中的匹配域类型相同的匹配域;

将所述填充后的新流表项插入对应的硬件形式的多级流表中,并执所述遍历所述新流表项。

8.根据权利要求6或7所述的方法,其特征在于,所述单级流表中的策略列表填充到所述硬件形式的多级流表中最后一个新流表项中。

9.根据权利要求1所述的方法,其特征在于,

所述网络设备架构中不能进行等价转换的软件形式的多级流表需要上传到软件进行处理。

10.一种流表转换装置,其特征在于,包括:

转换单元,用于在控制和转发相分离的网络设备架构中,将软件形式的多级流表等价转换成软件形式的单级流表;其中,所述单级流表是单表多域的;

拆分单元,用于根据硬件所实现的多级流表将所述单级流表拆分成对应的硬件形式的多级流表;

其中,所述转换单元包括:

获取子单元,用于获取所述软件形式的多级流表中的所有的完整匹配流;

选取子单元,用于从所述所有的完整匹配流中选取待处理流;其中,所述待处理流指需要添加到所述软件形式的多级流表中的流表项或者需要在所述软件形式的多级流表中删除的流表项所在的所有的完整的匹配流;

转换子单元,用于将所述待处理流等价转换成所述单级流表;

所述拆分单元包括:

构造子单元,用于构造所述硬件形式的多级流表,并确定所述硬件形式的多级流表中流表的数目和每个所述流表的匹配域类型;

处理子单元,用于为每个所述流表创建一个新流表项;

所述处理子单元,还用于遍历所述单级流表中的每个完整匹配流的所有匹配域;

判断子单元,用于判断所述单级流表中是否有未遍历的匹配域;

所述处理子单元,还用于若有未遍历的匹配域,则在所述硬件形式的多级流表中查找与每个所述未遍历的匹配域类型对应的流表;

所述处理子单元,还用于根据所述未遍历的匹配域类型对应的流表获取所述未遍历的匹配域对应的流表项;

所述处理子单元,还用于将每个所述未遍历的匹配域类型和匹配域的值插入所述未遍历的匹配域对应的新流表项中,并执行所述遍历所述单级流表中的每个所述完整匹配流的所有匹配域。

11.根据权利要求10所述的装置,其特征在于,利用N叉数表示所述软件形式的多级流表的流表项的关系,所述获取子单元包括:生成模块,用于生成所述N叉数的根节点;其中,所述根节点为所述软件形式的多级流表的第一个流表的一个流表项;

所述生成模块,还用于生成所述根节点的子节点;其中,所述子节点为所述第一个流表的任一流表项跳转到指定流表且匹配域匹配成功后所得到的所有流表项;所述子节点与所述流表项具有一一对应的关系;

处理模块,用于采用递归算法对所述根节点的所有子节点进行操作,建立所述N叉数;

其中,所述N为一个正整数;

删除模块,用于如果任一流表项含有跳转指令操作,根据所述跳转操作指令跳转到对应的流表中,未匹配到与所述任一流表项相同的匹配域,则删除所述任一流表项所代表的节点,得到更新后的二叉数;

所述处理模块,还用于遍历所述更新后的N叉数,得到所述更新后的N叉数的所有叶子节点;

所述处理模块,还用于采用递归算法查找所述所有叶子节点的父节点直到根节点,获得所述所有的完整匹配流。

12.根据权利要求11所述的装置,其特征在于,所述选取子单元,具体用于:判断所述N叉数的节点对应的流表项的匹配域与预先下发的匹配域是否相同;

如果存在某一节点对应的流表项的匹配域与所述预先下发的匹配域相同,则所述某一节点所在的完整匹配流为待处理流。

13.根据权利要求12所述的装置,其特征在于,所述转换子单元包括:构造模块,用于构造一个单表多域的流表项;其中,所述流表项中包含匹配域和匹配域匹配成功后所要执行的策略;

填充模块,用于遍历所述待处理流,将所述待处理流的所有流表项中的每一个匹配域依次填充到新构造的单表多域的流表项中;其中,所述待处理流的每个策略按顺序依次填充到所述单表多域的流表项的策略列表中。

14.根据权利要求13所述的装置,其特征在于,所述待处理流中具有跳转命令的策略和写入命令的策略不能填充到单表多域的策略列表中;

如果某个流表项中的操作是设置某个匹配域时,而所述流表项之后有匹配所述匹配域的操作,则所述匹配域不能添加到所述流表项中。

15.根据权利要求10所述的装置,其特征在于,所述处理子单元,还用于若没有未遍历的匹配域,则遍历所述新流表项;

所述判断子单元,还用于判断所述新流表项中是否有未遍历的新流表项;

所述处理子单元,还用于若所述新流表项中有未遍历的新流表项,则查找所述未遍历的新流表项的匹配域;

所述处理子单元,还用于若所述未遍历的新流表项没有匹配域,则删除所述未遍历的新流表项,并执行所述遍历所述新流表项。

16.根据权利要求15所述的装置,其特征在于,所述处理子单元还用于:若所述未遍历的新流表项含有匹配域,则在当前所述未遍历的新流表项中填充与所述完整匹配流中的匹配域类型相同的匹配域;

将所述填充后的新流表项插入对应的硬件形式的多级流表中,并执行所述遍历所述新流表项。

17.根据权利要求15或16所述的装置,其特征在于,所述单级流表中的策略列表填充到所述硬件形式的多级流表中最后一个新流表项中。

18.根据权利要求10所述的装置,其特征在于,所述网络设备架构中不能进行等价转换的软件形式的多级流表需要上传到软件进行处理。