一种报文传输方法和装置制造方法及图纸

技术编号:14405093 阅读:55 留言:0更新日期:2017-01-11 16:45
本发明专利技术公开了一种报文传输方法,包括:报文队列输出报文时,获取在报文输入所述报文队列时建立的一条与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,所述切片与所述报文队列中的报文切片的地址一一对应;根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片,所述i是正整数;根据各切片对应的报文切片的地址,从所述报文队列中输出所述报文切片,并将所述链表指针指向第i+1个组块的地址。本发明专利技术还同时公开了一种报文传输装置。

【技术实现步骤摘要】

本专利技术涉及分组转发设备的管理技术,特别涉及一种报文传输方法和装置
技术介绍
随着互联网的迅猛发展,网络带宽迅速增加,分组转发设备尤其是高端路由器的接口速度和队列数也随之迅速增加。为了适应接口速度和队列数增加的速度,一般路由器的网络处理器芯片都会内置专门的流量管理系统来完成对高速数据流的管理,再将报文缓存经过处理后输出。现有技术大多采用在芯片外部挂存储芯片来存储数据,在芯片内部采用链表结构进行管理,以链表的每个节点对应每个报文切片的存储空间,预先记录链表的首尾节点,对于除首尾节点外的中间节点和硬件的固有读延迟,从当前链表节点作为地址读取下一节点,到真正读取到该地址里存储的数据内容,需要若干个时钟周期,这一段时间内链表也是无法有效使用的。因此,在采用单链表结构的情况下,现有技术无法解决均匀出队的问题。
技术实现思路
为解决现有存在的技术问题,本专利技术实施例主要提供一种报文传输方法和装置,能够在采用单链表结构的情况下,解决均匀出队的问题。本专利技术实施例的技术方案是这样实现的:第一方面,本专利技术实施例提供一种报文传输方法,所述方法包括:报文队列输出报文时,获取在报文输入所述报文队列时建立的一条与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,所述切片与所述报文队列中的报文切片的地址一一对应;根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片,所述i是正整数;根据各切片对应的报文切片的地址,从所述报文队列中输出所述报文切片,并将所述链表指针指向第i+1个组块的地址。结合第一方面,在第一种可实现方式中,所述根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片包括:获取基地址,所述基地址是每个组块的偏移地址;根据所述基地址依次使用所述第i个组块中的每个切片,其中,所述第i个组块中第j个切片的偏移地址等于基地址加上所述j与指定值的积,所述j是正整数。结合第一种可实现方式,在第二种可实现方式中,在同一链表中,每个组块的切片个数相同。结合第一方面、第一种和第二种可实现方式中任一种可实现方式,在第三种可实现方式中,在所述报文队列输出报文之前,报文输入所述报文队列之时,所述方法还包括:建立与所述报文队列对应的一条所述链表;保存所述链表的每个组块中的切片个数和所述末个组块中已占用的切片个数。结合第三种可实现方式,在第四种可实现方式中,所述建立与所述报文队列对应的一条所述链表包括:若所述报文队列未存储报文,则生成一条所述链表,所述链表包括一个组块;将分配给所述报文队列的第一缓存区域的首节点的地址保存为所述链表的首个组块的地址和末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述报文队列存储有报文,则判断所述链表中是否存在无对应信息的切片;若所述链表中存在无对应信息的切片,则将存储至所述报文队列的报文切片的地址依次与所述无对应信息的切片相对应;若所述链表中不存在无对应信息的切片,则判断所述链表是否只包括一个组块;若所述链表只包括一个组块,则生成一个新的末个组块,将分配给所述报文队列的第二空闲缓存的首节点地址保存为所述第二个组块的地址和所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述链表包括多个组块,则生成一个新的末个组块,将分配给所述报文队列的第三空闲缓存的首节点地址保存为所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应。结合第一方面,在第五种可实现方式中,当多个报文队列输出报文时,所述方法还包括:获取与所述多个报文队列一一对应的链表;按照所述多个报文队列的输出顺序,依次从所述多个报文队列输出报文。第二方面,本专利技术实施例一种报文传输装置,所述装置包括:获取链表单元,用于报文队列输出报文时,获取在报文输入所述报文队列时建立的一条与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,所述切片与所述报文队列中的报文切片的地址一一对应;获取地址单元,用于根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片,所述i是正整数;获取报文单元,用于根据各切片对应的报文切片的地址,从所述报文队列中输出所述报文切片,并将所述链表指针指向第i+1个组块的地址。结合第二方面,在第一种可实现方式中,所述获取切片单元具体用于:获取基地址,所述基地址是每个组块的偏移地址;根据所述基地址,依次使用所述第i个组块中的每个切片,其中,所述第i个组块中第j个切片的偏移地址等于基地址加上所述j与指定值的积,所述j是正整数。结合第一种可实现方式,在第二种可实现方式中,在同一链表中,每个组块的切片个数相同。结合第二方面、第一种和第二种可实现方式中任一种可实现方式,所述装置还包括:建立单元,用于建立与所述报文队列对应的一条所述链表;保存单元,用于保存所述链表的每个组块中的切片个数和所述末个组块中已占用的切片个数。结合第三种可实现方式,在第四种可实现方式中,所述建立单元具体用于:若所述报文队列未存储报文,则生成一条所述链表,所述链表包括一个组块;将分配给所述报文队列的第一缓存区域的首节点的地址保存为所述链表的首个组块的地址和末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述报文队列存储有报文,则判断所述链表中是否存在无对应信息的切片;若所述链表中存在无对应信息的切片,则将存储至所述报文队列的报文切片的地址依次与所述无对应信息的切片相对应;若所述链表中不存在无对应信息的切片,则判断所述链表是否只包括一个组块;若所述链表只包括一个组块,则生成一个新的末个组块,将分配给所述报文队列的第二空闲缓存的首节点地址保存为所述第二个组块的地址和所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述链表包括多个组块,则生成一个新的末个组块,将分配给所述报文队列的第三空闲缓存的首节点地址保存为所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应。结合第二方面,在第五种可实现方式中,当多个报文队列输出报文时,所述获取链表单元,还用于获取与所述多个报文队列一一对应的链表;所述获取报文单元,还用于按照所述多个报文队列的输出顺序,依次从所述多个报文队列输出报文。本专利技术实施例提供的报文传输方法和装置,在报文队列输出报文时,先获取在报文输入所述报文队列时建立的与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,该切片与所述报文队列中的报文切片的地址一一对应;再根据链表指针指向的第i个组块的地址,从第i个组块中依次获取该组块的各个切片;根据各切片对应的报文切片的地址,从报文队列中输出所述报文切片,并将链表指针指向第i+1个组块的地址。这样一来,当前组块中切片使用完成之后,链表指针已经指向下一个组块的地址,下一个组块中的切片就可以立刻被使用,无需浪费几个时钟周期来等待指针指向下一个组块的地址;因此,减少了报文队列输出所浪费的时间,保证了使用各个组块中切片的连续性,从而解决了均匀输出队列的问题。附图说明图1为本专利技术实施例提供一种报文传输本文档来自技高网...
一种报文传输方法和装置

