针对慢速和快速端口的直通处理的制作方法

文档序号:9439521阅读:364来源:国知局
针对慢速和快速端口的直通处理的制作方法
【专利说明】针对慢速和快速端口的直通处理
[0001]相关串请的交叉引用
[0002]本申请要求于2013年3月20日提交的题为“Cut Through Processing for Slowand Fast Ports”的美国临时专利申请N0.61/803,562以及于2013年11月19日提交的题为“Cut Through - Slow to Fast”的美国临时专利申请N0.61/906,023的权益。上述两申请的公开内容通过引用结合于此。
技术领域
[0003]本公开总体上涉及网络,尤其涉及在网络设备中实施的分组处理技术。
【背景技术】
[0004]基于分组的网络中的一些类型的通信对于端到端传输时间要求非常小的时延。对于一些应用而言,甚至毫秒量级的延迟也会对所期望的结果造成不利影响,诸如以目标价格买入或卖出证券。然而,常规的“存储并转发”技术由于实施该技术的网络设备(例如,网桥设备)在开始将分组转发至下一个设备之前必须等待接收并缓存整个分组而引入了额外的时延。对于大的分组而言,这样的延迟会是明显的。
[0005]—种总体上有助于减少时延的已知技术被称作“直通(cut-through)”。利用直通,网络设备对分组的一部分(例如,报头)进行处理,并且在整个分组已经被接收并写入存储器之前开始将该分组转发/传送至下一个设备。虽然直通总体上减少了时延,但是常规的直通技术受到各种缺陷的影响。一种这样的缺陷是由于以太网协议一般要求单个分组以连续方式在网络设备之间进行传送而出现的,其中中断或暂停会导致错误情况出现。这可能是存在问题的,例如当网络设备在相对慢速的进入端口上接收分组并且将该分组转发至相对快速的外出端口的时候。由于在外出端口开始获取分组数据以便进行转发/传送时在相对慢速的端口处进入的一些分组还无法在存储器中可用,所以外出端口最终会在整个分组数据的传输已经完成之前就用光待传送的分组数据。该场景一般被称作“欠载(under-run) ”。
[0006]常规直通技术的另一种缺陷来自于以下事实,其中在能够对完整分组进行处理之前开始转发,并且因此对于各种、通常为非转发操作而言可能需要或有用的某些类型的信息在传送分组时还是未知的。例如,对于计量以及各种其它操作而言有用的接收分组的字节数在直通转发开始的时候可能是未知的。作为另一个示例,对于镜像或各种其它操作而言可能有用的接收分组是否没有错误的知识在直通转发开始的时候可能是未知的。

【发明内容】

[0007]在一个实施例中,一种用于在网络设备中处理网络分组的方法,包括在网络设备的进入端口处接收网络分组。该方法还包括在至少该网络分组的第一部分已经被接收之后,但是在该网络分组已经被完全接收之前,在该网络设备处并且基于该网络分组的该第一部分生成表示该网络分组的第一数据结构,在该网络设备的分组处理器处对该第一数据结构进行处理,并且响应于对该第一数据结构进行处理,选择性地开始将该网络分组转发至该网络设备的第一外出端口,或者选择性地不将该网络分组转发至该网络设备的第一外出端口。该方法还包括在该网络设备处生成表示该网络分组的第二数据结构。该方法还包括在已经在进入端口处完全接收到该网络分组之后,在该分组处理器处对该第二数据分组进行处理,并且响应于对该第二数据结构进行处理,选择性地将该数据分组转发至不同于该第一外出端口的第二外出端口。
[0008]在另一个实施例中,一种网络设备包括多个端口,该多个端口包括被配置为从网络接收网络分组的进入端口,以及耦合至该多个端口的分组处理器。该分组处理器包括描述符生成器单元,其被配置为在至少第一网络分组的第一部分已经在该进入端口处被接收之后,但是在该第一网络分组已经在该进入端口处被完全接收之前,基于该第一网络分组的第一部分生成表示该第一网络分组的第一数据结构。该描述符生成器单元还被配置为生成表示该第一网络分组的第二数据结构。该分组处理器还包括转发模块,其被配置为在该第一网络分组已经在该进入端口处被完全接收之前,(i)对该第一数据结构进行处理,并且
(ii)响应于对该第一数据结构进行处理,选择性地开始将该第一网络分组转发至该多个端口中的第一外出端口,或者选择性地不将该第一网络分组转发至任何外出端口。该转发模块还被配置为在该第一网络分组已经在该进入端口处被完全接收之后,(i)对该第二数据结构进行处理,并且(ii)响应于对该第二数据结构进行处理,选择性地将该第一网络分组转发至该多个端口中不同于该第一外出端口的第二外出端口。
[0009]在另一个实施例中,一种用于在网络设备中处理网络分组的方法,包括在该网络设备的进入端口处接收网络分组。该方法还包括在该网络分组已经在该进入端口处被完全接收之前,在该网络设备处基于所接收的该网络分组的第一部分生成表示该网络分组的第一数据结构,并且在该网络设备的分组处理器处对该第一数据结构进行处理。对该第一数据结构进行处理包括针对该网络分组作出转发决策。该方法还包括在该网络设备处生成表示该网络分组的第二数据结构。该方法还包括在该网络分组已经在该进入端口处被完全接收之后,至少使用该第二数据结构关于该网络分组至少执行一个或多个非转发操作。
[0010]在另一个实施例中,一种网络设备包括多个端口,该多个端口包括被配置为从网络接收网络分组的进入端口,以及耦合至该多个端口的分组处理器。该分组处理器包括描述符生成器单元,其被配置为在第一网络分组已经在该进入端口处被完全接收之前,基于所接收的该第一网络分组的第一部分生成第一数据结构,该第一数据结构表示该第一网络分组。该描述符生成器单元还被配置为生成表示该第一网络分组的第二数据结构。该分组处理器还包括:转发模块,其被配置为至少通过针对该第一网络分组作出转发决策而对该第一网络结构进行处理;和一个或多个非转发模块,其被配置为在该第一网络分组已经在该进入端口处被完全接收之后,至少使用该第二数据结构关于该第一网络分组执行一个或多个非转发操作。
[0011]在另一个实施例中,一种用于在网络设备中处理网络分组的方法包括:在该网络设备的进入端口处接收网络分组,并且在该网络分组已经在该进入端口处被完全接收之前,在该网络设备处基于所接收的该网络分组的第一部分生成表示该网络分组的第一数据结构。该方法还包括在该网络设备的分组处理器处对该第一数据结构进行处理。对该第一数据结构进行处理包括使用该第一数据结构针对该网络分组作出第一转发决策以便将该网络分组转发至一个或多个外出端口。该方法还包括针对该一个或多个外出端口中的每一个至少部分基于相应外出端口相对于进入端口的工作速度而根据该第一转发决策选择性地将该网络分组转发至相应网络端口或者选择性地不进行转发。该方法还包括在该网络设备处并且在该网络分组已经在该进入端口处被完全接收之后生成表示该网络分组的第二数据结构。该方法还包括在该网络设备的分组处理器处对该第二数据结构进行处理。对该第二数据结构进行处理包括使用该第二数据结构针对该网络分组作出第二转发决策以将该网络分组转发至一个或多个外出端口。该方法还包括针对一个或多个外出端口中的每一个根据该第二转发决策和另外的输入而选择性地将该网络分组转发至相应的外出端口或者选择性地并不进行转发。在一些实施例中,根据该第二转发决策和以下各项中的至少一项而选择性地将该网络分组转发至相应的外出端口或者选择性地不进行转发:(i)相应外出端口相对于该进入端口的工作速度和(ii)在该一个或多个外出端口中存在已根据该第一转发决策向其转发该网络分组的情况下,已根据该第一转发决策向该一个或多个外出端口中的哪些外出端口转发该网络分组的指示符。
【附图说明】
[0012]图1是根据一个实施例的本公开的分组处理技术在其中实施的示例网络设备的框图。
[0013]图2是示出根据一个实施例的有关图1的分组处理器的附加细节的框图。
[0014]图3是根据一个实施例的用于在网络设备中处理网络分组的示例方法的流程图。
[0015]图4是根据一个实施例的用于对表示网络分组的第一数据结构进行处理并且选择性地转发或不转发该网络分组的示例方法的流程图。
[0016]图5是根据一个实施例的用于对表示网络分组的第二数据结构进行处理并且选择性地转发或不转发该网络分组的示例方法的流程图。
[0017]图6是根据一个实施例的用于在网络设备中处理网络分组的另一种示例方法的流程图。
【具体实施方式】
[0018]在以下所描述的实施例中,网络设备(例如,网桥、路由器、交换机或者任意其它适当网络设备)在进入端口接收分组,将所接收到的分组写入缓冲器,并且生成表示所接收的分组的描述符的两个不同实例并对它们进行处理。在一个实施例中,在整个分组被写入缓冲器之前,该描述符的第一实例(或“直通描述符”)被处理以作出第一转发决策。在一个实施例中,该第一转发决策通过识别一个或多个目标外出端口,并且随后识别一个或多个目标外出端口中的哪些目标外出端口适用于直通转发(如果一个或多个目标外出端口中存在适用于直通转发的目标外出端口的话)而作出。在一个实施例中,该网络设备随后通过开始将(还未被完全缓冲的)分组仅转发至被认为适用于直通转发的那些目标外出端口而采用直通。
[0019]在网络设备已经接收/缓冲了整个分组之后,在一个实施例中,描述符的第二实例(或“存储并转发描述符”)被处理以作出第二转发决策。在一个实施例中,该第二转发决策通过再次识别一个或多个目标外出端口并且随后识别一个或多个目标外出端口中的哪些目标外出端口不适用于直通转发(如果一个或多个目标外出端口中存在不适用于直通转发的目标外出端口的话)而作出。在一个实施例中,该网络设备随后通过将完全缓冲的分组仅转发至并未被认为适用于直通转发的那些目标外出端口而采用存储并转发类型的转发。
[0020]在一个实施例中,该网络设备在其无法使用直通将分组转发至至少一个目标外出端口的情况下,仅基于该描述符的第二实例生成和/或处理和/或执行动作。在其它实施例和/或场景中,该网络设备无论分组是否仍然需要被转发至任何目标外出端口都基于该描述符的第二实例生成、处理并执行动作。在一种这样的实施例和场景中,该网络设备对该描述符的第一实例进行处理以作出第一转发决策,使用直通将分组转发至所有目标外出端口,并且对该描述符的第二实例进行处理以执行一个或多个非转发操作,该非转发操作确定和/或利用仅能够在所有分组都能够在缓冲器中获取之后才能够被确认(或者才能够被准确确认)的信息。例如,在各个实施例中,该非转发操作包括确定完整分组的字节数的计数操作,利用完整分组是否包含任何错误这一知识的镜像操作,等等。在一些实施例中,该网络设备针对该描述符的两个实例都执行非转发操作,但是针对每个实例执行该非转发操作的不同方面。在一种实施例和场景中,例如,计量(metering)操作包括对该描述符的第一实例进行处理以执行计量检查(例如,用以确定是否丢弃对应的分组)但是并不执行计量更新,并且随后对该描述符的第二实例进行处理以执行计量更新(如果该分组并未被舍弃/丢弃)但是并不执行计量检查。
[0021]图1是根据一个实施例的在其中实施本公开的分组处理技术的示例网络设备10的高度简化的框图。在各个实施例中,网络设备10是网桥设备、路由器设备、交换机设备,或者被配置为在网络环境内进行操作的任意其它适当的网络设备。网络设备10至少包括端口 12、14、16和18。在一些实施例中,端口 12、14、16和18中的每一个是能够作为进入端口或外出端口的双向端口。在其它实施例中,端口被专用于进入端口或外出端口。例如,在一个实施例中,端口 12是专用的进入端口而端口 14、16和18则是专用的外出端口。虽然图1仅示出了四个端口,但是在其它实施例中,网络设备10包括多于四个的端口或少于四个的端口。在各个实施例中,网络10被配置为处理单播、组播和/或广播操作。图1图示了其中网络设备10能够至少进行组播和/或广播操作的实施例,以及其中分组经由端口 12进入并且以组播或广播的方式经由端口 14、16和18中的每一个外出的场景。注意到,在其它实施例和/或场景中,分组可以相反经由一个端口(单播)、经由另个端口或者经由多于三个的端口外出。
[0022]在图1的示例实施例中,进入端口 12被耦合至接收侧直接存储器访问(RxDMA) 20ο Rx DMA 20被配置为将经由进入端口 12所接收的分组写入到分组缓冲器24。在一些实施例中,网络设备10包括耦合至并未在图1中看到的一个或多个相应进入端口的一个或多个其它Rx DMA。除此之外或可替换地,在一些实施例中,Rx DMA 20是与两个或更多端口的群组(也就是说,进入端口 12以及一个或多个其它端口)相关联的通道化Rx DMA,其中该群组内的每个端口与不同的DMA情境(context)相关联。在各个实施例中,分组缓冲器24是随机访问存储器(RAM)或者任意其它适当类型的存储器。在图1所示的实施例中,Rx DMA 20还从经由进入端口 12接收到的分组提取报头,并且将每个所提取的报头送至分组处理器30。然而,在其它实施例中,并未在图1中看到的网络设备10的单独单元(例如,布置在Rx DMA 20和分组处理器30之间、或者处于分组处理器30的管线或其它架构之内的单元)提取报头。在其它的实施例中,Rx DMA 20 (或网络设备10的单独单元)将每个分组的不同部分(例如,仅分组报头的一部分)提供
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1