CN101331715A - 涉及多个节点枚举器的节点发现 - Google Patents
涉及多个节点枚举器的节点发现 Download PDFInfo
- Publication number
- CN101331715A CN101331715A CNA2006800475127A CN200680047512A CN101331715A CN 101331715 A CN101331715 A CN 101331715A CN A2006800475127 A CNA2006800475127 A CN A2006800475127A CN 200680047512 A CN200680047512 A CN 200680047512A CN 101331715 A CN101331715 A CN 101331715A
- Authority
- CN
- China
- Prior art keywords
- enumerator
- network
- replying
- node
- enumerate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种网络节点发现方法允许多个枚举器并发地接受和解释来自网络上应答器节点的相同枚举应答。如此,应答器节点不必为每一枚举器发出单独的应答。每一应答器维护发现状态和一或多个每枚举器会话状态以管理应答器何时应发送枚举应答。因此,无论存在多少枚举器,枚举以目标网络负载进行,并且通过能够有效使用网络容量而在短时间内完成。此外,枚举器可确定它仅需要等待其它枚举器请求的应答而不是请求这些应答,从而在存在许多并发进行枚举的节点的情况下减少网络通信量。
Description
背景技术
局域网(LAN)是覆盖较小的局部区域如家庭、办公室或小型建筑群诸如企业或校园的计算机网络。现代LAN大多数基于以10至1000Mb/s(每秒兆比特)运行的交换式以太网或Wi-Fi技术,尽管也可使用其它技术。与广域网(WAN)相比,LAN的典型特性包括:(a)较高的数据速率,(b)较小的地理范围;以及(c)缺少租用电信线路。
可在计算机网络如LAN中使用网络节点发现来标识网络内的其它设备或节点。通常,特定的节点(称为“枚举器”)请求网络中其它节点(称为“应答器”)的应答。如此,枚举器可发展出网络内其它活动节点的列表。网络节点发现的结果可用于例如标识设备进入网络,检测设备从网络中移除,优化路由与负载平衡等等。
此外,具有多个枚举器的网络与单一枚举器网络相比,对网络节点枚举提出了另外的挑战。然而,现有网络节点发现实现比较慢并且通常不够健壮或者不容易伸缩,尤其是在存在多个枚举器的情况下。这些实现易于随着枚举器数量的增加快速增加网络负载,因而有网络过载的危险。
发明内容
在此描述并要求保护的实现通过允许多个枚举器并发接受和解释来自网络上应答器节点的相同枚举应答来解决部分上述问题。如此,应答器节点不必为每一枚举器发出单独的应答。每一应答器维护发现状态和一或多个每枚举器(per-enumerator)会话状态,以管理应答器何时应当发送枚举应答。因此,无论存在多少枚举器,枚举以目标网络负载进行,并且通过能够有效使用网络容量而在短时间内完成。此外,枚举器可确定它仅需要等待由其它枚举器请求的应答而不是请求这些应答,从而在存在许多并发进行枚举的节点的情况下减少了网络通信量。
在一些实现中,提供作为计算机程序产品的制品。计算机程序产品的一个实现提供可由计算机系统读取并编码计算机程序的计算机程序存储介质。由计算系统在载波内具体化并编码计算机程序的计算机数据信号可提供计算机程序产品的另一个实现。在此还描述和列举其它实现。
提供本概述以便以简化形式介绍概念精选,这些概念将在以下的详细描述中被进一步描述。本概述并不旨在标识要求保护的主题的关键特征或本质特征,也不旨在用于帮助确定要求保护的主题的范围。
附图说明
图1是其中可实现按照本文中描述的系统和方法的网络节点枚举的计算机网络的概括表示。
图2例示包括可在由网络(诸如图1的网络)中的枚举器执行的枚举会话中执行的各种操作的操作流程。
图3是简化的状态转换图,例示在网络枚举期间应答器模块可转换通过的示例状态。
图4例示在网络(诸如图1的网络)中应答器模块内的固定巡回(round)长度调度方法的操作流程。
图5例示在网络(诸如图1的网络)中应答器模块的可变巡回长度调度方法的操作流程。
图6例示计算机系统形式的示例网络节点。
图7例示其中在存在多个节点枚举器的情况下实现网络节点枚举的示例计算机网络。
图8例示两部分简化状态转换图,例示在网络枚举期间应答器模块可转换通过的示例状态。
图9例示管理枚举应答的示例性操作。
图10和11例示管理枚举应答的替换示例性操作。
具体实施方式
本文描述的是用于网络节点枚举的系统和方法的各种实现。按照在此描述的一些系统和方法,一或多个进行枚举的节点(即“枚举器”)发送枚举请求至网络中的其它节点。响应于收到枚举请求,可访问(即“在线”)的节点(即“应答器”)发送可由枚举器接收的枚举应答,从而将它们自已标识为枚举器可访问的。进行枚举的节点随后发送对收到的枚举应答的确认。在一个实现中,进行枚举的节点在一或多个将来的枚举请求中发送这样的确认。
为减少因大量应答器为回答枚举请求而同时发送枚举应答引起的过量网络拥塞,枚举应答在不同时间自应答器发送。为降低恶意节点挑起来自大量可访问节点的枚举应答的同时发送的可能性,每一应答器独立地确定其发送其枚举应答的时间。
在一些实现中,每一应答器基于在该节点处作出的对网络活动的观测和/或对将来网络活动的预测,独立地调度发送枚举应答的一或多个时间。另外,在一些实现中,每一可访问节点使用“基于巡回”的调度方法,其中发送每一枚举应答的时间在多个定时巡回之一调度。
现转向图1,其中示出计算机网络100的概括性表示。网络100例示其中可发生网络节点枚举的一个可能的环境。计算机网络100包括通过网络云112互连的一定数量的节点110。变量N用于表示单个节点对网络上可访问节点数量的估计。不同节点可对该数量有的不同估计,但各个估计通常值相近。在图1中,使用任意估计N。
网络云112一般表示数据(例如,枚举请求和枚举应答)在节点110之间传播时可采用的通过不同网络路径、设备和/或传输介质(例如布线或无线)的不同路由。节点110与网络云112之间的锯齿线如线108表示节点110在网络100中是可访问的(即“在线”)。例如,每一节点(1)、(2)、(3)、(5)和(N)示为在网络100中是可访问的,而节点(4)在网络100中示为是不可访问的(“离线”)。
本文中术语“节点”指在网络(例如网络100)中可唯一寻址或以其他方式可唯一标识并且可与网络中其它节点通信的任何计算机系统、设备或过程。例如但非限制,节点可以是个人计算机、服务器计算机、手持或膝上型设备、输入板设备、多处理器系统、基于微处理器系统、机顶盒、消费电子设备、网络PC、小型计算机、大型计算机、包括任意上述系统或设备的分布式计算环境,等等。计算机系统600形式的网络节点110的示例在下面参考图6阐述。
在节点包括某种形式的计算机系统或设备的情况下,节点一般包括处理器和一或多种形式的计算机可读介质以及一或多个通信连接,这允许节点有效连接至网络100。在本文中,计算机可读介质可以是可存储或具体化以可由计算机访问和理解的形式编码的信息的任何介质。计算机可读介质的典型形式包括但不限于易失性与非易失存储器两者,涉及可移动和/或不可移动介质的数据存储设备,以及通信介质。
通信介质具体化经调制数据信号如载波或其它传输机制中的计算机可读信息,并且包括任何信息传递介质。术语“已调制数据信号”是指以在该信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。
如所示的,节点(1)114包括枚举模块116,而节点(2)-(N)各自包括可能存在的应答器模块118。通常,枚举模块116为节点(1)114提供执行网络节点枚举的各种功能性。例如,枚举模块116可为节点(1)114提供以下功能性:构造枚举请求,调度枚举请求的发送,发送枚举请求,发送枚举应答确认,处理包含在收到的枚举应答中的信息,确定网络中可访问节点的数量和/或网络中可访问节点的身份。通常,每一应答器模块118为包括它或与其相关联的节点110提供处理收到的枚举请求以基于一些准则和/或逻辑来确定发送枚举应答时间的能力。还应当理解,单个节点可包括枚举和应答器模块两者。在本文中,术语“发送”一般指经网络100发送诸如枚举请求和枚举应答的信息(例如广播、组播、单播等)。
应当理解,在此参考具体模块描述的功能性可由模块本身执行,由模块与包括该模块或与之相关联的节点合作来执行,或由多个子模块来执行。例如,在一些实现中,由模块执行的操作被实现为在一或多个计算机可读介质中具体化的计算机可执行指令。在这些实现中,模块的操作可由包括该模块或与之相关联的节点中的一或多个处理器来执行。在其它实现中,模块的操作可实现为硬件、固件或硬件、固件与软件的某种组合,它们或者作为包括该模块或与之相关联的节点的一部分,或者以某种其它方式与这样的节点相关联。此外,在本文中参考特定模块描述的功能性可由多个节点执行或者分布在多个节点上。
现更具体地转到枚举器模块116的一些特定功能性,在一个实现中,枚举模块116发送多个在时间上间隔开的枚举请求至网络100中的应答器模块118。所发送的枚举请求之间的间隔可以是周期性的或者非周期性的。例如,在一个实现中,以均匀间隔的时间间隔发送枚举请求,这样的时间间隔在此称为“请求间隔”。在另一实现中,在各种随机选择的时间发出枚举请求。在又一实现中,在枚举模块116基于一些其它调度、逻辑和/或由枚举模块116作出的判断所确定的各时间来发送枚举请求。
在一实现中,枚举请求包括标识(确认)先前已经发送过由枚举模块116收到的枚举应答的节点110的信息等等。在一实现中,每一枚举请求包括标识已经发送过由枚举模块在给定时间帧(例如枚举会话)内收到的枚举应答的节点110的信息。例如,在一个实现中,每一枚举请求可包括标识自从枚举模块发送了最后一个枚举请求起已经发送过枚举应答的节点110的信息(例如确认)。在一实现中,枚举请求可标识先前已经被确认过的节点110。在另一实现中,在枚举请求中确认给定节点的次数可以是有限的或者有上限。
当枚举模块116收到枚举应答时,包含在应答中的信息可被存储以供处理或稍后检索。例如,枚举模块116可创建和/或维护一或多个数据结构,其中存储发送枚举应答的每一节点的身份(例如网络地址)。在一个实现中,枚举模块116维护两个数据结构,一个包含自从发送最后一个枚举请求起已经发送过枚举应答的所有节点的地址,另一个包含在整个枚举会话过程中已经发送过枚举应答的所有节点的地址。在该实现中,包含自从最后一个枚举请求起已经发送过枚举应答的所有节点地址的数据结构随后可用于构造下一个枚举请求,而包含在整个枚举会话过程中已经发送过枚举应答的所有节点地址的数据结构可用于最终的网络节点枚举。在其它实现中,枚举模块116汇编和/或存储在枚举会话中使用的各种其它数据。
在一些实现中,枚举模块116发送枚举请求,接收和处理枚举应答,直到满足了预定条件(例如定时条件等)。举例说明但非限制,在一个实现中,枚举模块116继续发送枚举请求,直到自从枚举模块116收到最后一个枚举应答起已经过去给定的时间段为止。在另一实现中,枚举模块116继续发送枚举请求,直到每一给定时间段的应答数量低于某一最小值为止。在又一实现中,枚举模块116发送枚举请求,直到每一给定时间段收到的应答数量低于某一最小值为止,且随后针对一另外的预定时间段继续发送枚举请求。
在一个实现中,分析和/或汇编在枚举会话期间从节点收到的信息以生成各种枚举数据。例如,随后可确定在枚举会话期间发送枚举应答的所有节点的数量和/或身份以及其它信息。
图2例示操作流程200,它包括可在由网络中的枚举器执行的枚举会话内执行的各种操作。随后对图2的说明参考图1的网络100作出。更具体地,图2的说明参考图1的枚举模块116和网络100作出。然而应当理解,参考图2描述的操作流程不应限于由枚举模块116或在网络100内执行。另外还应理解,尽管操作流程200表示操作执行的特定顺序,但这些操作在其它实现中可以按不同顺序执行。
操作流程200主要例示请求阶段。请求阶段是枚举会话的一部分,其中将枚举应答发送到网络中的节点。请求阶段在操作流程200中示为包括操作210-218的操作循环。
如所示的,在操作208,设置枚举请求之间所需的时间间隔。在图2所示的实现中,操作208在请求阶段之前于操作流程200期间发生一次。在一替换实现中,操作208也可在请求阶段期间发生。这提供在请求阶段期间基于操作或网络条件或操作者偏好来改变枚举请求之间所需时间间隔的灵活性。
接着,在操作210,枚举请求由枚举模块116发送至网络100中的节点110。在操作210中发送的枚举请求主要包括标识先前已经发送过由枚举模块116收到的枚举应答的节点110的信息。也就是说,在操作210中发送的枚举请求可包括对先前已经发送过由枚举模块116收到的枚举应答的节点110的确认。
在一个实现中,在操作210中发送的枚举请求包括仅标识或确认自从枚举模块116发送最后一个枚举请求起已经发送过由枚举模块116收到的枚举应答的这些节点110的信息。在其它实现中,在操作210中发送的枚举应答包括标识在当前枚举会话期间已经发送过由枚举模块116收到的枚举应答的全部或部分节点110的信息。
接着,在操作212确定枚举模块116是否应当结束枚举会话的请求阶段。也就是说,作出是否应当退出由操作210-218形成的操作循环的判断。在操作212作出的判断可基于各种因素。在一些实现中,在操作212作出的判断是基于表示或暗示在枚举会话期间有可能应答的所有节点已经作出应答的某一或某些准则来作出。例如,在一个实现中,如果自从枚举模块116收到最后一个枚举应答起预定时间已经过去,则在操作212处作出结束枚举会话的请求阶段的判断。在其它实现中,可使用其它准则来确定枚举模块116是否结束枚举会话的请求阶段。应当了解,操作212可在由操作210-218形成的操作循环中的一些点上发生而不是在操作210之后发生。
如果在操作212确定枚举模块116应当结束请求阶段,则操作流程200继续至下文中描述的操作220。然而,如果在操作212确定枚举模块116不应当结束请求阶段,则操作流程进行至操作214,其中作出自从枚举模块116发送最后一个枚举请求起是否已经收到任何枚举应答的判断。
如果在操作214确定自从枚举模块116发送最后一个枚举请求起未收到过枚举应答,则操作流程200继续至下文中描述的操作218。然而,如果在操作214确定自从枚举模块116发送最后一个枚举请求起已收到一或多个枚举应答,则存储发送应答的节点的身份,并且操作流程200继续至操作218。
在操作218,确定是否有枚举请求要发送。可用各种方法作出该判断。例如,在一个实现中,基于等于在操作208设置的枚举请求之间所需时间间隔的时间段自从枚举模块116发送最后一个枚举请求起是否已经过去来作出该判断。如果在操作218确定有枚举请求要发送,则操作流程200返回至操作210。如果在操作218确定没有枚举请求要发送,则操作流程返回至操作214。应当了解,操作218可在请求阶段中的一些点发生而不是在操作214之后发生。
返回操作212,如上所述,如果在其中确定枚举模块116应当结束请求阶段,则操作流程200继续至操作220。在操作220,汇编和发送和/或存储在枚举会话期间收集的数据,且操作流程200结束。在操作220可汇编的数据类型的一些示例包括在给定时间段内对枚举模块116发送的枚举请求作出应答的所有节点的计数和/或标识。
在一些实现中,操作220在操作流程200中并非位于操作212之后。也就是说,在一些实现中,操作220不是跟随枚举模块116应当结束枚举会话的请求阶段的确定而执行。相反在一些实现中,汇编和发送数据的任务可在请求阶段期间的一或多个点发生,或者在整个请求阶段过程中不断地发生。
每一应答器模块118监视网络中来自枚举模块116的枚举请求的发送。在本文描述的各种实现中,一旦检测到枚举请求,每一应答器模块118就执行应答调度方法。通常,应答调度方法确定应答器模块118是否将通过发送枚举应答来对枚举请求作出应答。如果确定应答器模块将对枚举请求作出应答,则调度方法确定应答器模块118发送枚举应答的时间。
有许多不同类型的应答调度方法可供应答器模块118使用。作为示例但非限制,图3、4和5各自例示可由应答器模块118使用的应答调度方法。在一些实现中,网络100中的每一应答器模块在给定枚举会话期间使用相同或基本相似的应答调度方法。在其它实现中,网络100中各种应答器模块118可使用不同的调度方法。
以下对图3、4和5的说明参考图1的网络100作出的。更具体地,对图3、4和5的说明是参考网络100的应答器模块118和枚举器模块116作出的。然而应当理解,图3、4和5中描述的调度方法不应限于由应答器模块118、枚举模块116执行或在网络100中执行。另外还应理解,尽管图3、4和5所示的调度方法各自表示操作和/或状态的一具体顺序,但这些操作和/或状态在其它实现中可按不同顺序执行,各种所示的操作和/或状态也可以不被执行或包括,和/或可以包括其它操作和/或状态。
首先转到图3,在此示出的是简化的状态转换图,以例示应答器模块118在网络枚举期间可转换通过的示例状态。如所示的,应答器模块118最初在空闲态310。一旦收到枚举请求312,应答器模块118就设置应答定时器,确定枚举应答发送时间,并从空闲态310转换到暂停态320。枚举应答发送时间参考定时器指定一时间,在该时间应答器模块发送枚举应答至枚举器模块116。
应答器模块118可用各种方法确定枚举应答发送时间。在一些实现中,应答器模块118基于该应答器模块118对发送自其它应答器模块的枚举应答的观测来确定枚举应答发送时间。更具体地,在这些实现中,应答器模块通过这些观测使用一种定时方法设置枚举发送时间,该方法假设在网络中的其它节点正在使用相似的定时方法,会倾向于生成跨网络被发送的枚举应答的期望分布。应当理解,尽管定时方法可使用网络中其它节点正在使用相似的定时方法的假设,但该假设可能是不正确的。
在一个这样的实现中,应答器模块118对其它应答器模块发送枚举应答所引起的跨网络平均枚举应答密度进行观测。在另一个这样的实现中,应答器模块118对根据由于其它应答器模块发送枚举应答所致的跨网络每给定时间段发送的数据量(例如比特每秒)的网络负载进行观测。如下参考图4和5描述如何计算发送时间的更多具体示例。
一旦处于暂停状态320,应答器模块118或者等待定时器到达应答发送时间322,或者等待对包含枚举模块116已经收到来自应答器模块118的枚举应答的确认(肯定确认)的枚举请求324的接收。在定时器到达应答发送时间322的情形中,应答器模块在应答发送时间或者在其它时间发送枚举应答,并且转换至已发送态330。在应答器模块收到肯定确认324的情形中,应答器模块118转换至完成态340。
一旦处于已发送态330,应答器模块118等待对枚举请求322或334的接收。如果枚举请求不包含肯定确认334,则应答器模块118设置应答定时器,确定枚举应答发送时间,并且如前所述从已发送态330转换至暂停态320。如果枚举请求包含肯定确认332,则应答器模块118从已发送态330转换至完成态340。
在一些实现中,应答器模块118使用“基于巡回”的调度方法。基于巡回的调度方法调度在多个连续定时巡回之一期间枚举应答的发送,这通常可在网络中各种应答器模块之间进行同步。在基于巡回的调度中,巡回的定时是由各应答器模块118独立计算的。然而,由于在各应答器模块118中使用共同的调度方法以及由枚举请求触发的调度方法近似同时的起始时间,在各种应答器模块118中的定时巡回之间可发生一般同步。
基于巡回的调度可分类为固定巡回长度调度或可变巡回长度调度,尽管可使用其它类型的调度。在固定巡回长度调度中,在给定定时巡回序列中每一定时巡回的持续时间近似相同。与之相比,在可变巡回长度调度中,在给定定时巡回序列中每一定时巡回的持续时间可以变化。
在固定巡回长度调度与可变巡回长度调度两者中,都试图以枚举应答之间的某个所需的最小平均时间来均匀分布来自所有可访问应答器模块的枚举应答的发送。为实现这一目标,固定和可变巡回长度调度方法都计算节点剩余值(Nr)和最小时间间隔值(I)。节点剩余值(Nr)是整数,表示对还未从枚举模块116收到肯定确认的节点数量的估计。最小时间间隔值(I)指定在枚举会话期间来自所有可访问节点的应答器模块的跨网络枚举应答之间所需的最小平均时间。
在固定巡回长度调度中,Nr和I值用于确定在一给定巡回中是否有发送枚举应答。在可变巡回长度调度中,Nr和I值用于确定巡回的长度。
确定节点剩余值(Nr)的方式取决于所使用的基于巡回调度的类型。确定节点剩余值(Nr)的一些示例方法在以下参考图4和5描述。I值可按经验选择,或者基于各种参数诸如最大网络大小、网络传输速度等来计算。在一些实现中,I是以毫秒(ms)来指定的。在其它实现中,以其它时间单位来表示I。一旦获得I值,可将它存储在网络中所有应答器模块118中,或者使I值对它们是可访问的。
图4和5各自例示调度方法的一种可能实现的操作流程。以下关于图4和5的讨论是参考单个应答器模块118响应于单个枚举请求来作出的。应当理解,每次应答器模块118收到枚举请求时,图4和5所示的操作流程在应答器模块118中发生。另外还应理解,与图4和5的所示的相同或相似的操作流程通常会在枚举会话期间在网络100的每一可访问应答器模块118中发生。
图4例示应答器模块118中固定巡回长度调度方法的一个可能的操作流程400。在一些实现中,操作流程400例示的调度方法在每次应答器模块118收到枚举请求时由该应答器模块执行。在其它实现中,操作流程400例示的调度方法仅在指定时间由应答器模块118执行。也就是说,在一些实现中,操作流程400例示的调度方法是基于各种操作条件或用户需求而被“开启”或“关闭”的。
在一些实现中,在应答器模块中执行操作流程400之前的某一时间确定定时巡回持续时间值(td),它指定在固定巡回长度调度方法中使用的定时巡回的持续时间。td值可按经验来选择,或者基于各种参数诸如最大网络大小、网络传输速度等来计算。在一些实现中,td是整数值,它以毫秒(ms)为单位指示定时巡回持续时间。在其它实现中,td以其它时间单位表示。一旦获得td值,就将它存储在网络的所有应答器模块118中,或者使该td值对它们是可访问的。
在许多实现中,值td是在枚举会话开始之前确定的。在大多数实现中,值td在整个调度方法过程中保持不变。在一些实现中,值td具有第一值用于调度方法中的第一定时巡回,并且基于诸如观测到的处理负载等因素调整为第二值用于调度方法中剩余的定时巡回。
在操作410,枚举请求由应答器模块118接收。枚举请求的接收开始或“触发”应答器模块118中的调度方法。在操作412,作出收到的枚举请求是否包含枚举模块116已经从应答器模块118收到枚举应答的指示(“肯定确认”)的判断。例如,应答器模块可能已经发送了枚举应答以回答在枚举会话的较早时间发送的枚举请求。
如果在操作412确定收到的枚举请求包含肯定确认,则操作流程400结束。然而,如果在操作412确定收到的枚举请求不包含肯定确认,则在操作414确定概率值(φ),它指示在操作流程400期间发生的定时巡回序列的下一定时巡回中将发送枚举应答的概率。
概率值(φ)可用各种方法来选择或确定。例如,在一个实现中,值φ是基于对尚未发送枚举应答至枚举模块116的应答器模块数量的估计来确定的。在一个实现中,φ是按照下面的公式来确定的:
在第一次执行操作414时,最初将Nr值设置为最大节点值(Nmax),它表示网络100中可访问节点的最大数量的估计。在操作流程中以后每次执行操作414时,则基于观测到的从其它应答器模块发送的应答来确定Nr,如下将对此作出详述。
接着,定时巡回操作416开始持续时间td的定时巡回。与定时巡回的开始基本上同时,在操作418确定在定时巡回期间枚举应答是否要由应答器模块118发送。这是通过在操作414确定的概率φ来确定的。也就是说,使用一些机制或算法通过概率φ来选择在当前巡回期间是否将发送枚举应答。
如果在操作418确定在当前定时巡回期间不要发送枚举应答,则操作流程400进行至如下将描述的操作424。然而,如果在操作418确定在当前定时巡回期间要发送枚举应答,则在操作420确定在该巡回期间发送枚举应答的精确时间。在一个实现中,在巡回期间发送枚举应答的时间是在巡回持续时间内随机选择的。在其它实现中,在巡回期间发送枚举应答的时间可用其它方法来选择。在操作420之后,在操作422处以在操作420期间确定的时间来发送枚举应答。
在操作422之后,在操作424生成在当前定时巡回期间发送枚举应答的所有节点的计数(r)。在一个实现中,计数(r)是由应答器模块通过监视网络并且对当前定时巡回期间网络中发送枚举应答的数量进行计数来产生的。应当理解,尽管操作424示为在操作422之后发生,而在操作中,当前定时巡回期间在网络中发送的枚举应答的计数通常会贯穿全部或大多数定时巡回发生。
接着,操作流程400进行至操作426,其中估计节点剩余值(Nr)。通常,Nr是基于观测到的从其它应答器模块发送的应答来估计的。例如,在一个实现中,节点剩余值(Nr)是按照下面的公式来计算的:
在操作流程400中第一次执行操作426时,N前-值与Nmax相同。在操作流程400中以后每次执行操作426时,N前-值将是上次在流程400中执行操作426时计算的Nr值。
在一些实现中,Nr计算值具有上界(NUB)和/或下界NLB。NUB和NLB的值可以用各种方法选择。作为示例但非限制,这些值可以是预定的固定值,这些值可在操作流程400期间计算,这些值可基于各种观测到的节点或网络行为,和/或这些值可以是先前或当前计算的Nr值的百分比。
另外,在一些实现中,不是使用在操作426估计或计算Nr的值(td),而是测量定时巡回的实际持续时间(t实际),并且随后在估计或计算Nr时使用测量值t实际。例如,使用值t实际代替上面所示的公式(2)中的值td。
接着,在操作428作出在当前定时巡回期间是否已经收到枚举请求的判断。如果确定在当前定时巡回期间已经收到请求,则操作流程返回上述操作412。如果确定在当前定时巡回期间未收到请求,则操作流程进行至操作430,其中作出是否已经满足不活动条件的判断。
不活动条件可以用不同的方法来选择和/或确定。例如,在一个实现中,如果自从枚举请求的接收起给定时间已经过去,则满足不活动条件。如果在操作430确定已经满足不活动条件,则操作流程结束。然而,如果在操作430确定还未满足不活动条件,则操作流程返回至前述操作414。
如上所述,操作流程400将在收到包含肯定确认的枚举应答(操作412)或者在已经满足不活动条件(操作430)的情况下结束。另外,在一些实现中,在操作流程中收到枚举请求的任何点,都可作出请求是否包含肯定确认的判断。如果确定收到的请求不包含肯定确认,则操作流程继续。例如,如果在操作416之后但在操作418之前收到不包含肯定确认的请求,则操作流程会继续至操作418。如果确定收到的请求包含肯定确认,则操作流程结束。
在一个实现中,应答器模块保持对自从操作循环400开始起期间观测到的从其它应答器模块发送的枚举应答的总数(TR)的计数。按照该实现,每次应答器模块收到枚举请求时,就存储收到该请求时TR的值(TRmb)。也就是说,值TRmb针对每一收到的请求而存储。在给定巡回i结束时,将最新的TRmb值与前一定时巡回结束时的值TRmb相比较。如果TRmb的最新值大于前一定时巡回结束时的值TRmb,则如下所示将TRmb的最新值TRmb与值TRmb之差(TRdiff)加到在操作流程400的操作426处确定的值Nr上:
图5例示应答器模块118中可变巡回长度调度方法的一个可能的操作流程500。在一些实现中,操作流程500例示的调度方法在应答器模块118每次收到枚举请求时由应答器模块执行。在其它实现中,操作流程500例示的调度方法仅在指定的时间由应答器模块118执行。也就是说,在一些实现中,操作流程500例示的调度方法基于各种操作条件或用户需求而被“开启”或“关闭”。
在应答器模块中执行操作流程500之前的某一时间,确定传输概率值(φ)和/或初始定时巡回持续时间值(t初始)。传输概率值(φ)指示在定时巡回中将发出应答的概率。初始定时巡回持续时间值(t初始)指定可变巡回长度调度方法的第一定时巡回的持续时间。
可按经验选择φ和t初始的值,或基于各种参数诸如最大网络大小、网络传输速度等来计算。一旦获得φ和t初始的值,就将它们存储在网络中所有应答器模块118中,或者使φ和t初始的值对它们是可访问的。
在许多实现中,在开始枚举会话之前确定值φ。在大多数实现中,值φ在整个调度方法过程中保持不变。在一些实现中,值φ具有第一值用于调度方法中第一定时巡回,并且基于诸如观测到的过程负载等因素调整为第二值用于调度方法中剩余的定时巡回。
在一个实现中,如下确定t初始的值。首先,确定最大节点值(Nmax),它表示网络100中可访问节点的最大数量的估计。随后按照下面公式确定初始定时巡回持续时间值(t初始):
公式(4) t初始=φ×Nmax×I
在操作510,枚举请求由应答器模块118接收。枚举请求的接收开始或“触发”应答器模块118中的调度方法。在操作512,作出收到的枚举请求是否包含枚举模块116已经收到来自应答器模块118的枚举应答的指示(肯定确认)的判断。例如,应答器模块可能已经发送了枚举应答以回答在会话中较早时间发送的枚举请求。
如果在操作512确定收到的枚举请求包含肯定确认,则操作流程500结束。然而,如果在操作512确定收到的枚举请求不包含肯定确认,则随后在操作514确定下一个定时巡回的持续时间(T)。在第一次执行操作514时,T等于t初始。在操作流程中以后每次执行操作514时,基于观测到的从其它应答器模块发送的应答确定T。例如,在一个实现中,根据以下公式计算T值使得枚举应答将均匀地分布在下一个定时巡回中:
公式(5) T=φ×Nr×I
接着,定时巡回操作516开始持续时间T的定时巡回。与该定时巡回开始基本同时,在操作518确定在该定时巡回期间应答器模块118是否要发送枚举应答。如上所述通过概率φ作出该判断。也就是说,使用一些机制或算法通过概率φ来选择在当前巡回期间是否将发送枚举应答。
在一个实现中,应答器具有其进行操作的T的最小值。这或者可以直接以时间单位指定为Tmin,或者可以间接地指定为节点数Nmin。在这样一个实现中,如果T小于Tmin(或者Nr小于Nmin),则将定时巡回的持续时间设置为Tmin并将概率设置为1。
如果在操作518确定在当前定时巡回期间不发送枚举应答,则操作流程500进行至下述操作524。然而,如果在操作518确定在当前定时巡回期间要发送枚举应答,则在操作520产生在该巡回期间发送枚举应答的精确时间。在一个实现中,在巡回期间发送枚举应答的时间是在巡回的持续时间上随机选择的。在其它实现中,巡回期间发送枚举应答的时间可以用其它方法选择。跟随操作520,在操作522处以在操作520期间确定的时间发送枚举应答。
跟随操作522,在操作524产生当前定时巡回期间发送枚举应答的所有节点的计数(r)。在一个实现中,应答器模块通过监视网络并对在当前定时巡回期间在网络内发送的枚举应答数量进行计数来产生计数(r)。应当了解,尽管操作524示为在操作522之后发生,但在操作中,对当前定时巡回期间在网络中发送的枚举应答的计数通常会贯穿全部或大多数定时巡回发生。
接着,操作流程500进行至操作526,其中估计节点剩余值(Nr)。通常,Nr是基于观测到的从其它应答器模块发送的应答来估计的。可以估计的是,在当前巡回开始处已经应答枚举请求的应答器模块的数量(N当前)近似为使用对N当前的这一估计,于是按以下公式估计节点剩余值(Nr):
接着,在操作528作出在当前定时巡回期间是否已经收到枚举请求的判断。如果确定在当前定时巡回期间已经收到请求,则操作流程返回至上述操作512。如果确定在当前定时巡回期间还未收到请求,则操作流程进行至操作530,其中作出是否已经满足不活动条件的判断。
不活动条件可用多种方法来选择和/或确定。例如,在一个实现中,如果自从枚举请求的接收起已经经过给定时间则满足不活动条件。如果在操作530确定已经满足不活动条件,则操作流程结束。然而,如果在操作530确定不活动条件还未满足的判断,则操作流程返回至前述操作514。
如前所述,操作流程500将在收到包含肯定确认的枚举应答(操作512)或在不活动条件已经满足(操作530)的情况下结束。另外,在一些实现中,在操作流程中收到枚举请求的任何点,都可作出该请求是否包含肯定确认的判断。如果确定收到的请求不包含肯定确认,则操作流程继续。例如,如果在操作516之后但在操作518之前收到不包含肯定确认的请求,则操作流程将继续至操作518。如果确定收到的请求包含肯定确认,则操作流程结束。
在上述各种定时方法中,应答器模块118一般在每次收到枚举请求时发送枚举应答。同样如上所述,在各种实现中,应答器模块一般将监视网络100并对在给定时间段内发送的枚举应答的数量进行计数。该计数随后用于估计已经对枚举请求进行应答的应答器模块数量(Nr)。然而,在一些实现中,应答器模块可通过以给定概率z作为整体(广播)将应答发送到网络并且以(1-z)的概率发送直接应答(单播)至枚举模块116,来减少在网络上增加的负载。在这样的实现中,仍有可能通过将观测到的应答数量除以z来估计Nr。
图6例示计算机系统600形式的示例网络节点110。在其最基本配置中,计算系统600包括至少一个处理单元602和存储器604。取决于计算设备的精确配置和类型,存储器604可以是易失性(如RAM)、非易失性(诸如ROM、闪存等)或两者的结合。该最基本配置在图6中由虚线606来例示。另外,计算机系统600还可具有其它特征/功能性。例如,设备600还可包含其它存储(可移动和/或不可移动),其中包括但非限制磁或光盘或带。这样的其它存储在图6中例示为可移动存储608和不可移动存储610。
计算机系统600还可包含允许该设备与其它设备通信的通信连接612。计算机系统600还具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备614。输出设备616诸如显示器、扬声器、打印机等也可包括在计算机系统600中。所有这些设备在本领域是众知的并且不必在此详细讨论。
在示例性实现中,枚举器模块、应答器模块以及其它模块可由存储在存储器604和/或存储设备608与610中并由处理单元602处理的指令来具体化。会话状态表和记录、发现状态、确认、枚举请求、枚举应答以及其它数据可存储在存储器404和/或存储设备608与610中。
图7例示其中在存在多个节点枚举器的情况下实现网络节点枚举的示例性计算机网络700。计算机网络700仅是示例性的,并且应当理解,可在存在多个节点枚举器的情况下使用其它网络配置、协议和操作。计算机网络700包括通过网络云712互连的一定数量(N)的节点710。变量N用于表示单个节点对网络上可访问节点数量的估计。不同的节点可对该数量有不同的估计,但各单独估计通常在值上相近。在图7中,使用任意估计N。节点710与网络云712之间的锯齿线(诸如线708)表示节点710在网络700中是可访问的(即“在线”)。
如图所示,节点(1)720、节点(2)722以及节点(3)724包括枚举器模块716,而节点(4)726、节点(5)728、节点(6)730、节点(7)732、节点(N)734包括应答器模块718。应当理解,节点可包含应答器模块和枚举器模块两者。参考图7,假设节点(1)720、节点(2)722和节点(3)724还包括应答器模块(未示出,但也可称为应答器模块718)。这些模块与参考图1讨论的那些模块相似,尽管在图7中例示的模块被明确描述为支持来自多个节点的并发枚举操作。
在多个枚举器的网络中,任何枚举器可在任何时间开始,包括在零、一或多个其它枚举器已经活动的时候开始。另外,网络可在时间上被分割(诸如由于网络内的硬件故障)并在多个枚举器活动时重新连接,引起相互可见的活动节点数量很大的即时变化。
在一个实现中,每一枚举模块716可通过网络云712发送枚举请求并且处理来自多个节点710的枚举应答。在一个实现中,枚举请求可包括但非限于进行请求的枚举器的标识符以及标识(即确认)先前已经对枚举请求进行应答的节点710的确认信息。在一个示例中,枚举请求包括枚举器标识符(“eid”)以及顺序标识符(“xid”),其中顺序标识符是由枚举器提供的,以区别由该枚举器发起的各个枚举会话。枚举器标识符可以是允许应答器模块718区别不同枚举器的任何标识符,诸如IP地址、MAC地址或其它节点或模块标识符。在一个实现中,顺序标识符区别一个特定枚举器的不同枚举会话,允许应答器模块检测何时枚举器重新开始其枚举会话。枚举请求的其它示例性特性参考图1讨论。一旦收到枚举应答,枚举模块716存储在应答中提供的信息以供处理或稍后检索,诸如参考图1所讨论的。
对于应答器模块718来说,它生成对一或多个枚举模块716的枚举请求的应答并且处理来自各种枚举器模块716的确认。在一个实现中,每一应答器模块718维护每一进行请求的枚举器的会话状态和进行应答的节点的独立发现状态。当应答器模块718收到枚举请求时,应答器模块718检查该枚举请求并且确定与该请求相关联的枚举器标识符和顺序标识符。应答器模块718随后更新关联于枚举器标识符的会话状态并且在适当的时候更新进行应答的节点的发现状态。进行应答的节点发出的应答受发现状态控制,而发现状态则依赖于与每一进行枚举的节点相关联的会话状态。
图8例示两部分简化的状态转换图800,它例示应答器模块可在网络枚举期间转换通过的示例状态。在一个实现中,每一应答器模块为观测到的每一进行请求的枚举器维护一个会话状态(见会话状态图802)。例如,会话状态可作为具有各个会话状态记录的会话状态表(或者更一般的具有会话状态数据存储,无论是表格式还是不是表形式的)来维护,其中每一记录与枚举器标识符、顺序标识符和会话状态值有关。在一个实现中,会话状态记录还可包括与进行请求的枚举器相关联的活动时间值和/或重新传输计数器。在一替换实现中,单一重新传输计数器是由应答器模块而不是由每一枚举器的模块来维护的。示例性会话状态可包括LISTENING(监听)、PENDING(待决)和DONE(完成)。另一可能的会话状态值可包括IDLE(空闲)(见下)。同样,每一应答器模块维护发现状态(见发现状态图804)。在一个实现中,可维护包含两个发现状态值的发现状态:IDLE(空闲)和RESPONDING(应答)。
活动时间值(也称为刷新时间值)表示相关联的枚举器最后发出枚举请求的时间。应答器使用活动时间值来检测空闲枚举器(例如停止发送枚举请求但还未确认应答器的枚举器),跟踪活动枚举器(例如,以防止将冗长的枚举视为若干不同的枚举),以及检测完成的枚举(例如,如果枚举器不指示完成或者诸如由于包丢失应答器没有观测到确认)。如果检测到空闲枚举器或完成的枚举,则应答器模块更新会话状态,诸如通过从表中删除空闲枚举器的会话状态记录,通过清除空闲枚举器的会话状态记录,将空闲枚举器的会话状态设置为IDLE(空闲)状态,等等。
图8还示出LISTENING会话状态806,它指示应答器模块正在监听枚举请求的虚态。会话状态图802指示枚举请求的接收同时会话状态为LISTENING使会话状态转换至与进行请求的枚举器(例如请求2)相关联的PENDING状态808。如此,LISTENING会话状态806看上去可能分支至多个会话状态,每一个对应检测到的一个进行请求的枚举器(图8示出E个枚举器的会话状态)。新的枚举器可在任何时间进入枚举过程,引起自LISTENING会话状态806的新分支。在一些实现中,例如,分支可指示在会话状态表中为新检测到的枚举器创建新会话状态记录,或者用新信息更新有关先前检测到枚举器的现有会话状态记录。同样,最近观测到的枚举器可在任何时间放弃枚举过程。一或多个枚举器的这些进入与退出可导致参与单一枚举过程的枚举器的极为动态的集合。还应理解,图8例示的状态转换图仅是示例性的并且还可以使用其它状态和转换。
当应答器节点收到枚举请求时,该节点的应答器模块根据枚举请求确定枚举器标识符和顺序标识符。取决于会话和发现状态,应答器模块可用不同方法来应答:
关于会话状态,如果枚举器标识符对于应答器模块是新的(例如没有相关联的会话状态记录存在),应答器模块在会话状态表中创建该枚举器标识符的会话状态记录,将来自枚举请求的顺序标识符存储到会话状态表中,以及在会话状态表中将会话状态值设置为PENDING并且将活动时间值设置为在会话状态表中一确定值。应答器模块还将重新传输计数更新为重新传输阈值并且能够设置BEGUN(已开始)标志。BEGUN标志可以在巡回结束时检测以便如下所述触发对节点剩余估计Nr的某些细化用于下一个巡回。
如果枚举器标识符对于应答器模块不是新的,则应答器模块读取对应于枚举请求中枚举器标识符的现有会话状态,并且将会话记录中的顺序标识符与枚举请求中的顺序标识符相比较。如果它们相符并且枚举器还未确认枚举请求中进行应答的节点,则更新活动时间(例如更新为当前时间)。如果顺序标识符不匹配,则删除现有的会话状态记录并且用如在前面的段落中所述地构造的新会话状态记录来代替(或者可替换地,更新以提供相同的初始状态)。如果顺序标识符匹配且枚举器正在确认枚举请求中进行应答的节点,则将关联于该枚举器的会话状态设置为DONE状态810。
应当理解,应答器模块为每一进行请求的枚举器保存会话状态。多个会话状态的效果部分地由发现状态来管理。如果应答器模块的发现状态当前处于IDLE状态812并且从任何应答器模块收到枚举请求,则应答器模块转换至RESPONDING状态814。在RESPONDING状态814中时,应答器模块周期性地发送可由一或多个枚举器接收和确认的枚举应答。在一个实现中,应答器模块将发送枚举应答直至已经发送了确定数量的应答(例如四个应答的重新传输阈值)为止或者直至所有当前的PENDING枚举器已经确认收到来自应答节点的枚举应答(即所有会话状态已经转换至DONE状态810)为止。如果任一这些条件发生,则发现状态返回至IDLE状态812。
应当理解,管理涉及所确定的重新传输阈值的重新传输的重新传输计数器可在从新枚举器收到枚举请求时被更新。如此,如果应答器的重新传输阈值为4并且在从新枚举器收到枚举请求之前已经应答两次,则重新传输计数器可复位以引起四次后续的枚举应答。
图9例示管理枚举应答的示例性操作900。通常,应答器监听枚举请求,其中包含枚举器标识符(即,标识作出请求的枚举器)和顺序标识符(例如,标识该枚举器指定的枚举会话)。在一些枚举请求中,枚举器还可确认它已收到并接受其枚举应答的那些应答器。接收操作902和916表示独立且可能的用于接收枚举请求和确认的并发操作,尽管应当理解,因为可在枚举请求中接收确认,所以这些接收操作902和916在一些实现中可以是单个操作。
接收操作902接收来自枚举器的枚举请求。会话状态操作904从枚举请求得到枚举器标识符和顺序标识符并且创建或更新关联于该枚举器标识符的会话状态。
例如,如果应答器从枚举器接收具有顺序标识符为“2”的枚举请求,则会话状态操作904确定是否已经为该枚举器记录了会话状态(例如在会话状态表中)。如果是并且如果关联于枚举器会话状态的顺序标识符等于“2”,则更新针对该枚举器记录的会话状态(例如更新活动时间)。然而,如果关联于枚举器的现有会话状态记录的顺序标识符不等于“2”,则会话状态记录被清除且重新创建(或仅更新)以反映新的顺序标识符、更新的活动时间和PENDING会话状态,并且可以设置BEGUN标志。
而且,如果应答器为枚举器保存的会话状态记录尚不存在,则以顺序标识符“2”、更新的活动时间和PENDING会话状态创建会话状态记录,并可设置BEGUN标志。应当理解,接收操作902和会话状态操作904可在同一会话中或在不同枚举会话中和/或对于不同的枚举器并发地多次发生。
此外,在一或多个枚举请求正由操作902和904处理时,发现状态也正在维护。如果发现状态处于IDLE状态,则第一请求操作906响应于枚举请求的接收将由应答器维护的发现状态设置为RESPONDING。该状态转换指示收到的枚举请求是一或多个并发枚举会话的集合中收到的第一枚举请求。
应答操作908发送枚举应答(例如,按照在此描述的基于周期性地更新的节点剩余估计的应答调度)同时发现状态处于RESPONDING状态。枚举应答可包含应答器标识符等,以便通知任何进行监听枚举节点哪些应答器正在指示其在网络中是活动的。
接收操作916接收进行请求的枚举器已经收到并接受应答器的枚举应答的确认(例如,连同枚举请求或另外的方式)。因此,会话状态操作918找出关联于进行请求的枚举器的会话状态记录并且将该枚举器的会话状态设置为DONE。
判决操作910确定在各种会话状态超时和复位的条件下,已从其收到枚举请求的所有枚举器是否已经确认应答器(例如,由应答器保存的所有会话状态记录指示DONE会话状态)。如果否,发现状态保持在RESPONDING状态并且处理返回至应答操作908,经历暂停操作912,该操作将节点的应答(均匀地或非均匀地)间隔开。否则,如果所有枚举器已经确认应答器,则发现状态操作914将发现状态设置为IDLE,直到收到新的枚举请求。
在一个操作中,暂停操作912更新节点剩余估计并相应地调度可能的枚举应答,例如按照确定的延迟。在一个多枚举器实现中,示例节点剩余估计可按如下公式重新计算:
使用该节点剩余估计,可计算新的巡回持续时间以在传输应答时施加该确定的延迟。可替换地,可计算进行应答的概率,这也在传输应答时引入确定的延迟。也可使用其它确定的延迟。
另外,在一个实现中,如果BEGUN标志被设置,则可调整估计以减少活动节点产生大量应答的概率(例如,象是在存在大量静止的应答器(例如,处于IDLE或DONE状态)从一新枚举器收到枚举请求时)。例如,如果BEGUN标志被设置(指示收到新枚举器的枚举请求),则增加节点剩余估计Nr用于随后的巡回。在一个实现中,如果节点剩余估计Nr小于Nmax的一半,则加倍节点剩余估计Nr用于下一巡回。如果Nr大于Nmax一半但小于Nmax,则将Nr设置为Nmax。如果Nr大于Nmax,则Nr保持不变。该算法表示增加节点剩余估计以减少大量静止应答器同时对一新枚举请求进行应答的影响的示例方法,尽管也可考虑其它算法。如此,静止应答器将在下一巡回具有较大的估计,从而减缓其应答并且允许现有的枚举会话在新的会话之前完成。
在一个实现中,操作908、910和912的处理受限于确定的重新传输阈值(例如在一个实现中为4次应答)。如果在所有枚举器还没有确认应答器的情况下应答器的重新传输计数器满足重新传输阈值,则发现状态操作914仍然退出并将发现状态设置为IDLE。应当理解,响应于收到来自新枚举器的枚举请求或者在新的枚举会话(例如顺序标识符不匹配)中收到枚举请求,则可复位重新传输计数器。
给定一种用于管理多个枚举器的枚举应答的所述方法,枚举器逻辑也可改变以改进系统。因为多个枚举器正在对一或多个应答器进行请求,于是存在这样一种情况:枚举器可确定它可在不发出它自己的枚举请求和确认的情况下获得它需要的枚举应答,从而减少总的网络负载。
在一个实现中,每一枚举器可观测来自其它枚举器的请求并且保存作出请求的各枚举器的计数CE。有了该计数,每一枚举器就能确定由每一个这样的枚举器发送确认所导致的负载是否会大于由每一应答器发送满足其重新传输阈值(例如,4次应答)数量的应答所导致的负载。示例的秘密行动(stealth)条件如下给出:
应答负载<确认负载
其中A表示可分组到单个包中的确认的数量。如果该秘密行动条件为真,则枚举器可进入“秘密行动”模式并且抑制发送后续的枚举请求/确认包,至少直到该条件改变为止。如此,“秘密行动”枚举器仅观测和记录来自正在对来自其它枚举器的枚举请求进行应答的应答器的枚举应答。秘密行动枚举器没有通过发送其自己的枚举请求和确认来增加网络通信量。还应当理解,也可独立于公式(8)的秘密行动条件或结合它来计算和使用其它秘密行动条件,诸如基于目标负载的影响、基于固定的枚举器阈值等的秘密行动条件。
枚举器还可通过在一个叫做估计时间间隔(称为“估计时间间隔”)的时间间隔上对包计数来评估网络上的负载。该估计时间间隔可以与定时巡回持续时间变量td相同。可替换地,该估计时间间隔可表示枚举器传输枚举请求或确认之间的时间。也可使用其它估计时间间隔,并且这些估计时间间隔可以是可变的或固定的。例如,在一个实现中,估计时间间隔与巡回时间间隔有关但随着感兴趣的枚举器已知的枚举器数量线性增加。如果估计时间间隔最初与应答器使用的巡回时间间隔相同(例如,当CE=1:感兴趣的枚举器时),则估计时间间隔随着感兴趣的枚举器观测其它枚举器经时间计算为:
公式(9) 估计时间间隔=CE·巡回时间间隔
其中巡回时间间隔可以从定时巡回持续时间变量td或T获得。
估计时间间隔可由枚举用来管理枚举请求。例如,在一个实现中,如果枚举器在当前枚举会话中的一个完整的估计时间间隔内还未从任何新节点(即,先前未确认过的应答器节点)收到枚举应答,且网络上的枚举负载低于目标网络负载的50%,则枚举器停止发出枚举请求。枚举负载可根据枚举器在估计时间间隔期间观测到的所有枚举应答来确定。可以基于估计时间间隔利用其它枚举请求控制机制。
图10和11例示管理枚举应答的示例操作1000和1100。应当理解,参考图10与11例示和描述的操作也可结合参考图9例示和描述的操作一起使用。
应答器开始于IDLE会话状态1002。接收操作1004从被标识的枚举器接收枚举请求并且从该枚举请求确定枚举器标识符和顺序标识符。枚举请求的接收引起应答器从IDLE会话状态1002的转换。判决操作1006确定被标识的枚举器是否已经有了与应答器开始的会话状态(例如,通过找出具有与从枚举请求中提取的枚举器标识符相匹配的枚举器标识符的会话状态记录)。如果是,则这意味着应答器之前已经收听到该枚举器,并且另一个判决操作1008确定现有会话状态是否具有与从枚举请求中提取的顺序标识符相匹配的顺序标识符。如果否,则废弃操作1012废弃枚举器的现有会话状态(例如,通过删除它,清除它,设置废弃标志等等)。在废弃操作1012之后,或者如果判决操作1006没有检测到被标识枚举器的会话状态,则创建操作1010用PENDING状态创建新的会话状态记录,或者将被废弃的会话状态记录设置为PENDING并更新该会话状态记录中的顺序标识符。
如果判决操作1008确定顺序标识符匹配,则意味着枚举器仍在与先前由应答器记录的相同的会话中,并且处理进行至判决操作1014,它测试应答器是否已经由枚举器确认。如果是,则将会话状态设置为DONE并且处理进行至判决操作1018。如果否,处理直接进行至判决操作1018。
判决操作1018确定PENDING会话状态对于应答器是否仍存在。如果否,则处理进行至IDLE状态1002。否则处理通过连接符A进行至图11中的RESPONDING状态1102。
在RESPONDING状态1102中,应答器等待包的接收或者定时器的期满。如果收到包,则判决操作1106确定收到包的类型。如果包是枚举请求包,则处理通过连接符C进行至图10的接收操作1004。如果包是来自另一应答器的应答包,则增加应答器计数(假设该单独的应答器还未被计数)并且处理进行至RESPONDING状态1102。如果包是从枚举器收到的复位包,则判决操作1114确定该枚举器的会话状态是否已经存在。如果是,则在废弃操作1116中废弃会话状态,并且处理通过连接符B进行至图10中的判决操作1018。否则,处理进行至RESPONDING状态1102。
在RESPONDING状态1102中,如果RESPONDING检测到定时器期满,则判决操作1104确定哪一个定时器期满。如果定时器是巡回持续时间定时器,则更新操作1108重新估计节点剩余估计并且复位巡回定时器和/或相应地复位应答概率。可替换地,如果定时器是发送定时器,应答操作1110发送枚举应答。如果满足重新传输阈值,清除操作1118减少重新传输计数器并将一或多个会话状态设置为DONE状态。处理随后通过连接符B进行至图10中的判决操作1018。
尽管在附图中例示且在以上的详细说明中描述了系统和方法的一些特定实现,但将会理解,示出和描述的系统和方法不于所述的特定实现,而是能够在不脱离所附权利要求书阐述和定义的精神的情况作出众多的重新配置、修改和替换。
Claims (20)
1.一种管理网络节点对从计算机网络中多个枚举器收到的枚举请求传输一或多个枚举应答的方法,所述方法包括:
维护所述多个枚举器中每一个的会话状态;以及
如果所述多个枚举器的会话状态指示所述多个枚举器尚未确认所述网络节点的前一枚举应答,则发送所述一或多个枚举应答。
2.如权利要求1所述的方法,其特征在于,所述维护操作包括:
维护具有所述多个枚举器中每一个的会话状态记录的会话状态表。
3.如权利要求2所述的方法,其特征在于,所述会话状态记录包含由所述多个枚举器中相应的一个所提供的顺序标识符。
4.如权利要求2所述的方法,其特征在于,所述会话状态记录包含活动时间值,它指示所述多个枚举器中相应的一个最后请求枚举应答的时间。
5.如权利要求1所述的方法,其特征在于,还包括:
维护重新传输计数器以相关于重新传输阈值限制一或多个枚举应答;以及
如果所述重新传输计数器满足所述重新传输阈值,则终止所述枚举应答的传输。
6.如权利要求1所述的方法,其特征在于,所述维护操作包括:
从所述多个枚举器之一接收枚举请求;以及
响应于所述枚举请求的接收,使关联于所述枚举器的会话状态转换至新状态,其中所述网络节点在所述新状态中等待来自所述枚举器的确认。
7.如权利要求1所述的方法,其特征在于,所述维护操作包括:
从所述多个枚举器之一接收所述一或多个枚举应答的确认;以及
响应于对所述来自所述枚举器的确认的接收,使所述关联于所述枚举器的会话状态转换至新状态,其中所述新状态指示所述网络节点已经从所述枚举器收到确认。
8.如权利要求1所述的方法,其特征在于,还包括:
维护发现状态,它指示所述多个枚举器的会话状态是否指示了不再有枚举应答要被发送。
9.如权利要求1所述的方法,其特征在于,还包括:
维护发现状态,它指示所述多个枚举器是否已经确认所述网络节点的前一枚举应答。
10.如权利要求1所述的方法,其特征在于,所述发送操作包括:
发送所述一或多个枚举应答,直至发送了阈值次数的枚举应答为止。
11.如权利要求1所述的方法,其特征在于,所述发送操作包括:
发送所述一或多个枚举应答,其中每一枚举应答的传输在时间上与另一枚举应答的传输隔开确定的延迟。
12.如权利要求11所述的方法,其特征在于,所述延迟取决于对所述计算机网络中要应答枚举请求的剩余活动网络节点数量的估计。
13.如权利要求1所述的方法,其特征在于,还包括:
基于对所述计算机网络中要应答枚举请求的剩余活动网络节点数量的估计,调度所述一或多个枚举请求的传输。
14.如权利要求13所述的方法,其特征在于,在接收来自新枚举器的枚举请求之后的巡回中增加所述估计。
15.一种具有用于执行实现如权利要求1所述方法的计算机过程的计算机可执行指令的计算机可读介质。
16.一种管理计算机网络中网络节点传输枚举请求的方法,所述方法包括:
检测所述计算机网络中作出枚举请求的活动枚举器的数量;
将估计时间间隔作为所述活动枚举器数量的函数进行计算;
将所述计算机网络中的枚举负载作为在所述估计的时间间隔期间观测到的所有枚举应答的函数进行计算;以及
除非在所述估计时间间隔期间所述网络节点没有观测到先前未确认的枚举应答并且所述枚举负载小于所述计算机网络中目标负载的预定分数阈值,否则就发送枚举请求。
17.一种具有用于执行如权利要求16所述方法的计算机过程的计算机可执行指令的计算机可读介质。
18.一种管理对从计算机网络中多个枚举器收到的枚举请求的一或多个枚举应答的网络节点,所述网络节点包括:
会话状态数据存储,记录所述多个枚举器中每一个的会话状态;以及
应答器模块,如果所述多个枚举器的会话状态指示所述多个枚举器尚未确认所述网络节点的前一枚举应答,则发送所述一或多个枚举器。
19.如权利要求18所述的网络节点,其特征在于,还包括:
发现状态数据存储,记录指示所述多个枚举器是否已经确认所述网络节点的前一枚举应答的发现状态。
20.如权利要求18所述的网络节点,其特征在于,每一枚举应答的传输在时间上与另一枚举应答的传输隔开确定的延迟。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/302,726 | 2005-12-14 | ||
US11/302,726 US7870247B2 (en) | 2004-09-30 | 2005-12-14 | Node discovery involving multiple node enumerators |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101331715A true CN101331715A (zh) | 2008-12-24 |
Family
ID=38163254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800475127A Pending CN101331715A (zh) | 2005-12-14 | 2006-12-05 | 涉及多个节点枚举器的节点发现 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7870247B2 (zh) |
EP (1) | EP1966935A4 (zh) |
KR (1) | KR20080084962A (zh) |
CN (1) | CN101331715A (zh) |
WO (1) | WO2007070291A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340270A (zh) * | 2023-05-31 | 2023-06-27 | 深圳市科力锐科技有限公司 | 并发遍历枚举方法、装置、设备及存储介质 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7567523B2 (en) * | 2004-01-29 | 2009-07-28 | Microsoft Corporation | System and method for network topology discovery |
US7953845B2 (en) * | 2004-09-30 | 2011-05-31 | Microsoft Corporation | Network-specific estimation in network node discovery |
US7870247B2 (en) | 2004-09-30 | 2011-01-11 | Microsoft Corporation | Node discovery involving multiple node enumerators |
US20070245033A1 (en) * | 2006-04-14 | 2007-10-18 | Microsoft Corporation | Link layer discovery and diagnostics |
US20080198833A1 (en) * | 2007-02-20 | 2008-08-21 | Ist International Inc. | System and method of real-time scheduling and control for multi-hop zero-queue distributed systems |
EP2034663B1 (en) * | 2007-09-07 | 2012-08-29 | Sony Corporation | Main electronic device for communicating within a network and method for operating a main electronic device for communicating within the network |
JP5320780B2 (ja) * | 2008-03-17 | 2013-10-23 | 富士通株式会社 | 情報処理システム、機能拡張装置及び制御方法 |
EP2433243A4 (en) * | 2009-05-20 | 2013-12-18 | Redcliff Investments L L C | SECURE WORKFLOW AND DATA MANAGEMENT APPLICATION |
EP2525619A1 (en) * | 2010-01-14 | 2012-11-21 | Aisin Seiki Kabushiki Kaisha | Node, communications system, program, and communications method |
US9397912B2 (en) * | 2013-03-13 | 2016-07-19 | Arista Networks, Inc. | Method and system for active fabric management using unicast reachability monitoring |
US12081411B1 (en) * | 2023-03-20 | 2024-09-03 | The United States Of America As Represented By The Secretary Of The Navy | Internal network enumeration tool |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5953012A (en) * | 1994-12-13 | 1999-09-14 | Microsoft Corporation | Method and system for connecting to, browsing, and accessing computer network resources |
US5859835A (en) * | 1996-04-15 | 1999-01-12 | The Regents Of The University Of California | Traffic scheduling system and method for packet-switched networks |
US5948064A (en) * | 1997-07-07 | 1999-09-07 | International Business Machines Corporation | Discovery of authentication server domains in a computer network |
US6233611B1 (en) * | 1998-05-08 | 2001-05-15 | Sony Corporation | Media manager for controlling autonomous media devices within a network environment and managing the flow and format of data between the devices |
US6952396B1 (en) * | 1999-09-27 | 2005-10-04 | Nortel Networks Limited | Enhanced dual counter rotating ring network control system |
WO2002057917A2 (en) * | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US7319671B1 (en) * | 2001-03-29 | 2008-01-15 | Cisco Technology, Inc. | Time division polling scheme for network management systems |
US8543681B2 (en) * | 2001-10-15 | 2013-09-24 | Volli Polymer Gmbh Llc | Network topology discovery systems and methods |
JP2004207432A (ja) * | 2002-12-25 | 2004-07-22 | Mitsubishi Electric Corp | パワーモジュール |
GB0303812D0 (en) * | 2003-02-19 | 2003-03-26 | British Telecomm | Tracking audience size |
US7342896B2 (en) * | 2003-03-03 | 2008-03-11 | Sharp Laboratories Of America, Inc. | Centralized network organization and topology discover in Ad-Hoc network with central controller |
US7475125B2 (en) | 2003-11-24 | 2009-01-06 | Microsoft Corporation | Seamless discovery of workstation-installed remote applications from an extranet |
US7127655B2 (en) * | 2004-01-20 | 2006-10-24 | Qualcomm, Inc. | Methods and apparatus to optimize delivery of multicast content using probabilistic feedback |
US20060075113A1 (en) * | 2004-09-30 | 2006-04-06 | Microsoft Corporation | Network node enumeration |
US7870247B2 (en) | 2004-09-30 | 2011-01-11 | Microsoft Corporation | Node discovery involving multiple node enumerators |
-
2005
- 2005-12-14 US US11/302,726 patent/US7870247B2/en not_active Expired - Fee Related
-
2006
- 2006-12-05 WO PCT/US2006/046471 patent/WO2007070291A1/en active Application Filing
- 2006-12-05 KR KR1020087014363A patent/KR20080084962A/ko not_active Application Discontinuation
- 2006-12-05 EP EP06844861A patent/EP1966935A4/en not_active Withdrawn
- 2006-12-05 CN CNA2006800475127A patent/CN101331715A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116340270A (zh) * | 2023-05-31 | 2023-06-27 | 深圳市科力锐科技有限公司 | 并发遍历枚举方法、装置、设备及存储介质 |
CN116340270B (zh) * | 2023-05-31 | 2023-07-28 | 深圳市科力锐科技有限公司 | 并发遍历枚举方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP1966935A4 (en) | 2009-04-15 |
EP1966935A1 (en) | 2008-09-10 |
US7870247B2 (en) | 2011-01-11 |
US20060168276A1 (en) | 2006-07-27 |
KR20080084962A (ko) | 2008-09-22 |
WO2007070291A1 (en) | 2007-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101331715A (zh) | 涉及多个节点枚举器的节点发现 | |
CN101331714A (zh) | 涉及秘密行动节点枚举器的节点发现 | |
CN101331708A (zh) | 网络节点发现中的网络特定估计 | |
CN101432721B (zh) | 桥接网络中的潜在转发环路的检测 | |
CN111125409B (zh) | 一种门禁系统的控制方法、装置及门禁系统 | |
CN101641916A (zh) | 当前pnc控制器突然不可用时形成新微微网控制器(pnc)的过程中不确定性的消除 | |
CN101211277A (zh) | 选择子os的一个执行计划的方法与使用该方法的虚拟机监视器 | |
CN103346974A (zh) | 一种业务流程的控制方法及网络设备 | |
CN108337275A (zh) | 用于分发服务器的任务分发方法、装置以及设备 | |
CN101981871B (zh) | 监视系统 | |
CN112465615A (zh) | 账单数据的处理方法、装置及系统 | |
CN115562879A (zh) | 算力感知方法、装置、电子设备和存储介质 | |
CN111884875A (zh) | 一种离线设备确定方法及装置 | |
KR20060051938A (ko) | 네트워크 노드 열거에 관한 시스템 및 방법 | |
CN110557416A (zh) | 一种多节点协同打块的方法及系统 | |
CN114932553B (zh) | 机器人组队方法、机器人及存储介质 | |
CN113542775B (zh) | 直播保活服务系统、直播保活管理方法、服务器及介质 | |
KR20190089772A (ko) | 최상의 송신 채널을 동적으로 선택하기 위한 지능형 모델 | |
CN101981908B (zh) | 监视系统和终端装置 | |
CN115617478A (zh) | 一种任务处理方法、装置、系统、设备及存储介质 | |
CN101137972A (zh) | 自适应组播文件传输协议 | |
Alfa et al. | Discrete time analysis of cognitive radio networks with imperfect sensing and saturated source of secondary users | |
WO2015032028A1 (en) | System and method for controlling identification tags | |
CN111815339B (zh) | 一种营销信息推送方法及设备 | |
CN103283181A (zh) | 计算机网络节点发现定序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081224 |