网络处理器及网络数据的入栈处理方法与流程

文档序号:19320969发布日期:2019-12-04 00:31阅读:315来源:国知局
网络处理器及网络数据的入栈处理方法与流程

本发明涉及通信系统中的转发技术领域,尤其涉及一种网络处理器及网络数据的入栈处理方法。



背景技术:

网络处理器(np)是一种可编程的设备,可以在线速下实时处理网络中的数据包和数据帧,广泛用于移动通信,宽带通信,接入通信,工业控制等。网络处理器分为入栈处理器和出栈处理器两种,入栈处理器是对网络数据进行拆包,对报头信息进行拆解、分析、处理以得到最终有用信息;而出栈处理器则是将报头信息经过计算后封装在数据载荷上形成新的报文,并将报文发送出去。

网络处理器分为快通路处理器和慢通路处理器,快通路处理器完成拆包和打包的实时处理,慢通路处理器负责路由等网络控制和质量等管理。传统的快通路处理器是基于asic的设计方法,处理器速度快但是不可编程,灵活性不够高。如今的网络传输机制是复杂且分层的,比如链路层的ethernet、atm、pptp协议,网络层的ip、mpls、icmp、arp协议,传输层的tcp、udp协议等。随着网络技术的发展,更多的协议逐渐产生或者不断改进,比如用于工业以太网的ethercat、profinet实时网络协议,pon网络所使用的gfp、mpcp协议等。网络处理器能够在每个数据包上进行复杂和灵活处理的能力,具有跨层处理的能力,使得其成为当代一种合适且简单的网络设备的开发方案。

面向工业控制的实时网络协议需要被整合,ethercat、profinet等工业实时网络虽然已经在工业控制取得了巨大的市场份额,但不能互联互通,难以适应未来柔性制造的要求。新的网络处理器需要具备整合多种网络协议的能力,通过可编程性,支持多种网络协议。传统的网络处理器不能编程,只能支持电路设计时所针对的一种或几种网络协议进行处理,不具备可拓展性。通常的常用网络处理器仅针对于普通家用网络,而工业网络采用的专用硬件也只用于工业网络控制。



技术实现要素:

为了解决上述问题,本发明实施例提供一种网络处理器及网络数据的入栈处理方法。

第一方面,本发明实施例提供一种网络处理器,包括:从机、中控单元及主机。从机包括:功能单元阵列模块,用于实现网络数据包的处理,由多个功能单元构成;控制模块,用于对长指令进行解码,将解码得到的每一子指令发送至对应的功能单元,并控制每一功能单元执行子指令时的顺序;每一功能单元设有对应的配置寄存器,所述配置寄存器中存储有一套配置向量,每一配置向量中存储有对应的配置信息,所述一套配置向量对应于一种类型的网络协议,在处理器配置加载周期,每一功能单元根据所述子指令选取对应的配置向量,并读取配置信息后加载到相应的配置信息寄存器中。

第二方面,本发明实施例提供一种基于本发明第一方面网络处理器的网络数据的入栈处理方法,其特征在于,包括:控制模块对长指令进行解码,将解码后的每一子指令发送给功能阵列模块中相应的功能单元;每一功能单元从配置向量中,选取处理相应子指令的配置,并加载至配置信息寄存器中;每一功能单元根据加载后的配置,根据控制模块的控制信息,执行相应的子指令,实现对网络数据的入栈处理。

本发明实施例提供的网络处理器及网络数据的入栈处理方法,通过每一功能单元设有对应的配置寄存器,并设有一套对应的配置向量,在处理器配置加载周期,每一功能单元根据所述子指令选取对应的配置并加载到相应的配置寄存器中,具有可重构性,且各功能单元逐周期可重配。通过将专用指令集和可重构逻辑分解成两个控制维度,提高了可控性,缩减了指令长度,从而达到处理器灵活性和效率的最大化,通过指令的可重构设计,降低指令的复杂度,从而易于编程。具备整合多种网络协议的能力,通过可编程性,能够支持多种网络协议。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的网络处理器结构示意图;

图2为本发明实施例提供的网络处理器的功能单元结构示意图;

