个示例。应意识到和理解的是,可以利用其他方法而不偏离要求保护的主题的精神和范围。例如,一些系统可以利用多个IP地址或者利用具有DNS名称的URI。
[0031]一旦已知,地址就允许用户建立语音或视频呼叫,或者发送即时消息(頂)聊天信息或文件移送等。然而另外,当客户端自身需要与另一个客户端自主地传送信息时也可以使用地址。
[0032]图2的示意性框图示出被配置成充当通过因特网操作的系统的终端的最终用户终端的示例。该系统可以包括P2P系统和/或非P2P系统并且可以使用一个或多个不同的协议来通信。终端102包括被图示为CPU 200的一个或多个处理器,其可操作地耦合到:诸如调制解调器之类的网络接口 202或用于连接到因特网的其他接口、诸如硬盘驱动器或闪存之类的非易失性存储设备204,以及诸如随机存取存储器(RAM)206之类的易失性存储器设备。终端102还包括一个或多个用户输入设备,例如以键盘或小键盘210、鼠标212、麦克风216和诸如网络摄像头之类的照相机218的形式,每一个都可操作地耦合到CPU 200。终端102还包括一个或多个用户输出设备,例如以显示器208和扬声器214的形式,再次地每一个都可操作地耦合到CPU 200。
[0033]存储设备204存储包括至少一个操作系统(0S)220和客户端应用222形式的基于分组的通信软件的软件,所述客户端应用222可以包括通过其通信可以通过诸如图1中描述的网络之类的网络发生的P2P应用和/或非P2P应用。在终端102启动或重启时,操作系统220自动地装载到RAM 206中并且从该处通过在CPU 200上执行而被运行。一旦运行,操作系统220然后就可以通过将应用装载到RAM 206中并且在CPU 200上执行应用来运行它们,所述应用诸如客户端应用222。为了在图2中示意性地表示这一点,操作系统220和客户端应用222示出在CPU 200内。
[0034]在该特定的非限制性示例中,客户端应用222包括具有三个基本层的“栈”:输入和输出(I/O)层224、客户端引擎层226和客户端用户接口(UI)层228。这些层的功能可以由除具体描绘的架构之外的架构实现而不偏离要求保护的主题的精神和范围。
[0035]每个层或对应的功能模块负责特定的功能。由于每个连续层通常与两个相邻层(或者在顶层的情况下的一个层)通信,所以它们被认为是布置在如图2中所示的栈中。
[0036]客户端应用222被认为在操作系统220上运行。这意味着在多任务环境中其被调度用于由操作系统220执行;并且进一步意味着,从网络接口 202、麦克风216和照相机218到客户端应用222的最低(I/O)层224的输入以及从该I/O层224到网络接口 202、显示器208和扬声器214的输出可以经由操作系统220的合适的驱动程序和/SAPI进行调解。在至少一些实施例中,可以实现包括可以利用来呈现视听和交互内容的基于web的接口的客户端应用222。
[0037]客户端应用的I/O层224包括音频和视频编解码器形式的语音引擎和可选的视频引擎,其接收传入的编码流并将其解码以视情况输出给扬声器214和/或显示器208,并且其接收来自麦克风216和/或照相机218的未编码音频和/或视频数据并将其编码以作为流传输到P2P系统的其他最终用户终端或PSTN中的其他实体和/或诸如网络108之类的移动网络。I/O层224还可以包括用于在网络的终端102之间用信号发送控制信息的控制信令协议。
[0038]客户端引擎层226然后处理如前面讨论的系统的连接管理功能,诸如通过P2P地址查找和认证以及通过其他技术建立呼叫或其他连接。客户端引擎也可以负责系统的其他辅助功能,诸如供应最新的联系人列表和/或用户的头像给服务器104 (图1);或者从服务器104检索用户的最新联系人列表并检索其他用户的最新头像。
[0039]客户端用户接口层228负责呈现解码内容,诸如经由显示器208向用户呈现视听和/或交互内容,以用于在显示器208上呈现输出以及诸如存在和简档信息之类的其他信息和诸如按钮和菜单之类的用户控件,并且用于经由所呈现的控件接收来自用户的输入。
[0040]—般地,本文中描述的功能中的任一个可以使用软件、固件、硬件(例如,固定逻辑电路)或这些实现方式的组合来实现。如本文中使用的术语“模块”、“功能”、“部件”和“逻辑” 一般表示软件、固件、硬件或其组合。在软件实现方式的情况下,模块、功能或逻辑表示当在处理器(例如,CPU或多个CPU)上被执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储器设备中。下面描述的技术的特征是平台无关的,意指这些技术可以在具有多种处理器的多种商用计算平台上实现。对于可操作用于执行这些技术的设备的进一步讨论可联系图9和10找到。
[0041]返回图1,如之前描述的带宽管理通常围绕优化通信信道上的带宽的利用的问题。常规地,估计基于信道的即时可用带宽,其然后被用来在该速率下进行传输。虽然这对于诸如其中带宽随时间推移相对恒定的ADSL之类的常规的有线连接而言可能是良好的方法,但是该方法在面对具有快速变化的带宽的通信信道时可能变差。
[0042]已经开发的一种技术对将来带宽的不安全性进行建模并且依赖于该模型选取发送速率,考虑对于实时通信而言过度利用可能比利用不足更为有害。该技术基于针对该特定通信会话获得的实际观测,意指该方法在语音或视频呼叫的开始没有影响。而且,该方法可以不考虑诸如流量成形效果之类的常见但不频繁的事件。
[0043]因此,描述了其中带宽管理利用在例如其他呼叫的其他通信会话期间做出的观测的技术。在呼叫启动时,例如,可以经由网络(例如,云服务、web服务等等)向可用的服务提供商做出查询以获得关于用于通信会话的预期带宽的参数,其可以包括预期用于该通信会话的不安全性和/或变化性。然后在选择传入和/或传出方向上的传输速率时可以考虑这些参数。在另一个示例中,可以利用在例如“呼叫”的通信会话期间做出的观测来更新服务提供商。还构想其他示例,诸如支持较早前描述的P2P系统,在P2P系统中这些参数在最终用户终端102(a)到102(c)之间分发并且以类似于联系前面的图2描述的查找示例的方式进行定位。
[0044]例如,考虑随着时间变化过程的带宽“BW”。不失一般性,“BW(t+ Δ ) =Bff (t) +dBff(t,A) ”,其中“BW(t) ”是时刻“t”的带宽并且“dBW(t,Λ) ”是从时刻“t”到时刻“t+Δ ”的带宽改变。用以估计“BW(t) ”的技术可以基于接收时刻、发送时刻、分组大小的观测,并且在初始化时的分组丢失可以用来选取等于或稍微低于该估计的发送速率。然而,该估计牵涉至少一个网络往返时间(RTT)的延迟。因此,该RTT基本上变成前面的“ Δ ”。如果“dBW(t,A ) ”取正值,则意味着正被使用的信道未发挥全部潜力,但是如果其是负的,则该信道可以变得过载,导致排队延迟和/或分组丢失。
[0045]因此,还可以采用预测“BW(t+A) ”为“安全”值的技术以在这样的带宽下传输:在该带宽下已经达到将不会超过“Bwa+Δ)”的置信度。例如,“BW(t)”估计的历史可以用来对用于将来带宽的概率密度函数(PDF)进行建模。该PDF可以采取具有一个参数的泊松分布的形式或者假设多种其他形式。在一个或多个实现方式中,然后可以采用这些技术来选取该TOF的后百分之五,意味着存在百分之五的超过可用带宽的风险。
[0046]然后可以通过生成和共享观测来扩展这些技术。在下面的讨论中,如“呼叫”一样的语音/视频实时通信被描述为意指“应用调用”对应于呼叫的示例。也即,一个用户在一个通信会话(例如,呼叫)中做出的观测被另一个用户在另一个通信会话(例如,呼叫)中重用。如下描述且在对应的图中示出示例系统。
[0047]图3描绘了被配置成生成和利用可用来预测带宽的参数的示例实现方式中的系统300。系统300包括如先前的可通信地耦合到通信云112的端点102 (a)、102 (b)。在该示例中,通信云112包括对无线通信技术的支持。这可以包括如图示的无线接入点和蜂窝塔,以及可以包括W1-Fi(例如,包括IEEE 802.11和其他的一个或多个标准)、近场通信(NFC)、蓝牙等等的其他无线通信技术。
[0048]端点102(a)、102(b)可以参与如之前描述的通信会话,诸如相互之间的、与其他端点的通信会话等等。在该通信会话期间,可以基于由相应的观测模块110(a)、110(b)做出的观测来生成参数。然后可以将这些参数传送给服务提供商的服务器106以便由观测管理器模块108存储在一个或多个数据库302中。如之前描述的,还构想其他分布式实现方式。这些参数可以采取多种形式。
[0049]例如,参数可以描述网络提供商、信号强度、网络通信设备、无线接入点、地理位置、网络接入类型、网络协议、日时、星期几、订阅信息或漫游信息。另外,可以为呼叫的一侧或两侧表达这些参数。因此,这些观测在下面的讨论中可以被称为“网络(NW)参数”304。
[0050]另一方面,带宽参数306可以牵涉用来计算带宽分布的统计模型的参数,其可以包括由观测模块110(a)、110(b)在通信会话期间观测的参数。例如,模型可以被配置为如之前描述的泊松分布,其可以采用在通信会话期间估计的带宽参数306。因此,带宽参数306可以作为模型的一部分用来描述这些估计。可以以多种方式生成和利用这些参数,其一个示例如下进行描述且示出在对应的图中。
[0051]图4描绘了其中由第二端点利用第一端点做出的带宽参数的观测的图1和3的系统400的示例。