大规模实时多媒体通信技术

文档序号:1398620 发布日期:2020-03-03 浏览:3次 >En<

阅读说明:本技术 大规模实时多媒体通信技术 (Large-scale real-time multimedia communication technology ) 是由 刘勇 孙雨润 赵斌 于 2018-12-05 设计创作,主要内容包括:本发明提出了一种使用软件定义网络(SDN)进行实时多媒体通信的方法、设备和系统。该方法包括由处理器接收表示SDN中直接连接的服务节点之间传输容量的路径度量,由处理器基于路径度量确定包括第一个边缘节点和第二个边缘节点之间最佳路径的级联网络拓扑,其中,最佳路径在第一个边缘节点和第二个边缘节点之间的SDN中的数据传输路径中具有最低的传输延迟,并且如确定要在第一个边缘节点和第二个边缘节点之间传输多媒体数据,则在第一个边缘节点和第二个边缘节点之间根据最佳路径来传输多媒体数据。(The invention provides a method, equipment and a system for real-time multimedia communication by using a Software Defined Network (SDN). The method includes receiving, by a processor, a path metric representing transmission capacity between directly connected service nodes in the SDN, determining, by the processor, a tandem network topology including a best path between a first edge node and a second edge node based on the path metric, wherein the best path has a lowest transmission delay in a data transmission path in the SDN between the first edge node and the second edge node, and transmitting multimedia data according to the best path between the first edge node and the second edge node if it is determined that the multimedia data is to be transmitted between the first edge node and the second edge node.)

大规模实时多媒体通信技术

技术领域

本发明涉及多媒体通信技术,尤其涉及大规模实时视频通信领域。

背景技术

实时多媒体(如音频或视频)通信具有广泛的应用领域,如会议、直播或网络研讨会。使用配备有音频/视频(A/V)设备(如麦克风和/或相机)的最终用户终端可生成多媒体流,并将其压缩为比特流。比特流可打包并以数据包的形式通过网络(如互联网)发送给目标用户。终端用户端接收到数据包后,即可将多媒体比特流解压缩、渲染并显示(如使用扬声器或显示器)给目标用户。

在进行多用户通信的情况下,可使用多个终端用户端口同时发送和接收多媒体流以进行交互式通信。随着用户规模的增加,对于支持这种大规模多媒体通信的网络和系统的质量和性能的要求也变得更高。

发明内容

下文将阐述用于实时视频通信的方法、设备和系统。

一方面,本文公开了一种使用软件定义网络(SDN)进行实时多媒体通信的方法。该方法包括由处理器接收表示SDN中直接连接的服务节点之间传输容量的路径度量,由处理器基于路径度量确定包括第一个边缘节点和第二个边缘节点之间最佳路径的级联网络拓扑,其中最佳路径在第一个边缘节点和第二个边缘节点之间的SDN中的数据传输路径中具有最低的传输延迟,并且如确定要在第一个边缘节点和第二个边缘节点之间传输多媒体数据,则在第一个边缘节点和第二个边缘节点之间根据最佳路径来传输多媒体数据。

另一方面,本文也公开了一种使用SDN进行实时多媒体通信的系统。该系统包括SDN中的第一个服务节点、SDN中直接连接到第一个服务节点的第二个服务节点,以及SDN中的控制节点。控制节点包括处理器和耦合到处理器的存储器。存储器被配置为存储指令,当处理器执行该指令时可用于接收表示第一个服务节点和第二个服务节点之间传输容量的路径度量,基于该路径度量确定级联网络拓扑,该级联网络拓扑包含从一个发送方边缘节点到多个接收方边缘节点的最佳路径,其中该最佳路径在SDN中的第一个边缘节点和第二个边缘节点之间的数据传输路径中具有最低传输延迟,并且如确定要在第一个边缘节点和第二个边缘节点之间传输多媒体数据,则在第一个边缘节点和第二个边缘节点之间根据最佳路径来传输多媒体数据。

再一方面,本文还公开了一种用于实时多媒体通信的SDN的设备。该设备包括处理器和耦合到处理器的存储器。该存储器被配置为存储指令,当处理器执行该指令时可用于以周期性方式接收与SDN中的第一个服务节点和SDN中的第二个服务节点相关联的路径度量,其中路径度量包括以下因素中的至少一个:第一个服务节点和第二个服务节点中至少其中一个的负载状态,以及第一个服务节点和第二个服务节点之间的传输度量,并且在接收到路径度量后随即更新级联网络拓扑,该级联网络拓扑包含用于在第一个边缘节点和第二个边缘节点之间传输多媒体数据的最佳路径。

附图说明

在阅读以下详细描述时参考附图将有助于更好地理解本发明的内容。需要强调的是,根据惯例,图示中各个部分并不是按比例绘制的。相反,为表述清楚起见,已对各个不同部分的尺寸进行任意扩大或缩小。

图1是根据本发明实施例所绘制的一个用于实时视频通信的系统示例图。

图2是根据本发明实施例所绘制的用于实时视频通信的软件定义网络(SDN)的示意图。

图3是根据本发明实施例所绘制的用于实时视频通信的级联网络拓扑示意图。

图4是根据本发明实施例所绘制的实时视频通信的过程示例流程图。

图5是根据本发明实施例所绘制的更新级联网络拓扑的过程示例流程图。

图6是根据本发明实施例所绘制的多媒体数据传输的过程示例流程图。

图7是根据本发明实施例所绘制的在SDN上对终端进行验证的过程示例流程图。

图8是根据本发明实施例所绘制的用于实时视频通信的设备示例图。

图9是根据本发明实施例所绘制的另一个用于实时视频通信的设备示例图。

图10是根据本发明实施例所绘制的用于实时视频通信的通信频道示例图。

具体实施方式

在网络中进行大规模实时多媒体通信具有相当的挑战性。在大规模实时多媒体通信场景中,参与通信的用户可能非常多(如超过100,000)。用户还可能遍布在全球各个位置。在交互式的多媒体通信中(如大规模音乐会、在线讲座或脱口秀节目等),可能对多媒体传输的低延迟要求非常苛刻(如要求延迟低于400毫秒)。

例如,在跨城市举行的大规模在线教育讲座中,可能会需要一名观众与一组表演嘉宾一起参与问答环节,而所有其他观众需要收听到并随时参与讨论。在互联网上针对付费观众播放的现场脱口秀节目中,喜剧演员会希望能控制好时间点,在同一时间对所有观众抛出笑料,并及时对笑声作出反应,还要在适当的情况下与观众进行即兴互动。在一个跨国公司举行的全体年会上,来自不同国家的参与者所处的网络条件也不尽相同,他们都希望能在会上与其他参与者互动,无论是说话、观看还是收听都能获得身临其境的体验。所有这些以及其他类似的应用场景都需要低延迟的交互式多媒体通信。

在提供实时交互式多媒体通信的技术解决方案时可能会遇到各种挑战。例如,可以为多媒体通信提供会议模式,该会议模式可以允许参与者进行低延迟的双向互动,但是可同时参与者的最多人数非常有限,仅在小规模范围内适用而不适合大型场景。又如,在多媒体通信中可提供广播模式,该广播模式可以允许大量的同时参与者,但是它通常仅支持单向通信并且会有较高的延迟。

本文公开了使用软件定义网络(SDN)的系统、设备和方法,用于为大规模、低延迟、互式多的媒体通信提供技术解决方案。SDN部署在网络的应用层,因此可以覆盖在现有公共网络(如互联网)的基础设施之上。SDN可以实现为安装在互连的通用计算机(如计算机服务器)中的软件模块。SDN也可在两类计算机(下文中称为“节点”)上部署,这两类计算机分别为服务节点和控制节点。服务节点和控制节点彼此互连。服务节点用于接收从用户设备处发送的多媒体数据,路由(即转发)多媒体数据,并将多媒体数据传送至目标用户设备。控制节点用于控制SDN中的数据传输,比如决定数据传输的最佳传输路径。根据本发明的实施例,SDN的控制节点可以提供分布式控制服务。也就是说,控制服务不是集中的(如由单个节点或单个节点组实现)。在全球多个地理位置可分布多个控制节点来提供SDN的控制服务,并且在提供控制服务中的任何时间可以以任何方式修改、改变、添加或移除任何控制节点的数量、位置或配置。

在SDN中,可以在服务节点之间周期性地设置表示传输容量的参数。可以将参数发送到控制节点,根据该控制节点可以动态地确定最佳传输路径。当进行数据传输时,根据实际的网络流量需求,控制节点可以动态地配置用于传输多媒体数据的级联网络拓扑。此外,SDN可支持多频道通信,因此使用SDN可同时组织多个事件,并且可以根据不同的事件将用户分组至不同的频道,频道间彼此互不干扰。

SDN节点可以部署在任何地方以连接到互联网。在一些实现中,可在全球范围部署SDN节点来支持环球规模的实时多媒体通信。服务节点之间数据包的传输可以通过使用SDN连接、非SDN连接(如服务节点之间的直接互联网连接)或二者兼而有之。数据包的传输可以是在服务节点之间的双向传输。

在一些实现中,SDN可以仅被实现为软件模块。也就是说,构建SDN不需要专用或特定的硬件,并且连接SDN也不需要专用或特定网络或网络服务提供商。例如,软件模块可以是一个或多个软件开发工具包(SDK)。可以在任何可公共访问的网络(如互联网)的应用层中构建和部署SDN。因此,SDN的构建只需简易的硬件,且配置方便、用时短、费用低。根据本发明的实施例,SDN可支持高达数十万的用户进行交互式实时多媒体通信,且延迟可维持低至数百毫秒(ms)。通常延迟可在400-800毫秒之间。

在一些实现中,SDN也可以实现为软件和硬件模块。例如,一些软件模块可通过特定的硬件模块实现,例如知识产权(IP)内核、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或任何其他合适的电路设备。可以在任何可公共访问的网络(如互联网)的应用层中构建和部署SDN的软件模块。SDN的硬件模块可以与软件模块连接,以协助实现软件模块的功能。采用这种方式,可通过硬件模块为SDN应用的热点提速,从而提高SDN系统的性能。

图1是根据本发明实现例所绘制的用于实时视频通信的系统100的示例图。如图1所示,系统100可包含多个设备和网络,诸如设备102、设备104和网络106。该设备可以是微型计算机、大型计算机、超级计算机、通用计算机、特殊用途或专用计算机、集成计算机、数据库计算机、远程服务器计算机、个人计算机、笔记本电脑、平板电脑、手机、个人数据助理(PDA)、可穿戴计算设备等一台或多台计算机的任何配置,或由计算服务提供商提供的计算服务(例如web主机或云服务)来实现。在一些实现中,计算设备可以由多组计算机的形式来实现,各个计算设备可位于不同地理位置,并通过网络等进行彼此间的通信。虽然某些操作可以由多台计算机共同完成,但在一些实现中,不同的计算机会被分配不同的操作。在一些实现中,系统100可以使用具有计算机程序的通用计算机或处理器来实现,在运行计算机程序时可执行本文描述的相应的方法、算法和/或指令。

设备102可以包括处理器108、存储器110、输入输出设备(I/O)112和网络接口114等硬件配置。处理器108可以是能够操作或处理信息的任何类型的一个或多个设备。在一些实现中,处理器108可以包括中央处理器(如中央处理单元,即CPU)。在一些实现中,处理器108也可以包括图形处理器(如图形处理单元,即GPU)。尽管本文仅示例了单个处理器,但设备102也可使用多个处理器。例如,处理器108可分布在多个机器或设备(每个机器或设备带有一个或多个处理器)上,这些机器或设备可以直接耦合或通过网络(如局域网)实现互联。存储器110可以是能够存储代码和数据的任何暂时或非暂时性的一个或多个设备,这些代码和数据可由处理器(通过诸如总线)访问。本文所述的存储器110可以是随机存取存储器设备(RAM)、只读存储器设备(ROM)、光盘或磁盘、硬盘驱动器、固态驱动器,闪存驱动器、安全数字(SD)卡、记忆棒、紧凑型闪存(CF)卡或任何合适类型的存储设备的任意组合。在一些实现中,存储器110可以分布在多个机器或设备上,诸如基于网络的存储器或基于云的存储器。存储器110可以存储数据(未示出)、操作系统(未示出)和应用程序(未示出),数据可以是用于处理的任何数据(如音频流、视频流或多媒体流),应用程序可以是允许处理器108执行指令以生成控制信号的程序,这些控制信号可用于执行下文描述的方法中所述的各项功能。

在一些实现中,设备102还可以包括辅助(如外接)存储设备(未示出)。如使用上述辅助存储设备,则可在高处理需求时提供额外的存储空间。辅助存储设备可以是任何合适的非暂时性计算机可读介质形式的存储设备,如存储卡、硬盘驱动器、固态驱动器、闪存驱动器或光驱等。此外,辅助存储设备既可以是设备102的组件,也可以是通过网络访问的共享设备。在一些实现中,存储器110中的应用程序可以全部或部分地存储在辅助存储设备中,并根据处理需要加载到存储器110中。

I/O设备112可通过多种方式实现,比如它可以是耦合到设备102的显示器,并被配置为可以显示图形数据的图像。I/O设备112可以是向用户传输视觉、听觉或触觉信号的任何设备,如显示器、触敏设备(例如触摸屏)、扬声器、耳机、发光二极管(LED)指示灯或振动电机等。显示设备可以是液晶显示器(LCD)、阴极射线管(CRT)或能够向个人提供可见输出的任何其他输出设备。I/O设备112也可以是从用户处接收视觉、听觉或触觉信号的任何输入设备,如键盘、数字小键盘、鼠标、轨迹球、触敏设备(如触摸屏幕)、传感器、麦克风、相机或手势感应输入设备。在一些情况下,输出设备也可以作为输入设备,例如接收触摸式输入的触摸屏显示器。

网络接口114可用于与另一设备(如经由网络106)传送信号和/或数据。例如,网络接口114可以包括用于将信号或数据从设备102发送到另一个设备的有线装置。又如,网络接口114可以包括兼容无线传输协议的无线发射器或接收器。通信设备114可以通过多种方式实现,诸如应答器或收发器设备、调制解调器、路由器、网关、电路、系统级芯片(SoC)、有线(如RJ-45)网络适配器、无线(如Wi-Fi)网络适配器、蓝牙适配器、红外适配器、近场通信(NFC)适配器、蜂窝网络天线,或任何适当类型的任何组合的可提供与网络106进行通信功能的设备。在一些实现中,网络接口114可以是普通或通用网络接口,并不专用于某一特定网络并且也不遵从某一专用(如闭源、专有、非开放或非公开)网络协议。例如,网络接口可以是支持传输控制协议/网际协议(TCP/IP)通信协议族(或“套件”)的通用网络接口。又如,网络接口可以是仅支持TCP/IP通信协议族的通用网络接口。应注意的是,网络接口114可以以各种方式实现,而不限于上述示例。

设备104与设备102类似,配备了处理器116、存储器118、I/O设备120和网络接口122。设备104的元件116-122的实现可分别类似于设备102中的108-114。设备102和104可以用作SDN的服务节点。设备102和104也可以用作SDN的控制节点。设备102和104还可以用作连接到SDN的终端用户终端计算机(或简称为“终端”)。设备102可通过网络106与设备104通信。设备102和104还可以与连接到网络106的其他设备进行通信。应当注意的是,设备102和104的各部分功能无需以相同的方式实现。

网络106可以是任何合适类型的物理或逻辑网络的任何组合,例如无线网络、有线网络、局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、蜂窝数据网络、蓝牙网络、红外连接、NFC连接或互联网等。

网络106可以包括多个服务器计算机(或简称为“服务器”)。服务器之间可以相互连接。服务器也可以连接到终端。直接与终端相连的服务器可被称为“边缘服务器”。在本公开中,“直接连接”这一短语是指不通过中间节点、路由节点或转发节点在网络中第一个节点和第二个节点之间建立连接。也就是说,直接连接无需网络中的任何其他节点的协助或调节即可在第一个节点和第二个节点之间发送和接收数据。应注意的是,“直接连接”是在网络的应用级别,而建立“直接连接”不排除使用辅助或调节装置或设备,如网关、路由器、交换机或任何其他路由或转发设备或装置,这些设备或装置都不是作为网络中应用级的节点。如图1所示,如果设备102和104是终端,则服务器124是直接将设备102连接到网络106(如互联网)的边缘服务器,服务器126是直接将设备104连接到网络106的边缘服务器。网络106可以包括多个边缘服务器和非边缘服务器。应注意的是,边缘服务器可以在网络106中彼此直接或间接连接。例如,服务器124和126可以彼此间接相接(即在网络106中至少有一个第三方服务器连接在服务器124和126之间)。还应注意的是,多个终端可以连接到同一台边缘服务器。例如,服务器124可以是直接连接到设备102和设备104的边缘服务器。

服务器124和126可以是任何类型的通用计算机(如服务器计算机),其中包括与设备102和104类似的组件。例如,服务器124和126可以包括处理器(如类似于处理器108和116)、存储器(如类似于存储器110和118)、I/O设备(如类似于I/O设备112和120),以及网络接口(如类似于网络接口114和122)。

在一些实现中,可以在网络106的应用层上实现软件定义网络(SDN)。可将服务器124和126作为SDN中的节点。关于SDN详见与图2相关的描述。

应注意的是,用于实时多媒体通信的设备102和104的部件或组件并不局限于图1中所示的那些的元件。在不脱离本公开的范围的情况下,用于实时多媒体通信的设备102和104可以包括更多或更少的部件、组件、硬件或软件模块,用于实现实时多媒体通信的各项功能。

图2是根据本公开的实施例所绘制的用于实时视频通信的软件定义网络(SDN)200的示意图。SDN 200在计算机网络(如网络106)的应用层上实现。例如,在TCP/IP模型中,计算机通信网络可以划分为多个层。例如,按照从底部到顶部的分层次序,这些层可以分别包括物理层、网络层、传输层和应用层。以上每一层都服务于其上方的层,并由其下方的层提供服务。应用层是TCP/IP层,它直接与最终用户通过软件应用程序进行交互。SDN 200可在网络106中实现为应用层软件模块。

在一些实现中,SDN 200可以被实现为网络106的节点(如服务器124和126)上所安装的软件。在一些实现中,SDN 200中分布在各个节点的硬件不需要是专用或特定硬件(专用或专有的网络接入点硬件)。例如,节点可以是装有操作系统(OS)的任何x86或x64计算机,并且作为SDN 200的接入点的节点的网络接口可以是任何通用网络接口硬件(如RJ-45以太网适配器、有线或无线路由器、Wi-Fi通信适配器或任何通用网络接口硬件)。例如,SDN 200的软件模块可以安装在多个通用服务器中,并且服务器可以被运送至不同的服务器托管位置(如数据中心)来部署SDN 200。例如,服务器可以被运往不同的国家来构建全球实时多媒体通信网络。

此外,构建SDN 200的网络106可以是公共网络(如互联网)。在一些实现中,SDN的节点既能通过SDN 200也能通过公共网络进行通信。换句话说,部分SDN 200的数据传输可以通过公共网络路由,而不是完全在SDN内。在一些实现中,SDN 200中的所有节点能够同时通过SDN 200和公共网络进行数据传输。

通过在公共网络上将SDN 200实现为通用计算机上的软件模块,部署SDN 200对于用户来说可以是简单、快速、有效和低成本的(例如:构建SDN无需在专用硬件或专有网络服务上投入成本)。

如图2所示,SDN 200包括两种类型的节点:服务节点和控制节点。服务节点(如服务节点204-218)用于从不同的用户终端接收、转发和传送多媒体数据。控制节点(如控制节点202)用于控制网络流量。服务节点和控制节点可以彼此互连,这点并未在图2中完全显示出来。例如,在具有N个节点的SDN中,可以至少具有N×(N-1)个上述节点的直接连接。也就是说,SDN中的任何两个节点都可以直接互连。节点之间的连接可以是双向的。节点之间的连接也可以是单向的。节点之间的连接还可以有时是双向的,有时是单向的。应注意的是,SDN的节点之间网络传输的方向并不限于本公开中所述的示例。

在图2中,SDN 200的节点之间的连接可用服务节点和控制节点之间的连接线表示。带有双箭头的实线可表示服务节点之间的双向互连。在一些实现中,服务节点之间的双向互连还可以用于发送数据来确定传输容量,详见图3-10的相关描述。带有双箭头的虚线则表示服务节点和控制节点之间的双向连接。控制节点可以从服务节点处接收用于确定传输容量的数据,并且可以向服务节点发送最佳路径。在本公开中,“传输容量”一词指的是进行网络数据传输的在用(或“已用”)或潜在(或“保留使用”)容量或能力。节点的传输容量是指节点转发(如接收和重新发送)网络数据的在用或潜在容量或能力。第一个节点和第二个节点之间的传输容量是指下列至少其中之一:第一个节点将网络数据从第一个节点传输到第二个节点的在用或潜在容量或能力,以及第二个节点将网络数据从第二个节点传输到第一个节点的在用或潜在容量或能力。应注意的是,在实现SDN 200时可部署任何数量任何类型的节点且节点间的互连可任意配置,而并不限于图2所示的示例。

服务节点可以再细分为两种类型:边缘服务节点(或简称为“边缘节点”)和路由服务节点(或简称“路由节点”)。边缘节点直接连接到最终用户终端(或简称为“终端”),如终端220-226。终端可包括能够进行多媒体通信的任何终端用户设备,如智能手机、平板电脑、相机、显示器、笔记本电脑、台式计算机、工作站计算机或配备多媒体I/O的设备。在图2中,服务节点206是终端220和222的边缘节点。服务节点210是终端224的边缘节点。服务节点218是终端226的边缘节点。终端220-226与它们各自的边缘节点之间的连接由单箭头或双箭头实线表示。箭头的方向表示多媒体数据的走向。例如终端220和224的双箭头实线表示它们分别与服务节点206和210之间具有双向通信。终端222的单箭头实线表示它是向服务节点206发送数据。而终端226的单箭头实线则表示它是从服务节点218处接收数据。

路由节点不直接连接到任何终端。路由节点参与转发数据,如服务节点204、208和212-216。在一些实现中,服务节点可以在不同时间在边缘节点和路由节点的之间进行切换,或者同时用作这两种节点。例如,服务节点206是终端220的边缘节点,用于从终端222到终端224的第一条传输路径,其中经由服务节点206和服务节点210传输。服务节点206是从终端224到终端226的第二条传输路径的路由节点,其中经由服务节点210、服务节点206、服务节点204和服务节点218传输。当第一条和第二条传输路径同时使用时,则服务节点206可以既是边缘节点又是路由节点。

在一些实现中,SDN 200的边缘节点可以连接到由互联网服务提供商(ISP)运行的自治系统(AS)。基于服务节点、AS和ISP的地理位置可将SDN 200的拓扑划分为层级组。SDN200的数据传输可以分为两种类型:节点间传输(即服务节点之间的网络传输)和终端节点传输(即边缘节点和终端之间的网络传输)。可采用各种策略来优化节点间和终端与节点间的传输,该内容在2016年2月24日提交的序号为15/052,810的美国专利申请中已公开详述,其所有内容通过引用全部纳入本文。

在一些实现中,基于SDN的系统可用于实时多媒体通信。该系统可以基于SDN(如SDN 200)进行构建,且包括多个服务节点(如服务节点204-218)和至少一个控制节点(如控制节点202)。服务节点可以包括边缘节点(如服务节点206、210和218)和路由节点(如服务节点204、208和212-216)。SDN中的任何服务节点都可以在边缘节点和路由节点之间切换。

可确定服务节点之间表示传输容量的参数,并且将该参数传输到控制节点,以决定服务节点之间的最佳数据传输路径(简称为“最佳路径”)。在下文中,该参数可被称为“路径度量”。可以对路径度量进行反复(如周期性或非周期性反复)监视。在一些实现中,可以按照一定的时间间隔在SDN的任何两个直接连接的服务节点之间反复地确定路径度量。在一些实现中,时间间隔可为常数(如数十毫秒)。在一些实现中,也可以动态地调整时间间隔,如根据SDN的传输负载来调整(例如:传输负载减小则时间间隔增加,反之亦然)。

在一些实现中,路径度量可以包括服务节点的负载状态和服务节点与另一个服务节点之间的传输度量(如用于单向或双向传输)。负载状态可以包括表示服务节点负载的一个或多个参数。例如,负载状态可以包括服务节点的可用吞吐量和服务节点的运行状态等任意数量的参数的任何组合。传输度量可包括表示服务节点之间的传输容量的统计参数或基于事件的参数。例如,传输度量可包括延迟时间、丢包率、网络流量负载和传输配额等任意数量的参数的任何组合。

可以采用主动模式、被动模式或其组合在任何两个服务节点之间确定路径度量。在主动模式中,SDN上任何两个直接连接的服务节点可以使用诸如路由协议来相互发送和接收测试数据包(如包含占位数据的伪数据包)。通过使用接收的测试数据包进行计算,可以确定传输度量(如延迟或丢包率)。例如,通过将接收到的测试数据包的总大小与其数据包报头中所含的测试数据包总大小相除,即可确定丢包率。在被动模式中则不使用测试数据包,而是在服务节点之间传输实际用户数据包。对于两个直接连接的服务节点,可通过对用户数据包进行计算来确定传输度量。应注意的是,在双向通信中,从第一个服务节点到第二个服务节点传输相关的第一个传输度量可以与从第二个服务节点到第一个服务节点传输相关的第二个传输度量不同。也就是说,可以单独且独立地确定第一个传输度量和第二个传输度量。这种传输度量可以被称为双向通信的“非对称”。否则,如将第一个传输度量与第二个传输度量设置为相同(如仅监视第一个传输度量),则传输度量可被称为“对称”。通过确定路径度量,可以对SDN中任意两个直接连接的服务节点之间的双向通信质量进行实时监视和更新。

在一些实现中,可以确定在SDN中建立连接的服务节点之间传输度量,这被称为“内部传输度量”。在一些实现中,也可以确定在非SDN连接的服务节点之间传输度量(如直接互联网连接),这被称为“外部传输度量”。应注意的是,可采用内部传输度量和外部传输度量的任何数量的任何组合来确定路径度量。内部和外部传输度量可用于决定选择通过非SDN连接还是SDN连接在两个服务节点之间传输多媒体数据。换句话说,非SDN连接可以用作SDN连接的候选路由选项,反之亦然。

可将确定的路径度量报告给控制节点。例如,每当一个服务节点确定了该节点与另一个服务节点之间的传输度量(如非对称传输度量)时,该服务节点可以立即将路径度量传输到控制节点。并且可以反复监视服务节点的负载状态并将其发送到控制节点(如与传输度量一起发送)。控制节点可以根据路径度量来确定服务节点之间的最佳路径。在一些实现中,如果是基于一定的时间段(如几十毫秒的时段)来测量路径度量并将其发送到控制节点,那么也可以基于相同的时段来确定最佳路径。还可以基于先验知识(如先前确定的最佳路径)来进一步确定最佳路径。在一些实现中,SDN的任何两个服务节点之间都可以确定最佳路径。在一些实现中,在SDN的任何两个服务节点之间也可以确定多个最佳路径。

