用于流控制的方法和设备与流程

文档序号:14993886发布日期:2018-07-20 23:10阅读:190来源:国知局

本公开要求2017年1月12日提交的美国临时申请第62/445,664号“在l3网络中的快速流控制”的权益,其全部内容通过引用并入本文。

本文涉及通信技术,并且更具体地涉及用于流控制的方法和装置。



背景技术:

本文所提供的背景技术描述是为了总体上呈现本公开的上下文的目的。目前提及的发明人在本背景技术部分中所描述的工作的范围内的工作,以及在提交时可能不作为现有技术的描述的各方面,既未明确地也不隐含地被承认为不利于本公开的在前技术。

在一些网络中,使用拥塞通知(诸如显式拥塞通知)来允许端对端通知在网络中的网络拥塞。在一个实施例中,第一端点设备生成分组并且将该等分组发送到第二端点设备。当在中间节点处检测到网络拥塞时,分组被丢弃或被适当标记,并且被转发至其目的地。在第二端点设备处,通过返回分组(例如,确认分组),该返回分组继而被发回到该第一终端设备,来提供拥塞通知,使得第一端点设备能够基于拥塞通知来调整分组的发送速率。



技术实现要素:

本公开的各方面提供了一种网络设备,该网络设备包括接口电路和分组处理电路。接口电路被配置为接收来自网络的输入分组并且经由接口将输出分组发送到网络。分组处理电路被配置为检测与从源设备发送到网络中的目的地设备的分组相关联的拥塞,以及生成去往源设备的通知分组。该通知分组指示分组所属的分组流和拥塞的存在。分组处理电路被配置为经由第一接口将该分组发送至目的地,并且经由第二接口将该通知分组发送至源设备。

根据本公开的一个方面,分组处理电路包括入口处理模块,该入口处理模块被配置为解析该分组,并且基于该分组的头部信息使能用于生成通知分组的特征。在一个实施例中,入口处理模块被配置为基于分组的头部中的一个或多个字段使能该特征。在一个示例中,入口处理模块被配置为设置标记以使能用于生成通知分组的特征。

在一个示例中,出口处理模块被配置为生成分组的复制分组,将分组发送出网络设备并且基于复制分组生成通知分组。在一个实施例中,出口处理模块被配置为将通知分组转发给入口处理模块,以确定第二接口发送通知分组。

根据本公开的另一方面,分组处理电路包括出口处理模块,该出口处理模块被配置为交换分组的源互联网协议(ip)地址字段和目的地ip地址字段中的值,以形成通知分组的源ip地址字段和的目的ip地址字段。在一个实施例中,出口处理模块被配置为将分组的头部中的一个或多个字段包括到通知分组中。进一步的,出口处理模块被配置为在通知分组的目的地mac地址字段中填写网络设备的媒体访问控制(mac)地址。

本公开的方面提供了一种用于网络中的拥塞通知的方法。该方法包括:在网络设备处接收从网络中的源设备发送到目标设备的分组,检测与分组相关联的拥塞,并且生成去往源设备的通知分组。通知分组指示分组所属的分组流和拥塞。该方法还包括:经由第一接口将分组发送到目标设备,并经由第二接口将该通知分组发送到源设备。

本公开的方面提供一种非瞬态计算机可读介质,该计算机可读介质存储用于使网络设备中的处理器执行网络中的拥塞指示的操作的计算机指令。该操作包括:接收从网络中的源设备发送到目标设备的分组,检测与分组相关联的拥塞,并且生成去往源设备的通知分组。通知分组指示分组所属的分组流和拥塞。然后,该操作包括:经由第一接口将分组发送到目标设备,并经由第二接口将该通知分组发送到源设备。

附图说明

将作为示例提出的本公开的各种实施例将参考以下附图而被详细描述,其中相同的附图标记指示相同的元素,并且其中:

图1示出了根据本公开实施例的网络100的框图;

图2示出了根据本公开实施例的拥塞通知分组的格式200;

图3示出了根据本公开实施例的分组处理单元340的框图;以及

图4示出了根据本公开的实施例的概述过程400的流程图。

具体实施方式

本公开的方面使得网络中的中间节点能够将拥塞通知分组(cnp)直接发送到网络业务的源节点以用于快速拥塞指示。拥塞通知指示特定的网络业务流。因此,源节点可以执行基于流的速率控制,以减轻流中的拥塞。

