用于多播处理的报文复制方法和装置的制作方法

文档序号:7683505阅读:244来源:国知局
专利名称:用于多播处理的报文复制方法和装置的制作方法
技术领域
本发明涉及通信领域,具体涉及到一种用于多播(广播、组播) 处理的才艮文复制方法和装置。
背景技术
广播是将报文发送给网络中的所有主机(通常是本地相连的网 络),而组播是将报文发送到网络的特定主机组。广播和组4番适用于 需要将报文同时发送给多个接收者的应用。IP多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一报文到多台主机( 一次的,同时的)的TCP/IP 网络技术。多播作为一点对多点的通信,可以有效地节省网络带宽。 多播能使一个或多个多播源只把报文发送给特定的多播组,而只有 加入该多播组的主机才能接收到报文。目前,IP多播技术^皮广泛应 用在网络音频/一见频广^"、网络视频会议等方面。目前最简单的多播转发估文法就是将原始报文复制为多4分报文, 然后分别进行才艮文封装,分别发送。由于存在着大量的IO (输入输 出)操作,因而报文复制性能低。针对上述的缺陷,现有技术中提供了一种在Intel IXP2400网络 处理器上实现多播转发的方法,该方法包括接收模块(RX)接收 从外端口来的^^艮文,通过处理一莫块处理完毕后送到封装才莫块(EM ),封装模块(EM )根据多播索引(MID )查找多播邻接封装表(DMAT ), 多播邻接封装表是一个链表,每一项保存一个出口报文封装格式信 息;然后新出队一个buffer,用于保存多4番报文头buffer, 4巴才艮文头 内容保存到该buffer中,构造多播报文头META(报文描述符);把 META《连到才艮文SOP ( Start Of Package,才艮文头)META前,形成 一个报文链表;把报文送到队列管理模块(QM),发送调度模块 (TXS)调度包给发送模块(TX),最终发送模块把报文发送出去。 该方法通过只修改报文头,不复制报文体,以减少报文复制,提高 报文复制性能。buffer是处理器中用于保存报文内容的内存区。其中,每个 buffer对应着两块内存数据DATA (用于4呆存才艮文的实际内容)和 报文描述符META(保存报文大小等信息)。buffer chain是多个buffer 可以连4妄起来表示一个才艮文,以容纳4交长才艮文。然而,需要TX模块处理buffer chain,即一次发送过程中需要 处理两个buffer,所以大幅度增加了发送模块(TX)的负担,影响 了报文复制性能。发明内容本发明旨在提供一种用于多播处理的报文复制方法和装置,能 够解决上述现有技术中TX负担过重的问题。根据本发明的一个实施例,提供了 一种用于多播处理的报文复 制方法,包括以下步骤获取要多播处理的报文的报文体地址;获 取关于该报文的多播组信息和多播组信息所指向的链表中各成员的 多播成员信息;以及使用各成员的多播成员信息和报文的才艮文体地 址,构造其只于应的才艮文头,添加到才艮文中,并发送主会该成员。根据本发明的另 一实施例,提供了 一种用于多播处理的才艮文复制装置,包括第一获取模块,用于获取要多播处理的报文的报文 体地址;第二获^^莫块,用于获取关于报文的多播组信息和多播组 信息所指向的链表中各成员的多播成员信息;以及复制才莫块,用于 使用各成员的多播成员信息和报文的报文体地址,构造其对应的报 文头,添力口到净艮文中,并发送纟合该成员。在上述现有4支术中,通过构造多个才艮文头buffer,然后一寻才艮文 头buffer链接到报文载荷的buffer上,在n次复制过程中,需要n+l 次buffer出队和n+l次buffer入队。而在本发明实施例的才艮文复制 方法和装置中,只需直接修改报文头,避免了现有技术中的队列操 作,所以减轻了 TX模块的负担,在进行多播处理时,可以使网络 处理器达到线速处理能力。附图^兌明此处所说明的附图用来提供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并 不构成对本发明的不当限定。在附图中

