用于智能多跳覆盖路由的方法与流程

文档序号:25494069发布日期:2021-06-15 22:01阅读:73来源:国知局
用于智能多跳覆盖路由的方法与流程



背景技术:

在广域网(sd-wan)中通过软件定义的联网连接的网络设备(或网络节点)常常无法识别用于将分组从一个网络节点路由到另一个网络节点的最优路径。通常,选择具有最短跳数的路线(route)(即,将遍历最少网络节点数量的路线)。然而,将遍历最少节点数量的路线常常不是具有最小时延或最大带宽的路线。例如,时延可以受到网络中某个时刻的停电或掉电的影响。在这样的情况下,基于最短跳数的路由效率非常低。



技术实现要素:

因而,需要一种基于网络的实际状况为分组选择优选(例如,最佳)路线的技术。在一些实施例中,路由系统可以尝试为每条可能路线保持时延和带宽的最新表。然而,始终探测所有路线是时间密集且需要计算的任务,在大型网络中执行该任务可能具有挑战性且耗时。在一些实施例中,仅所有路线的子集可以被探测。例如,每条路线可以具有相关联的权重值。可以周期性地选择所有路线的子集来主动被探测。可以随机化该选择,但是可以更频繁地选择具有较高权重值的路线。然后针对时延探测所选择的路线,并基于该探测的结果更新权重。在任何时间,当前已知具有最小延迟的路由被用于路由分组。这样,无需探测所有路线就可以识别出优选(例如,最佳)路线。

本文描述的主题包括用于为将要从网络中的第一网络节点被路由到第二网络节点的分组选择优化路由的方法、系统和计算机可读介质。在一些实施例中,每个网络节点可以维护从第一网络节点到第二网络节点的可能路线集。例如,每条路线可以定义将以多跳方式通过其它网络节点来路由分组的该其它网络节点的顺序。在一些实施例中,每条路线可以具有相关联的权重。例如,优选(例如,最佳)路线及其相关联的权重可以被存储为有序对。在一些实施例中,网络节点可以选择要被探测的路线的子集,并且在一些情况下,该子集可以包括随机选择的一些路线,但是其中该随机选择受到权重值的影响或偏向。在一些实施例中,子集可以比完整的路线集小得多。

然后可以主动探测子集中的每条路线的时延或带宽,并且可以基于被探测路线的确定的值来选择优选(例如,最佳)路线。然后可以基于时延值或带宽值来更新一些(或全部)权重。可以周期性地重复上面提到的步骤。在一些实施例中,每当节点接收到将分组路由到目的地节点的请求时,网络节点就可以经由当前被指定为优选(例如,最佳)路线的路线来路由该分组。因为这种技术不要求连续探测大量的路线(例如,所有路线),所以实现了显著的计算量和网络带宽的节省。特别地,上面提到的方法优于常规方法,因为优选(例如,最佳)路线的计算利用的花费比主动探测所有可能路线将涉及的花费少得多。

在一些实施例中,网络节点可以是路由器、交换机、服务器、虚拟路由器、能够执行联网功能的硬件和软件的任何其它组合,或其任何组合。在一些实施例中,网络节点经由点对点或多址网络链路连接。在一些实施例中,内置在网络节点中的控制电路系统(circuitry)可以执行处理所需的动作。

在一些实施例中,控制电路系统可以维护从第一网络节点到第二网络节点的可能路线集,其中每条可能路线具有相关联的权重值。例如,每条路线可以定义可以通过其它网络节点来路由分组的该其它网络节点的顺序,并且具有相关联的数字权重值。然后,控制电路系统可以从可能路线集中随机选择路线的子集,并且有时,该子集可以包括比整个集合少得多的路线。

在一些实施例中,随机选择可以受到每条可能路线的相应相关联的权重值的影响。例如,权重值为“10”的路线被选择的可能性是权重值为“5”的路线的两倍。在一些实施例中,路线的子集还可以包括从第一网络节点到第二网络节点的最后使用的路线以及从第一网络节点到第二网络的互联网协议(ip)路线(即,由ip路由算法选择的路线)。

在一些实施例中,控制电路系统(例如,第一网络节点的控制电路系统)可以探测路线的子集中的每条路线以确定对于每条被探测路线的增益值。例如,可以沿着该路线发送探测分组以收集增益计算所需要的数据。然后,控制电路系统可以将路线的子集中具有最高增益值的路线指定为优选(例如,最佳)路线。可以通过将增益值彼此比较来确定最高增益值。

