CN102195875A - 组合式硬件/软件转发机制和方法 - Google Patents
组合式硬件/软件转发机制和方法 Download PDFInfo
- Publication number
- CN102195875A CN102195875A CN2011100648720A CN201110064872A CN102195875A CN 102195875 A CN102195875 A CN 102195875A CN 2011100648720 A CN2011100648720 A CN 2011100648720A CN 201110064872 A CN201110064872 A CN 201110064872A CN 102195875 A CN102195875 A CN 102195875A
- Authority
- CN
- China
- Prior art keywords
- grouping
- forwarding engine
- engine
- hardware
- repeater system
- 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.)
- Granted
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
- H04L47/33—Flow control; Congestion control using forward notification
-
- 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/60—Router architectures
-
- 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/30—Routing of multiclass traffic
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- 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
相关申请的交叉引用
本申请要求提交于2010年3月16日的标题为“CombinedHardware/Software Forwarding Mechanism and Method”的第61/314,328号美国临时申请的权益,该申请的全部公开内容在此通过引用并入本文。
技术领域
本发明总体涉及通信***,并且更具体而言,涉及诸如用于家庭或小型办公室的路由器、网关或者转发***。
背景技术
在此提供的背景描述是为了总体展示本公开的上下文。本发明人的成果在其被描述于这一背景技术章节的程度上,以及除此之外在提交时不作为现有技术的描述方面,既不明确地也不隐含地被承认是针对本公开的现有技术。
诸如用于家庭和小型办公室的路由器、网关和其他转发***之类的通信设备被设计用于将一个网络中的多个设备彼此连接并且与另一网络连接。通常而言,这样的转发***处理传入和传出流或数据流的多个连接。例如,在家庭网络中,转发***可以向电视机路由流式视频,向计算机路由游戏会话,以及向另一计算机路由文件下载。一般而言,转发***从第一网络中的源设备接收数据分组,执行分组解析和分类,将分组排队,并且将分组向第二网络中适当的目的地设备转发。此外,转发***从第二网络中的各种设备接收分组,并对分组进行处理并且将其向第一网络转发。在转发***内,对所有分组的处理通常是通过使用诸如CPU(中央处理单元)之类的处理器执行软件,或者通过使用专用硬件转发设备来执行的。
发明内容
在一个实施方式中,一种利用网络业务的硬件转发和软件转发的方法包括至少部分基于分组所对应的流的优先级对该分组进行分类。该方法还包括选择使用执行机器可读指令的处理器实现的转发引擎或者硬件转发引擎之一来做出关于分组的转发决策。该选择基于一个或多个资源的可用性或者分组的分类中的至少一个。
在另一实施方式中,转发***包括标识引擎、硬件转发引擎和使用执行机器可读指令的处理器实现的转发引擎。转发***还包括选择引擎,该选择引擎被配置用于选择硬件转发引擎或者使用执行机器可读指令的处理器实现的转发引擎,用于处理入口(ingress)分组。该选择基于一个或多个资源的可用性的指示或者由标识引擎所确定的入口分组的分类中的至少一个。
在又一实施方式中,转发***包括:处理器和存储器;解析器和分类器引擎;软件转发引擎,被配置用于处理分组以用于转发、硬件转发引擎,被配置用于处理分组以用于转发;以及选择引擎。选择引擎包括机器可读指令,该机器可读指令被存储于存储器上、由处理器可执行,并且被配置用于确定对用于处理分组以用于转发的软件转发引擎或者硬件转发引擎之一的选择。选择引擎至少基于以下之一确定所述选择:资源可用性的指示,或者由解析器和分类器引擎确定的分组分类、由解析器和分类器引擎所确定的基于分组所对应的流的优先级的分组分类。
附图说明
图1是根据本文公开的一个实施方式的、连接两个或更多个网络的示例转发***的框图;
图2是根据一个实施方式的选择装置的框图;
图3是根据本文公开的一个实施方式的、转发***的入口管线的框图;
图4是根据本文公开的一个实施方式的、转发***的出口管线的框图;
图5是根据一个实施方式的、用于结合转发***或网关中的网络业务的硬件和软件转发的示例方法的流程图。
具体实施方式
图1是根据本文公开的一个实施方式的、连接两个或更多个网络的示例转发***50的框图。转发***50能够高效而可靠地在外部网络102与内部网络105之间的示例布置中转发业务或数据分组。在一些实施方式中,转发***50还能够在内部网络105中的设备之间转发业务。转发***50至少包括交换机/路由器用于路由数据分组,并且可以包括其他功能性设备,比如调制解调器或者无线网络接入点。通常而言,转发***50包括存储计算机可读或机器可读指令和分组队列的存储器60,以及用于执行所述计算机可读或机器可读指令的处理器70。转发***50的例子包括路由器、交换机、家庭或住宅用网关、小型办公室(公司或企业)网关以及用于对网络间的数据分组的流或流动的多个连接进行处理的其他类型的通信设备。除非另有说明,否则术语“转发***”、“网关”、“分组处理器”、“分组处理***”和“路由器”在本文中可以互换使用。
转发***50例如通过因特网服务提供商,将诸如用于家庭或小型企业内的局域网(LAN)之类的内部网络105向一个或多个外部网络102连接。通常而言,外部网络102是因特网,但是,转发***50也可以替代地或者额外地提供与其他外部网络的连接,比如与用于市区或机构园区中的更大的LAN或者广域网(WAN)的连接。一般而言,转发***50包括具有一个或多个网络端口的网络接口,用以经由一个或多个链路108与外部网络102通信。一个或多个链路可以是任何合适的通信链路,比如任何目前已知的合适的通信或联网技术。链路的例子包括有线电视链路、DSL(数字用户线)链路、光纤链路、T1链路、以太网、卫星链路、射频(RF)链路、快速以太网/千兆位以太网(FE/GE)链路、无源光网络(P0N)链路,等等。
转发***50一般还包括具有一个或多个网络端口的网络接口,用于与内部网络105通信。内部网络105包括如下设备110a-110f,所述设备110a-110f被配置和启用用于经由诸如局域网(LAN)协议和/或无线LAN协议之类的联网通信协议进行通信。在一个实施方式中,设备110a-110f经由一个或多个链路112与转发***50通信,并且转发***50还充当交换机,以实现有线的或无线的LAN。在其他实施方式中,转发***50经由一个或多个链路112耦合至实现有线的或无线的LAN的单独的交换机。包含于内部网络105中的设备的例子包括诸如计算机110a或服务器110b之类的计算设备,以及诸如智能电话、膝上型计算机、平板计算机等之类的移动设备110c。内部网络105中可能的设备的其他例子包括诸如电视机、电影投影仪、音响***和其他音频/视觉设备之类的媒体设备110d。还有其他例子包括诸如硬盘、网络存储设备等之类的数据存储设备110e。一般而言,内部网络105的其他合适的设备110f与转发***50通信并由转发***50提供服务。
由转发***50提供服务的网络业务包括源自设备110a-110f中的每一个设备并以外部网络102为目的地的数据分组,以及源自外部网络102并以设备110a-110f中的一个或多个设备为目的地的网络业务。在一个实施方式中,转发***50还服务于源自设备110a-110f并以内部网络105中的一个或多个其他设备110a-110f为目的地的数据分组。网络业务以数据流动或流的形式经入口输入(ingressing)和经出口输出(egressing)转发***50。本文中所用的术语“入口”、“经入口输入”、“传入”、“出口(egress)”、“经出口输出”和“传出”是从转发***50的角度使用的。亦即,入口或者传入的分组是(从内部网络105或者从外部网络102)进入转发***50的分组,而经出口输出或者传出的分组是离开转发***50(去往内部网络105或者去往外部网络102)的分组。并且如本文中所用,术语“流动”、“数据流动”、“数据流”和“流”、“业务”、“业务流”、“网络业务”以及“网络业务流”等可以互换使用,以表示由一个网络中的设备发送并以另一网络中的另一设备为目的地的相关的数据分组。因此,特定数据流的所有分组都具有相同的来源和相同的目的地,以及相同的服务质量(QoS)或优先级要求。举例而言,流可以是与下载的文件、流式视频、流式音频、因特网协议语音(VoIP)、用户输入的聊天室字符序列、电子邮件、web页面上的关于用户选择的指示等相对应的数据流。此外,为便于讨论,本文所描述的技术涉及源自外部网络102并以内部网络105中的目标设备110a-110f为目的地的流,但应当注意的是,本文所描述的技术同样适用于源自内部网络105中的目标设备110a-110f并以外部网络102为目的地的流,或者适用于源自内部网络105中的目标设备110a-110f并以内部网络105中的另一目标设备110a-110f为目的地的流。
某些对时间要求严格的网络业务被指派以相对较高的优先级,而其他容许延迟的业务被指派以较低的优先级。典型的较高优先级流的例子包括诸如IPTV(因特网协议电视)或电影、VoIP之类的流式媒体流以及基本上需要实时处理的其他类型的应用。典型的较低优先级流的例子包括诸如web浏览、电子邮件、聊天室消息、TCP(传输控制协议)会话的建立、PPPoE(以太网点对点协议)连接的建立等应用以及无需实时处理或者可以容许一定延迟的其他类型的应用。流的优先级在某些情况下基于针对客户的商定吞吐量或者服务质量。
在现有转发***(未示出)中,通常使用诸如ASIC(专用集成电路)设备、定制IC等之类的专用硬件实现向给定的高优先级流或者其数据净荷整体提供服务(本文称为“硬件转发”)。硬件转发以线速发生并且通常远远快于由实现软件指令的处理器进行的转发(本文中可互换地称为“软件处理”或者“软件转发”)。然而,这样的专用硬件转发需要大量昂贵的存储器并且在其服务于不同类型和不同复杂度的数据流和应用的灵活性上受限。另一方面,软件转发提供比硬件转发更大的灵活性,但却在性能和速度上受限。
再次参考图1,转发***50将多个流(并且至少在某些实施方式和/或场景中甚至在单独一个流内)的分组处理在硬件转发和软件转发之间进行负载分担,以提供最高的***性能和灵活性。具体而言,转发***50包括选择装置115,该选择装置115出于负载分担的目的以及其他目的而在转发***50中的硬件和软件转发引擎之间进行选择。在一个实施方式中,选择装置115耦合至解析器和分类器引擎118,该解析器和分类器引擎118解析所有传入分组的报头(以及可选的其他部分)并对每个传入的分组进行标识和分类。在一个示例性实施方式中,传入分组被各自标识或分类成对应于相应的流,并且具体而言,标识或分类成对应于相应的流的优先级。在一个实施方式中,解析器和分类器引擎118基于存储于硬件存储器位置(比如存储器60)中的信息来确定流和/或其相应的优先级。在一个实施方式中,解析器和分类器引擎118以硬件实现。在一个备选实施方式中,解析器和分类器引擎118至少部分地以软件实现。提交于2010年11月16日的申请号为12/947,678的共同未决美国专利申请中描述了一种合适的解析器和分类器引擎118,在此通过引用而将其全部公开内容并入本文。
在一个实施方式中,选择装置115包括选择引擎120。针对给定的经入口输入的分组,选择引擎120选择软件转发引擎122或者硬件转发引擎125之一,以基于由解析器和分类器引擎118所确定的给定分组的标识或分类来对该分组进行处理。在一些实施方式中,选择引擎120进一步基于***资源可用性(比如***负载状态、流带宽以及其他此类资源等)来选择软件转发引擎122或者硬件转发引擎125。在这些实施方式中,选择引擎120从资源监控器128接收***资源可用性的信息或者一个或多个指示。在一个实施方式中,资源监控器128以硬件实现。在一个备选实施方式中,资源监控器128的至少一部分以软件实现。另外,虽然图1将资源监控器128示为与选择装置115不同的实体,但是在一些实施方式中(未示出),资源监控器128的至少一部分包括在选择装置115中。
在一些实施方式中,选择引擎120基于由资源监控器128所指示的***负载状态、流带宽和其他参数而针对相同特定流的不同分组在选择软件转发引擎122与硬件转发引擎125之间动态地改变,以实现对***能力的最大利用。在一些实施方式中,解析器和分类器引擎118不仅基于从分组解析的信息,还基于由资源监控器128所指示的***负载状态、流带宽和其他参数来确定分组的分类。在一些实施方式中,选择装置115的至少某些部分(比如选择引擎120)包括存储在存储器60上并由处理器70可执行的计算机可读或机器可读指令。在一些实施方式中,选择装置115的至少某些部分以硬件实现。
图2是根据一个实施方式的选择装置200的框图。在一个实施方式中,选择装置200包括在图1的转发***50之中,如参考标记115所示。在其他实施方式中,选择装置200包括在其他转发***中。为了讨论的清晰而不是作为限制,以下描述涉及选择装置200包括在图1的转发***50中的实施方式,并因此包括图1中所见的参考标记。一般而言,在一种场景中,选择装置200接收来自外部网络102的流动、流或者连接的入口分组。在对入口分组进行处理以向目标设备110a-110f转发的同时,装置200基于流的优先级、服务质量、各种***资源的可用性或其变化、负载分担以及/或者其他标准而在转发***50的软件转发引擎122与硬件转发引擎125之间进行选择。
在一种场景中,转发***50的接收引擎208使用网络接口接收来自外部网络102的入口分组。接收引擎208将输入分组向标识引擎210转发。在一个实施方式中,标识引擎210包括图1的解析器和分类引擎118。在一些实施方式中,标识引擎210实现于硬件中,而在其他实施方式中,标识引擎210至少部分地使用软件来实现。
在一个实施方式中,标识引擎210解析分组的报头和(可选的)其他字段,以标识和分类该分组以及该分组所对应的特定流。因此,标识引擎210还充当分类引擎。在一些实施方式中,标识引擎210向该流指派标识(ID)或者除此之外为该流确定标识(ID)或者将该流与标识(ID)关联,并将该ID与该流相对应的分组相关联。在一些实施方式中,标识引擎210还确定与分组相对应的应用、应用类型和/或分组类型。例如,标识引擎210的至少某些部分利用了先前提及的申请号为12/947,678的美国专利申请中描述的技术。一般而言,标识引擎210所确定的信息存储在与分组相对应的分组描述符中。分组描述符由转发***50在内部使用,以指明和存储与分组有关的信息。在一个实施方式中,标识引擎或者分类器210包括针对每个流的统计计数器,其由选择引擎120用于在硬件转发引擎122和软件转发引擎125之间进行负载平衡(例如,低带宽流可由软件转发引擎122转发,而高带宽流可由硬件转发引擎125转发)。
本文所使用的“对应于流的应用”指的是通常驻留并运行于内部网络105中的目标设备110a-110f上并且作为特定流的最终目的地的应用。相应地,“对应于流的应用”对特定流中的分组的内容或数据净荷进行处理或操作。举例而言,对于其分组净荷包括下载文件的流而言,对应的应用是从中请求文件下载的计算机110a上的web浏览器、电子邮件应用、文字处理应用等。在另一示例中,对于其净荷包括流式视频的数据流而言,移动设备110c上对应的应用是视频播放器。
在一个实施方式中,应用按特性来归类或编组。举例而言,在一个实施方式中,一种类型的应用具有一种水平的期望的实时流式传输速度,而另一类型的应用则容许略有不同的实时流式传输要求。在另一例子中,应用在一个实施方式中按协议来归类,其中在TCP会话之上的应用被指派以一种类型而在PPPoE会话之上的应用被指派以不同的类型。在又一例子中,应用在一个实施方式中按类别来归类,以使得所有游戏应用是一种类型,所有流式媒体应用是另一类型,而所有web站点浏览应用是又一类型。当然,在其他实施方式中,采用了对应用进行归类或编组的其他合适的方式。
在一个实施方式中,转发***50(图1)基于策略或规则来处理入口分组。在一个实施方式中,策略或规则基于应用和/或应用类型。在其他实施方式中,策略或规则附加地或者备选地基于目标设备或用户、基于流ID、基于***资源的可用性或可用性的变化,等等。在一个实施方式中,标识引擎210通过将流ID添附至分组等(比如在分组描述符中)将流ID与分组相关联。
回到图2,在一个实施方式中,选择装置200包括硬件实现部分202和软件实现部分205。在一个实施方式中,软件实现部分205对应于存储在存储器上并由诸如CPU之类的处理器执行的计算机可执行指令,而硬件实现部分202对应于一个或多个集成电路(IC),但是其他软件和硬件实现也是可能的。在一个实施方式中,实现软件实现部分205的处理器位于与硬件实现部分202分离的IC上。在另一实施方式中,实现软件实现部分205的处理器和硬件实现部分202的至少一部分实现于单个IC上。
标识引擎210向选择装置200中的选择引擎120转发入口分组。虽然图2中所示的选择装置200的实施方式将选择引擎120示为完全实现于选择装置200的硬件实现部分202中,但在一些实施方式中,选择引擎120完全实现于软件实现部分205中。备选地,在一些实施方式中,选择引擎120部分地实现于硬件实现部分202和软件实现部分205二者中。
选择引擎120选择软件转发引擎122或者硬件转发引擎125用于对分组的处理。选择引擎120使其选择基于由标识引擎120确定的一个或多个分类,比如与分组相对应的流的优先级、服务质量、处理类型(例如,通过第2层或者通过第3层)或者其他合适的因素。在一些实施方式中,选择引擎120附加地或者备选地使其选择基于由资源指示器220所指示的一个或多个资源的可用性的指示。在一些实施方式中,资源指示器220基于来自图1的资源监控器128的信息来确定资源使用情况和/或可用性的指示。
资源指示器220提供关于一个或多个软件资源、一个或多个硬件资源或者软件资源和硬件资源二者的当前使用情况或可用性水平的指示。在一些实施方式中,软件资源例如包括处理器带宽、每流处理器带宽、由操作***分配用于处理的多个其他合适类型的资源等之中的一个或多个。在一些实施方式中,硬件资源例如包括三态内容可寻址存储器(TCAM)行、TCAM的大小、TCAM中可用条目的数目、在分组等待向目标设备转发时分组被保持于其中的队列或缓冲区的数目、队列或缓冲区的大小、队列或缓冲区中条目的数目等之中的一个或多个。
在图2中所示的实施方式中,资源指示器220提供软件和硬件资源二者使用情况的指示,如其跨越选择装置200的软件部分205和硬件部分202的位置所示。在一个实施方式中,资源指示器220部分由硬件实现并且部分由软件实现。在另一实施方式中,资源指示器220完全由软件实现,而在又一实施方式中,资源指示器220完全由硬件实现。
基于资源指示器220所提供的一个或多个指示以及/或者标识引擎210所生成的流ID和/或其他信息(诸如分组类型、应用类型等),选择引擎120选择软件转发引擎122或者硬件转发引擎125来处理入口分组的转发。被选择的转发引擎122或者125对入口分组进行处理并将入口分组向发送引擎225转发以用于从转发***50向适当的目标设备110a-110f经出口输出。对于同一流的后续的、下一个或者随后的入口分组,选择引擎120基于更新的资源指示220和/或由标识引擎210生成的信息来重新选择软件转发引擎122或者硬件转发引擎125来处理后续的、下一个或者随后的入口分组。因此,至少在一些实施方式中,同一流内的各个分组的转发(并且,特别是同一流内的各个数据净荷分组的转发)无需专门由软件转发引擎122处理或者专门由硬件引擎125处理。替代地,在至少一些实施方式中,对同一流内的各个分组的处理基于资源可用性或者使用情况,从而使负载在软件转发引擎122和硬件转发引擎125之间分担。举例而言,针对特定的流,该流的第一部分由软件转发引擎122处理,第二部分由硬件转发引擎125处理,而第三部分由软件转发引擎122处理。以这种方式,***地共享软件和硬件资源二者以处理转发***50中的业务吞吐量,并且动态地调节了转发引擎选择以处理变化的条件并且优化***资源利用。在其他实施方式中,标识引擎210所生成的信息还被选择引擎120利用,以便选择软件转发引擎122或者硬件转发引擎125来处理入口分组的转发。
在一些实施方式中,针对一个或多个资源的资源利用水平是可选的。举例而言,用于处理网络业务的最大期望处理器负载(与处理器的其他处理职责相比较)例如由操作者进行选择或指示或者自动地被选择或指示,并且由选择引擎120用于确定期望的转发引擎。如果在之后确定应当改变经选择的最大处理器负载,则手动地或自动地调整该最大处理器负载,并且选择引擎120因此作出其新的转发决定。类似地,在一些实施方式中,针对其他软件资源和/或硬件资源的资源利用水平是可选的。
考虑这样一个场景:其中通过使用转发***50中的硬件转发引擎125对若干相对较高优先级流进行转发。例如,在一个实施方式中,硬件转发引擎125包括TCAM,并且利用该TCAM来作出转发决定。然而,TCAM中条目或行数是固定的。在一个实施方式中,如果在转发引擎50处接收到新的流(例如,当用户分割IPTV屏幕或者当内部网络105中的多个设备浏览web时),选择引擎120基于来自资源指示器220的输入来确定TCAM中没有更多条目可用于容纳该新的流或者TCAM接近容量(例如,可用条目的数目低于某一阈值)。在一些实施方式中,选择引擎120还基于来自资源指示器220的输入来确定转发***50的处理器相对空载。选择引擎120继而重新选择软件转发引擎122来对当前由硬件转发引擎125服务但优先级比所述新的流低的流提供服务,并选择硬件转发引擎125使用释放的TCAM资源对新的流提供服务。
在另一场景中,在转发***50的操作期间,要求处理器执行频繁使用处理器的活动,比如***核查。选择引擎120从资源指示器220接收指示,其指示用于为流提供服务的可用处理器带宽正在下降。但是,选择引擎120可能经由资源指示器220确定硬件带宽目前并未被充分利用。针对当前由软件转发引擎122处理的流的后续分组,选择引擎120重新选择硬件转发引擎125并将流的后续入口分组向硬件转发引擎125重新定向以便处理。在频繁使用处理器的活动已结束并且资源指示器220就此作出指示之后,选择引擎120继而重新选择软件转发引擎122,而该流的其他入口分组返回到由软件转发引擎122进行处理。
在一些实施方式中,除了选择引擎120使其选择基于资源可用性之外,或者替代地,选择引擎120基于与流相对应的应用来选择转发引擎。在一个例子中,选择引擎120选择硬件转发引擎125来处理多播分组,并选择软件转发引擎122来处理OEM(原始设备制造商)相关的消息。在另一场景中,用于特定应用的不同类型的分组由不同的转发引擎进行处理。例如,当流对应于媒体流式会话时,由于与媒体流式会话的初始建立相关联的分组对实时性的要求较为宽松而将其向软件转发引擎122转发,并且将承载媒体(例如,音频、视频等)数据的分组向硬件转发引擎125转发以用于较快处理。在又一例子中,要求或者期望对应于另一流的特定应用不受潜在的处理器故障或者中断(例如,VoIP会话)的影响,并因而将这些分组向硬件转发引擎125定向以满足应用要求。因此,选择引擎120基于应用类型(例如,是否为实时密集型)、与应用相对应的分组类型(例如,管理分组、净荷分组或者其他分组)或者应用本身的要求(例如,对处理器故障、中断的抗扰程度、处理逻辑的复杂性或灵活性等)而选择转发引擎整体地向特定的流提供服务或者向流内的特定分组提供服务。其他选择标准也是可能的。
图3是根据本文公开的一个实施方式的、转发***的入口管线300的框图。在一个实施方式中,入口管线300与图1的***50和/或图2的选择装置200协同操作。在其他实施方式中,入口管线300与不同于图1的***50和/或图2的选择装置200的转发***协同操作。为了清晰而不是限制的目的,结合对图1和图2的参考而对图3进行描述。
转发***的入口管线300接收和处理用于向目标设备转发的入口分组。具体而言,从分发器块302处的网络接口接收入口分组,该分发器块302沿入口管线300的不同路径转发待处理的入口分组的各个部分。分发器302经由第一路径处理待写入存储器的分组,并且经由第二路径处理对应于该分组的管理部分(例如,报头),以确定对应的目标目的地设备并且将分组排队用于出口或传输。在图3中,与入口分组本身相对应的第一路径由实线箭头表示,而与对应于入口分组的管理或非净荷部分相对应的第二路径由虚线箭头表示。
具体而言,分组由接收(Rx)先进先出(FIFO)块305接收,用于排队以及向Rx直接存储器访问(DMA)块308转发。DMA块308将分组向存储器310复制或写入。在一个实施方式中,存储器310是外部DDR(双数据速率)存储器。在其他实施方式中,存储器310是另一类型的合适的存储器。
分发器302向解析器和分类器块312转发分组的报头。在一些实施方式中,分发器块302以及解析器和分类器块312的至少一部分都包括在图2的接收引擎208中。在相同的实施方式或者其他实施方式中,解析器和分类器块312的至少一部分包括在图2的标识引擎210中。举例而言,在一个实施方式中,解析器和分类器块312实现于转发***50的硬件实现部分202中。在一个备选实施方式中,解析器和分类器块312部分地或者完全地实现于转发***50的软件实现部分205中。在一个实施方式中,与不同的流的存在相对应的条目存储在TCAM中,并且至少一些对应于不同流的规则和策略使用TCAM来存储和访问。
解析器和分类器块312对分组的报头进行解析和分类,以确定流标识、流的优先级等。解析器和分类器块312例如确定与经入口输入的分组相对应的流是现有的流还是转发***50已知的新的流。如果经入口输入的分组对应于现有流,则解析器和分类器块312指派与该流相对应的唯一流标识符(ID)。在一些实施方式中,解析器和分类器块312还确定与分组或流相对应的应用、与分组或流相对应的应用的类型以及/或者流中分组的类型(例如,管理的、净荷等)。在一个实施方式中,由解析器和分类器312确定的信息包括在分组描述符中。
选择器块318接收来自解析器和分类器块312(例如,通过访问分组描述符)和来自资源指示器220的信息。基于这些输入中的至少一个,选择器块318选择转发引擎(软件转发引擎122或者硬件转发引擎125)来为入口分组提供服务。选择器块318比如以先前参考图2所讨论的方式,使其选择基于以下至少一个:分组的优先级、对应于分组的流的应用、应用类型、应用要求、分组类型、一个或多个软件资源的当前可用性或负载水平以及/或者一个或多个硬件资源的当前可用性或负载水平。
如果块318选择了软件转发引擎122,则向包括在软件转发引擎122中的软件转发缓冲区描述符处理机320转发入口分组的分组描述符。类似地,如果选择器块318选择了硬件转发引擎125,则向包括在硬件转发引擎125中的硬件转发缓冲区描述符处理机322转发入口分组的分组描述符。所选择的描述符处理机(例如,参考编号320或322)被分配和/或从缓冲区管理器325接收关于缓冲区的指示,并且所选择的描述符处理机将分组描述符与缓冲区相关联以在描述符的处理和排队期间以及在准备从转发***50经出口输出期间标识经入口输入的分组。共同未决的美国专利申请中描述了一种合适的缓冲区管理器325,该专利申请与本申请同时提交,被指定有律师案卷号MP3598,其要求提交于2010年5月25日的申请号为61/347,947的美国临时申请的优先权,并且要求提交于2010年3月18日的申请号为61/615,327的美国临时申请的优先权;并且在此通过引用并入其全部公开内容。
如果入口分组描述符由软件转发缓冲区描述符处理机320进行处理,则对存储有分组的缓冲区的指示(本文称为“缓冲区描述符”)本身被存储在分组描述符中,而分组描述符则被存储在一个Rx队列328中等待传输。在一个实施方式中,缓冲区描述符包括存储器310中写入有经入口输入的分组的缓冲区存储器地址,缓冲区描述符被写入分组描述符,而分组描述符则被写入选定的Rx队列。在一个实施方式中,Rx队列328由处理器来管理,并且每个Rx队列与以下一个或多个相对应:入口端口、与分组或流相对应的优先级、与分组或流相对应的应用、分组类型等。
软件转发引擎122对存储在Rx队列328中的分组描述符进行处理。针对每个分组描述符,软件转发引擎122分析该分组描述符并且确定要将该分组向其转发的出口端口。一旦确定了出口端口,软件转发引擎122就将该分组描述符存储到与所确定的出口端口相对应的Tx(发送)队列330中,即,nxm个Tx(发送)队列330中之一,其中m是转发***50的出口端口的总数。在一个实施方式中,n个队列对应于每个输出端口,并且n个Tx队列中的每一个对应于以下一个或多个:与分组或流相对应的优先级、与分组或流相对应的应用、分组类型等。从转发***50经出口输出分组的实施方式通过参考图4进行更加详细地描述。
如果入口分组描述符由硬件转发缓冲区描述符处理机322来处理,则该硬件转发缓冲区描述符处理机322将关于存储分组本身的缓冲区的指示(即,缓冲区描述符)存储在分组描述符中。此外,硬件转发和缓冲区描述符处理机322分析该分组描述符并确定要向其转发该分组的出口端口。一旦确定了出口端口,硬件转发和缓冲区描述符处理机332就将分组描述符存储在与所确定的出口端口相对应的Tx队列中,即,nxm个Tx(发送)队列330中之一,以等待传输调度,其中m是转发***50的出口端口的总数。在一个实施方式中,硬件转发缓冲区描述符处理机322使用加权弃尾(WeightedTail Drop,WTD)来选择一个Tx队列,以缓解拥塞。在一个实施方式中,缓冲区描述符包括存储器310中写入有经入口输入的分组的缓冲区存储器地址,缓冲区描述符被写入到分组描述符中,而分组描述符被写入到选定的Tx队列中。在一个实施方式中,以硬件来管理Tx队列330,并且每个Tx队列对应于m个出口端口之一并且对应于以下一个或多个:与分组或流相对应的优先级、与分组或流相对应的应用、分组类型等。
图4是根据本文公开的一个实施方式的、转发***的出口管线400的框图。在一些实施方式中,出口管线400与图1的***50、图2的选择装置200以及/或者图3的入口管线300协同操作。在其他实施方式中,出口管线400和与图1的***50不同的***、与图2的选择装置200不同的选择装置以及/或者与图3的入口管线300不同的管线协同操作。为了清晰而不是限制的目的,结合对图1、图2和图3的参考而对图4进行描述。与图3类似,对应于入口分组的路径由实线箭头表示,而与对应于入口分组的管理或非净荷部分相对应的路径则由虚线箭头表示。
转发***的入口管线400处理来自入口管线300的分组,并使分组从转发***50被转发或经出口输出。具体而言,n个Tx队列330中的多个各自包括与等待传输的分组相对应的一个或多个经排队的分组描述符。Tx调度器402从Tx队列330组中选择下一Tx队列。向Tx队列缓冲区描述符处理机405传送选定的Tx队列的指示,而该Tx队列缓冲区描述符处理机405从选定的Tx队列330中提取或读取下一分组描述符。提取的分组描述符包括存储器310中写入有分组数据的特定缓冲区存储器位置的指示符。基于由Tx队列缓冲区描述符处理机405所提供的特定缓冲区存储器位置的指示符,TxDMA 408从存储器310读取分组数据。在一个实施方式中以及在一些场景中,修改分组的原始入口报头,以支持从***50经出口输出。在另一实施方式中以及在一些场景中,通过附加新生成的报头来修改分组。在一个实施方式中,由块410执行诸如校验和之类的可选纠错和/或检错或者其他纠错和/或检错并将其添加至发送的经修改的分组,并且分组在Tx FIFO 412中排队以等待经由网络接口从转发***50经出口输出。与Tx FIFO排队分组相关联的缓冲区被释放给缓冲区管理器325,从而使释放的缓冲区可用于存储后续分组。在一些实施方式中,出口管线400的一些或所有的块402-412包括在图2的发送引擎225中。
图5是根据一个实施方式的、用于利用转发***或网关中的网络业务的硬件和软件转发的示例方法500的流程图。方法500与参考图1、图2、图3和/或图4描述的***和装置协同操作,或者与其他合适的转发***和/或选择装置协同操作。
在框502中,对在转发***或网关50处接收的分组进行解析和分类。在一些实施方式中,对分组的分类包括以下一个或多个:标识分组所对应的流、确定与流和/或分组相对应的应用或应用类型、确定分组类型、确定流的优先级等。
在框505中,选择硬件转发引擎或者软件转发引擎。转发引擎是至少基于从框502获得的信息而选择的。例如,在一些实施方式中,基于以下一个或多个来选择转发引擎:分组所对应的流、与流或分组相对应的应用(例如,视频流式传输、VoIP、管理、游戏等)、应用的类型(例如,严格要求实时性、不严格要求实时性、特定服务质量等)、应用或应用类型的性能、资源或可用性要求、分组类型、流的优先级等。在一个实施方式中,附加地或者备选地基于一个或多个硬件资源、一个或多个软件资源或者二者的某些组合的当前可用性和/或负载水平,来选择转发引擎。在框508中,使用所选择的转发引擎来处理分组。在一个实施方式中,使用相同的所选择的转发引擎来处理相同的流中的后续分组。
在框510中,获得关于改变的指示。在一个实施方式中,改变的指示是对至少一个硬件或软件资源可用性或负载水平的改变。在同一实施方式或不同实施方式中,改变的指示附加地或者备选地是流中分组的类型的改变。在其他实施方式中,在框510中附加地或者备选地获得其他合适的改变的指示。
在框512中,基于并响应于获得的一个或多个指示,选择硬件转发引擎或者软件转发引擎,并且在框515中,使用在框512中经重新选择的转发引擎通过转发***50对流的一个或多个后续分组进行处理。举例而言,在一个实施方式中,如果框510指示硬件资源的可用性水平下降至低于阈值水平,则在框512中基于硬件资源的下降而选择软件转发引擎,并且使用软件转发引擎向目标设备转发后续分组。在另一示例中,如果框510指示分组类型的变化(例如,第一分组的类型是管理性,而第二分组的类型是视频数据),则在框512中基于分组类型的变化而在框512中选择硬件转发引擎,并且使用硬件转发引擎向目标设备转发第二分组。
如果在流的后续分组的转发期间发生另一变化,则方法500返回至框510(如箭头518所示),以响应该变化。
应当注意,尽管参考图1-图5对分组处理进行的讨论是以从外部网络102经入口输入的分组为上下文的,但本文所公开的技术、***、装置和方法同样适用于处理从内部网络105经入口输入的分组或者源自和终止于内部网络105内的设备的分组。另外,尽管转发技术、***、装置和方法的实施方式在本文中是在以太网络的背景下描述的,但本领域普通技术人员依据本文的公开内容和教导,将会意识到类似的方法和装置也适合用于其他合适的通信网络。
如前所述,上文公开的各种框、操作和技术中至少有一些可以实现于硬件、执行固件和/或软件指令的处理器或者其任何组合之中。当在固件和/或软件中实现时,固件和/或软件指令可被存储于任何计算机可读或机器可读存储器中,比如在磁盘、光盘或者其他有形存储介质上,在RAM或ROM或快闪存储器、处理器、硬盘驱动器、光盘驱动器、磁带驱动器等中。软件或固件指令可以包括下述存储于一个或多个计算机可读或机器可读存储介质的存储器上的计算机可读或机器可读指令,所述指令在由处理器执行时,使处理器执行各种动作。当在硬件中实现时,硬件可以包括一个或多个分立组件、集成电路、专用集成电路等。
尽管已参考仅供示例说明而并不对本发明做出限制的具体示例描述了本发明,但可以在不背离本发明的范围的同时对所公开的实施方式做出改变、添加和/或删减。
Claims (19)
1.一种利用网络业务的硬件转发和软件转发的方法,包括:
至少部分基于分组所对应的流的优先级来分类所述分组;
选择使用执行机器可读指令的处理器实现的转发引擎或者硬件转发引擎之一来做出关于所述分组的转发决定,其中所述选择基于下述各项中的至少一项:i)所述硬件转发引擎和/或所述使用执行所述机器可读指令的所述处理器实现的转发引擎的一个或多个资源的可用性,或者ii)所述分组的分类;以及
使用所选择的转发引擎来转发所述分组。
2.根据权利要求1所述的方法,其中选择所述由执行所述机器可读指令的所述处理器实现的转发引擎或者所述硬件转发引擎之一至少部分地基于所述硬件转发引擎和/或所述由执行所述机器可读指令的所述处理器实现的转发引擎的所述一个或多个资源的可用性。
3.根据权利要求1所述的方法,其中选择所述由执行所述机器可读指令的所述处理器实现的转发引擎或者所述硬件转发引擎之一基于下列各项中的至少一项:与所述分组相对应的流中的分组速率、所述硬件转发引擎的TCAM(三态内容可寻址存储器)的大小、所述TCAM中可用条目的数目、分配的队列或缓冲区的数目、或者队列或缓冲区中条目的数目。
4.根据权利要求1所述的方法,其中分类所述分组包括确定与所述分组相对应的应用的类型或者与所述分组相对应的应用的要求中的至少一个;
其中选择所述由执行所述机器可读指令的所述处理器实现的转发引擎或者所述硬件转发引擎之一基于所述应用的类型或者所述应用的要求中的至少一个。
5.根据权利要求1所述的方法,其中所述分组对应于相关分组的网络业务流,并且所述方法还包括:
获得关于所述一个或多个资源的可用性的变化的指示;
基于所述变化来重新选择所述由执行所述机器可读指令的所述处理器实现的转发引擎或者所述硬件转发引擎;以及
使用经重新选择的转发引擎来转发与所述网络业务流相对应的后续分组。
6.根据权利要求1所述的方法,其中分类所述分组包括确定所述分组的类型,并且其中选择对所述硬件转发引擎或者所述由执行所述机器可读指令的所述处理器实现的转发引擎之一进一步基于所述分组的类型。
7.根据权利要求1所述的方法,其中所述分组是与所述流相对应的第一分组,并且所述方法还包括:
分类与所述流相对应的第二分组;
基于所述第二分组的分类来重新选择所述硬件转发引擎或者所述由执行所述机器可读指令的所述处理器实现的转发引擎之一;以及
使用经重新选择的转发引擎来转发所述第二分组。
8.根据权利要求1所述的方法,其中所述方法由家庭网关或者小型企业网关之一来执行。
9.一种转发***,包括:
标识引擎,所述标识引擎被配置用于基于经入口输入的分组所对应的流的优先级来确定所述经入口输入的分组的分类;
硬件转发引擎,被配置用于对所述经入口输入的分组进行处理;
使用执行机器可读指令的处理器实现的转发引擎,其被配置用于对所述经入口输入的分组进行处理;以及
选择引擎,其被配置用于:
基于下列各项中的至少一项来选择所述硬件转发引擎或者所述使用执行所述机器可读指令的所述处理器实现的转发引擎之一:i)所述硬件转发引擎和/或所述使用执行所述机器可读指令的所述处理器实现的转发引擎的一个或多个资源的可用性的指示,或者ii)由所述标识引擎所确定的所述经入口输入的分组的分类。
10.根据权利要求9所述的转发***,还包括发送引擎,所述发送引擎耦合至所述硬件转发引擎和所述使用执行所述机器可读指令的所述处理器实现的转发引擎中的每一个,并且所述发送引擎被配置用于从所述转发***经出口输出所述经入口输入的分组。
11.根据权利要求9所述的转发***,其中所述一个或多个资源的可用性的指示包括下列各项中的至少一项的可用性的指示:与所述经入口输入的分组相对应的流中的分组速率、所述硬件转发引擎的TCAM(三态内容可寻址存储器)的大小、所述TCAM中可用条目的数目、分配的队列或缓冲区的数目、或者队列或缓冲区中条目的数目。
12.根据权利要求9所述的转发***,其中所述选择引擎被配置用于基于对应于所述经入口输入的分组的应用的类型或者所述应用的要求中的至少一个来选择所述硬件转发引擎或者所述使用执行所述机器可读指令的所述处理器实现的转发引擎之一。
13.根据权利要求9所述的转发***,其中:
所述转发***还包括资源指示器,所述资源指示器被配置用于生成关于至少一个资源的变化的指示;以及
所述选择引擎进一步被配置用于基于所述至少一个资源的变化的指示而重新选择所述硬件转发引擎或者所述使用执行所述机器可读指令的所述处理器实现的转发引擎之一,并使得所述流的后续经入口输入的分组被转发向经重新选择的转发引擎。
14.根据权利要求13所述的转发***,其中所述关于至少一个资源的变化的指示包括所述关于至少一个资源的可用性的变化的指示。
15.根据权利要求14所述的转发***,其中所述关于至少一个资源的可用性的变化的指示包括所述关于至少一个资源的可用性的变化的可选数量的指示。
16.根据权利要求9所述的转发***,其中所述转发***是家庭网关或者小型企业网关之一。
17.一种转发***,包括:
处理器和存储器;
解析器和分类器引擎;
软件转发引擎,其包括存储于所述存储器上的、由所述处理器可执行的并且被配置用于处理分组以用于转发的第一机器可读指令;
硬件转发引擎,其被配置用于处理所述分组以用于转发;以及
选择引擎,其包括第二机器可读指令,所述第二机器可读指令存储于所述存储器上、由所述处理器可执行并且被配置用于:
确定对处理所述分组以用于转发的所述软件转发引擎或者所述硬件转发引擎之一的选择;以及
基于下列各项中的至少一项来确定所述选择:资源可用性的指示、或者由所述解析器和分类器引擎所确定的所述分组的分类、基于所述分组所对应的流的优先级的所述分组的分类。
18.根据权利要求17所述的转发***,其中所述分组是对应于所述流的第一分组,并且所述转发***还包括以下至少一个:
第三进一步机器可读指令,用于:
获得关于所述资源可用性的变化的指示,
基于所述关于资源可用性的变化的指示来重新选择所述软件转发引擎或者所述硬件转发引擎之一,以及
使得对应于所述流的第二分组使用经重新选择的转发引擎进行转发;或者
第四进一步机器可读指令,用于:
获得所述第一分组的类型的指示,
进一步基于所述第一分组的类型来选择所述软件转发引擎或者所述硬件转发引擎之一,
使得所述第一分组使用所选择的转发引擎进行转发,
获得所述第二分组的类型的指示,
基于所述第二分组的类型来重新选择所述软件转发引擎或者所述硬件转发引擎之一,以及
使得所述第二分组使用经重新选择的转发引擎进行转发。
19.根据权利要求17所述的转发***,其中:
所述资源可用性的指示包括对下列各项中的至少一项的指示:与所述分组相对应的流中的分组速率、所述硬件转发引擎的TCAM(三态内容可寻址存储器)的大小、所述TCAM中可用条目的数目、分配的队列或缓冲区的数目、或者队列或缓冲区中条目的数目;
对所述软件转发引擎或者所述硬件转发引擎之一的所述选择是基于与所述分组相对应的应用的类型或者所述应用的要求中的至少一个;以及
所述转发***是家庭网关或者小型企业网关之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31432810P | 2010-03-16 | 2010-03-16 | |
US61/314,328 | 2010-03-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102195875A true CN102195875A (zh) | 2011-09-21 |
CN102195875B CN102195875B (zh) | 2016-12-07 |
Family
ID=44603283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110064872.0A Active CN102195875B (zh) | 2010-03-16 | 2011-03-15 | 组合式硬件/软件转发机制和方法 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8848715B2 (zh) |
CN (1) | CN102195875B (zh) |
IL (1) | IL211585B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110933001A (zh) * | 2019-11-18 | 2020-03-27 | 清华大学 | 一种可扩展的可重构交换机包解析器基本处理单元结构 |
CN111787435A (zh) * | 2020-06-12 | 2020-10-16 | 芯河半导体科技(无锡)有限公司 | 一种基于gpon路由器的网络加速*** |
CN112491889A (zh) * | 2020-11-27 | 2021-03-12 | 中国人民解放军战略支援部队信息工程大学 | 一种软硬件协同的可编程转发***、方法及装置 |
CN116319935A (zh) * | 2021-12-07 | 2023-06-23 | 慧与发展有限责任合伙企业 | 交换机上的非对称应用标识检测 |
CN116366577A (zh) * | 2023-03-06 | 2023-06-30 | 深圳市丰润达科技有限公司 | 交换机组播组的带宽分配方法、装置及可读存储介质 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112491B1 (en) | 2009-01-16 | 2012-02-07 | F5 Networks, Inc. | Methods and systems for providing direct DMA |
US9152483B2 (en) | 2009-01-16 | 2015-10-06 | F5 Networks, Inc. | Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof |
US8880696B1 (en) | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Methods for sharing bandwidth across a packetized bus and systems thereof |
US9313047B2 (en) | 2009-11-06 | 2016-04-12 | F5 Networks, Inc. | Handling high throughput and low latency network data packets in a traffic management device |
US8848715B2 (en) | 2010-03-16 | 2014-09-30 | Marvell Israel (M.I.S.L) Ltd. | Combined hardware/software forwarding mechanism and method |
US10135831B2 (en) | 2011-01-28 | 2018-11-20 | F5 Networks, Inc. | System and method for combining an access control system with a traffic management system |
WO2012118917A2 (en) * | 2011-03-03 | 2012-09-07 | Social Communications Company | Realtime communications and network browsing client |
US9282118B2 (en) | 2012-11-13 | 2016-03-08 | Intel Corporation | Policy enforcement in computing environment |
US9270602B1 (en) * | 2012-12-31 | 2016-02-23 | F5 Networks, Inc. | Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions |
JP6007799B2 (ja) * | 2013-01-16 | 2016-10-12 | 富士通株式会社 | 集中管理型網制御システム |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US9864606B2 (en) | 2013-09-05 | 2018-01-09 | F5 Networks, Inc. | Methods for configurable hardware logic device reloading and devices thereof |
US9288157B2 (en) * | 2013-10-15 | 2016-03-15 | National Instruments Corporation | Time-sensitive switch for scheduled data egress |
EP3085051A1 (en) | 2013-12-16 | 2016-10-26 | F5 Networks, Inc | Methods for facilitating improved user authentication using persistent data and devices thereof |
US9705740B2 (en) | 2014-02-10 | 2017-07-11 | Google Inc. | Using unified API to program both servers and fabric for forwarding for fine-grained network optimizations |
FR3021481B1 (fr) * | 2014-05-23 | 2016-05-27 | Oneaccess | Procede de distribution pour une liaison a liens multiples et heterogenes |
US10015143B1 (en) | 2014-06-05 | 2018-07-03 | F5 Networks, Inc. | Methods for securing one or more license entitlement grants and devices thereof |
US10278198B2 (en) * | 2016-08-23 | 2019-04-30 | Realtek Singapore Private Limited | Packet forwarding device, and packet-forwarding priority setting circuit and method |
EP3293923B1 (en) * | 2016-09-12 | 2020-07-22 | Alcatel-Lucent España | Method and device for media packet distribution over multiple access wireless communication network |
US10735221B2 (en) | 2017-03-28 | 2020-08-04 | Marvell International Ltd. | Flexible processor of a port extender device |
US10972453B1 (en) | 2017-05-03 | 2021-04-06 | F5 Networks, Inc. | Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof |
CN109005126B (zh) * | 2017-06-06 | 2020-06-02 | 华为技术有限公司 | 数据流的处理方法、设备和计算机可读存储介质 |
US10887240B2 (en) | 2018-02-26 | 2021-01-05 | Marvell Israel (M.I.S.L) Ltd. | Automatic flow learning in network devices |
US11855898B1 (en) | 2018-03-14 | 2023-12-26 | F5, Inc. | Methods for traffic dependent direct memory access optimization and devices thereof |
CN108616452B (zh) * | 2018-03-30 | 2020-12-25 | 新华三技术有限公司 | 报文转发方法及装置 |
US11537716B1 (en) | 2018-11-13 | 2022-12-27 | F5, Inc. | Methods for detecting changes to a firmware and devices thereof |
CN113519144B (zh) | 2019-01-10 | 2023-06-27 | 马维尔以色列(M.I.S.L.)有限公司 | 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找 |
US11343358B2 (en) | 2019-01-29 | 2022-05-24 | Marvell Israel (M.I.S.L) Ltd. | Flexible header alteration in network devices |
US11349875B2 (en) * | 2019-08-21 | 2022-05-31 | International Business Machines Corporation | Dynamic balancing of security rules execution in a database protection system |
US10972402B1 (en) * | 2019-09-27 | 2021-04-06 | Juniper Networks, Inc. | Dynamic management of inline entries in hardware across protocols in a scaled environment |
US11218411B2 (en) | 2019-11-21 | 2022-01-04 | Marvell Israel (M.I.S.L) Ltd. | Flow monitoring in network devices |
CN111479295B (zh) * | 2020-03-06 | 2022-06-10 | 珠海格力电器股份有限公司 | 数据传输方法、***、装置、设备及存储介质 |
GB202105736D0 (en) * | 2021-04-22 | 2021-06-09 | Microsoft Technology Licensing Llc | Hardware and software router |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020044553A1 (en) * | 2000-10-12 | 2002-04-18 | Signafor, Inc. | Advanced switching mechanism for providing high-speed communications with high quality of service |
US20050125424A1 (en) * | 2003-12-05 | 2005-06-09 | Guy Herriott | Decision cache using multi-key lookup |
US20050270977A1 (en) * | 2004-06-07 | 2005-12-08 | Microsoft Corporation | Combined queue WME quality of service management |
US20060029016A1 (en) * | 2004-06-29 | 2006-02-09 | Radware Limited | Debugging application performance over a network |
US20070121616A1 (en) * | 2005-11-29 | 2007-05-31 | Samsung Electronics Co., Ltd. | Methods and systems for routing packets with a hardware forwarding engine and a software forwarding engine |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000068856A2 (en) * | 1999-05-11 | 2000-11-16 | Webvan Group, Inc. | Electronic commerce enabled delivery system and method |
US6751191B1 (en) * | 1999-06-29 | 2004-06-15 | Cisco Technology, Inc. | Load sharing and redundancy scheme |
US6981054B1 (en) * | 2000-06-06 | 2005-12-27 | Advanced Micro Devices, Inc. | Flow control arrangement in a network switch based on priority traffic |
US7020143B2 (en) * | 2001-06-18 | 2006-03-28 | Ericsson Inc. | System for and method of differentiated queuing in a routing system |
US7151744B2 (en) * | 2001-09-21 | 2006-12-19 | Slt Logic Llc | Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover |
US7161904B2 (en) * | 2002-06-04 | 2007-01-09 | Fortinet, Inc. | System and method for hierarchical metering in a virtual router based network switch |
US7177311B1 (en) * | 2002-06-04 | 2007-02-13 | Fortinet, Inc. | System and method for routing traffic through a virtual router-based network switch |
US7613768B2 (en) * | 2003-05-19 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Method and system for managing a streaming media service |
US8059658B1 (en) * | 2005-12-23 | 2011-11-15 | Extreme Networks, Inc. | Method and system for automatic expansion and contraction of IP host forwarding database |
US7672293B2 (en) * | 2006-03-10 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | Hardware throttling of network traffic sent to a processor based on new address rates |
US20080101233A1 (en) * | 2006-10-25 | 2008-05-01 | The Governors Of The University Of Alberta | Method and apparatus for load balancing internet traffic |
IL189530A0 (en) | 2007-02-15 | 2009-02-11 | Marvell Software Solutions Isr | Method and apparatus for deep packet inspection for network intrusion detection |
US8054744B1 (en) | 2007-10-25 | 2011-11-08 | Marvell International Ltd. | Methods and apparatus for flow classification and flow measurement |
US20090154349A1 (en) * | 2007-12-12 | 2009-06-18 | Bernard Marc R | Method and apparatus for managing traffic flow of forwarding entries through a virtual forwarding database of a network node |
US20100274893A1 (en) * | 2009-04-27 | 2010-10-28 | Sonus Networks, Inc. | Methods and apparatus for detecting and limiting focused server overload in a network |
US8514854B2 (en) * | 2009-06-11 | 2013-08-20 | Brocade Communications Systems, Inc. | Virtual router redundancy for server virtualization |
WO2011060436A1 (en) | 2009-11-16 | 2011-05-19 | Marvell Semiconductor, Inc. | Iterative parsing and classification |
US8848715B2 (en) | 2010-03-16 | 2014-09-30 | Marvell Israel (M.I.S.L) Ltd. | Combined hardware/software forwarding mechanism and method |
US8327047B2 (en) | 2010-03-18 | 2012-12-04 | Marvell World Trade Ltd. | Buffer manager and methods for managing memory |
-
2011
- 2011-03-01 US US13/037,459 patent/US8848715B2/en active Active
- 2011-03-06 IL IL211585A patent/IL211585B/en active IP Right Grant
- 2011-03-15 CN CN201110064872.0A patent/CN102195875B/zh active Active
-
2014
- 2014-09-29 US US14/499,759 patent/US9614755B2/en active Active
-
2017
- 2017-03-09 US US15/454,759 patent/US10243865B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020044553A1 (en) * | 2000-10-12 | 2002-04-18 | Signafor, Inc. | Advanced switching mechanism for providing high-speed communications with high quality of service |
US20050125424A1 (en) * | 2003-12-05 | 2005-06-09 | Guy Herriott | Decision cache using multi-key lookup |
US20050270977A1 (en) * | 2004-06-07 | 2005-12-08 | Microsoft Corporation | Combined queue WME quality of service management |
US20060029016A1 (en) * | 2004-06-29 | 2006-02-09 | Radware Limited | Debugging application performance over a network |
US20070121616A1 (en) * | 2005-11-29 | 2007-05-31 | Samsung Electronics Co., Ltd. | Methods and systems for routing packets with a hardware forwarding engine and a software forwarding engine |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110933001A (zh) * | 2019-11-18 | 2020-03-27 | 清华大学 | 一种可扩展的可重构交换机包解析器基本处理单元结构 |
CN111787435A (zh) * | 2020-06-12 | 2020-10-16 | 芯河半导体科技(无锡)有限公司 | 一种基于gpon路由器的网络加速*** |
CN112491889A (zh) * | 2020-11-27 | 2021-03-12 | 中国人民解放军战略支援部队信息工程大学 | 一种软硬件协同的可编程转发***、方法及装置 |
CN116319935A (zh) * | 2021-12-07 | 2023-06-23 | 慧与发展有限责任合伙企业 | 交换机上的非对称应用标识检测 |
CN116366577A (zh) * | 2023-03-06 | 2023-06-30 | 深圳市丰润达科技有限公司 | 交换机组播组的带宽分配方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102195875B (zh) | 2016-12-07 |
IL211585B (en) | 2018-04-30 |
IL211585A0 (en) | 2011-05-31 |
US20170180264A1 (en) | 2017-06-22 |
US9614755B2 (en) | 2017-04-04 |
US10243865B2 (en) | 2019-03-26 |
US20110228781A1 (en) | 2011-09-22 |
US20150016451A1 (en) | 2015-01-15 |
US8848715B2 (en) | 2014-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102195875A (zh) | 组合式硬件/软件转发机制和方法 | |
US20200244588A1 (en) | Scalable network slice based queuing using segment routing flexible algorithm | |
CN104737500B (zh) | 使用为用户设备节点定义的权重从加权公平排队调度器调节内容流 | |
KR100823785B1 (ko) | 시스템 패브릭에서의 개방 루프 정체 제어를 위한 방법,장치, 제품 및 시스템 | |
US8705363B2 (en) | Packet scheduling method and apparatus | |
CN106059821B (zh) | 一种基于sdn的数据中心业务服务质量保障方法 | |
CN101023633B (zh) | 提高网络服务质量的***和方法 | |
TWI345397B (en) | Method and system for stale data detection based quality of service | |
CN101924695B (zh) | 用于网络连接的方法和*** | |
CN112313910A (zh) | 用于以数据中心为中心的城域网的多路径选择***和方法 | |
CN103238301B (zh) | 用于在路由器处管理话务的方法及路由器 | |
US9059921B2 (en) | Method, network, and computer product for flow based quality of service | |
JP2012075172A (ja) | イベントドリブンメッセージベースデータの適応的スループット管理のためのシステム及び方法 | |
CN103297347B (zh) | 一种负载均衡处理方法及装置 | |
US20160337251A1 (en) | Predictive egress packet classification for quality of service | |
TW200820697A (en) | Systems and methods for applying back-pressure for sequencing in quality of service | |
CN104919830A (zh) | 用于具有多载波功能的设备的服务偏好 | |
AU2010277680B2 (en) | Method and system for automatic selection of transmission media | |
Chou et al. | A security service on-demand architecture in SDN | |
KR100572696B1 (ko) | 광대역 가입자 집선-스위치 장치 | |
US9674094B1 (en) | Method and apparatus for controlling transmission of packets over a link aggregation group | |
US8953449B2 (en) | Virtual subport data traffic management | |
CN108075955A (zh) | 骨干网的数据处理方法及装置 | |
CN112953854B (zh) | 用于交换网络流量的设备和方法 | |
Genaveh et al. | Provide a dynamic routing algorithm for MPLS networks using fuzzy filtering approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |