掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及计算机技术领域,特别是涉及一种快转发报文方法、网络设备、存储介质及计算机程序产品。

背景技术

目前,为了加快转发报文的速度,在交换芯片中配置快转表,并卸载处理器中的快转表,在根据交换芯片中的快转表确定允许该报文快转发时,可以直接获取到报文的出端口,并直接从出端口转发,但是,当该出端口拥塞时,如果该出端口仍持续接收到的数据包报文,且发送速率已经超过出口带宽,就会导致交换芯片硬件队列的小缓存溢出,进而导致持续丢包因此,如何提高转发报文效率的同时避免丢包是目前亟需解决的问题。

发明内容

本申请提供一种快转发报文方法、网络设备、存储介质及计算机程序产品,解决了如何提高转发报文效率的同时避免丢包的问题。

第一方面,提供了一种快转发报文的方法,方法包括:接收报文;在允许快转发报文时,根据第一映射表确定报文的下一跳信息,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态;当出端口未拥塞时,根据下一跳信息转发报文。

结合第一方面,在一种可能的实现方式中,解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型;当快转表中存在报文的五元组信息时,指示允许快转发报文。

结合第一方面,在另一种可能的实现方式中,当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

结合第一方面,在另一种可能的实现方式中,当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发报文,将报文上送至处理器,根据处理器中的第二快转表转发报文。

第二方面,提供一种快转发报文装置,快转发报文装置包括接收模块、确定模块和转发模块。

接收模块用于接收报文。

确定模块用于在允许快转发报文时,根据第一映射表确定报文的下一跳信息,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态。

转发模块用于当出端口未拥塞时,根据下一跳信息转发报文。

结合第二方面,在一种可能的实现方式中,确定模块还用于:解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型;当快转表中存在报文的五元组信息时,指示允许快转发报文。

结合第二方面,在另一种可能的实现方式中,转发模块还用于:当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

结合第二方面,在另一种可能的实现方式中,转发模块还用于:当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发报文,将报文上送至处理器,根据处理器中的第二快转表转发报文。

第三方面,提供一种网络设备,网络设备包括处理器、交换芯片、通信接口和存储器,存储器用于存储计算机指令;通信接口用于接收报文;交换芯片用于接收报文;在允许快转发报文时,根据第一映射表确定报文的下一跳信息,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态;当出端口未拥塞时,根据下一跳信息转发报文;当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列;当交换芯片执行一组计算机指令时,执行第一方面或第一方面任一种可能实现方式中的方法的各个模块的功能。处理器用于在报文的出端口拥塞时,接收交换芯片发送的报文;将报文加入队列优先级对应的缓存队列中,当出端口解除拥塞时,从出端口转发报文;当处理器执行一组计算机指令时,执行第一方面或第一方面任一种可能实现方式中的方法的各个模块的功能。

第四方面,提供一种计算机可读存储介质,包括计算机软件指令;当计算机软件指令在计算机中运行时,使得计算机执行如第一方面或第一方面可能的实现方式中任一项所述的方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面的任一种实现方式所述的方法。

本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

图1为本申请提供的一种网络设备的结构示意图;

图2为本申请提供的一种快转发报文方法的流程示意图;

图3为本申请提供的一种交换芯片快转发报文的示意图;

图4为本申请提供的一种处理器快转发报文的示意图;

图5为本申请提供的一种快转发报文装置的结构示意图;

图6提供了一种计算机设备。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为方便理解本申请实施例的方案,首先给出相关概念的简要介绍如下:

网络拥塞是指在网络中转发数据包带宽超出端口转发能力时,由于网络交换机的队列缓存资源有限而造成数据报文转发时延增大,严重时甚至发生丢包重传,进一步加剧拥塞,使得业务发生中断。

为了解决提高转发报文效率的同时避免丢包的问题,本申请实施例提供了一种快转发报文方法,即该方法应用于包括处理器和交换芯片的网络设备上,交换芯片接收报文后,根据交换芯片上的快转表确定交换芯片是否可以快转发报文,在允许交换芯片快转发该报文时,根据第一映射表确定报文的下一跳信息,下一跳信息包括报文的出端口、编辑信息和队列优先级,根据第二映射表确定报文的出端口的拥塞状态,在出端口未拥塞时,根据下一跳信息转发报文,在出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。通过在交换芯片中配置快转表可以加快网络设备的转发速度,提高转发效率;在交换芯片中配置第一映射表和第二映射表可以维护下一跳信息和出端口拥塞信息,避免在出端口拥塞时,持续向出端口转发报文,避免出端口拥塞导致丢包的问题。

下面将结合附图对本申请实施例的实施方式进行详细描述。

图1为本申请提供的一种系统架构的示意图。该系统架构图是网络设备的举例说明。参考图1,网络设备100包括交换芯片110和处理器120。

交换芯片110包括入方向处理引擎111和出方向处理引擎112。入方向处理引擎111用于接收报文,解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型;当快转表中存在报文的五元组信息时,指示允许交换芯片快转发报文。当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发报文。

出方向处理引擎112用于在允许交换芯片快转发报文时,根据第一映射表确定报文的出端口,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态;当出端口未拥塞时,根据下一跳信息转发报文,当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

处理器120用于在报文的出端口拥塞时,接收交换芯片发送的报文;将报文加入队列优先级对应的缓存队列中。当出端口解除拥塞时,从出端口转发报文。

接下来,结合附图对快转发报文方法进行详细说明。图2为本申请实施例提供一种快转发报文方法的流程示意图。在这里以网络设备100为例进行说明。

步骤210、接收报文。

交换芯片的物理端口接收到数据包后,入方向处理引擎识别报文。在入方向处理引擎识别到报文后,根据入方向处理引擎中存储的快转表确定该报文的快转权限。具体的,解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型。当快转表中存在报文的五元组信息时,指示允许快转发报文;当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发该报文。

在不允许交换芯片快转发该报文时,通过DMA-RX将报文上送至处理器的缓存队列,处理器解析报文得到五元组信息,确定处理器中的快转表中是否存在该报文的五元组信息,当处理器快转表中存在报文的五元组信息时,指示允许处理器快转发报文,根据查表结果获取到出端口,再通过DMA-TX将报文发送到交换芯片,最终,从交换芯片物理出端口转发出去。一旦出口发生拥塞,由于CPU根据出口拥塞状态信息,可以将大量数据包缓存在软件队列,避免发送速率超过出口带宽,导致丢包。

步骤220、在允许快转发报文时,根据第一映射表确定报文的下一跳信息。

在允许交换芯片快转发报文时,根据第一映射表确定报文的下一跳信息,下一跳信息包括报文的出端口、编辑信息和队列优先级。报文的出端口可以作为第二映射表的索引,根据出端口号确定对应的出端口的拥塞状态。

表1

步骤230、根据第二映射表确定出端口的拥塞状态。

由于交换芯片具备转发查表功能,但特征是缓存小,一旦出口持续拥塞,无法缓存大量数据包。因此在交换芯片上配置用于指示端口拥塞状态的第二映射表。根据表2所示,出端口1和出端口5的拥塞状态为拥塞,出端口2-4的拥塞状态为未拥塞,当根据第一映射表查询得到报文的出端口为2-4时,该报文直接从交换芯片的物理端口转发出去,当根据第一映射表查询得到报文的出端口为1或5时,该报文会被上送到CPU侧处理。

表2

在出口不拥塞时,直接根据第一映射表指示的下一跳信息转发该报文,可以充分发挥快转发硬件卸载的性能优势;在出口拥塞时,除了需要查询第一映射表中该报文的下一跳信息,还会查询第二映射表中出端口的拥塞状态,在出端口拥塞时,使得第一映射表的下一跳的转发动作失效,该数据包会被上送到CPU侧处理,由于CPU侧软件队列具备大缓存,从而避免了出口持续拥塞带来丢包的风险。

步骤240、当出端口未拥塞时,根据下一跳信息转发报文。

如图3所示,如果出端口未发生拥塞,根据第一映射表获取下一跳信息,下一跳信息包括该报文的出端口,直接由交换芯片从对应的物理出端口将报文转发出去,不会上送CPU。从交换芯片硬件快转表转发出去的报文,会维护到第二级映射表的端口负载和拥塞状态,在报文从出端口转发出去后,将该出端口的拥塞状态反馈至第二映射表。

步骤250、当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

如图4所示,如果出口发生拥塞,将第一映射表获取的下一跳信息转发失效,将命中该快转表的数据包上送CPU处理。通过CPU侧软件队列的大缓存能力,将数据包缓存在双倍速率同步动态随机存储器,避免在交换芯片的硬件队列缓存小导致出口拥塞丢包。最终,从CPU软转发到交换芯片出端口的数据包,会维护到第二级映射表的端口负载和拥塞状态。

可以理解的是,为了实现上述实施例中功能,计算机包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。

图5为本申请的实施例提供的快转发报文装置的结构示意图。这些快转发报文装置可以用于实现上述方法实施例中网络设备的功能,因此也能实现上述方法实施例所具备的有益效果。

如图5所示,快转发报文装置500包括接收模块501、确定模块502和转发模块503。快转发报文装置500用于实现上述图2中所示的方法实施例中网络设备100的功能。

当快转发报文装置500用于实现图2所示的方法实施例中网络设备100的功能时:接收模块501、确定模块502和转发模块503。

接收模块501用于接收报文。

确定模块502用于在允许快转发报文时,根据第一映射表确定报文的下一跳信息,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态。

转发模块503用于当出端口未拥塞时,根据下一跳信息转发报文。

确定模块502还用于:解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型;当快转表中存在报文的五元组信息时,指示允许快转发报文。

转发模块503还用于:当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

转发模块503还用于:当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发报文,将报文上送至处理器,根据处理器中的第二快转表转发报文。

有关上述接收模块501、确定模块502和转发模块503更详细的描述可以参考图2所示的方法实施例中相关描述直接得到,这里不加赘述。

图6提供了一种计算机设备。图6所示的计算机设备600具体可以用于实现上述图5所示实施例中快转发报文装置500的功能。

计算机设备600包括总线601、处理器602、交换芯片603、通信接口604和存储器605。处理器602、存储器605和通信接口604之间通过总线601通信。总线601可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口604用于与外部通信,例如接收IP报文。

其中,处理器602可以为中央处理器(central processing unit,CPU),处理器602用于在报文的出端口拥塞时,接收交换芯片发送的报文;将报文加入队列优先级对应的缓存队列中。当出端口解除拥塞时,从出端口转发报文。

交换芯片用于接收报文,解析报文得到五元组信息,五元组信息包括源IP地址、目的IP地址、源端口、目的端口和协议类型;当快转表中存在报文的五元组信息时,指示允许交换芯片快转发报文。当快转表中不存在报文的五元组信息时,指示不允许交换芯片快转发报文;在允许交换芯片快转发报文时,根据第一映射表确定报文的出端口,第一映射表包括至少一个下一跳ID、以及每个下一跳ID对应的报文的下一跳信息,下一跳信息包括出端口、编辑信息和队列优先级;根据第二映射表确定出端口的拥塞状态,第二映射表包括至少一个出端口,以及每个出端口对应的拥塞状态;当出端口未拥塞时,根据下一跳信息转发报文,当出端口拥塞时,将报文和报文的下一跳信息上送至处理器的缓存队列。

存储器605可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器605还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。

存储器605中存储有可执行代码,处理器602执行该可执行代码以执行前述快转发报文的方法。

具体地,在实现图5所示实施例的情况下,且图5实施例中所描述的各模块为通过软件实现的情况下,存储器605存储执行图5中的接收模块501、确定模块502和转发模块503的功能所需的软件或程序代码,处理器602用于执行存储器605中的指令,执行应用于快转发报文装置500的快转发报文的方法。

本申请还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述应用于快转发报文装置500的快转发报文的方法。

本申请还提供了一种计算机程序产品,所述计算机程序产品被计算机执行时,所述计算机执行前述方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

相关技术
  • 网络设备系统、网络设备系统的实现方法以及计算机可读存储介质
  • 一种报文发送方法、装置、网络设备和计算机可读介质
  • 存储管理方法、存储系统和计算机程序产品
  • 图像分类方法及装置、电子设备、计算机程序及存储介质
  • 解调参考信号传输方法、网络设备及计算机可读存储介质
  • 报文处理方法、设备、存储介质及计算机程序产品
  • 报文处理方法、装置、设备、存储介质和计算机程序产品
技术分类

06120115926919