CN107689923B - 报文处理方法及路由器 - Google Patents
报文处理方法及路由器 Download PDFInfo
- Publication number
- CN107689923B CN107689923B CN201610633110.0A CN201610633110A CN107689923B CN 107689923 B CN107689923 B CN 107689923B CN 201610633110 A CN201610633110 A CN 201610633110A CN 107689923 B CN107689923 B CN 107689923B
- Authority
- CN
- China
- Prior art keywords
- cache
- block
- line card
- input line
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种报文处理方法及路由器,方法应用于路由器,路由器包括:输入线卡、输出线卡、连接输入线卡和输出线卡的至少一个交换模块,以及与交换模块连接的第一缓存模块,第一缓存模块包括:至少一个第一缓存块,输入线卡包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块;该方法包括:输入线卡接收至少一个报文;获取第三缓存模块中可用的第一缓存块的信息,第三缓存模块为包括有可用的第一缓存块的第一缓存模块;根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块;输入线卡将每个报文缓存至第三缓存块中。通过该方法可以实现对报文的分布式缓存。
Description
技术领域
本发明实施例涉及报文处理技术,尤其涉及一种报文处理方法及路由器。
背景技术
互联网Internet应用正在渗透社会的各个方面,并产生巨大的影响。随着各种4K/8K视频,虚拟现实(Virtual Reality,简称VR)/增强现实(Augmented Reality,简称AR),远程医疗等各种新应用的出现,Internet的流量将持续增长。在Internet网络中,路由器是实现报文转发的核心设备。
为了容忍一定的数据突发,防止拥塞时丢包,传统路由器的线卡都有一定的报文缓存buffer。目前大部分路由器仍然是按照著名的经验法则指导报文缓存的设计规格:假设路由器线卡带宽是B,数据流的端到端往返延时(Round Trip Time,简称RTT)通常要达到200毫秒,那么这个线卡需要的缓存是B*RTT。由此可见,随着流量的增长,路由器容量、带宽需求也越来越大,那么线卡的缓存需求也会越来越大,这将成为路由器的设计瓶颈之一。举例而言,如果一个线卡处理带宽为100Gbps,需要缓存2.5GB,当前内存技术很容易满足这个规格;线卡处理带宽为1Tbps,需要缓存25GB,这个可能需要采用当前内存堆叠技术才能满足;而当未来线卡处理带宽为10Tbps时,需要缓存250GB,短期内内存工艺很难达到这个需求。因此,目前急需解决路由器线卡缓存不足的问题。
图1为现有技术提供的路由器的示意图,如图1所示,当前典型的路由器包括:输入线卡11、输出线卡12和一个交换模块13,以及与交换模块13连接的缓存模块14,其中,输入线卡也包括缓存模块。基于此,现有技术的报文处理过程为:当输入线卡11检测到接收到报文的队列深度超过预设的第一水线时,将队列中的报文以及队列的后续报文的目的地址修改为交换模块13所对应的缓存模块14的地址;当这些报文随后被发送至该缓存模块14时,则将目的地址修改为输出线卡12的地址;当输入线卡11检测队列深度低于第三水线,并且交换模块13对应的缓存模块14所对应的队列深度低于第二水线时,将输入线卡11中的队列的报文以及队列的后续报文的目的地址修改为输出线卡12地址,以便输入线卡11的报文通过交换模块13直接发送至输出线卡12中。
现有技术所提供的路由器包括一个交换模块和该交换模块对应的一个缓存模块,但是一个缓存模块可能远远不满足缓存需求,因此,扩展路由器的缓存模块将成为必然趋势,然而,当路由器包括多个交换模块,每个交换模块对应一个缓存模块时,现有技术并没有提供如何确定将报文缓存至哪个缓存模块的方案。因此,基于上述路由器的结构,如何进行报文的分布式缓存是本发明急需解决的技术问题。
发明内容
本发明实施例提供一种报文处理方法及路由器,从而可以有效的实现报文的分布式缓存,进而提高报文处理的灵活性。
第一方面,本发明实施例提供一种报文处理方法,该方法应用于路由器,路由器包括:输入线卡、输出线卡、连接输入线卡和输出线卡的至少一个交换模块,以及与交换模块连接的第一缓存模块,第一缓存模块包括:至少一个第一缓存块,输入线卡包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块;方法包括:
输入线卡接收至少一个报文;
输入线卡获取第三缓存模块中可用的第一缓存块的信息,第三缓存模块为包括有可用的第一缓存块的第一缓存模块;
输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,第三缓存块为第一缓存块或者第二缓存块,每个缓存信息块对应至少一个第四缓存块,至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,每个缓存信息块用于指示每个第四缓存块的占用情况;
输入线卡将每个报文缓存至第三缓存块中。
通过该报文处理方法,路由器可以实现对报文的分布式缓存,其中路由器可以将报文缓存至第一缓存块或者缓存至第二缓存块中,在扩充了路由器缓存的同时,提高了路由器缓存的灵活性。
可选地,输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,包括:
输入线卡根据至少一个缓存信息块判断每个报文是否可存储在第四缓存块中;
若是,则输入线卡将选择一个第四缓存块作为所述第三缓存块,并将每个报文分配给第三缓存块;
否则,则输入线卡建立第一缓存信息块,并将至少一个缓存信息块和第一缓存信息块作为新的至少一个缓存信息块,输入线卡根据新的至少一个缓存信息块、可用的第一缓存块的信息为每个报文分配第三缓存块。
通过该方法可以有效的确定每个报文被分配的第三缓存块。
可选地,每个缓存信息块包括:每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块的标识;
其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡中;
相应的,所述输入线卡根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中,包括:
所述输入线卡判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于所述最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块。
通过该方法输入线卡可以判断每个报文是否可存储在第四缓存块中。
可选地,所述输入线卡将所述每个报文分配给所述第三缓存块,包括:
当所述输入线卡确定所述第三缓存块为第二缓存块时,则所述输入线卡为所述每个报文直接分配所述第三缓存块;
当所述输入线卡确定所述第三缓存块为第一缓存块时,则所述输入线卡向所述第三缓存块所对应的第一交换模块发送分配请求消息,所述分配请求消息用于请求所述第一交换模块为所述每个报文分配所述第三缓存块;
所述第一交换模块根据所述分配请求消息为所述每个报文分配所述第三缓存块;
所述第一交换模块向所述输入线卡发送分配响应消息,所述分配响应消息包括:所述第三缓存块的标识;
所述输入线卡根据所述分配响应消息将所述每个报文分配给所述第三缓存块。
可选地,所述输入线卡建立第一缓存信息块,包括:
所述输入线卡确定所述至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;
若所述个数小于或者等于第一预设值,则所述输入线卡根据未被占用的第二缓存块建立所述第一缓存信息块;
否则,则所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块。
可选地,所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块,包括:
所述输入线卡根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;
所述输入线卡向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;
所述第二交换模块根据所述缓存信息块建立请求消息为所述输入线卡分配所述可用的第一缓存块;
所述第二交换模块向所述输入线卡发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;
所述输入线卡根据所述第三缓存模块的标识建立所述第一缓存信息块。
可选地,所述输入线卡将所述每个报文缓存至所述第三缓存块中之后,还包括:
所述输入线卡向所述输出线卡发送报文队列状态;
所述输出线卡根据所述报文队列状态确定可调度报文大小,并将所述可调度报文大小发送给所述输入线卡;
所述输入线卡根据所述可调度报文大小,按照所述至少一个缓存信息块的顺序和所述每个缓存信息块所对应的所述至少一个第四缓存块的顺序调度报文。
由于报文按照缓存信息块的顺序,存储在对应的第四缓存块中,因此,输入线卡同样根据缓存信息块的顺序进行报文调度,以保证报文调度的可靠性。
可选地,该方法还包括:
当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;
所述第四缓存模块释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
下面将介绍发明实施例提供一种路由器,其中路由器部分与上述方法对应,对应内容技术效果相同,在此不再赘述。
第二方面,本发明实施例提供一种路由器,包括:输入线卡、输出线卡、连接所述输入线卡和所述输出线卡的至少一个交换模块,以及与交换模块连接的第一缓存模块,所述第一缓存模块包括:至少一个第一缓存块,所述输入线卡包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块;
所述输入线卡用于:
接收至少一个报文;
获取第三缓存模块中可用的第一缓存块的信息,所述第三缓存模块为包括有可用的第一缓存块的第一缓存模块;
根据所述输入线卡中所存储的至少一个缓存信息块和所述可用的第一缓存块的信息为所述至少一个报文中的每个报文分配第三缓存块,所述第三缓存块为第一缓存块或者第二缓存块,每个缓存信息块对应至少一个第四缓存块,所述至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,所述每个缓存信息块用于指示所述每个第四缓存块的占用情况;
将所述每个报文缓存至所述第三缓存块中。
可选地,所述输入线卡具体用于:
根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中;
若是,则将选择一个第四缓存块作为所述第三缓存块,并将所述每个报文分配给所述第三缓存块;
否则,则建立第一缓存信息块,并将所述至少一个缓存信息块和所述第一缓存信息块作为新的至少一个缓存信息块,根据所述新的至少一个缓存信息块、所述可用的第一缓存块的信息为所述每个报文分配所述第三缓存块。
可选地,所述每个缓存信息块包括:所述每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块的标识;
其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡中;
相应的,所述输入线卡具体用于:
判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于所述最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块。
可选地,所述输入线卡具体用于:
当确定所述第三缓存块为第二缓存块时,则为所述每个报文直接分配所述第三缓存块;
当确定所述第三缓存块为第一缓存块时,则向所述第三缓存块所对应的第一交换模块发送分配请求消息,所述分配请求消息用于请求所述第一交换模块为所述每个报文分配所述第三缓存块;
所述第一交换模块用于根据所述分配请求消息为所述每个报文分配所述第三缓存块,并且向所述输入线卡发送分配响应消息,所述分配响应消息包括:所述第三缓存块的标识;
所述输入线卡还用于根据所述分配响应消息将所述每个报文分配给所述第三缓存块。
可选地,所述输入线卡具体用于:
确定所述至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;
若所述个数小于或者等于第一预设值,则根据未被占用的第二缓存块建立所述第一缓存信息块;
否则,则根据所述可用的第一缓存块的信息建立所述第一缓存信息块。
可选地,所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡具体用于:
根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;
向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;
所述第二交换模块用于根据所述缓存信息块建立请求消息为所述输入线卡分配所述可用的第一缓存块,并向所述输入线卡发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;
所述输入线卡还用于根据所述第三缓存模块的标识建立所述第一缓存信息块。
可选地,所述输入线卡还用于向所述输出线卡发送报文队列状态;
所述输出线卡用于根据所述报文队列状态确定可调度报文大小,并将所述可调度报文大小发送给所述输入线卡;
所述输入线卡还用于根据所述可调度报文大小,按照所述至少一个缓存信息块的顺序和所述每个缓存信息块所对应的所述至少一个第四缓存块的顺序调度报文。
可选地,当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡还用于释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡还用于向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;
所述第四缓存模块用于释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
本发明实施例提供一种报文处理方法及路由器,其中,路由器中的输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,即为每个报文确定第三缓存块,并将报文缓存至对应的第三缓存块,通过该报文处理方法,路由器可以实现对报文的分布式缓存,其中路由器可以将报文缓存至第一缓存块或者缓存至第二缓存块中,在扩充了路由器缓存的同时,提高了路由器缓存的灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的路由器的示意图;
图2为本发明一实施例提供的路由器的示意图;
图3为本发明一实施例提供的报文处理方法的流程图;
图4A为本发明一实施例提供的逻辑缓存信息块的示意图;
图4B为本发明一实施例提供的物理缓存信息块的示意图;
图5为本发明另一实施例提供的报文处理方法的流程图;
图6为本发明一实施例提供的至少一个缓存信息块的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例旨在解决如何进行报文的分布式缓存的问题。为了解决该问题,本发明实施例提供一种报文处理方法及路由器。其中,本发明实施例所提供的报文处理方法主要包括三方面:第一方面:缓存块信息发布;第二方面:分布式报文缓存;第三方面:报文调度。
该报文处理方法应用于路由器,具体地,图2为本发明一实施例提供的路由器的示意图,如图2所示,该路由器包括:输入线卡21、输出线卡22、连接所述输入线卡21和所述输出线卡22的至少一个交换模块23,以及与交换模块23连接的第一缓存模块24,所述第一缓存模块24包括:至少一个第一缓存块,所述输入线卡21包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块。
需要说明的是,该路由器包括:至少一个输入线卡21和至少一个输出线卡22,每个输入线卡21和每个输出线卡22可以通过至少一个交换模块23连接,其中,如图2所示,交换模块23与第一缓存模块24一一对应,实际上,它们的对应关系不限于此,例如:每个交换模块23也可以对应多个第一缓存模块24。
基于该路由器的架构,本发明实施例提供一种报文处理方法,该方法的应用场景为路由器接收到其他设备所传输的报文,该路由器预将报文传输至另一个设备。图3为本发明一实施例提供的报文处理方法的流程图,如图3所示,该方法包括如下流程:
步骤S301:输入线卡接收至少一个报文;
步骤S302:输入线卡获取第三缓存模块中可用的第一缓存块的信息;
其中,第三缓存模块为包括有可用的第一缓存块的第一缓存模块,也就是说,凡是包括有可用的第一缓存块的第一缓存模块都被称为第三缓存模块。进一步地,输入线卡获取第三缓存模块中可用的第一缓存块的信息包括两种具体方式:一种为第三缓存模块广播自己的可用的第一缓存块的信息,即输入线卡被动获取第三缓存模块中可用的第一缓存块的信息;另一种为输入线卡向所有的第一缓存模块发送请求消息,该请求消息用于请求第三缓存模块的可用的第一缓存块的信息,然后输入线卡接收第三缓存模块发送的可用的第一缓存块的信息,即输入线卡主动获取第三缓存模块中可用的第一缓存块的信息。无论是上述哪种获取方式,第三缓存模块根据路由器的架构发送可用的第一缓存块的信息,例如:当第三缓存模块与输入线卡之间只存在一个交换模块时,则该第三缓存模块通过该交换模块将可用的第一缓存块的信息发送给输入线卡;当第三缓存模块与输入线卡之间只存在多个交换模块时,则该第三缓存模块先将可用的第一缓存块的信息发送至与其连接的交换模块,然后该交换模块再通过其他交换模块将可用的第一缓存块的信息发送给输入线卡。
步骤S303:输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块;
其中,第三缓存块为第一缓存块或者第二缓存块,也就是说,凡是最后分配给报文的第一缓存块或者第二缓存块都被称为第三缓存块。
上述每个缓存信息块对应至少一个第四缓存块,也就是说,凡是缓存信息块所对应的第一缓存块或者第二缓存块都被称为第四缓存块,该至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,所述每个缓存信息块用于指示所述每个第四缓存块的占用情况。具体地,缓存信息块可以分为逻辑缓存信息块和物理缓存信息块,所谓逻辑缓存信息块即包括有至少一个物理缓存信息块的缓存信息块,图4A为本发明一实施例提供的逻辑缓存信息块的示意图,如图4A所示,该逻辑缓存信息块包括N个物理缓存信息块,其中,N为大于或者等于1的正整数;每个逻辑缓存信息块记录下一个物理缓存信息块的序号,图4B为本发明一实施例提供的物理缓存信息块的示意图,如图4B所示,物理缓存信息块包括:该物理缓存信息块所对应的第四缓存块已占用空间大小、用于指示该第四缓存块是否为第一缓存块的指示信息;当该指示信息指示该第四缓存块为第一缓存块时,则该物理缓存信息块还包括:该第四缓存块所在的第一缓存模块的标识。值得一提的是,当缓存信息块为逻辑缓存信息块时,则该缓存信息块可以对应至少一个第四缓存块,当缓存信息块为物理缓存信息块时,则该缓存信息块对应一个第四缓存块。
根据上述缓存信息块的定义可知,输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,即为输入线卡根据已被占用的缓存块的占用情况,以及可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块。
每一个报文被分配完了对应的第三缓存块时,则至少一个缓存信息块中的信息要发生更新,并且可用的第一缓存块的信息也要发生更新,因此,当要为下一个报文分配对应的第三缓存块时,则输入线卡根据输入线卡中所存储的更新后的至少一个缓存信息块和更新后的可用的第一缓存块的信息为该报文分配对应的第三缓存块。
步骤S304:输入线卡将每个报文缓存至第三缓存块中。
其中,上述步骤S303和步骤S304即为上述第二方面:分布式报文缓存。
本发明实施例中,路由器中的输入线卡根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,即为每个报文确定第三缓存块,并将报文缓存至对应的第三缓存块,通过该报文处理方法,路由器可以实现对报文的分布式缓存,其中路由器可以将报文缓存至第一缓存块或者缓存至第二缓存块中,在扩充了路由器缓存的同时,提高了路由器缓存的灵活性。
基于上述实施例的基础,进一步地,下面将对上述实施例的各个步骤进行进一步的细化,具体地,图5为本发明另一实施例提供的报文处理方法的流程图,如图5所示,该方法包括如下流程:
步骤S501:输入线卡接收至少一个报文;
步骤S502:输入线卡获取第三缓存模块中可用的第一缓存块的信息;
其中,步骤S501与步骤S301相同,步骤S502与步骤S302相同,在此不再赘述。
步骤S503:输入线卡根据至少一个缓存信息块判断每个报文是否可存储在第四缓存块中;若是,则执行步骤S504;否则,则执行步骤S505;
所述每个缓存信息块包括:所述每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块的标识;其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡中;图6为本发明一实施例提供的至少一个缓存信息块的示意图,如图6所示,这里仅示出了三个缓存信息块,每个缓存信息块可以是逻辑缓存信息块,也可以是物理缓存信息块。
由于至少一个缓存信息块以链表的形式存储在所述输入线卡中,报文是按照缓存信息块的顺序存储在各个缓存信息块对应的第四缓存块中的,当第一个缓存信息块所对应的第四缓存块被存满时,在将报文存储在第二个缓存信息块中,基于此,输入线卡判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于所述最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块,当第五缓存块已占用空间大小与所述每个报文的大小之和小于所述最后一个缓存块的大小时,则表示第五缓存块可以缓存下该报文,否则,则表示第五缓存块空间不足。
步骤S504:输入线卡将选择一个第四缓存块作为第三缓存块,并将每个报文分配给第三缓存块;
其中,选择的第四缓存块即为上述的第五缓存块,将该第五缓存块作为第三缓存块分配给对应的报文。
进一步地,所述输入线卡将所述每个报文分配给所述第三缓存块,包括:
当输入线卡确定第三缓存块为第二缓存块时,则所述输入线卡为每个报文直接分配第三缓存块;也就是说,当输入线卡确定第三缓存块为输入线卡中的本地缓存块时,则为该报文直接分配第三缓存块。
当输入线卡确定第三缓存块为第一缓存块时,则输入线卡向第三缓存块所对应的第一交换模块发送分配请求消息,分配请求消息用于请求第一交换模块为每个报文分配所述第三缓存块;第一交换模块根据分配请求消息为每个报文分配所述第三缓存块;第一交换模块向所述输入线卡发送分配响应消息,所述分配响应消息包括:第三缓存块的标识;输入线卡根据分配响应消息将每个报文分配给第三缓存块。也就是说,当输入线卡确定第三缓存块为非本地缓存块时,则需要与第三缓存块所对应的第一交换模块进行交互,以确定第三缓存块的标识,并将该报文分配给第三缓存块。
步骤S505:输入线卡建立第一缓存信息块,并将至少一个缓存信息块和第一缓存信息块作为新的至少一个缓存信息块,输入线卡根据新的至少一个缓存信息块、可用的第一缓存块的信息为每个报文分配第三缓存块。
当输入线卡根据至少一个缓存信息块判断报文不可以存储在第四缓存块中所述输入线卡建立第一缓存信息块时,则输入线卡需要建立第一缓存信息块,其中,建立第一缓存信息块的过程为:输入线卡确定至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;若所述个数小于或者等于第一预设值,则所述输入线卡根据未被占用的第二缓存块建立所述第一缓存信息块;否则,则所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块,即输入线卡与交换模块协商,以建立第一缓存信息块,由于各个输入线卡之间是相互独立的,因此,它们在于交换模块进行协商时,可能会存在多个输入线卡与同一个交换模块进行协商,有可能会存在资源不足,协商失败的情况,当协商失败后,交换模块要向协商失败的输入线卡发送协商失败消息,以使得该输入线卡重新选择交换模块进行协商,针对同一个输入线卡,当协商失败的次数超过预设值时,则该输入线卡要进行丢包。
其中,根据未被占用的第二缓存块建立后的第一缓存信息块包括:确定第二缓存块已占用空间大小,用于指示该第二缓存块不为第一缓存块的指示信息。
所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块,即协商过程包括:所述输入线卡根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;所述输入线卡向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;所述第二交换模块根据所述缓存信息块建立请求消息为所述输入线卡分配所述可用的第一缓存块;所述第二交换模块向所述输入线卡发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;所述输入线卡根据所述第三缓存模块的标识建立所述第一缓存信息块。
其中,本发明实施例中,每个缓存块的大小固定,基于此,输入线卡根据报文的大小,根据每个第三缓存模块中可用的第一缓存块的个数和缓存块的大小计算第三缓存模块的可用空间,当报文的大小小于第三缓存模块的可用空间时,则可以向该第三缓存模块所对应的第二交换模块发送缓存信息块建立请求消息,第二交换模块分配所述可用的第一缓存块,所述输入线卡根据所述第三缓存模块的标识所建立的所述第一缓存信息块包括:可用的第一缓存块已占用空间大小、用于指示该可用的第一缓存块为第一缓存块的指示信息,以及该第三缓存模块的标识。
本发明实施例中,详细介绍了输入线卡如何根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,以及输入线卡如何为每个报文分配第三缓存块,通过上述内容的介绍,以实现对报文的分布式缓存。
基于上述实施例的基础,下面将详细介绍上述第三方面:报文调度。其中,报文调度的方法在上述步骤S304或者S504或者S505之后执行,具体地,图6为本发明再一实施例提供的报文处理方法的流程图,如图6所示,该方法包括如下流程:
步骤S601:输入线卡向输出线卡发送报文队列状态;
其中,报文队列状态包括:报文队列目前所包括的报文的大小,可选地,还包括:各个报文队列的优先级等。
步骤S602:输出线卡根据报文队列状态确定可调度报文大小,并将可调度报文大小发送给输入线卡;
输出线卡根据路由器的配置情况,确定一次可以传输的报文大小,并根据报文队列目前所包括的报文的大小以及各个报文队列的优先级等确定可调度报文大小,并将可调度报文大小发送给输入线卡。
步骤S603:输入线卡根据可调度报文大小,按照至少一个缓存信息块的顺序和每个缓存信息块所对应的至少一个第四缓存块的顺序调度报文。
例如:输入线卡确定可调度报文大小为500Byte,则输入线卡按照至少一个缓存信息块的顺序,调度对应的报文,其中所调度的报文大小总和小于或者等于500Byte。
可选地,当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;所述第四缓存模块释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
本发明实施例中,主要提供了报文调度的方法,由于报文按照缓存信息块的顺序,存储在对应的第四缓存块中,因此,输入线卡同样根据缓存信息块的顺序进行报文调度,以保证报文调度的可靠性。
本发明实施例还提供一种路由器,如图2所示,该路由器包括:输入线卡21、输出线卡22、连接所述输入线卡21和所述输出线卡22的至少一个交换模块23,以及与交换模块23连接的第一缓存模块24,所述第一缓存模块24包括:至少一个第一缓存块,所述输入线卡21包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块。
其中,所述输入线卡21用于:
接收至少一个报文;
获取第三缓存模块中可用的第一缓存块的信息,所述第三缓存模块为包括有可用的第一缓存块的第一缓存模块24;
根据所述输入线卡21中所存储的至少一个缓存信息块和所述可用的第一缓存块的信息为所述至少一个报文中的每个报文分配第三缓存块,所述第三缓存块为第一缓存块或者第二缓存块,每个缓存信息块对应至少一个第四缓存块,所述至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,所述每个缓存信息块用于指示所述每个第四缓存块的占用情况;
将所述每个报文缓存至所述第三缓存块中。
本实施例提供的路由器,可以用于执行图3对应报文处理方法的实施技术方案,其实现原理和技术效果类似,此处不再赘述。
可选地,所述输入线卡21具体用于:
根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中;
若是,则将选择一个第四缓存块作为所述第三缓存块,并将所述每个报文分配给所述第三缓存块;
否则,则建立第一缓存信息块,并将所述至少一个缓存信息块和所述第一缓存信息块作为新的至少一个缓存信息块,根据所述新的至少一个缓存信息块、所述可用的第一缓存块的信息为所述每个报文分配所述第三缓存块。
可选地,所述每个缓存信息块包括:所述每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块24的标识;
其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡21中;
相应的,所述输入线卡21具体用于:
判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于所述最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块。
可选地,所述输入线卡21具体用于:
当确定所述第三缓存块为第二缓存块时,则为所述每个报文直接分配所述第三缓存块;
当确定所述第三缓存块为第一缓存块时,则向所述第三缓存块所对应的第一交换模块发送分配请求消息,所述分配请求消息用于请求所述第一交换模块为所述每个报文分配所述第三缓存块;
所述第一交换模块用于根据所述分配请求消息为所述每个报文分配所述第三缓存块,并且向所述输入线卡21发送分配响应消息,所述分配响应消息包括:所述第三缓存块的标识;
所述输入线卡21还用于根据所述分配响应消息将所述每个报文分配给所述第三缓存块。
可选地,所述输入线卡21具体用于:
确定所述至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;
若所述个数小于或者等于第一预设值,则根据未被占用的第二缓存块建立所述第一缓存信息块;
否则,则根据所述可用的第一缓存块的信息建立所述第一缓存信息块。
可选地,所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡21具体用于:
根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;
向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;
所述第二交换模块用于根据所述缓存信息块建立请求消息为所述输入线卡21分配所述可用的第一缓存块,并向所述输入线卡21发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;
所述输入线卡21还用于根据所述第三缓存模块的标识建立所述第一缓存信息块。
本发明实施例中,详细介绍了输入线卡如何根据输入线卡中所存储的至少一个缓存信息块和可用的第一缓存块的信息为至少一个报文中的每个报文分配第三缓存块,以及输入线卡如何为每个报文分配第三缓存块,通过上述内容的介绍,以实现对报文的分布式缓存。
可选地,所述输入线卡21还用于向所述输出线卡22发送报文队列状态;
所述输出线卡22用于根据所述报文队列状态确定可调度报文大小,并将所述可调度报文大小发送给所述输入线卡21;
所述输入线卡21还用于根据所述可调度报文大小,按照所述至少一个缓存信息块的顺序和所述每个缓存信息块所对应的所述至少一个第四缓存块的顺序调度报文。
可选地,当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡21还用于释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡21还用于向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;
所述第四缓存模块用于释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
本发明实施例中,由于报文按照缓存信息块的顺序,存储在对应的第四缓存块中,因此,路由器的输入线卡同样根据缓存信息块的顺序进行报文调度,以保证报文调度的可靠性。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种报文处理方法,其特征在于,所述方法应用于路由器,所述路由器包括:输入线卡、输出线卡、连接所述输入线卡和所述输出线卡的至少一个交换模块,以及与交换模块连接的第一缓存模块,所述第一缓存模块包括:至少一个第一缓存块,所述输入线卡包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块;所述方法包括:
所述输入线卡接收至少一个报文;
所述输入线卡获取第三缓存模块中可用的第一缓存块的信息,所述第三缓存模块为包括有可用的第一缓存块的第一缓存模块;
所述输入线卡根据所述输入线卡中所存储的至少一个缓存信息块和所述可用的第一缓存块的信息为所述至少一个报文中的每个报文分配第三缓存块,所述第三缓存块为第一缓存块或者第二缓存块,每个缓存信息块对应至少一个第四缓存块,所述至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,所述每个缓存信息块用于指示所述每个第四缓存块的占用情况;
所述输入线卡将所述每个报文缓存至所述第三缓存块中;
所述输入线卡根据所述输入线卡中所存储的至少一个缓存信息块和所述可用的第一缓存块的信息为所述至少一个报文中的每个报文分配第三缓存块,包括:
所述输入线卡根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中;
若是,则所述输入线卡将选择一个第四缓存块作为所述第三缓存块,并将所述每个报文分配给所述第三缓存块;
否则,则所述输入线卡建立第一缓存信息块,并将所述至少一个缓存信息块和所述第一缓存信息块作为新的至少一个缓存信息块,所述输入线卡根据所述新的至少一个缓存信息块、所述可用的第一缓存块的信息为所述每个报文分配所述第三缓存块;
所述每个缓存信息块包括:所述每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块的标识;
其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡中;
相应的,所述输入线卡根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中,包括:
所述输入线卡判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块。
2.根据权利要求1所述的方法,其特征在于,所述输入线卡将所述每个报文分配给所述第三缓存块,包括:
当所述输入线卡确定所述第三缓存块为第二缓存块时,则所述输入线卡为所述每个报文直接分配所述第三缓存块;
当所述输入线卡确定所述第三缓存块为第一缓存块时,则所述输入线卡向所述第三缓存块所对应的第一交换模块发送分配请求消息,所述分配请求消息用于请求所述第一交换模块为所述每个报文分配所述第三缓存块;
所述第一交换模块根据所述分配请求消息为所述每个报文分配所述第三缓存块;
所述第一交换模块向所述输入线卡发送分配响应消息,所述分配响应消息包括:所述第三缓存块的标识;
所述输入线卡根据所述分配响应消息将所述每个报文分配给所述第三缓存块。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述输入线卡建立第一缓存信息块,包括:
所述输入线卡确定所述至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;
若所述个数小于或者等于第一预设值,则所述输入线卡根据未被占用的第二缓存块建立所述第一缓存信息块;
否则,则所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块。
4.根据权利要求3所述的方法,其特征在于,所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡根据所述可用的第一缓存块的信息建立所述第一缓存信息块,包括:
所述输入线卡根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;
所述输入线卡向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;
所述第二交换模块根据所述缓存信息块建立请求消息为所述输入线卡分配所述可用的第一缓存块;
所述第二交换模块向所述输入线卡发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;
所述输入线卡根据所述第三缓存模块的标识建立所述第一缓存信息块。
5.根据权利要求1、2、4任一项所述的方法,其特征在于,所述输入线卡将所述每个报文缓存至所述第三缓存块中之后,还包括:
所述输入线卡向所述输出线卡发送报文队列状态;
所述输出线卡根据所述报文队列状态确定可调度报文大小,并将所述可调度报文大小发送给所述输入线卡;
所述输入线卡根据所述可调度报文大小,按照所述至少一个缓存信息块的顺序和所述每个缓存信息块所对应的所述至少一个第四缓存块的顺序调度报文。
6.根据权利要求1、2、4任一项所述的方法,其特征在于,还包括:
当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;
所述第四缓存模块释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
7.一种路由器,其特征在于,包括:输入线卡、输出线卡、连接所述输入线卡和所述输出线卡的至少一个交换模块,以及与交换模块连接的第一缓存模块,所述第一缓存模块包括:至少一个第一缓存块,所述输入线卡包括:至少一个第二缓存模块,每个第二缓存模块包括:至少一个第二缓存块;
所述输入线卡用于:
接收至少一个报文;
获取第三缓存模块中可用的第一缓存块的信息,所述第三缓存模块为包括有可用的第一缓存块的第一缓存模块;
根据所述输入线卡中所存储的至少一个缓存信息块和所述可用的第一缓存块的信息为所述至少一个报文中的每个报文分配第三缓存块,所述第三缓存块为第一缓存块或者第二缓存块,每个缓存信息块对应至少一个第四缓存块,所述至少一个第四缓存块中每个第四缓存块为第一缓存块或者第二缓存块,所述每个缓存信息块用于指示所述每个第四缓存块的占用情况;
将所述每个报文缓存至所述第三缓存块中;
所述输入线卡具体用于:
根据所述至少一个缓存信息块判断所述每个报文是否可存储在第四缓存块中;
若是,则将选择一个第四缓存块作为所述第三缓存块,并将所述每个报文分配给所述第三缓存块;
否则,则建立第一缓存信息块,并将所述至少一个缓存信息块和所述第一缓存信息块作为新的至少一个缓存信息块,根据所述新的至少一个缓存信息块、所述可用的第一缓存块的信息为所述每个报文分配所述第三缓存块;
所述每个缓存信息块包括:所述每个第四缓存块已占用空间大小、用于指示所述每个第四缓存块是否为第一缓存块的指示信息;当所述指示信息指示所述每个第四缓存块为所述第一缓存块时,则所述每个缓存信息块还包括:所述每个第四缓存块所在的第一缓存模块的标识;
其中,所述至少一个缓存信息块以链表的形式存储在所述输入线卡中;
相应的,所述输入线卡具体用于:
判断第五缓存块已占用空间大小与所述每个报文的大小之和是否小于最后一个缓存块的大小,所述第五缓存块为所述至少一个缓存信息块中最后一个缓存信息块所对应的最后一个第四缓存块。
8.根据权利要求7所述的路由器,其特征在于,所述输入线卡具体用于:
当确定所述第三缓存块为第二缓存块时,则为所述每个报文直接分配所述第三缓存块;
当确定所述第三缓存块为第一缓存块时,则向所述第三缓存块所对应的第一交换模块发送分配请求消息,所述分配请求消息用于请求所述第一交换模块为所述每个报文分配所述第三缓存块;
所述第一交换模块用于根据所述分配请求消息为所述每个报文分配所述第三缓存块,并且向所述输入线卡发送分配响应消息,所述分配响应消息包括:所述第三缓存块的标识;
所述输入线卡还用于根据所述分配响应消息将所述每个报文分配给所述第三缓存块。
9.根据权利要求7-8任一项所述的路由器,其特征在于,所述输入线卡具体用于:
确定所述至少一个缓存信息块所对应的所有第四缓存块中为第二缓存块的个数;
若所述个数小于或者等于第一预设值,则根据未被占用的第二缓存块建立所述第一缓存信息块;
否则,则根据所述可用的第一缓存块的信息建立所述第一缓存信息块。
10.根据权利要求9所述的路由器,其特征在于,所述可用的第一缓存块的信息包括:所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数;
相应的,所述输入线卡具体用于:
根据所述每个报文的大小、所述第三缓存模块的标识和所述第三缓存模块所包括的可用的第一缓存块的个数确定第二交换模块;
向所述第二交换模块发送缓存信息块建立请求消息,所述缓存信息块建立请求消息用于请求获取所述可用的第一缓存块;
所述第二交换模块用于根据所述缓存信息块建立请求消息为所述输入线卡分配所述可用的第一缓存块,并向所述输入线卡发送缓存信息块建立响应消息,缓存信息块建立响应消息包括:所述第三缓存模块的标识;
所述输入线卡还用于根据所述第三缓存模块的标识建立所述第一缓存信息块。
11.根据权利要求7、8、10任一项所述的路由器,其特征在于,所述输入线卡还用于向所述输出线卡发送报文队列状态;
所述输出线卡用于根据所述报文队列状态确定可调度报文大小,并将所述可调度报文大小发送给所述输入线卡;
所述输入线卡还用于根据所述可调度报文大小,按照所述至少一个缓存信息块的顺序和所述每个缓存信息块所对应的所述至少一个第四缓存块的顺序调度报文。
12.根据权利要求7、8、10任一项所述的路由器,其特征在于,
当所述每个缓存信息块对应的所述至少一个第四缓存块中的报文都被调度完毕时,则所述输入线卡还用于释放所述每个缓存信息块,并且当所述至少一个第四缓存块包括第一缓存块时,则所述输入线卡还用于向所包括的第一缓存块所在的第四缓存模块发送请求释放消息;
所述第四缓存模块用于释放所述所包括的第一缓存块,并发布所述第四缓存模块中可用的第一缓存块的信息。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610633110.0A CN107689923B (zh) | 2016-08-04 | 2016-08-04 | 报文处理方法及路由器 |
EP17836355.2A EP3487132B1 (en) | 2016-08-04 | 2017-07-31 | Packet processing method and router |
PCT/CN2017/095165 WO2018024173A1 (zh) | 2016-08-04 | 2017-07-31 | 报文处理方法及路由器 |
US16/264,309 US10911364B2 (en) | 2016-08-04 | 2019-01-31 | Packet processing method and router |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610633110.0A CN107689923B (zh) | 2016-08-04 | 2016-08-04 | 报文处理方法及路由器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107689923A CN107689923A (zh) | 2018-02-13 |
CN107689923B true CN107689923B (zh) | 2021-02-12 |
Family
ID=61072703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610633110.0A Active CN107689923B (zh) | 2016-08-04 | 2016-08-04 | 报文处理方法及路由器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10911364B2 (zh) |
EP (1) | EP3487132B1 (zh) |
CN (1) | CN107689923B (zh) |
WO (1) | WO2018024173A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108833301A (zh) * | 2018-05-30 | 2018-11-16 | 杭州迪普科技股份有限公司 | 一种报文处理方法和装置 |
US11018973B2 (en) * | 2019-05-31 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distributed sonic fabric chassis |
CN110927349B (zh) * | 2019-12-27 | 2022-04-01 | 中央储备粮三明直属库有限公司 | 一种基于Lora的粮仓气体监测方法 |
CN111371704B (zh) * | 2020-02-06 | 2024-03-15 | 视联动力信息技术股份有限公司 | 一种数据缓存方法、装置、终端设备和存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE320129T1 (de) * | 1999-05-21 | 2006-03-15 | Avici Systems | Flit-cache in einem paketvermittelndem router |
US7102999B1 (en) * | 1999-11-24 | 2006-09-05 | Juniper Networks, Inc. | Switching device |
US7565496B2 (en) * | 2005-01-22 | 2009-07-21 | Cisco Technology, Inc. | Sharing memory among multiple information channels |
US7839779B2 (en) * | 2005-05-16 | 2010-11-23 | Cisco Technology, Inc. | Queue aware flow control |
US8804751B1 (en) * | 2005-10-04 | 2014-08-12 | Force10 Networks, Inc. | FIFO buffer with multiple stream packet segmentation |
US8135024B2 (en) * | 2005-11-14 | 2012-03-13 | Corning Incorporated | Method and system to reduce interconnect latency |
US8149710B2 (en) * | 2007-07-05 | 2012-04-03 | Cisco Technology, Inc. | Flexible and hierarchical dynamic buffer allocation |
CN101252536B (zh) * | 2008-03-31 | 2010-06-02 | 清华大学 | 路由器多队列数据包缓存管理与输出队列调度系统 |
CN101272345B (zh) * | 2008-04-29 | 2010-08-25 | 杭州华三通信技术有限公司 | 一种流量控制的方法、系统和装置 |
CN101299721B (zh) * | 2008-06-19 | 2012-04-18 | 杭州华三通信技术有限公司 | 交换网报文交换方法和交换装置 |
CN101304383B (zh) * | 2008-07-07 | 2010-10-27 | 杭州华三通信技术有限公司 | 交换网报文交换方法和交换系统 |
JP5233775B2 (ja) * | 2009-03-19 | 2013-07-10 | 富士通株式会社 | パケット伝送装置、回線インタフェースユニット及びパケット伝送装置の制御方法 |
US8670454B2 (en) * | 2009-03-26 | 2014-03-11 | Oracle America, Inc. | Dynamic assignment of data to switch-ingress buffers |
CN101594299B (zh) * | 2009-05-20 | 2011-06-29 | 清华大学 | 基于链表的交换网络中队列缓冲管理方法 |
AU2011319906B2 (en) * | 2010-10-28 | 2016-06-16 | Compass Electro Optical Systems Ltd. | Router and switch architecture |
CN102006226B (zh) * | 2010-11-19 | 2013-01-02 | 福建星网锐捷网络有限公司 | 报文缓存管理方法、装置及网络设备 |
US9008113B2 (en) * | 2010-12-20 | 2015-04-14 | Solarflare Communications, Inc. | Mapped FIFO buffering |
CN102739536B (zh) * | 2012-06-26 | 2016-03-02 | 华为技术有限公司 | 一种报文缓存方法及路由器 |
-
2016
- 2016-08-04 CN CN201610633110.0A patent/CN107689923B/zh active Active
-
2017
- 2017-07-31 WO PCT/CN2017/095165 patent/WO2018024173A1/zh unknown
- 2017-07-31 EP EP17836355.2A patent/EP3487132B1/en active Active
-
2019
- 2019-01-31 US US16/264,309 patent/US10911364B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190166058A1 (en) | 2019-05-30 |
EP3487132A1 (en) | 2019-05-22 |
CN107689923A (zh) | 2018-02-13 |
WO2018024173A1 (zh) | 2018-02-08 |
EP3487132A4 (en) | 2019-07-03 |
US10911364B2 (en) | 2021-02-02 |
EP3487132B1 (en) | 2020-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10911364B2 (en) | Packet processing method and router | |
KR0150275B1 (ko) | 멀티캐스트 통신의 폭주 제어방법 | |
KR101468833B1 (ko) | 계층적 프로파일 스케줄링 및 쉐이핑 | |
US9479384B2 (en) | Data stream scheduling method, device, and system | |
JP7433479B2 (ja) | パケット転送方法、装置及び電子デバイス | |
US8553708B2 (en) | Bandwith allocation method and routing device | |
KR100875739B1 (ko) | Ip 네트워크 시스템에서의 패킷 버퍼 관리 장치 및 방법 | |
CN109314673B (zh) | 一种客户业务传输方法和装置 | |
CN105391567A (zh) | 流量管理实现方法、装置和网络设备 | |
US10263906B2 (en) | Flow scheduling device and method | |
WO2017045561A1 (zh) | 分配全局标签的方法、获取全局标签的方法及相关装置 | |
US10063478B2 (en) | Switching device and control method of switching device | |
KR101426217B1 (ko) | 예약된 스트림의 최대 레이턴시를 감소시키는 방법 | |
JP4957660B2 (ja) | ラベルスイッチングネットワークにおける通信装置 | |
WO2015180426A1 (zh) | 一种数据传输方法、装置及系统 | |
WO2019165855A1 (zh) | 一种报文传输的方法及装置 | |
US9846658B2 (en) | Dynamic temporary use of packet memory as resource memory | |
CN113014498A (zh) | 一种收发数据的方法及装置 | |
JP5617800B2 (ja) | 情報処理装置及びパケット複製方法 | |
JP5742424B2 (ja) | 通信装置及び方法、並びに制御装置 | |
CN109327402B (zh) | 拥塞管理方法及装置 | |
CN117793583A (zh) | 报文转发方法、装置、电子设备及计算机可读存储介质 | |
JP2003134155A (ja) | ネットワークシステム | |
CN114363434A (zh) | 一种视频帧发送方法和网络设备 | |
CN115567803A (zh) | 一种带宽分配方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |