网络拥塞的通告方法、代理节点及计算机设备与流程

文档序号:16977866发布日期:2019-02-26 19:12阅读:179来源:国知局
网络拥塞的通告方法、代理节点及计算机设备与流程
本公开涉及数据通讯
技术领域
,特别涉及一种网络拥塞的通告方法、代理节点及计算机设备。
背景技术
:远程直接数据存取(remotedirectmemoryaccess,rdma)为一种数据传输技术,由于无需借助计算机的处理器、高速缓存或者操作系统等,通过网络即可从其他计算机的内存中直接读取数据,因而降低了网络传输中的数据处理延迟。然而,rdma数据中心通常采用克劳斯(clos)方式进行组网,网络中交换机上下行接口带宽不对称,当数据在网络中传输时,经常会发生网络拥塞,进而影响rdma的通讯性能。为了避免网络拥塞,提升rdma通讯性能,需要及时地对网络拥塞进行通告。当前对网络拥塞进行通告时,主要采用如下方法:在连接管理(connectionmanagement,cm)过程中,发送端和接收端分别获取对端的队列对编号;当需要向接收端发送数据时,发送端基于链路层传输协议,生成第一数据报文,该第一数据报文的目的队列对编号为接收端的队列对编号,该第一数据报文的网络互联协议(internetprotocol,ip)头部设置有显示拥塞通知(explicitcongestionnotification,ecn)位,该ecn位用于标识第一数据报文具有ecn能力,且该ecn位上的不同数值表明网络的不同状态;发送端将第一数据报文发送至网络节点;当接收到第一数据报文且检测到网络拥塞时,网络节点将第一数据报文ip头部中ecn位上的数值更改为拥塞状态对应的数值,得到处理后的第一数据报文,并将处理后的第一数据报文发送至接收端;当接收到处理后的第一数据报文并读取到ecn位上的数值为拥塞状态对应的数值,接收端获取源(发送端)队列对编号,生成第一拥塞通告报文,该第一拥塞通告报文的目的队列对编号为该源(发送端)队列对编号,接收端通过网络将该第一拥塞通告报文发送至发送端,该第一拥塞通告报文用于通知发送端获取该第一拥塞通过报文的目的队列对编号,并在该第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,减小第一数据报文所属的数据流的发送速率。上述方案中,当检测到网络拥塞时,在发送端与接收端之间的传输链路上的各个网络节点无法向发送端发送第一拥塞通告报文,只能由接收端进行发送,因而发送端无法及时减小第一数据报文所属的数据流的发送速率,使得第一数据报文所属的数据流的后续报文在传输过程中丢失。技术实现要素:为了解决现有技术的问题,本公开实施例提供了一种网络拥塞的通告方法、代理节点及计算机设备。所述技术方案如下:第一方面,提供了一种网络拥塞的通告方法,所述方法包括:在数据传输过程中,代理节点接收发送端的第一数据报文,该第一数据报文携带目的队列对编号。代理节点根据第一数据报文中的目的队列对编号,获取第一数据报文的源队列对编号,并将该源队列对编号添加到第一数据报文中,得到第二数据报文,进而通过网络节点将第一数据报文发送至接收端。在对第二数据报文的转发过程中,当检测到网络拥塞时,网络节点根据第二数据报文,生成第一拥塞通告报文,进而将该第一拥塞通告报文发送至代理节点,该第一拥塞通告报文的目的队列对编号实际上为第二数据报文的源队列对编号。当接收到第一拥塞通告报文时,代理节点将第一拥塞通告报文发送至发送端,以使发送端在第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,降低第一数据报文所属的数据流的发送速率。本公开实施例示出的方案,在第一数据报文的传输过程中,代理节点将源队列对编号添加到第一数据报文中,当检测到网络拥塞时,网络节点根据该第一数据报文,生成第一拥塞通告报文,进而借助代理节点的转发将第一拥塞通告报文发送至发送端,使得发送端能够及时降低第一数据报文所属的数据流的发送速率,以避免丢失该数据流的后续报文。在本公开的第一种可能实现方式中,代理节点维护一个队列对跟踪表,该队列对跟踪表的每个表项存储有目的队列编号与源队列对编号之间的对应关系,因而当接收到第一数据报文时,代理节点可根据目的队列对编号,从队列对跟踪表中,查找到目的队列对编号对应的源队列对编号,该所查找到的源队列对编号即为第一数据报文的源队列对编号。本公开实施例示出的方案,提供了一种源对队列对编号的获取方式。在本公开的第二种可能实现方式中,为了实现接收端和发送端之间的数据传输,发送端和接收端需要预先建立连接,在连接建立过程中,代理节点可跟踪发送端所发送的连接请求报文,并将从连接请求报文的基础传输头部(basetransportheader,bth)中提取的目的队列对编号作为目的队列对编号,同时代理节点还可跟踪接收端所发送的连接应答报文,并将从连接应答报文的bth中提取的目的队列对编号作为源队列对编号,进而通过记录源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。本公开实施例示出的方案,代理节点通过跟踪发送端和接收端在连接建立过程中所发送的报文,建立队列对跟踪表,从而在接收到第一数据报文时,能够根据第一数据报文的目的队列对编号,查找到对应的源队列对编号。在本公开的第三种可能实现方式中,代理节点在获取到源队列对编号后,可将源队列对编号拆分为第一部分和第二部分,并将源队列对编号的第一部分添加到第一数据报文的用户数据报协议(userdatagramprotocol,udp)头部的校验和字段中,将源队列对编号的第二部分添加到第一数据报文的基础传输头部bth的预留字段中,从而得到第二数据报文。本公开实施例示出的方案,代理节点通过将源队列对编号扩展到第一数据报文中,使得第一数据报文中携带有源队列对编号,从而在网络拥塞时,可根据该源队列对编号快速地将第一拥塞通告报文发送至发送端,提高了第一拥塞通告报文的传输速率。在本公开的第四种可能实现方式中,当接收到第二数据报文并检测到网络拥塞时,网络节点解析第二数据报文,得到第二数据报文的源媒体访问控制(mediaaccesscontrol,mac)地址、第二数据报文的目的mac地址、第二数据报文的源网络之间的互联协议(internetprotocol,ip)地址、第二数据报文的目的ip地址及第二数据报文的源队列对编号,基于解析结果,网络节点通过将第二数据报文的源mac地址作为第一拥塞通告报文的目的mac地址、将第二数据报文的目的mac地址作为第一拥塞通告报文的源mac地址、将第二数据报文的源ip地址作为第一拥塞通告报文的目的ip地址、将第二数据报文的目的ip地址作为第一拥塞通告报文的源ip地址、将第二数据报文的源队列对编号作为第一拥塞通告报文的目的队列对编号,得到第一拥塞通告报文。在本公开的第五种可能实现方式中,第一拥塞通告报文包括拥塞时刻数据流在网络节点中所属的队列的队列深度,基于该队列深度,代理节点能够确定出第一拥塞通告报文的发送周期,进而在后续对第一拥塞通告报文的发送过程中,可按照确定的发送周期进行发送。本公开实施例示出的方案,代理节点根据拥塞时刻数据流在网络节点中所属的队列的队列深度,可获知当前网络的拥塞程度,进而根据网络的拥塞程度所确定的发送周期,向发送端发送第一拥塞通告报文,使得发送端能够根据网络的拥塞程度确定第一数据报文所属数据流的发送速率,从而在避免网络拥塞的前提下,采用最大的发送速率发送第一数据报文,以降低数据传输过程中的时延。第二方面,提供了一种网络拥塞的通告方法,所述方法包括:在数据传输过程中,代理节点接收发送端发送的携带目的队列对编号的第一数据报文,并通过网络节点将第一数据报文发送至接收端。在对第二数据报文的转发过程中,当检测到网络拥塞时,网络节点根据第一数据报文,生成第二拥塞通告报文,并将第二拥塞通告报文发送至代理节点,该第二拥塞通告报文的目的队列对编号实际上为第一数据报文的目的队列对编号。当接收到第二拥塞通告报文时,代理节点根据第二拥塞通告报文的目的队列对编号,获取该目的队列对编号对应的源队列对编号,并用该源队列对编号替换第二拥塞通告报文中的目的队列对编号,得到第一拥塞通告报文,进而将第一拥塞通告报文发送至发送端,以使发送端在第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,降低第一数据报文所属的数据流的发送速率。本公开实施例示出的方案,在第一数据报文的传输过程中,当检测到网络拥塞时,网络节点生成第二拥塞通告报文,并将第二拥塞通告报文发送至代理节点,代理节点采用第一数据报文的源队列对编号替换第二拥塞通告报文的目的队列对编号后,得到第一拥塞通告报文,进而将第一拥塞通告报文发送至发送端,使得发送端能够及时降低第一数据报文所属的数据流的发送速率,以避免丢失该数据流的后续报文。在本公开的第一种可能实现方式,当接收到第一数据报文并检测到网络拥塞时,网络节点解析第一数据报文,得到第一数据报文的源媒体访问控制mac地址、第一数据报文的目的mac地址、第一数据报文的源网络之间的互联协议ip地址、第一数据报文的目的ip地址及第一数据报文的目的队列对编号,基于解析结果,网络节点通过将第一数据报文的源mac地址作为第二拥塞通告报文的目的mac地址、将第一数据报文的目的mac地址作为第二拥塞通告报文的源mac地址、将第一数据报文的源ip地址作为第二拥塞通告报文的目的ip地址、将第一数据报文的目的ip地址作为第二拥塞通告报文的源ip地址、将第一数据报文的目的队列对编号作为第二拥塞通告报文的目的队列对编号,可得到第二拥塞通告报文。在本公开的第二种可能实现方式,代理节点维护一个队列对跟踪表,该队列对跟踪表的每个表项存储有目的队列编号与源队列对编号之间的对应关系,因而当接收到第一数据报文时,代理节点可根据目的队列对编号,从队列对跟踪表中,查找到目的队列对编号对应的源队列对编号,该所查找到的源队列对编号即为第一数据报文的源队列对编号。本公开实施例示出的方案,提供了一种源对队列对编号的获取方式。在本公开的第三种可能实现方式,为了实现接收端和发送端之间的数据传输,发送端和接收端需要预先建立连接,在连接建立过程中,代理节点可跟踪发送端所发送的连接请求报文,并将从连接请求报文的基础传输头部中提取的目的队列对编号作为目的队列对编号,同时代理节点还可跟踪接收端所发送的连接应答报文,并将从连接应答报文的bth中提取的目的队列对编号作为源队列对编号,进而建立源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。本公开实施例示出的方案,代理节点通过跟踪发送端和接收端在连接建立过程中所发送的报文,建立队列对跟踪表,从而在接收到第一数据报文时,能够根据第一数据报文的目的队列对编号,查找到对应的源队列对编号。在本公开的第四种可能实现方式,第一拥塞通告报文包括拥塞时刻数据流在网络节点中所属的队列的队列深度,基于该队列深度,代理节点能够确定出第一拥塞通告报文的发送周期,进而在后续对第一拥塞通告报文的发送过程中,可按照确定的发送周期进行发送。本公开实施例示出的方案,代理节点根据拥塞时刻数据流在网络节点中所属的队列的队列深度,可获知当前网络的拥塞程度,进而根据网络的拥塞程度所确定的发送周期,向发送端发送第一拥塞通告报文,使得发送端能够根据网络的拥塞程度确定第一数据报文所属数据流的发送速率,从而在避免网络拥塞的前提下,采用最大的发送速率发送第一数据报文,以降低数据传输过程中的时延。第三方面,提供了一种用于对网络拥塞进行通告的代理节点,该代理节点包括用于实现第一方面所述的网络拥塞的通告方法的单元,例如,报文接收单元、编号获取单元、编号添加单元及报文发送单元。第四方面,提供了一种用于对网络拥塞进行通告的代理节点,该代理节点包括用于实现第二方面所述的网络拥塞的通告方法的单元,例如,报文接收单元、报文发送单元、编号获取单元、编号替换单元。第五方面、提供了一种计算机设备,包括:存储器、处理器、通信接口及总线;其中,存储器、处理器及通信接口通过总线连接,存储器用于存放计算计算机指令,处理器用于执行存储器存储的计算机指令;当计算机设备运行时,处理器运行计算机指令,使得计算机设备执行第一方面所述的网络拥塞的通告方法。第六方面、提供了一种计算机设备,包括:存储器、处理器、通信接口及总线;其中,存储器、处理器及通信接口通过总线连接,存储器用于存放计算计算机指令,处理器用于执行存储器存储的计算机指令;当计算机设备运行时,处理器运行计算机指令,使得计算机设备执行第二方面所述的网络拥塞的通告方法。第七方面,提供了一种存储介质,所述存储介质中至少存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如第一方面所述的网络拥塞的通告方法。第八方面,提供了一种存储介质,所述存储介质中至少存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如第二方面所述的网络拥塞的通告方法。附图说明图1是本公开实施例示出的一种rdma通讯流程的示意图;图2是本公开实施例示出的一种rdma协议栈的示意图;图3是本公开实施例示出的一种clos组网结构的示意图;图4是本公开实施例示出的一种rdma拥塞场景的示意图;图5是本公开实施例示出的提供的网络拥塞的通告方法所涉及的实施环境;图6是本公开实施例示出的代理节点在系统中的位置示意图;图7是本公开实施例示出的代理节点在系统中的位置示意图;图8是本公开实施例提供的一种网络拥塞的通告方法的流程图;图9是本公开实施例提供的一种网络拥塞的通告方法的流程图;图10是本公开实施例提供的一种用于对网络拥塞进行通告的代理节点的结构示意图;图11是本公开实施例提供的一种用于对网络拥塞进行通告的代理节点的结构示意图;图12是本公开实施例提供的一种计算计设备的结构示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。为了解决网络传输过程中服务器端数据处理的延迟,本公开实施例采用rdma技术进行数据传输。由于rdma技术无需借助计算机的处理器,通过网络即可将数据直接传入到计算机的存储区,因而改进了系统性能。图1为rdma的通讯流程的示意图,参见图1,rdma的通讯涉及两个计算机系统,其中,一个计算机系统包括服务器a和通道适配卡(channeladapter,ca)a,另一个计算机系统包括服务器b和通道适配卡b。每个通道适配卡被划分为传输层、网络层、链路层及物理层等。在每个计算机系统内部,服务器的中央处理器(centralprocessingunit,cpu)通过队列对(queuepair,qp)与通道适配卡进行通讯。该队列对包括发送队列(sendqueue)和接收队列(receivequeue)。其中,发送队列用于cpu向通道适配卡发送命令,该命令称为工作队列元素(workqueueelement,wqe);接收队列用于cpu接收通道适配卡的命令,该命令称为完成队列元素(completequeueelement,cqe)。当执行完cpu发送的wqe,通道适配卡通过向cpu发送cqe反馈完成情况。在两个计算机系统之间,服务器a通过端口与网络节点的端口建立物理连接,并基于所建立的连接,与网络节点通讯;服务器b通过端口与网络节点的端口建立物理连接,并基于所建立的连接,与网络节点进行通讯。网络内的各个节点,可通过端口彼此建立连接,并基于所建立的连接进行报文的转发。基于服务器a与网络节点之间、网络节点与网络节点之间、网络节点与服务器b之间所连接网络连接,通道适配卡a和通道适配卡b通过彼此发送携带目的队列对编号的无限带宽(infiniband,ib)报文进行通讯。图2为rdma的协议栈的示意图,由图2可知,rdma采用的是应用层协议,其传输层协议可以为infiniband传输层协议等,其网络层协议可以为infiniband网络层协议、udp/ip协议、其底层链路层协议可以为infiniband链路层协议、基于以太网的roce协议及基于以太网的rocev2协议等。其中,infiniband协议为一种分层协议(类似tcp/ip协议),每层负责不同的功能,下层为上层服务,且不同层次相互独立。infiniband协议、基于以太网的roce协议及基于以太网的rocev2协议的rdma协议报文均包括基础传输头(basetransportheader,bth)和ib净荷(payload)。其中,bth的长度为12比特,主要包括包序列号(packetsequencenumber,psn),目的队列对(destinationqp)和报文操作码(packetopcode)。其中,目的队列对用于指示接收端的qp编号。目前rdma采用clos架构进行组网,如图3所示为应用spine-leaf方式组建的clos架构的数据中心网络。采用clos架构进行组网时,由于交换机上下行接口带宽不对称,且上行接口(交换机中用于连接路由器或上一级交换机的接口)的数量小于下行接口(交换机中用于连接主机的接口)的数量,因此,在数据传输过程中,会存在网络拥塞的情况。图4(a)和图4(b)示出了rdma网络拥塞的场景图,图中交换机每个上行接口带宽为40ge,每个下行接口带宽为10ge。参见图4(a),在接收端向发送端发送数据的场景下,当通过5个下行接口接收的数据都发向一个上行接口时,将发生网络拥塞。参见图4(b),在发送端向接收端发送数据的场景下,当通过一个上行接口向一个下行接口发送数据时,也将发生网络拥塞。当发生网络拥塞时,rdma通讯性能会急剧下降。因此,为了提升rdma通讯性能,在采用rdma技术进行数据传输时,需要对网络拥塞进行通告。现有的网络拥塞的通告方法在检测到网络拥塞时,将数据报文发送至接收端,由接收端生成拥塞通告报文,进而将生成的拥塞通告报文发送至发送端。由于在检测到网络拥塞时,发送端未能及时降低数据报文的发送速率,使得网络设备缓存溢出,进一步导致数据在传输过程中丢失。为了及时通告发送端网络状态,本公开实施例提供了一种网络拥塞的通告方法,该方法中网络节点在接收到数据报文且检测到网络拥塞时,通过代理节点向发送端发送拥塞通告报文,以通知发送端当前的网络状态,使得发送端减小数据报文的发送速率,以缓解网络拥塞状态,从而达到避免数据丢失的目的。图5示出了本公开实施例提供的网络拥塞的通告方法所涉及的系统,参见图5,该系统包括:发送端、代理节点、网络节点及接收端。其中,发送端和接收端可以为网络中的计算机,且该发送端和接收端地位并不是固定不变的,发送端可能为下一次数据传输过程中的接收端,接收端可能为下一次数据传输过程中的发送端。网络节点可以为网络中的交换机、路由器等,本公开实施例不对网络节点的类型作具体的限定。代理节点为网络中的硬件单元,可位于发送端的内部,也可以位于网络节点的内部。参见图6,当代理节点位于发送端的内部时,其部署形式可以为网络接口卡(networkinterfacecard,nic)特定用途集成电路(application-specificintegratedcircuit,asic)上的硬件逻辑、nic上的微码或者nic现场可编程逻辑门电路(field-programmablegatearray,fpga)芯片的逻辑代码。图6中虚线示出了代理节点的工作过程,即在发送端内部获取到接收端的数据报文后,将接收端的数据报文发送至发送端的rdma应用(application,app);在发送端内部获取到发送端的数据报文后,通过网络将该数据报文发送至接收端。参见图7,当代理节点位于网络节点的内部时,其部署形式可以为交换机asic上的硬件逻辑、交换机芯片外挂通知点(notificationpoint,np)上的微码或者交换机芯片外挂fpga芯片的逻辑代码。图7中的虚线示出了代理节点的工作过程,即获取到接收端的数据报文后,通过网络将接收端的数据报文发送至发送端;获取到发送端的数据报文后,通过网络将发送端的数据报文发送至接收端。基于图5所示的系统,本公开实施例提供了一种网络拥塞的通告方法,参见图8,本公开实施例提供的方法流程包括:801、在发送端向接收端发送第一数据报文的过程中,代理节点接收发送端的第一数据报文。当发送端需要向接收端发送数据时,发送端获取发送端的媒体访问控制(mediaaccesscontrol,mac)地址、发送端的ip地址、接收端的mac地址、接收端的ip地址及接收端目的队列对编号,并基于rdma报文格式,生成标准的rdma数据报文。为了便于查看当前的网络状态,发送端还将在rdma数据报文的ip头部设置ecn位,该ecn位用于标识rdma发送端具有ecn能力,且该ecn位上的不同数值表明网络的不同状态,例如,可用数值10表明网络处于正常状态,可用数值11表明网络处于拥塞状态等。初始时刻,默认网络状态为正常状态,也即是ecn位上的数值为10。下述表1为所生成的标准rdma数据报文的报文格式:表1其中,macheader为mac头部字段;ipheader为ip头部字段,该ipheader的ecn标识位上的数值为10;ibtransportheader为ib传输头部字段;data为待发送的数据;icrc为数据传输检错字段;eth帧校验序列(framechecksequence,fcs)为校验字段,用于存储icrc校验值。需要说明的是,由于本公开涉及到多个rdma数据报文,为了便于将不同的rdma数据报文区分开,可将发送端生成的rdma数据报文,称为第一数据报文,将代理节点根据第一数据报文得到的新数据报文,称为第二数据报文。其中,第一数据报文携带源mac地址(发送端的mac地址)、源ip地址(发送端的ip地址)、目的mac地址(接收端的mac地址)、目的ip地址(接收端的ip地址)、目的队列对编号等。在发送端通过网络将第一数据报文发送至接收端的过程中,第一数据报文会经过发送端及网络中的各个网络节点,而代理节点位于发送端内部或网络节点内部,因此,代理节点可接收到第一数据报文,进而处理接收到的第一数据报文。802、代理节点根据目的队列对编号,获取第一数据报文的源队列对编号。当接收到第一数据报文时,代理节点通过解析第一数据报文,可得到第一数据报文的目的队列对编号,进而根据该目的队列对编号,获取到第一数据报文的源队列对编号。代理节点根据目的队列对编号,获取第一数据报文的源队列对编号时,包括但不限于如下方式:代理节点根据目的队列对编号,从预先建立的队列对跟踪表中,查找目的队列对编号对应的源队列对编号。其中,队列对跟踪表的每个表项存储目的队列对编号与源队列对编号之间的对应关系。由于队列对跟踪表为代理节点获取第一数据报文的源队列对编号的关键,因此,在获取第一数据报文的源队列对编号之前,代理节点需要建立队列对跟踪表。队列对跟踪表的建立过程如下:第一步,代理节点跟踪每对发送端和接收端在连接建立过程中所发送的连接请求报文和连接应答报文。在互联网
技术领域
,发送端在将待发送的数据包发送至接收端之前,首先要建立连接,并在建立连接的过程中,获取对端的相关信息。具体地,发送端会向接收端发送连接请求报文,该连接请求报文中携带发送端的mac地址、发送端的ip地址、发送端的队列对编号等,当接收到连接请求报文时,接收端通过解析连接请求报文,可得到发送端的mac地址、发送端的ip地址、发送端的队列对编号等,同时接收端也会向发送端发送连接应答报文,该连接应答报文中携带接收端的mac地址、接收端的ip地址、接收端的队列对编号等,当接收到连接应答报文时,发送端通过解析连接应答报文,可得到接收端的mac地址、接收端的ip地址、接收端的队列对编号等。在发送端和接收端建立连接的过程中,连接请求报文和连接应答报文会经过发送端、网络中的各个网络节点及接收端,而代理节点位于发送端内部或网络节点内部,因此,代理节点能够跟踪发送端和接收端在彼此探测的过程中所发送的连接请求报文和连接应答报文,进而建立队列对跟踪表。第二,代理节点提取连接请求报文的bth中的目的队列对编号,并提取连接应答报文的bth中的目的队列对编号。由于本公开实施例中的连接请求报文和连接应答报文中均具有基础传输头部bth,该bth中携带目的队列对编号,因此,代理节点通过解析连接请求报文的bth,可得到连接请求报文的目的队列对编号,并通过解析连接应答报文的bth,可得到连接应答报文的目的队列对编号。第三步,代理节点将从连接请求报文中提取的目的队列对编号作为目的队列对编号,将从连接应答报文中提取的目的队列对编号作为源队列对编号,并记录该源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。例如,在发送端1和接收端1的连接建立过程中,如果代理节点从发送端1的连接请求报文的bth中提取的目的队列对编号为0x1010a1,从接收端1的连接应答报文的bth中提取的目的队列对编号为0x1010f1,则代理节点可将0x1010a1作为目的队列对编号,将0x1010f1作为源队列对编号,并记录所提取的源队列对编号0x1010f1与目的队列对编号0x1010a1之间的对应关系。在发送端2和接收端2的连接建立过程中,如果代理节点从发送端2的连接请求报文的bth中提取的目的队列对编号为0x1010a2,从接收端2的连接应答报文的bth中提取的目的队列对编号为0x1010f2,则代理节点可将0x1010a2作为目的队列对编号,将0x1010f2作为源队列对编号,并记录所提取的源队列对编号0x1010f2与目的队列对编号0x1010a2之间的对应关系。通过跟踪不同发送端和接收端之间的连接建立过程,可建立表2所示的队列对跟踪表。表2源队列对编号(24bit)目的队列对编号(24bit)0x1010f10x1010a10x1010f20x1010a2在本公开的另一个实施例中,为了更精准地获取到第一数据报文的源队列对编号,代理节点在建立队列对跟踪表时,还可获取发送端的mac地址、接收端的mac地址、发送端的ip地址、接收端的ip地址、发送端与接收端之间的传输层协议等,进而基于发送端的队列对编号、接收端的队列对编号、发送端的mac地址、接收端的mac地址、发送端的ip地址、接收端的ip地址、传输层协议,建立队列对跟踪表。当接收到第一数据报文时,代理节点通过解析第一数据报文,可得到第一数据报文的目的队列对编号、源mac地址、目的mac地址、源ip地址、目的ip地址、传输层协议等,进而从队列对跟踪表中查找与目的队列对编号、源mac地址、目的mac地址、源ip地址、目的ip地址、传输层协议对应的源队列对编号,并将查找到的源队列对编号作为第一数据报文的源队列对编号。通过采用该种处理方式,可在网络中存在一个发送端与一个接收端、一个发送端与至少两个接收端以及两个发送端和一个接收端的场景下,能够准确地查找到对应的源队列对编号。803、代理节点将源队列对编号添加到第一数据报文中,得到第二数据报文,并通过网络节点向接收端发送第二数据报文。获取到源队列对编号后,代理节点通过将源队列对编号添加到第一数据报文中,可得到第二数据报文。采用该种处理方式,第二数据报文中也将携带源队列对编号,从而在第二数据报文的传输过程中,当网络节点检测到网络拥塞时,能够根据第二数据报文中携带的源队列对编号,快速确定发送端。代理节点在将源队列对编号添加到第一数据报文中,得到第二数据报文时,可采用如下步骤:第一步、代理节点将源队列对编号拆分为第一部分和第二部分。其中,第一部分的长度和第二部分的长度可以相同,也可以不同,只需保证第一部分的长度和第二部分的长度之和等于源队列对编号的长度即可。第二步、代理节点将第一部分添加到第一数据报文的udp头部的校验和字段中,并将第二部分添加到第一数据报文的基础传输头部bth的预留字段中,得到第二数据报文。例如,源队列对编号的长度为16比特,代理节点将该源队列对编号拆分为8比特的第一部分和8比特的第二部分,并将8比特的第一部分添加到第一数据报文的udp头部的校验和字段(udpchecksum)中,并将8比特的第二部分添加到第一数据报文的bth的预留字段(reserved)中,得到第二数据报文。804、当接收到第二数据报文并检测到网络拥塞时,网络节点根据第二数据报文,生成第一拥塞通告报文,并将第一拥塞通告报文发送至代理节点。当第二数据报文传输到网络中的某个网络节点时,该网络节点检测到网络拥塞,该网络节点将根据第二数据报文生成第一拥塞通告报文,该第一拥塞通告报文的ecn位上的数值为拥塞状态对应的数值,进而将第一拥塞通告报文发送至代理节点,由代理节点发送至发送端,以通知发送端当前的网络状态,从而使发送端降低第一数据报文所属的数据流的发送速率,同时为了保证数据报文的正常传输,该网络节点还继续向接收端转发该第二数据报文。网络节点在根据第二数据报文,生成第一拥塞通告报文时,可采用如下步骤:第一步、网络节点解析第二数据报文,得到第二数据报文的源mac地址、第二数据报文的目的mac地址、第二数据报文的源ip地址、第二数据报文的目的ip地址及第二数据报文的源队列对编号。由于第二数据报文中携带第二数据报文的源mac地址、第二数据报文的目的mac地址、第二数据报文的源ip地址、第二数据报文的目的ip地址及第二数据报文的源队列对编号,因此,网络节点通过解析第二数据报文,可得到第二数据报文的源mac地址、第二数据报文的目的mac地址、第二数据报文的源ip地址、第二数据报文的目的ip地址及第二数据报文的源队列对编号。第二步、网络节点将第二数据报文的源mac地址作为第一拥塞通告报文的目的mac地址、将第二数据报文的目的mac地址作为第一拥塞通告报文的源mac地址、将第二数据报文的源ip地址作为第一拥塞通告报文的目的ip地址、将第二数据报文的目的ip地址作为第一拥塞通告报文的源ip地址、将第二数据报文的源队列对编号作为第一拥塞通告报文的目的队列对编号,得到第一拥塞通告报文。基于rdma报文格式,网络节点通过将第二数据报文的源mac地址作为第一拥塞通告报文的目的mac地址、将第二数据报文的目的mac地址作为第一拥塞通告报文的源mac地址、将第二数据报文的源ip地址作为第一拥塞通告报文的目的ip地址、将第二数据报文的目的ip地址作为第一拥塞通告报文的源ip地址、将第二数据报文的源队列对编号作为第一拥塞通告报文的目的队列对编号,可得到第一拥塞通告报文。该第一拥塞通告报文的预留字段中还可以携带网络节点标识和拥塞时刻第二数据报文所属的数据流在该网络节点中所属的队列的队列深度等。805、当代理节点接收到第一拥塞通告报文时,代理节点将第一拥塞通告报文发送至发送端。当接收到第一拥塞通告报文时,代理节点根据第二数据报文所属的数据流(即第一数据报文所属的数据流)在网络节点中所属的队列的队列深度,确定第一拥塞通告报文的发送周期,进而按照所确定的发送周期,将接收到的第一拥塞通告报文发送至发送端。考虑到发生网络拥塞的网络节点至少为一个,且每个发生网络拥塞的网络节点在接收到第二数据报文时,均会向代理节点返回一个第一拥塞通告报文,代理节点根据至少一个第一拥塞通告报文,选取最深的队列深度,并根据最深的队列深度确定第一拥塞报文的发送周期。具体地,代理节点所确定的第一拥塞通告报文的发送周期与所选取的队列深度成反比,如果所选取的队列深度大于预设长度,说明网络拥塞程度较为严重,则可确定的第一拥塞通告报文的发送周期为第一周期;如果队列深度小于预设长度,说明网络拥塞程度较轻,则可确定的第一拥塞通告报文的发送周期为第二周期。其中,预设长度可根据经验值确定,该第一周期小于第二周期。806、当发送端接收到第一拥塞通告报文时,发送端降低第一数据报文所属的数据流的发送速率。实际上,第一拥塞通告报文的数量及第一拥塞通告报文的发送周期均能反映出当前的网络状态,因此,当接收到至少一个第一拥塞通告报文时,发送端可根据接收到的第一拥塞通告报文的数量及第一拥塞通告报文的发送周期,采用拥塞控制算法,确定第一数据报文所属的数据流的发送速率,进而根据所确定的发送速率发送所述数据流的后续报文,以缓解网络拥塞状态。本公开实施例提供的方法,代理节点在接收到第一数据报文时,将源队列对编号添加到第一数据报文中,得到第二数据报文,并将第二数据报文发送至网络节点,并通过网络节点将第二数据报文发送至接收端,在第二数据报文的转发过程中,如果检测到网络拥塞,网络节点根据第二数据报文,生成第一拥塞通告报文,将第一拥塞通告报文发送至代理节点,由代理节点将第一拥塞通告报文发送至发送端,以使发送端降低第一数据报文所属的数据流的发送速率。由于本公开中网络节点在检测到网络发生拥塞时,立即向发送端发送第一拥塞通告报文,使得发送端能够及时降低第一数据报文所属的数据流的发送速率,从而避免丢失该数据流的后续报文。本公开实施例提供了一种拥塞通告的方法,参见图9,本公开实施例提供的方法流程包括:901、在发送端向接收端发送第一数据报文的过程中,代理节点接收发送端的第一数据报文。该步骤具体实现时与上述步骤801相同,具体参见上述步骤801,此处不再赘述。902、代理节点通过网络节点向接收端发送第一数据报文。当接收到第一数据报文时,代理节点通过网络节点的转发,将第一数据报文发送至接收端。903、当网络节点接收到第一数据报文并检测到网络拥塞时,网络节点根据第一数据报文,生成第二拥塞通告报文,并将第二拥塞通告报文发送至代理节点。当第一数据报文传输到网络中的某个网络节点时,该网络节点检测到网络拥塞,该网络节点将根据第一数据报文生成第二拥塞通告报文,该第二拥塞通告报文的ecn位上的数值为拥塞状态对应的数值,进而将第二拥塞通告报文发送至代理节点,由代理节点发送至发送端,以通知发送端当前的网络状态,从而使发送端降低第一数据报文所属的数据流的发送速率,同时为了保证数据报文的正常传输,该网络节点还继续向接收端发送该第一数据报文。网络节点在根据第一数据报文,生成第一拥塞通告报文时,可采用如下步骤:第一步、网络节点解析第一数据报文,得到第一数据报文的源媒体访问控制mac地址、第一数据报文的目的mac地址、第一数据报文的源网络之间的互联协议ip地址、第一数据报文的目的ip地址及第一数据报文的目的队列对编号。由于第一数据报文中携带第一数据报文的源mac地址、第一数据报文的目的mac地址、第一数据报文的源ip地址、第一数据报文的目的ip地址,因此,网络节点通过解析第一数据报文,可得到第一数据报文的源mac地址、第一数据报文的目的mac地址、第一数据报文的源ip地址、第一数据报文的目的ip地址。第二步、网络节点将第一数据报文的源mac地址作为第二拥塞通告报文的目的mac地址、将第一数据报文的目的mac地址作为第二拥塞通告报文的源mac地址、将第一数据报文的源ip地址作为第二拥塞通告报文的目的ip地址、将第一数据报文的目的ip地址作为第二拥塞通告报文的源ip地址、将第一数据报文的目的队列对编号作为第二拥塞通告报文的目的队列对编号,得到第二拥塞通告报文。基于rdma报文格式,网络节点通过将第一数据报文的源mac地址作为第二拥塞通告报文的目的mac地址、将第一数据报文的目的mac地址作为第二拥塞通告报文的源mac地址、将第一数据报文的源ip地址作为第二拥塞通告报文的目的ip地址、将第一数据报文的目的ip地址作为第二拥塞通告报文的源ip地址、将第一数据报文的目的队列对编号作为第二拥塞通告报文的目的队列对编号,可得到第二拥塞通告报文。该第二拥塞通告报文的预留字段中还可以携带网络节点标识和拥塞时刻第一数据报文所属的数据流在该网络节点中所属的队列的队列深度等。904、当代理节点接收到第二拥塞通告报文时,代理节点根据目的队列对编号,获取目的队列对编号对应的源队列对编号。当接收到第二拥塞通告报文时,代理节点根据目的队列对编号,从预先建立的队列对跟踪表中,查找目的队列对编号对应的源队列对编号,该队列对跟踪表的每个表项存储目的队列对编号与源队列对编号之间的对应关系。对于队列对跟踪表的建立过程,与上述步骤802中所述的队列对跟踪表的建立过程相同,具体参见上述步骤802中队列对跟踪表的建立过程,此处不再赘述。905、代理节点用源队列对编号替换第二拥塞通告报文中的目的队列对编号,得到第一拥塞通告报文。当获取到第一数据报文的源队列对编号,代理节点可直接用该源队列对编号替换第二拥塞通告报文中的目的队列对编号,得到第一拥塞通告报文。906、代理节点将第一拥塞通告报文发送至发送端。此步骤具体实现时与上述步骤805相同,具体参见上述步骤805,此处不再赘述。907、当发送端接收到第一拥塞通告报文时,发送端降低第一数据报文所属的数据流的发送速率。此步骤具体实现时与上述步骤806相同,具体参见上述步骤806,此处不再赘述。本公开实施例提供的方法,当接收到代理节点的第一数据报文并检测到网络拥塞时,网络节点将所生成的第二拥塞通告报文发送至代理节点,由代理节点根据第二拥塞通告报文生成携带第一数据报文的源队列对编号的第一拥塞通告报文,并将该第一拥塞通告报文发送至发送端,以使发送端降低第一数据报文所属数据流的发送速率。由于本公开中网络节点在检测到网络发生拥塞时,立即向发送端发送第一拥塞通告报文,使得发送端能够及时降低第一数据报文所属的数据流的发送速率,从而避免丢失该数据流的后续报文。本公开实施例提供了一种用于对网络拥塞进行通告的代理节点,参见图10,该代理节点包括:报文接收单元1001,用于接收发送端的第一数据报文,该第一数据报文携带目的队列对编号;编号获取单元1002,用于根据目的队列对编号,获取第一数据报文的源队列对编号;编号添加单元1003,用于将源队列对编号添加到第一数据报文中,得到第二数据报文,并通过网络节点向接收端发送第二数据报文;报文接收单元1001,还用于接收第一拥塞通告报文,该第一拥塞通告报文由网络节点在接收到所述第二数据报文并检测到网络拥塞时生成,该第一拥塞通告报文的目的队列对编号为源队列对编号;报文发送单元1004,用于将第一拥塞通告报文发送至所述发送端,该第一拥塞通告报文用于通知发送端在第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,降低第一数据报文所属的数据流的发送速率。在本公开的另一个实施例中,编号获取单元1002,还用于根据目的队列对编号,从预先建立的队列对跟踪表中,查找目的队列对编号对应的源队列对编号,该队列对跟踪表的每个表项存储目的队列对编号与源队列对编号之间的对应关系。在本公开的另一个实施例中,编号获取单元1002,还用于跟踪发送端和接收端在连接建立过程中所发送的连接请求报文和连接应答报文;提取连接请求报文的bth中的目的队列对编号,并提取连接应答报文的bth中的目的队列对编号;将从连接请求报文中提取的目的队列对编号作为目的队列对编号,将从连接应答报文中提取的目的队列对编号作为源队列对编号,并记录源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。在本公开的另一个实施例中,编号添加单元1003,还用于将源队列对编号拆分为第一部分和第二部分;将第一部分添加到第一数据报文的udp头部的校验和字段中,并将第二部分添加到第一数据报文的bth的预留字段中,得到第二数据报文。在本公开的另一个实施例中,第一拥塞通告报文包括拥塞时刻数据流在网络节点中所属的队列的队列深度;报文发送单元1004,还用于根据队列深度,确定第一拥塞通告报文的发送周期;按照发送周期,将第一拥塞通告报文发送至发送端。本公开实施例提供了一种用于对网络拥塞进行通告的代理节点,参见图11,该代理节点包括:报文接收单元1101,用于接收发送端的第一数据报文,该第一数据报文携带目的队列对编号;报文发送单元1102,用于通过网络节点向接收端发送第一数据报文;报文接收单元1101,还用于接收携带目的队列对编号的第二拥塞通告报文,该第二拥塞通告报文由网络节点在接收到第一数据报文并检测到网络拥塞时生成;编号获取单元1103,用于根据目的队列对编号,获取目的队列对编号对应的源队列对编号;编号替换单元1104,用于用源队列对编号替换第二拥塞通告报文中的目的队列对编号,得到第一拥塞通告报文;报文发送单元1102,还用于将第一拥塞通告报文发送至发送端,该第一拥塞通告报文用于通知发送端在第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,降低第一数据报文所属的数据流的发送速率。在本公开的另一个实施例中,编号获取单元1103,用于根据目的队列对编号,从预先建立的队列对跟踪表中,查找目的队列对编号对应的源队列对编号,该队列对跟踪表的每个表项存储目的队列对编号与源队列对编号之间的对应关系。在本公开的另一个实施例中,编号获取单元1103,还用于跟踪发送端和接收端在连接建立过程中所发送的连接请求报文和连接应答报文;提取连接请求报文的基础传输头部bth中的目的队列对编号,并提取连接应答报文的bth中的目的队列对编号;将从连接请求报文中提取的目的队列对编号作为目的队列对编号,将从连接应答报文中提取的目的队列对编号作为源队列对编号,并记录源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。在本公开的另一个实施中,第一拥塞通告报文包括拥塞时刻数据流在网络节点中所属的队列的队列深度;报文发送单元1102,还用于根据队列深度,确定第一拥塞通告报文的发送周期;按照发送周期,将第一拥塞通告报文发送至发送端。参见图12,其示出了本公开的一个实施例中使用的计算设备1200。所述计算设备1200包括处理器1201、存储器1202、通信接口1203和总线1204。该处理器1201、存储器1202、通信接口1203通过总线1204直连。该计算设备1200可以为代理节点,当计算设备为代理节点时,该计算设备1200用于执行上述图8中代理节点所执行的网络拥塞的通告方法。具体地,存储器1202用于存放计算机指令;处理器1201通过总线1204调用存储器1202中存储的计算机指令,用于执行以下操作:通过通信接口1203接收发送端的第一数据报文,该第一数据报文携带目的队列对编号;根据目的队列对编号,获取第一数据报文的源队列对编号;将源队列对编号添加到第一数据报文中,得到第二数据报文,并通过网络节点向接收端发送第二数据报文;通过通信接口1203接收第一拥塞通告报文,并将第一拥塞通告报文发送至发送端,该第一拥塞通告报文由网络节点在接收到第二数据报文并检测到网络拥塞时生成,该第一拥塞通报报文的目的队列对编号为该源队列对编号,该第一拥塞通告报文用于通知发送端在第一拥塞通告报文的目的队列对编号与发送端的队列对编号相同时,降低第一数据报文所属的数据流的发送速率。在本公开的另一个实施例中,处理器1201通过总线1204调用存储器1202中存储的计算机指令,用于执行以下操作:根据目的队列对编号,从预先建立的队列对跟踪表中,查找目的队列对编号对应的源队列对编号,该队列对跟踪表的每个表项存储目的队列对编号与源队列对编号之间的对应关系。在本公开的另一个实施例中,处理器1201通过总线1204调用存储器1202中存储的计算机指令,用于执行以下操作:跟踪发送端和接收端在连接建立过程中所发送的连接请求报文和连接应答报文;提取连接请求报文基础传输头部的bth中的目的队列对编号,并提取连接应答报文的bth中的目的队列对编号;将从连接请求报文中提取的目的队列对编号作为目的队列对编号,将从连接应答报文中提取的目的队列对编号作为源队列对编号,并建立所提取的源队列对编号与目的队列对编号之间的对应关系,得到队列对跟踪表。在本公开的另一个实施例中,处理器1201通过总线1204调用存储器1202中存储的计算机指令,用于执行以下操作:将源队列对编号拆分为第一部分和第二部分;将第一部分添加到第一数据报文的udp头部的校验和字段中,并将第二部分添加到第一数据报文的bth的预留字段中,得到第二数据报文。在本公开的另一个实施例中,第一拥塞通告报文包括拥塞时刻数据流在网络节点中的所属的队列队列深度,处理器1201通过总线1204调用存储器1202中存储的计算机指令,用于执行以下操作:根据队列深度,确定第一拥塞通告报文的发送周期;按照发送周期,将第一拥塞通告报文发送至发送端。该存储器1202包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。根据本公开的各种实施例,所述计算设备1200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算设备1200可以通过连接在所述总线1204上的网络接口单元1205连接到网络,或者说,也可以使用网络接口单元1205来连接到其他类型的网络或远程计算机系统(未示出)。需要说明的是,当计算设备120为代理节点时,计算设备1200不仅可执行图8中代理节点所执行的网络拥塞的通告方法,还可执行图9中代理节点所执行的网络拥塞的通告方法,本公开实施例不再赘述。本公开实施例提供了一种存储介质,该存储介质中至少存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如图8或图9所示的网络拥塞的通告方法。需要说明的是:上述实施例提供的网络拥塞的通告系统在对网络拥塞进行通告时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络拥塞的通告系统与网络拥塞的通告方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1