在一些实施例中,控制电路系统可以基于相应经确定的增益值来更新与每条相应被探测路线相关联的每个权重值。

在一些实施例中,可以周期性地(例如,每小时)重复以下步骤:随机地选择路线的子集、探测子集中的每条路线、选择优选(例如,最佳)路线、以及更新权重值。

在任何时间,控制电路系统都可以在第一网络节点处接收将分组路由到第二网络节点的请求。例如,可以从另一个网络节点接收要被路由的分组,或者可以由在第一网络节点上执行的应用生成要被路由的分组。控制电路系统可以响应于接收到该请求,而沿着在给定时间被指定为优选(例如,最佳)路线的路线来路由该分组。

在一些实施例中,控制电路系统可以通过经由正在评估的被探测路线从第一网络节点向第二网络节点发送探测分组来确定对于路线的子集中的特定被探测路线的增益值。在沿着路线的每一跳之后,每个网络节点都可以将时间戳附加到探测分组。例如,时间戳可以包括节点的标识符以及在相应网络节点处接收到分组的时间。然后,控制电路系统可以基于每个附加的时间戳计算时延值。例如,可以对跳之间的时间求和以计算时延值。然后,控制电路系统可以基于时延值来确定对于特定被探测路线的增益值。例如,可以将增益值设置为等于时延值的倒数值。

在一些实施例中,控制电路系统可以探测路线的子集中的每条路线,以确定每条被探测路线的带宽值。在一些实施例中,这可以在探测每条路线的时延的同时或代替探测每条路线的时延来执行。在一些实施例中,控制电路系统可以将路线的子集中具有最高带宽值的路线指定为优选(例如,最佳)路线。

在一些实施例中,控制电路系统可以使用以下技术确定对于路线的子集中的特定被探测路线的带宽值。在一些实施例中,控制电路系统可以经由特定被探测路线从第一网络节点向第二网络节点背对背地发送两个分组。在一些实施例中,第二网络节点的控制电路系统可以通过测量在第二网络节点处接收第一分组和第二分组的速率来计算分散(dispersion)值。在一些实施例中,控制电路系统然后可以基于分散值来计算带宽值。例如,分组对序列(topp)技术可以被用于执行该计算。

在一些实施例中,控制电路系统可以通过修改分组以包括覆盖(overlay)路由报头来沿着优选路线路由分组。在一些实施例中,可以基于覆盖路由报头的数据由沿着路线的每个网络节点路由分组。在一些实施例中,控制电路系统可以填充覆盖路由报头以包括对于优选路线的每一跳的地址。在一些实施例中,沿着路线的每个网络节点将如覆盖路由报头所指定的那样将分组路由到下一个节点。

在一些实施例中,控制电路系统可以执行与网络节点相关联的权重的初始化。在一些实施例中,控制电路系统可以基于相应路线的长度来初始化对于每条可能路线的每个相关联的权重值。在一些实施例中,控制电路系统然后可以相对于彼此归一化所有权重。

在一些实施例中,控制电路系统可以通过将特定被探测路线的确定的增益除以与特定被探测路线相关联的权重值来计算比率从而更新与特定被探测路线相关联的权重值。然后,控制电路系统可以计算比率值的指数,并将计算出的指数设置为新的权重值。

附图说明

通过结合附图考虑以下详细描述,本公开的以上以及其它目的和优点将变得清楚,其中相同的附图标记始终指代相同的部分,并且其中:

图1描绘了图示根据本公开一些实施例的具有若干网络节点的示例性网络的框图;

图2描绘了图示根据本公开一些实施例的示例性网络节点的框图;

图3a描绘了根据本公开一些实施例的具有若干网络节点以及第一可用路线集的示例性网络的框图;

图3b描绘了根据本公开一些实施例的具有若干网络节点以及第二可用路线集的示例性网络的框图;

图4描绘了根据本公开一些实施例的用于沿着最优路线来路由分组的示例性处理的说明性流程图;

图5描绘了根据本公开一些实施例的用于探测路线的时延的示例性处理的说明性流程图;

图6描绘了根据本公开一些实施例的用于探测路线的带宽的示例性处理的说明性流程图;以及

图7描绘了根据本公开一些实施例的用于沿着最优路线路由分组的示例性处理的另一个说明性流程图。

具体实施方式

本文描述的系统和方法针对改进网络节点沿着优选(例如,最佳可能)路线路由分组的能力。如以上所说明的,网络节点始终主动探测到第二网络节点的所有可能路线既耗时又具有挑战性。代替地,提供了一种选择和探测仅路线的子集的智能迭代技术。在实践中,这样的技术很可能提供优选(例如,最佳可能)的路线,而探测路线所需的资源的消耗将大大减少。

网络的每个网络节点可以维护到所有其它网络节点的所有路线的列表。在一些实施例中,第一网络节点可以维护到第二网络节点的路线的列表。每条路线可以具有相关联的权重值。代替不断探测所有可能路线,第一网络节点可以仅探测基于路线的权重随机选择的较小的路线的子集。在探测每条路线之后,将具有最低时延(或最高带宽)的路线选择作为当前优选路线。可以通过将增益值彼此比较来确定最高增益值。在一些实施例中,可以代替地选择第二最高值。然后使用时延或带宽值更新权重。每当第一网络节点需要将分组路由到第二网络节点时,就使用当前的优选路线。

术语“随机选择”可以指使用任何种类的真正随机或伪随机技术从其它对象集中选择一个对象的任何种类的选择。在一些实施例中,除了随机或伪随机因素之外,随机选择技术还可能受到非随机因素的影响或加权。即,在一些实施例中,不是每个对象都将具有被随机技术选择的相等机会。例如,当从集合{a,b}中选择时,对象a可以以1/3的概率被选择,而对象b可以以2/3的概率被选择。

图1描绘了图示根据本公开一些实施例的具有若干个网络节点的示例性网络100的框图。在一些实施例中,网络100可以包括通过链路e1-e8连接的网络节点102、104、106、108和110。在一些实施例中,每个网络节点可以包括用于数据处理的控制电路系统、用于存储数据的存储电路系统以及至少适于路由分组的通信电路系统。在一些实施例中,链路e1-e8可以是硬件网络链路或在任何种类的硬件上实现的抽象网络链路。在一些实施例中,链路e1-e8中的任何一个可以是有线链路、无线链路、公共互联网上的虚拟链路或其任何组合。

在一些实施例中,网络100可以是在公共网络(例如,互联网)上面操作的软件定义的广域网(sd-wan)。网络100的一些链路可以是点对点链路。例如,节点102可以经由单个点对点链路e1连接到节点104。在另一个示例中,节点102可以经由点对多点链路e6连接到节点104和110。

网络节点102-100中的每个网络节点可以运行应用集。在一些实施例中,每个应用可以由需求向量来表征,该需求向量指示网络路径为了有效而必须遵守的最小可接受性能水平。例如,网络节点102可以包括应用集a。在该示例中,应用集a可以包括具有以下要求的应用a1:时延<10,分组丢失<0.1,并且带宽=30。

在一些实施例中,每个链路e1-e8可以携带性能向量,该性能向量可以定义与应用集a中的应用相关的特征(例如,时延、分组丢失、带宽)。

每当网络节点102-110中的任何一个网络节点需要将分组路由到任何其它网络节点时,它将不得不选择可能路线。在一些实施例中,路线选择将是生成分组的应用a的约束特征。例如,一些分组将需要以某个时延约束或带宽约束进行路由。上述和下述实施例提供了用于这样的路线选择的改进技术。

图2描绘了根据本公开一些实施例的图示示例性网络节点250的框图。在一些实施例中,网络节点250可以与网络节点102、104、106、108和110中的任何一个网络节点对应。

在一些实施例中,网络节点250可以是路由器、集线器(hub)、交换机、服务器、能够接收或发送网络分组的任何其它设备,或其任何组合。在一些实施例中,网络节点250可以包括通信电路系统252、存储电路系统254和控制电路系统256。在一些实施例中,通信电路系统252可以是任何已知的接收器、发送器、收发器或任何其它已知的发送和/或接收数据(例如,数据分组)的装置。在一些实施例中,通信电路系统252可以能够通过ip网络、wan网络、虚拟网络、sd-wan网络、任何其它数字或模拟网络或其任何组合来传送数据。存储电路系统254可以是能够存储数据的任何计算机可读介质。这样的计算机可读介质可以是暂态的,包括但不限于传播电信号或电磁信号,或者可以是非暂态的,包括但不限于易失性和非易失性计算机存储器或存储设备,诸如硬盘、软盘、usb驱动器、dvd、cd、介质卡、寄存器存储器、处理器高速缓存、随机存取存储器(“ram”)等。控制电路系统256可以基于任何合适的处理电路系统(诸如一个或多个微处理器、微控制器、数字信号处理器、可编程逻辑设备、现场可编程门阵列(fpga)、专用集成电路(asic)等),并且可以包括多核处理器(例如,双核、四核、六核或任何合适数量的核)或超级计算机。