图1示出了根据本公开实施例的网络100的框图。网络100包括诸如第一端点设备101,第二端点设备102等的端点设备(端节点)以及诸如网络设备105、106、110等的网络设备(中间节点)。端点设备连接到网络设备,并且网络设备被互相连接,以形成用于端点设备的传输路径。沿着该传输路径,网络设备转发分组,例如源自某些端点设备(源设备)并指向其他一些端点设备(目的地设备)的分组。在网络100中,网络设备(例如图1示例中的网络设备110)中的至少一个网络设备被配置为生成去往源设备的拥塞通知分组,以在源设备处使能基于流量的速率控制。

例如,网络设备110在从第一端点设备101到第二端点设备102的传输路径上,并且第一端点设备101沿着传输路径向第二端点设备102发送数据分组。网络设备110被配置为至少部分地由于来自第一端点设备101的数据分组的特定分组流而检测到拥塞,并且响应于拥塞检测来生成去往分组源的新的分组。新的分组包含拥塞通知,并指示特定的分组流。因此,在一个示例中,当第一端点设备101接收到新分组时,第一端点设备101执行基于流量的速率控制。在该示例中,由于网络设备110提供的拥塞通知比来自第二端点设备102的传统端对端拥塞通知更早到达第一端点设备101,因此第一端点设备101能够相对迅速地对拥塞做出反应。因此,当拥塞通知中的延迟减少时,由源产生的对上游业务拥塞的累积通知的更快反应有助于更快的传输业务的速率限制。这又允许存储溢出流量所需的缓冲区的减小的大小和/或丢弃的分组数量中的减少。

一般而言,分组被称为在分组交换网络中被携带的经格式化传输单元,并且分组流被称为源自同一分组源(例如,第一端点设备101中的应用)并且被发送给同一分组目的地(例如,第二端点设备102中的应用)的同一分组类型的分组序列。分组包括头部部分和有效负载部分,头部部分包括与开放系统互连(osi)层模型中的一个或者多个层的控制信息对应的一个或者多个头部,并且有效负载部分携带数据。osi模型从自下至上例如包括物理层(层1)、数据链路层(层2)、网络层(层3)、传输层(层4)、会话层(层5)、呈现层(层6)以及应用层(层7)。在示例中,头部部分包括层2头部(例如,介质访问控制头部)、层3头部、层4头部等。层3头部包括层3控制信息,比如因特网协议(ip)、源ip地址、目的地ip地址等。层4头部包括层4控制信息,比如源端口号、目的地端口号。端口是操作系统中的(例如,与正运行的应用关联的)通信的端点。在示例中,当第一端点设备101中的应用向第二端点设备102中的应用发送数据时,数据在分组流中被从第一端点设备101携带至第二端点设备102。分组流中的分组被称为数据分组。分组流中的数据分组具有相同ip协议、相同源ip地址、相同目的地ip地址、相同源端口号和相同目的地端口号。在实施例中,ip协议、源ip地址、目的地ip地址、源端口号和目的地端口号的组合(5个元组)指示具体分组流。

在本公开内容中,分组的流指的是在特定设备处被生成或者接收的分组并且可以包括来自一个或者多个分组流的分组。在示例中,第一端点设备101向第二端点设备102发送用于数据存储的第一分组流以及用于数据库查询的第二分组流。第一分组流和第二分组流具有相同源ip地址以及相同目的地ip地址,但是相应的第一分组流和第二分组流中的分组具有不同的源端口号和不同的目的地端口号。

根据本公开的方面,网络100可以是任何适当的网络,比如单个网络或相同或者不同类型的多个网络。例如,网络100是数据网络或者与数据网络连接的电信或者视频分发(例如,线缆、地面广播或者卫星)网络。电信、视频/音频分发和数据网络的任何组合,无论是全球的、国家的、区域的、广域的、局域的还是家用网络,都可以被使用而不会背离本公开内容的精神和范围。网络100包括使用任何适当的网络技术(比如有线、无线、局域网(lan)、无线局域网(wlan)、光纤网络、广域网、对等网络、因特网等)而被实现的互连。

网络100包括各种端点设备(例如,服务器设备、个人计算机等)以及网络设备(例如,交换机、路由器等)。在实施例中,网络100被形成在包括服务器设备、网络交换机和路由器的数据中心中。服务器设备、网络交换机和路由器使用适当的联网技术(比如以太网技术等)被互连。在实施例中,服务器设备是端点设备,并且网络交换机和路由器是网络设备。服务器设备包括各种资源,比如存储资源、计算资源、对物理客户端设备进行仿真的虚拟机等。服务器设备提供各种功能(例如,服务),比如邮件服务、数据库服务、打印服务、web服务、游戏服务、应用服务等。在示例中,服务器设备包括网络接口部件,比如网络接口控制器(nic),其将服务器设备连接到网络100中的网络交换机或者路由器。

网络100中的设备由地址(比如因特网协议地址(ip地址)、介质访问控制地址(mac地址)等)标识。mac地址是物理地址,有时被称为层2地址,其被制造方指派给网络接口部件,比如nic、网络交换机、网络路由器等。mac地址被存储在硬件(比如网络接口部件的只读存储器等)中,并且是用于网络接口部件的唯一标识符。在示例中,被安装在第一端点设备101中的nic具有mac地址mac-a,网络设备105具有mac地址mac-b,网络设备110具有mac地址mac-c,网络设备106具有mac地址mac-d,被安装在第二端点设备102中的nic具有mac地址mac-e。ip地址(有时被称为层3地址)是逻辑地址,其当设备被连接到使用ip协议以用于通信的网络中时被指派给设备。ip地址在通信中被用于根据ip协议进行标识以及寻址。在示例中,当第一端点设备101被连接到网络100中时,第一端点设备101被指派ip地址ip-x,并且当第二端点设备102被连接到网络100中时,第二端点设备102被指派ip地址ip-y。

网络交换机和路由器可以根据任何适当的拓扑被互连。在示例中,网络交换机和/或路由器中的至少一种被连接到另一网络(未示出),并且被配置用于将分组转发到网络100中和转发出网络100。

在实施例中,网络100包括根据osi层模型的、(例如,基于mac地址来交换分组的)层2设备和(例如,基于ip地址来路由分组)的层3设备的混合。在示例中,端点设备根据聚合以太网版本2(rocev2)上的远程直接存储器访问(rdma)来传输数据。根据rocev2,端点设备例如在层4头部(例如,udp头部)、层3头部(例如,ip头部)和层2头部(mac头部)上封装数据。根据本公开内容的方面,网络100中的一个或者多个网络设备(比如网络设备110等)被配置为启用根据osi层模型的层3(l3)和层4(l4)属性的基于分组流的速率控制。

在一些实施例中,网络设备110可以是连接两个或者更多个计算机系统、网络段、子网络等的任何适当的网络设备,比如网络交换机、网桥、路由器、vpn集中器等。网络设备110可以使用包括硬件、软件的任何适当的技术被实现。

网络设备100包括例如使用适当的互连架构(未示出)(比如总线架构)而被耦合在一起的各种功能电路块,比如接口电路112、分组处理单元140、存储器130等。

接口电路112包括适当的电路(比如传输电路tx、接收电路rx等)以形成多个网络接口i-1至i-n。在示例中,多个网络接口i-1至i-n中的每个网络接口被配置用于经由相应的通信链路来耦合通信网络中的另一适当的网络设备。网络接口i-1至i-n可以是物理接口或者空气(基于无线电的)接口。在示例中,网络接口i-1至i-n是物理接口并且根据以太网技术被配置。以太网线缆被用来经由网络接口i-1至i-n将其他设备耦合至网络设备110。网络接口i-1至i-n分别包括用于从以太网线缆接收信号的接收电路(其为接收电路rx的部分)以及用于将信号传输到以太网线缆上的传输电路(其为传输电路tx的部分)。例如,网络接口i-1根据以太网技术被配置,并且以太网线缆被用来经由网络接口i-1来将网络设备105耦合到网络设备110。类似地,网络接口i-3根据以太网技术被配置,并且以太网线缆被用来经由网络接口i-3来将网络设备106耦合到网络设备110。

在另一示例中,网络接口i-1至i-n是用于网络设备110和其他设备之间的无线通信(比如蜂窝通信、wifi通信等)的空气接口。网络接口i-1至i-n分别包括分配的无线电资源(比如时间、频率、编码方案等)以形成用于网络设备110与其他设备之间的无线通信的通信信道。传输电路tx可以传输将通信信道复用的无线信号。接收电路rx可以接收无线信号,并且将接收的信号解复用以提取相应的通信信道中的信息。

应注意,在另一示例中,网络接口i-1至i-n中的一些网络接口是物理接口并且其他接口是空气接口。

分组处理单元140被配置用于处理分组以及确定关于分组的动作,比如经由网络接口转发、加密/解密、分段、多路广播等。分组处理单元140可以使用任何适当的技术(比如中央处理单元(cpu)、多核处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、流水线架构、并行计算等)被实现。在实施例中,分组处理单元140使用分组处理电路120被实现。在图1的示例中,分组处理电路120包括多个分组处理引擎或者元件(ppe)124。ppe124使用适当的技术被实现。在实施例中,ppe124是asic硬件引擎,这些asic硬件引擎中的每个asic硬件引擎执行专用分组处理操作集合,这些asic硬件引擎被适当地耦合在一起以形成分组处理流水线。在另一实施例中,ppe124使用可编程分组处理技术被实现,其中ppe中的每个ppe是运行到完成处理器。在又一实施例中,ppe被实施为被耦合在一起作为流水线的可编程引擎。