图3为本发明实施例提供的网络处理器的控制模块结构示意图;

图4为本发明实施例提供的网络处理器的功能单元阵列模块结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

新的通信技术要求更低的延迟,更广的连接,将网络控制和网络传输分开。在5g新协议中,需要使用低延迟高可靠性连接,提供面向车联网,工业控制等的广域物联网服务,这些服务要求具有极低的端到端延迟和最小的抖动,并提供极高的数据完整性保障。使用实时网络处理器可以有效降低网络传输延迟,提高网络运营能力。

随着互联网通量的增大,家用网关也需要大通量、低延迟的网络处理器来保证高质量的网络传输,以提供诸如高清视频直播等的可靠服务。

图1为本发明实施例提供的网络处理器结构示意图,图2为本发明实施例提供的网络处理器的功能单元结构示意图,如图1、图2所示,本发明实施例提供一种网络处理器,包括:从机1、中控单元2及主机3。

本实施例中,从机1包括:功能单元阵列模块11,用于实现网络数据包的处理,由多个功能单元111构成;控制模块12,用于对总指令进行解码,将解码得到的每一子指令发送至对应的功能单元111,并控制每一功能单元111执行子指令时的顺序。

每一功能单元111设有对应的配置寄存器112,配置寄存器112中存储有一套配置向量113,每一配置向量中存储有对应的配置信息,一套配置向量对应于一种类型的网络协议,在处理器配置加载周期,每一功能单元根据子指令选取对应的配置向量,并读取配置信息后加载到相应的配置信息寄存器中。

需要说明的是,实现同一功能的功能单元可设置多个,从而实现并行处理。

具体地,主机3为成帧模块,用于实时对报文进行封装并发送。中控单元2用于协同控制入栈和出栈两部分的程序流和数据流的实时运行管理工作。从机1为拆包模块,用于对网络协议报文进行接收、分析、修改等处理,以实现处理网络报文数据的功能。

控制模块12用于根据对长指令解析后得到的子指令,控制各个功能单元111的执行顺序,以及配置信息的加载等。相应地,从机1还包括对应的存储模块13,存储模块13用于存储配置信息、处理器的指令及数据载荷。

为了实现功能单元的逐周期可重配,在每个功能单元111内有一套配置向量113,通过配置寄存器112存储。例如,某一功能单元有8个配置向量,与配置参数0~7所映射的地址相对应,配置参数0~7所映射的每个配置向量存储功能模块所需的配置信息。在处理器配置加载周期根据子指令选取对应的配置向量,例如,操作指令中的参数,对应地址为0,则选取的是地址号为0的配置向量,从相应的配置向量中读取配置信息后,加载到功能单元111对应的的配置信息寄存器中。配置信息寄存器,用于功能单元111执行对应操作指令时,提供从配置向量读取到的配置信息。

本实施例中,每条子指令都选择一个功能单元111完成本次操作的配置向量的加载,并按照从配置向量中选取的配置信息的解码逻辑完成操作。

本实施例中的网络处理器,指令集是可重构的,不需要在每个时钟都要重新设置,具体功能由可重构的信息控制。可重构信息不是集成在指令里,而是在初始化阶段集成在已完成配置的功能单元111的配置寄存器112内,从而减少了指令长度。将每条指令需要可控和变化的控制部分设置到指令中,将相对稳定的控制部分设置到可重构的配置寄存器112内,通过将专用指令集和可重构逻辑分解成两个控制维度,提高了可控性,缩减了指令长度,并将专用指令集和可重构逻辑结合起来。

本实施例提供的网络处理器,通过每一功能单元设有对应的配置寄存器,并设有一套对应的配置向量,在处理器配置加载周期,每一功能单元根据所述子指令选取对应的配置向量,并读取配置信息后加载到相应的配置信息寄存器中,具有可重构性,且各功能单元逐周期可重配。通过将专用指令集和可重构逻辑分解成两个控制维度,提高了可控性,缩减了指令长度,从而达到处理器灵活性和效率的最大化,通过指令的可重构设计,降低指令的复杂度,从而易于编程。具备整合多种网络协议的能力,通过可编程性,能够支持多种网络协议。

