发明内容
本发明要解决的技术问题是提供一种处理MAC数据的方法及装置,以以多进程并行的进行MAC数据监测处理。
为了解决上述技术问题,本发明提供了一种处理媒体接入控制(MAC)数据的方法,包括:
根据当前数据位宽及当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模;
利用所述选择的进程,每一个进程对应处理当前拍中的一个MAC帧数据。
进一步地,上述方法还具有下面特点:所述根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量包括:
通过当前拍内完整的MAC帧和不完整的MAC帧的数量之和,来确定处理当前拍数据所需占用的进程的数量。
进一步地,上述方法还具有下面特点:所述根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程规模包括:
若当前拍中包括不完整的MAC帧,则为所述不完整的MAC帧选择进 程规模为支持最大位宽进程。
进一步地,上述方法还具有下面特点:所述根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程规模包括:
若当前拍中包括完整的MAC帧,则根据所述完整的MAC帧的最大可能长度选择对应的进程规模。
进一步地,上述方法还具有下面特点:所述根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模之前,还包括:
根据当前数据位宽以及进入监测处理的最短MAC帧帧长,确定并配置用于监测处理的进程的最大进程数。
进一步地,上述方法还具有下面特点:所述每一个进程对应处理当前拍中的一个MAC帧数据包括以下中的一种或多种:
对MAC帧数据进行循环冗余校验计算;
对MAC帧数据进行帧长检查;
对MAC帧数据进行目的地址检查;
对MAC帧数据进行暂停帧检查。
为了解决上述问题,本发明还提供了一种处理媒体接入控制(MAC)数据的装置,包括:
进程选择模块,根据当前数据位宽及当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模;
进程处理模块,用于利用所述选择的进程,每一个进程对应处理当前拍中的一个MAC帧数据。
进一步地,上述装置还具有下面特点:
所述进程选择模块,具体用于通过当前拍内完整的MAC帧和不完整的MAC帧的数量之和,来确定处理当前拍数据所需占用的进程的数量。
进一步地,上述装置还具有下面特点:
所述进程选择模块,具体用于若当前拍中包括不完整的MAC帧,则为所述不完整的MAC帧选择进程规模为支持最大位宽的进程;若当前拍中包括完整的MAC帧,则根据所述完整的MAC帧的最大可能长度选择对应的进程规模。
进一步地,上述装置还具有下面特点:
所述进程选择模块,在根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模之前还用于:根据当前数据位宽以及进入监测处理的最短MAC帧帧长,确定并配置用于监测处理的进程的最大进程数。
进一步地,上述装置还具有下面特点:
所述进程处理模块包括以下一种或多种单元:
循环冗余校验单元,用于对MAC帧数据进行循环冗余校验计算;
帧长检查单元,用于对MAC帧数据进行帧长检查;
目的地址检查单元,用于对MAC帧数据进行目的地址检查;
暂停帧检查单元,用于对MAC帧数据进行暂停帧检查。
综上,本发明提供一种处理MAC数据的方法及装置,以实现多进程并行的进行MAC数据监测处理,每个进程处理一个MAC帧数据,可一次性处理完整的一拍数据,而无需打散输入数据、进行数据缓冲;并且,也可根据接口位宽的不同,配置监视统计模块的进程数以及进程规模,达到兼容40G、100G甚至更高速率的以太网MAC帧数据监视统计处理的功能。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本发明实施例的处理MAC数据的方法的流程图,如图1所示,本实施例的方法包括以下步骤:
步骤S10、根据当前数据位宽及当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模;
当前数据位宽(即每一拍传输的数据量的大小)是由芯片规格定下的,是一个固定值;而MAC帧各有长短,每一拍数据有可能包含一个或多个MAC帧,所以进程选择要视当前拍的MAC帧情况而定。
步骤S20、利用所述选择的进程,每一个进程对应处理当前拍中的一个MAC帧数据。
这样,本实施例的方法可以多进程并行的进行MAC数据监测处理,每个进程处理一个MAC帧数据,可一次性处理完整的一拍数据,而无需打散输入数据、进行数据缓冲。
图2为本发明实施例一的处理MAC数据的装置的示意图,如图2所示,本实施例的装置,包括:
进程选择模块,根据当前数据位宽及当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模;
进程处理模块,用于利用所述选择的进程,每一个进程对应处理当前拍中的一个MAC帧数据。
其中,所述进程选择模块,具体用于通过当前拍内完整的MAC帧和不 完整的MAC帧的数量之和,来确定处理当前拍数据所需占用的进程的数量。
其中,所述进程选择模块,具体用于若当前拍中包括不完整的MAC帧,则为所述不完整的MAC帧选择进程规模为支持最大位宽的进程;若当前拍中包括完整的MAC帧,则根据所述完整的MAC帧的最大可能长度选择对应的进程规模。
其中,所述进程选择模块,在根据当前拍数据的MAC帧情况,选择处理当前拍数据的进程的数量和进程规模之前还用于:根据当前数据位宽以及进入监测处理的最短MAC帧帧长,确定并配置用于监测处理的进程的最大进程数。
其中,所述进程处理模块包括以下一种或多种单元:
循环冗余校验单元,用于对MAC帧数据进行循环冗余校验计算;
帧长检查单元,用于对MAC帧数据进行帧长检查;
目的地址检查单元,用于对MAC帧数据进行目的地址检查;
暂停帧检查单元,用于对MAC帧数据进行暂停帧检查。
与现有MAC数据监测处理技术相比,采用本发明所述的方法和装置,具有如下特点:
1)采用了进程数可配的多进程处理方式,可实现不同速率的以太网MAC帧监视统计功能的复用。在实际应用当中,以太网MAC帧的不同传输速率可通过位宽大小的改变来匹配,例如,100G相当于10路10G并发,40G相当于4路10G并发。因此,采用依据不同位宽以及进入MAC帧监视统计所允许的最短帧帧长可配置不同的进程数的方式,可实现多种传输速率下MAC帧监视统计的兼容,并且对于将来可能出现的200G、400G以太网业务也可以很方便的实现扩展。
2)在不改变数据流结构的情况下,以MAC帧为单位,每一个MAC帧占用一个进程,多个进程并行处理,一次性处理完一拍数据。
3)在本发明的100G以太网MAC帧监视统计实施例中采用了带进程选控的实现方式,利用最大位宽可变的并行CRC32计算技术设计了三种不同进 程规模的进程process80、process56、process24(进程名后的数字表示进行并行CRC32计算所支持的最大位宽字节数)。进程模块所占用的资源主要用于并行CRC32计算,位宽越大的并行CRC32计算,所占用的资源越多。在实际应用当中,根据MAC帧的帧长可选择适当规模的进程,从而达到节约资源的作用。
表1(单位:个)
对于100G以太网80个字节并行的CGMII数据传输方式,进行完整一拍数据的CRC校验就必须要采用最大位宽为80字节的并行CRC32计算。若不带进程选择,则需要4个Process80才能满足设计需求。而如表1所示,通过增加一个进程选控模块,用一个process56,一个process24替代两个process80,实际上节约了不少资源。
为了更清楚地说明本发明实施例的技术方案,以一具体实施示例进行详细说明。
本实施例主要是针对100G以太网业务进行MAC帧监视统计,完成各帧长范围内好帧与坏帧帧数;超短帧、超长帧帧数;CRC校验错误帧帧数、帧长错误帧帧数;多播、组播、广播帧帧数;pause(暂停)帧帧数以及各类丢帧数的监视统计功能。
本发明的实施例二提供的提供处理MAC数据的装置可以包括:进程选 择模块、四个进程处理模块以及CPU统计模块;其中每个进程处理模块又包含了并行CRC32计算子模块、帧长检查子模块、目的地址检查子模块和Pause帧检查子模块,参见图3。
具体实现步骤如下:
步骤101:根据当前数据位宽的大小以及进行监测处理的最短MAC帧帧长,确定并配置MAC监视统计模块的最大进程数。
最短MAC帧是指协议允许的最短的正常MAC帧,如果传输过程中存在低于该长度的MAC帧,则被认为是碎片帧而丢弃,不会进入监视统计模块。每接收到一拍数据,会通过查找帧头帧尾的位置及个数确定当前拍内有多少个完整帧,多少个不完整帧,也因此而确定进程数,每一个进程处理一个Mac帧。
进程数需要由接口数据位宽和最短MAC帧帧长共同决定。802.3协议允许最短的正常mac帧必须最少有18个数据字节,这样,采用block块的方式来描述一个最短mac帧就是S、D、D、T一共四个块共32字节。因此,如果当前数据位宽是80字节,那么在一拍内最多可能存在4个MAC帧(即图5a描述的情况),这样就需要4个进程;而假设数据位宽采用64字节,就只需要3个进程。
按照802.3对MAC帧的定义:一个完整的MAC帧包括:7个字节的同步字符、一个字节的帧起始界定字符(SFD)、6字节的目的地址(DA)、6字节的起始地址(SA)、2字节的长度/类型字段(L/T)、可变长度的数据段和4字节的FCS(Frame Check Sequence,帧检查序列)字段(用以存放循环冗余检查(CRC32)所得的结果)。
经PCS处理,MAC帧被划分成如图1所示的CGMII格式。CGMII格式按块类型,可分为5类:S块(起始块,包含前导码和帧起始界定符);D块(数据块,包含MAC帧数据);T块(结束块);C块(为空闲块或告警块);E块(错误块)。其中,只有D为数据块,其它块都为控制块。通常情况下,一个MAC帧在解码后,起始于S块,有效数据构成D块,结束于T块,帧与帧之间间隙为C块,而在传输过程中任何错误将被替换成E块。 例如,一个帧长(帧长表示从目的地址域到FCS域结束的字节数,不包括前导码和帧起始界定符)为18字节的MAC帧,其块结构为一个S块,后接两个D块和一个T2块(T2表示T块中包含两字节的数据)。
100G以太网的CGMII传输方式为10个块(80字节)并行发送,而进入监测处理的最短MAC帧帧长为18个字节的超短帧(小于18字节的MAC帧默认丢弃)。因而,一拍内最多包含两个完整的超短帧和两个跨拍帧部分,即一拍内最多可能存在4个帧。因此,本发明实施例的100G以太网业务采取四进程的处理方式。同理,对于一拍内传输4个块的40G以太网,支持最短MAC帧帧长为18个字节的MAC监视处理可选取两进程的方式。
步骤102:对于当前拍所需要处理的数据,判断其中是否存在跨拍帧。
跨拍帧为当前拍内不完整的MAC帧,亦即占用了两个或两个以上时钟周期来传输的MAC帧。
跨拍帧判断条件:
1)若整拍内既无S块也无T块,表明当前拍为一个跨拍帧的数据段;
2)若第一个到来的控制块为T块,表明源自于前一拍或前数拍的跨拍帧在当前拍结束;
3)若最后一个控制块为S块,表明当前拍有始于当前拍且未结束的跨拍帧延续到下一拍。
4)每一拍数据最多只可能存在两个跨拍帧。
记录当前拍内的跨拍帧的数量及其起始位置或者结束位置。
步骤103:统计除跨拍帧外,当前拍内完整帧的个数。
一个18字节的最短帧,它由四个块构成,而一拍同时到来的是并行的10个块,因此,在同一拍内,完整帧的个数最多只能是两个。记录当前拍内完整帧的个数及其起始位置和结束位置。
步骤104:根据当前拍的完整帧以及跨拍帧情况,选用适当规模的进程。
若当前拍中包括不完整的MAC帧,则为所述不完整的MAC帧选择进 程规模为支持最大位宽进程;若当前拍中包括完整的MAC帧,则可以根据所述完整的MAC帧的最大可能长度选择对应的进程规模。
当前拍内完整帧和跨拍帧的数量之和确定为当前拍所需占用的进程数,每个进程处理一帧数据。根据完整帧的帧长选择适当规模的进程,进程的规模由循环冗余校验(CRC32)并行计算的最大位宽决定,即只有帧长少于该进程的CRC32计算所支持的最大位宽的帧才能选用该进程。
在当前拍结束的跨拍帧在统计结束后自动释放其占用的进程;完整帧在统计结束后自动释放其所占用的进程;始于当前拍的跨拍帧继续占用进程直到帧结束。因为跨拍帧的帧长无法在当前拍确定,所以跨拍帧优先占用process80进程,直到该跨拍帧结束。完整帧则根据拍内帧情况以及本帧帧长选择相应的进程。
若当前拍只有一个MAC帧,则该帧可以占用一个process80进程。若当前拍有两个MAC帧(包括跨拍帧),则两个MAC帧可以分别占用两个process80进程。
在当前拍内有三帧(包括两个跨拍帧)时,会用到process56。如图5(b)所示,一拍内包含三个MAC帧的情况:头和尾为两个跨拍帧,中间为一个完整帧,除去两个跨拍帧部分以及完整帧的S块,完整帧帧长必定小于等于56个byte,因此选择采用process56。
在当前拍内有四帧(包括跨拍帧)时,会用到process24。如图5(a)所示,一拍内包含四个MAC帧的情况:头和尾为两个跨拍帧,中间为两个完整帧,此时,两个跨拍帧分别占用两个process80,两个完整帧一个占用process56,另一个占用process24。在同一拍内,4个进程都使用到。
上述步骤101至步骤104由图3中的进程选择模块执行。
步骤105、各进程分别进行CRC32计算、帧长检查、目的地址检查、Pause(暂停)帧检查,并输出相应的统计脉冲信号。
本实施例中,进程处理模块可以包括:并行CRC32计算单元、帧长检查单元、目的地址检查单元和Pause帧检查单元,当然,在其他实施例中,进程处理模块可以包括上述四个单元中的一个或多个。进程处理模块的规模由 CRC32计算单元进行CRC32计算的最大位宽决定。
CRC32计算单元对MAC帧中DA的第一个字节到FCS的最后一个字节计算32位校验和,判断是否等于固定值32’hC704_DD7B,如果不相等,则为FCS错误帧。检测结束输出结果和FCS校验结束标志。
帧长检查单元由S字节地址、T字节地址计算帧长:
若当前拍只有S,帧长计数器count=count+(80-s_addr-7);
若当前拍有S、T,帧长计数器count=count+(t_addr-s_addr-8);
若当前拍只有T,帧长计数器count=count+t_addr-1;
若当前拍没有S、T,帧长计数器count=count+80。
计算结果减去18字节与长度/类型域值比较,若不相等,则该帧为帧长错误帧,输出统计脉冲。
目的地址检查单元通过检查接收到的DA值判断是否多播帧和广播帧。若DA域值为48’hffff_ffff_ffff_ffff,则该帧为广播帧;若DA域第一个bit值为1’b1,其余bit不全为“1”,则该帧为多播帧,输出统计脉冲。
Pause帧检查单元检查是否pause帧,并分别统计pause=0和pause!=0的帧数,若DA域值为48’h0180_c200_0001,L/T域为16’h8808,L/T域后两字节值为16’h0001,则该帧为pause帧。若接下来两字节值等于16’h0000则为pause0帧,若不等于16’h0000则为pause !0帧。输出统计脉冲。
步骤106、汇总各进程统计脉冲信号,产生统计结果:统计各帧长范围内好帧与坏帧帧数;超短帧、超长帧帧数;CRC校验错误帧帧数、帧长错误帧帧数;多播、广播帧帧数;pause帧帧数等等。
CPU统计模块由各种统计寄存器以及CPU读写接口构成,将各进程产生的统计脉冲汇总产生各类统计结果,完成100G以太网MAC各帧长范围内好帧与坏帧帧数;超短帧、超长帧帧数;CRC校验错误帧帧数、帧长错误帧帧数;多播、组播、广播帧帧数;pause帧帧数以及各类丢帧数的监视统计功能,提供CPU读写接口用以读取各类统计结果。
本发明提供的技术方案解决了现有技术要么无法解决高位宽所带来的多帧并发问题,要么需要进行数据缓存,消耗巨大资源且无法在不打散数据流的情况下一次性处理完整的一拍数据的问题。并且,本发明提供的技术方案通过一种可配置的多进程并行处理方法,从而实现兼容多种位宽MAC帧数据的检测统计功能,可以灵活的兼容未来承载网发展所要求的更高速率传输标准。
本领域技术人员在理解上述实施例中的全部或部分步骤的情况下,可以通过FPGA(Field-Programmable Gate Array,现场可编程门阵列)或ASIC(Application Specific Integrated Circuit,专用集成电路)方式将之实现。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。