图3a描绘了根据本公开一些实施例的具有若干网络节点以及第一可用路线集的示例性网络300的框图。在一些实施例中,网络300可以包括网络节点310、320和330。在一些实施例中,网络节点310、320和330中的任何一个网络节点可以与图1的节点102-110之一对应。在一些实施例中,网络节点310、320和330中的任何一个网络节点可以被实现为图2的网络节点250。

在一些实施例中,网络300可以包括由任何数量(例如,四个)的互联网服务提供商(isp)312、314、325和326提供的子网。例如,网络节点310可以能够经由第一isp312的子网和第二isp314的子网进行通信。在所描绘的示例中,网络节点320可以能够经由第二isp322的子网、第三isp325的子网和第四isp326的子网进行通信。另外,在所描绘的示例中,网络节点330可以能够经由第二isp332的子网和第四isp334的子网进行通信。

在一些实施例中,每个网络节点310、320、330可以包括用于数据处理的控制电路系统(例如,控制电路系统256)、用于存储数据的存储电路系统(例如,存储电路系统256)和至少适于路由分组的通信电路系统(例如,通信电路系统252)。在一些实施例中,四个isp子网中的每个可以具有对于全球互联网的对等和过渡的混合。在一些实施例中,四个isp子网中的每个可以包括任何种类的通信链路(例如,图1的链路e1-e8)。

在一些实施例中,网络节点310、320和330中的每个都可以能够创建大量的虚拟专用联网(vpn)连接用于连接到任何其它网络节点。

在一些实施例中,如果理想状况占优势,那么网络节点之间的流量可以遵循网络节点与isp之间具有最小跳数的路线(即,具有最小中间媒介数的路线)。例如,从网络节点310路由到网络节点320的所有分组可以经由第二isp314的子网被路由。例如,每个分组可以从网络节点310经由连接314行进到连接322并最后到达节点320。在一些实施例中,每个isp312、314、325和326一般将保持其子网内的两个客户之间的分组流量,并且将不会通过全球互联网对其进行路由。

图3b描绘了根据本公开一些实施例的具有若干网络节点以及第二可用路线集的示例性网络300的框图。在一些实施例中,网络300与图3a中描绘的网络相同,但处于停电或掉电(brownout)的影响下。

在一些实施例中,网络节点310可以已经经历了连接314的丢失。换言之,网络节点310可能无法访问第二isp的子网。例如,网络节点310和连接312之间的路线可能是非操作的或变慢的。在另一个示例中,连接312和连接322之间的路线可能是非操作的或变慢的。

在一些实施例中,可以以不同方式将来自网络节点312的分组路由到网络节点320。例如,可以将分组从网络节点320经由连接312路由到连接332、再到网络节点330、再到连接334、再到连接326,最后到节点320。

因而,由于这样的停电或掉电的可能性,通过网络300的任何路线都可以具有随时间变化的特征(例如,带宽、时延和分组丢失)。

在一些实施例中,网络300可以使用边界网关协议(bgp)路由来为分组选择从网络节点310、320和330中的任何一个到任何其它网络节点的路线。然而,常规bgp优选路径选择准则不涉及性能指标。代替地,bgp路由算法选择依据跨过的自治系统(例如,网络节点和isp)的数量表达的最短路径。然而,如以上所说明的,这样的指标是对于实际时延或带宽的次优代理。

在一些实施例中,网络300可以包括路由覆盖,该路由覆盖可以通过从底层ip路由解耦的多条路线在网络节点310、320和330之间路由分组。该覆盖可以通过在基于不同指标集计算的路径上转发特定应用的分组流量来做出特定于应用的路由决策。例如,一些分组可以在具有最佳增益(即,最低时延)的路线上被路由,而一些分组可以在具有最佳带宽的路线上被路由。

在一些实施例中,可以使用以下描述的技术来执行覆盖路由。例如,在一些情况下,网络节点310可能需要沿着具有最小时延或最大带宽的路线(例如,如由生成该分组的应用所指定的那样)来路由分组到网络节点320。在一些实施例中,网络节点320可以利用以下描述的技术来完成优选路线的选择。

