用于检测网络邻居可达性的系统和方法与流程

文档序号:12375975阅读:330来源:国知局
用于检测网络邻居可达性的系统和方法与流程

本申请通过引用而结合在美国专利商标局与信息公开声明同时提交的以下文献:

“Neighbor Unreachability Detection is Too Impatient,”by Igor Gashinsky,在https://wiki.tools.ietf.org/html/draft-ietf-6man-impatient-nud-06可获得(最后访问于2015年5月22日).

“Neighbor Discovery for IP version 6(IPv6)”by Thomas Narten,Erik Nordmark,William Allen Simpson,and Hesham Soliman,在https://wiki.tools.ietf.org/html/rfc4861可获得(最后访问于2015年5月22日).

技术领域

本申请的各实施例涉及用于检测网络邻居可达性的系统和方法。



背景技术:

网络计算环境根据一个或者多个联网协议操作,该一个或者多个联网协议可以提供用于对应网络上的流量的规则和规章。例如,一个常见联网协议是与先前网际协议版本四的更新的版本对应的网际协议版本六。网际协议版本六包括补充规则和协议,比如邻居发现协议(“NDP”)。NDP规定用于IPv6的若干功能,包括对节点的地址自动配置、对链路上的其它节点的发现和对其它节点的链路层地址的确定。NDP也包括邻居不可达性检测(“NUD”)协议,该NUD协议与IPv4比较改进分组递送在存在出故障的路由器或者链路时的健壮性。

NUD协议将网络节点归类为用于指示节点是否被另一节点可达的一个或者多个状态。为了确定节点是否可达,其它节点可以传输被称为邻居征求(neighbor solicitation)的专门化的消息。作为响应,其它节点可以通过传输被称为邻居通报(neighbor advertisement)的 另一专门化的消息来答复。在首先将节点归类为可达之后,NUD协议指定用于潜在地使分类到期并且最终地重启交换节点征求消息和节点通报消息的过程的规则。

然而,在具有大量节点的网络环境中,将其它节点作为可达的许多分类可以同时或者基本上同时到期。例如,一个节点可以在一秒的跨度中了解近似100,000个其它节点。在这一情况下,用于这些其它节点的所有可达性分类可以近似地同时到期,这可能使网络和下层设备有压力或者阻塞。因而,本公开内容认识到和解决对于用于检测网络邻居可达性的附加和改进的系统和方法的需要。



技术实现要素:

如以下将更具体描述的那样,本公开内容总体上涉及用于检测网络邻居可达性的系统和方法。在一个示例中,一种用于实现这样的任务的系统可以包括:(1)在存储器中存储的高速缓存模块,该高速缓存模块存储邻居高速缓存条目,该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定网络节点的邻居是否可达;(2)在存储器中存储的超时模块,该超时模块根据邻居不可达性检测协议指定在其中选择可达时间阈值的定时间隔,该可达时间阈值定义时间长度,在该事件长度期间邻居被指明为可达;(3)在存储器中存储的接收模块,该接收模块接收关于邻居是否活跃的事件信息;(4)在存储器中存储的偏置模块,该偏置模块基于接收的关于邻居是否活跃的事件信息偏置在定时间隔内对可达时间阈值的选择;以及(5)在存储器中存储的确定模块,该确定模块至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居是否可达。该系统也可以包括被配置为执行这些模块中的一个或者多个模块的至少一个物理处理器。

相似地,一种用于实现以上描述的任务的方法可以包括:(1)存储邻居高速缓存条目,该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定网络节点的邻居是否可达;(2)根据邻居不可 达性检测协议指定在其中选择可达时间阈值的定时间隔,该可达时间阈值定义时间长度,在该事件长度期间邻居被指明为可达;(3)接收关于邻居是否活跃的事件信息;(4)基于接收的关于邻居是否活跃的事件信息偏置在定时间隔内对可达时间阈值的选择;以及(5)至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居是否可达。

在一些示例中,以上描述的方法可以在非瞬态计算机可读介质上被编码为计算机可读指令。例如,计算机可读介质可以包括一个或者多个计算机可执行指令,该一个或者多个计算机可执行指令在由计算设备的至少一个处理器执行时可以使得计算设备:(1)存储邻居高速缓存条目,该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定网络节点的邻居是否可达;(2)根据邻居不可达性检测协议指定在其中选择可达时间阈值的定时间隔,该可达时间阈值定义时间长度,在该事件长度期间邻居被指明为可达;(3)接收关于邻居是否活跃的事件信息;(4)基于接收的关于邻居是否活跃的事件信息偏置在定时间隔内对可达时间阈值的选择;以及(5)至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居是否可达。

可以根据这里描述的一般原理相互组合地使用来自以上提到的实施例中的任何实施例的特征。将在结合附图和权利要求书阅读以下具体描述时更完全地理解这些和其它实施例、特征以及优点。

附图说明

附图图示了多个示例性实施例并且是说明书的一部分。与以下描述一起,这些附图展示和说明本公开内容的各种原理。

图1是用于检测网络邻居可达性的示例性系统的框图。

图2是用于检测网络邻居可达性的示例性系统的框图。

图3是用于检测网络邻居可达性的示例性方法的流程图。

图4是与用于检测网络邻居可达性的示例性系统对应的定时图。

图5是与用于检测网络邻居可达性的示例性系统对应的高速缓存 和网桥的示例性框图。

图6是与用于检测网络邻居可达性的示例性系统对应的示例性状态图。

图7是能够实施这里描述和/或图示的实施例中的一个或者多个实施例和/或与该一个或者多个实施例结合被使用的示例性计算系统的框图。

贯穿附图,相同标号和描述指示相似但是未必相同的单元。尽管这里描述的示例性实施例易受各种修改和备选形式影响,但是已经在附图中通过示例示出并且这里将具体描述具体实施例。然而,这里描述的示例性实施例未旨在于限于公开的特定形式。实际上,本公开内容覆盖落入所附权利要求的范围内的所有修改、等效和备选。

具体实施方式

本公开内容描述了用于检测网络邻居可达性的各种系统和方法。如以下将更具体说明的那样,本公开内容的实施例可以使计算机联网系统能够如以下进一步讨论的那样更高效地执行邻居不可达性检测而避免对邻居征求消息的大量同时传输。具体地,本公开内容的实施例可以使计算机联网系统能够扩展在其中选择可达时间阈值的定时间隔而不允许更高优先级邻居征求消息等待太久。

下文将参照图1至图2提供用于检测邻居可达的示例系统的示例。相似地,下文将参照图3、图4和图6提供与用于检测邻居可达性的示例性系统对应的流程图、定时图和状态图的示例。另外,下文也将参照图5提供高速缓存和网桥的示例性框图的示例。最后,与图7对应的讨论将提供可以包括在图1至图6中所示的部件和电路的系统的许多示例。

图1是用于检测网络邻居可达性的示例性系统100的框图。如在这一附图中所示,示例性系统100可以包括用于执行一个或者多个任务的一个或者多个模块102。例如,并且如以下将更具体说明的那样,示例性系统100可以包括在存储器中存储的高速缓存模块104,该高 速缓存模块104存储邻居高速缓存条目,该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定网络节点的邻居是否可达。示例性系统100也可以包括在存储器中存储的超时模块106,该超时模块106根据邻居不可达检测协议指定定时间隔,在该定时间隔中选择定义时间长度的可达时间阈值,在该时间长度期间邻居被指明为可达。

附加地,示例性系统100可以包括在存储器中存储的接收模块108,该接收模块108接收关于邻居是否活跃的事件信息。示例性系统100还可以包括在存储器中存储的偏置模块110,该偏置模块110基于接收的关于邻居是否活跃的事件信息偏置在定时间隔内对可达时间阈值的选择。另外,如图1中进一步所示,示例性系统100也可以包括在存储器中存储的确定模块112,该确定模块112至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居是否可达。

如图2中所示,在一些示例中,系统100可以构成更大联网系统290的部分。如该图中所示,在一些实施例中,系统100可以采用计算联网环境中的征求节点200的形式。征求节点200可以包括模块102的所有模块或者任何排列。征求模块可以征求来自网络上的另一节点(比如邻居220)的邻居通报。如图2中所示,系统290也可以包括非邻居230、非邻居232和非邻居234。征求节点200、邻居220、非邻居230、非邻居232和非邻居234中的每个可以构成根据计算机联网协议(比如网际协议版本六)的节点(比如主机或者路由器)。另外,如图2中进一步所示,邻居220具有与征求节点200的直接连接(换而言之,附着在链路层的相同链路处),而非邻近节点不具有直接连接并且未构成征求节点200的邻居。

在图2的示例中,所有模块102位于征求节点200内。然而,在其它示例中,一个或者多个其它节点或者计算设备可以包含模块102中的一个或者多个模块并且提供对应功能。例如,远程管理节点或者代理可以如以下进一步讨论的那样可设想地存储高速缓存模块104或者偏置模块110。

如图2中所示,高速缓存模块104可以包括可以存储根据邻居发 现协议(比如根据网际协议版本六的邻居发现)的一个或者多个邻居高速缓存条目的高速缓存202。以下将结合图5进一步讨论高速缓存202的示例。另外,也如图2中所示,系统290还可以包括网桥240。如这里所用,术语“网桥”一般地是指在开放系统互连模块的物理层和/或数据链路层连接两个或者更多个通信网络或者网络段的任何网络设备。图2进一步图示了网桥240以及邻居220本身如何可以向征求节点200提供关于邻居220是否活跃和/或不可用的事件信息。

图3是用于检测网络邻居可达性的示例性计算机实施的方法300的流程图。图3中所示的步骤可以由任何适当计算机可执行代码和/或计算系统执行。在一些实施例中,图3中所示的步骤可以由图1中的系统100、图2中的系统290的部件和/或图7中的示例性计算系统700的部分中的一个或者多个部件和/或部分执行。

如图3中所示,在步骤310处,这里描述的系统中的一个或者多个系统可以存储邻居高速缓存条目,该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定网络节点的邻居是否可达。例如,高速缓存模块104可以作为系统100的部分存储邻居高速缓存条目(例如,在高速缓存202内),该邻居高速缓存条目根据邻居不可达性检测协议的检测机制指定征求节点200的邻居220是否可达。

如这里所用,术语“高速缓存”一般地是指存储单元,该存储单元如以下进一步讨论的那样存储用于记录关于计算网络上的邻居节点的信息的邻居高速缓存条目。在一些实施例中,高速缓存可以被专门化以用于处置更大量或者速度的数据操作(例如,快速步调的邻居高速缓存条目创建、删除和修改)。另外,如这里所用,术语“邻居高速缓存条目”一般是指用于记录关于计算网络上的邻居节点的信息的记录(比如数据库记录)或者其它数据结构。