基于上述实施例的内容,作为一种可选实施例,该网络处理器采用多指令单字(misd)和超长指令字(vliw)架构,相应地,长指令为超长指令字指令。

具体地,本实施例采用超长指令字,实现有效的并行处理。采用misd架构,多个指令流控制一个数据流,该架构在处理复杂无规律信息时具有高效性。该网络处理器采用的多指令单字和超长指令字架构,一条超长指令同时载有多至功能模块个数的子指令个数,并完成所有子指令的并行执行,从而增加网络处理器的执行效率。

基于上述实施例的内容,作为一种可选实施例,所述网络处理器还包括:配置存储器,用于在所述网络处理器初始化时,向每一功能单元的配置寄存器写入与网络协议类型对应的配置向量。

针对每种类型的网络协议,配置存储器中存储有对应的一套配置信息,可存储多套配置信息。例如,针对家用网络协议存储一套配置信息,针对工业网络协议存储一套配置信息。在处理器初始化时,如启动处理器时,以配置向量的形式,将配置存储器中存储的与该类型网络协议对应的配置信息,写入每一功能单元的配置寄存器中。本实施例的网络处理器,可针对每种类型的网络协议,实现不同的配置向量的配置,通过编程支持多种网络协议。

基于上述实施例的内容,作为一种可选实施例,图3为本发明实施例提供的网络处理器的控制模块结构示意图,参见图3,控制模块12包括:程序计数器单元121,用于根据程序目标地址,生成pc指针;指令译码器122,用于对总指令进行解码,转换为与每一功能单元对应的子指令;内存读写控制器123,用于控制存储载荷的数据存储器的读写操作;外部管理总线124,用于管理内部功能单元的配置向量。

具体地,本实施例中储藏模块13由数据存储器131、配置存储器132及指令存储器133构成,数据存储器131用于存储数据载荷,供慢通路或者软件操作使用,配置存储器132用于储存配置信息,指令存储器133用于存储处理器的指令。

程序计数器单元(pcu)121,其主要用来运行程序计数状态机(pcfsm),对不同类型的程序目标地址pc(programcounter,cpu中用于存放下一条指令地址的寄存器)跳转请求进行仲裁,生成下一个pc指针,并输出到程序内存获取下一条指令。

指令译码器(decoder)122,对超长指令字进行解码,将超长的指令快速转译为子指令各个对应模块的使能信号和控制信号,并行执行,节省时间开销。

内存读写控制器(parallelaccesscontroller)123用于控制存储载荷的数据存储器的读写操作。

外部管理总线(configurationbus)124用于管理内部功能单元配置向量。外部管理总线124由配置存储器132或者外部主处理器进行控制,管理内部功能单元配置向量,实现处理器的外部可控。

基于上述实施例的内容,作为一种可选实施例,控制模块还包括:流水线顺序管理器125,用于根据每一子指令,向各功能单元发出顺序的处理周期使能信号,以控制每个功能单元的执行顺序。

流水线顺序管理器125(cyclemanager)通过子指令协同功能单元自身逻辑控制,流水线顺序控制器125控制协调每个功能单元的执行顺序。在本实施例中,微操作不是由长指令直接控制,而是通过子指令协同功能单元自身逻辑控制,流水线顺序控制器125控制协调每个功能单元的执行顺序。由于很多功能单元需要共同操作,只靠指令选择和时钟依然不能让它们紧密配合完成整个处理器的逻辑,所以通过流水线顺序控制器125向各功能单元统一发出顺序的处理周期使能信号,从而使每个功能单元可以优化协调工作执行顺序。

基于上述实施例的内容,作为一种可选实施例,图4为本发明实施例提供的网络处理器的功能单元阵列模块结构示意图,参见图4,该网络处理器还包括接口转发逻辑模块14,与物理接口连接,用于适配异步时钟域。可采用极小的先入先出缓存,以适配异步时钟域。

基于上述实施例的内容,作为一种可选实施例,接口转发逻辑模块14采用多于两级管道的先进先出异步(简称异步fifo)寄存器对数据流进行处理,且每一管道的数据宽度乘以系统时钟大于入口比特率。

具体地,在对协议数据流实时处理时,接口转发逻辑模块采用多于两级管道的先进先出异步寄存器,并保证每个管道的数据宽度乘以系统时钟大于入口比特率。由于使用异步fifo缓存多步fifo数据,因此提供了时延为数据宽度时间的超低延迟,且没有传输抖动。fifo寄存器替代了传统的缓存机制,实现了网络数据的无缓存硬实时处理。

基于上述实施例的内容,作为一种可选实施例,参见图4,功能单元阵列模11包括:

fetch功能单元102,用于从数据总线读取数据,并分发到其它功能单元或者内存。还可用于可以对输入的数据进行及网络数据的入栈处理方法选择、逻辑移位功能。

match功能单元101,用于对网络中数据进行多字节比较,match模块可以实现最长8字节的数据比较,可以一次覆盖大部分协议的标签长度。

calc功能单元104,用于对网络数据进行基本alu操作。calc模块可以对输入的网络数据同时进行移及网络数据的入栈处理方法、算数、比较运算,以及地址计算。

modify功能单元108,用于对网络数据进行提取,写入和修改操作。modify模块是fetch模块的反向模块,其从内存提取数据,实现位精确的网络数据写回写入及修改操作。

decide功能单元107,用于对网络数据进行搜索并实现跳转。decide单元用于输出pc值的程序跳转,本实施例中网络处理器的decide指令可以同时对16个条目进行比较,从而可以满足大多数入门级路由的需求。

repeat功能单元105,用于提取载荷,以及重复执行当前指令的操作。主要为重复输出当前的指令,用来控制其它模块的操作。repeat功能单元105还可以改变处理器触发频率,进入二周期模式,还可以作为计数器,配合modify,fetch来完成对数据载荷的读写。

checksum功能单元106,用于对数据进行checksum计算。例如,对数据进行checksum多字节二进制反码并行加速计算,采用校验和算法,对ipv4和udp包头进行校验和验证。

crc功能单元103,用于对数据进行crc计算。crc功能单元进行数据帧正确性的校验,应用于整个第二层以上的以太网数据。

基于上述实施例的内容,作为一种可选实施例,功能单元还包括:

fmmu功能单元109,用于使用现场存储管理单元寻址并读写数据。其实现逻辑地址和物理地址转换,并可以进行位精确的数据传输。

sync功能单元110,用于使用同步管理器进行寻址并读写数据。可通过sync单元来实现对于内存和网络数据的访问。

基于上述实施例的内容,作为可选实施例,本实施例中同作用的功能单元可设置多个,以加快并行处理。

其中,fetch功能单元102、match功能单元101、calc功能单元104、decide功能单元107、modify功能单元108、repeat功能单元105、crc功能单元103、及checksum106功能单元可作为家用网络包头处理的指令,通过编程支持常规家庭网络协议。为了支持ethercat,增加fmmu功能单元109与sync功能单元110用于寻址的专用功能单元。

具体实施过程中,每一个网络协议进行作业分析,将各个功能单元按照作业分析得到的并行度的需求,按执行顺序安排到处理器的数据通道,并通过互联构成协议处理数据通道硬件,通过功能单元之间的互联,实现网络处理的复杂功能。每个功能单元由至少一条对应的指令进行控制,每条指令都选择一个功能单元完成配置本次操作的控制向量加载并按照其向量的解码逻辑完成操作。

本实施例中的网络处理器,进一步设置上述各功能单元,具有更强的可编程性,可实现对于网络数据包的加速处理。上述功能单元,可以覆盖ipv4、ipv6、udp、arp、ethernet及ethercat,并可拓展支持目前存在的大多数网络协议,具备整合多种网络协议的能力,通过可编程性,支持多种网络协议。

基于上述实施例的内容,作为一种可选实施例,网络处理器中存储有指令集,所述指令集中包括:fetch指令,用于从数据总线读取数据,并分发到相应功能单元或者内存;match指令,用于对网络数据进行多字节比较;calc指令,用于对网络数据进行基本alu操作;modify指令,用于对网络数据进行提取、写入及修改操作;decide指令,用于对网络数据进行搜索并实现跳转;repeat指令,用于提取载荷,以及重复执行当前指令的操作;checksum指令,用于对数据进行checksum计算;crc指令,用于对数据进行crc计算。