在一些实施例中,网络节点310的控制电路系统可以维护到网络节点320的路线集。在一些实施例中,与路线集相关的数据可以被存储在网络节点310的存储电路系统上。

在一些实施例中,路线集可以表示为集合i{i1…ix},其中每个i∈i是特定路线。例如,路线i1可以是从网络节点310经由连接314到连接322并且最后到网络节点320的路线。在另一个示例中,路线i2可以是从网络节点320经由连接312到连接332、到网络节点330、到连接334、到连接326并且最后到网络节点220的路线。

在一些实施例中,在第一时间,每个i∈i可以具有相关联的权重值{w1…wn}。在一些实施例中,路线和相关联的权重可以被存储为定义每条路线和每个权重的表。例如,路线和权重可以被存储为以下描绘的示例性表1。

表1

在一些实施例中,控制电路系统可以使用以下公式:来初始化每个权重值w{w1…wn}。其中len(i)是路线i中的跳数。

在一些实施例中,控制电路系统然后可以归一化权重值。例如,可以使用以下公式:来归一化权重。换言之,每个权重可以除以所有权重之和。

在一些实施例中,在第一时间,控制电路系统然后可以选择子集i1{i1…in},其中n<x。即,为子集选择小于整个集合的路线数量。在一些实施例中,子集可以包括从网络节点310到网络节点320的最后使用的路线。在一些实施例中,子集可以包括从网络节点310到网络节点320的ip路线(即,通过ip路由算法选择的路线)。在一些实施例中,可以从集合i中随机选择对于子集i1的其余路线。在一些实施例中,随机选择可以受到来自集合w的相应权重的偏向或影响。例如,具有相关联的权重值w5=10的路线i5被选择的可能性可能是具有相关联的权重值w*=5的路线i*的两倍。

在一些实施例中,控制电路系统然后可以探测子集i1中的每条路线。例如,可以沿着子集i1中的每条路线发送一个或多个测试分组,以确定对于每个i∈i1的时延。例如,可以计算集合λ{λ1….λn},其中λ1表示路线i1的时延值,λ2表示路线子集i2的时延值,等等。

在一些实施例中,可以通过取集合λ的每个值的倒数来使用集合λ计算值集g{g1…gn}。例如,等等。在一些实施例中,具有最高增益值的路线然后可以被控制电路系统选择为优选路线。在一些实施例中,具有第二高或第三高增益值的路线然后可以被控制电路系统选择为优选路线。

在一些实施例中,控制电路系统可以更新子集i1中的路线的权重。例如,路线i1的权重w1可以如下设置,在一些实施例中,在第二时间(例如,从第一时间起已经经过了十分钟之后),可以重复上述步骤。例如,控制电路系统可以在第二时间基于经更新的权重来选择路线的新子集i2,并重复探测步骤、增益计算步骤、优选路线确定步骤和权重值更新步骤。

以这种方式,每当需要将分组从网络节点310路由到网络节点320时,就可以使用当前被指定为优选的路线。

在一些实施例中,网络节点310、320、330中的每个可以独立地起作用以使用上述技术为所有被路由的分组找到优选路线。例如,每个网络节点310、320、330可以维护网络300中所有节点的列表(例如,每个网络节点可以由32位id识别)以及网络300中的所有其它网络节点的ipv4/ipv6端点地址的表。

在一些实施例中,网络节点310的控制电路系统可以拦截其路由的每个分组并将该分组封装到特定消息格式中。在一些实施例中,控制电路系统可以添加如下所述的可变长度覆盖路由报头。

在一些实施例中,就在封装安全有效载荷(esp)报头之后并且在封装的原始互联网协议(ip)报头之前,在分组的协议栈的经认证和经加密的区段内添加覆盖路由报头。封装的分组可以包括4位字段“分组类型”,其将当前分组的类型定义为承载有效载荷的分组。

在一些实施例中,每个封装的数据分组可以包括作为覆盖路由报头的部分的附加字段,包括:

(1)4位字段,具有当前路线中的跳数。例如,在直接路径的情况下,该字段可以具有值“1”。

(2)指向下一跳的id的4位指针。该字段中的值可以从“1”开始,并且可以在每一跳处递增。

(3)32位的每分组序列号。

(4)针对所有中间跳和针对目的地的32位节点id的列表。

在一些实施例中,覆盖路由报头因此可以通过列出跳数、当前跳以及在每一跳处该分组应该被路由到的网络节点的地址,来描述用于将分组从网络节点310路由到网络节点320的确切路线。

在一些实施例中,路径的时延的探测可以通过探测分组的发送来完成。例如,控制电路系统可以经由路线i1发送探测分组以测量该路线的时延值。在一些实施例中,探测分组可以包括4位字段“分组类型”,其定义用作探测分组以测量路线时延的当前分组的类型。

在一些实施例中,探测分组可以包括沿着路线(例如,沿着路线i1)的对于每个网络节点的节点id。在一些实施例中,每当每个网络节点接收到该探测分组时,该网络节点的控制电路系统可以将当前时间戳添加到该探测分组。在一些实施例中,将在前向路径(例如,从网络节点310到网络节点320)和返回路径(例如,从网络节点320返回到网络节点310)二者期间添加时间戳。在一些实施例中,然后可以基于时间戳来确定每个片段的时延。在一些实施例中,控制电路系统可以发送连续的探测分组的小序列,以便估计平均时延并确定抖动(即,时延标准偏差)和分组丢失率。在一些实施例中,在硬编码的超时之前未返回的探测分组被认为丢失。

在一些实施例中,每个探测分组可以包括以下字段:

(1)跳数,其定义路线中的网络节点(源网络节点除外)数。在直接路线的情况下,该字段具有值“1”。

(2)下一跳指针,指向分组应该被转发到的下一个网络节点id的id。该字段可以从“1”开始并且在每一跳处递增。

(3)方向字段,其对于前向路径可以为“0”,并且对于返回路径可以为“1”。

(4)序列号字段,其对于当前探测可以是32位增量计数器。

(5)充当到目的地网络节点的中间跳的网络节点的id的列表。

(6)32位时间戳(例如,以毫秒为单位的unix时间戳)的列表,其由沿着路线的每一跳处的每个网络节点来记录。该列表最初可以用零填充。

(7)探测分组可以包括附加到分组的填充(padding),以便将所有探测分组填充到恒定大小。这可以是需要的,因为否则具有较少中间跳数的路径可能导致较小的探测分组,从而可能影响测量。

在一些实施例中,控制电路系统还可以测量对于子集i1中每条路线的带宽值。在一些实施例中,可以通过以背对背的方式(例如,从网络节点310到网络节点320)发送两个分组来测量路径i1的带宽。两个分组所经历的分散可以被用于测量带宽。

在一些实施例中,带宽是使用分组对序列(topp)算法来测量的。例如,控制电路系统可以从源(例如,网络节点310)到宿(例如,网络节点320)以逐渐增加的速率发送许多分组对。在一些实施例中,以初始分散δs从源发送分组对。在一些实施例中,探测分组可以具有l个字节的大小,并且因此分组对的提供速率可以是在一些实施例中,如果r0大于端到端可用带宽a,那么第二探测分组将被排队在第一探测分组之后,并且在接收器处测量出的速率将为在一些实施例中,如果r0>a,那么控制电路系统可以假设分组对将以与发送器处相同的速率(即,rm=r0)到达接收器。在一些实施例中,控制电路系统可以将可用带宽a估计为最大提供速率,使得r0近似等于rm。

图4描绘了根据本公开一些实施例的用于沿着最优路线路由分组的说明性处理400。在一些实施例中,处理400可以由网络100或网络300的至少一个节点来执行。例如,在说明示例中,处理400可以由第一网络节点(例如,网络节点310)的控制电路系统256来执行,以识别到第二网络节点(例如,网络节点320)的优选路线。在一些实施例中,处理400可以由第一网络节点的控制电路系统(例如,控制电路系统256)来执行。在一些实施例中,一些步骤可以由其它网络节点的控制电路系统来执行。

处理400在402处开始,在该处,控制电路系统256维护从第一网络节点到第二网络节点的可能路线集,其中每条可能路线具有相关联的权重值。例如,每条路线的描述可以被存储在第一网络节点的存储器(例如,存储电路系统254)中。在一些实施例中,每条路线可以定义可以沿着其它网络节点路由分组的该其它网络节点的顺序。在一些实施例中,每条路线可以包括相关联的权重值。在一些实施例中,权重值可以被存储在第一网络节点的存储器中(例如,存储电路系统254上)。