在一些实施例中,ppe124处理分组本身。在一些实施例中,ppe124处理表示分组的分组描述符(元数据)而不是处理分组本身,而分组有效负载和/或分组头部被存储在存储器中。分组描述例如包括分组的头部信息的部分和/或包括在分组处理期间被生成的信息。在一些实施例中,分组描述符包括其他信息以及分组和/或头部被存储在与网络设备110关联的存储器中的哪里的指示符。为了易于说明,术语“分组”在此指代分组本身或者指代与分组关联的分组描述符。

在一些实施例中,ppe124被配置为并行操作。在示例中,每个ppe124被配置为执行分组的必要处理操作(运行以完成处理)。在另一示例中,多个ppe124形成用以处理分组的多个级的流水线,并且ppe124被配置为执行相应级的操作。因此,分组的不同处理步骤(诸如解析、加密、转发等)由不同的ppe124执行。

存储器130存储以下中的一个或多个:i)要由网络设备110的组件(诸如ppe等)执行的软件指令;ii)要处理的数据;iii)在处理描述符期间的分组有效载荷和/或分组头部;以及iv)要从网络设备出口的经处理分组。尽管被描绘为单个块,但是在一些配置中,存储器130由多个不同的物理存储器组成。在实施例中,存储器130存储用于cnp生成的软件模块135。然后,在示例中,ppe124中的一个或多个执行软件模块135以生成cnp。此外,存储器130存储由分组处理单元140使用的不同的信息结构,诸如查找表、寄存器、数据结构、由ppe124使用的指令。存储器130使用任何合适的存储设备来实现,诸如静态随机存取存储器(sram)、动态随机存取存储器(dram)、三态内容寻址存储器(tcam)、闪存、固态驱动器、硬盘驱动器、光盘驱动器等。

根据本公开的一方面,分组处理单元140被配置为检测与分组相关联的拥塞。该分组属于来自分组源(例如源设备中的正在运行的应用)的特定分组流。分组处理单元140还被配置为生成直接去往分组源的拥塞通知分组(cnp),并且将cnp转发到分组源。在实施例中,cnp包括指示特定分组流的信息。例如,当分组处理单元140检测到与分组相关联的拥塞时,分组处理单元140生成去往第一端点设备101的cnp,该分组作为从第一端点设备101到第二端点设备102的分组流的一部分。在该示例中,cnp经由网络接口i-1被发送出网络设备110。cnp包括通知分组流的信息,例如对于分组流中的数据分组相同的ip协议、源ip地址、目的地ip地址、源端口标识符和目的地部分标识符中的一个或多个。在实施例中,分组流信息从分组的数据链路层、ip层、传输层和应用层中的一个或多个中得出。

具体地,在图1的示例中,分组处理单元140包括用于入口处理的入口处理模块150、用于拥塞处理的拥塞处理模块160以及用于出口处理的出口处理模块170。在示例中,入口处理模块150、拥塞处理模块160和出口处理模块170中的每一个使用一个或多个ppe124来实现。

入口处理模块150被配置为对分组(例如从接口电路112接收的数据分组)执行入口处理。在实施例中,处理单元140处的入口处理包括一个或多个选择的处理操作,诸如从分组解析数据,剥离隧道头部,进行层2或层3转发决定,生成cnp等。在一些实施例中,还执行附加的入口处理操作。在示例中,对于每个分组,入口处理模块150解析分组以获得某些字段的值,识别分组的属性(例如,层3属性、层4属性),并且基于该属性启用/禁用cnp生成特征。在实施例中,入口处理模块150被配置为针对任何合适的分组流或业务类型可选地启用/禁用cnp生成特征。在示例中,入口处理模块150被配置为针对无损业务来启用cnp生成特征。在另一示例中,入口处理模块150被配置为对拥塞通知做出反应的协议(诸如基于拥塞状态的速率限制的性能)来启用cnp生成特征。在另一示例中,当分组是cnp分组时,入口处理模块150禁用cnp生成。

在示例中,入口处理模块150在与分组相关联的元数据中设置cnp标志(例如,二进制值“1”)以启用cnp生成特征,或者在与分组相关联的元数据中清除cnp标志(例如,二进制值“0”)以禁用cnp生成特征。