通用的网络处理的指令集基于gpp的微操作,由加、减、乘、逻辑、比特操作、数据搬移、和控制,单指令包含微操作相对少,指令利用率低,需要多种和多条指令实现一个简单的协议操作功能;而基于asic的指令过于固化,只能处理电路设计过程覆盖的几种网络协议,不具备可编程性、通过重构驱动实现有限的可扩展性。本实施例中,网络处理器中存储有上述指令,可与上述每一功能单元设置对应的指令。

match指令,用于对网络中数据进行多字节比较,match模块可以实现最长8字节的数据比较,可以一次覆盖大部分协议的标签长度。

calc指令,用于对网络数据进行基本alu操作。calc模块可以对输入的网络数据同时进行移及网络数据的入栈处理方法、算数、比较运算,以及地址计算。

modify指令,用于对网络数据进行提取、写入及修改操作。modify模块是fetch模块的反向模块,其从内存提取数据,实现位精确的网络数据写回写入、及修改操作。

decide指令,用于对网络数据进行搜索并实现跳转。decide单元用于输出pc值的程序跳转,本实施例中网络处理器的decide指令可以同时对16个条目进行比较,从而可以满足大多数入门级路由的需求。

repeat指令,用于提取载荷,以及重复执行当前指令的操作。repeat指令还可以改变处理器触发频率,进入二周期模式,还可以作为计数器,配合modify,fetch来完成对数据载荷的读写。

checksum指令,用于对数据进行checksum计算。例如,对数据进行checksum多字节二进制反码并行加速计算,采用校验和算法,对ipv4和udp包头进行校验和验证。

crc指令,用于对数据进行crc计算。crc功能单元进行数据帧正确性的校验,应用于整个第二层以上的以太网数据。

上述8条指令集可覆盖家用网络报文处理的完整功能。基于上述实施例的内容,作为一种可选实施例,存储的指令集还包括,用于支持ethercat协议的:fmmu指令,用于使用现场存储管理单元寻址并读写数据;sync指令,用于使用同步管理器进行寻址并读写数据。为了支持ethercat,增加fmmu指令与sync指令,用于寻址的专用功能单元。fmmu指令,实现逻辑地址和物理地址转换,并可以进行位精确的数据传输,sync指令可调用通过sync指令单元来实现对于内存和网络数据的访问。上述2条指令用于支持ethercat协议。

基于上述实施例的内容,作为一种可选实施例,指令集还包括:frame指令,用于控制网络处理器数据帧操作阶段的系统指令,并指示据帧操作结束;bytes指令,用于字节的大端模式、小端模式的整合与分解之间的转换。

本实施例中,还设有两条专门用于处理器自身管理的系统指令:frame和bytes。frame指令,用于控制网络处理器数据帧操作阶段的系统指令,并指示数据帧操作结束;bytes指令,用于字节的大端模式、小端模式的整合与分解之间的转换。

本实施例中,通过设计和加入面向网络协议的宏指令,使得网络协议处理的能力数增强,同时其具的有可编程性保证了系统足够的灵活,可以通过编程支持目前市面上的大部分网络协议的处理,提高了灵活性,降低了网络处理器总体成本和设计周期。本实施例中,指令集是可重构的。可重构的信息不是集成在指令里,而是集成在可重构逻辑的配置存储器内。将专用指令集和可重构逻辑组合起来,达到处理器灵活性和效率的最大化。并且通过指令的可重构设计,降低指令的复杂度,从而易于编程。

表1为本实施例的指令集格式示例,参见表1。

表1

其中,模块号为设置的相同功能的功能单元的个数,runn表示载入配置寄存器中第n个配置向量,并执行操作;run表示按照之前的配置执行操作;matchrepeat中runnset表示加载配置,并直接输出跳转请求。fetch中setn表示输出上次的结果。其他的set表示仲裁比较,end表示模块结束。bytes中的nor表示小段模式,inv表示大端模式。