在一些实施例中,控制电路系统256可以基于相应路线的长度来初始化对于每条可能路线的每个相关联的权重值。例如,对于每条路线的初始权重值可以被设置为路线的长度的指数的倒数。在一些实施例中,权重也可以相对于彼此归一化。例如,可以通过将该权重除以所有权重之和来调整每个权重。

处理400在404处继续,在该处,控制电路系统256可以从可能路线集中选择路线的子集。在一些实施例中,可以以随机化方式为子集选择至少一些路线。在一些实施例中,随机化处理可能受到每条可能路线的相应相关联的权重值的影响。例如,具有较高权重值的路线可以比具有较低权重值的路线更可能被选择。例如,权重值为“4”的路线被选择的可能性可以比权重值为“12”的路线少三倍。在一些实施例中,可以使用基于权重的任何其它加权或偏向。

在一些实施例中,子集还可以包括从第一网络节点到第二网络节点的最后使用的路线。例如,控制电路系统256可以存储关于最后使用了哪条路线的指示,并将该路线包括到子集中。在一些实施例中,子集还可以包括从第一网络节点到第二网络节点的ip路线。例如,控制电路系统256可以使用常规ip路由算法来识别ip路线,并将该路线包括到子集中。

处理400在406处继续,在该处,控制电路系统256可以探测路线的子集中的每条路线以确定对于每条被探测路线的增益值。在一些实施例中,控制电路系统256可以主动探测路线的子集中的每条路线。例如,控制电路系统256可以将探测分组发送到第二网络节点以测量路线的时延。在一些实施例中,可以将相应增益值计算为每个相应时延值的倒数。

在一些实施例中,在406处,除了探测子集中的每条路线以确定增益值之外或代替探测子集中的每条路线以确定增益值,控制电路系统256还可以探测子集中的每条路线以确定带宽值。

处理400在408处继续,在该处,控制电路系统256可以将路线的子集中具有最高增益值的路线指定为优选路线。例如,控制电路系统256可以(例如,在存储电路系统256中)存储始终指示当前哪条路线被指定为从第一网络节点到第二网络节点的优选路线的指示。在一些实施例中,控制电路系统256可以将路线的子集中具有最高带宽值的路线指定为优选路线。

处理400在410处继续,在该处,控制电路系统256可以基于相应经确定的增益值来更新与每条相应被探测路线相关联的每个权重值。例如,可以如下计算对于特定路线的新的权重值。控制电路系统256可以通过将特定被探测路线的确定的增益除以与特定被探测路线相关联的当前权重值来计算比率值。然后,控制电路系统256可以计算该比率值的自然指数,然后将该自然指数值乘以当前值以确定经更新的权重值。在一些实施例中,控制电路系统256可以基于带宽值而不是增益值来更新权重。

在一些实施例中,控制电路系统256可以周期性地重复步骤404-410中的一些或全部。例如,可以每10分钟、每小时或以任何其它速率重复步骤404-410。

在一些实施例中,当控制电路系统256接收到将分组路由到第二网络节点的请求时,可以在任何给定时间(例如,在步骤404-410之间或之后的任何点)执行步骤412-414。

在412处,控制电路系统256可以确定接收到将分组路由到第二网络节点的请求。在一些实施例中,可以从另一个节点接收该请求。在一些实施例中,该请求可以由在控制电路系统256上执行的应用生成。在一些实施例中,如果接收到该请求,那么处理400可以在步骤414处继续,否则处理400可以返回到步骤404并通过步骤404-410继续循环。

在414处,响应于接收到该请求,控制电路系统256可以沿着在给定时间被指定为优选路线的路线路由分组。例如,控制电路系统256可以检查当前将哪条路线指示为优选路线,并且沿着该路线路由分组。

图5描绘了根据本公开一些实施例的用于探测路线的时延的说明性处理500。在一些实施例中,处理500可以由网络100或网络300的至少一个节点执行。例如,在说明示例中,处理500可以由节点310、320和330的控制电路系统执行。在一些实施例中,处理500可以作为步骤406的部分被执行。

处理500在502处开始,在该处,至少一个控制电路系统(例如,控制电路系统256)经由特定被探测路线从第一网络节点向第二网络节点发送探测分组。探测分组可以具有以上针对图3a和3b描述的内容。

处理500在504处继续,在该处,至少一个控制电路系统可以在沿着路线的每一跳处将时间戳附加到探测分组。例如,每当网络节点接收到探测分组时,该网络节点的控制电路系统可以将指示当前时间的时间戳附加到探测分组。在一些实施例中,该控制电路系统还可以将其自身标识符添加到分组。

