查表键值构造方法、微码下发方法、装置及系统的制作方法

文档序号:7773521阅读:134来源:国知局
查表键值构造方法、微码下发方法、装置及系统的制作方法【专利摘要】本发明公开了一种查表键值构造方法、微码下发方法、装置及系统,属于分组交换领域。所述查表键值构造方法包括:在查询当前流表时运行与当前流表相对应的微码,所述微码携带有与所述当前流表对应的类型-偏移量-长度TLV;通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。【专利说明】查表键值构造方法、微码下发方法、装置及系统【
技术领域
】[0001]本发明涉及分组交换领域,特别涉及一种查表键值构造方法、微码下发方法、装置及系统。【
背景技术
】[0002]SDN(SoftwareDefinedNetworking,软件定义网络)是一种新型网络创新架构,其核心技术OpenFlow通过将网络设备的控制平面与转发平面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。[0003]在OpenFlow中的转发设备上通常包含有若干张流表,每个流表都对应有I个表号(tableID),对于到达该转发设备中的数据包都需要通过查询流表来进行数据转发。此过程主要包括:1、根据数据包的匹配域(MatchField)按照表号由小到大的顺序在各个流表中查询最高优先级匹配的流表项;2、根据查询到的流表项中所指示的行为(Action)或者行为集(ActionSet)来对该数据包进行转发、修改或丢弃处理。匹配域中记录的内容用于识别属于同一类数据流中的数据包,通常包含与到达数据包相对应的比较參数值,比如入端ロ、协议类型、来源地址和目标地址等。[0004]在传统的OpenFlow中,匹配域采用有限枚举方式表示,也即将匹配域以枚举方式列举出来,但是该种方式无法很好的支持新的报文格式。为此,产生了基于传统OpenFlow的增强设计POF(ProtocolObliviousForwarding,协议无感知转发),在POF中将所有的匹配域按照(type,offset,length)来表示,而不采用枚举方式表示,从而达到支持任意报文格式的目的。(type,offset,length)可以简称为TLV。[0005]由于在POF中匹配域按照TLV来表示,所以与传统OpenFlow中的查询流表方法相比,在POF中查询流表时需要先根据采用TLV表示的匹配域构造查表键值(searchkey),然后用查表键值在流表中查询最高优先级匹配的流表项。在构造查表键值的过程中,需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,该查询键值描述表包含若干个key,每个key都对应ー组TLV,不同的网络协议对应不同的TLV;然后,将查询到的TLV作为输入參数输入到微码中,由微码来根据该TLV构造查表键值。其中,微码是指用于实现查询流表过程的代码。[0006]显然,上述查询过程较为复杂,所需要的微码的代码量也非常冗长。【
发明内容】[0007]为了解决在POF中匹配域按照TLV来表示,导致查询流表过程中需要首先构造查表键值,而现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题,本发明实施例提供了一种查表键值构造方法、微码下发方法、装置及系统。所述技术方案如下:[0008]第一方面,本发明实施例提供了一种查表键值构造方法,用于转发平面中,所述方法包括:[0009]在查询当前流表时运行与当前流表相对应的微码,所述微码携帯有与所述当前流表对应的类型-偏移量-长度TLV;[0010]通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。[0011]在第一方面的第一种可能的实现方式中,所述通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值,包括:[0012]对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;[0013]在所述TLV为ー个时,直接将取出的所述键值构造为所述查表键值;[0014]在所述TLV为不止ー个时,将取出的不止ー个所述键值组合构造为所述查表键值。[0015]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述通过所述微码根据所述TLV取出对应的键值,包括:[0016]通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;[0017]通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;[0018]通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。[0019]结合第一方面、第一方面的第一种可能或者第二种可能的实现方式,在第三种可能的实现方式中,所述在查询当前流表时运行与当前流表相对应的微码之前,还包括:[0020]接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;[0021]保存接收到的所述微码。[0022]第二方面,本发明实施例提供了ー种微码下发方法,用于控制平面中,所述方法包括:[0023]在创建ー个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;[0024]根据所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携帯有与所述流表对应的类型-偏移量-长度TLV;[0025]将所述微码下发给转发平面。[0026]在第二方面的第一种可能的实施方式中,所述根据所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,包括:[0027]根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;[0028]将与所述流表对应的TLV生成为编译内容的一部分;[0029]根据所述编译内容编译得到所述微码。[0030]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV,包括:[0031]将所述流表的键值类型作为与所述流表对应的TLV中的类型;[0032]将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;[0033]将所述流表的键值长度作为与所述流表对应的TLV中的长度。[0034]结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述根据所述编译内容编译得到所述微码之前,还包括:[0035]获取所述流表的流表类型;[0036]根据所述流表的流表类型确定所述流表的查询逻辑;[0037]将所述查询逻辑生成为所述编译内容的一部分。[0038]结合第二方面的第一种、第二种、第三种或者第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述编译内容编译得到所述微码之前,还包括:[0039]获取所述转发平面中网络处理器类型;[0040]根据所述网络处理器类型确定对应的编译方式;[0041]所述根据所述编译内容编译得到所述微码,包括:[0042]将所述编译内容按照所述编译方式编译得到所述微码。[0043]结合第二方面、第二方面的第一种、第二种、第三种或者第四种可能的实现方式,在第六种可能的实现方式中,所述将所述微码下发给转发平面,包括:[0044]通过微码热补丁方式将所述微码下发到所述转发平面。[0045]第三方面,提供了一种查表键值构造装置,所述装置包括:[0046]微码运行模块,用于在查询当前流表时运行与当前流表相对应的微码,所述微码携带有与所述当前流表对应的类型-偏移量-长度TLV;[0047]键值构造模块,用于通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。[0048]在第三方面的第一种可能的实现方式中,所述微码运行模块,包括:[0049]键值提取单元、第一构造单元和第二构造单元;[0050]所述键值提取单元,用于对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;[0051]所述第一构造单元,用于在所述TLV为一个时,直接将所述键值提取单元取出的所述键值构造为所述查表键值;[0052]所述第二构造单元,用于在所述TLV为不止一个时,将所述键值提取单元取出的不止一个所述键值组合构造为所述查表键值。[0053]结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述键值提取单元,用于:[0054]通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;[0055]通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;[0056]通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。[0057]结合第三方面、第三方面的第一种、第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述装置,还包括:微码接收模块和微码保存模块;[0058]所述微码接收模块,用于接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;[0059]所述微码保存模块,用于保存所述微码接收模块接收到的所述微码。[0060]第四方面,提供了一种微码下发装置,所述装置包括:[0061]信息获取模块,用于在创建一个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;[0062]微码编译模块,用于根据所述信息获取模块获取到的所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携带有与所述流表对应的类型-偏移量-长度TLV;[0063]微码下发模块,用于将所述微码编译模块编译得到的微码下发给转发平面。[0064]在第四方面的第一种可能的实现方式中,所述微码编译模块,包括:[0065]TLV生成单元、内容生成单元和微码编译单元;[0066]所述TLV生成单元,用于根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;[0067]所述内容生成单元,用于将所述TLV生成单元生成的与所述流表对应的TLV生成为编译内容的一部分;[0068]所述微码编译单元,用于根据所述内容生成单元生成的编译内容编译得到所述微码。[0069]结合第四方面的第一种可能的实现方式,在第二种可能的实现方式下,所述TLV生成单元,用于:[0070]将所述流表的键值类型作为与所述流表对应的TLV中的类型;[0071]将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;[0072]将所述流表的键值长度作为与所述流表对应的TLV中的长度。[0073]结合第四方面的第一种可能的实现方式,在第三种可能的实现方式下,所述微码编译模块,还包括:第一获取单元和逻辑确定单元;[0074]所述第一获取单元,用于获取所述流表的流表类型;[0075]所述逻辑确定单元,用于根据所述类型获取单元获取到的流表的流表类型确定所述流表的查询逻辑;[0076]所述内容生成单元,还将所述逻辑确定单元确定的查询逻辑生成为所述编译内容的一部分。[0077]结合第四方面的第一种、第二种或者第三种可能的实现方式,在第四种可能的实现方式下,所述微码编译模块,还包括:第二获取单元和编译确定单元;[0078]所述第二获取单元,用于获取所述转发平面中网络处理器类型;[0079]所述编译确定单元,用于根据所述第二获取单元获取的网络处理器类型确定对应的编译方式;[0080]所述微码编译单元,用于将所述内容生成单元生成的编译内容按照所述编译确定单元确定的编译方式编译得到所述微码。[0081]结合第四方面、第四方面的第一种、第二种或者第三种可能的实现方式,在第五种可能的实现方式下,所述微码下发模块,用于通过微码热补丁方式将所述微码下发到所述转发平面。[0082]第五方面,本发明实施例提供了一种软件定义网络SDN系统,包括控制平面和转发平面;[0083]所述转发平面,包括如上第三方面或者第三方面的任一可能的实施方式所述的查表键值构造装置;[0084]所述控制平面,包括如上第四方面或者第四方面的任一可能的实施方式所述的微码下发装置。[0085]本发明实施例提供的技术方案的有益效果是:[0086]通过在查询当前流表时运行携带有TLV的微码,由该微码根据内部携带的TLV来构造查表键值;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。【专利附图】【附图说明】[0087]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0088]图1是本发明一个实施例提供的查表键值构造方法的方法流程图;[0089]图2是本发明一个实施例提供的微码下发方法的方法流程图;[0090]图3是本发明另一个实施例提供的查表键值构造方法的方法流程图;[0091]图4是本发明一个实施例提供的查表键值构造装置的结构方框图;[0092]图5是本发明另一实施例提供的查表键值构造装置的结构方框图;[0093]图6是本发明一个实施例提供的微码下发装置的结构方框图;[0094]图7是本发明另一实施例提供的微码下发装置的结构方框图;[0095]图8是本发明一个实施例提供的转发平面的结构方框图;[0096]图9是本发明一个实施例提供的控制平面的结构方框图;[0097]图10是本发明一个实施例提供的SDN系统的结构方框图。【具体实施方式】[0098]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。[0099]发明人在分析【
背景技术
】提供的在POF中构造查表键值的方法时发现,实现上述方法中的“需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,由微码来根据该TLV构造查表键值”的步骤的代码量就非常多,是导致上述微码的代码量非常冗长的主要原因。为此,提供有如下实施例:[0100]请参考图1,其示出了本发明一个实施例提供的查表键值构造方法的方法流程图。本实施例以该查表键值构造方法应用在采用POF协议的SDN系统中的转发平面来举例说明,所述方法包括:[0101]步骤102,在查询当前流表时运行与当前流表相对应的微码,微码携带有与当前流表对应的类型-偏移量-长度TLV;[0102]转发平面保存有控制平面下发的微码。特别地,该微码中携带有与当前流表相对应的TLV。其中,微码是指用于实现查询流表过程的代码。[0103]步骤104,通过微码根据与当前流表对应的类型-偏移量-长度TLV构造查表键值。[0104]转发平面通过微码根据内部携带的与当前流表对应的类型-偏移量-长度TLV构造查表键值。[0105]综上所述,本实施例提供的查表键值构造方法,通过在查询当前流表时运行携带有TLV的微码,由该微码根据内部携带的TLV来构造查表键值;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0106]请参考图2,其示出了本发明另一个实施例提供的微码下发方法的方法流程图。本实施例以该查表键值构造方法应用在采用POF协议的SDN系统中的控制平面来举例说明,该微码下发方法用于生成图1所示实施例中的微码,所述方法包括:[0107]步骤202,在创建一个新的流表后,获取流表的键值类型、键值偏移量和键值长度;[0108]控制平面在创建一个新的流表后,获取该流表的键值类型、键值偏移量和键值长度。[0109]步骤204,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,微码携带有与流表对应的类型-偏移量-长度TLV;[0110]控制平面根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,微码携带有与流表对应的类型-偏移量-长度TLV。微码是指用于实现查询流表过程的代码。[0111]步骤206,将微码下发给转发平面。[0112]控制平面将微码下发给转发平面。该微码用于在转发平面查询该流表时构造查表键值。[0113]综上所述,本实施例提供的微码下发方法,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0114]请参考图3,其示出了本发明另一实施例提供的查表键值构造方法的方法流程图。本实施例以该查表键值构造方法应用在采用POF协议的SDN系统中举例说明,所述方法包括:[0115]步骤301,控制平面在创建一个新的流表后,获取该流表的键值类型、键值偏移量和键值长度;[0116]控制平面获取到的该流表的键值类型、键值偏移量和键值长度可能不止一组。[0117]步骤302,控制平面根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有与该流表对应的类型-偏移量-长度TLV;[0118]本步骤可以包括如下子步骤:[0119]1、控制平面根据流表的键值类型、键值偏移量和键值长度生成与该流表对应的TLV;[0120]具体来讲,控制平面将该流表的键值类型作为与该流表对应的TLV中的类型type;将该流表的键值偏移量作为与该流表对应的TLV中的偏移量offset;将该流表的键值长度作为与该流表对应的TLV中的长度length。[0121]当该流表的键值类型、键值偏移量和键值不止一组时,控制平面相应地生成多组TLV。[0122]2、控制平面将与流表对应的TLV生成为编译内容的一部分;[0123]构造查表键值仅是微码的一部分功能,所以控制平面将与流表对应的TLV生成为编译内容的一部分。[0124]3、控制平面根据编译内容编译得到微码。[0125]在更为优选的实施例中,由于每个流表的流表类型可能不同,比如流表类型可以是线性表、哈希表或者TCAM(ternarycontentaddressablememory,三态内容寻址存储器)表,不同的流表可以采用不同的查询逻辑。所以,上述第3子步骤之前,还可以包括:[0126]控制平面获取该流表的流表类型;[0127]控制平面根据该流表的流表类型确定该流表的查询逻辑;[0128]控制平面将该查询逻辑也生成为编译内容的一部分。[0129]在更为优选的实施例中,由于微码是由转发平面中的网络处理器来运行,而不同的网络处理器所需要的微码不同。所以,上述第3子步骤之前,还可以包括:[0130]控制平面获取转发平面中网络处理器类型;[0131]控制平面根据网络处理器类型确定对应的编译方式。[0132]此时,上述第3子步骤可以具体为:[0133]控制平面将编译内容按照确定的编译方式编译得到微码。[0134]步骤303,控制平面将该微码下发给转发平面;[0135]优选地,控制平面通过微码热补丁方式将该微码下发到转发平面。[0136]对应地,转发平面接收控制平面下发的微码,该微码是控制平面在创建当前流表后,根据当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的。[0137]步骤304,转发平面保存接收到的微码;[0138]显然,步骤301至304可以对于不同的流表分别执行一次,使得转发平面可以保存有各自对应于不同流表的不同微码。[0139]步骤305,转发平面在查询当前流表时运行与当前流表相对应的微码,该微码携带有与当前流表对应的TLV;[0140]转发平面在查询当前流表时运行与当前流表相对应的微码,该微码携带有与当前流表对应的TLV。[0141]比如,在查询流表O时,运行与流表O对应的微码;在查询流表I时,运行与流表I对应的微码。[0142]步骤306,转发平面通过微码根据与当前流表对应的TLV构造查表键值;[0143]由于微码中携带有与当前流表对应的TLV,且与当前流表对应的TLV可能不止一个。具体来讲:[0144]1、对于与当前流表对应的每个TLV,转发平面通过微码根据该TLV取出对应的键值;[0145]转发平面通过微码根据TLV中的类型来确定键值的取值来源,取值来源为数据包的报文或者由上一流表生成的元数据metadata;转发平面通过微码根据TLV中的偏移量来确定键值的取值位置,取值位置用于指示在取值来源中的取值起始地址;转发平面通过微码从取值来源中的取值位置开始取出长度值为TLV中的长度的数据作为键值。[0146]比如,假设一个TLV为(0,64,64),具体指示了某一协议的报文中来源IP地址的位置,则微码根据TLV结合上述操作,可以从该报文中取出来源IP地址作为键值。[0147]2、在TLV为一个时,转发平面直接将取出的键值构造为查表键值;[0148]3、在TLV为不止一个时,转发平面将取出的不止一个键值组合构造为查表键值。[0149]如,在构造ACL(AccessControlList,访问控制列表)的查表键值时,需要将取出的不止一个键值组合为查表键值。[0150]步骤307,转发平面通过微码根据构造的查表键值在当前流表中执行查表操作。[0151]转发平面通过微码根据构造的查表键值在当前流表中执行查表操作。由于控制平面可以预先根据当前流表的流表类型确定相应的查询逻辑编译在微码中,微码根据该查询逻辑可以高效地在当前流表中进行查表操作。[0152]综上所述,本实施例提供的查表键值构造方法,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0153]还通过在控制平面根据流表的流表类型,将对应该流表的查询逻辑作为编译内容的一部分编译得到微码,可以使微码在查询流表时,结合流表的结构特征实现快速的查询。[0154]还通过在控制平面根据网络处理器类型,选择不同的编译方式编译得到对应该网络处理器的微码,使得本实施例可以不局限于具体的网络处理器类型,从而在采用各种网络处理器的转发设备上都可以应用的效果。[0155]请参考图4,其示出了本发明一个实施例提供的查表键值构造装置的结构方框图。该查表键值构造装置可以通过软件、硬件或者两者的结合实现成为转发平面的一部分,该转发平面是采用POF协议的SDN系统中的转发平面,该装置包括:微码运行模块420和键值构造模块440;[0156]微码运行模块420,用于在查询当前流表时运行与当前流表相对应的微码,所述微码携带有与所述当前流表对应的类型-偏移量-长度TLV;[0157]键值构造模块440,用于通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。[0158]综上所述,本实施例提供的查表键值构造装置,通过在查询当前流表时运行携带有TLV的微码,由该微码根据内部携带的TLV来构造查表键值;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0159]请参考图5,其示出了本发明另一实施例提供的查表键值构造装置的结构方框图。该查表键值构造装置可以通过软件、硬件或者两者的结合实现成为转发平面的一部分,该转发平面是采用POF协议的SDN系统中的转发平面,该装置包括:微码接收模块412、微码保存模块414、微码运行模块420和键值构造模块440;[0160]微码接收模块412,用于接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;[0161]微码保存模块414,用于保存所述微码接收模块412接收到的所述微码;[0162]微码运行模块420,用于在查询当前流表时运行与当前流表相对应的微码,所述微码携带有与所述当前流表对应的类型-偏移量-长度TLV;[0163]键值构造模块440,用于通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。[0164]优选地,所述微码运行模块420,包括:键值提取单元、第一构造单元和第二构造单元;[0165]所述键值提取单元,用于对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;[0166]所述第一构造单元,用于在所述TLV为一个时,直接将所述键值提取单元取出的所述键值构造为所述查表键值;[0167]所述第二构造单元,用于在所述TLV为不止一个时,将所述键值提取单元取出的不止一个所述键值组合构造为所述查表键值。[0168]优选地,所述键值提取单元,用于:[0169]通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;[0170]通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;[0171]通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。[0172]综上所述,本实施例提供的查表键值构造装置,通过在查询当前流表时运行携带有TLV的微码,由该微码根据内部携带的TLV来构造查表键值;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0173]请参考图6,其示出了本发明一个实施例提供的微码下发装置的结构方框图。该微码下发装置可以通过软件、硬件或者两者的结合实现成为控制平面的一部分,该控制平面是采用POF协议的SDN系统中的控制平面,所述装置包括:信息获取模块620、微码编译模块640和微码下发模块660;[0174]信息获取模块620,用于在创建一个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;[0175]微码编译模块640,用于根据信息获取模块620获取到的所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携带有与所述流表对应的类型-偏移量-长度TLV;[0176]微码下发模块660,用于将所述微码编译模块640编译得到的微码下发给转发平面。[0177]综上所述,本实施例提供的微码下发装置,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0178]请参考图7,其示出了本发明另一实施例提供的微码下发装置的结构方框图。该微码下发装置可以通过软件、硬件或者两者的结合实现成为控制平面的一部分,该控制平面是采用POF协议的SDN系统中的控制平面,所述装置包括:信息获取模块620、微码编译模块640和微码下发模块660;[0179]信息获取模块620,用于在创建一个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;[0180]微码编译模块640,用于根据所述信息获取模块620获取到的所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携带有与所述流表对应的类型-偏移量-长度TLV;[0181]微码下发模块660,用于将所述微码编译模块640编译得到的微码下发给转发平面。[0182]优选地,所述微码编译模块640,包括:TLV生成单元642、内容生成单元644和微码编译单元646;[0183]所述TLV生成单元642,用于根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;[0184]所述内容生成单元644,用于将所述TLV生成单元642生成的与所述流表对应的TLV生成为编译内容的一部分;[0185]所述微码编译单元646,用于根据所述内容生成单元644生成的编译内容编译得到所述微码。[0186]优选地,所述TLV生成单元642,用于:[0187]将所述流表的键值类型作为与所述流表对应的TLV中的类型;[0188]将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;[0189]将所述流表的键值长度作为与所述流表对应的TLV中的长度。[0190]优选地,所述微码编译模块640,还包括:第一获取单元和逻辑确定单元;[0191]所述第一获取单元,用于获取所述流表的流表类型;[0192]所述逻辑确定单元,用于根据所述类型获取单元获取到的流表的流表类型确定所述流表的查询逻辑;[0193]所述内容生成单元,还将所述逻辑确定单元确定的查询逻辑生成为所述编译内容的一部分。[0194]优选地,所述微码编译模块640,还包括:第二获取单元和编译确定单元;[0195]所述第二获取单元,用于获取所述转发平面中网络处理器类型;[0196]所述编译确定单元,用于根据所述第二获取单元获取的网络处理器类型确定对应的编译方式;[0197]所述微码编译单元,用于将所述内容生成单元生成的编译内容按照所述编译确定单元确定的编译方式编译得到所述微码。[0198]优选地,所述微码下发模块660,用于通过微码热补丁方式将所述微码下发到所述转发平面。[0199]综上所述,本实施例提供的微码下发装置,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0200]还通过根据流表的流表类型,将对应该流表的查询逻辑作为编译内容的一部分编译得到微码,可以使微码在查询流表时,结合流表的结构特征实现快速的查询。[0201]还通过根据网络处理器类型,选择不同的编译方式编译得到对应该网络处理器的微码,使得本实施例可以不局限于具体的网络处理器类型,从而在采用各种网络处理器的转发设备上都可以应用的效果。[0202]请参考图8,其示出了本发明一个实施例所提供的转发平面的结构示意图。该转发平面是采用POF协议的SDN系统中的转发平面,该转发平面包括处理器820、接收机840和存储器860。[0203]所述处理器820,用于在查询当前流表时运行存储器860中存储的与当前流表相对应的微码,所述微码携带有与所述当前流表对应的类型-偏移量-长度TLV;[0204]所述处理器820,还用于通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。[0205]在本实施例的第一种可能的实现方式中,所述处理器820,还用于:[0206]对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;[0207]在所述TLV为一个时,直接将取出的所述键值构造为所述查表键值;[0208]在所述TLV为不止一个时,将取出的不止一个所述键值组合构造为所述查表键值。[0209]结合本实施例的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器820还用于:[0210]通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;[0211]通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;[0212]通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。[0213]结合本实施例、本实施例的第一种可能或者第二种可能的实现方式,在第三种可能的实现方式中,所述处理器820还用于:[0214]控制所述接收机840接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;[0215]通过所述存储器860保存所述接收机840接收到的所述微码。[0216]综上所述,本实施例提供的转发平面,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0217]还通过在控制平面根据流表的流表类型,将对应该流表的查询逻辑作为编译内容的一部分编译得到微码,可以使微码在查询流表时,结合流表的结构特征实现快速的查询。[0218]还通过在控制平面根据网络处理器类型,选择不同的编译方式编译得到对应该网络处理器的微码,使得本实施例可以不局限于具体的网络处理器类型,从而在采用各种网络处理器的转发设备上都可以应用的效果。[0219]请参考图9,其示出了本发明一个实施例所提供的控制平面的结构示意图。该控制平面是采用POF协议的SDN系统中的控制平面,该控制平面包括处理器920、发送机940和存储器960。[0220]所述处理器920,用于在创建一个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;[0221]所述处理器920,用于根据所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携带有与所述流表对应的类型-偏移量-长度TLV;[0222]所述处理器920,用于控制所述发送机940将所述微码下发给转发平面。[0223]在本实施例的第一种可能的实施方式中,所述处理器920还用于:[0224]根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;[0225]将与所述流表对应的TLV生成为编译内容的一部分;[0226]根据所述编译内容编译得到所述微码。[0227]结合本实施例的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器920还用于:[0228]将所述流表的键值类型作为与所述流表对应的TLV中的类型;[0229]将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;[0230]将所述流表的键值长度作为与所述流表对应的TLV中的长度。[0231]结合本实施例的第一种可能的实现方式,在第三种可能的实现方式中,所述处理器920还用于:[0232]获取所述流表的流表类型;[0233]根据所述流表的流表类型确定所述流表的查询逻辑;[0234]将所述查询逻辑生成为所述编译内容的一部分。[0235]结合本实施例的第一种、第二种、第三种或者第四种可能的实现方式,在第五种可能的实现方式中,所述处理器920还用于:[0236]获取所述转发平面中网络处理器类型;[0237]根据所述网络处理器类型确定对应的编译方式;[0238]所述根据所述编译内容编译得到所述微码,包括:[0239]将所述编译内容按照所述编译方式编译得到所述微码。[0240]结合本实施例、本实施例的第一种、第二种、第三种或者第四种可能的实现方式,在第六种可能的实现方式中,所述处理器920还用于:[0241]控制所述发射机940通过微码热补丁方式将所述微码下发到所述转发平面。[0242]综上所述,本实施例提供的控制平面,通过在创建一个新的流表后,根据流表的键值类型、键值偏移量和键值长度编译得到与流表对应的微码,该微码携带有该流表对应的TLV;解决了现有的构造查表键值的过程所需要的微码的代码量非常冗长的问题;达到了转发平面根据上述微码,可以不需要根据当前要查的流表的表号查询相应的查询键值描述表以得到TLV,然后将查询到的TLV作为输入参数输入到微码中,而是直接根据微码中携带的TLV来构造查表键值,仅需要很少的代码量就可以完成查表键值的构造的效果。据试验比对,【
背景技术
】中的微码的代码量为上百行时,采用本实施例中微码实现相同功能时仅需要十几行,可以有效减少微码的代码量。[0243]还通过根据流表的流表类型,将对应该流表的查询逻辑作为编译内容的一部分编译得到微码,可以使微码在查询流表时,结合流表的结构特征实现快速的查询。[0244]还通过根据网络处理器类型,选择不同的编译方式编译得到对应该网络处理器的微码,使得本实施例可以不局限于具体的网络处理器类型,从而在采用各种网络处理器的转发设备上都可以应用的效果。[0245]请参考图10,其示出了本发明一个实施例提供的SDN系统的结构方框图,该SDN系统是采用POF协议的SDN系统,该SDN系统包括控制平面1020和转发平面1040。[0246]所述转发平面1040,包括如图4或图5实施例所提供的查表键值构造装置;或者,所述转发平面是图8所示实施例所提供的转发平面。[0247]所述控制平面1020,包括如图6或图7实施例所提供的微码下发装置;或者,所述控制平面是图9所示实施例所提供的控制平面。[0248]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0249]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0250]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。【权利要求】1.一种查表键值构造方法,用于转发平面中,其特征在于,所述方法包括:在查询当前流表时运行与当前流表相对应的微码,所述微码携帯有与所述当前流表对应的类型-偏移量-长度TLV;通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。2.根据权利要求1所述的方法,其特征在于,所述通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值,包括:对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;在所述TLV为ー个时,直接将取出的所述键值构造为所述查表键值;在所述TLV为不止ー个时,将取出的不止ー个所述键值组合构造为所述查表键值。3.根据权利要求2所述的方法,其特征在于,所述通过所述微码根据所述TLV取出对应的键值,包括:通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。4.根据权利要求1至3`任一所述的方法,其特征在于,所述在查询当前流表时运行与当前流表相对应的微码之前,还包括:接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;保存接收到的所述微码。5.ー种微码下发方法,用于控制平面中,其特征在于,所述方法包括:在创建ー个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;根据所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携帯有与所述流表对应的类型-偏移量-长度TLV;将所述微码下发给转发平面。6.根据权利要求5所述的方法,其特征在于,所述根据所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,包括:根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;将与所述流表对应的TLV生成为编译内容的一部分;根据所述编译内容编译得到所述微码。7.根据权利要求6所述的方法,其特征在于,所述根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV,包括:将所述流表的键值类型作为与所述流表对应的TLV中的类型;将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;将所述流表的键值长度作为与所述流表对应的TLV中的长度。8.根据权利要求6所述的方法,其特征在于,所述根据所述编译内容编译得到所述微码之前,还包括:获取所述流表的流表类型;根据所述流表的流表类型确定所述流表的查询逻辑;将所述查询逻辑生成为所述编译内容的一部分。9.根据权利要求6至8任一所述的方法,其特征在于,所述根据所述编译内容编译得到所述微码之前,还包括:获取所述转发平面中网络处理器类型;根据所述网络处理器类型确定对应的编译方式;所述根据所述编译内容编译得到所述微码,包括:将所述编译内容按照所述编译方式编译得到所述微码。10.根据权利要求5至8任一所述的方法,其特征在于,所述将所述微码下发给转发平面,包括:通过微码热补丁方式将所述微码下发到所述转发平面。11.一种查表键值构造装置,其特征在于,所述装置包括:微码运行模块,用于在查询当前流表时运行与当前流表相对应的微码,所述微码携帯有与所述当前流表对应的类型-偏移量-长度TLV;键值构造模块,用于通过所述微码根据与所述当前流表对应的类型-偏移量-长度TLV构造查表键值。12.根据权利要求11所述的装置,其特征在于,所述微码运行模块,包括:键值提取単元、第一构造单元和第二构造单元;所述键值提取单元,用于对于与所述当前流表对应的每个TLV,通过所述微码根据所述TLV取出对应的键值;所述第一构造单元,用于在所述TLV为ー个时,直接将所述键值提取単元取出的所述键值构造为所述查表键值;所述第二构造单元,用于在所述TLV为不止ー个时,将所述键值提取单元取出的不止一个所述键值组合构造为所述查表键值。13.根据权利要求12所述的装置,其特征在于,所述键值提取单元,用于:通过所述微码根据所述TLV中的类型来确定键值的取值来源,所述取值来源为数据包的报文或者由上一流表生成的元数据metadata;通过所述微码根据所述TLV中的偏移量来确定键值的取值位置,所述取值位置用于指示在所述取值来源中的取值起始地址;通过所述微码从所述取值来源中的所述取值位置开始取出长度值为所述TLV中的长度的数据作为所述键值。14.根据权利要求11至13任一所述的装置,其特征在于,所述装置,还包括:微码接收模块和微码保存模块;所述微码接收模块,用于接收控制平面下发的所述微码,所述微码是所述控制平面在创建所述当前流表后,根据所述当前流表的键值类型、键值偏移量、键值长度、流表类型和网络处理器类型五者中的前三种、前四种或者全部五种编译得到的;所述微码保存模块,用于保存所述微码接收模块接收到的所述微码。15.ー种微码下发装置,其特征在于,所述装置包括:信息获取模块,用于在创建一个新的流表后,获取所述流表的键值类型、键值偏移量和键值长度;微码编译模块,用于根据所述信息获取模块获取到的所述流表的键值类型、键值偏移量和键值长度编译得到与所述流表对应的微码,所述微码携帯有与所述流表对应的类型-偏移量-长度TLV;微码下发模块,用于将所述微码编译模块编译得到的微码下发给转发平面。16.根据权利要求15所述的装置,其特征在于,所述微码编译模块,包括:TLV生成単元、内容生成単元和微码编译单元;所述TLV生成単元,用于根据所述流表的键值类型、键值偏移量和键值长度生成与所述流表对应的TLV;所述内容生成単元,用于将所述TLV生成単元生成的与所述流表对应的TLV生成为编译内容的一部分;所述微码编译单元,用于根据所述内容生成単元生成的编译内容编译得到所述微码。17.根据权利要求16所述的装置,其特征在于,所述TLV生成単元,用于:将所述流表的键值类型作为与所述流表对应的TLV中的类型;将所述流表的键值偏移量作为与所述流表对应的TLV中的偏移量;将所述流表的键值长度作为与所述流表对应的TLV中的长度。18.根据权利要求16所述的装置,其特征在于,所述微码编译模块,还包括:第一获取単元和逻辑确定单元;所述第一获取单元,用于获取所述流表的流表类型;所述逻辑确定单元,用于根据所述类型获取单元获取到的流表的流表类型确定所述流表的查询逻辑;所述内容生成単元,还将所述逻辑确定单元确定的查询逻辑生成为所述编译内容的一部分。19.根据权利要求16至18任一所述的装置,其特征在于,所述微码编译模块,还包括:第二获取单元和编译确定单元;所述第二获取单元,用于获取所述转发平面中网络处理器类型;所述编译确定单元,用于根据所述第二获取单元获取的网络处理器类型确定对应的编译方式;所述微码编译单元,用于将所述内容生成単元生成的编译内容按照所述编译确定单元确定的编译方式编译得到所述微码。20.根据权利要求15至18任一所述的装置,其特征在于,所述微码下发模块,用于通过微码热补丁方式将所述微码下发到所述转发平面。21.ー种软件定义网络SDN系统,其特征在于,包括控制平面和转发平面;所述转发平面,包括如权利要求11至14任一所述的查表键值构造装置;所述控制平面,包括如权利要求15至20任一所述的微码下发装置。【文档编号】H04L12/741GK103560957SQ201310481534【公开日】2014年2月5日申请日期:2013年10月15日优先权日:2013年10月15日【发明者】张智江,高鹏,李振海,刘振肖,余舟毅申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1