一种报文处理装置及方法与流程

文档序号:18160548发布日期:2019-07-13 09:19阅读:482来源:国知局
一种报文处理装置及方法与流程
本发明涉及一种报文信息处理技术,尤其是涉及一种报文处理装置及方法。
背景技术
:高性能、高带宽的以太网交换芯片的典型特征是每一个时钟周期都必须处理一个报文的交换。在14纳米工艺条件下,最高可以达到1.05ghz的核心频率。这个时候,采用该工艺的报文处理交换芯片的报文处理能力达到1050mpps(1050000000报文/秒)。64字节的报文处理带宽达到705gbps(705.6吉比特/秒)。在这样的设计条件下,每一个报文在流水线上的处理,只能执行一次。因此,对于复杂的报文处理流程,需要多个处理模块并发处理。鉴于当前数据中心对报文转发平面(又称数据平面,dataplane)的灵活性要求越来越高,面向软件可编程的报文转发平面设计思想被提出。但是,可编程的充分灵活性和转发性能是硬币的两面。一般的,为了保证性能,在工程可接受的开销范围内,灵活性会很低。如果让报文处理充分灵活,那么带来的是需要多个时钟周期才能完成报文处理,转发性能就急剧下降了。技术实现要素:本发明的目的在于克服现有技术的缺陷,提供一种报文处理装置及方法。为实现上述目的,本发明提出如下技术方案:一种报文处理装置,包括至少一报文编辑范围为n字节的编辑模块和至少一个报文处理计算逻辑单元,所述编辑模块包括若干个编辑器,所述报文处理计算逻辑单元配置给所述编辑器选择使用,所述编辑器中配置包括左操作数、右操作数,所述左操作数取自报文,所述报文处理计算逻辑单元中配置逻辑操作,所述编辑器将所述左操作数、右操作数根据逻辑操作进行逻辑运算后,将运算得到的数据写回报文,其中,n为大于等于1的自然数。优选地,所述编辑模块包括:m1个4比特编辑器、m2个8比特编辑器、m3个16比特编辑器和m4个32比特编辑器,其中,m1、m2、m3和m4均为大于1的自然数。优选地,所述编辑器的数据从报文处理信息上取得,所述数据至少被分类为4比特数据组、8比特数据组、16比特数据组和32比特数据组。优选地,所述左操作数、右操作数从报文处理信息中获取,或者由编辑器自身配置;所述逻辑操作从报文处理信息中获取,或者由报文处理计算逻辑单元自身配置。优选地,多个所述编辑模块串联。优选地,所述编辑器的数据的选择方式为报文头的层加相对偏移量。本发明还提出了另外一种技术方案:一种报文处理方法,所述方法包括:s1,编辑器中配置包括左操作数、右操作数,为编辑器配置使用一报文处理计算逻辑单元,报文处理计算逻辑单元中配置逻辑操作;s2,编辑器将所述左操作数、右操作数根据逻辑操作进行逻辑运算后,将运算得到的数据写回报文。本发明的有益效果是:本发明可以使得在不改变传统报文交换处理流水线的情况下,以较低的开销实现较丰富的灵活性。附图说明图1是本发明装置的原理示意图;图2是本发明方法的流程示意图;图3是本发明方法具体实施例的流程示意图。具体实施方式下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。本发明所揭示的一种报文处理装置及方法,分析了以太网数据交换的本质,通过列出部署应用下的权衡,收敛了需要支持灵活性的范围。同时,使用模块化的并行处理流水对报文进行处理,规格化每一个编辑流水处理器,从而确保高带宽芯片设计下的可行性。结合图1和图2所示,本发明所揭示的一种报文处理装置,包括至少一编辑模块和至少一报文处理计算逻辑单元,其中,编辑模块为本发明定义的编辑区(edit_zone),这个编辑模块总计具有n字节的编辑范围,如32字节,即256比特,该编辑范围的数据称作段(segment),或数据段。编辑模块包括若干个编辑器,具体可包括m1个4比特编辑器、m2个8比特编辑器、m3个16比特编辑器和m4个32比特编辑器,本实施例中,为4个4比特编辑器(nibbleeditor)、4个8比特编辑器(byteeditor)、4个16比特编辑器(wordeditor)、4个32比特编辑器(doublewordeditor)。其中,4比特编辑器可以在编辑数据段中,按照4比特为单位选择编辑位置,如在上述32字节编辑数据段中,共64个编辑位置。且4比特编辑器在对数据编辑时可以进行逐比特掩码操作,并且支持逐比特位移。举例说明:定义取出报文数据为a[3:0],待编辑数据x[3:0]的低两个比特,编辑位置期望是报文a[2:1],即将待编辑数据x的低两个比特编辑进取出报文数据的第2位和第3位,则掩码mask[3:0]可以配置为4’b0110,位移shift[1:0]配置为1。则编辑操作是:编辑后新的数据new_a[3:0]=(a[3:0]&mask[3:0])|((x[3:0]<<shift[1:0])&mask[3:0])。即将取出报文数据a与掩码进行与运算,或者将待编辑数据x左移1位后与掩码进行与运算。8比特编辑器可以在编辑数据段中,按照8比特为单位选择编辑位置,如在上述32字节编辑数据段中,共32个编辑位置。且与上述4比特编辑器一样,8比特编辑器在对数据编辑时也可以进行逐比特掩码操作,并且支持逐比特位移。同理,16比特编辑器可以在编辑数据段中,按照16比特为单位选择编辑位置,如在上述32字节编辑数据段中,共16个编辑位置。且与上述4比特和8比特编辑器不同,16比特编辑器支持由低位到高位的16个掩码类型masktype[3:0],每个掩码类型对应一掩码,采用该掩码对待编辑的数据进行mask操作。具体如下表所示:masktype[3:0]mask[15:0]016’b0000_0000_0000_0001116’b0000_0000_0000_0011216’b0000_0000_0000_0111……1516’b1111_1111_1111_111132比特编辑器不对待编辑数据进行mask操作。另外,上述nibble/byte/word/doubleword编辑器的数据可以从报文处理信息上取得,也可以由自身配置,对应不同的编辑器,这组信息可以被分类为4比特组(定义为编辑信息组0)、8比特组(定义为编辑信息组1)、16比特组(定义为编辑信息组2)和32比特组(定义为编辑信息组3)。每个组对应一信息容器(flexeditcontainer),每个组的信息设置于该信息容器内。这里的信息包括左操作数、右操作数,这里的左操作数即上述编辑器从报文中取出的待编辑的数据,右操作数为需求的对待编辑的数据进行逻辑运算的数据。左操作数和右操作数实施时可以从报文处理信息中获取,也可以由编辑器自身配置,如配置在表项或者寄存器中。报文处理计算逻辑单元(又称alu,全称是arithmeticlogicunit,算术逻辑单元),可以支持对待编辑进报文的数据进行预处理,或者对报文编辑使用计算的方式实现。报文处理计算逻辑单元可以有一个或多个,本发明实施例中设置有4个(alu#0~alu#3),每个报文处理计算逻辑单元选择分配给上述编辑器使用(nibble/byte/word/doubleword),即每个编辑器可以选择一个报文处理计算逻辑单元。报文处理计算逻辑单元中配置逻辑操作,如逻辑加/减/比较等操作。编辑器将左操作数、右操作数根据逻辑操作进行逻辑运算后,将运算得到的数据写回报文,完成报文编辑过程。下面以8比特的byteeditor编辑器为例,举例说明本发明实施例对报文的编辑过程。在报文转发处理过程中,有8bit的ttl(timetolive、生存时间)字段,需要在当前报文处理流程中减1(即逻辑操作为减,这里的1即为右操作数),结合图3所示,具体过程如下:步骤一、将1作为右操作数,配置在8比特byte编辑器的表项或者寄存器中,最后这个数字会携带在信息容器flexeditcontainer这组总线(bus)上的编辑信息组1中。步骤二、为byte编辑器配置选择使用一报文处理计算逻辑单元,如alu#0。步骤三、配置alu#0的待处理左操作数(简称左值)来自报文指定位置,使用datatypel设置1来指示;配置alu#0的待处理右值(即右操作数)来自上述flexeditcontainer的编辑信息组1,从而取得数值1。这里的datatypel配置用于指示左操作数的来源,其中,配置为1表示来自报文位置,配置为0表示来自flexeditcontainer。步骤四、配置alu#0的逻辑操作optype[1:0]为减(sub)操作。步骤五、配置数据段位置,使得报文中需要被修改的ttl的数据包含在数据段中。步骤六、配置byte编辑器编辑ttl在数据段中相对位置,比如2。这里将byte编辑器数据回写位置配置为2,也就是配置相对偏移量为2,因为ipv4报文的ttl字段在ip头的第二字节(0是起始的),当然也可根据起始值配置为其他数值。步骤七、byte编辑器根据左值datatypel得知从报文中取出8比特数据,与待处理右值1进行sub(减)操作,将运算得到的数据回填到报文的取出位置。综上,通过上述步骤一~步骤七完成了ttl(逻辑门电路)减一的操作。其他nibbleeditor/wordeditor/doublewordeditor编辑器的原理同上述byteeditor编辑器。通过上述过程,就算是在流片(tapeout,下线,指的是集成电路ic或印刷电路板pcb设计的最后步骤)前不知道的数据帧(数据报文)格式,都可以在将来通过编辑器中的配置进行正确的处理,处理方式更加的灵活。优选地,上述编辑区可以有多个,多个编辑区可以串联,如有编辑区1和2两个,编辑区1编辑后的数据可以作为编辑区2的输入数据。更优选地,在上述步骤三的数据段选择方式中,根据报文解析结果,可以将数据段的选择方式调整为报文头的层(layer)+相对偏移量,比如选择三层((layer3))作为数据段位置的基础,配置相对偏移量取得编辑位置,可以使得报文在有一个/多个vlan的时候,只需要一套配置即可取得正确的待编辑位置。更进一步地,为了简化数字逻辑设计,可以要求4组,每组4个共16个编辑器,其有效的编辑数据段互相不得重叠,这样数字逻辑可以使用并行的方式进行处理,减少处理流水线(pipeline)的级数,降低flop开销。本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1