如这里所用并且如以上首先讨论的那样,网络节点的术语“邻居”一般地是指在与由对应网络模型的链路层(例如,网际协议套件的最底层)定义的链路相同的链路处附着的另一网络节点。另外,除非另有指定,如这里所用,“可达”一般地是指组合的、征求节点传输到达 目标节点的分组的能力和目标节点用到达原始征求节点的分组答复(例如,在邻居征求和邻居通报交换中)的能力。在备选实施例中,在被指定时,“可达”可以是指一个节点无论来自目标节点的分组是否也可以到达原始传输节点都传输到达目标节点的分组的能力。

附加地,如这里所用,术语“检测机制”一般地是指由邻居不可达性检测协议指定的、用于确定节点是否不可达的机制。在IPv6的示例中,检测机制可以对应于在NUD协议内指定的邻居征求和邻居通报交换机制。相似地,如这里所用,术语“邻居不可达性检测协议”一般地是指指定用于检测节点是否可达的系统或者机制的任何协议,或者规则和规章的集合。显然地,在本申请的上下文中,IPv6的NUD协议提供一个示例性实施例。然而,公开的系统和方法的概念、认识和改进不限于IPv6及其NUD协议的上下文,而是可以一般地适用于用于检测节点是否在公共网络上可达的任何计算机联网协议。例如,公开的系统和方法可以并行地适用于地址分辨协议和IPv4。

高速缓存模块104可以按照多种方式存储邻居高速缓存条目。一般而言,高速缓存模块104可以在从对应邻居(比如邻居220)接收(例如,在征求节点200的接口处)网络分组时创建邻居高速缓存条目。相似地,高速缓存模块104可以如以下进一步讨论的那样在可达时间阈值更早到期之后在尝试与邻居220探测和重新确认可达性的探测时段到期时删除邻居高速缓存条目。高速缓存模块104可以在高速缓存(比如高速缓存202)内存储邻居高速缓存条目,该高速缓存还可以包括用于记录关于网络上的其它节点的信息的数据库、表和/或任何其它适当数据结构。另外,高速缓存模块104可以对于每个邻居高速缓存条目记录网际协议(“IP”)地址、介质访问控制(“MAC”)地址、节点不可达性状态、事件信息222、优先级分类、时间戳(例如,从对应邻居接收的上个消息的时间戳)、可达时间阈值和/或用于选择可达时间阈值和执行节点不可达性检测的一个或者多个下层的或者关联的值。显然地,如这里所用并且除非另有指定,术语“IP地址”和“MAC地址”一般地是指这些地址的纯粹形式以及这些地址的修改 或者修饰的版本(比如链路层地址),这些版本也可以通过追加而包括信息的其它项目或者字段。本申请将结合图6讨论用于节点不可达性检测的状态图的示例和结合图5讨论高速缓存202的示例。

回顾图3,在步骤320处,这里描述的系统中的一个或者多个系统可以根据邻居不可达性检测协议指定在其中选择可达时间阈值的定时间隔,该可达时间阈值定义时间长度,在该时间长度期间邻居被指明为可达。例如,超时模块106可以作为系统100的部分根据邻居不可达性检测协议指定在其中选择可达时间阈值的定时间隔,该可达时间阈值定义时间长度,在该时间长度期间邻居220被指明为可达。

如这里所用,术语“定时间隔”一般地是指时间段。时间段的开始和结束之一或者二者可以是固定和确切的或者开放的(例如,在具体时间开始并且然后从未结束的定时间隔)。相似地,开始和结束之一或者二者可以被定义为静态和固定的时间点。备选地,开始和结束之一或者二者可以按照可以随时间改变的一个或者多个下层变量被定义为动态的。在示例性实施例中,定时间隔如以下进一步讨论的那样一般地是指相对短和固定的时间段,比如在可达性确认之后的28秒与32秒之间的时间段。

另外,如这里所用,术语“可达时间阈值”一般地定义时间长度,在该时间长度期间邻居被指明为可达。换而言之,可达时间阈值一般地定义“可达”分类或者指明将在缺乏新确认时何时到期。一个或者多个公式、等式和/或算法可以定义或者选择可达时间阈值。另外,公开的系统和方法可以如以下也进一步讨论的那样基于一个或者多个接收的事件信息项目修改或者调整这些公式、等式和/或算法。

超时模块106可以按照多种方式指定定时间隔。例如,网络管理员(例如,向超时模块106提供输入)和/或网络管理软件代理可以指定定时间隔的全部或者部分。在一个具体示例中,网络管理员可以指定用于定时间隔的开始点、用于定时间隔的结束点、用于计算定时间隔的公式或者算法和/或用于其中定义定时间隔的一个或者多个下层变量的值。

在IPv6及其用于邻居发现的协议的示例中,网络管理员和/或网络管理软件代理可以指定“BaseReachableTime”值以及用于选择可达时间阈值的MIN_RANDOM_FACTOR和MAX_RANDOM_FACTOR值。在这一示例中,可达时间阈值可以对应于在以毫秒为单位的(MIN_RANDOM_FACTOR*BaseReachableTime)与(MAX_RANDOM_FACTOR*BaseReachableTime)之间作为均匀随机变量而选择的值。因而,对BaseReachableTime、MIN_RANDOM_FACTOR和/或MAX_RANDOM_FACTOR的指定以及对用于将它们相乘的公式(例如,MIN_RANDOM_FACTOR*BaseReachableTime)的指定由此如以下进一步讨论的那样进一步指定在其中选择可达时间阈值的定时间隔。另外,在IPv6及其邻居发现协议的示例中,在这一定时间隔内选择的值对应于变量“ReachableTime”。换而言之,对这些变量和算法的指定进一步指定定义定时间隔的结束点。