在示例中,入口处理模块150执行其他合适的操作,诸如基于分组(例如,数据分组,cnp分组)中的目的地ip地址来确定传出网络接口。

拥塞处理模块160被配置为检测拥塞。在实施例中,拥塞处理模块160被配置为检测与数据分组相关联的拥塞,并且基于该检测来操作。在示例中,拥塞处理模块160被配置为检查用于对数据分组进行排队的队列的状态,并且基于队列的状态来检测拥塞。例如,当队列的填充水平高于阈值时,拥塞处理模块160检测到拥塞;否则,不会检测到拥塞。注意的是,在另一示例中,拥塞处理模块160使用其他合适的技术来检测与数据分组相关联的拥塞。

在一个实施例中,当拥塞处理模块160检测到拥塞时,拥塞处理模块160触发cnp的生成。在示例中,拥塞处理模块160打开与数据分组相关联的内部拥塞指示符以指示拥塞。拥塞指示符用于触发由出口处理模块170进行的cnp生成。例如,当内部拥塞指示符被打开并且cnp标志被设置时,出口处理模块170生成cnp。在实施例中,拥塞处理模块160控制用于触发cnp生成的频率。在示例中,当拥塞处理模块160检测到与数据分组相关联的拥塞时,拥塞处理模块160打开内部拥塞指示符。在另一示例中,拥塞处理模块160包括计数器,其对具有检测到拥塞的数据分组的数目进行计数。当数目达到特定值(例如,2、3、4、...)时,拥塞处理模块160打开内部拥塞指示符并且重新开始计数器。

注意的是,在例子中,拥塞处理模块160触发其他合适的拥塞通知,诸如端到端拥塞通知等。在实施例中,拥塞处理模块160触发针对显式拥塞通知(ecn)的标记。在示例中,网络设备110在针对数据分组的元数据中包括ecn启用标志。网络设备110设置ecn启用标志以启用ecn标记或清除ecn启用标志以禁用ecn标记。在实施例中,拥塞指示符被用于触发由出口处理模块170进行的ecn标记。例如,当内部拥塞指示符被打开并且针对数据分组设置ecn启用标记时,出口处理模块170对数据分组执行ecn标记(例如,将数据分组的头部中的特定字段设置为特定值)。当由目的地设备接收到数据分组时,目的地设备可以检测ecn标记,并且将拥塞通知包括在到源设备的返回分组(例如,确认分组)中。

出口处理模块170被配置为通过由入口处理模块150确定的网络接口来对分组执行出口处理,诸如对分组进行排队以及根据顺序转发分组。在实施例中,当检测到与数据分组相关联的拥塞,并且与数据分组相关联的cnp标志被打开时,出口处理模块170基于数据分组的字段生成cnp。在示例中,出口处理模块170基于数据分组的字段直接生成cnp。

在另一示例中,出口处理模块170复制数据分组以生成复制分组,并且修改复制分组以形成cnp。出口处理模块170提取复制分组的头部部分,诸如复制分组的头128字节,并且创建cnp分组。在示例中,出口处理模块170修改头部部分以使得cnp分组去往源设备。例如,出口处理模块170交换头部分中的源ip地址子字段和目的地ip地址子字段中的值。此外,出口处理模块170使得cnp分组指示数据分组所属的分组流。例如,cnp分组包括数据分组中的ip协议、源ip地址、目的地ip地址、源端口号和目的地部分号。在实施例中,出口处理模块170将数据分组的udp头部保持在cnp分组中。在另一实施例中,cnp分组包括如下字段,该字段携带数据分组中的ip协议、源ip地址、目的地ip地址、源端口号和目的地部分号的组合(5个元组)的散列值。散列值可以由源设备使用以识别特定分组流。

在示例中,cnp分组被发送回入口处理模块150。入口处理模块150确定用于将cnp分组从网络设备110发出的网络接口。

此外,在将cnp分组从网络设备110发出之前,出口处理模块170完成cnp分组。例如,出口处理模块170更新cnp分组的mac头部。然后,出口处理模块170计算循环冗余校验(crc)码,比如不变crc、可变crc等,并且将crc码包括在cnp分组中。然后出口处理模块170经由所确定的网络接口将cnp分组从网络设备110发出。

在操作期间,在示例中,第一端点设备101向第二端点设备102发送第一分组流和第二分组流。第一分组流用于数据存储,并根据rocev2被发送。第二分组流用于针对语音呼叫会话的数据库查询。在示例中,第一分组流中的数据分组在udp头部中具有第一端口号(例如,针对根据rocev2的分组的4791),并且第二分组流中的数据分组具有第二端口号(例如,1433),第二端口号与第一端口号不同。网络设备105、网络设备110和网络设备106形成第一端点设备101和第二端点设备102之间的传输路径,用以传输第一分组流和第二分组流。

在示例中,网络设备110接收属于第一分组流得第一数据分组以及属于第二分组流的第二数据分组。对于第一数据分组,入口处理模块150提取l3和l4属性,并基于第一端口号(例如,针对根据rocev2的分组的4791)启用cnp生成特征,比如设置cnp标志。入口处理模块150使用适当的切换或路由技术来确定网络接口i-3是用于第一数据分组的出口,并且将用于网络接口i-3的指示符存储在与第一数据分组相关联的元数据中。

当拥塞处理模块160检测到与第一数据分组相关联的拥塞时,拥塞处理模块160开启与第一数据分组相关联的内部拥塞指示符,以触发cnp的生成。基于cnp标志和与第一数据分组相关联的内部拥塞指示符,出口处理模块170基于第一数据分组来生成cnp。在示例中,出口处理模块170交换数据分组的源ip地址和目的地ip地址,以形成cnp分组。例如,cnp分组中的目的地ip地址子字段具有ip-x,并且cnp分组中的源ip地址子字段具有ip-y。在示例中,出口处理模块170使得cnp分组中的udp头部保持与数据分组相同,隐藏第一分组流基于udp头部可识别。出口处理模块170向入口处理模摸块150反馈cnp。并且,出口处理模块170根据元数据经由网络接口i-3将第一数据分组发出。

当入口处理模块150接收到cnp时,入口处理模块150使用适当的切换和路由技术,来确定网络接口i-1是用于cnp的传出网络接口。然后,入口处理模块170完成cnp,并经由网络接口i-1发出cnp。在示例中,当第一端点设备101接收到cnp时,第一端点设备101标识第一分组流,并降低用于第一分组流的传输速率。

对于第二数据分组,在示例中,入口处理模块150提取l3和l4属性,并基于第二数据分组的udp头部中的第二端口号(例如1433)来禁用cnp生成特征(清除与第二数据分组相关联的cnp标志)。入口处理模块150使用适当的切换或路由技术来确定网络接口i-3是用于第二数据分组的传出网络接口。即使第二处理模块170可以检测到与第二数据分组相关联的拥塞,由于cnp生成特征被禁用,所以没有响应于第二数据分组生成cnp。根据适当的协议,可以丢弃或转发第二数据分组。

图2示出了根据本公开的实施例的分组的格式200。在示例中,rocev2网络协议使用该格式来生成数据分组和cnp。在示例中,分组处理单元140被配置为接收按照格式200的数据分组,检测与数据分组相关联的拥塞,生成按照格式200的cnp,并根据数据分组的mac、ip或其他适当的目的地地址将数据分组转发到其目的地。格式200包括mac头部字段210、ip头部字段220、udp头部字段230、基本传输头部(bth)字段240、其他字段250、不变循环冗余校验(icrc)字段260和帧校验序列(fcs)字段270。

在示例中,mac头部字段210是层2(l2)头部,其包括l2控制信息的各种子字段,比如用于l2连接的目的地mac地址子字段、源mac地址子字段等。在示例中,mac头部字段210包括用于指示ip头部字段220的存在的指示符。

ip头部字段220是层3(l3)头部,其包括l3控制信息的各种子字段,比如用于携带目的地ip地址的目的地ip地址子字段、用于携带源ip地址的源ip地址子字段等。在示例中,目的地ip地址子字段指定目的地设备的ip地址,并且源ip地址子字段指定l3网络中的源设备的ip地址。在示例中,ip头部字段220包括用于指示udp头部字段230的存在的指示符。

udp头部字段230是层4(l4)头部,其包括l4控制信息的子字段,比如源端口标识符子字段、目的地端口标识符子字段等。在示例中,源端口标识符子字段指定源设备处的服务端口,并且目的地端口指示符子字段指定目的地设备处的服务端口。服务端口被称为软件结构,其由端口标识符标识,通常是数字。在示例中,运行在设备上的应用(例如,用户应用)使用套接字作为用于数据传输的端点,并且套接字是设备的ip地址和服务端口的组合。在示例中,端口号是16位的二进制值,范围为0-65535。一些端口标识符号被注册用于公知服务,并被用于标识服务,并指示这些服务下的分组流的属性。在示例中,端口号4791被保留用于rocev2网络协议。rocev2网络协议由网络密集型应用使用,比如需要无损业务的联网存储应用、集群计算应用、数据中心应用等。因此,在示例中,端口号4791指示具有无损业务要求的分组流。在示例中,udp头部230包括指示bth头部240的存在的指示符。