图1示出了根据本发明一个实施例的用于多播处理的报文复制 方法的流;f呈图;图2示出了根据本发明一个实施例的META格式;图3示出了根据本发明一个实施例的用于多播处理的净艮文复制 装置的方框图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。图1示出了根据本发明一个实施例的用于多播处理的报文复制方法的流程图,其包括以下步驶《步骤SIO,获取要多播处理的报文的报文体地址;步骤S20,获取关于该报文的多播组信息和多播组信息所指向 的链表中各成员的多播成员信息;以及步骤S30,使用各成员的多播成员信息和报文的报文体地址, 构造其对应的才艮文头,添加到才艮文中,并发送症会该成员。多播组信息保存了该多播组的成员个数、多播成员链表的头指 针;多播成员信息保存了该多播成员的MAC、出接口、 Vlan信息, 以及下一个成员的链表指针。在上述现有4支术中,通过构造多个才艮文头buffer,然后将净艮文 头buffer链接到报文栽荷的buffer上,在n次复制过程中,需要n+1 次buffer出队和n+1次buffer入队。而在该才艮文复制方法中,只需 直接修改报文头,避免了现有技术中的队列操作,所以减轻了 TX 模块的负担,在进行多播处理时,可以使网络处理器达到线速处理 能力。多播组信息保存了该多播组的成员个数、多播成员链表的头指 针;多播成员信息保存了该多播成员的MAC、出接口、 Vlan信息, 以及下一个成员的链表指针。无论是组播或者广播,都对应唯一的多播索引。步骤S20具体 可包括从多播组信息中提取多播索引;根据多播索引(组播地址 或广播域ID)查找多播成员表;从多播成员表中获取各成员的相关 信息。优选的,才艮文采用META格式,报文的报文体地址乂人META格 式中的read—offset字段取得。接收报文后,可保存报文的IP头所在 位置为read—offset。优选的,步骤S30具体包括每构造一个成员所对应的才艮文头, 则将剩余未发送的多播成员的总数量减1;指针指向链表中的下一 个成员;如果总数量不为零,则根据指针对下一个成员构造报文头 并添力口到净艮文中。报文采用META格式,总数量可以是META格式中的mul一count 字段。报文采用META格式,则构造的报文头是报文的L2头。图2示出了根据本发明一个实施例的META格式。例如报文采 用报文描述符META格式,则报文头偏移值是图中META格式中的 read_offset字段,总数量是图中廳TA才各式中的mul—count字段。这样,处理模块在处理多播报文时,需要在META中,保存原 始报文IP头所在偏移;TX模块根据多播成员信息,修改相应的 L2/L3 4艮文头;在发送完该纟艮文后,判断如果复制没有结束的话, 就将该报文打回,将报文的相关信息写到Scratch Ring,供处理模块 进行后续修改。本发明可以4吏用Intel IXP系列处J里器例如(Intel IXP 2400或 Intel IXP 2800 )执行上述的报文复制方法,复制报文的报文头具体可包括使用Intel IXP系列处理器的buffer复制才艮文头。Intel IXP 系列处理器可以处理META才各式的多4番才艮文。可以使用Intel IXP 系列处理器的Scratch Ring (硬件环结构)来实现报文头的构造。 Scratch Ring相比丰欠件环来i兌,存取速度更快,带宽更大。该方案进行一个多播报文的n次复制,与处理n个单纟番才艮文过 程类似,因而可以4呆i正系统的处理性能。由于没有了RX才莫块的参 与,所以n次复制的岁文率更高。经过实际测试,该复制方案在Intel IXP2800平台上可以达到IOG线速转发能力。根据本发明的一个实施例,采用Intel IXP网络处理器扭j亍上述 用于多播处理的报文复制方法,其中报文采用图2所示的META格 式,具体包4舌以下步艰《复制报文的第一份1 )将报文IP头偏移(META格式中的read—offset)保存在报 文描述信息(META)中;2 )将本次多播复制需要复制的总份数(mul—count)保存在 META中;3) 读取多4番成员信息,根据多播成员信息,《奮改相应的L2/L3 报文头;4) 将报文发送给TX模块进行发送。该报文发送完毕后,如果 mul_count不为零,则将该报文的相关信息写到处理模块对应的 Scratch Ring, 乂人而进4亍后续处理。后续复制^艮文的处理1 )读取META中保存的read_offset,找到才艮文的IP头位置;2)读取多播成员信息,根据多播成员信息,修改相应的L2/L3 报文头;3 )将报文发送给TX模块进行发送。该报文发送完毕后,如果 mul—count不为零,则将该报文的相关信息写到处理才莫块对应的 Scratch Ring, 乂人而进4亍后续处理。该实施例充分利用了多纟番才艮文复制时,只有才艮文头不一样,而 报文体即报文内容完全一样的特点,在进行多播报文复制时,重复 利用同一个buffer,只{奮改该buffer中的才艮文头部分,/人而完全避 免了报文复制过程中,通常会出现的多次buffer申请/释放,或者报 文内容复制问题。同时,由于采用了单buffer的报文复制方案,而 TX的单buffer处理性能是最高的,因而该方案最大程度的提高了 TX纟莫块的处理岁支率。图3示出了根据本发明一个实施例的用于多播处理的报文复制 装置的方框图,包括获取模块IO,第一获取模块,用于获取要多播处理的报文的报 文体地址;第二获取模块20,用于获取关于报文的多播组信息和多播组信 息所指向的链表中各成员的多播成员信息;以及复制模块30,用于使用各成员的多播成员信息和报文的报文体 地址,构造其对应的报文头,添加到报文中,并发送给该成员。可以采用Intel IXP系列网络处理器来实现上述的报文复制装 置。可以看出本报文复制装置该方案保证了不降低TX和RX处理性能,从而保证了报文复制性能和单播处理同样的性能,可以实现 相应处理器的线速转发。/人以上的描述中,可以看出,本发明实现了如下l支术凌丈果1) 只需复制报文头,避免了现有技术中的队列操作;2) 减轻了 TX模块的负担,在进行多播处理时,可以使网络处 理器达到线速处理能力。显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分別制作成各个集成 电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模 块来实现。这样,本发明不限制于任何特定的^更件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种用于多播处理的报文复制方法,其特征在于,包括以下步骤获取要多播处理的报文的报文体地址;获取关于所述报文的多播组信息和所述多播组信息所指向的链表中各成员的多播成员信息;以及使用所述各成员的多播成员信息和所述报文的报文体地址,构造其对应的报文头,添加到所述报文中,并发送给该成员。
2. 根据权利要求1所述的报文复制方法,其特征在于,获取各成 员的多播成员信息具体包括从所述多播组信息中提取多播索引;根据所述多播索引查找多播成员表;从所述多播成员表中获取所述各成员的相关信息。
3. 根据权利要求1所述的报文复制方法,其特征在于,所述报文 采用才艮文描述符才各式,所述报文的才艮文体i也址从所述才艮文描述 符才各式中的read—offset字段取得。
4. 根据权利要求3所述的报文复制方法,其特征在于,还包括4呆存所述才艮文的IP头所在位置为read一offset。 2
5. 根据权利要求1所述的报文复制方法,其特征在于,使用所述 各成员的多播成员信息和所述报文的报文体地址,构造其对应 的报文头并添加到所述报文中具体包括每构造一个所述成员所对应的净艮文头,则将剩余未发送的 所述多播成员的总数量减1;指针指向所述链表中的下一个成员;如果所述总数量不为零,则根据所述指针对下一个所述成 员构造才艮文头并添加到所述报文中。
6. 根据权利要求5所述的报文复制方法,其特征在于,所述报文 釆用报文描述符格式,所述总数量是所述才艮文描述符格式中的 mul_count字段。
7. 根据权利要求1所述的报文复制方法,其特征在于,所述报文 采用报文描述符格式,构造的所述报文头是所述报文的L2头。
8. 根据权利要求1至7任一项所述的报文复制方法,其特征在于, 使用Intel IXP系列处理器执行所述才艮文复制方法。
9. 根据权利要求8所述的报文复制方法,其特征在于,使用所述 Intel IXP系列处理器的硬件环结构来实现所述报文头的构造。
10. —种用于多播处理的报文复制装置,其特征在于,包括第一获取模块,用于获取要多播处理的报文的才良文体地址;第二获取模块,用于获取关于所述报文的多播组信息和所述多播组信息所指向的链表中各成员的多播成员信息;以及复制模块,用于使用所述各成员的多播成员信息和所述报 文的报文体地址,构造其对应的报文头,添加到所述才艮文中, 并发送乡合该成员。
全文摘要
本发明提供了一种用于多播处理的报文复制方法和装置,该方法包括以下步骤获取要多播处理的报文的报文体地址;获取关于该报文的多播组信息和多播组信息所指向的链表中各成员的多播成员信息;以及使用各成员的多播成员信息和报文的报文体地址,构造其对应的报文头,添加到报文中,并发送给该成员。本发明在进行多播处理时,可以使网络处理器达到线速处理能力。
文档编号H04L12/16GK101227306SQ20081000724
公开日2008年7月23日 申请日期2008年2月19日 优先权日2008年2月19日
发明者王肖飞 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1