需要说明的是,本发明的这种指令携带信息量很少,长度比较短且固定,指令是一种调用(call)指令,实现功能模块的调度。

以下通过相关实例进行说明,实例1是从ethercat帧类型字段开始的,ethercat子数据包采用逻辑寻址的一个实例:

#1fetch1run3,match1run1set;

说明:抓取16比特的报文格式字段,如果等于0x88a4则转跳到ethercat处理,如果不是则转跳到操作结束指令。

#2frameend;

说明:操作结束指令。

#3bytesinv,fetch1run1;

说明:开始处理ethercat报头,开启大端模式,抓取ethercat长度字段。

#4fetch4run1,decide1run1;

说明:抓取控制字段匹配寻址方式,并跳转到相应的寻址指令。

#5fmmuset1;

#6fmmuset1;

说明:#4中的命令字段指明该子数据报采用逻辑寻址的话,则转跳到#5.由于地址为32比特,本处理器每一个超长指令字处理16比特数据,因此需要两个超长指令字指令。这里在上一个指令匹配之后跳转到相应的寻址方式,利用fmmu模块进行逻辑寻址。

#7calc2run1,repeatset,fetch2run1;

说明:获取11比特的数据包载荷长度信息,并配置到repeat模块中,等待抓取载荷时候触发;获取1比特更多字段,以在后面决定该子数据包结束后是否有其他子数据包。

#8fetch1run2;

说明:获取中断信息。

#9repeatrun2,fmmurun;

说明:触发repeat中载入的数据包载荷长度,开始计数,重复执行该条指令,利用fmmu模块将载荷发送到相应地址。

#10calc1run8,modify1run1,fetch2set1,match2run1set;

说明:计数工作计数器信息,并在报文上直接修改。将#7中抓取的更多字段信息进行匹配,决定下一步是结束处理还是跳转到下一个子数据包。

#11bytesnor,crcset;

说明:更换为小段模式,开始结束crc校验。

#12crcend,frameend;

说明:结束crc校验,该子数据报处理结束。

#13calc1run1,match1run2;

说明:#4中的命令字段指明该子数据报采用自增寻址的情况下,指令转跳到#13,开始自增寻址模式,计算位置,然后对其进行匹配。

#14syncset1;

说明:根据该字段的地址偏移量,用sync模块进行仲裁。

#15calc2run1,repeatset,fetch2run1;

说明:获取11比特的数据包载荷长度信息,并配置到repeat模块中,等待抓取载荷时候触发;获取1比特更多字段,以在后面决定该子数据包结束后是否有其他子数据包。

#16fetch1run2;

说明:获取中断信息。

#17repeatrun2,syncrun;

说明:触发repeat中载入的数据包载荷长度,开始计数,重复执行该条指令,利用fmmu模块将载荷发送到相应地址。

#18calc1run8,modify1run1,fetch2set1,match2run1set;

说明:计数工作计数器信息,并在报文上直接修改。将#15中抓取的更多字段信息进行匹配,决定下一步是结束处理还是跳转到下一个子数据包。

#19bytesnor,crcset;

说明:更换为小段模式,开始结束crc校验。

#20crcend,frameend;

说明:结束crc校验,该子数据报处理结束。

实例2为从ipv4的帧类型开始的ipv4数据包处理流程:

#1fetch4run1,decide1run1;

说明:获取帧类型字段,匹配帧类型后跳转到相应的网络协议处理指令。

#2checksumrun,fetch1run4,match1run2set,fetch2run3,fetch4run2,deciderun2;

说明:ipv4处理开始,开始进行报头和校验计算,获取报头类型并匹配;获取报头长度;获取服务类型,并决定该数据报的优先级。

#3calc2run1,repeatset;

说明:获取数据报总长度,载入repeat中的计数器。

#4fetch1run5;

说明:抓取标识字段,用于数据包重组。

#5fetch1run6,fetch2run4;

说明:抓取标志位和段偏移,用于数据包重组。

#6fetch2run5,match2run1set,fetch4run3,deciderun3;

