网络拥塞管理的制作方法

文档序号:22627398发布日期:2020-10-23 19:36阅读:69来源:国知局
网络拥塞管理的制作方法



背景技术:

网络可能会因网络通信量而变得拥塞。网络拥塞的原因可能是由于任何数量的网络瓶颈。例如,网络通信量可以从任何数量的源节点指向目的地节点,并且到目的地节点的链路带宽可能是受到限制的并且被通信量所淹没。在另一示例中,目的地节点的处理速度可能是受到限制的,使得目的地节点无法比接收数据更快地处理数据。出于多种原因,例如缓存未命中、存储器组冲突等,目的地节点可能无法跟上目的地节点接收数据的步调。

附图说明

在下面的详细描述中并参考附图描述了某些示例,在附图中:

图1是具有受管理的网络拥塞的示例网络系统的框图。

图2是图示了具有拥塞管理器以增大和/或减小源节点的注入速率的示例源节点的框图。

图3是图示了用于管理源节点的注入速率的方法的流程图。

图4是图示了用于管理源节点的注入速率的另一方法的流程图。

图5是图示了用于管理网络节点注入速率的网络节点的框图。

图6是图示了用于管理网络结构拥塞的示例网络节点的框图。

图7是图示了用于管理网络结构拥塞的网络接口的示例的框图。

图8是图示了用于管理网络结构拥塞的网络接口的另一示例的框图。

具体实施方式

为了减少网络拥塞,可以为源节点、通信再分发点、和/或用于传输事务请求的通信端点分配拥塞速率。具体地说,可以为源节点分配一个速率,源节点可以以该速率将通信量注入到网络中。在特定目的地节点处发生拥塞的情况下,可以使向目的地节点发送通信量的源节点节流,使得该源节点的注入速率减小至较低速率。一旦缓解了拥塞,就可以增大源节点的注入速率。

可以实施任何数量的方法来检测网络拥塞。在示例实例中,可以在目的地节点、即接收网络通信量的节点处确定拥塞事件。拥塞事件可能因阈值网络延迟时间、在目的地节点在给定时间内超过了接收事务阈值数量的情况下、在目的地节点超过了目的地节点的待处理缓冲器内的接收事务阈值数量的情况下、其任何组合、和/或目的地节点处的任何其他网络拥塞指示符而发生。响应于识别到发生了拥塞事件,目的地节点可以用拥塞指示符来标记在目的地节点处接收到的事务。拥塞指示符可以伴随着来自目的地节点的事务响应,以向相应的源节点指示目的地节点经历了拥塞事件。

一旦缓解了网络拥塞,就可以增大由源节点传输到网络中的事务的注入速率。可以实施数种方法来确定网络拥塞缓解。如上所述,源节点可以从目的地节点接收事务响应。为了确定网络拥塞是何时被缓解的,源节点可以跟踪已完成的事务数量。源节点可以将在没有网络拥塞的情况下已完成的事务数量与未拥塞的序列阈值进行比较。

可以根据未拥塞的序列长度阈值来确定增大源节点的注入速率的时间。例如,在已完成的事务数量等于或大于未拥塞的序列阈值的情况下,可以增大源节点的注入速率。在一些实施方式中,未拥塞的序列长度阈值可以不是固定值。例如,可以响应于源节点注入速率的增大或减小来重新设置未拥塞的序列长度阈值。在一些示例中,未拥塞的序列长度阈值可以被设置为与已完成的事务计数相对应的值,如将在下面更详细地描述的那样。

图1是具有受管理的网络拥塞的示例网络系统结构100的框图。图1包括用于传输事务请求的示例源节点102-106。源节点102-106可以包括拥塞管理器112-116,其具有用于管理网络系统结构内的拥塞的拥塞管理逻辑。图1还包括示例目的地节点122-126,其用于从源节点102-106接收事务并将事务响应发送给源节点102-106。作为网络结构的一部分,图示了三个示例源节点102-106和三个示例目的地节点122-126。然而,单个节点可以既是源节点又是目的地节点,并且可以在网络结构内实施任何数量的源节点和/或目的地节点。

事务可以以诸如分组150之类的数据分组的形式从源节点102-106传输以及传输到源节点102-106。分组150可以包括拥塞指示符152。拥塞指示符152可以是要由结构的目的地节点或另一节点标记以指示拥塞的拥塞比特。例如,1比特拥塞指示符可以包括指示拥塞的值“1”和指示无拥塞的值“0”。当目的地节点拥塞的时间时,目的地节点可以例如从源节点接收事务。目的地节点可以将具有标记有值“1”的拥塞指示符的事务响应传输给源节点,以向源节点提醒拥塞的目的地节点。相反,目的地节点可以将具有标记有值“0”的拥塞指示符的事务响应传输给源节点,以向源节点提醒该目的地节点未拥塞。

如图所示,源节点102-106包括具有拥塞管理逻辑的拥塞管理器112-116。拥塞管理器112-116可以通过改变源节点的注入速率来动态地响应于在目的地节点122-126中的任何目的地节点处发生的拥塞。例如,拥塞管理器112可以增大或减小源节点102的注入速率,拥塞管理器114可以增大或减小源节点104的注入速率,和/或拥塞管理器114可以增大或减小源节点106的注入速率。

可以实施任何数量的方法来管控对源节点的注入速率的改变。源节点的注入速率可以增大和/或减小先前注入速率的百分比,并且可以按照控制注入速率是否线性地、指数地和/或按任何其他比率增大和/或减小的公式来增大和/或减小以优化网络响应时间,同时最小化网络拥塞。作为另一示例,可以根据源节点的一系列递增且离散的注入速率来增大和/或减小源节点的注入速率。

图2是图示了示例源节点202的框图200,示例源节点202具有拥塞管理器212,以根据一系列递增且离散的预定注入速率来增大和/或减小源节点202的注入速率。表250中列出了示例注入速率。具体而言,表250中列出了示例注入速率222-230。尽管图示了五个示例注入速率,但是可以在源节点内实施任何数量的离散注入速率。在此示例中,较高的注入速率对应于每秒传输较多数量的事务。例如,注入速率1222分别对应于每秒x个事务的未节流速率。未节流速率可以是可以从源节点传输事务的最高速率,并且在示例中,可以是没有人为约束的速率。相反,注入速率2-5224-230可以分别是节流速率,该节流速率人为约束源节点202可以将事务注入到网络中所根据的速率。例如,注入速率2224分别可以对应于每秒0.8x个事务的速率。拥塞管理器212可以确定源节点202的注入速率,并且可以根据示例表250来增大或减小源节点202的当前注入速率。

在一些示例实施方式中,源节点202的各离散节流注入速率之间的差可以按由源节点202传输到拥塞的目的地节点的通信量的比例来确定。根据由源节点传输到拥塞的目的地节点的通信量的比例确定的注入速率差使拥塞的目的地节点能够经历一致的拥塞缓解,而不管拥塞的目的地节点从其接收事务请求的源节点的数量如何,也不管每个源可能正在访问的其他目的地节点的数量如何。

考虑以下两个示例场景。在第一种场景中,源节点202可以是与图1的示例源节点106相似的网络结构的一部分,并且可以与单个目的地节点(诸如示例目的地节点126)进行通信。在该第一种场景中,示例源节点202可能贡献了目的地节点126所经历的100%的拥塞。源节点202的各注入速率之间的差可以对应于图2所示的注入速率。因此,在目的地节点126拥塞的情况下,拥塞管理器212可以例如使源节点202从以每秒0.8x个事务的速率的注入速率2节流为以每秒0.7x个事务的速率的注入速率3。

在第二示例场景中,源节点202可以是与图1的示例源节点102相似的网络结构的一部分,并且可以与多个目的地节点(诸如示例目的地节点122和示例拥塞目的地节点124)进行通信。在第二示例场景中,源节点202可能贡献了拥塞的目的地节点124处的约50%的带宽。因此,在该第二种场景中,拥塞管理器212可以使源节点202节流每秒0.8x个事务的速率的注入速率2和以每秒0.7x个事务的速率的注入速率3之差的某些百分比。因此,源节点202的各离散节流注入速率之间的差可以对应于源节点202相对于其他目的地节点传输到拥塞的目的地节点的通信量的比例。

图3是图示了用于管理源节点的注入速率的方法300的流程图。可以在下面参考系统100和系统200描述方法300的执行,并且可以例如分别由系统100和200的拥塞管理器112、114、116和/或212中的任何拥塞管理器来执行方法300。然而,可以利用用于执行方法300的其他合适的组件。另外,用于执行方法300的组件可以散布于多个设备之间。方法300可以以存储在机器可读存储介质上的可执行指令的形式和/或以电子电路(例如,硬件)的形式来实施。在一些示例中,方法300的步骤可以基本同时地执行或以与图3中所示的不同的顺序来执行。在一些示例中,方法300可以包括比图3中所示的更多或更少的步骤。在一些示例中,方法300的步骤中的一些可以在某些时间是进行中的和/或可以重复。

可以节流(即减小)源节点的注入速率,以缓解网络中的拥塞,但这可能导致较慢的事务完成时间。未拥塞的序列长度阈值可以是用于确定何时可以增大源节点的注入速率的值。在框302处,可以设置源节点的未拥塞的序列长度阈值。例如,拥塞管理器212可以为源节点202和/或为另一网络节点设置未拥塞的序列长度阈值。

还可以利用所接收完成事务(ctr)计数并将该ctr计数与未拥塞的序列长度阈值进行比较以确定何时可以增大源节点的注入速率。在框304处,可以将ctr计数设置为初始值,诸如值0、或者ctr计数可以被初始化为的任何其他值。在框306处,可以响应于事务请求完成来递增ctr。例如,在ctr计数在源节点处递增的情况下,可以响应于在源节点处从目的地节点接收到指示事务请求的完成的事务响应而递增ctr计数。

在框308处,可以确定是否检测到拥塞事件。如上所述,拥塞事件可能由于导致事务完成延迟和/或事务请求失败的各种原因而发生。拥塞事件可以指示跨网络结构的拥塞,并且在一些示例中,拥塞事件可以指示特定的目的地节点处的拥塞。响应于识别到发生了拥塞,目的地节点可以用拥塞指示符来标记在目的地节点处接收到的事务。拥塞指示符可以伴随着来自目的地节点的事务响应,以向相应的源节点指示目的地节点经历了拥塞事件。因此,可以在目的地节点和/或源节点处检测到拥塞事件。

可以利用其他方法来检测网络节点处的拥塞事件。在一些示例实施方式中,当源节点传输事务请求而未在指定时间段(诸如事务请求穿过(traverse)网络结构的指定时间段)内接收到事务响应时,可以检测到拥塞事件。在一些示例中,源节点可以在指定的时间段内未接收到事务响应之后重传事务请求。在该示例中,可以根据对特定事务请求的阈值数量的重传而未接收到事务响应来确定拥塞事件。

当检测到拥塞事件时,可以节流源节点。在框310处,可以响应于检测到的拥塞事件而减小源节点的注入速率。参考图2进行说明,拥塞管理器212可以检测拥塞事件,并且作为响应,根据示例表250中列出的离散注入速率、或者按照用于增大和/或减小源节点注入速率的任何其他公式来减小源节点202的注入速率。

在框312处,可以确定新的未拥塞的序列长度阈值值。如下面将描述的,未拥塞的序列长度阈值可以用于确定何时可以增大源节点的注入速率。可以根据当前ctr计数的函数来确定新的未拥塞的序列长度阈值值。例如,响应于检测到的拥塞事件,可以将新的未拥塞的序列长度阈值值设置为当前ctr计数、当前ctr计数的倍数或分数、和/或如根据该ctr计数确定的任何其他函数。

在另一示例中,可以根据当前ctr计数和先前的未拥塞的序列长度阈值的函数来确定新的未拥塞的序列长度阈值值。先前的未拥塞的序列长度阈值同样可以是先前的ctr计数和先前的未拥塞的序列长度阈值的函数。因此,可以根据当前ctr值以及先前的ctr值来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,新的未拥塞的序列长度阈值值可以是当前ctr值和先前ctr值的加权平均值或未加权平均值。在框312处确定了新的未拥塞的序列长度阈值值之后,可以返回到框302,此时可以设置新的未拥塞的序列长度阈值值。因此,可以基于已完成的事务请求的历史来动态地适配未拥塞的序列长度阈值。因此,当前和/或先前ctr值可以用于确定新的未拥塞的序列阈值值。

在框314处,可以确定ctr计数是否大于或等于未拥塞的序列长度阈值。在框314处的否定确定之后可以返回到框306。在框314处的肯定确定之后可以在框316处增大源节点注入速率。因此,可以递增ctr计数直到要么检测到拥塞事件要么如果在ctr计数大于或等于未拥塞的序列长度阈值之前未检测到拥塞事件则增大注入速率。因此,未拥塞的序列长度阈值可以用于确定何时可以增大源节点的注入速率。

图4是图示了用于管理源节点的注入速率的另一方法400的流程图。可以在下面参考系统100和系统200描述方法400的执行,并且可以例如分别由系统100和200的拥塞管理器112、114、116和/或212中的任何拥塞管理器来执行方法300。然而,可以利用用于执行方法400的其他合适的组件。另外,用于执行方法400的组件可以散布于多个设备之间。方法400可以以存储在机器可读存储介质上的可执行指令的形式和/或以电子电路(例如,硬件)的形式来实施。在一些示例中,方法400的步骤可以基本同时地执行或以与图4中所示的不同的顺序来执行。在一些示例中,方法400可以包括比图4中所示的更多或更少的步骤。在一些示例中,方法400的步骤中的一些可以在某些时间是进行中的和/或可以重复。

在框402处,可以设置源节点的未拥塞的序列长度阈值。例如,拥塞管理器212可以为源节点202和/或为另一网络节点设置未拥塞的序列长度阈值。在框404处,可以存储所接收完成事务(ctr)计数。

在将ctr计数设置为初始值之前,可能要经过一时间段以使源所传输的事务请求穿过该结构。在该时间段之后,在框414处减小注入速率的效果可以在跨网络结构实现。在一些示例中,事务请求穿过该结构的时间段是事务请求由源节点传输、在目的地节点处被接收、并且作为事务响应返回至源节点的充足的时间。在一些示例实施方式中,事务请求穿过结构的时间段等同于事务请求的生存时间。在另一示例中,该时间段可以对应于等同于源节点传输到拥塞的目的地节点的通信量的比例的数个事务穿过该结构的时间。例如,图1的源节点102可以将事务请求传输到未拥塞的目的地节点122和拥塞的目的地节点124。由于源节点102分别向两个目的地节点122和124传输通信量,因此该时间段可以对应于两个事务或两个事务的任何倍数的事务穿过该结构的时间。在该时间段之后,减小注入速率的效果可以跨网络结构实现。

一旦该时间段发生了(transpire),就可以在框408处将ctr计数设置为初始值,并且在框410处,可以响应于事务请求完成而递增ctr。在框412处,可以确定是否检测到拥塞事件。在检测到拥塞事件时,可以节流源节点。在框414处,可以响应于检测到的拥塞事件而减小源节点的注入速率。

在框416处,可以确定新的未拥塞的序列长度阈值。可以根据当前ctr计数的函数来确定新的未拥塞的序列长度阈值值,并且可以根据当前ctr计数的值、根据当前ctr计数的倍数或分数、和/或根据ctr计数的任何其他函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,可以根据当前ctr计数和所存储的ctr计数的函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,新的未拥塞的序列长度阈值值可以是当前ctr值和所存储的ctr值的加权平均值或未加权平均值。在框416处确定了新的未拥塞的序列长度阈值值之后,可以返回到框402,此时可以设置新的未拥塞的序列长度阈值值。因此,当前和/或先前ctr值可以用于确定新的未拥塞的序列阈值值。

在框418处,可以确定ctr计数是否大于或等于未拥塞的序列长度阈值。在框418处的否定确定之后可以返回到框410。在框418处的肯定确定之后可以在框420处增大源节点注入速率。因此,可以递增ctr计数,直到要么检测到拥塞事件要么如果在ctr计数大于或等于未拥塞的序列长度阈值之前未检测到拥塞事件则增大注入速率。

在框422处,可以在框420处增大注入速率时确定新的未拥塞的序列长度阈值值。可以根据当前ctr计数的函数来确定新的未拥塞的序列长度阈值值,并且可以根据当前ctr计数的值、根据当前ctr计数的倍数或分数、和/或根据ctr计数的任何其他函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,可以根据当前ctr计数和所存储的ctr计数的函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,可以根据当前ctr计数、先前的未拥塞的序列长度阈值、所存储的ctr计数、和/或其任何组合的函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,新的未拥塞的序列长度阈值值可以是当前ctr值和/或在先ctr值的加权平均值或未加权平均值。在一些示例实施方式中,响应于在框420处增大注入速率,未拥塞的序列长度阈值值可以保持不变。在框422处确定了新的未拥塞的序列长度阈值值之后,可以返回到框402,此时设置新的未拥塞的序列长度阈值值。

图5是图示了包括用于管理网络节点注入速率的拥塞管理器510的网络节点502的框图500。网络节点502可以被实施为硬件或者硬件和软件/固件的组合,并且可以与网络结构上的其他网络节点通信。类似地,拥塞管理器510可以被实施为硬件或者硬件和软件/固件的组合。例如,拥塞管理器510可以被实施为逻辑电路、执行存储在非暂时性机器可读介质中的机器可读指令的处理电路(诸如中央处理单元(cpu)、微处理器、微控制器装置、数字信号处理器(dsp)等)、专用集成电路(asic)、现场可编程门阵列(fpga)、专用指令集处理器(asip)等、上述物理结构的任何组合,这些物理结构中的一些可以共享。此外,拥塞管理器510的逻辑电路和/或处理电路可以被实施为单个组件或者在多个组件之间划分。

