一种报文转发方法和装置的制造方法_2

文档序号:9754487阅读:来源:国知局
第一部分报文数据外的多个部分的报文数据的第二类缓存空间,从而并行读取完整的报文数据,在读取到完整的报文数据后,完成报文的转发,避免了传统的报文缓存空间链表读取报文时延较长的缺陷,可以使用价格低廉且存储空间大的双倍数据倍率同步动态随机存储器(英文:Double Data Rate synchronous dynamic random-accessmemory,缩写:DDR SDRAM)等RAM芯片对报文进行缓存并转发,无需使用价格昂贵且存储空间小的QDR SDRAM对缓存在RAM中的报文进行转发,降低了对缓存在RAM中的队列进行管理的成本,并提高了链表的存储空间。
【附图说明】
[0045]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]图1是本发明实施例提供的报文转发方法所涉及的一种实施环境的结构示意图;
[0047]图2是本发明实施例一提供的报文转发方法流程图;
[0048]图3是本发明实施例二提供的报文转发方法流程图;
[0049]图4是本发明实施例三提供的报文转发方法中缓存空间链表和队列链表的嵌套结构示意图。
[0050]图5是本发明实施例三提供的报文转发装置结构示意图;
[0051]图6是本发明实施例四提供的报文转发装置结构示意图;
[0052]图7是本发明实施例五提供的报文转发装置结构示意图。
【具体实施方式】
[0053]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0054]除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
[0055]对各实施例中出现的技术术语进行如下定义:
[0056]队列链表,用于按照报文的入队顺序记录各报文的头指针,先入队的报文的头指针只记录有紧跟它入队的下一个队列的报文的头指针,以此来记录队列中报文的转发顺序。
[0057]缓存空间链表,用于记录了缓存报文数据的所有缓存空间对应的指针。缓存空间链表中的每个指针都对应一块缓存空间的物理地址,因此每个指针都与一块缓存空间对应。
[0058]各实施例中所描述的指针,可以是指针本身,也可以是指针的编号。
[0059]参见图1,其示出了本发明实施例提供的报文转发方法所涉及的一种具有报文转发和流量监控的装置的结构示意图,该环境包括:拥塞管理模块100、包存储模块110、数据输出模块120和内存管理模块130。
[0060]其中,拥塞管理模块100根据当前RAM的空间是否已满判断接收的报文是否需要丢弃;包存储模块110根据报文的大小为该报文分配一定数量的空闲缓存空间,同时根据分配的空闲缓存空间对应的空闲缓存空间链表指针生成该报文的缓存空间链表,按照缓存空间链表中该报文的头指针对应的缓存空间记录的指针顺序,将报文缓存到所分配的空闲缓存空间中,在该报文的头指针对应的缓存空间中记录的多个缓存报文其余部分的缓存空间对应的指针,然后将该报文的头指针记录到该报文所在队列的队列链表的尾部,完成报文的缓存操作;在需要转发队列中的报文时,数据输出模块120从第一个报文的缓存空间链表中获取报文的头指针,从第一个报文的头指针对应的缓存空间中获取预先记录的多个缓存报文其余部分的缓存空间对应的指针,然后从报文的头指针对应的缓存空间和头指针中记录的指针对应的缓存空间中,读取报文的完整数据,并将该队列的第一个报文转发,然后根据第一个报文的头指针记录的队列中第二个需要转发的报文的头指针,找到第二个需要转发的报文的头指针,再次通过队列的第一个报文转发过程对队列中第二个需要转发的报文进行转发,以此类推,转发该队列的所有报文;内存管理模块130为包存储模块存储的报文提供RAM中的空闲缓存空间,且在某个报文转发后,回收分配给已转发报文的RAM缓存空间。
[0061]其中,拥塞管理模块100、包存储模块110、队列调度模块120、数据输出模块130和内存管理模块140都设置在转发芯片上,而该转发芯片一般都设置在具有报文转发和流量监控的装置上。其中,转发芯片是FPGA芯片或网络处理器。
[0062]实施例一
[0063]本发明实施例提供了一种报文转发方法,参见图2,方法流程包括:
[0064]步骤200、交换机的转发芯片获取对报文的转发指令,报文有缓存空间链表,缓存空间链表包括报文的所有指针,报文的所有指针中的头指针对应的第一类缓存空间中记录有报文的第一部分报文数据和多个第二类缓存空间对应的多个指针,多个第二类缓存空间分别缓存报文的第一部分报文数据外的多个部分的报文数据。
[0065]其中,所要转发的报文,可以是网络中需要转发的任意报文,存储在随机存储器(英文:random-access memory,缩写:RAM)中。RAM以缓存空间链表的形式存储该报文。
[0066]其中,报文的头指针是缓存空间链表中缓存报文数据的第一个缓存空间对应的指针;报文的头指针对应的第一类缓存空间中存储有:队列指针、报文描述符、多个第二类缓存空间对应的指针和报文数据。
[0067]其中,队列指针为队列中紧邻该报文进入队列的下一个报文的头指针。
[0068]步骤201、交换机的转发芯片从报文的缓存空间链表中获取报文的头指针。
[0069]具体地,交换机的转发芯片从报文的缓存空间链表中获取报文的头指针,根据获取的头指针找到对应的第一类缓存空间。
[0070]步骤202、从报文的头指针对应的所第一类缓存空间中,交换机的转发芯片读取报文的第一部分报文数据,并获取多个指针。
[0071]步骤203、根据多个指针,交换机的转发芯片获取多个第二类缓存空间。
[0072]具体地,通过从报文的头指针对应的第一类缓存空间中获取第二类缓存空间对应的多个指针,根据获取的多个指针从缓存空间列表中找到第二类缓存空间所对应的指针,根据指针找到第二类缓存空间。
[0073]步骤204、交换机的转发芯片从多个第二类缓存空间中,并行读取第一部分报文数据外的多个部分的报文数据。
[0074]具体地,由于获取到了缓存第一部分报文数据外的多个部分的报文数据的第二类缓存空间,说明已经获取到了缓存报文数据的所有缓存空间,那么就可以并行读取第二类缓存空间中的报文数据,以获取完整的报文数据。
[0075]其中,对多个第二类缓存空间中的报文数据的并行读取是指读取这些报文数据的操作相互间没有依赖性,可以在短时间内,例如几个时钟周期内,先后发起各个读取操作,并不要求严格地同时读取这些报文数据。
[0076]步骤205、读取到完整的报文数据后,交换机的转发芯片转发报文。
[0077]具体地,在交换机中的转发芯片并行读取报文数据的过程中,每次只能从缓存空间中获取报文的一部分数据,而只有在获取到完整的报文数据时,才能对报文进行转发操作,所以转发芯片就会在并行读取报文数据的过程完成,直到将完整的报文数据都读取出来后转发报文。
[0078]通过以上描述,通过从报文的缓存空间链表中获取报文的头指针,报文的头指针中记录有缓存报文其余部分的第二类缓存空间对应指针,可以使缓存到RAM中的报文被转发时,可以仅通过读取报文的头指针就可以获取报文的头指针对应的第一类缓存空间和第一类缓存空间中记录的多个指针对应的指针所对应的分别缓存报文的第一部分报文数据外的多个部
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1