【技术保护点】
一种报文传输方法,其特征在于,所述方法包括:报文队列输出报文时,获取在报文输入所述报文队列时建立的一条与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,所述切片与所述报文队列中的报文切片的地址一一对应;根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片,所述i是正整数;根据各切片对应的报文切片的地址,从所述报文队列中输出所述报文切片,并将所述链表指针指向第i+1个组块的地址。

【技术特征摘要】
1.一种报文传输方法,其特征在于,所述方法包括:报文队列输出报文时,获取在报文输入所述报文队列时建立的一条与所述报文队列对应的链表,所述链表包括一个或多个组块,每个组块包括一个或多个切片,所述切片与所述报文队列中的报文切片的地址一一对应;根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片,所述i是正整数;根据各切片对应的报文切片的地址,从所述报文队列中输出所述报文切片,并将所述链表指针指向第i+1个组块的地址。2.根据权利要求1所述的方法,其特征在于,所述根据所述链表指针指向的第i个组块的地址,从所述第i个组块中依次获取切片包括:获取基地址,所述基地址是每个组块的偏移地址;根据所述基地址依次使用所述第i个组块中的每个切片,其中,所述第i个组块中第j个切片的偏移地址等于基地址加上所述j与指定值的积,所述j是正整数。3.根据权利要求2所述的方法,其特征在于,在同一链表中,每个组块的切片个数相同。4.根据权利要求1至3任一项所述的方法,其特征在于,在所述报文队列输出报文之前,报文输入所述报文队列之时,所述方法还包括:建立与所述报文队列对应的一条所述链表;保存所述链表的每个组块中的切片个数和所述末个组块中已占用的切片个数。5.根据权利要求4所述的方法,其特征在于,所述建立与所述报文队列对应的一条所述链表包括:若所述报文队列未存储报文,则生成一条所述链表,所述链表包括一个组块;将分配给所述报文队列的第一缓存区域的首节点的地址保存为所述链表的
\t首个组块的地址和末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述报文队列存储有报文,则判断所述链表中是否存在无对应信息的切片;若所述链表中存在无对应信息的切片,则将存储至所述报文队列的报文切片的地址依次与所述无对应信息的切片相对应;若所述链表中不存在无对应信息的切片,则判断所述链表是否只包括一个组块;若所述链表只包括一个组块,则生成一个新的末个组块,将分配给所述报文队列的第二空闲缓存的首节点地址保存为所述第二个组块的地址和所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应;若所述链表包括多个组块,则生成一个新的末个组块,将分配给所述报文队列的第三空闲缓存的首节点地址保存为所述新的末个组块的地址;将存储至所述报文队列的报文切片的地址依次与所述链表的切片对应。6.根据权利要求1所述的方法,其特征在于,当多个报文队列输出报文时,所述方法还包括:获取与所述多个报文队列一一对应的链表;按照所述多个报文队列的输出顺序,依次从所述多个报文队列输出报文。7...

【专利技术属性】
技术研发人员:王斌
申请(专利权)人:深圳市中兴微电子技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1