说明:抓取生存时间字段,并匹配;抓取协议字段,判断传输层所采用的数据报文格式。

#7checksumset;

说明:获取checksum值,用于校验和计算结果的判断。

#8fetch3run2;

#9fetch3run;

说明:抓取源ip地址。

#10fetch3run,match3run2;

说明:抓取目的ip地址,并判断是否是发送到本处理器的。

#11fetch3run,match3runset,checksumend;

说明:抓取目的ip地址,并判断是否是发送到本处理器的。校验和计算结束,与#7中抓取的校验和字段比较结果是否一致。

#12repeatrun2,fetch1run7;

说明:触发repeat中载入的数据包载荷长度,开始计数,重复执行该条指令,抓取载荷发送到存储器。

#13crcset;

说明:开始结束crc校验。

#14crcend,frameend;

说明:结束crc校验,该子数据报处理结束。

实例3为udp报文的拆包指令:

#1checksumrun,fetch1run1;

说明:开始udp报头处理,开始校验和计算,获取源端口号。

#2fetch1run1,match1run5set;

说明:抓取16比特的端口号,并与本地端口号进行匹配,如果不符合则终止操作。

#3calc2run1,repeatset;

说明:计算总报文长度,并获取数据报总长度,载入repeat中的计数器。

#4checksumset;

说明:获取checksum值,用于校验和计算结果的判断。

#5repeatrun2,fetch1run7;

说明:触发repeat中载入的数据包载荷长度,开始计数,重复执行该条指令,抓取载荷发送到存储器。

#6crcset;

说明:开始结束crc校验。

#7crcend,frameend;

说明:结束crc校验,该子数据报处理结束。

本发明实施例还提供一种基于上述任一网络处理器实施例的网络数据的入栈处理方法,包括:控制模块12对长指令进行解码,将解码后的每一子指令发送给功能阵列模块11中相应的功能单元111;每一功能单元111从配置向量113中,选取处理相应子指令的配置,并加载至配置信息寄存器中;每一功能单元111根据加载后的配置,根据控制模块12的控制信息,执行相应的子指令,通过模块互联,实现对网络数据的入栈处理。具体参见上述网络处理器实施例。

以ipv4的报文处理过程为例进行说明,从匹配ipv4帧格式到报头前2字节的解析过程如下:

在处理器初始化的过程中配置存储器132对功能单元111中的配置寄存器112进行初始化配置。当ipv4的帧格式字节到来时,首先第一步,根据上一步操作过程中程序计数器122产生的程序计数结果,从指令存储器133中读取操作指令,在译码器123中对超长指令字进行解码。解码后的控制信息分发给相应功能单元。在匹配ipv4帧结构过程中,用到的是fetch功能单元102和功能单元107。第二步,相应的fetch功能单元和decide功能单元从自身的寄存器列表中加载出这次处理所需要的配置信息;第三步fetch功能单元工作,精确抓取16比特,并发送给decide功能单元;最后一步,decide功能单元将抓取过来的16比特帧类型字段与自身配置中的多个条目进行比较,然后获取跳转结果也就是下一步的程序计数结果。

然后ipv4报文解析工作开始。根据上一步的程序计数结果,第一步,从指令存储器133中读取操作指令,在译码器123中对超长指令字进行解码。解码后的控制信息分发给功能单元的相应功能单元。这里的操作需要用到checksum功能单元106、fetch功能单元102、match功能单元101、decide功能单元107。第二步,相应的checksum功能单元、match功能单元、fetch功能单元和decide功能单元从自身的寄存器列表中加载出这次处理所需要的配置信息;第三步,checksum功能单元开始对整个2字节数据进行校验和计算,同时,可设置三个不同的fetch功能单元分别并行抓取前4字节,5-8字节,和后8字节,并发送给match功能单元和decide功能单元;最后一步中,match功能单元对抓取的前4字节版本号字段根据配置信息进行匹配,如果不匹配则终止处理过程,同时,decide功能单元对抓取的后8字节服务类型字段与自身配置中的多个条目进行比较,然后获取跳转结果也就是下一步的程序计数结果。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部功能单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1