掌桥专利:专业的专利平台
掌桥专利
首页

一种基于指令集的可编程流处理装置及方法

文献发布时间:2023-06-19 11:44:10


一种基于指令集的可编程流处理装置及方法

技术领域

本发明属于网络通信技术领域,特别是指一种基于指令集的可编程流处理装置及方法。

背景技术

随着技术的不断发展,互联网已完全融入到人们的日常工作和生活中。互联网和无线通信技术的高速发展已经引导了信息化社会的到来,几乎所有事物能够相互连接,并且几乎可以从任何地方接入网络。然而,这些网络服务在为人们提供便利的同时,也对传统的互联网络架构提出了严峻的挑战。网络带宽需求的持续攀升、各种新兴网络业务的多样化需求等都向网络的功能和性能提出了更高的要求,导致网络规模和应用的需求与现有网络服务能力及环境的矛盾变得日益显著,不断发展的网络性能要求对网络设备的功能和性能提出了巨大的挑战。

随着OpenFlow控制层面的精细化,其维护的流表中匹配字段的个数也随着协议标准的不断更新而变化。考虑OpenFlow支持不同的控制粒度,随着网络规模的增大,流表项条数将会爆炸性增长。目前,现有技术中尚缺少对这种情况的有效处理技术。

发明内容

有鉴于此,本发明提出了一种基于指令集的可编程流处理装置及方法,可以配置指令集和压缩流表,支持大容量业务流,能够解决现今业务流的规模庞大、流表匹配的灵活性差和不易扩展等问题。

为了实现上述目的,本发明采用的技术方案为:

一种基于指令集的可编程流处理装置,用于根据数据包头中的字段信息对数据流进行查找处理,并进行相应工作;包括以下模块:

CPU配置模块,用于对流处理装置进行配置;

解析器模块,用于提取数据包包头的字段信息,将提取到的字段信息送往流处理装置进行查找处理;

TCAM匹配模块,用于执行模糊匹配和最长前缀匹配方法,完成4级流水线的流表处理,实现ACL表、目的网络转发表、业务流表、流量通道表4类表项;其中,ACL表的作用是根据MAC目的地址、MAC源地址、以太网帧类型、IP源地址和IP目的地址得到指令码;目的网络转发表的作用是根据IP目的地址得到目的网络号;业务流表的作用是根据源端口号、目的端口号和以太网帧类型确定当前帧的类型,得到业务流号;流量通道表的作用是整合第2级、第4级和第6级的结果,得到通道号;

HASH匹配模块,用于执行精确匹配方法,完成2级流水线的流表处理,实现源用户流表、源用户流控表2类表项;其中,源用户流表的作用是根据源IP地址对用户号的查找;源用户流控表的作用是根据网络流量的具体需求根据源IP地址进行流控;

BV匹配模块,用于执行模糊匹配和精确匹配方法,完成1级流水线的流表处理,实现源网络流控表1类表项;其中,源网络流控表的作用是按照网络流量的具体需求,根据目的IP地址进行流控;

RBVE匹配模块,用于执行精确匹配和范围匹配方法,完成1级流水线的流表处理,实现业务流控表1类表项;其中,业务流控表的作用是针对业务进行流控。

进一步的,所述CPU配置模块通过相应接口将指令存储到存储区,译码后将指令中包含的控制信号和操作码分别送到动作输入选择器模块和处理单元内,对流处理装置进行配置。

此外,本发明还提供一种基于指令集的可编程流处理方法,包括如下步骤:

(1)解析器接收传入的数据包,根据数据包包头进行字段提取,将提取出来的字段信息整合成数据包头向量作为其输出;

(2)CPU通过与指令存储区的接口将指令存储到存储区,通过译码后将指令中包含的控制信号和操作码分别送到动作输入选择器模块和处理单元内,对流处理装置进行配置;

(3)根据指令配置的信息进行八级流表的匹配查找,将匹配得到的结果作为输出;具体方式为:

(3a)第一级匹配查找:使用TCAM三态内容寻址存储器查找ACL表,确定输入分组是否能从路由器的该接口输入;所述ACL表包括源/目的MAC地址、源/目的IP地址、帧类型;

(3b)第二级匹配查找:使用TCAM三态内容寻址存储器,在目的网络流表中查找目的网络地址,并获取网络号;

