背景技术
PBX是一种允许一个组织内的用户(在当前技术中常常被称为“用户驻地”)无需访问公用交换电话网(PSTN)就可以给彼此发出呼叫的自动电话交换***。PBX的用户还可以通过PBX向外部号码发出呼叫。PBX通常位于用户的驻地上,在用户的通信中提供大量的控制和灵活性。PBX在当前技术中已为大家所熟知,在Al Sulkin所著的“PBX Systems for IP Telephony”中进行了描述(MacGraw-Hill,NY)2002。
目前有两种基本交换***配置类型可用来满足商业用户的通信需求。第一种是位于用户的驻地上的PBX,第二种是基于中央局的***,例如,CENTREX***,在这种***中,线路从中央局延伸到单个的用户站,但是,通过在中央局***中执行的呼叫处理软件来提供高级功能。PBX被希望在其通信中有大量的控制和灵活性的用户视为有利的。希望避免与操作与维护位于驻地上的交换机关联的职责和成本的用户通常首选中央局***。
最近PBX和CENTREX两种方法都已经用于基于IP(因特网协议)网络和时分复用(TDM)网络中。这样的***一般叫做“IP电话***或IP-PBX”,在美国专利No.5,875,234和美国专利No.6,424,700中描述了这样的***。在美国专利No.5,875,234中,描述了计算机集成电话(CIT)***,该***将PBX与局域网(LAN)集成,而在美国专利No.6,424,700中,描述了基于网络的电话***,特别是将专用小交换机(PBX)集成到共享资源网络的***和方法。
在最先进的电话和IP电话***和网络中使用了集中式设计。在集中式设计中,由服务器(例如,交换机、访问节点、机柜等等)执行大多数***功能和服务。然而,集中式方法没有充分利用IP网络的新功能,供应商重复他们的TDM设计,并将这种设计应用到IP电话(IPT)***中。一般而言,此情况产生了技术问题,并延迟了IP电话对市场的适应。
根据BCR eWeekly,Issue 58-“Thinking About Next-Gen IPT”,难以发现IP电话的令人注目的经济或应用的部分原因是,因为这样的***的供应商尝试将电路-交换机模型引入到IP领域。因此,毫不奇怪,IP电话通常所提供的看起来和表现非常类似于TDM所提供的。供应商还将TDM成本模型引入到IP电话中。例如,电话常常占新***的成本大约30%。思科公司及其他IP电话先驱在打开此新的领域时没有试图改变成本模型,毫不奇怪的是,传统的供应商也没有改变成本模型的愿望。
TDM设计和***方法是在那时最新的技术、***和网络的局限性和特征之外创建的。例如,不可能将***控制让给最终用户设备并且同时为所有***功能提供有效的互连。处理功率以及软件完善方面的局限性以及缺少用于互连的通用协议在最近20年支配了所有电话***的设计。但是,IP电话的引入以及处理器技术的一般进步使得本发明的发明人向前推进并开发出全新的和创新的设计,这种设计无需用于控制呼叫过程或任何额外的电话功能的集中***或服务器即可进行工作。
本发明的发明人判断,IP电话的无服务器设计是非常合乎需要的,它对于诸如呼叫建立延迟之类的基本上电话的所有基本方面,对于新服务的建立和适应都是理想的。这样的创新还使得进行通信便宜得多,并消除了专用于呼叫控制的交换机或服务器,并消除这样的设备的成本,使得网络单纯地传输IP服务,如此使得管理、维持和支持起来比较容易。此外,单纯的无服务器IP电话***提高了可缩放性、灵活性、冗余、可靠性、效率、成本效益等等。
下面是创建这样的***所涉及到并得以解决的问题:
无服务器地址解析
通常,在IP电话***中使用了中心地址服务器,以便识别被呼叫方的IP地址。对于这样的服务器:每一个IP电话标准都有其自己的名称:在H.323中为Gatekeeper(看门人)、在SIP中为Proxy(代理),在MGCP中为Call Agent(呼叫代理),或者,在PacketCable中为Soft Switch(软交换机)。每一个供应商都可以通过不同的名称呼叫执行这样的功能的此服务器或其他服务器,但功能仍是共同的。由于在本说明书中的各种实施例中所描述的创新***中没有中心地址服务器,因此,主叫方识别被呼叫方的网络地址会存在问题。当网络上没有永久的IP地址存在以及诸如DHCP之类的协议正在使用中时,问题更大。
配置
无服务器***中的最终用户设备的配置会存在问题,因为没有永久的配置服务器存在。这些特定问题涉及在进行管理更新的特定时间有故障的或无法连接的任何设备的配置更新,或当***涉及大量的这样的最终用户设备时的有效的流量管理。
附加服务
从任何电话***,特别是从IP-PBX***,会预期到大量的服务。例如,在本说明书中的别处将详细描述诸如REDIRECT、呼叫转移、呼叫暂停、转发、转移呼叫、旅馆化办公之类的功能,所有这些术语都是当前技术中的常见术语。根据本发明的发明人的设想,这样的服务和功能在无服务器***内的实现方式显著不同,因为没有用于解决可能的冲突、特定的最终用户设备不可用的情况或网络的一部分不可用的情况的中心呼叫控制和管理服务器存在。
更加复杂的实现方式还有一组高级PBX功能,如单独的呼叫观察、邀请、强行***等等,这些功能可能涉及保证正常运转的分布式数据库。漫游和相关功能(旅馆化办公、转移呼叫)在无服务器***中实现起来也相当困难,因为没有不涉及实际最终用户设备位置和功能的集中配置文件数据库。
在常规电话***中,诸如呼叫记录、语音邮件等等涉及数据存储的相关功能都需要存储服务器(如LDAP)。在本发明中,这样的功能是通过分布式存储***来处理,该***本身就是创新的,并是高度的技术挑战。
管理
当不涉及服务器时,在不因***消息使网络过载的情况下,有监视呼叫和监视网络上的质量和资源之类的特定问题。
容错
在服务器体系结构中,通过使用已知的方法来解决冗余和容错问题,而在无服务器***中,存在支持所有最终用户设备无缝工作的问题,以便它们不会受其他设备突然“死亡”的影响。
安全性
在先进的常规电话***中,安全是通过在物理上受保护的特殊服务器处理的,没有连接涉及另一个可能在事实上没有受保护的设备或服务器。在无服务器***中,完全相反。没有中心服务器和连接可能涉及第三方的最终用户设备,而第三方的最终用户设备会使***潜在地受到诸如”中间人攻击”之类的安全攻击的破坏,并产生呼叫者身份验证、呼叫的不可否认性方面的问题。
因此,可以轻松地看出,为了创建无服务器IP***,有很多问题需要解决。一般而言,各种常规***解决了上文讨论的某些问题。很显然,还需要以全面的方式解决无服务器***中所存在的上述一个或多个问题的***和对应的方法。
发明内容
根据本发明在示范性***和方法中的原理,解决了“背景技术”部分所描述的问题,实现了显著的技术效果。本发明的示范性***和方法用于处理呼叫并向不涉及任何***控制执行通信和处理呼叫控制分组以协调呼叫的启动、断开连接及其他处理的高度交互和智能用户站提供其他功能,并在呼叫过程中用于各种类型(例如,声音、数据或图像信息)的分组信息的通信。本发明的实施例中的用户对呼叫功能具有完全控制力,因为这样的功能是完全在单个的智能用户站中实现的。
本发明的***这里被称为“无服务器IP-PBX”,因为先进的电话功能的实现方式中的高度用户控制和灵活性在过去主要与PBX或IP-PBX***关联。如此,按本发明的方式处理呼叫的一组智能站(最终用户设备)实际上操作起来好像它们是由驻地上的交换机或服务器服务的,即使它们事实上可能只由IP网络基础结构服务的。虽然这里所描述的示范性实施例中的分组交换配置是单分组交换网络(LAN),但是,本发明也适用于包括这样的***的互联网络或这样的智能设备的全局网络的配置。
为了在最终用户的无服务器网络中实现基于服务器的***的功能,在本发明的某些实施例中使用了虚拟环技术。在本发明中创建和使用逻辑虚拟环与ARCNet Token Bus和IBM Token Ring技术具有某些相似性。在IBM Token Ring及其他常规“令牌传递”技术中,在信道层创建环,以便实现规则和顺序,因此,实现了分组计算机网络中的服务质量。在本发明的某些实施例中,在使用TCP或UDPover IP(以太网)协议的应用程序层上使用了虚拟环,不需要任何物理或信道级别的环。在本发明的某些实施例中,虚拟环中的令牌用于进行可靠的数据包投送,流量-控制,冗余,以及支持附加服务。
在本发明的优选实施例中,为了实现可靠的消息投递(RMD),位于LAN中的最终用户设备被合并到空间结构中,发明人称其为两端多连接虚拟环(RMD-TSM-CVR)。在现代LAN中,常规的做法是将IP网络分为较小的子网络,以便最小化信道网络层上的所有最终用户设备接收到的IP数据包的数量。在本发明的某些实施例中,如果在子网络中存在一个以上的这样的设备,则将所有最终用户设备合并到一个或多个这样的RMD环中。通常,RMD环的大小等于子网络的大小,但是,如果子网络大于类别C子网络,那么,可以使用如下面所详细描述的新颖的自决和自治机制中的某一种机制,将环分成两个或更多较小的、互连的TSM-CVR。
在本发明的优选实施例中,为了实现冗余,以及提供附加服务和类似于PBX的功能,创建了逻辑TSM-CVR(L-TSM-CVR)。通过这样的逻辑TSM-CVR连接的最终用户设备可以是不同的子网络的成员,这些逻辑环的大小不受LAN上的任何子网络的大小的限制。
如下面所详细描述的,来自RMD或逻辑型的TSM-CVR支持不同的自决、自治和自制机制。与传统的“令牌传递”技术不同,不需要网络上的任何特殊设备(集线器、服务器等等)便可以使环在创新的无服务器***中正常地运转。
在本发明的某些实施例中,最终用户设备可以打开和关闭。这可能会导致环拓扑中的动态变化。应该理解,如果一个或多个最终用户设备关闭,则该操作会导致关联的环的中断。在本发明的实施例中,通过使用多连接,环中的最终用户设备自我检测这样的中断,并对它们进行校正。如果最终用户设备将频繁地打开和关闭,则TSM-CVR的拓扑中的这样的校正和变化可能导致IP网络溢出。为了避免这样的溢出,在即将对环拓扑进行校正之前,需要一定的延迟。延迟是由***管理员设置的。
在本发明的某些实施例中,可以使用多播机制来在一定条件下进行大量数据更新和地址解析。在本发明的优选实施例中,LAN或IP网络可以支持多播,连接一个或多个IP网络或子网络的路由器可以支持当前技术中已知的IETF文档中详细描述的IGMP和多播转发协议。也是在本发明的某些优选实施例中,主要多播组可以用于识别最终用户设备启动时的邻居。如果其他地址解析机制失败,则多播用于诸如设置过程、大量数据更新和地址解析。
与常规的基于服务器的PBX或IP-PBX***不同,在本发明的实施例中,使用了不同的数据存储和数据访问机制。在本发明的实施例中,所有数据都存储在最终用户设备中,不需要服务器或存储设备。
还是在本发明的某些优选实施例中,每个最终用户设备都具有独立于电源的闪速存储器。最终用户设备存储了用户数据和常规和服务网络数据以及全局***数据库的某些部分。最终用户设备支持数据库的访问和复制机制,以便实现可访问性和容错。
由于在本发明的某些实施例中所有数据都分布到最终用户设备,如果一个或多个设备不能正常地运转,则必须跨网络地重新定位此数据,以便实现***冗余和容错。在本发明的某些优选实施例中,描述了这样的数据重新定位***。在各种实施例中可以使用这样的重新定位机制的许多变体,然而,这些变体也不会损坏本发明的其中一个优点,例如,使用数据重新定位方法以实现数据访问的独立性,而不会受到无服务器电话网络中的特定最终用户设备的任何故障的影响。
在本发明的优选实施例中,一般规则是,最需要的(最常使用的)数据存储在大多数位置。根据该规则,网络信息在每一个最终用户设备中复制,一般网络信息比个人数据存储在更多的最终用户设备中。存储的多余因素是由***管理员设置的。在某些优选实施例中,在每一个子网络中,个人信息复制四次,一般网络数据复制不小于四次。诸如管理员公钥之类的信息存储在每一个最终用户设备,在第一次配置过程中进行存储。
因此,根据上文所提供的上下文,本发明的目的是提供因特网协议(IP)电话***,包括网络;两个或更多IP电话单元,每一个单元都与网络连接;以及在每一个电话单元上执行的IP电话软件的实例;该***的特征在于,所述电话单元通过执行软件实例自动地合作,以在网络中形成组织性组,并在网络中没有任何交换机或服务器的情况下,允许单个的单元向其他单个电话单元发出IP呼叫和从这些单个单元接收IP呼叫。
进一步的目的是提供这样的***,其中,单个的软件实例可以在单个的电话单元之间进行文本和图像数据以及声音数据的通信。此外,在本发明的实施例中,连接到网络的电话单元形成和解除作为组织性组的虚拟令牌环。在某些情况下,形成的虚拟环是两端的、多连接的虚拟环。
在***的某些实施例中,所述电话单元的合作提供控制功能,从而在激活时,连接到网络的单个电话单元被注册为网络中的虚拟环的成员,在被去激活之后,虚拟环中的成员身份被撤回。在这些及其他实施例中,单个的电话单元可以具有大容量存储器,所述电话单元的合作会将单个站上的大容量存储器当做共享存储器。许多实施例中的大容量存储共享存储器可以为单个的电话站的用户提供语音邮件服务。此外,在某些情况下,共享存储器还可以允许进行单元之间的传输,并存储话音文件之外的其他数据文件。
在各种实施例中,网络可以是局域网(LAN)、广域网(WAN)、因特网中的某一种网络,或者是各种网络的组合。在其他实施例中,集成了多播技术,用于虚拟环中的节点的数据和软件更新。在某些情况下,使用独立于电源的闪速存储器来承担全部或部分大容量存储,而在某些情况下,在多个电话单元上实现了冗余存储和数据重新定位方案,以提供容错。在某些情况下,给存储的数据排列优先级,优先级最高的数据比优先级较低的数据存储在更多的位置。在某些情况下,允许一个或多个电话单元作为管理员站,从而具有了对***进行配置的管理功能。
在本发明的另一个方面,提供IP电话单元,包括用于连接到网络和IP电话软件的实例的端口。该单元的特征在于,通过执行软件,电话单元能够自动地合作,在与其他IP电话单元进行分组通信时在网络中形成组织性组,在网络中没有任何交换机或服务器的情况下,允许单个的单元向其他单个电话单元发出IP呼叫和从这些单个单元接收IP呼叫。
在IP电话单元的某些实施例中,软件实例可以在网络上进行文本和图像数据以及声音数据的通信。也是在某些实施例中,与网络连接的电话单元能够形成和解除作为组织性组的虚拟令牌环。在其他实施例中,形成的虚拟环是两端的、多连接的虚拟环。在其他实施例中,电话单元提供控制功能,从而在激活时,连接到网络的电话单元被注册为网络中的虚拟环的成员,在被去激活之后,虚拟环中的成员身份被撤回。
在某些情况下,电话单元具有大容量存储器,在网络上进行合作的过程中,大容量存储器被当做共享存储器。也是在某些情况下,共享存储器可以为电话单元的用户提供语音邮件服务。此外,在某些情况下,共享存储器还可以允许进行单元之间的传输,并存储话音文件之外的其他数据文件。网络可以是局域网(LAN)、广域网(WAN)、因特网中的某一种网络,或者是各种网络的组合。
在某些实施例中,集成了多播技术,用于虚拟环中的节点的数据和软件更新。此外,可以使用独立于电源的闪速存储器来承担全部或部分大容量存储。也可以实现冗余存储和数据重新定位方案以提供容错。在某些情况下,给存储的数据排列优先级,将优先级最高的数据发送出去,以比优先级较低的数据存储在更多的位置。也是在某些情况下,允许电话单元作为管理员站,从而具有了对在网络上合作的电话单元的***进行配置的管理功能。
在本发明的再一个方面,提供因特网协议(IP)电话的方法,包括(a)提供连接到网络的两个或更多IP电话单元的步骤;以及(b)在每一个电话单元上执行IP电话软件的实例,以便电话单元能够自动地合作,以在网络中形成组织性组,在网络中没有任何交换机或服务器的情况下,允许单个的单元向其他单个电话单元发出IP呼叫和从这些单个单元接收IP呼叫。
在该方法的某些实施例中,软件实例的单个实例还可以单个的电话单元之间进行文本和图像数据以及声音数据的通信。在这些和某些其他实施例中,与网络连接的电话单元能够形成和解除作为组织性组的虚拟令牌环。形成的虚拟环可以是两端的、多连接的虚拟环。在更进一步的实施例中,所述电话单元的合作提供控制功能,从而在激活时,连接到网络的单个电话单元被注册为网络中的虚拟环的成员,在被去激活之后,虚拟环中的成员身份被撤回。
在该方法的某些实施例中,单个的电话单元具有大容量存储器,所述电话单元的合作会将单个站上的大容量存储器当做共享存储器。在某些情况下,共享存储器可以为单个的电话站的用户提供语音邮件服务。共享存储器还可以允许进行单元之间的传输,并存储话音文件之外的其他数据文件。在优选实施例中,网络是局域网(LAN)、广域网(WAN)、因特网中的某一种网络,或者是各种网络的组合。
在更进一步的实施例中,集成了多播技术,用于虚拟环中的节点的数据和软件更新。在其他实施例中,可以使用独立于电源的闪速存储器来承担全部或部分大容量存储。也可以在多个电话单元上实现冗余存储和数据重新定位方案以提供容错。在某些实施例中,给存储的数据排列优先级,优先级最高的数据比优先级较低的数据存储在更多的位置。在某些实施例中,可以允许一个或多个电话单元作为管理员站,从而具有了对***进行配置的管理功能。
在下面详细描述的本发明的实施例中,在网络上首次提供IP电话***,提供强壮的功能,在网络中没有交换机或服务器的情况下能够无缝地操作。
具体实施方式
图1是显示了本发明的优选实施例中的虚拟环形结构和对应的时间图的网络图。在本发明的优选实施例中,使用虚拟环来提供子网络中的节点的逻辑分区,可靠地提供消息和支持心跳协议,下面将比较详细地描述。
虚拟环是按顺序排列的许多节点,每一个节点识别至少两个其成员(通常是环中的前一个和下一个)。环的大小始终受到其子网络的大小的限制,例如,环的所有节点必须是同一个IP子网络的成员。然而,其子网络内部的环的数量不会受到限制。
通过在环上传播特殊消息(叫做“令牌”,类似于IBM的令牌环协议),支持环的凝聚。令牌是通过环中的一个(选择的)节点(如101)生成的,并在环中从一个节点发送到另一个节点,例如,从101发送到102,再到103,再到104,然后再次到101,依次类推,发送到所有环成员。例如,节点103在进一步发送数据之前可以将数据附加到令牌,接收令牌的诸如节点104之类的另一个节点,可以读取附加到令牌上的数据,依次类推。
根据附加到令牌中的数据,环成员可以执行所需要的操作。接收到令牌(并且只有这样的节点)的节点可以跨网络执行多播消息分发。如此,可以实现消息提供和接收的顺序。
另一个令牌用途是支持心跳协议。由于令牌在环中按顺序从一个节点提供到另一个节点,生成了令牌的节点接收到令牌时,表明了所有环节点都存在并正常工作,例如,环是连贯的。
在优选实施例中,网络中的每一个环都必须对应于一个多播组。换句话说,发送到特定多播组的消息必须提供给所有环成员。如此,在此优选实施例中,多播组的数量等于网络中的虚拟环的数量。还可以基于虚拟环来进行可靠的多播消息提供。在本发明的实施例中,可以使用基于虚拟环拓扑支持总的消息排序的任何可靠的多播提供协议。在优选实施例中,使用了Totem协议。
在本发明的实施例中,对于所有***数据更新,都可以使用多播机制。当网络正常地运转时,在每一个目的地可以接收所有发送的数据包。但通常某些数据包在IP网络中丢失。为了确保所有数据包都能可靠地提供到所有最终用户设备,需要定期对所有环成员进行查询。为在本发明的实施例中实现这一点,环成员发送包括该节点接收到的最近的UPDATE的数量的令牌。与这样的令牌一起发送的数据包括虚拟时间字段(包含最后发送的消息的序列号)。当接收这样的令牌的节点发送多播消息时,它将时间字段的值增大1,然后,将其时间值增大的令牌发送到另一个节点。节点还在每个多播消息中包括虚拟时间字段的值作为更新序列号。使用这样的号码,所有其他节点都可以搜索所有多播消息,它们接收和检测可能丢失的消息。[Totem协议交叉引用号码]
如果最终用户设备上的序列号小于接收到的序列号,那么,在会话过程中至少有一个数据包丢失。为接收到最后的数据包,最终用户设备要求环顺序中的前一设备重复最近的更新。如果最终用户设备上的号码比接收到的号码大,那么,可能在标志器翻转之后接收更新。然后,最终用户设备将新更新的号码写入到标志器中,并通过环进一步将它发送下去。这给环中的第一最终用户设备提供有关更新的周转速度的信息。标志器翻转的延迟应该可与更新数据包的延迟相比较。
在图1的时间图中,IP电话1101生成新令牌,并将它提供到IP电话2102(支路110)。IP电话2102接收令牌,并将它按原样发送到IP电话3103(支路111)。IP电话3103接收令牌,添加它所希望的某些数据以传输到IP电话1101到令牌的末尾,并将令牌发送到IP电话4104(支路112)。IP电话4104接收具有附加的数据的令牌,并将它发送IP电话1101(支路113)。IP电话1101接收具有附加的数据的令牌,如此接收必需的数据,生成新的令牌,并将它发送到IP电话2102(支路114)依次类推。
图2是描述了局域网201的网络图。所显示的网络体系结构包括几个IP电话202a、202b、202c...202f,或节点,PSTN 209中的网关205,以及H.323网关208(是到因特网210的网关)。网络中的每个节点连接到集线器/交换机206a/206b。除IP电话之外,还有DHCP服务器204和一个或多个个人计算机(PC)设备203。
需要以这样的方式配置路由器207,以便所有数据包将到达所有诸如211a、211b之类的其中安装了诸如202a、202b、202c之类的IP电话设备的子网络。默认情况下,这样的主组的地址可以是239.192.0.1,但***管理员可以使用常规技术来改变该地址。
假设,管理员如此调整了组织中的路由器,以便本地多播通信量(即,范围中的分配的IETF:239.192.0.0/14)不离开组织的网络。还假设,多播通信量不能从外部传入内部网络(应该通过路由器或防火墙过滤)。
本实施例中的IP电话202a、202b、202c等等可以使用静态或动态IP (DHCP)网络配置方法。在启动时在接收其IP地址之后(如下面的图7所描述),用户设备可以搜索其自己的子网络211a中的邻居,如果不成功,那么,在其他子网络中进行搜索,如在211b中。IP电话202a将使用所有其子网络地址的组224.0.0.1来进行搜索。如果搜索不成功,那么它将试图连接到主组(例如,本实施例中的239.192.0.1.)。如果它仍不会接收到应答,它将认为其本身是网络中的第一个设备,或者,IP网络不支持IP多播。
假定IP电话202a从每个环中的具有最大的IP地址的节点接收应答,包括202b,这是其环212a中具有最大的IP地址的节点。节点202a选择任何一个环,并从节点202b要求允许参与(成员身份)。如果在某一时间之后没有接收到应答,则节点重复发向具有较高的号码的节点许可请求。相应地,将由与环的起点靠近的节点对其作出应答。重复该过程,直到接收到应答。
图3和图4显示了通过图3的节点202b加入环212a的节点202a的过程中的第一阶段和第二阶段,这里假设它是根据本发明的实施例启用的IP电话局。节点202b接受新成员,并启动通过将令牌发送到现有的环成员中来将节点202a包括(预订)到环202a的过程。节点202b将***具有IP电话(202a)的IP地址的新IP电话202a的请求附加到令牌。环的所有成员都接收到该请求,如果IP地址值比令牌中的IP地址值更靠近IP电话202a的IP地址,则将它们的IP地址添加到令牌中。对于较小的和较大的值都会这样做(例如,10比5更靠近11,12比20更靠近11)。在令牌遍历整个环之后,它包括两个IP地址,例如,IP电话202b和202c的IP地址,它们是从两侧都与IP电话202a的IP地址最近的IP地址。响应来自图3上的具有成员身份请求的令牌,节点(202b)如此向202a宣布其两个邻居,图3的202b和202c(需要将202a放在环拓扑中,并置于这两者之间)。新成员202a向其新邻居202b和202c发送请求(令牌),并要求它们更新它们的指针以便它加入到环中。
在完成加入过程之后,节点202a将其自己的本地数据库与当前数据库同步,并要求节点202b提供有关当前版本的信息。节点202b将当前版本发送到节点202a。在加入环之后,节点202a被视为完全集成到本实施例中的无服务器电话***中。
图5显示了环的***的过程。如果在子网络中存在大量的最终用户设备,则环的长度可能变得太大,结果,令牌周转的时间将变得太长。为了避免此问题,当环长度到达***管理员设置的特定限制时(在优选实施例中,这样的数量被设置为6),它将被分为两个,并将建立一个新的环。
再次参看图5,假设最初有一个具有6个节点的环,环限制被管理员设置为6。现在有一个新节点(307)正在加入到环中。结果,超过了“环限制”参数。如此,为了保持参数的正确性,环必须被分成两个环310a和310b。为了实现这一点,环被大致分为2(+/-1),并且诸如节点304、305、301和307之类的与裂缝交界的节点修改它们的指针。在图5中,节点304将其指针从305修改为301,如此创建了一个新的较小的环310b。节点307将其指针从301修改为305,如此创建了一个新的较小的环310a。
图6显示了加入环的过程。与环变得太大的潜在的问题不同的是,如果不同的环中的最终用户设备的数量太小,相应地,这样的环的长度变得太短,则它们会将它们自己一起联接在一起以构成一个新的较大的环。图6描述了这样的过程。
假设网络中最初有两个环:620a和620b,每一个环都有四个成员。在某一时间之后,节点612变得不可用(关闭)。环620b在令牌周转期间认识到,节点612会出故障或简单地说不可用。两个环中的所有节点的总和等于“环限制”参数,该参数被设置为7,例如,现在可以联接两个现有的环。
环以这样的方式联接,以便在新的联接的环中,节点的数量和顺序保持不变,从最小的到最大的,例如,601、602、603、604、611、613和614。
如此第一和最后的节点(环620a中的601和604,环620b中的节点611和614),以这样的方式修改它们的指针,以便两个环联接在一起。
结果,利用所有包括的工作的节点创建新环,节点的数量和顺序都保持不变。
图7是描述了节点(IP电话)启动、联接环,和获得最新的DB更新的图表。在此图表中,节点IP电话1在网络201中发送广播消息(支路701)以查询IP地址。DHCP服务器204(参见图2)应答(提供支路702),结果,电话1请求地址(支路703)。IP地址被提供到电话1(确认支路704)。在图表的第一部分,对IP地址的请求使用了DHCP协议,这只是为了说明。也可以使用诸如静态IP地址之类的其他方法。
节点(202a)试图查找网络中存在的任何环(至少一个)。它在其子网络(211a)中发送多播请求(支路705)。包括202b的几个节点响应来自节点202a的请求(支路706、707)。节点202a选择其中一个环,并请求(支路708)允许从节点202b参与。节点202b跨环地发送具有请求的令牌,然后给节点202a提供(支路709)获取环成员身份所需的信息。图3和4中所描述的过程中提供详细信息。在***到环之后,节点202a通过从节点202b中请求当前版本数据库(支路710)来将其数据库与当前版本同步。节点202b将当前数据库发送(支路711)到节点202a。
节点202a(图2)中的IP电话的用户在节点202a上进行登录操作。为了完成该登录过程,需要接收用户配置文件,下面将参考图8描述该操作。用户使用IP电话键盘来插UserId或使用任何其他输入方法来进行这样的***。
图8显示了GetProfile(UserId)过程,这是使用散列函数查找和检索配置文件方案的功能。请求配置文件的节点根据节点的ID计算散列函数,如下面参考图13所描述的。这里强调,使用散列函数是示范性的,不是限制性的,有许多其他方式可以用来实现此步骤。
在图8中,节点IP电话1正在试图连接到IP电话2,其地址是使用散列函数计算出的,如下面参考图13详细描述的(801)。在该过程中,IP电话1设置计时器。支路802是发往IP电话2的索取UserId的请求。IP电话2不可用,因此,在计时器上设置的时间的末尾(如图表的垂直轴上的距离所说明的),即,在支路802的末尾的时间,IP电话2计算支路803所显示的新散列函数,然后查询IP电话3的UserId。此查询成功,IP电话3作肯定回答(支路805),在此之后,电话1请求配置文件(支路806),电话3将配置文件返回到电话1(支路807)。
在接收到配置文件之后,节点202a要求用户***密码。用户***密码,节点202a试图对配置文件的私有部分进行解密(用户私钥是用至少他的对称密钥加密的)。如果解密成功,则用户在节点202a上进行注册。在成功登录之后,创建消息“User1oggedOn”并使用可靠的多播协议进行发送。该消息至少包括用户名,用户登录的节点的Id,以及时间戳。接收消息的所有节点都将更新它们的数据库。
图9是描述了许多可能的基本呼叫方案中的一个方案的流程图。在此示例中,节点1的用户正在试图呼叫节点2处的用户。在步骤901中,在节点1中输入用户ID。在步骤902中,节点1请求配置文件,被作出肯定回答,并接收配置文件,如上面参考图8所描述的。然后,节点1在步骤903中在其数据库中查询UserId,UserId属于User2的Id信息。这样的表可以是这个样子:{用户名、用户登录到其中的节点Id,标志。
现在,在步骤904中,节点1对User2的配置文件进行分析。如果在表中用户被标记为“已注册”(在步骤905中检查),节点202a在步骤906中尝试连接到User2在其中注册的节点。在步骤906中,就节点2处的电话是否在使用中作出判断。如果没有占线,则在步骤908中就是否允许呼叫作出判断。如果允许,则在步骤909中使用H.323、SIP或另一个适当的协议来创建声音会话。
如果在步骤907中判断节点2占线,则在步骤910中就是重定向呼叫、连接到语音邮件还是拒绝呼叫作出判断。通过分析用户2的配置文件作出此判断,用户2在此示例具有对占线判断的标准的反应。
现在回到步骤905,如果在该步骤中判断用户2没有登录,则控制直接进入步骤910以重定向尝试进行的呼叫。
图10显示了图9的流程步骤的一部分,但是采用了时间图的形式,而不是作为流程图。节点1处的User1正在试图呼叫User2,如上面参考图9所描述的。User1输User2 ID以发出呼叫,在此之后,节点1请求用户2的配置文件。节点1作为支路1001请求配置文件。节点2将配置文件返回(支路1002)到IP电话1。节点IP电话1在表中检查用户2状态(支路1003),并读取(分析)配置文件(支路1004)。IP电话1连接到IP电话2,并检查用户2的可用性(支路1005)。节点2以它可用的消息来作出响应(支路1006)。然后,IP电话1使用H.323、SIP或其他标准协议来创建连接。支路1007显示了实际呼叫。
图11显示了基本呼叫方案的安全实施方式。在此示例中,IP电话1已经打开,并接收了其IP地址(未显示)。用户通过输入他的唯一ID和密码来响应来自节点的登录请求。现在IP电话1使用如下所述的散列函数请求存储了用户配置文件的地址(支路1101)。在支路1101的末端,具有用户配置文件的网络上的其中一个电话(IP电话2)接收请求。电话2在网络上答复,它具有请求的用户配置文件(支路1102),Phone-1接收该回复。现在电话1从Phone 2请求配置文件(支路1103),还提供电话1 UserId,Phone-2提供配置文件(支路1104)。
IP电话1现在试图对其私钥进行解密(1105),私钥是配置文件的一部分。如果操作成功,确保它接收到其自己的配置文件。如果操作失败,有可能有两种变化:
1.它接收到了别人的配置文件,则网络中可能有入侵者
2.使用了错误的密码
在成功地接收其私钥之后,IP电话1可以进行呼叫(1106)。在话音呼叫处理的级别上,可以使用标准算法。在某些优选实施例中,建立H.323连接,因此根据H.323的H.235协议支持安全性。在本发明的优选实施例中,使用配置文件中的密钥来标识所有各方。
图12显示了本发明的实施例中的来自PSTN的语音邮件功能访问。在此示例中,外部POT电话呼叫本发明的唯一网络中的用户1(支路1201)。PSTN网关(图2中的205)知道用户1没有登录,并通知外部节点(支路1202),可以留下语音邮件。外部POT电话的用户记录由PSTN网关接收到(支路1203)的消息,该网关通知(支路1204)外部电话,成功地记录了消息。PSTN网关将消息传输到闪速存储器(支路1205)中,并断开连接(支路1206)。PSTN网关现在从IP电话2请求(支路1207)User1的配置文件。节点IP电话2将请求的配置文件返回(支路1208)到PSTN网关,该网关提取User1的公钥,并为语音邮件创建(支路1209)数字信封。然后网关生成(支路1210)随机对称密钥,利用该随机对称密钥,它对VM进行加密(支路1211)。然后PSTN将数字信封(支路1212)和其中的数据(支路1213)保存在其中一个节点,这些节点能够存储诸如IP电话2之类的VM。
图16进一步显示了语音邮件的功能。在此示例中,节点202a的用户1呼叫(支路1601)到用户2。用户2已经与网络中的另一方进行连接(支路1600),如此节点202b以占线信号响应节点202a(支路1602)。节点202a现在需要选择能够存储User2的语音邮件(VM节点)的节点。这是使用用于使用L-TSM-CVR存储网络上的任何对象的同一个散列函数来执行的。例如,user2的所有语音邮件持有者节点可以是指定的VM_to_User2。基于此名称,散列函数计算(支路1603)应该在其上面存储语音邮件消息的节点的编号(地址),在此示例中为202c。
现在操作基本上与上文参考图10所描述的操作相同。节点202a将数据(User1到User2的语音邮件消息)存储(支路1604)在其自己的IP电话(节点202a)存储器中。然后它请求从节点202b中请求(支路1605)User2的配置文件。节点202a配置文件(支路1606)并从所提供的配置文件中获取用户的公钥。然后,节点202a生成(支路1607)随机对称密钥,并用此密钥对消息进行加密(支路1608)。然后使用User2节点202a的公钥创建数字信封,并用随机对称密钥将保存它保存在数字信封中。然后节点202a将数字信封(支路1609)和(1610)编码的语音邮件消息保存在节点202c上。
节点202b定期检查(支路1611)User2的语音邮件(或通知它,当接收语音邮件时它是否处于在线状态)。跨语音邮件持有者的虚拟环来发送对语音邮件的请求。一旦其中一个节点接收到新的语音邮件,它将有关新语音邮件的情况通知给(支路1612)节点202b。节点202b向节点202c发送请求并请求语音邮件文件。当节点202b从202c接收语音邮件(支路1613)以及数字信封(支路1614)时,它打开信封(支路1615)并获取对称密钥,并用该密钥对语音邮件进行解密(1616)。现在User2可以访问语音邮件文件。在收听语音邮件之后,用户可以删除它或者应用户请求并根据管理员设置将它存储起来。
图13显示了本发明的实施例中的使用散列函数计算的所需要的数据跨网络的传播。在此示例中,节点1313和1303需要存储某些对象(数据)。图中的箭头连接了在其上面散列函数建议复制这样的数据的节点。在示例中,存储了两个数据的对象。节点1313需要将数据(Object1)存储在具有某一冗余因数的网络中。然后,它基于Object1 Id计算散列函数结果,并接收其中应该存储Object1的节点的标识符(1306)。节点1313向节点1306发送Object1,并通知它有关必需的冗余因数的情况。节点1306存储Object1的副本,但由于没有到达必需的冗余因数,因此,它再次计算散列函数的结果并接收其中应该存储Object1的下一个节点标识符(1307)。
现在节点1307接收Object1,并将其存储起来,由于还没有到达冗余因数,因此,节点1307重复已经描述的过程,并向1311发送Object1。节点1311存储Object1并再次重复该过程。节点1305从1311中接收Object1,并验证具有必需的冗余因数的副本的数量。此时不再需要副本。现在Object1存储在具有必需的冗余因数的网络中。
虚线表示朝向下一个节点的途径,下一个节点是在该过程中在节点(1305)不可用的情况下为了保留必需的冗余因数所被涉及的。在Object1位于所有4个节点之后,假设四个节点都满足冗余要求,则它们构成了逻辑环(L-TSM-CVR)。图13中的虚线表示虚拟环。同样,散列函数对节点1303所存储的Object2进行操作,实线表示了顺序过程。
下面是在优选实施例中用于计算在其上面可以存储特定的对象并从中可以获得特定的对象的节点的地址的散列函数的示例:
假设“i”是节点的编号,1<=i<=n。应该属于间隔[0;1)的节点“i”的标识符表示为x(i)。节点的标识符-是一组均匀地分布在整个编号轴上的编号。
对于每个节点,数轴的段被标识为s(i)=[x(i),y(i)]。那些段具有下列特征:段的开始,点x(i)-是节点i的标识符。段y(i)的结束点被以这样的方式选择,以便段的长度将大致等于log(2,n)/n。每次当节点加入网络或离开它时,都对log(2,n)/n的结果重新进行计算,并为y(i)设置新的值。换句话说,与节点关联的段的长度在***工作过程中改变。
定义“距离-减半规则”:
对于数轴“x”上的属于间隔[0;1)的任何给定点,我们定义了两个函数:1(x)=x/2иr(x)=x/2+1/2相应地,对于段s(i),我们可以创建其图像中的两个,将函数“1”和“r”应用到所述段的所有点。如果段s(i)和s(j)交叉,节点i必须知道节点j的地址以及相反。可以证明,如果满足了前面的段落中的标准,则一个节点必须具有的链路的数量=O(log(2,n))。例如,每个节点都必须知道其他节点的IP地址的对数。其段相互交叉或根据“距离减半规则”彼此连接的节点叫做“邻居”。
每个资源都有其自己的标识符r(i),其中,1<=i<=m。资源标识符-是也均匀分布在整数轴上的属于间隔[0;1)上数字。资源i被放在所有节点上,其段包括点r(i)。只需通过执行下面所描述的查询操作就可以查找到这些节点。
为了将节点包括到网络中:
必须选择x(i)。为选择节点的标识符,可以使用下列方法。计算估计q(i)=log(2,n)/n。为计算此估计,为一个节点计算段的结尾:y(i)=x(i)+q(i)mod 1。节点向位于网络上的所有其新邻居(其段与其自己的段交叉或根据“距离-减半规则”连接的节点)发送通知。新节点从其邻居中获取属于新节点的段的所有资源标识符。
这些邻居可以检测估计变化的事实log(2,n)/n并升级值y(i)。然后,某些资源将在这些节点的段范围之外,并可以丢弃,以便避免过度的冗余。信息不会丢失,因为资源在网络中的其他节点进行了复制。
如果一个节点离开网络,则它将通知其邻居,它们可能更改log(2,n)/n的估计和它们的y(i)。在此情况下,节点的段将扩展,这可能导致毗连区域的变化,如此导致某些资源向这些节点的重新定位。
搜索资源“r”:
假设z(i)=x(i)+y(i)/2,“w”是作为位字符串的z(i)的二进制表示法。
按下列方式定义“距离-减半函数”w(t,r):
w(0,r)=r
w(t‖0,r)=l(w(t,r))
w(t‖l,r)=r(w(t,r))
必须查找最小值″t″,如此w(t,r)将属于当前节点“i”的段s(i)。
根据“距离-减半函数”w(t,r)的创建的规则将被寻址的所有节点将知道彼此的地址,并将包含从当前节点“i”到节点内容资源“r”的查询路径。
图14显示了本发明的实施例中的呼叫中心实施方案。在图14中,在外面,User1在模拟电话处使用PSTN-网关(1401)拨打呼叫中心的号码。该呼叫包括组号。PSTN-网关接收呼叫,并请求为该组号提供服务的IP电话1提供服务(1402)。节点IP电话1占线,IP电话1将请求重定向(1403)到组中的下一节点(IP电话2)。节点IP电话2可以接收呼叫,并将其可用的情况通知(1404)给IP电话1。IP电话1将IP电话2的可用的情况通知(1405)给PSTN-网关。PSTN-网关请求(1406)IP电话2接收与User1的呼叫。现在IP电话2确认(1407)可用。最后PSTN-网关向模拟电话发送开始交谈的信号(1408),模拟电话使用PSTN-网关与IP电话2开始(1409)声音会话。
图15显示了电话会议的情况。节点IP电话1希望加入电话会议,并向会议发起人IP电话2发送加入请求(1501)。会议发起人接收请求,以在其中举行会议的多播组的地址响应(1502)IP电话1,IP电话2发送接收会话密钥的请求(1503)以对电话会议上的声音数据进行解密。IP电话-2将会话密钥通知(1504)给IP电话1。IP电话1(1505)加入会议。
现在另一个节点(IP电话3)也希望加入会议,并向IP电话2发送(1506)加入的请求。IP电话2(会议发起人)接收请求,以在其中举行会议的多播组的地址向IP电话3作出响应(1507)。并行地,会议发起人(IP电话2)发送(1508)声音数据。IP电话2发送接收会话密钥的请求(1509)以对声音数据进行解密。现在IP电话2将会话密钥通知(1510)给IP电话1。
IP电话3(1511)现在加入会议。
尽管以各种实施例描述了前述的发明,但是,许多变体是可能的。相应地,对上文所描述的实施例的许多修改和更改被视为在本说明书的精神和范围之内,但是,不仅限于此,本发明只由下列权利要求书的范围作出限制。