一种用于大流量网络处理的可重构芯片架构的制作方法

文档序号:15930490发布日期:2018-11-14 01:34阅读:193来源:国知局

本发明涉及一种用于大流量网络处理的可重构芯片架构,属于有线通信技术领域。

背景技术

随着ip网络的商业化,特别是web技术出现以后,internet用户迅猛增加。网络流量尤其是核心网络的流量以指数级数增长,传统的基于高性能cpu的交换机和路由器已经无法满足网络发展的需要,于是出现了asic实现转发的方式,它将转发过程的所有细节全部采用硬件方式来实现。asic技术通过把指令或计算逻辑固化到硬件中,以获得较高的处理速度,因而能够满足交换路由设备对性能的要求,适应网络流量不断增长的发展趋势。然而,asic技术最大的缺点是缺乏灵活性。一旦指令或计算逻辑固化到硬件中,就很难修改升级、增加新的功能或提高性能,使得资源重用率较低。另外,设计和制造复杂的asic应用系统一般需要花费12-18个月的时间,这使得asic应用系统的研发费用一般比较高。除此之外,当前网络的发展不仅仅是带宽的提高,更多地表现为对“智能化处理”的要求,例如:服务质量、控制安全等。这些服务即要求处理的速度高,又要求实现的方式灵活,因此交换路由设备需要能够灵活地满足各种服务和应用的不同需求,这一点是仅依靠asic技术难以实现的。当前和未来的网络设备处理部件既需要高性能,又需要高灵活性,传统用来实现网络交换路由功能的asic、fpga、cpu等都难以满足网络未来大规模数据洪流的冲击。



技术实现要素:

本发明的技术解决问题是:克服现有技术的不足之处,提供一种用于大流量网络处理的可重构芯片架构,解决采用传统osi网络架构实现的交换芯片灵活性和可扩展性差,硬件依赖性强、开发周期长、更新换代成本高,无法处理网络大流量数据,不方便进行架构调整、扩容和升级等问题。

本发明的技术解决方案是:一种用于大流量网络处理的可重构芯片架构,包括xge1~xgen端口、mac模块、入口策略模块、网络报文头处理器、出口策略模块;其中:

xge1~xgen端口,接收报文,并打上报文到达时间的时间戳标记,形成带时间戳的报文发送给mac模块;将mac模块发送的数据转发出去;

mac模块,对每一路带时间戳的报文进行识别、校验和过滤,滤除掉无效的报文,将剩下的有效报文存贮在接收缓冲区,并转发至入口策略模块;接收出口策略模块发送的报文并将其存储至发送缓冲区中,再从发送缓冲区读取数据,填充以太帧crc及前导码,并转换成物理层xge的方式传送至xge1~xgen端口;

入口策略模块,对经过mac接收的各路有效报文按照到达时间先后顺序汇集成一路数据,将有效报文按照固定的切片大小进行切片处理,得到n个报文切片,n≥1,每个切片的大小大于等于报文头的大小;当n大于1时,将包含报文数据净荷的报文切片存储,并将相应的报文数据净荷存储地址信息增加到包含报文头的报文切片中,之后,给带有报文数据净荷存储地址信息的报文头切片分配一个序号,否则,直接将带有报文头的切片分配一个序号;根据网络报文头处理器内各微引擎每个线程的线程工作状态,将携带序号信息的报文头切片分配给线程空闲数较多的微引擎,发送至网络报文头处理器;

网络报文头处理器,采用多个独立的微引擎并行地对报文头进行解析、分类、转发处理,以更新报文头切片,并将更新后的报文头切片发送给出口策略模块;

出口策略模块,解析报文头,当报文头中携带有效的报文数据净荷存储地址信息时,根据报文数据净荷存储地址信息,从缓存中提取报文数据净荷,将其与相应的报文头拼接成一个完整的报文;根据报文头的序号,将所有报文按照顺序进行流量整形、队列管理处理之后分成多路转发至mac模块。

入口策略模块包括汇聚模块、输入缓存模块、报文解析器、存储缓冲模块、顺序保证引擎模块、轮询调度模块和时钟同步模块,其中:

汇聚模块,对经过mac模块接收的各路报文按照到达时间先后顺序汇集成一路数据,根据缓存管理模块提供的缓存指针,将报文发送给输入缓存模块;

输入缓存模块,向汇聚模块发送缓存指针,该模块对输入报文进行缓存,将报文进行切片处理得到n个报文切片,n≥1,每个切片的大小大于等于报文头的大小,将报文切片发送给报文解析器模块;

报文解析器,对报文进行解析,得到报文类型,对于用于时钟同步的ptp报文,发送给时钟同步模块;对于非ptp报文,当报文切片数大于1时,将包含报文数据净荷的报文切片存储至存储缓冲模块,并将相应的报文数据净荷存储地址信息增加到包含报文头的报文切片中,将包含报文头的报文切片发送至轮询调度模块;

存储缓冲模块,对收到的包含报文数据净荷的报文切片进行存储,并将报文数据净荷存储地址信息反馈至报文解析器;

轮询调度模块,轮询网络报文头处理器内部各微引擎每个线程的线程工作状态,将收到的报文头分配一个顺序保证引擎模块发送的序号,递交给线程空闲数较多的微引擎;

顺序保证引擎模块,产生一个序号发送给轮询调度模块;

时钟同步模块,接收报文解析器发送的ptp报文,进行同步处理,根据时间戳计算驻留时间,并将驻留时间添加到报文的校正域之后,将报文通过mac模块发往xge1~xgen端口,在xge1~xgen端口处会将报文离开的时间写入报文,之后将报文发往物理链路。

所述网络报文处理器包括微引擎簇、任务调度器模块、存储器模块,其中:

微引擎簇,由多个并行独立工作的微引擎组成,每个微引擎加载相应的微码指令,根据微码指令,调度多个线程通过任务调度器模块访问存储器模块中相应存储单元中的相关表项,完成报文头数据帧解析、分类和转发处理,并将各线程工作状态反馈给入口策略模块;

存储器模块,用于存储报文头数据帧解析、分类和转发处理所需要的相关表项和微引擎的微码指令。

所述任务调度器模块,调度各微引擎线程对存储器中的存储单元的访问,使得微引擎的线程之间以轮转非抢占方式对存储单元进行访问,以实现存储单元中的相关表项的查找和读写。

所述每个微引擎内部的线程之间采用流水线工作方式工作。

微引擎簇中多个微引擎集成在一块芯片上。

所述芯片内部设有专门针对网络数据包处理的专用指令集,所述专用指令集包括乘法指令、循环冗余校验指令、按内容寻址指令、ffs指令,微引擎按照微码指令,调度线程执行这些指令,完成相应报文处理。

该架构还包括通用处理器,所述通用处理器用于使用标准编程语言编写微引擎的程序,经过编译形成微码指令,并将其下载到存储器模块中,上电后微引擎簇内的微引擎加载相应的微码指令,并按照微码指令调用线程工作,实现微引擎的重构。

出口策略模块包括报文编辑模块、流量整形模块、队列管理模块、输出缓存模块,其中:

报文编辑模块,解析报文头,当报文头中携带有效的报文数据净荷存储地址信息,根据报文数据净荷存储地址信息,从缓存中提取报文数据净荷,将其与相应的报文头拼接成一个完整的报文;根据报文头携带的序号,将所有报文,按照顺序发送至流量整形模块。

流量整形模块,将收到的报文进行流量管理,之后发送给队列管理模块;

队列管理模块,对收到的报文进行对列管理,发送给输出缓存模块;

输出缓存模块,对输出的报文进行缓存,之后,发送给mac模块。

所述流量管理模块、队列管理模块为硬件协处理器。

本发明与现有技术相比具有如下优点:

(1)、本发明采用全可编程架构,通过预先编制的微码来控制处理流程,可灵活快速满足用户各类业务定制的需求,平滑演进至sdn网络,最大程度保护用户的设备投资;

(2)、本发明采用多个并行微引擎结构,将报文均衡的分配到不同的微引擎上,每个微引擎完整一个报文的完整处理,这种多个微引擎独立并行工作的模式可大大提高报文的处理速度;

(3)、本发明支持高级语言编程,用户可在通用处理器中采用高级语言编程,经过编译后形成微码指令,将微码指令存在指令存储器中,以便微引擎在报文处理时调用,这样用户只需通过通用处理器进行代码开发就可以了,给用户带的开发带来了极大方便;

(4)、本发明在提供高性能的l2/l3层交换服务基础上,进一步融合了mpls、vlan、ipv4、ipv6等通用协议,此外还支持4层以上的协议报文处理。;

(5)、本发明采用se、oe、tm、qm等硬件协处理器来进一步提高处理性能,从而实现了业务灵活性和高性能的有机结合;

(6)、本发明的端口可灵活配置为不同的工作模式,可提供多个万兆(10g)端口和多个4万兆(40g)端口,端口灵活可配;

(7)、本发明支持基于时间戳的高精度时钟同步协议,为实现实时性的调度和控制提供高精度的时间基准。

附图说明

图1为本发明用于网络大流量处理的异构交换芯片架构图;

图2为本发明一种基于并行微引擎的网络报文头处理器组成框图;

图3为本发明实施例微引擎簇中的一个微引擎内部流水线结构设计;

图4为本发明实施例中任务调度模块的实现。

具体实施方式

下面结合附图和具体实施例对本发明做进一步介绍。

本发明提供了一种基于可重构交换芯片架构的大规模网络数据处理系统,该系统包括xge1~xgen端口、mac模块、入口策略模块、网络报文头处理器、出口策略模块;其中:

xge(ten-gigabitetherent)1~xgen端口,接收报文,并打上报文到达时间的时间戳标记,形成带时间戳的报文发送给mac模块;将mac模块发送的数据转发出去;

mac模块,对每一路带时间戳的报文进行识别、校验和过滤,滤除掉无效的报文,将剩下的有效报文存贮在接收缓冲区,并转发至入口策略模块;接收出口策略模块发送的报文并将其存储至发送缓冲区中,再从发送缓冲区读取数据,填充以太帧crc及前导码,并转换成物理层xge的方式传送至xge1~xgen端口;

入口策略模块,对经过mac(mediumaccesscontrol)模块接收的各路有效报文按照到达时间先后顺序汇集成一路数据,将有效报文按照固定的切片大小进行切片处理,得到n个报文切片,n≥1,每个切片的大小大于等于报文头的大小,轮询各微引擎每个线程的线程工作状态,将收到的报文头递交给线程空闲数较多的微引擎;当n大于1时,将包含报文数据净荷的报文切片存储,并将相应的报文数据净荷存储地址信息增加到包含报文头的报文切片中,之后,给带有报文数据净荷存储地址信息的报文头切片分配一个序号,否则,直接将带有报文头的切片分配一个序号;根据网络报文头处理器内各微引擎每个线程的线程工作状态,将携带序号信息的报文头切片分配给线程空闲数较多的微引擎,发送至网络报文头处理器;

网络报文头处理器,采用多个独立的微引擎并行地对报文头进行解析、分类、转发处理,以更新报文头切片,并将更新后的报文头切片发送给出口策略模块;

出口策略模块,解析报文头,当报文头中携带有效的报文数据净荷存储地址信息时,根据报文数据净荷存储地址信息,从缓存中提取报文数据净荷,将其与相应的报文头拼接成一个完整的报文;根据报文头的序号,将所有报文按照顺序进行流量整形、队列管理处理之后分成多路转发至mac模块。

所述mac模块包括控制模块、发送模块、接收模块,其中,

控制模块,包含通用处理器接口,寄存器等,用于实现通用处理器对mac的控制处理;还提供接口收发的报文统计,包括单播、组播、广播、短包、长包、crc正确/错误等统计信息。

发送模块,主要完成数据帧的传送,以字节为单位从发送缓冲区读取数据,填充以太帧crc及前导码,并转换成物理层xge的方式传送,发送的时候通过帧间隙计数器保证两个以太帧之间的最小间隔;

接收模块,主要完成数据帧的接收,从物理层xge接口接收数据,并进行报文识别、校验和过滤,将报文存贮在接收缓冲区。

下面对几个重要模块进行详细说明。

1、入口策略模块

所述入口策略模块包括汇聚模块(rmux)、输入缓存模块(ibm)、报文解析器(pa)、存储缓冲模块(rb)、顺序保证引擎模块(oe模块)、轮询调度模块(pba)和时钟同步模块,其中:

汇聚模块(rmux),对经过mac模块接收的各路报文按照到达时间先后顺序汇集成一路数据,根据ibm缓存管理模块提供的缓存指针,将报文发送给ibm模块;

输入缓存模块(ibm),向rmux模块发送缓存指针,该模块对输入报文进行缓存,将报文进行切片处理得到n个报文切片,n≥1,每个切片的大小大于等于报文头的大小,将报文切片发送给报文解析器模块;

报文解析器(pa),对报文进行解析,得到报文类型,对于用于时钟同步的ptp报文,发送给时钟同步模块;对于非ptp报文,当报文切片数大于1时,将包含报文数据净荷的报文切片存储至存储缓冲模块(rb),并将相应的报文数据净荷存储地址信息增加到包含报文头的报文切片中,将包含报文头的报文切片发送至轮询调度模块(pba);

存储缓冲模块(rb),对收到的包含报文数据净荷的报文切片进行存储,并将报文数据净荷存储地址信息反馈至报文解析器(pa);

轮询调度模块(pba),轮询网络报文头处理器内部各微引擎每个线程的线程工作状态,将收到的报文头分配一个顺序保证引擎模块(oe)发送的序号,轮询各微引擎线程的线程工作状态,根据其忙闲状态,并决定递交报文至哪个微引擎,通过统计每个微引擎的线程工作情况,将收到的报文递交给线程空闲数较多处理任务较少的微引擎,即将报文分派给负载最轻的微引擎。

顺序保证引擎模块(oe),产生一个序号发送给轮询调度模块(pba);

时钟同步模块,接收报文解析器(pa)发送的ptp报文,进行同步处理,根据报文携带的时间戳计算驻留时间,将驻留时间添加到报文的校正域之后,将报文通过mac发往xge1~xgen端口,在xge1~xgen端口处会将报文离开的时间写入报文,之后将报文发往物理链路。

2、网络报文处理器

如图2所示,所述网络报文处理器包括微引擎簇、任务调度器模块、存储器模块。

2.1微引擎簇

微引擎簇由多个并行独立工作的微引擎npe(networkprocessingengine)组成,每个微引擎包含多个线程,线程数目可根据实际需要通过微码指令进行配置,一般可以配置为4线程或者8线程工作,微引擎簇工作过程中尽量保证每个微引擎的工作的线程数目接近。各微引擎并行独立工作,相互之间没有交互,每个微引擎完成一个报文的完整的处理流程,包括数据帧解析、分类和转发处理。

所述微引擎内部的线程之间采用流水线工作模式工作,每个微引擎加载相应的微码指令,根据微码指令,调度多个线程通过任务调度器模块访问存储器模块中相应存储单元中的相关表项,完成报文头数据帧解析、分类和转发处理,并将各线程工作状态反馈给轮询调度器。多个微引擎集成在一块芯片上,芯片上包括有专门针对数据包处理的专用指令集,所述指令集内包括乘法指令、循环冗余校验指令、按内容寻址指令、ffs指令,微引擎通过执行这些专用指令,可以快递处理数据,提高性能。微引擎的线程将工作状态通过状态字反馈给轮询调度器,可以用1个bit表示线程的忙闲状态,1表示“忙”,0表示“闲”。通过多个微引擎的并行处理,微引擎簇可以实现高速、大容量智能数据帧处理。

如图3所示为微引擎内部流水线结构设计。流水线由多个数据包指令功能块构成,它拥有专用指令集、代码数据存储资源、寄存器资源和处理控制权。每个线程对应一个数据包指令功能块,所有数据包指令功能块线性排列,每个数据包指令功能块执行一条指令后将数据包传递给下一个功能块,数据和状态由数据包上下文传递。

2.2任务调度器模块rba(resourcebusallocation)

任务调度器模块,完成总线调度功能,用于调度各线程对相关处理单元的访问,防止多个线程同时访问同一处理单元,造成访问冲突。微引擎的线程之间以轮转非抢占方式对相关存储单元(ddr(doubledatarate)、tcam(ternarycontentaddressablememory)、se(searchengine)和imem(instructionmemory))进行访问,以实现相关表项(mac地址表、ip(internetprotocol)路由表、vlan(virtuallocalareanetwork)表、mpls表、流表等)的查找和读写。

任务调度器的具体实现为:记录所有微引擎已处于准备访问存储器中的存储单元状态的线程号及其需要访问的存储单元,轮询该存储单元是否正处于被访问状态,当有线程完成对该存储单元的访问时,在记录的线程号中顺序搜寻一个准备访问该存储单元的线程,将访问权交给该线程。

如图4所示,任务调度器从npe1的线程1开始轮询处于ready=1状态的线程,如微引擎npe1的线程1和npe2的线程2同时需要访问tcam,此时如tcam正在被其他线程访问,则npe1的线程1和npe2的线程2都处于等待状态,当tcam被访问完毕后,任务调度器会先将tcam的访问权交给npe1的线程1,npe2的线程2处于继续等待状态,直到npe1的线程1释放tcam的访问权。但tcam在被访问时,如有其他线程需要访问ddr,此时ddr又没有其他线程访问,则任务调度器会将ddr的访问权交给该线程。

2.3存储器模块

存储器模块,包括多个存储单元,用于存储报文头数据帧解析、分类和转发处理所需要的相关表项和微引擎的微码指令。

存储器模块包括ddr存储器、tcam、片上存储器lmem、指令存储器imem。其中:

ddr存储器,用于存储vlan表、mpls表等业务相关且对处理速度要求相对较低的表项;微引擎通过任务调度器调用搜索引擎,并指定搜索引擎采用相应的搜索算法对ddr中的表项进行搜索,查找与微引擎所处理的报文头相匹配的表项,并将搜索结果反馈给微引擎。

tcam存储器,用于存放mac地址表、路由表等对处理速度要求较高的表项。所述mac地址表、路由表采用tcam形式存储,查找时,任务调度模块将报文头中信息,转换成tcam表存储,与mac地址表、路由表匹配,找到所需要的数据匹配项反馈给微引擎。

片上存储器lmem,用于存放流表,直接由微引擎的线程通过任务调度器进行访问。

指令存储器imem,用来存放微引擎的微码指令。

2.4搜索引擎

用于ddr中表项的查找,可采用二分查找、树表查找、哈希查找等算法进行表项查找。

搜索引擎se为硬件协处理器,由硬件实现,微引擎内线程通过搜索引擎se访问ddr中的数据表项,具体为:当微引擎访问ddr存储器时,微引擎通过任务调度器调用搜索引擎,并指定搜索引擎采用相应的搜索算法对ddr中的表项进行搜索,查找与微引擎所处理的报文头相匹配的表项,并将搜索结果反馈给微引擎。

2.5通用处理器

通用处理器所述通用处理器用于使用标准编程语言编写微引擎的程序,经过编译形成微码指令,并将其下载到存储器模块中,上电后微引擎簇内的微引擎加载相应的微码指令,并按照微码指令调用线程工作,实现微引擎的重构。

通用处理器还可以用来运行操作系统、芯片的初始化配置、对数据包做深层处理(4层协议以上处理)等。

本发明根据不同的服务要求,可对包(帧)进行不同深度的处理。例如路由查找只需处理第3层(ip头部),分类需要处理到第四层(tcp(transmissioncontrolprotocol)/udp(userdatagramprotocol)协议),而网络安全则需要处理到应用层(包携带的有效载荷),对于4层以上的协议处理由通用处理器完成。

3、出口策略模块

所述出口策略模块包括报文编辑模块(pe)、流量整形模块(tm)、队列管理模块(qm:queuemanagement)、输出缓存模块(ebm),其中:

报文编辑模块(pe),解析报文头,当报文头中携带有效的报文数据净荷存储地址信息,根据报文数据净荷存储地址信息,从缓存中提取报文数据净荷,将其与相应的报文头拼接成一个完整的报文;根据报文头携带的序号,将所有报文,按照顺序发送至流量整形模块(tm)

流量整形模块(tm),将收到的报文进行流量管理,之后发送给队列管理模块(qm);

队列管理模块(qm),对收到的报文进行对列管理,发送给输出缓存模块(ebm);

输出缓存模块(ebm),对输出的报文进行缓存,之后,发送给mac模块。

所述解析模块如发现报文需要4层以上协议的处理则在微引擎阵列模块处理后将报文发往通用处理器进行更高级别的协议处理。

所述保序模块(oe)、搜索引擎模块(se)、流量管理模块(tm)、队列管理模块(qm)为硬件协处理器。

进一步,所述通用处理器模块,可以集成在交换芯片内部,也可以通过pcie总线外置,如在片外实现,交换芯片处理速度更高,功耗更小。

进一步,所述tm模块,可以集成在交换芯片内部,也可以外挂流量管理模块实现,如在片外实现,交换芯片处理速度更高,功耗更小。

进一步,所述xge端口,为达到较高的同步精度,采用在xge接口处打时间戳的方式来获得分组进入和离开交换端口的时间。如需进一步提升同步精度,可在物理层打时间戳。

本发明摒弃了传统交换芯片架构,采用基于可编程网络处理器的交换芯片架构,使得交换芯片在灵活性、可扩展性、处理速度上都有了很大提升,交换容量可达到1tbps以上,更适合网络大流量数据处理。

本发明未详细说明部分属本领域技术人员公知常识。

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