报文控制方法及网络装置与流程

文档序号:17003451发布日期:2019-03-02 01:54阅读:166来源:国知局
报文控制方法及网络装置与流程

本申请涉及网络通信领域,尤其涉及报文控制方法及网络装置。



背景技术:

随着高性能计算、人工智能、分布式存储等依赖于超低时延数据中心的业务越来越多,使用者对数据中心中各节点间的数据传输时延的要求也越来越高。而在实际使用中,因为拥塞而导致的丢包,是影响业务性能的重要原因。

为减少因为拥塞而导致的丢包,可以在数据中心中节点间的数据传输过程中引入以优先级流控(priority-basedflowcontrol,pfc)机制。在引入pfc机制后,上游节点可以根据待传输业务的优先级确定各个待传输业务所对应的报文流的优先级,其中,待传输业务的优先级越高,其所对应的报文流的优先级也越高。在报文流的优先级确定后,上游节点可以通过不同的发送队列向下游节点发送不同的报文流,其中每一个队列用于发送优先级相同的报文流,而不同的队列则用于发送优先级不同的报文流。下游节点则可以相应设置有多个缓存队列,每一个缓存队列对应用于同属于一个优先级的报文流,不同的缓存队列则可以用于缓存优先级不同的报文流。当某一个缓存队列中所缓存的数据超过预设水平线,即可能会发生拥塞时,下游节点可以向上游节点发送反压信号,请求上游节点暂停发送该缓存队列所对应优先级的报文流,从而可以避免拥塞的发生。

但是数据中心中,同一个下游节点可能会具有一个以上的上游节点,并且各个上游节点所发送的不同类型的报文流可能会具有相同的优先级,并且同一优先级的报文流的数据量可能会各不相同。在引入pfc机制后,当多个优先级相同的报文流中的某一个报文流的数据量过大时,就可能会导致缓存队列中所缓存的数据超过预设水平线,从而导致下游节点可以向上游节点发送反压信号。而下游节点在此情况下向上游节点发送反压信号,会导致所有上游节点暂停发送所有该优先级的报文流,从而会出现因数据量较小而不会引发阻塞的报文流也被上游节点暂停发送的情况,使这些数据量较小的报文流出现严重的队头阻塞(headoflineblocking,holb)问题,而队头阻塞会引起拥塞扩散,极大地影响整网性能。



技术实现要素:

本申请提供了报文控制方法及设备,以减少队头阻塞情况的出现,从而减少拥塞扩散。

第一方面,本申请提供了一种报文控制方法,包括:检测引起拥塞状态变化的报文流;生成拥塞隔离消息,所述拥塞隔离消息用于变更所述报文流中报文的优先级,所述拥塞隔离消息包括所述报文流的描述信息;向至少一个节点发送所述拥塞隔离消息。

结合第一方面,在第一方面第一种可能的实现方式中,向至少一个节点发送所述拥塞隔离消息,包括:向发送所述报文流的上游节点发送所述拥塞隔离消息。

结合第一方面或第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,所述拥塞隔离消息具体用于指示所述节点降低所述报文流中报文的调度优先级。

结合第一方面或第一方面第一至二种可能的实现方式中的任意一种,在第一方面第三种可能的实现方式中,所述拥塞隔离消息为以太类型是预定义类型的报文。

结合第一方面或第一方面第一至三种可能的实现方式中的任意一种,在第一方面第四种可能的实现方式中,将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记,其中,拥塞标记项用于记录其所属条目所对应的报文流是否为拥塞流,所述第一标记用于表示其所属条目所对应的报文流为拥塞流。

结合第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,还包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则将标记项设成第二标记,所述第二标记用于表示其所属条目所对应的报文流为非拥塞流,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

结合第一方面第四种可能的实现方式,在第一方面第六种可能的实现方式中,还包括:接收第一报文;如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后接收到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前接收到的报文。

结合第一方面或第一方面第一至三种可能的实现方式中的任意一种,在第一方面第七种可能的实现方式中,在拥塞流流表中添加与所述报文流对应的条目。

结合第一方面第七种可能的实现方式,在第一方面第八种可能的实现方式中,还包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则删除与所述报文流对应的条目,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

结合第一方面第七种可能的实现方式,在第一方面第九种可能的实现方式中,接收第三报文;如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第三报文的调度优先级,使所述第三报文与所述第四报文的优先级不同,其中,所述第四报文与所述第三报文均属于第二报文流,所述第三报文是指在拥塞流流表中添加与所述第二报文流对应的条目之后接收到的报文,所述第四报文是指在拥塞流流表中添加与所述第二报文流对应的条目之前接收到的报文。

第二方面,本申请还提供了另一种报文控制方法,包括:接收拥塞隔离消息,所述拥塞隔离消息中包含描述信息;变更所述描述信息所指示报文流中报文的优先级。

结合第二方面,在第二方面第一种可能的实现方式中,变更所述描述信息所指示报文流中报文的优先级,包括:降低所述报文流中报文的调度优先级。

结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,降低所述报文流中报文的调度优先级包括:修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级;或者,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级。

结合第二方面第一种可能的实现方式,在第二方面第三种可能的实现方式中,还包括:将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记,其中,拥塞标记项用于记录其所属条目所对应的报文流是否为拥塞流,所述第一标记用于表示其所属条目所对应的报文流为拥塞流。

结合第二方面第三种可能的实现方式,在第二方面第四种可能的实现方式中,还包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则将标记项设成第二标记,所述第二标记用于表示其所属条目所对应的报文流为非拥塞流,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

结合第二方面第三种可能的实现方式,在第二方面第五种可能的实现方式中,还包括:获取第一报文;如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后获取到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前获取到的报文。

结合第二方面,在第二方面第六种可能的实现方式中,在接收拥塞隔离消息之后,还包括:在拥塞流流表中添加与所述报文流对应的条目。

结合第二方面第六种可能的实现方式,在第二方面第七种可能的实现方式中,还包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则删除与所述报文流对应的条目,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

结合第二方面第六种可能的实现方式,在第二方面第八种可能的实现方式中,还包括:还包括:获取第三报文;如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第三报文的调度优先级,使所述第三报文与所述第四报文的优先级不同,其中,所述第四报文与所述第三报文均属于第二报文流,所述第三报文是指在拥塞流流表中添加与所述第二报文流对应的条目之后获取到的报文,所述第四报文是指在拥塞流流表中添加与所述第二报文流对应的条目之前获取到的报文。

第三方面,本申请还提供了一种网络设备,所述设备包括用于执行前述第一方面或第一方面各种实现方式中所述方法任一种的单元模块。其中,所述单元模块所要实现的功能可以由处理器实现或由处理器及由处理器所控制的网络设备组件实现。

第四方面,本申请还提供了另一种网络设备,所述设备包括用于执行前述第二方面或第二方面各种实现方式中所述方法任一种的单元模块。其中,所述单元模块所要实现的功能可以由处理器实现或由处理器及由处理器所控制的网络设备组件实现。

第五方面,本申请还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,可以使得计算机执行第一方面或第一方面各种实现方式任一项中所述方法。

第六方面,本申请还提供了另一种计算机可读存储介质,包括指令,当其在计算机上运行时,可以使得计算机执行第二方面或第二方面各种实现方式任一项中所述方法。

第七方面,本申请还提供了一种计算机程序产品,包括指令,当其在计算机上运行时,可以使得计算机执行第一方面或第一方面各种实现方式任一项中所述方法。

第八方面,本申请还提供了另一种计算机程序产品,包括指令,当其在计算机上运行时,可以使得计算机执行第二方面或第二方面各种实现方式任一项中所述方法。

第九方面申请还提供了一种网络系统,所述网络系统可以包括至少两个节点,其中一个节点,用于执行执行前述第二方面或第二方面各种实现方式中所述方法任一种;和/或,其中另一个节点,用于执行前述第二方面或第二方面各种实现方式中所述方法任一种。

采用本申请所提供的方法及网络装置等,可以在识别出引起拥塞状态变化的报文流后,变更所述报文流中报文的优先级,从而可以极大降低出现队头阻塞的可能性。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请网络系统一个实施例的结构示意图;

图2为本申请网络系统另一个实施例的结构示意图;

图3为本申请拥塞隔离消息的一种结构示意图;

图4为本申请拥塞隔离消息的一种结构示意图;

图5为申请报文控制方法一个实施例的流程示意图;

图6为申请报文控制方法另一个实施例的流程示意图;

图7为申请报文控制方法又一个实施例的流程示意图;

图8为申请报文控制方法再一个实施例的流程示意图;

图9为申请网络设备一个实施例的结构示意图;

图10为申请网络设备另一个实施例的结构示意图;

图11为申请网络设备又一个实施例的结构示意图。

具体实施方式

本申请各个实施例中的网络系统,可以是采用clos架构、mesh架构或torus架构等网络架构的数据中心,或者也可以是其它采用前述架构的非数据中心网络,对此本申请不做限定。为便于描述,以下仅以clos架构的数据中心为例进行说明。

clos架构的数据中心可以包括用于提供各类服务的服务器(server)。除服务器之外,所述还包括tor交换机和spine交换机等多种不同类型的交换机。其中,所述tor交换机设置可以在所述服务器与所述spine交换机之间的链路上,所述tor交换机的上行端口用于连接spine交换机,而下行端口则用于连接服务器。每一个所述tor交换机均可以通过多个上行端口与多个spine交换机相连。而每一个所述服务器则也可以通过至少一块网卡与至少一个tor交换机相连。

当所述数据中心规模较大,所包含的服务器及tor交换机较多时,还可以在所述tor交换机与所述spine交换机之间的链接上设置agg交换机。所述agg交换机的下行端口用于连接至少一个tor交换机,上行端口则用于连接至少一个spine。当所述tor交换机的上行端口连接spine交换机时,如图1所示,所述数据中心为二级clos网络;而当所述tor交换机的上行端口连接agg交换机时,如图2所示,所述数据中心为三级clos网络。

本申请各个实施例中的节点,又可以被称为站点(station),可以包括前述服务器或任一类型的交换机等设备,也可以包括数据中心网络或其它非数据中心网络任意的设备。所述设备可以是交换机、路由器、网卡等设备。

在本申请各个实施例中,拥塞隔离消息(congestionisolationpacket,cip)是指能够用于指示接收到该消息的节点,变更该消息所指示报文流中报文优先级的信息。即,所述拥塞隔离消息可以用于指示接收到该消息的节点变更所述报文流中报文的优先级。所述报文流由所述拥塞隔离消息中包括的描述信息或其它信息来指示。

描述信息是指可以用于确定报文流的信息或信息组合,通过该描述信息,节点可以确定唯一一个该描述信息对应的报文流。例如,所述报文流可以报文流的源ip、目的ip、协议号、源端口号、目的端口号所构成的五元组(5-tuple),或者也可以是三元组或其它类型的信息或信息组合,比如overlay网络,以vxlan为例,不同租户的报文流5元组可能相同,因此使用5元组不能唯一确定一条报文流,这种情况,需要将vni(vxlannetworkidentifier)也作为流的描述信息,即使用6元组来唯一确定一条报文流。对此本申请不做限定。

拥塞隔离消息目的mac地址为接收该拥塞隔离消的节点mac地址,源mac地址为发送该拥塞隔离消的节点的mac地址,拥塞隔离消息的以太类型可以为用于指示该报文为拥塞隔离消息的预定义类型,例如0x8809。所述流的描述信息可以包含在所述拥塞隔离消息ip头和传输层头部。为了简化处理逻辑,所述拥塞隔离消息的ip头部和传输层头部可以为标准格式,即与所述报文流中报文的格式相同。在构造拥塞隔离消息,可以拷贝所述报文流中报文的ip头和传输层头部,封装以太头,并填充到以太最小报文长度64字节即可。例如,拥塞隔离消息的格式可以如图3所示。需要说明的是,所述拥塞隔离消息也可以是其它格式或具有其它构造方式,当本申请用于其他非以太网络如infiniband网络时,消息为自定义的infiniband协议类型的消息,只要包括报文流的描述信息即可,对此本申请也不做限定。例如,所述塞隔离消息的格式也可以如图4所示。

在本申请各个实施例中,各个节点上可以设置专门用于记录拥塞流的拥塞流流表,通过拥塞流流表中的条目来记录引起拥塞状态变化的报文流。其中,引发拥塞状态变化的报文流可以包括但并不限于拥塞流。如果拥塞流流表中存在与某个报文流相对应的条目,则说明该报文流为引起拥塞状态变化的报文流;如果拥塞流流表中不存在与该报文流相对应的条目,则说明该报文流不为引起拥塞状态变化的报文流。所述条目中可以包含时间戳项,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

或者,各个节点也可以使用为已有流表中各个条目设置拥塞标记项来记录引起拥塞状态变化的报文流。拥塞标记项可以使用不同的内容记录其所属条目所对应的报文流是否为拥塞流,拥塞标记项的内容可以为第一标记或第二标记,所述第一标记用于表示其所属条目所对应的报文流为拥塞流,而所述第二标记则用于表示其所属条目所对应的报文流不为拥塞流。除所述拥塞标记项之外,所述流表中各个条目也可以设置有所述时间戳项。

在本申请各个实施例中,所述处理队列可以是发送队列、转发队列、缓存队列等不同类型的队列。同一队列中报文的优先级相同,不同队列中报文的优先级可以各不相同,或者也可以有若干个队列中的报文的优先级相同。例如,所述处理队列可以是用于缓存上游节点所发送报文的8个缓存队列中的任意一个,或者也可以是所述缓存队列中任意一个子队列。

下面结合附图,对本申请报文控制方法进行说明。

参见图5,为本申请报文控制方法一个实施例的流程示意图。该实施例所述方法可以由任一个节点执行。如图5所示,所述方法可以包括如下步骤:

步骤501,检测引起拥塞状态变化的报文流。

所述引起拥塞状态变化的报文流,既可以是指在引起本节点某个处理队列出现拥塞或可能拥塞的报文流,也可以是引起本节点的上游节点或下游节点等其它节点的某个处理队列出现拥塞或可能拥塞的报文流。根据出现拥塞或可能拥塞的节点不同,确定引起拥塞状态变化的报文流的具体方式各不相同。以确定本节点的拥塞流为例,可以采用单水线机制或双水线机制来确定报文流是否为拥塞流。

在采用单水线机制来确定拥塞流时,在某个报文流中的报文在加入某个处理队列后,如果会使得这个处理队列中排队等待处理的报文数量超过预设水线,那么可以确定该报文流即为拥塞流;反之则所述报文流就不为拥塞流。

在采用双水线机制来确定拥塞流时,某个报文流中的报文在加入某个处理队列后,如果会使得这个处理队列中排队等待处理的报文数量超过预设高水线,那么可以确定该报文流即为拥塞流;如果会使得这个处理队列中排队等待处理的报文数量超过预设低水线但不超过预设高水线,那么可以按照概率确定该报文流是否为拥塞流,所述概率可以为一个变量乘以一个预设值,其中,所述变量可以为当前排队数据量减去预设低水线,再除以预设高水线减去预设低水线得到的值;如果未使得这个处理队列中排队等待处理的报文数量超过预设低水线,那么所述报文流就不为拥塞流。

由于所述引起拥塞状态变化的报文流,既可以是指在引起本节点某个处理队列出现拥塞或可能拥塞的报文流,也可以是引起本节点的下游节点或下游节点的下游节点等其它节点的某个处理队列出现拥塞或可能拥塞的报文流。根据出现拥塞或可能拥塞的节点不同,确定引起拥塞状态变化的报文流的具体方式各不相同。例如,如果所述报文流引起所述本节点的下游节点的拥塞状态发生变化,那么所述下游节点可以向本节点发送拥塞隔离消息,而本节点则可以根据拥塞隔离消息中的描述信息确定所述报文流。类似方法在此就不再赘述。

步骤502,生成拥塞隔离消息。

检测到所述报文流后,本节点可以构造拥塞隔离消息,所述拥塞隔离消息用于变更所述报文流中报文的优先级。通常情况下,所述拥塞隔离消息用于指示所述接收到该消息的节点降低所述报文流中报文的调度优先级。所述拥塞隔离消息构造方式可以参见前述,在此就不在赘述。

步骤503,向至少一个节点发送所述拥塞隔离消息。

在所述拥塞隔离消息生成后,本节点可以向至少一个节点发送所述拥塞隔离消息。所述至少一个节点中可以包含向本节点发送所述报文流的上游节点。即,本节点可以向发送所述报文流的上游节点发送所述拥塞隔离消息。上游网络节点在接收到所述拥塞隔离消息之后,可以变更所述报文流的优先级,以实现拥塞流的隔离。

采用本实施例所提供的方法,本节点可以在拥塞状态变化时,识别出引起拥塞状态变化的报文流,并通知其它节点改变所述报文流中报文的优先级,而不影响其它报文流传输,从而既可以避免因拥塞而导致丢包,又能在很大程度上避免因未作拥塞隔离而引起的队头阻塞情况的出现,避免拥塞扩散。

为改变报文的调度优先级以避免阻塞情况的出现,本节点除了要发送拥塞隔离消息之外,还要在本节点隔离引起拥塞状态变化的报文流中报文,以避免本节点或下游节点变更前的优先级对应的队列继续拥塞。

本节点可以通过修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级,或者控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级来隔离引起拥塞状态变化的报文流中报文。其中,所述低优先级队列可以是预定优先级的队列,所述第一优先级队列可以本节点多个处理队列中优先级最低的一个或优先级最低的若干个队列中的某一个或某几个。修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级可以通过修改所述报文中的优先级字段的内容实现,或者也可以通过修改其他用于指示所述报文的优先级的信息实现。例如,可以将所述优先级字段的内容修改为相对于原内容所述指示的优先级更低的新内容。即,与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级。

其中,降低所述报文流中报文的调度优先级,可以只降低所述报文流中尚未加入处理队列的报文的优先级,也可以既降低所述报文流中尚未加入处理队列的报文,又降低所述报文流中已经加入处理队列但尚未被处理的报文的优先级。类似的,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级,可以只控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级,也可以既控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级,又将所述报文流中已经加入处理队列但尚未被处理的报文调度至所述低优先级队列。

以下对修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级的具体方式进行说明。在此需要说明的是,以下实施例仅仅是修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级的可选方式,并不表示对其他实现方式的限定。根据采用不同流表记录所述报文流的方式不同,本节点降低所述报文流中报文的调度优先级的具体实现方式也各不相同。

参见图6,为本申请报文控制方法另一个实施的流程示意图。如图6所示,在步骤501之后,即在检测到引起引起拥塞状态变化的报文流之后还可以包括:

步骤504,将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记。

为便于恢复所述数据流中报文的优先级,除将所述拥塞标记项的内容设置成第一标记之外,还可以将与所述报条目中的时间戳项的内容设置为最近一次接收到所述报文流中报文的时刻。

步骤505,接收第一报文。

所述第一报文可以是所述本节点的任意上游节点发送的报文。

步骤506,如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级。

在接收到所述第一报文之后,本节点可以确定所述第一报文所属的第一报文流;然后检测所述第一报文流是否为已经被记录为引起拥塞状态变化的报文流。如果所述第一报文流已经被记录为引起拥塞状态变化的报文流,则变更所述第一报文的调度优先级。具体来说,在本实施例中,如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则说明第一报文流为引起拥塞状态变化的报文流,因此需要变更所述第一报文的调度优先级。

本节点可以通过变更所述第一报文优先级,使所述第一报文的优先级与第二报文的优先级不同,从而在本节点实现拥塞流隔离。其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后接收到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前接收到的报文。在此需要说明的是,变更所述第一报文的调度优先级通常可以是降低所述第一报文的优先级。

变更所述第一报文的调度优先级的具体实现方式可以有多种。通常可以包括修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级;或者,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级。

例如,本节点可以在将所述第一报文加入处理队列之前,改变所述第一报文中用于指示所述第一报文优先级的内容,例如改变所述第一报文优先级字段中的内容,从而使第一报文根据所述指示信息所加入的处理队列与与第二报文所述加入的处理队列不同,实现所述第一报文的优先级的改变。或者,也可以本节点也可以直接控制所述第一报文加入与所述第二报文所加入队列优先级不同的队列,从而改变所述第一报文的优先级。