虽然这些变量和对应算法涉及IPv6及其邻居发现协议的示例性实施例,但是公开的系统和方法不限于该实施例并且可以涵盖对用于指定定时间隔的算法、结束点和/或变量或者值的任何适当选择。另外,模块102(比如高速缓存模块104和超时模块106)可以如以下进一步讨论的那样在节点基础上(例如,支配在该节点(比如征求节点200)处的一些或者所有邻居高速缓存条目)和/或在粒度条目级上指定这些变量中的一个或者多个变量,从而使得不同邻居高速缓存条目可以具有用于相同变量中的一个或者多个变量的不同值(例如,基于接收的事件信息)。

图4示出了包括未修改的可达时间阈值时间线450和修改的可达时间阈值时间线452(后者对应于根据这里公开的系统和方法的修改)二者的示例性定时图400。如图4中所示,时间线450和时间线452二者可以分别以可达性确认404和可达性确认406开始。可达性确认可以如以上讨论的那样如在IPv6及其邻居发现协议内定义的那样对应于响应于邻居征求而被传输的邻居通报。在可达性确认404时,被 定义为从在定时间隔402内的值选择的可达时间阈值(例如,“ReachableTime”)的时间段可以开始流逝。如图4中进一步所示,定时间隔402可以在可达性确认404之后的28秒出现的点403处开始并且在可达性确认404之后的32秒出现的点405处结束。

显然地,在一些示例中,可以仅从在定时间隔内(或在定时间隔的一个或者两个边缘)的时间单位(例如,秒)的整数或者全部值选择可达时间阈值。在图4的示例中,可以仅从在可达确认404之后的28秒、29秒、30秒、31秒和32秒这些选项选择可达时间阈值。因而,如果充分大的数目(例如,大于五个)的邻居高速缓存条目都在与可达性确认404相同的时间确认可达性,则大量冲突可能出现,因为尽管可达时间阈值跨定时间隔402的随分布,但是定时间隔完全地太小以至于无法避免在整数或者全部值(例如,以秒为单位)上的冲突。

回顾图3,在步骤330处,这里描述的系统中的一个或者多个系统可以接收关于邻居是否活跃的事件信息。例如,接收模块108可以作为系统100的部分接收关于邻居220是否活跃的事件信息222。

如这里所用,术语“事件信息”一般地是指关于具体网络事件(包括传输和/或接收网络分组)的信息。在示例性实施例中,事件信息可以对应于关于从邻居220始发和到达网桥240的网络分组、从邻居220始发和到达征求节点200的接口的网络分组(例如,采样的网络分组和/或根据IPv6的网络发现分组)和/或关于在整个网络环境内的任何其它事件的信息,该信息提供邻居220是否活跃的指示。

另外,如这里所用的术语“活跃”一般地是指节点提供节点在网络上活跃和/或恰当地工作并且由此仍然可达或者是用于可达性的候选的指示。对照而言,非活跃节点的指示如以下进一步讨论的那样指示节点可能停用、出故障、非工作和/或不可达。

接收模块108可以按照多种方式接收事件信息。例如,关于邻居是否活跃的事件信息可以包括与邻居和到达网桥(比如网桥240)的分组二者对应的介质访问控制地址的网桥记录。分组到达网桥240确 认邻居在传输分组的时间活跃。因而,接收模块108可以向网桥240轮询关于到达分组的信息(和对应的介质访问控制地址)、检查网桥240的介质访问控制地址表和/或以其它方式从网桥240接收关于邻居220是否活跃的事件信息。

接收模块108也可以在网桥处丢弃过时(即,比阈值更旧)的条目和/或偏置模块110可以根据一个或者多个偏置公式与它们的年龄成比例地折扣它们的相关性。图5示出了高速缓存202和网桥240二者的示例500。如图5中所示,高速缓存202可以包括条目502、条目504和条目506。相似地,网桥240可以包括条目508和条目510。显然地,网桥240可以被配置为记录用于到达网桥240的一些或者所有分组的MAC地址以及它们的到达的时间戳。在图5的示例中,条目510对应于与条目504相同的MAC地址。因而,条目510可以如以下进一步讨论的那样对应于由接收模块108接收和由偏置模块110用来偏置对可达时间阈值的选择的事件信息。在这一示例中,条目510指示MAC地址活跃但是不能确认IP和MAC地址绑定,并且因此偏置模块110在中优先级种类中具有归类的条目504。备选地,如果用于条目510的时间戳(即13:45)通过了年龄阈值,则接收模块108和/或偏置模块110可以丢弃和/或成比例地折扣条目510作为邻居活跃的证据。以下也更具体地讨论偏置模块110以及对IP和MAC地址绑定的确认。

在另一示例中,接收模块108可以通过在正在尝试确定邻居220是否可达的征求节点200的接口处采样网络分组来接收关于邻居是否活跃的事件信息。这些网络分组可以对应于IPv6中的邻居发现分组(例如,路由器征求(类型133)、路由器通报(类型134)、邻居征求(类型135)、邻居通报(类型136)和/或重定向(类型137)消息)或者提供邻居220的活动的指示的任何其它适当消息。显然地,邻居220活跃(例如,恰当地工作)的指示可以暗示邻居220可达(即,双向可达)但是至少因为在邻居220以外的问题可能防止可达性而并未确认邻居220可达。

回顾图3,在步骤340处,这里描述的系统中的一个或者多个系统可以基于接收的关于邻居是否活跃的事件信息偏置在定时间隔内对可达时间阈值的选择。例如,偏置模块110可以作为系统100的部分基于接收的关于邻居220是否活跃的事件信息222偏置在定时间隔内对可达时间阈值的选择。

如这里所用,短语“偏置”一般地是指调整、变更、选择和/或确定用于进一步选择可达时间阈值的方法、机制、公式和/或分类。另外,变更用于选择可达时间阈值的方法可以包括变更用于选择可达时间阈值的下层算法、变量、概率分布和/或定时间隔,由此造成与在缺乏变更时不同的对可达时间阈值的选择。一般而言,偏置可以是指在定时间隔的子集内聚焦对可达时间阈值的选择和/或增加将从定时间隔的一个子集而不是另一子集选择可达时间阈值的概率(例如,由此在朝着定时间隔的上限或者下限的方向上统计地推动该选择)。

在示例性实施例中,通用和未修改的系统可以根据一个公式或者机制选择可达时间阈值。在接收对应的事件信息时,公开的系统和方法可以由此偏置或者调整用于选择可达时间阈值的方法。例如,取代在原始定时间隔402内选择均匀随机值,公开的系统和方法可以如以下进一步讨论的那样基于接收的事件信息偏置对可达时间阈值的选择以使该选择非随机和更高效。

偏置模块110可以按照多种方式偏置对可达时间阈值的选择。可选地,偏置模块110可以将原始定时间隔(比如定时间隔402)扩展成扩展的定时间隔(比如图4中所示的定时间隔415)。偏置模块110可以按照任何适当方式(比如通过变更BaseReachableTime、MIN_RANDOM_FACTOR和/或MAX_RANDOM_FACTOR的值)来扩展定时间隔402。如图4中所示,定时间隔415可以在可达性确认406出现之后的28秒出现的点407处开始并且在可达性确认406出现之后的90秒出现的点409处结束。

在一些示例中,偏置模块110可以响应于接收事件信息222来扩展原始定时间隔。另外,偏置模块110可以一般地通过(A)变更原 始定时间隔的大小和/或定义(例如,变更用于定时间隔的最小值和最大值中的至少一个值)和/或(B)变更从在修改或者未修改的原始定时间隔内选择可达时间阈值的方式或者方法(例如,聚焦于修改或者未修改的定时间隔的子集)来偏置对可达时间阈值的选择。显然地,这两种方法可以重叠和造成有效地或者基本上相同的修改。

在附加示例中,偏置模块110可以至少部分通过基于接收的事件信息将邻居高速缓存条目归类为估计的活动分类来偏置对可达时间阈值的选择。例如,图4示出了在高优先级桶408、中优先级桶410和低优先级桶412这三个优先级桶之间划分定时间隔415。虽然这些桶在图4的示例中未重叠,但是在其它示例中,它们可以重叠(例如,可以都在点407处开始)。在更多具体示例中,偏置模块110可以将邻居高速缓存条目归类为指定如下状态之一的估计的活动分类:(A)其中邻居高速缓存条目的介质访问控制已知为活跃的状态(例如,对应于中优先级桶410)和(B)确认在邻居高速缓存条目的介质访问控制地址与网际协议地址之间的绑定的状态(例如,对应于低优先级桶412)。在其它示例中,在缺乏接收的事件信息或者其它确认(即,换而言之,指示无事件或者活动的事件信息)时,偏置模块110可以将邻居高速缓存条目归类为指定无确认的活动状态(例如,对应于高优先级桶408)的估计的活动分类。一般而言,在归类邻居高速缓存条目之后,偏置模块110可以通过(A)从在归类的桶内选择可达时间阈值和/或(B)增加将在归类的桶内选择可达时间阈值的概率来偏置对可达时间阈值的选择。

在更一般水平,偏置模块110可以处理接收的事件信息以计算用于基于指示邻居被估计为活跃和/或可达的范围的种类或者程度来执行邻居可达性检测的优先级种类或者程度。基本上,更大活动程度或者指示暗示邻居更可能可达并且因此邻居不可达检测对应地更少优先级。另外,偏置模块110可以将对可达时间阈值的选择基于离散水平(例如,通过将邻居归类为三个离散优先级桶之一)和/或在粒度水平(例如,通过应用随机漂移和/或与计算的活动程度成粒度比例地偏 置该选择)。显然地,偏置模块可以通过按串行顺序在离散水平和粒度水平上(包括相反)执行计算来选择可达时间阈值。在一些示例中,偏置模块110也可以从在离散或者粒度时间单位(例如,4.2秒或者毫秒)之中选择可达时间阈值。