在一些实现中,最佳路径可以是对称的(如单向通信中)。也就是说,从第一个边缘节点到第二个边缘节点的最佳路径是从第二个边缘节点到第一个边缘节点的最佳路径的反向路径。在一些实现中,路径也可以是不对称的(如双向通信中)。也就是说,从第一个边缘节点到第二个边缘节点的最佳路径不是从第二个边缘节点到第一个边缘节点的最佳路径的反向路径。如确定的传输路径度量为对称的,则最佳路径也可以是对称的。如确定的传输路径度量是不对称的,则最佳路径也可以是不对称的。

例如,一个SDN可以支持双向通信并且包括N个边缘节点,其中N为正整数。在任何两个直接连接的服务节点之间可确定非对称路径度量。基于该路径度量,可以确定至少N×(N-1)个最佳路径。在一些实现中,对于任何两个服务节点都可以确定K个不对称最佳路径,其中K为正整数。这K个最佳路径可以具有不同的延迟值。在一些实现中,可根据延迟值对K个最佳路径进行排序(如升序排列),可以彼此互为候选路径。例如,当数据传输的K个最佳路径中最低延迟的那条路径不可用时(如已断开连接或其延迟急剧增加)时,则可以切换到具有第二低延迟的那条路径来继续数据传输。

在确定最佳路径之后,控制节点可以将路径数据同步到服务节点,其中包括关于最佳路径的信息。在一些实现中,路径数据可以做成路由表的形式。在一些实现中,路径数据可以与SDN的所有服务节点同步。路径数据的同步可以以传播方式实现。

如图2所示,控制节点202可以将路径数据(如存储在路由表中的路径数据)发送到SDN 200的所有边缘节点,其中包括为终端224作边缘节点的服务节点210。从终端224到终端220的数据传输中,可确定最佳路径为服务节点210-208-206。在本公开中,节点名称与沿着路径方向的连字符相连用于表示传输路径。例如,从节点A到节点B、C和D的传输路径可以用“A-B-C-D”表示。当服务节点210从终端224处接收用户数据(如多媒体数据)时,可将路径数据附加到用户数据包的报头中。可以将用户数据发送到服务节点208,该节点被用作路由节点。服务节点208可以从用户数据包的报头中获得路径数据,并通过处理路径数据(如从路由表中读取)来提取最佳路径210-208-206。基于最佳路径,服务节点208可以将用户数据转发到最佳路径的下一个服务节点,其中用户数据的数据包报头中也包含路径数据。下一个服务节点可以重复相同的操作以获得最佳路径并转发用户数据,直到到达终端224的边缘节点,即该示例中的服务节点206。然后服务节点206可将用户数据传送到终端224。

在本发明的一些实施例中,控制节点可选择服务节点作为边缘节点将一个终端连接到SDN。终端与边缘节点之间的连接是非SDN连接(如互联网连接)。通过接收路径度量,控制节点可获得SDN的实时性能统计。基于以下一个或多个考虑因素,可从一个或多个候选边缘节点中选择边缘节点:与终端相关联的先前最佳路径(例如:该终端在先前最佳路径中所采用的边缘节点可以作为本轮的候选边缘节点),与SDN相关联的网络运营商的规则(例如:规则要求所有终端连接到特定服务节点),候选终端的地理位置,候选服务节点的地理位置,以及与候选边缘节点相关联的路径度量。应注意的是,考虑因素并不限于上述示例,而可以是与传输容量相关的任何因素。控制节点可以为考虑因素分配不同的优先级以确定边缘节点。

如图2所示,当终端226连接到SDN 200并准备向终端220发送多媒体数据时,服务节点212-218都可以是候选边缘节点,并且它们在考虑因素中可具有不同的强项。服务节点212到终端226可具有最低的连接延迟。服务节点214可在先前的最佳路径中曾被用作终端226的边缘节点。服务节点216可在服务节点212-218中具有最小的当前传输负载。服务节点218可具有到终端226的最短地理距离。当控制节点将终端226与服务节点之间的地理距离设为最高优先级时,可以选择服务节点218作为其边缘节点。当控制节点将服务节点的传输负载设为最高优先级时,可以选择服务节点216作为其边缘节点。当控制节点将先前使用的边缘节点设为最高优先级时,可以选择服务节点214作为其边缘节点。当控制节点将连接延迟设为最高优先级时,可以选择服务节点212作为其边缘节点。应注意的是,控制节点还可以综合考虑候选边缘节点的优先级来确定边缘节点。例如,可以为每个考虑因子分配权重以表示其优先级。对于每个考虑因子,控制节点可以为候选边缘节点打分以表示其在该考虑因子中的强弱程度。对于每个候选边缘节点,可为多个考虑因子分别分配不同分数,并且可以根据分配的多个分数来确定总分数,比如通过计算多个分数与各个考虑因子的权重之间的加权和。控制节点可以根据候选边缘节点的总得分基于某一规则来选择边缘节点(如选择总分最高或最低的候选边缘节点)。

在一些实现中,在为终端选择边缘节点之后,可以在连接到SDN之前对终端进行验证。例如,可配置边缘节点对终端进行验证。验证可以基于以下一个或多个条件:将终端连接到SDN的许可,将终端连接到SDN的时间限制,终端发送数据的许可以及终端接收数据的许可。例如,可以向用户收取费用以使用SDN。SDN的管理员可为付费用户分配访问权限(如用户名和密码)。访问权限可包括为付费用户授予使用SDN的各种许可。例如,许可可以限制用户仅能够发送数据、仅接收数据、仅在有限时间内使用SDN或者没有任何限制地自由使用SDN。针对不同的访问权限可以收取不同的费用。可以拒绝付费用户未经授权许可使用SDN的请求。也可以阻止未经授权的用户(如非付费用户或恶意攻击者)连接到SDN。

在一些实现中,控制节点还可以基于用户数据的内容来验证所连接的终端。例如,服务节点可以对发送的多媒体数据进行采样,比如通过拍摄视频流的快照或获取音频流的样本。可将采样数据周期性地发送到控制节点,控制节点可以检测(如通过使用人工智能算法)多媒体数据中是否存在非法、不适当或违反规则的内容。如检测到这样的内容,则控制节点可以终止违规终端的访问权限。

在本发明的一些实施例中,控制节点可根据频道的状况自动调整服务节点之间多媒体数据传输的路由模式。SDN 200的用户可以在不同的数据通信频道(如双工数据频道)中发送和接收多媒体数据。通信事件(如音乐会、会议或直播节目)可以使用频道供用户在彼此之间交换多媒体数据。同一频道中的用户参与的是同一个事件。在某些情况下(如大量用户参与的事件),多个频道可用于同一事件。SDN 200的每个频道可以由控制节点分配唯一标识符,称为“频道ID”。可以将相同频道ID相关的用户数据聚合起来进行传输。服务节点还可以同时用于不同的频道。

如图2所示,终端220-226的用户可以参与在线教育课程,为此可以建立具有唯一频道ID的双工频道。终端220和222连接到相同的边缘节点(即服务节点206),并且终端220和222发送和接收的用户数据可以由服务节点206进行聚合后用于传输。

又如,在图2中终端220和224的用户可以参加一个会议,而终端222和226的用户可以参加现场音乐会。可为这两个事件分别建立频道并具有各自唯一的频道ID。终端220和222连接到相同的边缘节点(即服务节点206),但是终端220和222发送和接收的用户数据不会被服务节点206进行聚合后用于传输。

在一些实现中,控制节点可以在单播模式、多播模式和广播模式之间切换相同频道中的服务节点的路由模式。控制节点可以将频道中参与终端的信息与频道中的服务节点同步。例如,SDN 200中可将多播模式作为默认传输模式。当频道中仅包含两个终端时(即通信是一对一的),多播模式可以自动转换为单播模式。当频道中仅包含一个数据发送终端(即通信是单向的和一对多的)时,多播模式可以自动转换到广播模式。换句话说,单播模式和广播模式可以被视为多播模式的简化情况。

在一些实现中,当频道中进行交换的多媒体数据的量超过阈值时,或者当频道中的用户数量超过阈值时,可采用级联网络拓扑用于多播模式中的数据传输。级联网络拓扑是用于表示服务节点之间互连的树状网络拓扑。可以根据SDN传输容量的改变来动态地配置级联网络拓扑。通过使用级联网络拓扑,可以在SDN中减少或避免过多或冗余的数据转发。

图3是根据本发明实施例所绘制的用于实时视频通信的级联网络拓扑300的示例图。级联网络拓扑300可以用于SDN(如图2中的SDN 200)中的数据传输。级联网络拓扑300可以由SDN的控制节点(如图2中的控制节点202)决定。如图3所示,级联网络拓扑300由服务节点302-326和它们之间的连接线表示。如图3所示,发送方302可以接收多媒体数据(如来自发送终端)并通过路由器304-308将其发送到接收方310-326。接收方310-326可以接收由发送方302发送并由路由器304-308转发的多媒体数据,并再将多媒体数据发送至发送终端所指定的接收终端。发送方、接收方和路由器可以是SDN的服务节点。例如,发送方302和接收方310-326可以是SDN 200的边缘节点。路由器304-308可以是SDN 200的路由节点。如图3所示,将发送方302及接收方310-326中的任意一个终端相连接的路径或路由可以是发送方302和该接收方之间的最佳路径。在一些实现中,最佳路径可以不包括路由节点(即发送方直接连接到接收方)。