在此需要说明的是,在所述步骤502之后还可以包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内未接收到所述报文流的报文,则将标记项设成第二标记。

如果在自所述条目中的时间戳项所记录时刻起的预定时长内未接收到所述报文流的报文,说明所述报文流中的报文已经减少,所述报文流可以不再被认为是拥塞流。因此本节点可以将标记项设成第二标记,从而使可以后续再接收到所述报文流中报文的时候,从而可以恢复所述报文流中报文的优先级。其中,所述预定时长可以不长于清空所述流表的时长。

采用本实施例可以在本节点实现拥塞流隔离。

参见图7,为本申请报文控制方法另一个实施的流程示意图。如图7所示,在步骤501之后,即在检测到引起引起拥塞状态变化的报文流之后还可以包括:

步骤507,在拥塞流流表中添加与所述报文流对应的条目。

为便于恢复所述数据流中报文的优先级,除在拥塞流流表中添加所述条目之外,还可以将所述条目中的时间戳项的内容设置为最近一次接收到所述报文流中报文的时刻。

步骤508,接收第三报文。

所述第三报文可以是所述本节点的任意上游节点发送的报文。

步骤509,如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第三报文的调度优先级。

如果在所述拥塞流流表中存在与第二报文流对应的条目,则说明第二报文流为引起拥塞状态变化的报文流,因此需要变更所述第二报文的优先级。

本节点可以通过变更所述第三报文优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第四报文与所述第三报文均属于第二报文流,所述第三报文是指在拥塞流流表中添加与所述第二报文流对应的条目之后接收到的报文,所述第四报文是指在拥塞流流表中添加与所述第二报文流对应的条目之前接收到的报文。

变更所述第三报文的调度优先级的具体实现方式与改变所述第一报文的优先级的方式相类似,在此就不再赘述。

在此需要说明的是,在所述步骤507之后还可以包括:如果在自所述条目中的时间戳项所记录时刻起的预定时长内未获取到所述报文流的报文,则删除与所述报文流对应的条目。

如果在自所述条目中的时间戳项所记录时刻起的预定时长内未接收到所述报文流的报文,说明所述报文流中的报文已经减少,所述报文流可以不再被认为是拥塞流。因此可以删除拥塞流流表中与所述报文流对应的条目,从而恢复所述报文流中报文的优先级。

采用本实施例也可以在本节点实现拥塞流隔离。

为避免因为拥塞而导致丢包,除在本节点实现拥塞流隔离之外,还需要在上游节点也实现拥塞流隔离。

参见图8,为本申请报文控制方法另一个实施的流程示意图。该实施例所示的方法可以由上游网络节点执行

步骤801,接收拥塞隔离消息,所述拥塞隔离消息中包含描述信息。

上游节点可以接收前述实施例中,本节点发送的所述拥塞隔离消息。所述拥塞隔离消息的相关内容可以参见前述实施例,在此就不再赘述。

在接收到所述拥塞隔离消息后,所述上游节点还可以将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记,或者,在拥塞流流表中添加与所述报文流对应的条目。具体方式可以参见前述实施例,在此就不再赘述。

步骤802,变更所述描述信息所指示报文流中报文的优先级。

上游节点在接收到所述拥塞隔离消息后,可以首先根据所述描述信息确定所述描述信息所指示的报文流,然后变更所述描述信息所指示报文流中报文的优先级。由于所述报文流通常有拥塞流,因此变更所述描述信息所指示报文流中报文的优先级通常是降低所述报文流中报文的调度优先级。与本节点相类似,上游节点降低所述报文流中报文的调度优先级的方式也可以包括:修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级;或者,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级。根据所述报文流的记录方式不同,上游节点变更所述报文流中报文优先级的方式也各不相同。

上游节点可以在获取到一个报文后,检测该报文所属的报文流是否为已经被记录为引起拥塞状态变化的报文流。如果所述报文流已经被记录为引起拥塞状态变化的报文流,则变更所述报文的优先级。其中,所述报文可以是由其它节点发送给所述上游节点,也可以是所述上游节点自行生成。

在一种实现方式中中,上游节点可以首先获取第一报文;在获取到第一报文后,上游可以确定所述第一报文所属的第一报文流;如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级。变更第一报文优先级的具体实现方式可以参见前述,在此就不再赘述。

在另一种实现方式中,上游节点可以首先获取第三报文,在获取到第三报文后,上游可以确定所述第三报文所属的第三报文流;如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第二报文的优先级。变更第三报文优先级的具体实现方式也可以参见前述,在此就不再赘述。

由于所述描述信息所指示报文流中报文也有可能是其它节点发送给所述上游节点,因此,在接收到所述拥塞隔离消息后,如果所述上游节点检测所述所述描述信息所指示报文流中的报文,由其它节点发送给所述上游节点,那么所述上游节点还可以向该节点发送拥塞隔离消息,拥塞隔离消息的方式,及该节点接收到拥塞隔离消息后的处理方式可以参见前述,在此就不再赘述。

与前述实施例中所提供的方法相对应,本申请还提供了相应的网络设备。

参见图9,为本申请网络设备一个实施例的结构示意图。所述网络设备可以设置在前述实施例中所述的节点上,或者为所述节点本身。

如图9所示,所述网络设备可以包括:处理单元901,用于检测引起拥塞状态变化的报文流;生成拥塞隔离消息,所述拥塞隔离消息用于变更所述报文流中报文的优先级,所述拥塞隔离消息包括所述报文流的描述信息;发送单元902,向至少一个节点发送所述拥塞隔离消息。

可选的,所述发送单元902,具体用于向发送所述报文流的上游节点发送所述拥塞隔离消息,所述拥塞隔离消息具体用于指示所述节点降低所述报文流中报文的调度优先级。

可选的,所述拥塞隔离消息为以太类型是预定义类型的报文。

可选的,所述处理单元901,还用于降低所述报文流中报文的调度优先级。

可选的,所述处理设备,具体用于修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级;或者,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级。

可选的,所述处理单元901,还用于将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记,其中,拥塞标记项用于记录其所属条目所对应的报文流是否为拥塞流,所述第一标记用于表示其所属条目所对应的报文流为拥塞流。

可选的,所述处理单元901,还用于如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则将标记项设成第二标记,所述第二标记用于表示其所属条目所对应的报文流为非拥塞流,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

可选的,还包括接收单元,用于接收第一报文;所述处理单元901,还用于如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后接收到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前接收到的报文。

可选的,所述设备还包括:接收单元,用于接收第一报文;所述处理单元901,还用于如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后接收到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前接收到的报文。

可选的,所述处理单元901,还用于在拥塞流流表中添加与所述报文流对应的条目。

可选的,所述处理单元901,还用于如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则删除与所述报文流对应的条目,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

可选的,所述设备还包括:接收单元,用于接收第三报文;所述处理单元901,还用于如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第三报文的调度优先级,使所述第三报文与所述第四报文的优先级不同,其中,所述第四报文与所述第三报文均属于第二报文流,所述第三报文是指在拥塞流流表中添加与所述第二报文流对应的条目之后接收到的报文,所述第四报文是指在拥塞流流表中添加与所述第二报文流对应的条目之前接收到的报文。

参见图10,为本申请网络设备一个实施例的结构示意图。所述网络设备可以设置在前述实施例中所述的节点上,或者为所述节点本身。

如图10所示,所述网络设备可以包括:接收单元1001,用于接收拥塞隔离消息,所述拥塞隔离消息中包含描述信息;处理单元1002,用于变更所述描述信息所指示报文流中报文的优先级。

可选的,所述处理单元1002,还用于降低所述报文流中报文的调度优先级。

可选的,所述处理单元1002,还用于修改所述报文流中报文的优先级指示字段的内容,使得与修改后的内容相对应的调度优先级,低于与修改前的内容相对应的调度优先级;或者,控制所述报文流中报文进入低优先级处理队列,所述低优先级处理队列的调度优先级低于与所述报文流中报文的优先级指示字段的内容相对应的调度优先级。

可选的,所述处理单元1002,还用于将流表中与所述报文流对应的条目中的拥塞标记项的内容设置成第一标记,其中,拥塞标记项用于记录其所属条目所对应的报文流是否为拥塞流,所述第一标记用于表示其所属条目所对应的报文流为拥塞流。

可选的,所述处理单元1002,还用于如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则将标记项设成第二标记,所述第二标记用于表示其所属条目所对应的报文流为非拥塞流,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

可选的,所述设备还包括:接收单元1001,还用于获取第一报文;所述处理单元1002,还用于如果流表中与第一报文流相对应的条目中的拥塞标记项的内容为第一标记,则变更所述第一报文的调度优先级,使所述第一报文的优先级与第二报文的优先级不同,其中,所述第二报文与所述第一报文均属于第一报文流,所述第一报文是指在将拥塞标记项的内容设置成第一标记之后获取到的报文,所述第二报文是指在将拥塞标记项的内容设置成第一标记之前获取到的报文。

可选的,所述处理单元1002,还用于在拥塞流流表中添加与所述报文流对应的条目。

可选的,所述处理单元1002,还用于如果在自所述条目中的时间戳项所记录时刻起的预定时长内,未接收到所述报文流的报文,则删除与所述报文流对应的条目,所述时间戳项用于记录最后一次收到所述报文流中报文的时刻。

可选的,接收单元1001,还用于获取第三报文;所述处理单元1002,还用于如果在所述拥塞流流表中存在与第二报文流对应的条目,则变更所述第三报文的调度优先级,使所述第三报文与所述第四报文的优先级不同,其中,所述第四报文与所述第三报文均属于第二报文流,所述第三报文是指在拥塞流流表中添加与所述第二报文流对应的条目之后获取到的报文,所述第四报文是指在拥塞流流表中添加与所述第二报文流对应的条目之前获取到的报文。

参见图11,本申请网络设备又一个实施例的结构示意图。如图11所示,所述网络设备可以包括处理器1101,还可以包括存储器1102及通信模块1103。

所述处理器1101为设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器1102内的软件程序和/或模块,以及调用存储在存储器1102内的数据,以执行设备的各种功能和/或处理数据。所述处理器1101可以是中央处理器(centralprocessingunit,简称cpu),网络处理器(networkprocessor,简称np)或者cpu和np的组合。处理器1101还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,简称asic),可编程逻辑器件(programmablelogicdevice,简称pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,简称cpld),现场可编程逻辑门阵列(field-programmablegatearray,简称fpga),通用阵列逻辑(genericarraylogic,简称gal)或其任意组合。

所述存储器1102可以包括易失性存储器(volatilememory),例如随机存取内存(randomaccessmemory,简称ram);还可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,简称hdd)或固态硬盘(solid-statedrive,简称ssd);存储器还可以包括上述种类的存储器的组合。所述存储器1102中可以存储有指令、程序或代码,设备中的处理器1101通过执行所述程序或代码可以实现所述设备的功能。

所述通信模块1103可以用于实现所述设备与其他设备之间的通信。在本申请各个实施例中,所述通信模块1103可以是用于提供以太网端口,使所述设备可以通过以太网与其他设备通信的模块。例如,当所述设备为服务器时,所述通信模块1103可以是网卡。

其中,所述处理器1101可以用于检测引起拥塞状态变化的报文流;生成拥塞隔离消息,所述拥塞隔离消息用于变更所述报文流中报文的优先级,所述拥塞隔离消息包括所述报文流的描述信息;使所述拥塞隔离消息被发送给至少一个节点。或者,所述处理器1101,也可以用于根据接收到的拥塞隔离消息中包含描述信息;变更所述描述信息所指示报文流中报文的优先级。所述处理器1101所要实现的功能或所要执行的方法步骤具体可以参见前述实施例,在此就不再赘述。

在此需要说明的是,在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请前述实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线,例如同轴电缆、光纤、数字用户线(dsl),或无线,例如红外、无线、微波等方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带、光介质,例如,dvd、或者半导体介质,例如固态硬盘(solidstatedisk,ssd)等。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其对于涉及网络装置及设备的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

以上所述的本申请实施方式并不构成对本申请保护范围的限定。

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