发明内容
本发明的目的是提供一种变长多播数据信元处理方法、装置和交换网元,在提高变长多播数据信元处理速率的同时,减少资源的消耗。
为了实现上述目的,本发明实施例提供了一种变长多播数据信元处理方法,用于交换网元,所述方法包括:
将接收的变长多播数据信元切分为信元头和信元体;
对所述信元体进行缓存处理;
对所述信元头进行路由处理,获得路由结果;
将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元。
上述的变长多播数据信元处理方法,其中,所述将接收的变长多播数据信元切分为信元头和信元体具体包括:
在接收到所述变长多播数据信元时,向预设的第一缓存发起入队请求;
根据所述第一缓存当前可用深度值判断所述变长多播数据信元能否入队,获得判断结果;
当所述判断结果指示所述变长多播数据信元能够入队时,将入队的所述变长多播数据信元切分为信元头和信元体。
上述的变长多播数据信元处理方法,其中,所述对所述信元体进行缓存处理具体包括:
所述变长多播数据信元入队时,确定所述变长多播数据信元在所述第一缓存中的第一缓存地址;
按照所述第一缓存地址缓存所述信元体。
上述的变长多播数据信元处理方法,其中,所述对所述信元头进行路由处理,获得路由结果具体包括:
根据所述变长多播数据信元的输入端口号,对所述信元头进行队列管理;
对不同队列的变长多播数据信元的信元头进行保序处理;
根据所述保序处理的结果,对所述不同队列的变长多播数据信元的信元头进行调度;
根据被调度的多播队列的调度信息中的多播标识,进行多播查表,获得具体为多播查表结果的路由结果。
上述的变长多播数据信元处理方法,其中,所述多播查表结果包括:
所述变长多播数据信元的目的输出端口对应的链路的链路号以及当前进行多播查表是否出现拥塞的信息。
上述的变长多播数据信元处理方法,其中,所述将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元具体包括:
将所述完成保序处理的信元头的信息与所述多播查表结果合并;
根据合并后的所述信元头对应的地址信息,确定第一读地址;
根据所述第一读地址,读取所述第一缓存中与所述信元头对应的信元体;
将读取的信元体与所述信元头重组,得到所述目标变长多播数据信元。
上述的变长多播数据信元处理方法,其中,得到目标变长多播数据信元后还包括:
根据所述路由结果,对所述目标变长多播数据信元进行出端口处理。
上述的变长多播数据信元处理方法,其中,所述根据路由结果,对所述目标变长多播数据信元进行出端口处理具体包括:
根据所述路由结果,对所述目标变长多播数据信元进行出端口复制;
对复制后的目标变长多播数据信元进行出端口调度。
为了实现上述目的,本发明实施例还提供了一种变长多播数据信元处理装置,用于交换网元,所述装置包括:
切分模块,用于将接收的变长多播数据信元切分为信元头和信元体;
缓存模块,用于对所述信元体进行缓存处理;
路由处理模块,用于对所述信元头进行路由处理,获得路由结果;
信元重组模块,用于将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元。
上述的变长多播数据信元处理装置,其中,所述切分模块具体包括:
入队请求模块,用于在接收到所述变长多播数据信元时,向预设的第一缓存发起入队请求;
判断模块,用于根据所述第一缓存当前可用深度值判断所述变长多播数据信元能否入队,获得判断结果;
切分子模块,用于当所述判断结果指示所述变长多播数据信元能够入队时,将入队的所述变长多播数据信元切分为信元头和信元体。
上述的变长多播数据信元处理装置,其中,所述缓存模块具体包括:
缓存地址确定模块,用于所述变长多播数据信元入队时,确定所述变长多播数据信元在所述第一缓存中的第一缓存地址;
缓存子模块,用于将所述变长多播数据信元切分为信元头和信元体后,按照所述第一缓存地址缓存所述信元体。
上述的变长多播数据信元处理装置,其中,所述路由处理模块具体包括:
队列管理模块,用于根据所述变长多播数据信元的输入端口号,对所述信元头进行队列管理;
保序处理模块,用于对不同队列的变长多播数据信元的信元头进行保序处理;
信元头调度模块,用于根据所述保序处理的结果,对所述不同队列的变长多播数据信元的信元头进行调度;
多播查表模块,用于根据被调度的多播队列的调度信息中的多播标识,进行多播查表,获得具体为多播查表结果的路由结果。
上述的变长多播数据信元处理装置,其中,所述多播查表结果包括:
所述变长多播数据信元的目的输出端口对应的链路的链路号以及当前进行多播查表是否出现拥塞。
上述的变长多播数据信元处理装置,其中,所述信元重组模块具体包括:
合并模块,用于将所述完成保序处理的信元头的信息与所述多播查表结果合并;
读地址确定模块,用于根据合并后的所述信元头对应的地址信息,确定第一读地址;
读取模块,用于根据所述第一读地址,读取所述第一缓存中与所述信元头对应的信元体;
重组子模块,用于将读取的信元体与所述信元头重组,得到所述目标变长多播数据信元。
上述的变长多播数据信元处理装置,其中,所述装置还包括:
出端口处理模块,用于根据所述路由结果,对所述目标变长多播数据信元进行出端口处理。
上述的变长多播数据信元处理装置,其中,所述出端口处理模块具体包括:
多播复制模块,用于根据所述路由结果,对所述目标变长多播数据信元进行出端口复制;
多播调度模块,用于对复制后的目标变长多播数据信元进行出端口调度。
为了实现上述目的,本发明实施例还提供了一种交换网元,所述交换网元包括上述任一项所述的变长多播数据信元处理装置。
本发明实施例具有以下有益效果中的至少一项:
本发明实施例,通过切分变长多播数据信元,对切分的变长多播数据信元信元头进行路由处理,获得路由结果,再将切分的变长多播数据信元信元体和完成路由处理后的信元头进行信元重组,减少了处理过程中的数据总线位宽,不仅提高了处理速率,更是减少了处理路径上的资源消耗;
本发明实施例,对变长多播数据信元出端口全复制的缓存进行前移处理,即通过流控控制将出端口的缓存有效的转移到入端口进行处理,减少了出端口的多播复制缓存资源消耗;
本发明实施例,在保证变长多播数据信元无阻塞交换的同时,提高了芯片处理速率,降低了芯片的资源消耗,节约了芯片面积,降低了芯片成本。
具体实施方式
为使本发明实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明实施例提供了一种变长多播数据信元处理方法,用于交换网元,所述方法如图1所示,包括:
步骤11,将接收的变长多播数据信元切分为信元头和信元体;
步骤12,对所述信元体进行缓存处理;
步骤13,对所述信元头进行路由处理,获得路由结果;
步骤14,将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元。
本发明实施例提供的变长多播数据信元处理方法,通过将变长多播数据信元切分为信元头和信元体,将信元体进行缓存,同时对信元头路由处理,获得路由结果,再将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,减少了处理过程中的数据总线位宽,不仅提高了处理速率,更是减少了处理路径上的资源消耗,实现了本发明的目的。
在进行变长多播数据信元交换系统的设计时,我们首先根据链路数N、链路处理速率V1、编码效率E、变长多播数据信元的位宽范围W、平面数M,系统处理速率V之间的计算公式,V=(N*V1*E)/(W*M),通过数据分析,得出该系统最优的平面数M、系统处理速率V和变长多播数据信元的位宽范围W。
由于对各平面的变长多播数据信元的处理过程相同,下面仅以一个平面为例,分步骤对上述方法进行详细说明。
首先,优选地,步骤11具体包括:
在接收到所述变长多播数据信元时,向预设的第一缓存发起入队请求;
根据所述第一缓存当前可用深度值判断所述变长多播数据信元能否入队,获得判断结果;
当所述判断结果指示所述变长多播数据信元能够入队时,将入队的所述变长多播数据信元切分为信元头和信元体。
当接收到所述变长多播数据信元时,就向预设的第一缓存中的空闲链表发起入队请求,其中,第一缓存的深度值可以根据多播流控延时计算得到;此时,由空闲链表根据第一缓存当前可用深度值来决定该信元能否入队;所述信元能够入队时,将入队的信元切分为信元头和信元体。
如果空闲链表根据第一缓存当前可用深度值判断该信元不能入队时,则该信元需要进行等待,直到允许其入队。由于第一缓存的深度值是根据多播流控延时计算得到的,当第一缓存中的空闲链表不允许接收到的信元入队时,让接收信元进行等待,能够提升交换网元的处理速率,节约交换网元芯片面积,降低芯片成本。
多播数据信元需要进行路由处理来确定路由结果,当变长多播数据信元被切分成信元头和信元体后,只需要用信元头去进行路由处理即可,即在执行步骤13的同时,需要通过步骤12对所述信元体进行缓存处理。优选地,步骤12具体包括:
所述变长多播数据信元入队时,确定所述变长多播数据信元在所述第一缓存中的第一缓存地址;
按照所述第一缓存地址缓存所述信元体。
当空闲链表允许所述信元入队时,获取空闲链表的头指针作为所述变长多播数据信元在所述第一缓存中的第一缓存地址,按照所述第一缓存地址,将所述信元体作为数据写到第一缓存中。
变长多播数据信元接收、切分的过程如图2所示。
步骤13优选地,如图3所示,包括:
根据所述变长多播数据信元的输入端口号,对所述信元头进行队列管理;
对不同队列的变长多播数据信元的信元头进行保序处理;
根据所述保序处理的结果,对所述不同队列的变长多播数据信元的信元头进行调度;
根据被调度的多播队列的调度信息中的多播标识,进行多播查表,获得具体为多播查表结果的路由结果。
对所述信元头进行队列管理时,根据所述变长多播数据信元的输入端口号将信元头分为多个输入队列,队列的个数由链路接口数N和平面数M决定,具体为N/M个,信元入队时,用读取的空闲链表的头指针更新该队列链表的尾指针,同时以队列链表尾指针为地址,将信元头信息作为数据写入队列管理缓存中;
再对来自不同队列的变长多播数据信元的信元头进行保序处理;
再根据保序处理的结果,对信元头进行调度,在对信元头进行调度时,以队列链表的头指针为地址,读取队列管理缓存,用读出的数据更新队列链表头指针;
最后根据被调度的多播队列的调度信息中的多播标识,进行多播查表,获得具体为多播查表结果的路由结果。
优选地,所述多播查表结果包括:
所述变长多播数据信元的目的输出端口对应的链路的链路号以及当前进行多播查表是否出现拥塞的信息。
这里可以对信元头进行缓存处理,等待多播查表结果的反馈。
当信元头完成路由处理后,进入步骤14,将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元。
优选地,步骤14具体包括:
将所述完成保序处理的信元头的信息与所述多播查表结果合并;
根据合并后的所述信元头对应的地址信息,确定第一读地址;
根据所述第一读地址,读取所述第一缓存中与所述信元头对应的信元体;
将读取的信元体与所述信元头重组,得到所述目标变长多播数据信元。
将所述完成保序处理的信元头的信息与所述多播查表结果合并;再根据合并后的所述信元头对应的地址信息更新空闲链表尾指针,并以此地址信息作为第一读地址,读取第一缓存,得到变长多播数据信元的信元体,将信元体和信元头重组得到目标变长多播数据信元。
信元变长多播数据信元出端口全复制缓存前移过程如图4所示,通过对多播查表请求进行流量控制以及根据多播查表结果进行流量控制,进一步地,对信元头与信元体的重组进行流量控制,将出端口的缓存有效的转移到入端口进行处理,大大减少了出端口的多播复制缓存资源的消耗。
上述的变长多播数据信元处理方法,优选地,在得到目标变长多播数据信元后还包括:
步骤15,根据所述路由结果,对所述目标变长多播数据信元进行出端口处理。
其中,所述根据路由结果,对所述目标变长多播数据信元进行出端口处理具体包括:
根据所述路由结果,对所述目标变长多播数据信元进行出端口复制;
对复制后的目标变长多播数据信元进行出端口调度。
当根据路由结果,将变长多播数据信元送到目的输出端口进行复制后,应根据目的输出端口的缓存情况以及整个系统的缓存情况对信元重组进行多播流量控制,使得在不影响性能的情况下减少出端口的缓存量,同时根据出端口的调度情况控制多播查表请求的下发和多播查表结果的上传。
下面对本发明实施例提供的变长多播数据信元处理方法的整体过程做进一步详述。
以链路接口数为N,平面数为M的交换芯片为例,各平面处理过程一致,所以仅以一个平面为例进行说明,所述方法具体包括:
步骤1,接收变长多播数据信元,向第一缓存的空闲链表发出入队请求;
步骤2,空闲链表管理第一缓存中的空闲缓存,根据第一缓存的当前可用缓存深度值来决定信元能否入队;
步骤3,将入队的信元切分为信元头和信元体两部分;
步骤4,信元入队时,将读取的空闲链表头指针作为第一缓存地址,按照第一缓存地址,将信元体作为数据写入到第一缓存中;
步骤5,根据信元的输入端口号将输入信元头分为N/M个输入队列,信元入队时,用读取的空闲链表头指针更新队列链表的尾指针,同时以队列链表尾指针为地址,将信元头等信息作为数据写入队列管理缓存;
步骤6,对来自不同队列的信元头进行保序处理;
步骤7,根据保序处理的结果对信元头进行调度,队列调度时,以队列链表头指针作为地址,读取队列管理缓存,用读出的数据更新队列链表头指针;
步骤8,提取被调度多播队列调度信息中的多播标识,发送多播查表请求;
步骤9,根据多播标识进行多播路由查找,获得多播查表结果;
步骤10,对信元头进行缓存处理,等待多播查表结果的反馈;
步骤11,将多播查表结果和信元头的信息进行合并处理;
步骤12,用合并后的信元头信息中的地址信息更新空闲链表尾指针,并以此地址信息为第一读地址,读取第一缓存,得到变长多播数据信元的信元体;
步骤13,将信元头和信元体进行信元重组;
步骤14,根据多播查表结果将多播信元送到目的出端口进行缓存;
步骤15,根据目的出端口缓存以及整体缓存状况对输入平面进行多播流控,使得在不影响性能的情况下减少出端口的缓存量;
步骤16,根据调度状况控制多播查表请求的下发和多播查表结果的上传;
步骤17,对来自不同平面(共M个平面)的复制后的多播信元进行调度。
本发明实施例提供的变长多播数据信元处理方法,通过切分变长多播数据信元,对切分的变长多播数据信元信元头进行路由处理,对信元体进行缓存,待路由处理完成后,再将缓存的信元体和完成路由处理的信元头进行信元重组,大大减少了处理过程中的数据总线位宽,不仅可以大大提高处理速率,更是减少了处理路径上的资源消耗;同时对变长多播数据信元出端口全复制的缓存进行前移处理,即通过流控控制将出端口的缓存有效的转移到入端口进行处理,大大减少了出端口的多播复制缓存资源消耗;另外,通过对变长多播数据信元的切分、重组,出端口复制缓存的前移处理,有效的解决了资源和速率的瓶颈,在提升交换芯片处理速率的同时降低交换芯片资源的消耗,节约芯片面积,降低芯片成本。
本发明实施例还提供了一种变长多播数据信元处理装置,用于交换网元,所述装置如图5所示,包括:
切分模块,用于将接收的变长多播数据信元切分为信元头和信元体;
缓存模块,用于对所述信元体进行缓存处理;
路由处理模块,用于对所述信元头进行路由处理,获得路由结果;
信元重组模块,用于将完成路由处理的信元头与缓存处理后的所述信元体进行信元重组,得到目标变长多播数据信元。
上述的变长多播数据信元处理装置,其中,所述切分模块具体包括:
入队请求模块,用于在接收到所述变长多播数据信元时,向预设的第一缓存发起入队请求;
判断模块,用于根据所述第一缓存当前可用深度值判断所述变长多播数据信元能否入队,获得判断结果;
切分子模块,用于当所述判断结果指示所述变长多播数据信元能够入队时,将入队的所述变长多播数据信元切分为信元头和信元体。
上述的变长多播数据信元处理装置,其中,所述缓存模块具体包括:
缓存地址确定模块,用于所述变长多播数据信元入队时,确定所述变长多播数据信元在所述第一缓存中的第一缓存地址;
缓存子模块,用于将所述变长多播数据信元切分为信元头和信元体后,按照所述第一缓存地址缓存所述信元体。
上述的变长多播数据信元处理装置,其中,所述路由处理模块具体包括:
队列管理模块,用于根据所述变长多播数据信元的输入端口号,对所述信元头进行队列管理;
保序处理模块,用于对不同队列的变长多播数据信元的信元头进行保序处理;
信元头调度模块,用于根据所述保序处理的结果,对所述不同队列的变长多播数据信元的信元头进行调度;
多播查表模块,用于根据被调度的多播队列的调度信息中的多播标识,进行多播查表,获得具体为多播查表结果的路由结果。
上述的变长多播数据信元处理装置,其中,所述多播查表结果包括:
所述变长多播数据信元的目的输出端口对应的链路的链路号以及当前进行多播查表是否出现拥塞。
上述的变长多播数据信元处理装置,其中,所述信元重组模块具体包括:
合并模块,用于将所述完成保序处理的信元头的信息与所述多播查表结果合并;
读地址确定模块,用于根据合并后的所述信元头对应的地址信息,确定第一读地址;
读取模块,用于根据所述第一读地址,读取所述第一缓存中与所述信元头对应的信元体;
重组子模块,用于将读取的信元体与所述信元头重组,得到所述目标变长多播数据信元。
上述的变长多播数据信元处理装置,其中,所述装置还包括:
出端口处理模块,用于根据所述路由结果,对所述目标变长多播数据信元进行出端口处理。
上述的变长多播数据信元处理装置,其中,所述出端口处理模块具体包括:
多播复制模块,用于根据所述路由结果,对所述目标变长多播数据信元进行出端口复制;
多播调度模块,用于对复制后的目标变长多播数据信元进行出端口调度。
本发明实施例还提供了另外一种变长多播数据信元处理装置,如图6所示,将对信元头进行的队列管理、保序处理以及信元头调度划分为信元头处理过程,将多播路由查表过程作为单独的路由处理过程,该装置包括:
信元接收切分模块,用来接收变长多播数据信元,管理变长多播数据信元的入队,并将入队的变长多播数据信元切分为信元头和信元体两个部分进行处理;
信元体缓存模块,用来存储变长多播数据信元的信元体;
信元头处理模块,首先对来自不同端口的变长多播数据信元信元头进行队列管理,然后对不同队列的变长多播数据信元信元头进行保序处理,根据保序处理的结果对信元头进行调度,对调度结果进行路由查找请求处理;
路由处理模块,根据多播查表请求查多播路由表;
信元重组模块,根据变长多播数据信元信元头信息,查表结果等将信元头和信元体进行合并调度,并根据流控信息控制多播查表请求的下发和多播查表结果的上传;
多播复制模块,根据多播查表结果对多播信元进行出端口复制,并根据缓存情况对信元重组模块进行流控;
多播调度模块,对复制后的多播进行出端口调度。
变长多播数据信元处理装置的结构并不限于以上两种结构方式,在此不一一列举。
本发明实施例还提供了一种交换网元,所述交换网元包括上述任一项所述的变长多播数据信元处理装置。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。