在一个示例中,接收的事件信息可以如以上讨论的那样包括在征求节点200处对网络分组的采样。在这一示例中,偏置模块110可以在转发的分组与始发分组之间区分,这些转发的分组包括始发该分组的节点的源IP地址和转发该分组的中间节点的MAC地址,这些始发分组包括始发该分组的节点的源IP地址和MAC地址。在后一种情况下,偏置模块110可以确定采样的网络分组的介质访问控制地址和网际协议地址是否与邻居高速缓存条目的介质访问控制地址和网际协议地址(例如,征求节点200在第一次发现邻居220时在高速缓存202内先前记录的IP和MAC绑定)匹配。通过比较这些值,偏置模块110可以确认IP和MAC绑定是否仍然有效。对IP和MAC绑定的确认指示比较地更高活动程度并且因此指示成比例地更低优先级程度。因而,在匹配和确认的情况下,偏置模块110可以至少部分通过将邻居高速缓存条目归类为估计的活动分类来偏置对可达时间阈值的选择,该估计的活动归类指定确认在邻居高速缓存条目的介质访问控制地址与网际协议地址之间的绑定的状态(例如,低优先级桶412)。

备选地,如果IP和MAC绑定出于各种原因之一(例如,IP地址和/或绑定的重定位和/或到期)而不再有效,则偏置模块110可以简单地将邻居高速缓存条目归类为估计的活动分类,该估计的活动归类指定仅确认介质访问控制地址而未进一步确认IP和MAC绑定的状态(例如,中优先级桶410)。相似地,如果采样的网络分组是转发的分组而不是始发分组,则偏置模块110可以将该分组归类到中优先级桶410中,因为转发的分组未包含与IP地址对应的始发节点的MAC地址,并且因此不能提供用于确认或者否认绑定的信息。备选地,如果IP和MAC绑定由于删除IP地址和/或绑定而不再有效,则偏置模块110可以简单地将邻居高速缓存条目归类到高优先级桶408中,因 为失去了可达性和可活性二者。一般而言,IP和MAC地址有效的证据指示比仅对MAC地址活动的确认比较地更高的活动程度(和更低的优先级程度),这转而指示比完全无证据或者确认(最高优先级程度)比较地更高的活动程度(和进而更低的优先级程度)。另外,当在一个或者多个优先级桶内归类邻居高速缓存条目之后,偏置模块110然后可以按照任何适当均匀随机和/或非随机方式在对应的桶内选择可达时间阈值。

如图3中所示,在步骤350处,这里描述的系统中的一个或者多个系统可以至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居是否可达。例如,确定模块112可以作为系统100的部分至少部分基于对选择的可达时间阈值是否已被满足的确定来确定邻居220是否可达。如这里所用,短语“选择的可达时间阈值已经被满足”如以下进一步讨论的那样一般地是指对由选择的可达时间阈值定义的时间量是否自从邻居可达性确认起已经流逝(例如,根据“大于”或者“大于或者等于”比较)的确定。

确定模块112可以按照多种方式确定邻居是否可达。一般而言,确定模块112可以通过应用根据邻居不可达性检测算法(比如IPv6中的邻居不可达性检测)的修改和/或未修改的公式或者算法来确定邻居是否可达。在这一示例中,公开的系统和方法可以偏置对可达时间阈值的选择而未必偏置或者变更节点不可达性检测的其它方面。在偏置对可达时间阈值的选择之后,确定模块112一般而言可以简单地确定是否已满足和/或超过阈值。

图6示出了根据网络不可达性检测协议(例如,在IPv6邻居发现中)的示例性状态图600。初始地,邻居高速缓存条目可以在不完整状态620不完整。通过邻居发现,模块102中的一个或者多个模块(比如接收模块108)可以在可达性确认404处接收邻居通报(如以上讨论的那样),由此向可达状态630转变。这里的系统和方法一般地是指用于确定在可达状态630内保持多久的技术。具体地,这里的系统和方法如以上进一步讨论的那样一般地偏置在定时间隔内对可 达时间阈值的选择。在可达时间阈值602到期时,状态可以向过时状态640转变。邻居高速缓存条目可以保持在过时状态640中,直至在步骤604处向邻居发送流量,由此向可以简单地执行任意延迟的延迟状态650转变。邻居高速缓存条目也可以由于过时状态定时器的到期而向延迟状态650转变。

在延迟606到期时,状态可以向可以开始探测(例如,通过邻居征求消息)邻居以用于确认可达的过程的探测状态660转变。显然地,在状态图600中的任何点处,来自网络发现协议或者网络不可达性检测分组(或者任何其它协议分组,比如来自根据网络模型在概念上比网络不可达性检测协议更高的协议的分组)的网络不可达性检测提示可以确认邻居可达并且由此向可达状态630转变状态图。这在图6中由NUD提示670示出(为了清楚而省略从状态图600中的各种状态到NUD提示670的连接箭头)。另外,偏置模块110可以按照与以上描述的用于选择可达时间阈值的方式中的任何方式并行的方式偏置用于发送原始和重试邻居征求消息的任何定时变量或者阈值。如果在步骤610处无确认,则高速缓存模块104可以简单地删除邻居高速缓存条目。备选地,在可达性确认608处,状态可以再次向可达状态630转变。在通过完全引用而结合于此的用于IPv6邻居发现的规范中提供示例状态图和关联状态转变规则的进一步细节。

如以上说明的那样,本公开内容的实施例可以使计算机联网系统能够更高效地执行邻居不可达性检测而避免对邻居征求消息的大量同时传输。具体地,本公开内容的实施例可以使计算机联网系统能够扩展在其中选择可达时间阈值的定时间隔而未允许更高优先级邻居征求消息等待太久。