(3c)第三级匹配查找:使用BV方法在目的网络流控表中查找源网络地池,并获取流控策略;

(3d)第四级匹配查找:使用Hash方法,在源用户流表中查找源IP地址,并获取用户号;

(3e)第五级匹配查找:使用Hash方法,在源用户流控表中查找源IP地址,并获取流控策略;

(3f)第六级匹配查找:在业务流表中,通过查找源端口号、目的端口号和以太网帧类型确定业务号;其中,对于端口号,采用RBVE方法查找,端口号查找成功后再进行以太网帧类型的匹配;

(3g)第七级匹配查找:在业务流控表中查找目的端口号,并获取业务流的流控策略;

(3h)第八级匹配查找:查找流量通道表,获取数据流的转发通道;

(4)将八级流表匹配查找的输出结果整合在一起并进行缓存;对于不能通过任意一级匹配查找的帧,将其动作信息改写为丢弃:

(5)根据步骤(4)缓存的信息决定对应数据帧的入队情况。

进一步的,步骤(4)中整合后的数据包括:47bits指令码、3bits用户号、3bits目的网络号、3bits业务流号、10bits通道号和9bits层结束位置信息,共计75bits信息。

与现有技术相比,本发明的有益效果在于:

1、本发明支持支持规则表的动态更新、精确到业务流的流识别,并根据业务流来入队,支持多级流量警管,能够分别对网络、用户、业务流进行流量警管。

2、本发明至少支持OpenFlow1.5版本入端口处必选的14个字段、最大单流表规模不小于10K条规则输入输出端口数以及网络报文线速转发能力不低于100Gbps。

3、本发明通过定制化的指令集针对不同的包处理器类型并结合考虑其功能要求,设计动作处理指令。针对不同的匹配字段采用不同的匹配查找算法,查找后执行的动作都是可编程的。每一级流表都有使能端,可根据具实际的应用情况决定是否激活该级流表,充分体现了流表级数可变,容量可变,协议无关,软件可编程的特点,并且在实际硬件上也是可实现的。

附图说明

图 1 为本发明实施例中可编程的流处理装置单元结构图.

图2 为本发明实施例中流处理装置指令配置及执行过程图。

具体实施方式

下面结合附图和具体实施方式,对本发明的技术方案做进一步的详细描述。

参照图1,一种基于指令集的可编程流处理装置,其包括:CPU配置模块、解析器模块、TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)匹配模块、HASH(哈希)匹配模块、BV(Bit Vector,比特向量)匹配模块以及RBVE(Range Bit VectorEncoding,范围比特向量编码)匹配模块。CPU配置模块通过控制总线与其他模块相连、其余各模块之间通过数据总线相连、解析器模块输出与流处理装置的输入相连。其中:

CPU配置模块,主要用于对流处理装置进行配置。

解析器模块,主要用于提取数据包包头的字段信息,将提取到的关键字段信息送往流处理装置进行查找处理。

TCAM匹配模块,主要处理模糊匹配和最长前缀匹配算法,完成了4级流水线的流表处理功能,可以实现ACL表、目的网络转发表、业务流表、流量通道表4类表项。其中ACL表的作用为根据MAC目的地址、MAC源地址、以太网帧类型、IP源地址和IP目的地址得到指令码;目的网络转发表是根据IP目的地址得到目的网络号;业务流表主要实现的功能为根据源端口号、目的端口号和以太网帧类型确定当前帧的类型,得到业务流号;流量通道表的作用为整合图1中的第2级、第4级和第6级输出结果到通道号。

HASH匹配模块,主要处理精确匹配算法,完成了2级流水线的流表处理功能,可以实现源用户流表和源用户流控表2类表项。其中源用户流表是根据源IP地址对用户号的查找;源用户流控表是根据网络流量的具体需求根据源IP地址进行流控。

BV匹配模块,主要处理模糊匹配和精确匹配算法,完成了1级流水线的流表处理功能,可以实现源网络流控表1类表项。其中源网络流控表是根据网络流量的具体需求根据目的IP地址进行流控。

RBVE匹配模块,主要处理精确匹配和范围匹配算法,完成了1级流水线的流表处理功能,可以实现业务流控表1类表项。其中业务流控表的作用为针对业务进行流控。