服务节点302-306之间的连线可以表示它们之间的直接网络连接(如直接SDN连接)。可以基于发送方和接收方之间的最佳路径来确定级联网络拓扑300。如果最佳路径是对称的,则上面的所有服务节点可以使用相同的级联网络拓扑进行数据发送和接收,该级联网络拓扑可被称为“对称”。如果最佳路径是不对称的,则可为不同的发送方确定不同的级联网络拓扑,该级联网络拓扑可被称为“非对称”。即非对称级联网络拓扑用于单向数据传输。如图3所示,当级联网络拓扑300为非对称时,用连接服务节点302-326的单箭头线来表示单向数据传输。换句话说,级联网络拓扑300与发送方302相关联。当服务节点302-326处于双向通信中时(如发送方302也从接收方310-326中的其中一个终端处接收用户数据),可为任一发送用户数据的边缘节点确定并关联不同的级联网络拓扑。

在一些实现中,级联网络拓扑300可同时包括SDN连接和非SDN连接。例如,级联网络拓扑300中的直接网络连接可以包括其服务节点之间的直接互联网连接。为便于解释而不引起任何歧义,在下文中,级联网络拓扑300中的直接网络连接均假定为直接SDN连接,除非另有明确说明。

根据由控制节点确定的路径度量可以确定级联网络拓扑300。在一些实现中,可以由控制节点基于在发送方和接收方之间测量的路径度量来为发送方和多个接收方确定级联网络拓扑,并且所确定的级联网络拓扑中的每条路径可代表一条最佳路径。例如在图2中,当从终端222发送用户数据到终端224和226时,可以在终端222和224之间确定非对称最佳路径206-208-210。终端222的边缘节点是服务节点206,在图3中由发送方302表示。终端224的边缘节点是服务节点210,图1中可由接收方318表示。最佳路径206-208-210的路由节点是服务节点208,图3中可由路由器306表示。对于发送方(即服务节点206),级联网络拓扑300可通过控制节点确定,其中包含发送方与接收方(如服务节点210和218)之间的最佳路径。最佳路径206-208-210也可以包含在级联网络拓扑300中,由路径302-306-318表示。

在一些实现中,可以基于由路径度量表示的传输容量的改变来动态地配置级联网络拓扑300。如图3所示,在第一个时间段中,路由器304被选择用于发送方302和接收方310之间的最佳路径,由路径302-304-310表示。可以周期性地监视发送方302与同一SDN中的其他服务节点之间的路径度量。可以在发送方302和接收方310之间确定多个候选最佳路径。例如,从发送方302到接收方310的多个候选最佳路径中可以包括总延迟时间各不同的K条最佳路径。这K条最佳路径可以包括路径302-304-310,路径302-328-310(用带箭头的虚线表示)以及其他候选路径(未示出)。在第一个时间段中,从发送方302到接收方310的传输中具有最低延迟的是路径302-304-310。

在第一个时间段之后,假设经测量的路径度量指示在K条最佳路径中路径302-328-310的的总延迟变为最低,则控制节点可以将从发送方302到接收方310的最佳路径改为路径302-328-310来更新级联网络拓扑300。可以将路径302-304-310从更新的级联网络拓扑300中移除。可以至少在路由器328中同步新路径302-328-310,并且将其用于在第二个时间段内发送用户数据。

在一些实现中,可以使用冗余传输来传输多媒体数据以实现容错。在某些情况下,SDN的服务节点可能会发生意外故障(比如出现断电)。为了避免数据传输中断,可以复制用户数据以进行传输。例如,级联网络拓扑300可以修改为将多个服务节划分为一组以形成“服务簇”。用户数据可以在服务簇之间传输,最佳路径的单元或“节点”就是一个服务簇。

例如,级联网络拓扑300可以修改为让图3中的每个圆圈可表示一个服务簇(即不是单个服务节点)。在服务簇306和316之间传输用户数据时,实际上是在服务簇306的当前服务节点和服务簇316的一个服务节点之间传输用户数据。例如在服务簇306处,可将用户数据复制到多个服务节点。可将复制的用户数据独立地发送至服务簇318中的多个相应的服务节点。当服务簇306的当前服务节点发生故障时,用户数据仍然可以被其他服务节点发送到服务簇318而不会导致传输中断。

当复制的用户数据到达接收方(如接收终端的边缘节点)时,可以将其过滤(例如:通过排除损坏的数据包部分)和/或合并(例如:通过组合数据包的各部分)以获得表示原始内容的完整用户数据。然后可将完整的用户数据发送到第二个终端。

如图3所示,通过使用级联网络拓扑300,由于可以将发送方和接收方之间的用户数据流进行聚合,因此可在SDN中减少或避免过多或冗余的数据转发。例如,当发送方302向接收方320-326发送数据时,不需要发送多个复制数据,而是可将数据的一个副本从发送方302发送到路由器308,然后路由器308可生成该数据的四个本地副本,再分别将它们发送到接收方320-326。根据传输容量的变化来动态配置级联网络拓扑300可以节省服务节点之间的网络带宽,也可以自动修复SDN中的网络拥塞,并且可以将边缘节点之间的网络传输延迟降至最低。

图4是根据本发明实施例所绘制的使用SDN进行实时视频通信的过程示例400的流程图。流程400可以实现为图1中系统100中的软件和/或硬件模块。例如,流程400可以实现为服务器(如服务器124)的软件模块。又如,用于实现流程400的软件模块可以存储在存储器(如服务器124的存储器)中,作为可由配备通用网络接口的服务器的处理器(如服务器124的处理器)执行的指令和/或数据。在一些实现中,服务器可以是SDN的控制节点(如图2中的控制节点202)。

在操作402处接收到了路径度量,该路径度量用于指示SDN中直接连接的服务节点之间的传输容量。例如,SDN可以是图2中的SDN 200。直接连接的服务节点可以包括第一个服务节点和第二个服务节点。第一个和第二个服务节点可以是SDN 200上的任何两个服务节点(如任何两个直接连接的服务节点),例如分别是服务节点206和服务节点208。

路径度量可被控制节点(如控制节点202)的处理器接收。在一些实现中,路径度量可以包括直接连接的服务节点中至少一个(如第一个服务节点和/或第二个服务节点)的负载状态。路径度量还可以包括至少两个直接连接的服务节点(如第一个服务节点和第二个服务节点)之间的传输度量(如双向传输度量)。

在一些实现中,可以使用用户数据(如多媒体数据)和测试数据中的至少一个来确定传输度量(如双向传输度量)。用户数据和测试数据可以在直接连接的服务节点(如第一个服务节点和第二个服务节点)之间传输。例如,可采用主动模式来确定传输度量,即使用测试数据。也可以采用被动模式来确定传输度量,即使用用户数据。还可以将活动模式和被动模式一起使用来确定传输度量。图2中与SDN 200相关的描述中已对主动模式和被动模式加以阐述。

在一些实现中,SDN的节点(如第一个服务节点和第二个服务节点)的网络接口硬件可以是通用网络接口硬件。通用网络接口可用于访问对公众开放的公共网络,如互联网。例如,网络接口硬件可以是图1中的网络接口114和122。在一些实现中,网络接口硬件可以不支持任何专用(如闭源、专有、非开放或非公共)网络协议。在一些实现中,SDN上所有服务节点和控制节点的网络接口硬件都可以是通用网络接口硬件。

在操作404处,根据路径度量确定级联网络拓扑,并且级联网络拓扑包括第一个边缘节点和第二个边缘节点之间的最佳路径。在SDN中的第一个边缘节点和第二个边缘节点之间的数据传输路径中,最佳路径可以是具有最低的传输延迟(或简称为“延迟”)的那条路径。最佳路径可以包括第一个服务节点和第二个服务节点中的至少一个。例如,当第一个边缘节点将用户数据发送到第二个边缘节点时,级联网络拓扑可以是图3中的级联网络拓扑300。第一个终端和第二个终端可以分别直接连接到第一个边缘节点和第二个边缘节点。第一个终端可以是图2中的终端222,它与服务节点206(即第一个边缘节点)相连接,在图3中可由发送方302表示。第二个终端可以是连接到服务节点210(即第二个边缘节点)的终端224,在图3中可由接收方322表示。第一个边缘节点和第二个边缘节点之间的最佳路径可以是图2中的206-208-210,其中服务节点208可以由图3中的路由器308表示。最佳路径206-208-210可以由级联网络拓扑300中的路径302-308-322表示。即级联网络拓扑300包括最佳路径206-208-210。在一些实现中,最佳路径可以实现为路由表中的一个或多个条目。例如,这些条目可包括IP地址。

在一些实现中,可确定路径度量是对称的还是非对称的。如果在操作402处确定的路径度量是不对称的,则在操作404处确定的最佳路径也可以是不对称的。在一些实现中,在级联网络拓扑中的发送方和接收方之间可确定多个最佳路径。在一些实现中,在发送方和接收方之间的多个最佳路径可具有不同的延迟值。