处理500在506处继续,在该处,至少一个控制电路系统(例如,控制电路系统256)可以基于计算出的时延值来确定对于特定被探测路线的增益值。在一些实施例中,时延值可以由至少一个控制电路系统(例如,控制电路系统256)基于每个附加的时间戳来计算。例如,当探测分组返回到始发节点时,至少一个控制电路系统可以对时间戳之间经过的时间段求和。在一些实施例中,至少一个控制电路系统然后可以计算时延值的倒数以获取增益值。

图6描绘了根据本公开一些实施例的用于探测路线的带宽的说明性处理600。在一些实施例中,处理600可以由网络100或网络300的至少一个节点执行。例如,在说明示例中,处理600可以由节点310、320和330的控制电路系统执行。在一些实施例中,处理600可以作为步骤406的部分被执行。

处理600在602处开始,在该处,至少一个控制电路系统(例如,控制电路系统256)经由特定被探测路线从第一网络节点向第二网络节点背对背地发送两个分组。例如,可以根据以上针对图3a和3b描述的topp拓扑来发送分组。

过程600在604处继续,在该处,至少一个控制电路系统(例如,控制电路系统256)可以通过测量在第二网络节点处接收第一分组和第二分组的速率来计算分散值。例如,每次接收到分组时,至少一个控制电路系统可以生成时间戳,并基于该时间戳计算速率。

处理600在606处继续,在该处,至少一个控制电路系统(例如,控制电路系统256)可以基于分散值来计算带宽值。例如,可以根据以上针对图3a和3b描述的topp算法基于两个分组的接收之间的时间差来计算带宽值。

图7描绘了根据本公开一些实施例的用于沿着最优路线路由分组的另一个说明性处理700。在一些实施例中,处理700可以由网络100或网络300的至少一个节点执行。例如,在说明示例中,处理700可以由节点310、320和330的控制电路系统执行。在一些实施例中,处理700可以作为步骤414的部分被执行,以沿着从第一网络节点到第二网络节点的优选路线路由分组。

处理700在702处开始,在该处,至少一个控制电路系统(例如,控制电路系统256)修改分组以包括覆盖路由报头。在一些实施例中,覆盖路由报头可以具有以上针对图3a和3b描述的数据。在一些实施例中,覆盖路由报头可以指定在每一跳处应该将分组路由到的网络节点的顺序。

处理700在702处继续,在该处,至少一个控制电路系统(例如,控制电路系统256)填充覆盖路由报头以包括对于优选路线的每一跳的地址。例如,填充的覆盖路由报头可以通过列出网络节点330的地址来指定第一跳,并且通过列出网络节点320的地址来指定第二跳。在该示例中,将分组从网络节点310路由到作为第一跳的网络节点330,并且被路由到作为第二跳的网络节点320。

处理700在704处继续,在该处,若干网络节点(例如,网络节点310、320、330)的若干控制电路系统将分组路由到覆盖路由报头所识别出的每个地址。例如,网络节点310的控制电路系统可以如由覆盖路由报头指定的第一跳所指示的那样将分组路由到网络节点330。然后,网络节点330的控制电路系统可以如由覆盖路由报头指定的第二跳所指示的那样将分组路由到网络节点320。

出于说明而非限制的目的给出本公开的上述实施例。此外,本公开不限于特定的实施方式。例如,上述方法的一个或多个步骤可以以不同的顺序(或并发地)执行并且仍然实现期望的结果。此外,本公开可以以硬件来(诸如在专用集成电路(asic)上或现场可编程门阵列(fpga)上)实现。本公开还可以以软件来实现,例如通过在一个或多个暂态或非暂态计算机可读介质中对用于执行以上讨论的过程的暂态或非暂态指令进行编码。

尽管本公开的一些部分可以引用“常规”或“相关技术”,但是任何这样的引用仅出于提供本公开的(一个或多个)发明的上下文的目的,而不形成关于构成现有技术状态的明示或暗示的任何承认。如本文所提到的,术语“响应于……”是指作为……的结果而发起。例如,响应于第二动作而执行的第一动作可以包括在第一动作和第二动作之间的间隙步骤。如本文所提到的,术语“直接响应于……”是指由……引起。例如,直接响应于第二动作而执行的第一动作可以不包括在第一动作和第二动作之间的间隙步骤。

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