图7是能够实施这里描述和/或图示的实施例中的一个或者多个实施例和/或结合该一个或者多个实施例使用的示例性计算系统700的框图。在一些实施例中,计算系统700的全部或者部分可以单独或者与其它单元组合执行结合图3描述的步骤中的一个或者多个步骤和/或是用于单独或者与其它单元组合执行结合图3描述的步骤中的一 个或者多个步骤的装置。计算系统700的全部或者部分也可以执行和/或实施这里描述和/或图示的任何其它步骤、方法或者过程和/或是用于执行和/或实施这里描述和/或图示的任何其它步骤、方法或者过程的装置。在一个示例中,计算系统700可以包括或者对应于来自图1的系统100。

计算系统700广义地代表任何类型或者形式的电负载,包括能够执行计算机可读指令的单或者多处理器计算设备或者系统。计算系统700的示例包括但不限于工作站、膝上型计算机、客户端侧终端、服务器、分布式计算系统、移动设备、网络交换机、网络路由器(例如,主干路由器、边缘路由器、核心路由器、移动服务路由器、宽带路由器等)、网络装置(例如,网络安全装置、网络控制装置、网络定时装置、SSL VPN(安全套接字层虚拟专用网络)装置等)、网络控制器、网关(例如,服务网关、移动分组网关、多接入网关、安全网关等)和/或任何其它类型或者形式的计算系统或者设备。

计算系统700可以被编程、配置和/或以其它方式设计为遵循一个或者多个联网协议。根据某些实施例,计算系统700可以被设计为用开放系统互连(OSI)参考模型的一层或者多层的协议,比如物理层协议、链路层协议、网络层协议、传送层协议、会话层协议、表示层协议和/或应用层协议工作。例如,计算系统700可以包括根据通用串行总线(USB)协议、电气和电子工程师协会(IEEE)1394协议、以太网协议、T1协议、同步光联网(SONET)协议、同步数字分级(SDH)协议、综合服务数字网(ISDN)协议、异步传输模式(ATM)协议、在ATM之上的点到点协议(PPPoA)、蓝牙协议、IEEE 802.XX协议、帧中继协议、令牌环协议、跨距树协议和/或任何其它适当协议配置的网络设备。

计算系统700可以包括各种网络和/或计算部件。例如,计算系统700可以包括至少一个处理器714和系统存储器717。处理器714一般地代表能够处理数据或者解释和执行指令的任何类型或者形式的处理单元。例如,处理器714可以代表专用集成电路(ASIC)、片上 系统(例如,网络处理器)、硬件加速器、通用处理器和/或任何其它适当处理单元。

处理器714可以根据以上讨论的联网协议中的一个或者多个联网协议来处理数据。例如,处理器714可以执行或者实施协议栈的部分、可以处理分组、可以执行存储器操作(例如,使分组排队以用于以后处理)、可以执行终端用户应用和/或可以执行任何其它处理任务。

系统存储器716一般地代表能够存储数据和/或其它计算机可读指令的任何类型或者形式的易失性或者非易失性存储设备或者介质。系统存储器716的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存或者任何其它适当存储器设备。虽然非必需,但是在某些实施例中,计算系统700可以包括易失性存储器单元(如例如系统存储器716)和非易失性存储设备(如例如以下具体描述的主存储设备732)。系统存储器716可以被实施为网络设备中的共享存储器和/或分布式存储器。另外,系统存储器716可以存储在联网操作中使用的分组和/或其它信息。

在某些实施例中,示例计算系统700除了处理器714和系统存储器716之外也可以包括一个或者多个部件或者单元。例如,如图7中所示,计算系统700可以包括各自可以经由通信基础设施712互连的存储器控制器718、输入/输出(I/O)控制器720和通信接口722。通信基础设施712一般地代表能够有助于在计算设备的一个或者多个部件之间的通信的任何类型或者形式的基础设施。通信基础设施712的示例包括但不限于通信总线(比如串行ATA(SATA)、工业标准架构(ISA)、外围部件互连(PCI)、PCI快速(PCIe)和/或任何其它适当总线)和网络。

存储器控制器718一般地代表能够处置存储器或者数据或者控制在计算系统700的一个或者多个部件之间的通信的任何类型或者形式的设备。例如,在某些实施例中,存储器控制器718可以控制经由通信基础设施712在处理器714、系统存储器716和I/O控制器720之间的通信。在一些实施例中,存储器控制器718可以包括可以向或者 从链路适配器传送数据(例如,分组)的直接存储器访问(DMA)单元。

I/O控制器720一般地代表能够协调和/或控制计算设备的输入和输出功能的任何类型或者形式的设备或者模块。例如,在某些实施例中,I/O控制器720可以控制或者有助于数据在计算系统700的一个或者多个单元(比如处理器714、系统存储器716、通信接口722和存储接口730)之间的传送。

通信接口722广义地代表能够有助于在示例计算系统700与一个或者多个附加设备之间的通信的任何类型或者形式的通信设备或者适配器。例如,在某些实施例中,通信接口722可以有助于在计算系统700与包括附加计算系统的私有或者公用网络之间的通信。通信接口722的示例包括但不限于链路适配器、有线网络接口(比如网络接口卡)、无线网络接口(比如无线网络接口卡)和任何其它适当接口。在至少一个实施例中,通信接口722可以经由与网络(比如因特网)的直接链路来提供与远程服务器的直接连接。通信接口722也可以例如通过局域网(比如以太网网络)、专用网、广域网、私有网络(例如,虚拟私有网络)、电话或者线缆网络、蜂窝电话连接、卫星数据连接或者任何其它适当连接间接地提供这样的连接。