在一些实现中,级联网络拓扑可以是递归级联拓扑。在递归级联拓扑中,每个节点最多可有一个输入(即发送用户数据的位置)以及最少有一个输出(即用户数据被发送到的位置)。在一些实现中,如在操作402确定的路径度量是不对称的,则级联网络拓扑也可以是不对称的。在一些实现中,级联网络拓扑可以仅包括一个最佳路径(例如:当SDN以单播模式发送数据时)。

在操作406处,如确定要在第一个边缘节点和第二个边缘节点之间传输多媒体数据,则在第一个边缘节点和第二个边缘节点之间根据最佳路径来传输多媒体数据。例如,级联网络拓扑包括最佳路径206-208-210,多媒体数据可以从第一个边缘节点(即服务节点206)沿该路径传输到第二个边缘节点(即服务节点210)。当第一个终端(即终端222)试图向第二个终端(即终端224)发送多媒体数据时,可以通过最佳路径206-208-210发送多媒体数据。如果级联网络拓扑是对称的,则还可以使用最佳路径206-208-210将多媒体数据从第二个边缘节点发送到第一个边缘节点。又如,级联网络拓扑可以是非对称的并且包括最佳路径210-214-204-206,可以将多媒体数据从第二个边缘节点沿该最佳路径发送到第一个边缘节点。

在一些实现中,为实现容错将采用第一条路径发送多媒体数据的第一个数据包,并采用第二条路径发送多媒体数据的第二个数据包。第一个数据包和第二个数据包是重复的数据包。第一条路径和第二条路径是第一个边缘节点到第二个边缘节点之间的传输路径,且第一条路径与第二条路径不相同。

当第一个数据包和第二个数据包到达第二个终端的边缘节点时,可以对第一个数据包和第二个数据包进行过滤(如通过排除损坏的数据包部分)和/或合并(如组合数据包的各个部分)以获得表示原始内容的完整数据包。然后可以将完整的数据包发送至第二个终端。

在一些实现中,可以基于由控制节点接收的路径度量的变化来动态地更新级联网络拓扑。图5是根据本发明实施例所绘制的更新级联网络拓扑的过程示例流程图。流程500可以实现为图1中系统100中的软件和/或硬件模块。例如,流程500可以实现为服务器(如服务器124)中的软件模块。又如,用于实现流程500的软件模块可以存储在存储器(如服务器124的存储器)中作为可由配备通用网络接口的服务器的处理器(如服务器124的处理器)执行的指令和/或数据。在一些实现中,服务器可以是SDN的控制节点(如图2中的控制节点202)。

在操作502处,可以采用反复的方式来接收路径度量。第一个服务节点和第二个服务节点可以采用反复方式来测量和更新路径度量。然后可以将更新的路径度量发送到控制节点的处理器。在一些实现中,反复方式可以是周期性方式。该周期可以是固定周期(即具有固定时间间隔),也可以是可变周期(即具有非固定时间间隔)。例如,控制节点的处理器可以周期性地接收路径度量。在一些实现中,SDN的任何两个服务节点之间可以周期性地确定的路径度量,并将其发送到控制节点的处理器,以监视两点之间的网络流量。

在操作504处,可以根据接收到的更新的路径度量以反复方式更新级联网络拓扑。例如,可以通过更新第一个边缘节点和第二个边缘节点之间的最佳路径来更新级联网络拓扑。更新的最佳路径可以具有更多路由节点、更少的路由节点或替换为其他的路由节点。如果以周期性方式更新和接收路径度量,则更新级联网络拓扑的时间段可以与更新路径度量的时间段相同。更新级联网络拓扑的时间段也可以与更新路径度量的时间段不同(如两倍的时间)。应注意的是,可以通过不同的反复方式来更新路径度量和级联网络拓扑,而并不限于上述示例。

在一些实现中,SDN可以将服务节点确定为用于将终端(如第一个终端)连接到SDN的边缘节点。可以从多个用作候选边缘节点的服务节点中选择一个边缘节点。为终端选择边缘节点可基于以下一个或多个条件:第一个终端曾经使用过的最佳路径(如包括先前用作第一终端的边缘节点的服务节点的最佳路径),与SDN相关的网络运营商的规则,第一个终端的地理位置,候选边缘节点的地理位置以及与候选边缘节点相关的路径度量。

当确定将一个终端作为边缘节点时,即可建立终端和边缘节点之间的连接(如直接连接)。可以通过如下方式将最佳路径和多媒体数据发送到服务节点(即路由节点和边缘节点)。图6是根据本发明实施例所绘制的多媒体数据传输的流程600的示例流程图。流程600可以实现为流程500中的操作504。流程600可以实现为图1中系统100中的软件和/或硬件模块。例如,流程600可以实现为服务器(如服务器124)中的软件模块。又如,用于实现流程600的软件模块可以存储在存储器(如服务器124的存储器)中作为可由配备通用网络接口的服务器的处理器(如服务器124的处理器)执行的指令和/或数据。在一些实现中,服务器可以是SDN的控制节点(如图2中的控制节点202)。

在操作602处,如确定要从第一个边缘节点向第二个边缘节点发送多媒体数据并且已确定第一个终端的第一个边缘节点,则将路径数据发送到第一个边缘节点。路径数据可由控制节点生成并发送到第一个边缘节点。路径数据可以包括由控制节点确定的第一个边缘节点和第二个边缘节点之间的最佳路径。最佳路径可以是不对称的并且存储在第一个边缘节点中。例如,控制节点可以以周期性方式来确定最佳路径。在确定了包括第一个边缘节点的最佳路径后,控制节点随即可以采用周期性方式将路径数据发送到第一个边缘节点。路径数据可以包括路由表。路由表可以包括作为路由表的条目存储的最佳路径。路径数据可以存储在第一个边缘节点中(如第一个边缘节点的存储器中)。

在操作604处,在多媒体数据的数据包报头中附上路径数据。例如,第一个边缘节点从第一个终端处接收以数据包形式发送的多媒体数据。可将路径数据(如路由表)编码并添加到每个数据包的报头的字段中。

在操作606处,将数据包发送到最佳路径的下一个服务节点。例如,在图2中第一个终端可以是终端224,第二终端可以是终端226,最佳路径可以是210-212-216-218。在最佳路径210-212-216-218中,下一个服务节点可以是服务节点212。在操作604处,服务节点210可将路径数据添加到数据包的报头中。

在操作608处,根据路径数据(如可被下一个服务节点使用的路径数据)确定最佳路径,并且从数据包中确定路径数据。下一个服务节点(如服务节点212)可从数据包中确定路径数据。例如,当下一个服务节点接收到数据包时,服务节点可以从数据包的报头中提取和解码路径数据。下一个服务节点可以再对路径数据(如通过读取和定位路由表的条目)进行处理以确定最佳路径。例如,下一个服务节点可以根据最佳路径来确定后续服务节点(如最佳路径210-212-216-218中的服务节点216)的IP地址以便转发该数据包。下一个服务节点可以再存储(如存储在存储器中)该最佳路径以供将来使用。

在操作610处将确定下一个服务节点是否是最佳路径的末端。最佳路径的末端可以是第二个终端的第二个边缘节点。例如,对于最佳路径210-212-216-218,最佳路径的末端是服务节点218。如果下一个服务节点是最佳路径的末端,则流程600结束。否则,流程600将返回到操作606。也就是说,可以重复操作606-610,直到将数据包发送到最佳路径的末端,然后第二个边缘节点可以将数据包发送到第二终端。

在一些实现中,SDN可以在终端连接到SDN之前对终端进行验证。例如,可以由终端的边缘节点执行验证。图7是根据本发明实施例所绘制的在SDN上对终端进行验证的过程示例流程图。可在流程400中的操作402之前执行流程700。流程700可以实现为图1中系统100中的软件和/或硬件模块。例如,流程700可以实现为服务器(如服务器124)中的软件模块。又如,用于实现流程700的软件模块可以存储在存储器(如服务器124的存储器)中作为可由配备通用网络接口的服务器的处理器(如服务器124的处理器)执行的指令和/或数据。在一些实现中,服务器可以是SDN的控制节点(如图2中的控制节点202)。

在操作702处,确定将一个SDN的边缘节点用作将终端连接到SDN的节点。验证可以基于以下一个或多个条件:将终端连接到SDN的许可,将终端连接到SDN的时间限制,终端发送数据的许可以及终端接收数据的许可。

在操作704处,对终端进行验证确定其可连接到边缘节点。例如,边缘节点可以根据终端发送的凭证(如用户名和密码)来执行验证。

本文还公开了一种基于SDN的实时多媒体通信的系统。例如,SDN可以是图2中的SDN 200。该系统可以包括SDN中的第一个服务节点(如服务节点206)、SDN中的第二个服务节点(如服务节点210)以及SDN中的控制节点(如控制节点202)。控制节点可包括处理器(如处理器116)和耦合到处理器的存储器(如存储器118)。可配置存储器用于存储指令,当处理器执行该指令时可用于实现图4中的流程400中的操作。

在一些实现中,控制节点、第一个服务节点和第二个服务节点的网络接口硬件可以是通用网络接口硬件。通用网络接口硬件可以是用于访问公共网络的任何网络接口硬件。