框512-528图示了要由拥塞管理器510执行的逻辑。尽管下面以特定顺序描述了框512-528,但是框512-528可以基本同时地执行或以与图5所示的不同的顺序来执行。在框512处,拥塞管理器510可以将未拥塞的序列长度阈值设置为第一值。例如,拥塞管理器510可以为网络节点502设置未拥塞的序列长度阈值。

在框514处,可以将所接收完成事务(ctr)计数设置为初始值,并且在框516处,可以响应于事务请求完成而递增ctr。可以确定是否检测到拥塞事件。在检测到拥塞事件时,可以节流源节点。在框518处,可以响应于检测到的拥塞事件而减小源节点的注入速率。

在框520处,可以响应于检测到的拥塞事件而确定新的未拥塞的序列长度阈值值。可以根据当前ctr计数的函数来确定新的未拥塞的序列长度阈值值,并且可以根据当前ctr计数的值、根据当前ctr计数的倍数或分数、和/或根据ctr计数的任何其他函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,可以根据当前ctr计数和所存储的ctr计数的函数来确定新的未拥塞的序列长度阈值值。在一些示例实施方式中,新的未拥塞的序列长度阈值值可以是当前ctr值和所存储的ctr值的加权平均值或未加权平均值。

一旦确定了新的未拥塞的序列长度阈值值,就可以将未拥塞的序列长度阈值设置为该新值。在框522处,设置新的未拥塞的序列长度阈值值。

在框524处,可以确定ctr计数大于或等于未拥塞的序列长度阈值。在框526处,可以响应于该确定而增大源节点502的注入速率。因此,可以根据事务完成历史来管理源节点的注入速率。

图6是图示了具有用于管理网络结构拥塞的拥塞管理器610的网络节点602的示例的框图600。网络节点602可以包括与图5的网络节点502类似的架构,包括具有框512-526的拥塞管理器510。如上文详述的框512-526图示了要由拥塞管理器510执行的逻辑。在该示例中,拥塞管理器510可以被包括在网络节点602的网络接口630中。网络接口630可以提供对网络的访问。例如,可以从网络接口630跨网络传输事务,并且可以由网络接口630的拥塞管理器510来控制将事务注入到网络中的速率。

网络节点602还可以包括计算机640,其具有耦合到网络接口630的处理器642和存储器644。例如,计算机640可以运行应用,并且网络接口630可以使该应用能够经由网络接口630访问网络。计算机640还可以包括耦合到网络接口620的媒体控制器646。具体而言,媒体控制器646可以经由网络接口630在网络上传送存储在存储器644中的数据。媒体控制器646可以包括硬件和/或硬件和/或软件的组合。媒体控制器646可以在网络上传送数据的速率可以由拥塞管理器510根据框512-526中描述的逻辑来管理。

图7是图示了网络接口730的示例的框图700。网络接口730可以包括与图6的网络接口630类似的架构,包括具有框512-526的拥塞管理器510。如上文详述的框512-526图示了要由拥塞管理器510执行以管理跨网络结构的拥塞的逻辑。

图8是图示了网络接口830的示例的框图800。网络接口830可以包括与图6的网络接口630类似的架构,包括具有框512-526的拥塞管理器510。如上文详述的框512-526图示了要由拥塞管理器510执行以管理跨网络结构的拥塞的逻辑。

网络接口830还可以包括用于传输事务请求和/或事务响应的发射器840以及用于接收事务请求和/或事务响应的接收器。发射器840和/或接收器850可以包括硬件或硬件和/或软件的组合。如上文并且关于框516描述的,可以响应于事务请求已完成而递增所接收完成事务(ctr)计数,在一些示例中,通过接收(即,在接收器850处)事务响应来确认事务请求已完成。此外,发射器840可以以由拥塞管理器510确定的注入速率来传输事务请求。因此,网络接口830可以传输和接收事务请求和/或事务响应,以及管理传输事务请求和/或事务请求的速率。

在前述描述中,阐述了众多细节以提供本文公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实践实施方式。其他实施方式可以包括从上文讨论的细节的修改和变型。意图在于,所附权利要求书涵盖这样的修改和变型。

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