在某些实施例中,通信接口722也可以代表被配置为有助于经由外部总线或者通信信道在计算系统700与一个或者多个附加网络或者存储设备之间的通信的主机适配器。主机适配器的示例包括但不限于小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、IEEE 1394主机适配器、高级技术附着(ATA)、并行ATA(PATA)、串行ATA(SATA)和外部SATA(eSATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口722也可以使计算系统700能够参与分布式或者远程计算。例如,通信接口722可以从远程设备接收指令或者向远程设备发送指令以用于执行。

如图7中所示,示例计算系统700也可以包括经由存储接口730耦合到通信基础设施712的主存储设备732和/或备用存储设备734。 存储设备732和734一般地代表能够存储数据和/或其它计算机可读指令的任何类型或者形式的存储设备或者介质。例如,存储设备732和734可以代表磁盘驱动(例如,所谓的硬盘驱动)、固态驱动软盘驱动、磁带驱动、光盘驱动、快闪驱动等。存储接口730一般地代表用于在存储设备732和734与计算系统700的其它部件之间传送数据的任何类型或者形式的接口或者设备。

在某些实施例中,存储设备732和734可以被配置为从被配置为存储计算机软件、数据或者其它计算机可读信息的可移除存储单元读取和/或向该可移除存储单元写入。存储设备732和734也可以包括用于允许向计算系统700中加载计算机软件、数据或者其它计算机可读指令的其它相似结构或者设备。例如,存储设备732和734可以被配置为读取和写入软件、数据或者其它计算机可读信息。存储设备732和734可以是计算系统700的部分或者可以是通过其它接口系统访问的分离设备。

许多其它设备或者子系统可以连接到计算系统700。反言之,无需所有图7中所示部件和设备存在以实现这里描述和/或图示的实施例。也可以用与图7中所示方式不同的方式互连以上参考的设备和子系统。计算系统700也可以运用任何数目的软件、固件和/或硬件配置。例如,这里公开的示例性实施例中的一个或者多个示例性实施例可以被编码为计算机可读介质上的计算机程序(也被称为计算机软件、软件应用、计算机可读指令或者计算机控制逻辑)。术语“计算机可读介质”一般地是指能够存储或者携带计算机可读指令的任何形式的设备、载体或者介质。计算机可读介质的示例包括但不限于传输型介质(比如载波)和非瞬态型介质(比如磁存储介质(例如,硬盘驱动和软盘))、光存储介质(例如,紧致盘(CD)和数字视频盘(DVD))、电存储介质(例如,固态驱动和快闪介质))和其它分发系统。

尽管前文公开内容使用特定框图、流程图和示例来阐述各种实施例,但是可以使用广泛硬件、软件或者固件(或者其任何组合)配置来个别地和/或共同地实施这里描述和/或图示的每个框图部件、流程 图步骤、操作和/或部件。此外,在其它部件内包含的部件的任何公开内容应当在性质上被视为举例,因为可以实施许多其它架构以实现相同功能。

在一些示例中,图1中的系统100的全部或者部分可以代表云计算或者基于网络的环境的部分。云计算和基于网络的环境可以经由因特网提供各种服务和应用。这些云计算和基于网络的服务(例如,软件即服务、平台即服务、基础设施即服务等)可以通过web浏览器或者其它远程接口可访问。这里描述的各种功能也可以提供网络切换能力、网关接入能力、网络安全功能、用于网络的内容高速缓存和递送服务、网络控制服务和/或其它联网功能。

此外,这里描述的模块中的一个或者多个模块可以将数据、物理设备和/或物理设备的表示从一个形式变换成另一形式。例如,这里记载的模块中的一个或者多个模块可以接收待变换的网络数据和/或网络管理数据、通过调整、转发和/或归类数据来变换数据、向显示器、存储装置和/或其它网络节点输出该变换的结果、使用该变换的结果以更高效地执行节点不可达检测并且向高速缓存或者其它存储器存储该变换的结果。附加地或者备选地,这里记载的模块中的一个或者多个模块可以通过在计算设备上执行、在计算设备上存储数据和/或以别的方式与计算设备交互来将物理计算设备的处理器、易失性存储器、非易失性存储器和/或任何其它部分从一个形式变换成另一形式。

这里描述和/或图示的步骤的过程参数和序列仅通过示例而被给出并且可以如希望的那样变化。例如,尽管可以按照特定顺序示出或者讨论这里图示和/或描述的步骤,但是未必需要按照图示或者讨论的顺序执行这些步骤。这里描述和/或图示的各种示例性方法也可以省略这里描述的步骤中的一个或者多个步骤或者除了公开的步骤之外还包括附加步骤。

已经提供了前文描述以使本领域其他技术人员能够最佳地利用这里公开的示例性实施例的各种方面。这一示例性描述并未旨在于穷举或者限于公开的任何精确形式。许多修改和变化是可能的而未脱离 本公开内容的精神实质和范围。这里公开的实施例应当在所有方面被视为示例而非限制。应当在确定本公开内容的范围时参照所附权利要求及其等效。

除非另有指明,术语“连接到”和“耦合到”(及其派生词)如在说明书和权利要求书中所用将被解释为允许直接和间接(即经由其它单元或者部件)连接。此外,术语“一个”如在说明书和权利要求书中所用将被解释为意味着“的至少一个”。最后,为了易于使用,术语“包括”和“具有”(及其派生词)如在说明书和权利要求书中所用与措辞“包括”可互换并且具有与该措辞相同的含义。

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