bth字段240提供用于端点设备的控制信息,用以处理分组。例如,bth字段240包括目的地队列对(destqp)子字段和其他适当的子字段。目的地队列对子字段指定一对发送队列和接收队列,作为用于传输服务的结束节点。在示例中,cnp的bth字段240中的一些子字段具有预定的值。例如,用于cnp的操作码子字段被设置为二进制“10000001”,分组序列号(psn)子字段被设置为零,等等。在示例中,bth240包括分区键(p_key)子字段。当格式200被用于数据分组时,p_key子字段指示与数据分组的有效负载相关联的数据的分区。在示例中,当基于数据分组来生成cnp时,cnp中的p_key子字段被设置为与数据分组的相同。

在示例中,当格式200被用于数据分组时,其他字段250承载有效负载,比如用于传输的数据的分区。在另一示例中,当格式200被用于cnp时,其他字段250包括例如16字节的被设置为零的填充位。

在示例中,icrc字段260被配置为包括用于从端到端不变的字段的错误检测的值。例如,基于在例如字段220-250上计算循环错误校正码,来生成该值。在示例中,mac头部字段210不参与icrc字段260中的该值的计算。

fcs字段270被配置为包括用于可变crc的值,可变crc覆盖变化的字段和不变化的字段。例如,基于在例如字段210-260上计算循环错误校正码来生成该值。

图3示出了根据本公开实施例的分组处理单元340的框图。在示例中,图1的示例中的分组处理单元140使用分组处理单元340被实现。分组处理单元340包括入口处理模快350、拥塞检测器360和出口处理模块370。入口处理模块350包括多个部件,比如解析器、cnp标志控制器352等。出口处理模块370包括多个部件,例比通知控制器371、转发引擎375等。在示例中,使用电路来实现各种部件。在另一示例中,各种部件被实现为执行软件指令的一个或多个处理器。

解析器351被配置为接收分组并且解析分组。在一个示例中,解析器351接收数据分组,诸如格式200的数据分组。解析器351例如对数据分组的描述符进行解析。在一个示例中,解析器351解析mac报头、ip报头、udp报头、bth报头等,并且提取数据分组的各个属性信息,诸如ip协议(类型)、源ip地址、目的地ip地址、源端口号、目的地端口号等。

在一个实施例中,入口处理模块350例如基于数据分组中的目的地ip地址适当地确定数据分组的传入网络接口。注意,在一个实施例中,传入处理模块350接收从出口处理模块370反馈的cnp分组,并且确定cnp分组的传出网络接口。

cnp标志控制器352被配置为设置或清除cnp标志,以启用或禁用cnp生成特征。在一个实施例中,cnp标志控制器352被配置为基于各层(如l2、l3、l4、l5、l6和l7中的任意层)中的属性的组合来启用/禁用cnp生成特征。在一个示例中,cnp标志控制器352被配置为标识数据分组的目的地端口号是否具有值4791。当目的地端口号具有值4791时,数据分组属于根据rocev2网络协议发送的分组流。在一个示例中,分组流一般需要无损业务,因此cnp标志控制器352设置与数据分组相关联的cnp标志以启用cnp生成特征,其能够快速通知源设备即将发生拥塞,并且使源设备降低传输速率,以避免分组丢失。

在一个示例中,cnp标志控制器352清除与cnp分组相关联的cnp标志,以禁用cnp分组上的cnp生成特征。

拥塞检测器360被配置为确定是否存在与数据分组相关的拥塞。在一个示例中,拥塞检测器360检测用于对数据分组进行排队的队列(例如,入口队列、出口队列)的状态。在一个示例中,当队列的填充水平高于阈值时,拥塞检测器360检测与数据分组相关联的拥塞。在一个示例中,当拥塞检测器360检测到与数据分组相关联的拥塞时,拥塞检测器360打开与该数据分组相关联的内部拥塞指示符。在另一示例中,拥塞检测器360被配置为确定拥塞水平并确定与拥塞水平成比例的分组比率。此外,拥塞检测器360被配置为根据分组比率打开内部拥塞指示符。例如,总分组数上具有被打开的内部拥塞指示符的数个分组大约是分组比率。

