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

文档序号:9754487阅读:来源:国知局
报文数据外的多个部分的报文数据的缓存空间对应的指针。
[0116]比如:通过指针是:0、3、5、6的指针对应的4个缓存空间来对报文数据进行缓存,指针O头指针,而指针3、5、6就是第二类缓存空间对应的指针,指针3、5、6就会预先存储在头指针对应的第一类缓存空间中。那么在读取报文之前,可以在报文头指针对应的第一类缓存空间中就可以获取第二类缓存空间对应的指针3、5、6。
[0117]步骤310、根据多个指针,交换机获取多个第二类缓存空间。
[0118]具体地,根据多个第二类缓存空间对应的多个指针,交换机从缓存空间链表中找到第二类缓存空间对应的多个指针,根据指针找到分别缓存报文的第一部分报文数据外的多个部分的报文数据的第二类缓存空间。
[0119]步骤311、从多个第二类缓存空间中,交换机并行读取第一部分报文数据外的多个部分的报文数据。
[0120]具体地,交换机按照报文的缓存空间链表中的第二类缓存空间对应的指针顺序并行读取第二类缓存空间中的报文数据;而且在读取完某一个指针对应的缓存空间中缓存的报文数据后,间隔很短的时间周期就可以立刻并行读取下一个指针对应的缓存空间中缓存的报文数据,减小了网络中交换机转发报文的时延。
[0121]比如:通过指针:0、3、5、6对应的4个缓存空间来对报文数据进行缓存,那么交换机分别找到指针0、3、5、6对应的缓存空间,然后按照缓存报文的顺序读取指针对应的缓存空间中缓存的报文数据,完成缓存在RAM中的报文的读取操作。步骤312、读取到完整的报文数据后,交换机转发报文。
[0122]具体地,交换机在读取完报文的任意部分数据后,都将读取的该部分报文数据进行缓存,然后立刻就可以读取另一部分的报文数据,直到读取报文的完整数据。在预读取到完整的报文数据后,交换机将读取的完整的报文通过预先确定的接口转发到用户接入网络的终端对应的网络节点中。
[0123]基于上述描述,本发明实施例提供的报文转发方法,通过从报文的缓存空间链表中获取报文的头指针,报文的头指针中记录有缓存报文其余部分的第二类缓存空间对应指针,可以使缓存到RAM中的报文被转发时,可以仅通过读取报文的头指针就可以获取报文的头指针对应的第一类缓存空间和第一类缓存空间中记录的多个指针对应的指针所对应的分别缓存报文的第一部分报文数据外的多个部分的报文数据的第二类缓存空间,从而并行读取完整的报文数据,在读取到完整的报文数据后,完成报文的转发,避免了传统的报文缓存空间链表读取报文时延较长的缺陷,可以使用价格低廉且存储空间大的DDR SDRAM等RAM芯片对报文进行缓存并转发,无需使用价格昂贵且存储空间小的QDRSDRAM对缓存在RAM中的报文进行转发,降低了对缓存在RAM中的队列进行管理的成本,并提高了链表的存储空间。
[0124]实施例三
[0125]本发明实施例提供了一种报文转发装置,参见图5,报文转发装置包括:第一获取模块400、第二获取模块401、第三获取模块402、第四获取模块403、读取模块404和转发模块 405。
[0126]具体地,第一获取模块400,用于获取对报文的转发指令,报文有缓存空间链表,缓存空间链表包括报文的所有指针,报文的所有指针中的头指针对应的第一类缓存空间中记录有报文的第一部分报文数据和多个第二类缓存空间对应的多个指针,多个第二类缓存空间分别缓存报文的第一部分报文数据外的多个部分的报文数据;第二获取模块401和第一获取模块400相连接,用于从报文的缓存空间链表中获取报文的头指针;第三获取模块402和第二获取模块401相连接,用于从报文的头指针对应的第一类缓存空间中,读取报文的第一部分报文数据,并获取多个指针;第四获取模块403和第三获取模块402相连接,用于根据多个指针,获取多个第二类缓存空间;读取模块404和第四获取模块403相连接,用于从多个第二类缓存空间中,并行读取报文的第一部分报文数据外的多个部分的报文数据;转发模块405和读取模块404相连接,用于读取到完整的报文数据后,转发报文。
[0127]基于上述描述,本发明实施例提供的报文转发装置,通过从报文的缓存空间链表中获取报文的头指针,报文的头指针中记录有缓存报文其余部分的第二类缓存空间对应指针,可以使缓存到RAM中的报文被转发时,可以仅通过读取报文的头指针就可以获取报文的头指针对应的第一类缓存空间和第一类缓存空间中记录的多个指针对应的指针所对应的分别缓存报文的第一部分报文数据外的多个部分的报文数据的第二类缓存空间,从而并行读取完整的报文数据,在读取到完整的报文数据后,完成报文的转发,避免了传统的报文缓存空间链表读取报文时延较长的缺陷,可以使用价格低廉且存储空间大的DDR SDRAM等RAM芯片对报文进行缓存并转发,无需使用价格昂贵且存储空间小的QDRSDRAM对缓存在RAM中的报文进行转发,降低了对缓存在RAM中的队列进行管理的成本,并提高了链表的存储空间。
[0128]实施例四
[0129]本发明实施例提供了一种报文转发装置,参见图6,报文转发装置包括:第一获取模块500、第二获取模块501、第三获取模块502、第四获取模块503、读取模块504、转发模块505、接收模块506、判断模块507、第一处理模块508、第二处理模块509、缓存模块510、存储模块511和第三处理模块512。
[0130]具体地,接收模块506,用于接收报文;判断模块507和接收模块506相连接,用于确定用于缓存报文的RAM的空间是否已满;第一处理模块508和判断模块507相连接,用于若确定RAM的空间未满,则从RAM中获取多个空闲缓存空间对应的指针;第三处理模块512和判断模块507相连接,用于若确定RAM的空间已满,则丢弃报文;第二处理模块509和第一处理模块508相连接,用于根据多个空闲缓存空间对应的指针,生成报文的缓存空间链表;缓存模块510和第二处理模块509相连接,用于根据生成的缓存空间链表,将接收到的报文缓存到多个空闲缓存空间中,其中,多个空闲缓存空间包括第一类缓存空间和多个第二类缓存空间;存储模块511和缓存模块510相连接,用于将报文的缓存空间链表的头指针存储到报文所在队列的队列链表中;第一获取模块500和存储模块510相连接,用于获取对报文的转发指令,报文有缓存空间链表,缓存空间链表包括报文的所有指针,报文的所有指针中的头指针对应的第一类缓存空间中记录有报文的第一部分报文数据和多个第二类缓存空间对应的多个指针,多个第二类缓存空间分别缓存报文的第一部分报文数据外的多个部分的报文数据;第二获取模块501和第一获取模块500相连接,用于从报文的缓存空间链表中获取报文的头指针;第三获取模块502和第二获取模块501相连接,用于从报文的头指针对应的第一类缓存空间中,读取报文的第一部分报文数据,并获取多个指针;第四获取模块503和第三获取模块502相连接,用于根据多个指针,获取多个第二类缓存空间;读取模块504和第四获取模块503相连接,用于从多个第二类缓存空间中,并行读取报文的第一部分报文数据外的多个部分的报文数据;转发模块505和读取模块504相连接,用于读取到完整的报文数据后,转发报文。
[0131]具体地,在判断模块507中:
[0132]若RAM中缓存的报文占用的缓存空间数量小于预先设定的阈值,则说明RAM未满。
[0133]进一步地,队列链表和缓存空间链表存储在RAM中。
[0134]基于上述描述,本发明实施例提供的报文转发装置,通过从报文的缓存空间链表中获取报文的头指针,报文的头指针中记录有缓存报文其余部分的第二类缓存空间对应指针,可以使缓存到RAM中的报文被转发时,可以仅通过读取报文的头指针就可以获取报文的头指针对应的第一类缓存空间和第一类缓存空间中记录的多个指针对应的指针所对应的分别缓存报文的第一部分报文数据外的多个部分的报文数据的第二类缓存空间,从而并行读取完整的报文数据,在读取到完整的报文数据后,完成报文的转发,避免了传统的报文缓存空间链表读取报文时延较长的缺陷,可以使用价格低廉且存储空间大的DDR SDRAM等RAM芯片对报文进行缓存并转
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1