在一些实现中,可以采用反复的方式(如周期性方式)来确定第一个服务节点和第二个服务节点之间的路径度量,并且在接收到路径度量后以反复方式来更新级联网络拓扑。

在一些实现中,控制节点基于路径度量确定的级联网络拓扑可以包括第一个边缘节点和第二个边缘节点之间的至少两个传输路径以实现容错。例如,这两个或两个以上的传输路径的路由节点可以彼此不同。又例如,如图2所示,级联网络拓扑也可以是服务簇之间的拓扑。每个服务簇可以包括多个服务节点。在一些实现中,这两个或两个以上的传输路径可以通过相同的服务簇进行传输。例如,第一条传输路径可以分别包括第一个服务簇和第二个服务簇中的第一个服务节点和第二个服务节点。第二条传输路径可以分别包括第一个服务簇和第二个服务簇中的第三服务节点和第四服务节点。第一、第二、第三和第四个服务节点互不相同。第一和第二条传输路径都可以从第一个边缘节点连接到第二个边缘节点。应注意的是,这两个或两个以上的传输路径也可以通过不同的服务簇进行传输。

在一些实现中,所述两个或两个以上的传输路径可包括从第一个边缘节点到第二个边缘节点的第一条路径和从第二个边缘节点到第一个边缘节点的第二条路径。第一条路径的服务节点可以与第二条路径的服务节点不同。换句话说,在第一个边缘节点和第二个边缘节点之间第一条路径和第二条路径是不对称的。

在一些实现中,SDN中的系统可以包括多个通信频道以支持多频道通信。例如,每个通信频道可以包括SDN中的一组服务节点。该组中的至少一个服务节点可以与不同的通信频道相关联。

图8是根据本发明实施例所绘制的用于实时视频通信的设备示例图。例如,该设备可以是SDN中的一个服务节点,SDN可以是图2中的SDN 200。服务节点可以是服务节点204-218中的任何一个。

服务节点800可以包括多个软件模块用于执行图2-7所述的各项功能。这些软件模块至少包括验证模块802、探测模块804、路由模块806和频道模块808。服务节点800可以连接到SDN中的终端810、服务节点812和控制节点814中的一个或多个,且该连接是双向连接。

当选择服务节点800作为终端810的边缘节点时,验证模块802可以用于对终端810进行验证。探测模块804可以用于确定路径度量,如服务节点800的负载状态和服务节点800与SDN中的其他直接连接的服务节点之间的传输度量。例如,其他直接连接的服务节点可以包括服务节点812。探测器模块804可以用于使用主动模式和/或被动模式来确定传输度量,详见图2的相关描述。可将由探测器模块804确定的路径度量发送到控制节点814。控制节点814可以根据路径度量来确定包括服务节点800的最佳路径。控制节点814可以将路径数据发送回服务节点800,其中路径数据可包括最佳路径。

路由模块806可用于根据最佳路径发送和接收用户数据(如多媒体数据)。当服务节点800被用作边缘节点时,可以从控制节点814发送的路径数据中获得最佳路径,或者当服务节点800被用作路由器时,则可以从另一个服务节点(如服务节点812)处获得最佳路径。从路由模块806接收的用户数据包的报头中可提取路径数据(如路由表)。可将最佳路径作为路由表的条目。路由表的条目可以包括多个IP地址。例如,最佳路径可以是一系列有序IP地址,包括服务节点800的IP地址。路由模块806通过识别最佳路径中的下一个IP地址可确定目标服务节点以转发用户数据。

频道模块808可以用于支持服务节点800的多频道通信。服务节点800可同时用在不同的频道中进行数据传输,其中不同频道中的用户数据可以通过服务节点800独立接收和/或转发。例如,频道模块808可以保存频道ID的记录。频道ID可以与最佳路径和用户数据包相关。在一些实现中,在用户数据包的报头中可包含一个唯一的频道ID,并且最佳路径也可以包含一个字段用于存储频道ID。当路由模块806接收到用户数据包时,频道模块808可以从用户数据包的报头中确定唯一的频道ID,并将其与路径数据中的频道ID进行比较。如果两者匹配,则含有该唯一频道ID的用户数据可被转发到具有相同唯一频道ID的最佳路径的下一个服务节点。

本文还公开了用于实时多媒体通信的软件定义网络(SDN)的设备。例如,该设备可以是SDN中的控制节点(如控制节点202)。该设备可以包括处理器(如处理器116)和耦合到处理器的存储器(如存储器118)。可配置存储器用于存储指令,当处理器执行该指令时可用于执行下列O1和O2操作。

在操作O1处,处理器以反复方式接收与SDN中的第一个服务节点和SDN中的第二个服务节点相关联的路径度量。路径度量包括第一个服务节点和第二个服务节点的负载状态以及第一个服务节点和第二个服务节点之间的传输度量(如双向传输度量)。

在操作O2处,在接收到路径度量后随即更新级联网络拓扑。级联网络拓扑包括一个最佳路径用于在连接到第一个服务节点的第一个终端和连接到第二个服务节点的第二个终端之间传输多媒体数据。

在一些实现中,根据预定的规则,设备可以允许或阻止SDN的通信频道。例如,预定规则可以包括确定通信频道中的用户数据是否包括由SDN的管理员指定的非法、违规或不适当的内容。

在一些实现中,如确定通信频道中的多个终端数量超过阈值,可为该通信频道确定用于传输多媒体数据的传输模式。例如,传输模式包括多播模式、广播模式和单播模式中的至少一个。

图9是根据本发明实施例所绘制的另一个用于实时视频通信的设备示例图。例如,该设备可以是SDN中的控制节点900,并且SDN可以是图2中的SDN 200。控制节点900可以是图8中的控制节点814或图2中的控制节点202。

控制节点900可包括多个软件模块用于执行图2-7所述的各项功能。这些软件模块至少包括验证控制器902、探测控制器904、路由控制器906、频道控制器908和边缘节点选择器910。控制节点900可以连接到SDN中的多个服务节点,如图8中的服务节点800和812。

验证控制器902可用于执行通信频道中的内容控制和连接终端的访问控制。例如,验证控制器902可以通过分析样本数据来监视发送的数据内容。样本数据可由服务节点生成并发送到控制节点900。当验证控制器902认为频道内容违反了SDN管理员预设的规则时,可以阻止该频道的数据通信。又如,验证控制器902也可以监视连接终端的行为。当验证控制器902认为连接终端的行为是恶意的(如未经授权地传播受版权保护的内容)时,验证控制器902可以终止该终端与SDN的连接。

探测控制器904可用于确定最佳路径。例如,探测器控制器904可从服务节点处(如从服务节点800的探测模块804)接收路径度量。探测器控制器904可以根据路径度量和/或先前的最佳路径来确定最佳路径。根据从不同服务节点处接收到的不同路径度量,可以生成不同的最佳路径。在一些实现中,对于SDN的两个边缘节点,可以由探测控制器904确定多个最佳路径(如K个最佳路径)。例如,可以根据延迟时间对多个最佳路径进行排序,并且每条最佳路径都可作为彼此的替代路径。

路由控制器906可用于确定级联网络拓扑并将其传播到服务节点。在一些实现中,根据由探测器控制器904确定的与连接到数据发送终端的边缘节点相关联的最佳路径,路由控制器906可以通过将边缘节点设置为发送方(如图3中的发送方302)合成最佳路径来确定级联网络拓扑。在一些实现中,路由控制器906可以将包含已确定的级联网络拓扑的路径数据发送至相关服务节点(如服务节点800)的路由模块(如路由模块806)。

频道控制器908可用于支持SDN的多频道通信。例如,频道控制器908可以将频道ID分配、维护和销毁到SDN的通信频道。当为多媒体通信事件新建一个频道时,可以在控制节点处注册该频道,并且频道控制器908可将一个频道ID分配给该频道。在一些实现中,频道控制器908可以与服务节点的频道模块协作来对不同频道中发送方(如图3中的发送方302)和接收方(如接收方310-326)的信息进行同步。在一些实现中,频道控制器908可为不同频道中的数据传输动态地选择传输模式(如单播、广播和多播)。

边缘节点选择器910可用于为终端选择边缘节点。例如,边缘节点选择器910可以从终端的候选服务节点处接收关于参数(如数据传输配额、负载状态和健康状态)的统计数据。然后边缘节点选择器910可以基于各种考虑因素来确定边缘节点。在一些实现中,边缘节点选择器910可以在数据传输期间根据候选服务节点的参数改变而动态地改变同一终端的边缘节点。

图10是根据本发明实施例所绘制的用于实时视频通信的通信频道1000的示例图。在频道1000的任何两个连接的终端之间可以建立双向通信。频道1000可以被视为服务于相同频道的一组服务节点。频道1000的服务节点可被分成不同的层。可根据以下一个或多个因素进行分层:服务节点的地理位置、服务节点所连接的ISP、服务节点的本地网络的拓扑以及服务节点所属的自治系统(AS)等。