参照图2,流处理装置指令配置及执行过程中从解析器中提取包头向量后,将提取的包头向量缓存在缓存器中。

指令存储区有两个作用:一是针对包头向量中不同的关键字段进行提取,二是针对提取到的不同字段采用不同的匹配查找算法。

Action FIFO模块缓存流水线的匹配输出结果(47bits指令码、3bits用户号、3bits目的网络号、3bits业务流号、10bits通道号和9bits层结束位置信息,共计75bits信息),以便后续模块将根据此信息决定对应数据帧的入队。

该装置中各级流表的查找字段都是动态可编程的,通过定制化的指令集针对不同的包处理器类型并结合考虑其功能要求,设计动作处理指令。针对不同的匹配字段采用不同的匹配查找算法,查找后执行的动作都是可编程的。每一级流表都有使能端,可根据具实际的应用情况决定是否激活该级流表,充分体现了流表级数可变、容量可变、协议无关等特点。

基于上述装置的流处理方法包括如下步骤:

(1)解析器接收传入的数据包,根据数据包包头进行字段提取,将提取出来的字段信息整合成数据包头向量作为其输出;

(2)CPU通过与指令存储区的接口将指令存储到存储区,通过译码后将指令中包含的控制信号和操作码分别送到动作输入选择器模块和处理单元内,对流处理装置进行配置;

(2a)定制超长指令字:定制超长指令字是针对不同字段以及不同匹配算法单元的定制指令操作部分;

(2b)指令格式:[ reserve , cntl_filed , me_id , mask , opcode , shf_cntl , shf_num ];

(2c)指令功能:cntl_filed:对应openflow1.5中的14个关键控制字段,me_id:每条流水线的匹配模块号1-8,mask:掩码值,功能为将cntl_field标识的控制字段从包头向量中裁剪下来,shf_cntl:控制移位(左移,右移,循环左移,循环右移),shf_num:移位数,右移为源码,左移为补码;

(3)根据指令配置的信息进行不同的匹配查找,将匹配得到的结果作为输出;

(3a)第一级处理ACL表,使用TCAM进行查找,确定该输入分组是否能从路由器的该接口输入。规则存储在片外TCAM中,为了节省TCAM的存储空间,减少存储字段的位宽,可以将精确匹配字段进行哈希压缩存储。本例中ACL表包括源/目的MAC地址,源/目的IP地址,帧类型;

(3b)第二级处理目的网络流表,查找目的网络地址获取网络号,使用TCAM算法查找,规则存储在片内DistRAM中;

(3c)第三级处理目的网络流控表,查找源网络地池获取流控策略,使用BV算法查找,规则存储在片内DistRAM中;

(3d)第四级处理源用户流表,查找源IP地址获取用户号,使用Hash算法查找,规则存储在片外SRAM中;

(3e)第五级处理源用户流控表,查找源IP地址获取流控策略,使用Hash算法查找,规则存储在片内BRAM中;

(3f)第六级处理业务流表,通过查找源端口号、目的端口号和以太网帧类型确定业务号,此级流表采用的算法:对于端口号的查找采用RBVE查找算法,对于端口号查找成功的规则再进行以太网帧类型的匹配,规则存储在片内BRAM中;

(3g)第七级处理业务流控表,查找目的端口号获取业务流的流控策略,规则存储在片内BRAM中;

(3h)第八级处理流量通道表,获取该数据流的转发通道,此结果是调度模块重要的输入信号。此级采用的算法是直接读出对于地址中的数据即可。本级可以存储在片外的SRAM中;

(4)动作码缓存模块处理过程。

将前面八级流表的输出结果(47bits指令码、3bits用户号、3bits目的网络号、3bits业务流号、10bits通道号和9bits层结束位置信息,共计75bits信息)等信息整合在一起,缓存在ActionFIFO中,对于不能通过任意一级流控的帧,需要将其动作信息改写为丢弃;

(5)调度模块根据该75bits信息决定对应数据帧的入队情况。

总之,本发明利用了多级流表以及流水线的结构模型,解决了匹配域数量增加所带来的性能上的障碍,提供了一种更为灵活的报文查找匹配方式,能够有效地提升流表效率。

相关技术
  • 一种基于指令集的可编程流处理装置及方法
  • 一种基于指令集的智能任务调度方法及装置
技术分类

06120113034608