通知控制器371被配置为控制拥塞通知,诸如cnp包生成、ecn标记等。在一个示例中,当与数据分组相关联的cnp标志被设置并且与数据分组相关联的内部拥塞指示符被打开时,通知控制器371基于该数据分组生成cnp分组。在另一示例中,当与数据分组相关联的ecn启用标志被设置并且与数据分组相关联的内部拥塞指示符被打开时,通知控制器371对数据分组执行ecn标记。

在一个实施例中,通知控制器371使用格式200基于数据分组生成cnp分组。具体地,在一个示例中,通知控制器371将网络设备110的mac地址放置在针对cnp分组的mac报头的目的地mac地址子字段中。此外,通知控制器371基于数据分组的源ip地址和目的地ip地址的交换,填充cnp分组的源ip地址子字段和目的地ip地址子字段。例如,通知控制器371将数据分组的源ip地址放入cnp分组中的目的地ip地址子字段中,并将该数据分组的目的地ip地址放入cnp分组中的源ip地址子字段中。另外,在一个示例中,通知控制器371使用与cnp中的数据分组相同的udp报头,或者在一个示例中适当地交换源端口号和目的地端口号。

在一个实施例中,通知控制器371还更新bth字段。在一个示例中,通知控制器371被配置为将数据分组中的队列对号码作为cnp中的目的地队列对。此外,在一个示例中,通知控制器371将bth字段中的一些字段设置为用于cnp的预定义值,例如将cnp的操作码子字段设置为二进制“10000001”,将psn子字段设置为零等。在一个示例中,cnp修改器371将来自数据分组的p_key子字段复制到cnp分组。

在一个实施例中,通知控制器371被配置为不在cnp分组中包括有效载荷。然后,通知控制器371计算icrc。此外,通知控制器371计算fcs并完成cnp。

转发引擎375被配置为适当地将数据分组转发到网络接口以将数据分组发送出去。此外,在一个示例中,当通知控制器371形成cnp分组时,转发引擎375(例如,经由路径341)将cnp分组发送到入口处理模块350。

注意,在一个实施例中,转发引擎375被配置为转发数据分组而不等待通知控制器371生成cnp分组。在一个示例中,转发引擎375生成数据分组的复制分组,并且将数据分组转发到确定的网络接口以将数据分组发送出去。通知控制器371然后基于复制分组生成cnp分组。

图4示出了概述根据本公开的一个实施例的过程400的流程图。在一个示例中,过程400由诸如图1的示例中的网络设备110的网络设备执行。该过程在s401开始并且进行到s410。

在s410,网络设备接收并解析数据分组。在图1的示例中,网络设备110从例如网络接口i-1接收数据分组。

在s420,网络设备基于来自层1至层7中的任意层的属性的组合(在一个实施例中,具体是层3和层4属性)来启用或禁用cnp生成特征。在一个示例中,当属性指示数据分组属于希望进行快速速率控制(例如,需要无损业务)的特定分组流时,网络设备设置与该数据分组相关联的cnp标志以启用cnp生成特征。

在s425,网络设备基于来自l1-l7中的任意层的属性的组合(在一个实施例中,具体是层3和层4属性)来启用或禁用ecn启用标志。ecn启用标志用于启用/禁用ecn标记。

在s430,网络设备基于数据分组执行拥塞检测。在一个示例中,网络设备检测到用于对数据分组进行排队的队列例如在入口或出口时正变满或接近满,因此网络设备将与数据分组相关联的内部拥塞指示符打开,以指示与数据分组相关联的拥塞的存在。

在s440,当内部拥塞指示符被打开时,过程进行到s450;否则,过程进行到s475。

在s450,当ecn标记被启用(例如,ecn启用标志被设置)时,过程进行到s460;否则,过程进行到s470。

在s460,网络设备在数据分组的ip报头中设置标记,以便向目的地设备信号通知数据分组的拥塞。

在s470,当cnp特征被启用(例如,cnp标志被设置)时,过程进行到s480;否则,过程进行到s475。

在s475,数据分组被转发。然后过程进行到s499并终止。

在s480,网络设备基于数据分组来生成cnp分组。在一个示例中,cnp分组包括数据分组的层3和层4属性,并且指示数据分组所属的分组流。cnp数据分组去往数据分组的源设备。注意,网络设备可以直接根据数据分组来生成cnp分组,也可以基于数据分组的复制分组来生成cnp分组。

在s490,数据分组和cnp分组被转发。然后,过程进行到s499并终止。

虽然已经结合作为示例提出的本公开的各方面的具体实施例来描述了本公开的各方面,但是可以对这些示例做出替代、修改和变型。因此,这里阐述的实施例旨在是说明性的而不是限制性的。在不脱离下面阐述的权利要求的范围的情况下可以进行改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1