在一些实现中,频道1000中的服务节点可以被划分为边缘节点集1002和1012层、服务簇集1004和1010层以及AS 1006和1008层。与边缘节点集1002中第一个边缘节点相连接的第一个终端可以跟与边缘节点集1012中第二个边缘节点相连接的第二个终端建立双向传输路径。双向传输路径在传输中可通过边缘节点集1002、服务簇集1004、AS 1006、AS1008、服务簇集1010和边缘节点集1012。为便于解释而不引起歧义,作为示例,我们假设多媒体数据在下文中都是从第一个终端发送到第二个终端。

边缘节点集1002包含多个边缘节点。每个边缘节点可以负责连接某一地理区域内(如城市)的终端。可以设置多个边缘节点以覆盖某一地理区域(如包括多个城市的大都市区域)。

服务簇集1004包含多个服务簇。每个服务簇可表示一组服务节点,这些服务节点具有相似的硬件配置并且位于同一物理网络下。例如,服务簇可以包括同一服务器机房中、同一建筑物内、共享同一网关或通过同一个ISP互连的服务节点。每个服务簇都可以连接到多个边缘节点。服务簇可以将从与之相连接的边缘节点处接收到的用户数据进行聚合或复制。

AS 1006包含多个AS节点。同一AS中的AS节点可以共享相同的物理网络特性,且AS节点之间的传输质量可以是高度可靠的。例如,AS节点可以是国际网络连接的主要节点。每个AS节点都可以连接到多个服务簇。而且AS节点可将从与之相连接的边缘节点处接收到的用户数据进行聚合。

在频道1000中的每个层中,可以选择该层的一个或多个节点作为路由节点以用于在该层的节点内转发用户数据。可以根据诸如系统负载和传输质量等条件对路由节点进行选择。

例如,频道1000可以用于国际会议事件,其中第一个终端向另一个国家的第二个终端发送多媒体数据。城市C1中的第一个终端可以连接到边缘节点集1002中的第一个边缘节点。第一个边缘节点将接收到的用户数据转发和/或发送到服务簇集1004中的第一个服务簇。第一个服务簇可以从与第一个ISP P连接的边缘节点处接收数据。第一个服务簇可将接收到的用户数据转发和/或发送到AS 1006中的第一个AS节点。第一个AS节点可以接收来自国家CR1内服务簇的数据。

第一个终端发送的用户数据可以通过AS 1008中的第一个AS节点传输到的第二个AS节点(如跨国家传输)。第二个AS节点可以接收发往国家CR2内终端的用户数据。可将第一个终端发送的用户数据转发和/或发送到服务簇1010中的第二个服务簇。第二个服务簇可以接收发往国家CR2的州(或省)S的用户数据。第一个终端发送的用户数据可以再被转发和/或发送到边缘节点集1012中的第二个边缘节点。第二个边缘节点可服务于州(或省)S中的城市C2,而第二个终端就位于城市C2。第二个终端可接收第一个终端从第二个边缘节点发送的用户数据,至此完成数据传输。

从以上描述可以看出,通过将频道1000划分为具有相似特性的层并聚合每层中的用户数据,可以最大程度地利用潜在的网络带宽,并且可以大大减少终端之间的传输延迟。

如上所述,本领域专业人士应该会注意,本文所述的本发明的全部或部分内容可以使用具有计算机程序的通用计算机或处理器来实现,其计算机程序在被运行时可执行本文所述的任何相应的技术、算法和/或指令。

本文所述的计算设备(以及存储在其上和/或由此执行的算法、方法、指令等)可以通过硬件、软件或其任何组合来实现。硬件可包括计算机、知识产权(IP)内核、专用集成电路(ASIC),现场可编程门阵列(FPGA)、可编程逻辑阵列、光处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或其他任何适用的电路。在权利要求中,“处理器”一词应理解为包含任何上述内容中的一个或其多个组合。

本文所述各方面内容可通过功能块组件和各种处理操作来描述。本文的流程和序列可以单独或以任何组合形式来执行。功能块可以通过执行任意数量的可运行特定功能的硬件和/或软件组件来实现。例如,所述的内容可以采用各种集成电路组件,例如存储器元件、处理元件、逻辑元件、查找表等,在一个或多个微处理器或其他控制设备的控制下执行各种功能。类似地,实现所述内容各个功能时如需采用软件编程或软件元件,都可以采用诸如C、C++、Java、汇编程序等的任何编程或脚本语言来实现本发明,且可以采用任何数据结构、对象、进程、例程或其他编程元素的任意组合来执行各种算法。各项功能可以在一个或多个处理器上通过执行算法来实现。此外,本发明所述各功能可以采用任意数量的常规技术来进行电子配置、信号处理和/或控制、数据处理等。本文广泛使用“机制”和“元素”这些词语,并不限于机械或物理实现,而是可以包括与处理器结合的软件例程等。

以上发明的实施方式或部分实施方式可以采取计算机程序产品的形式,该程序产品可通过计算机使用或可由计算机可读介质进行访问等。计算机可用或计算机可读介质可以是任何设备,该设备可以具体包含、存储、传送或传输供任何处理器使用或与其结合使用的程序或数据结构。该介质可以是电子的、磁的、光学的、电磁的或半导体设备等等。也可包含其他适用的介质。上述计算机可用或计算机可读介质可以被称为非暂时性存储器或介质,并且可以包括RAM或其他易失性存储器或存储设备,它们可以随时间变化而发生改变。本文所述的设备存储器并非必须物理上配备于设备中,而是可以由设备远程访问,并且不必与设备中其他物理上配备的存储器相邻,除非另有特别说明。

本文所述作为本发明的示例执行的一项或多项功能均可使用机器可读指令来实现,该指令用于操作前述一个或多个组合的硬件。计算代码可以以一个或多个模块的形式实现,通过该模块可以将一个或多个组合的功能作为计算工具来执行,在运行本文所述方法和系统时,输入和输出数据在每个模块与一个或多个其他模块之间进行相互传输。

本文中“信号”和“数据”两词可以互换使用。此外,计算设备各部分功能并非必须以相同的方式来实现。信息、数据和信号可以使用各种不同的技术和方法来表示。例如,本文中提到的任何数据、指令、命令、信息、信号、比特、符号和芯片可以用电压、电流、电磁波、磁场或粒子、光学场或粒子等一项或多项组合来表示。

本文采用“示例”一词来表示举例、实例或说明。本文所述用于“示例”的任何功能或设计不一定表示其优于或胜于其他功能或设计。相反,使用“示例”一词是为了以具体的方式呈现概念。另外,“一个功能”或“一项功能”这两个短语在全文中多次用到,但并不意味着同一个实施方式或同一功能。

本文中所使用的“或”字旨在表示所指的两种或两种以上元素包含性的“或”而不是排他性的“或”。也就是说,“X包括A或B”意在表示任何自然的包含性排列,除非另有说明,或者从上下文可明确判断则另当别论。换句话说,如果X包含A,X包含B,或X包含A和B,那么在任何前述实例下“X包含A或B”都成立。以此类推,“X包括A和B中的一个”是指“X包括A或B”。本公开中使用的“和/或”一词旨在表示“和”或不排他性的“或”。也就是说,“X包括A、B和/或C”旨在表示X可包括A、B和C的任何组合,除非另有说明或上下文另有明确指示。换句话说,如果X包括A,X包括B,X包括C,X包括A和B,X包括B和C,X包括A和C,或者X包括A、B和C中的全部,那么上述情况中的每一种或多种都符合“X包括A、B和/或C”的描述。以此类推,“X包括A、B和C中的至少一个”是指“X包括A、B和/或C”。

本文中“包含”或“具有”及其同义词旨在表示包括其后列出的项目及其等同物以及附加项目。根据上下文语境,本文中的“如果”一词可以被解释为“当”“当……时”或“假设”等意思。

在本发明所述内容(特别是下文的权利要求书)中,“一”、“一个”和“该”以及类似的指示代词应理解为包含一个和多个的单数和复数形式。此外,本文中对数值范围的描述只是一种简便的描述方式,旨在表示包含在该范围之内的每一个单独数值,并且每个单独值并入规格范围中,等效于在本文中单独列举。最后,本文所述的所有方法的步骤可以以任何合适的顺序执行,除非本文另有说明或者与上下文明显矛盾。本文提供的示例或示例性语言(例如“诸如”)的使用旨在更好地说明本发明,并无意于限制本发明的范围,除非另有说明。

本文使用各种标题和小标题列出列举条目。包含这些内容是为了增强可读性并简化查找和引用材料的过程。这些标题和小标题无意于、也不会用来影响对权利要求的解释或以任何方式限制权利要求的范围。本文示出和描述的具体实现是本发明的说明性示例,且无意于以任何方式限制本发明的范围。

本文引用的所有参考文献(包括出版物、专利申请和专利)均通过引用纳入本文,等效于单独且明确地指明将每个参考文献通过引用纳入本文,且涵盖参考文献的全部相关内容。

虽然已经结合某些实施方案和实施例对本发明进行描述说明,但应理解为,本发明并不限于所公开的实施方案,与之相反,本公开旨在覆盖权利要求范围之内所涵盖的各种变体和等同设置,该范围应被赋予最宽泛的解释以涵盖法律允许的所有上述变体和等同设置。

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:通过已注册用户的认证来注册新用户的电子设备和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类