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

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

Info

Publication number
CN113076137B
CN113076137B CN202110262908.XA CN202110262908A CN113076137B CN 113076137 B CN113076137 B CN 113076137B CN 202110262908 A CN202110262908 A CN 202110262908A CN 113076137 B CN113076137 B CN 113076137B
Authority
CN
China
Prior art keywords
matching
flow
source
address
searching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110262908.XA
Other languages
English (en)
Other versions
CN113076137A (zh
Inventor
郝亚男
刘长龙
李斌
潘伟涛
郑杰良
刘淑涛
刘丙亚
邢翔宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 54 Research Institute
Original Assignee
CETC 54 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 54 Research Institute filed Critical CETC 54 Research Institute
Priority to CN202110262908.XA priority Critical patent/CN113076137B/zh
Publication of CN113076137A publication Critical patent/CN113076137A/zh
Application granted granted Critical
Publication of CN113076137B publication Critical patent/CN113076137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于指令集的可编程流处理装置及方法,属于网络通信技术领域。该装置包括CPU配置模块、解析器模块、TCAM匹配模块、HASH匹配模块、BV匹配模块以及RBVE匹配模块。该装置中各级流表的查找字段都是动态可编程的,通过定制化的指令集针对不同的包处理器类型并结合考虑其功能要求,设计动作处理指令。针对不同的匹配字段采用不同的匹配查找算法,查找后执行的动作都是可编程的。每一级流表都有使能端,可根据具实际的应用情况决定是否激活该级流表,充分体现了流表级数可变、容量可变、协议无关等特点。

Description

一种基于指令集的可编程流处理装置及方法
技术领域
本发明属于网络通信技术领域,特别是指一种基于指令集的可编程流处理装置及方法。
背景技术
随着技术的不断发展,互联网已完全融入到人们的日常工作和生活中。互联网和无线通信技术的高速发展已经引导了信息化社会的到来,几乎所有事物能够相互连接,并且几乎可以从任何地方接入网络。然而,这些网络服务在为人们提供便利的同时,也对传统的互联网络架构提出了严峻的挑战。网络带宽需求的持续攀升、各种新兴网络业务的多样化需求等都向网络的功能和性能提出了更高的要求,导致网络规模和应用的需求与现有网络服务能力及环境的矛盾变得日益显著,不断发展的网络性能要求对网络设备的功能和性能提出了巨大的挑战。
随着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信息决定对应数据帧的入队情况。
总之,本发明利用了多级流表以及流水线的结构模型,解决了匹配域数量增加所带来的性能上的障碍,提供了一种更为灵活的报文查找匹配方式,能够有效地提升流表效率。

Claims (4)

1.一种基于指令集的可编程流处理装置,其特征在于,用于根据数据包头中的字段信息对数据流进行查找处理,并进行相应工作;包括以下模块:
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类表项;其中,业务流控表的作用是针对业务进行流控。
2.根据权利要求1所述的一种基于指令集的可编程流处理装置,其特征在于,所述CPU配置模块通过相应接口将指令存储到存储区,译码后将指令中包含的控制信号和操作码分别送到动作输入选择器模块和处理单元内,对流处理装置进行配置。
3.一种基于指令集的可编程流处理方法,其特征在于,包括如下步骤:
(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.根据权利要求3所述的一种基于指令集的可编程流处理方法,其特征在于,步骤(4)中整合后的数据包括:47bits指令码、3bits用户号、3bits目的网络号、3bits业务流号、10bits通道号和9bits层结束位置信息,共计75bits信息。
CN202110262908.XA 2021-03-11 2021-03-11 一种基于指令集的可编程流处理装置及方法 Active CN113076137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110262908.XA CN113076137B (zh) 2021-03-11 2021-03-11 一种基于指令集的可编程流处理装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110262908.XA CN113076137B (zh) 2021-03-11 2021-03-11 一种基于指令集的可编程流处理装置及方法

Publications (2)

Publication Number Publication Date
CN113076137A CN113076137A (zh) 2021-07-06
CN113076137B true CN113076137B (zh) 2022-02-22

Family

ID=76612433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110262908.XA Active CN113076137B (zh) 2021-03-11 2021-03-11 一种基于指令集的可编程流处理装置及方法

Country Status (1)

Country Link
CN (1) CN113076137B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114143195B (zh) * 2021-11-19 2023-05-23 烽火通信科技股份有限公司 一种数据包处理装置及方法
CN114785396B (zh) * 2022-03-09 2024-04-12 西安电子科技大学 逻辑端口配置、查找映射及流量管理方法、系统及终端

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103248573A (zh) * 2013-04-08 2013-08-14 北京天地互连信息技术有限公司 面向OpenFlow的集中管理交换机及其数据处理方法
CN103347013B (zh) * 2013-06-21 2016-02-10 北京邮电大学 一种增强可编程能力的OpenFlow网络系统和方法
US10033638B1 (en) * 2015-05-29 2018-07-24 Netronome Systems, Inc. Executing a selected sequence of instructions depending on packet type in an exact-match flow switch
US10764176B1 (en) * 2017-07-09 2020-09-01 Barefoot Networks, Inc. Compiler and hardware interactions to reuse register fields in the data plane of a network forwarding element
CN110858823B (zh) * 2018-08-24 2023-03-07 中兴通讯股份有限公司 一种数据包的分类方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN113076137A (zh) 2021-07-06

Similar Documents

Publication Publication Date Title
US10764181B2 (en) Pipelined evaluations for algorithmic forwarding route lookup
CN113076137B (zh) 一种基于指令集的可编程流处理装置及方法
CN102104541B (zh) 报头处理引擎
US6674769B1 (en) Simultaneous searching of layer 3 policy filter and policy cache in a network switch port
US8819217B2 (en) Intelligent graph walking
JP2004537921A (ja) 高速パケット転送のための方法及びシステム
US9979648B1 (en) Increasing entropy across routing table segments
US7403526B1 (en) Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
CN107547407B (zh) 报文传输方法、装置和实现装置
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN113315705B (zh) 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置
CN113157254A (zh) 基于p4语言实现的可编程硬件逻辑架构和逻辑实现方法
US7058725B2 (en) Method and apparatus to perform network routing using multiple length trie blocks
WO2008119242A1 (fr) Méthode de recherche dans un arbre multi-bit de type trie
CN107977160B (zh) 交换机存取资料的方法
CN113986560B (zh) 一种在智能网卡/DPU内实现P4与OvS逻辑复用的方法
US8331368B2 (en) Method of processing information packets and telecommunication apparatus using the same
JP2001237881A (ja) テーブル型データ検索機構及びそれを用いるパケット処理システム並びにそのテーブル型データ検索方法
CN114338529B (zh) 五元组规则匹配方法及装置
CN112416820B (zh) 一种数据包分类存储方法及系统
JP3711895B2 (ja) 検索システム及びそれに用いる検索条件cam登録方法並びにそのプログラム
Mohammadi et al. HASIL: Hardware assisted software-based IP lookup for large routing tables
CN102739551B (zh) 多存储器流水路由体系结构
CN111343096B (zh) 一种标地分离报文转发方法、设备、交换芯片和存储介质
KR100572693B1 (ko) 인터넷 프로토콜 패킷 룩업 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant