首页> 中国专利> 用于在去中心化网络上进行安全的实时多媒体串流的系统和方法

用于在去中心化网络上进行安全的实时多媒体串流的系统和方法

摘要

本发明涉及适合于在去中心化或中心化网络上进行实时串流的系统和方法。在去中心化网络中,本发明涉及一种利用区块链分布式网络来安全地且可靠地实时串流多媒体的系统和方法。在中心化网络中,本发明利用中心化流管理器来管理分布式网络内的节点,以安全地且可靠地实时串流多媒体。

著录项

  • 公开/公告号CN112470156A

    专利类型发明专利

  • 公开/公告日2021-03-09

    原文格式PDF

  • 申请/专利权人 红外线5有限公司;

    申请/专利号CN201980040073.4

  • 申请日2019-04-12

  • 分类号G06F21/64(20060101);G06Q20/38(20060101);

  • 代理机构44205 广州嘉权专利商标事务所有限公司;

  • 代理人黄晓升

  • 地址 美国马萨诸塞州

  • 入库时间 2023-06-19 10:08:35

说明书

相关申请的交叉引用

本申请要求2018年4月16日提交的美国专利申请No.15/954,473的优先权,并且对于这两个申请共有的所有主题而言享有美国专利申请No.15/954,473的权益。所述专利申请的公开内容通过引用整体并入本文中。

技术领域

本发明涉及适合于在去中心化或中心化网络上进行实时串流的系统和方法。特别地,本发明涉及一种利用区块链或中央流管理器来在分布式网络上安全地且可靠地实时串流多媒体的系统和方法。

背景技术

一般地,互联网的出现和对计算机网络访问的增加(增加了网络带宽)已经促进了将音频和视频内容串流至终端用户的能力。直播视频串流是快速增长的市场。在2016年,有81%的互联网和移动观众观看的直播视频比2015年更多。视频串流占所有互联网流量的三分之二以上,并且预计到2020年将达到82%。直播串流为传统上要求人们参加体育比赛的内容提供了机会。目前,有45%的直播视频观众会从喜欢的团队、演讲者或表演者处购买直播、独家、点播视频。视频质量被认为是67%的观众最重视的因素,这意味着具有低时延的高分辨率视频流。

直播视频串流产生更大的参与度,观看者观看直播视频的时间是点播视频的八倍。直播视频的转换时间为42.8分钟,而点播视频的转换时间仅为5.1分钟。

直播串流市场估计将从2016年的302.9亿美元增长到2021年的700.5亿美元,预计接下来5年的CAGR(复合年增长率)为18.3%。Facebook Live等平台的收看时间增长是2016年的四倍,并且直播视频包括其视频内容的20%。HQ Trivia等新平台在六个月时间段内甚至有更快的增长速度。

从2016年1月到2016年6月,在其网站和社交媒体平台上串流直播视频的前500名媒体发布者从10%增加到50%。截至2016年11月,53%的13岁至17岁的美国互联网用户在社交媒体上观看直播串流视频。在中国,这些数字甚至更高,其中,有83%的千禧一代和近一半的总在线人口使用直播串流服务。

在消费者对直播交互式视频体验的需求的推动下,越来越多的公司正了解到运行这些流有多昂贵。到目前为止,低时延视频串流的最大支出是带宽。传统的基于云的服务提供了易于使用并随需求增加而扩展的解决方案,但是当按千兆比特来定价时,这些服务可能是昂贵的。

发明内容

需要进行改进以安全地且可靠地串流多媒体。在各种实施方式中,本发明除了具有其他期望的特性之外,还提供了解决该需求的解决方案。

根据本发明的示例实施方式,提供了一种用于创建用于实时串流的去中心化网络的系统。该系统包括:至少一个广播者设备,所述至少一个广播者设备配置为向至少一个订户设备提供流;至少一个原始节点设备,所述至少一个原始节点设备配置为与至少一个广播者设备建立连接以转发流;以及至少一个边缘节点设备。至少一个边缘节点设备配置为:与至少一个订户设备建立连接;从至少一个原始设备接收流;以及将流提供给至少一个订户设备。将流从至少一个广播者设备提供给至少一个订户设备是由区块链控制的。

根据本发明的各方面,该系统还包括至少一个中继节点设备,所述至少一个中继节点设备配置为在至少一个原始节点设备与至少一个边缘节点设备之间中继流。该系统还可以包括使用逻辑回归过程从可用节点设备列表中识别出用于至少一个原始节点设备、至少一个边缘节点设备和至少一个中继节点设备中的至少一者的合适节点设备。逻辑回归过程可以包括确定地理位置、带宽得分、数据包丢失得分和年龄中的至少一者,并且基于地理位置、带宽得分、数据包丢失得分和年龄中的至少一者来识别合适节点。确定地理位置可以包括:基于节点在加入去中心化网络时的IP地址来计算节点的地理位置;基于地理位置的地理区域来关联地理值,以及基于所述节点的地理值和所述目标节点的地理值来计算节点与目标节点之间的距离。确定带宽得分可以包括:监测提供给节点的交易的带宽;计算交易的所有带宽的总和;以及将该总和除以在节点加入去中心化网络之后所生成的所有交易的总和。确定数据包丢失得分可以包括:计算由节点的相邻节点报告的所有数据包丢失的总和;以及将该总和除以该节点执行的交易的总数。确定年龄可以包括自节点传递最近的流以来所经过的时间量。

根据本发明的各方面,该系统还可以包括至少一个代理节点设备,所述至少一个代理节点设备配置为在至少一个原始节点设备与至少一个广播者之间建立用于WebRTC协议的通信。WebRTC协议可以用于实现双层加密,该双层加密包括使用数据报传输层安全(DTLS)通过WebRTC协议进行加密的第一加密层以及通过WebRTC的数据信道传输数字版权管理(DRM)密钥的第二加密层。该系统可以还包括转码器,该转码器配置为提供多比特率(MBR)以创建通过至少一个原始节点的具有不同比特率的多个流。

根据本发明的示例实施方式,提供了一种用于选择参与去中心化网络上的实时串流的节点的方法。该方法包括:由节点注册以参与去中心化网络;由去中心化网络将智能合约部署到注册节点;由节点向智能合约发出呼叫以加入去中心化网络;由节点接收对用于在去中心化网络上串流多媒体的角色的选择;由节点将接收到的多媒体串流至目标节点;由节点监测节点的计算资源;以及由节点至少基于所监测的计算资源来更新用于节点状态的数据字段。

根据本发明的示例实施方式,提供了一种用于建立用于在去中心化网络上进行串流的连接的方法。该方法包括:由终端用户设备从区块链获得可用节点列表;由终端用户设备使用逻辑回归从可用节点列表中识别出合适节点;由终端用户设备使用可验证的随机函数从合适节点中选择一个节点;由终端用户设备使用逻辑回归从可用节点列表中识别出合适代理节点;以及由终端用户设备使用可验证的随机函数从合适节点中选择至少一个代理节点。该方法还包括:由终端用户设备连接至至少一个代理节点;由至少一个代理节点连接至至少一个节点;以及更新区块链以反映终端用户设备与至少一个代理节点之间以及至少一个代理节点与至少一个节点之间的关系。至少一个代理节点在终端用户设备与至少一个节点之间建立连接。

根据本发明的方面,至少一个节点是边缘节点和原始节点中的一者。终端用户设备可以是广播者设备和订户设备中的一者。该方法还可以包括由终端用户设备使用可验证的随机函数从合适节点中选择用于至少一个节点的备份节点。该连接可以是WebRTC连接。

根据本发明的示例实施方式,提供了一种用于创建用于实时串流的中心化网络的系统。该系统包括:至少一个广播者设备,所示至少一个广播者设备配置为向至少一个订户设备提供流;至少一个原始节点,所述至少一个原始节点配置为与至少一个广播者建立连接以转发流;以及至少一个边缘节点设备。至少一个边缘节点设备配置:为与至少一个订户设备建立连接;从至少一个原始设备接收流;以及将该流提供给至少一个订户设备。将流从至少一个广播者设备提供给至少一个订户设备是由中心化流管理器控制的,该中心化流管理器配置为从可用节点列表中选择至少一个原始节点和至少一个边缘节点。

根据本发明的方面,该系统还包括至少一个中继节点设备,所述至少一个中继节点设备配置为在至少一个原始节点设备与至少一个边缘节点设备之间中继流。流管理器可以基于至少一个广播者设备和至少一个订户设备的地理位置从可用节点列表中选择至少一个原始节点和至少一个边缘节点。

根据本发明的示例实施方式,提供了一种用于建立用于在中心化网络上串流的连接的方法。该方法包括:由流管理器设备从终端用户设备接收对原始节点或边缘节点的请求;由流管理器设备从可用节点列表中识别出用于请求的终端用户设备的合适节点;由流管理器设备从合适节点中选择至少一个节点;以及并且由流管理器设备将至少一个节点发送至请求的终端用户设备。

根据本发明的方面,终端用户设备是广播者设备或订户设备。

附图说明

通过参考结合附图进行的以下详细说明,将更充分地理解本发明的这些和其他特征,在附图中:

图1是根据本发明的用于去中心化串流网络的示例性配置;

图2是根据本发明的用于在去中心化串流网络内实现代理节点的示例性配置;

图3是根据本发明的用于在去中心化网络内注册节点的示例性过程;

图4是根据本发明的用于选择在去中心化网络上进行串流的节点的示例性过程;

图5A是根据本发明的用于在广播者与原始节点之间实现WebRTC连接的示例性过程;

图5B是根据本发明的用于实现广播者与原始节点之间的连接的示例性过程;

图6A是根据本发明的用于实现订户与边缘节点之间的WebRTC连接的示例性过程;

图6B是根据本发明的用于实现订户与边缘节点之间的连接的示例性过程;

图7A是根据本发明的用于选择备份边缘节点的示例性过程;

图7B是根据本发明的在实现备份节点的同时在广播者与订户之间传递流的示例性过程;

图8是根据本发明的用于节点从去中心化网络内的参与断开的示例性过程;

图9是根据本发明的用于启用节点与备份节点从去中心化网络内的参与断开的示例性过程;

图10是根据本发明的用于网络上的多个比特率的示例性过程;

图11是根据本发明的用于中心化流网络的配置;

图12A、图12B、图12C和图12D是根据本发明的用于实现中心化网络的示例性过程;以及

图13是根据本发明的在去中心化网络内使用的示例性计算机架构。

具体实施方式

本发明的说明性实施方式涉及用于在因特网上提供多媒体的方法和系统。本发明可以在用于基于区块链技术来进行实时多媒体串流的去中心化系统中或者在具有中心化流管理器的中心化系统中实现。本发明的去中心化系统利用由个人用户/计算设备(也称为节点所有者)提供的可用资源来通过去中心化网络传递流。不管实现方式(例如,去中心化还是中心化)如何,本发明都配置为利用过量可用的云和/或裸机硬件资源来向终端用户传递多媒体内容。更具体地,选择运行实现本发明的软件的个人用户成为点对点网络中的节点中的一个节点,并且可以开始在广播者与订户之间路由流。结果,本发明利用计算技术(例如,互联网、云计算、区块链等)的进步来实现独特的步骤组合,该步骤组合提供了用于在远程设备之间串流多媒体的改进的系统和方法。

如本文中所使用的,广播者被定义为想要通过网络来串流多媒体的任何用户和用户设备,而订户是想要观看流的任何用户和用户设备。如本领域的技术人员将理解的,本发明所论述的广播者和订户可以包括实现本发明的过程的计算设备以及拥有和/或操作计算设备的一个或多个用户。本发明为提供流的广播者、托管流的节点以及接收流的订阅终端用户提供了益处。

另外,广播者将完全控制其流,并且系统中的任何实体均无权执行任何审查措施。在某些实施方式中,可以通过去中心化网络以加密的方式传递流,并且实施DRM(数字版权管理)密钥以确保只有获得许可的观众才能解密内容。在去中心化系统中,所有操作都可以由用于提供实时串流并且具有低于500毫秒的端到端时延的底层的区块链技术来控制。在中心化系统中,所有操作都可以由中心化流管理器控制。另外,为了确保最佳性能,系统基于带宽和地理位置来选择节点以传递特定的流。

在图1至图13中,相同的部分始终由相同的附图标记表示,图1至图13示出了根据本发明的用于在互联网上串流音频和视频的改进操作的一个或多个示例性实施方式。尽管将参照附图中示出的一个或多个示例实施方式描述本发明,但是应当理解的是,许多替代形式可以体现本发明。本领域技术人员将另外领会到以仍然符合本发明的精神和范围的方式改变所公开的实施方式的参数的不同方式。

图1描绘了用于实现本发明的示例性系统和网络。特别地,图1描绘了分布式点对点网络100,分布式点对点网络100配置为将多媒体(例如,音频或视频)在一系列连接节点106上从广播者102(例如,服务提供者)串流至终端用户104(例如,订户)。网络100内的每个部件基于安装在其中的软件(例如,服务器/客户端软件)根据本发明进行操作。在实施方案中,网络100内的每个节点106的行为由本发明的软件实现的过程和协议来管理。根据示例实施方式,可以为节点106分配网络100内的四种不同角色中的一种角色。角色的分配由网络类型决定。例如,在去中心化网络100中,角色由区块链决定,并且在中心化网络中,角色由中心化流管理器分配。角色包括原始节点106a、中继节点106b、边缘节点106c和可选的代理节点106d。原始节点106a是接待节点106,并且可以配置为从广播者104接收多媒体流,并将多媒体流分发给中继节点106b/边缘节点106c。在实施方案中,原始节点106a可以是由广播者102拥有和控制的节点106,或者是从点对点网络100中可用的节点106池中随机选择的节点106。

中继节点106b可以配置为转发原始节点106a与边缘节点106c之间的多媒体流。在实施方案中,每个中继节点106b可以连接至数十个或数百个边缘节点106c。边缘节点106c是可以配置为将多媒体流传递至终端用户104的节点106。每个边缘节点106c可以服务多达数千个订户104。如本领域技术人员将理解的,该数目取决于网络100中的节点106的硬件容量和由广播者102提供的流的质量。通常,流的质量越高,则每个节点106的容量越小。

根据本发明的示例实施方式,取决于在网络100上实现的通信协议,可以可选地需要代理节点106d。例如,网页实时通信(Web Real-Time Communication,WebRTC)和HTML5跨域资源共享(HTML5 Cross-Origin Resource Sharing,CORS)标准要求将超文本标记语言(Hypertext Markup Language,HTML)页面通过安全超文本传输协议(Hypertext TransferProtocol Secure,HTTPS)传递至浏览器,以供用户访问摄像头和麦克风,并且因此需要实施代理(例如,代理节点)来通过安全套接层(Secure Sockets Layer,SSL)证书,如图2所描绘的。如本领域技术人员将理解的,不需要SSL证书的其他协议(例如,实时消息协议(Real-Time Messaging Protocol,RTMP)、安全实时传输协议(Secure Real-Time TransportProtocol,SRTP)、HTTP直播串流(HTTP Live Streaming,HLS)等)不需要代理节点106c来操作。

代理节点106d通常配置为广播者102和订户104的入口点(例如,在订户104与边缘节点106c之间和/或在广播者102与原始节点106a之间)。特别地,代理节点106d可以是配置为在网络上实现加密协议以提供通信安全性并且可以在网络100中的节点106之间被随机选择的节点106。对代理节点106d的唯一要求是实现SSL证书并具有域名。SSL证书将允许设置实时通信(例如,通过WebRTC连接)并符合Web浏览器强制执行的规则(例如,跨域资源共享(Cross-Origin Resource Sharing,CORS))。此外,仅在WebRTC中的信令阶段才需要SSL,这可以通过HTTPS或安全WebSockets(WSS)完成。一旦完成信令,就不再需要代理节点106c,并且浏览器(例如,在广播者102设备上)可以直接与另一个节点106(例如,原始节点106a)连接。图2描绘了如何使用代理节点106d来建立广播者102与原始节点106a之间的连接。如图2的过程200所示,例如,广播者102将直接使用WSS连接至代理节点106d,并且广播者将与代理节点106d共享原始节点106a的IP地址。此后,代理节点106d可以使用WSS直接与原始节点106a连接。一旦该过程完成,则广播者102可以直接与相应的原始节点106a连接,如图2所示。

点对点网络100中的每个节点106对于不同的多媒体流(流的不同实例)可以具有不同的角色。例如,节点106可以配置为用于一个流的原始节点106a,而同时配置为用于另一流的边缘节点106c。如本领域技术人员将理解的,根据网络内的协议的设计和网络管理员的偏好,可以从特定角色限制或启用每个节点106。

根据示例实施方式,网络100实现为区块链分布式计算系统。区块链用于发布应该对参与点对点网络100的所有节点106可用的数据。例如,可以在网络101中的所有节点106上共享与过去及即将到来的多媒体流有关的信息。所有节点的信息也可以在区块链上共享,以管理用于多媒体流的连接。如本领域的技术人员将理解的,本发明可以利用快速执行、每秒允许大量交易并且支持运行智能合约及执行代码的能力的任何区块链平台。例如,本发明可以利用以太坊区块链平台。

根据示例实施方式,本发明还可以实施链下操作以提高分布式网络100的整体速度和功能。链下操作的示例包括应用数据的存储以及运行用于管理节点106的协议所必需的其他计算。

根据示例实施方式,本发明可以利用分布式文件系统协议来存储对于网络100内的每个节点106都是可访问的而没有单点故障的不可更改的数据。特别地,本发明利用分布式文件系统来存储应当仅由其所有者管理和修改但是可以由网络100中的所有其他节点106查看的文件。例如,可以使用可以通过星际文件系统引用(InterPlanetary FileSystem reference,IPNS)而引用的星际文件系统(InterPlanetary File System,IPFS)协议来存储数据。IPFS被认为是永久性的,这是因为其文件无法删除。更改文件的唯一方法是创建一个新文件,并更新IPNS引用以指向新文件。这允许给定IPNS引用的所有其他节点访问和读取文件的最新版本。如本领域技术人员将理解的,在不脱离本发明的范围的情况下可以使用数据存储协议的任何组合(例如,Swarm、Storj等)。

根据示例实施方式,本发明可以将数据分类为两类,即,私有数据和公共数据。基于该分类,将在本发明的协议内以某种方式处理数据。特别地,私有数据属于某个节点106,并且只有在某些许可下,其他节点106才能访问该私有数据。更具体地,节点106的私有数据仅由节点106本身存储,并且只能在存储私有数据的节点106给予许可的情况下由其他节点106访问。以此方式保护私有数据,以保证节点106的隐私并减少节点106上的某些攻击矢量的可能性。相比之下,网络100内的任何用户或节点106都可以看到公共数据(例如,在区块链上)。

要被分类为私有数据的数据的示例包括节点信息、流信息、节点关系和节点角色。节点信息表示仅在节点106本地存储的关于节点106的详细数据(例如,节点106的IP地址)。流信息表示关于本地存储在广播者102上的流的特定数据。节点关系可以是网络100中的两个节点106之间的所存储的关系(例如,父子关系、邻居等),并且节点106仅存储它们自己与其邻居之间的关系信息。流中的节点角色表示节点106对于每个特定流具有的存储角色。每个节点为节点106所连接到的每个流保存流角色信息。因此,基于公共和私有数据指定,每个节点只能本地查看网络100,而不能看到网络100内的所有其他节点106之间的连接。此外,广播者102还为服务于由广播者102提供的每个流的所有节点106存储节点角色信息。以此方式,单个节点106仅知道其在其参与的所有流中的角色,而广播者102知道每个流的所有节点106及其各自的角色。

根据示例实施方式,使用在节点106内共享的数据库来存储私有数据。如本领域技术人员将理解的,可以利用数据存储系统的任何组合。例如,私有数据被存储在结构化查询语言(Structured Query Language,SQL)数据库、另一种类型的关系数据库、no-sql等中。网络100内的每个不同角色、数据的不同组合被存储在各个数据库中。在示例实施方式中,如表1所示,广播者102可以存储在网络内操作以发送由该广播者提供的流的每个节点106的角色和标识符。

表1

通过表1中的私有存储信息,广播者102可以重建正在传递其流的节点106的整个图,并知道它们在图中的各自角色。此外,节点和流的标识符可以作为用于网络100的操作的一部分发布在区块链上。

与广播者102类似,原始节点106a、中继节点106b、边缘节点106c和订户104可以在其各自的数据库内维护其自己的私有存储的数据。表2和表3描绘了由原始节点106a、中继节点106b、边缘节点106c和订户104存储的数据的示例。特别地,表2存储该节点在流内的个人角色的信息,而表3存储该节点与参与流中的其他节点106之间的节点关系。

表2和表3中的数据允许节点106(或订户104)知道其在其正参与的所有流中的角色,并且还使节点106能够针对每个流计算节点106的邻居列表。

根据示例实施方式,公共数据可以存储在区块链中并且可以被节点106用来验证来自网络100内的其他节点106的请求。例如,区块链可以存储由广播者102发布的智能合约,其具有用于特定流的详细信息以及与已加入网络100的节点106有关的公共信息。与节点106有关的公共信息不会暴露任何互联网协议(Internet Protocol,IP)地址或域名系统(Domain Name System,DNS)信息,但是可以包含节点106的地理位置、节点106加入网络的时间戳、节点106的状态(“在线(online)”、“不接受新连接(not accepting newconnections)”或“离线(offline)”)、指向节点106定期用新的时间戳更新的文件(该文件用于知道节点是否仍在线)的IPNS、以及可以用于通过消息传递协议(例如,Whisper通信协议)与节点交互的地址。节点还将在区块链上发布其更新时间戳的IPFS文件的IPNS引用。每个节点都定期拥有并更新带有时间戳的文件。以此方式,其他节点可以访问文件并验证该节点是否仍然在线。IPFS是存储该文件的最佳方式,这是因为IPFS允许每个其他节点访问该文件但不能修改该文件。此外,更改文件的内容不涉及任何区块链交易,因此是非常快速的操作。如本领域技术人员将理解的,在不脱离本发明的范围的情况下,本发明可以利用除IPNS/IPFS之外的任何类型的引用文件。表4和表5描绘了对于每个节点和流存储在区块链上的公共数据的示例数据库。

在操作中,由本发明实现的网络100和软件配置为允许节点106在网络100上注册(图3),允许节点106离开网络100(图8至图9),允许节点106控制在其参与网络100(图4)时正在传递的流的数量,允许广播者102获得原始节点106a(图5A至图5B),并且允许订户104获得边缘节点106c(图6A至图6B)。另外,在图7A至图7B处提供了订户104与广播者之间的流的建立。图3至图7B描绘了由网络100提供的功能的示例实施方案。

节点106可以被允许加入网络100以构建实现本发明的各方面的去中心化系统。图3描绘了由本发明实现以允许节点106在网络100上注册的示例性过程300。在步骤302中,可以部署特定的智能合约(例如,在部署区块链时的创始区块中)以允许节点106向服务注册以在网络100中注册为节点106。在步骤304中,新节点106可以发起对已部署的智能合约的呼叫以加入网络100。例如,节点106的操作者可以向管理网络100的区块链进行注册以参与服务。当加入网络100时,新节点106可以发布交易,该交易具有新节点的地理位置、该节点加入网络的时间戳、由该节点使用ping更新的文件的IPNS、状态数据字段、以及用于通过区块链与此节点进行通信的地址。根据所使用的协议,该节点是否可以是代理也可以通过区块链进行分配(例如,对于WebRTC)。在这种情况下,应该存储节点的域名,以便其他节点可以直接连接至该域名。

一旦节点106已加入网络100,节点106将可供其他节点106、广播者102和订户104选择参与串流角色。根据示例实施方式,网络100可以利用逻辑回归来确定对于来自广播者102的一个或更多个流中的特定角色可以选择网络100上的可用节点106中的哪些节点。如本领域的技术人员所理解的,逻辑回归是用于分析数据集以确定结果的统计方法。本发明使用的逻辑回归的结果可以是通过/失败类型,使得在选择过程中仅考虑具有“通过”结果的节点。此后,可以通过在通过节点上应用可验证随机函数(Verifiable RandomFunction,VRF)来执行选择(来自Logistic回归)。最初,每个节点可以由该节点的地理位置、该节点的带宽得分、该节点的数据包丢失得分以及该节点的年龄(例如,网络时间)来表征。在示例实施方式中,这些特征可以被发布或从区块链上的数据中提取。这对于允许每个节点能够运行选择过程而不与任何其他节点进行交互是必要的。

根据示例实施方式,节点的地理位置用于计算节点与进行选择的节点之间的距离。特别地,当节点加入网络100时,如关于图3所论述的,节点100将基于加入时节点的IP地址来计算节点的地理位置,并且与所计算的地理位置相关联的地理位置可以被发布在区块链上。计算节点距离的第一步骤是将每个区域映射至一个值。例如,可以基于节点物理上所在的大陆来对节点进行分组,并且可以将每个大陆映射至一个值(例如,非洲=0,欧洲=1,美洲=2,亚洲=3,大洋洲=4,等等)。此后,网络可以基于计算为broadcaster_continent-candidate_origin continent的大洲距离参数来选择给定的广播者102和订户104的原始节点106a和边缘节点106c。继续该示例,如果广播者102在美国(例如,2)并且候选者来源在非洲(例如0),则它们的距离将是二(例如2-0)。进行选择的节点与其中一个通过节点中之间的距离越小,则被选择传递流的机会就越高。选择者与候选者之间的最小距离为零(例如,相同的区域值)。如本领域技术人员将理解的,在不脱离本发明的范围的情况下,可以使用用于计算距离的任何方法。

根据示例实施方式,带宽得分可以提供确定节点可以提供多少带宽的基础。可以通过节点从广播者102接收的交易来计算带宽得分。例如,可以通过计算自节点加入网络100以来生成的每个交易的所有Gb/s的总和、计算发送至该节点的每个交易的所有Gb/s的总和、将发送至该节点的所有Gb/s的总和除以自该节点加入网络以来所产生的每个交易的全部Gb/s的总和、并将总数乘以十来计算带宽得分。结果值表示该节点自加入网络以来在间隔[0,10]范围内已交换的带宽总量上已获得奖励的带宽量。较高的带宽得分会增加选择该节点成为传递新流的节点的机会。如本领域技术人员将理解的,在不脱离本发明的范围的情况下,可以使用用于计算带宽得分的任何方法。

根据示例实施方式,可以通过确定节点处的平均数据包丢失来计算数据包丢失得分。例如,可以通过计算节点接收到的交易中报告(例如,由相邻节点报告)的所有数据包丢失的总和并将该总和除以交易的总数来计算平均数据包丢失。然后,可以将平均数据包丢失映射至间隔[0,10],就像在带宽得分中所做的那样。接近零的值表示接近0%的数据包丢失,这是最佳的。因此,节点的数据包丢失越少,则选择其传递新流的机会就越高。如本领域技术人员将理解的,在不脱离本发明的范围的情况下,可以使用用于计算数据包丢失得分的任何方法。

根据示例实施方式,年龄可以表示节点在没有串流任何视频的情况下已经处于点对点网络中的时间量。年龄可以用来使旧节点更有可能被选择串流新视频。可以将年龄计算为自节点收到最后一次交易以来传递流所经过的时间。然后,可以在间隔[0,10]中映射此值。例如,如果自节点参与交易以来已经过了少于60分钟(如果60分钟是阈值),则年龄等于零。否则对于经过的每个小时直至最大的十个小时,年龄值可以增加一个单位。较大的年龄值会增加选择节点传递下一个流的机会。如本领域技术人员将理解的,在不脱离本发明的范围的情况下,可以使用用于计算年龄的任何方法。再一次,可以使用区块链中的数据来计算年龄。

根据示例实施方式,逻辑回归可以被用来创建将被用作模型的数据集并且被训练以生成输出模型,该输出模型可以被用于在给定节点的特征的情况下预测节点的通过结果。下表6中提供了使用非常有限的数据集的训练/建模过程的示例。

表6

使用以上表征,本发明可以建立与表6中提供的示例性数据集相似的数据集,以用于训练/建模。在数据集中,对于每个上述导出的度量都有条目。例如,对于带宽得分、数据包丢失得分、年龄和距离都有一列。另外,对于结果值也存在数据条目,该结果是关于是否将确定可用节点具有通过标记的判定(例如,对于通过而言为1,对于失败而言为0)。表6中的每一行代表已评估的不同节点。

基于表6中的示例性信息,行1中的节点由于该节点是新节点(例如,年龄=0)而通过,行2和行3中的节点由于其带宽得分太低而失败,行4、行5和行7中的节点由于带宽好、数据包丢失有限、并且距离合理而通过,行6行中的节点由于数据包丢失过高(即使带宽好)而失败,并且行8中的节点由于每一项都合理而通过。表6的数据集为基于得到的特征(例如,带宽、数据包丢失、年龄、距离等)来预测节点何时应该通过或失败的算法提供了基础。因此,建立良好的数据集是算法的正确行为的关键组成部分。如本领域的技术人员将理解的,在不脱离本发明的范围的情况下,可以基于网络偏好来使用本文提供的示例性表征的附加或子集。

一旦建立了数据集,则提供了可以训练的模型数据集。使用模型数据集并对算法进行训练将允许该算法由于使用了区块链上的可用数据而快速运行,并且检索它不需要运行任何智能合约。因此,该算法可以非常有效地运行模型以预测系统中每个节点的结果公式。此后,可以选择通过节点来参与在网络100上串流多媒体。如本领域技术人员将理解的,可以随着更多数据变得可用并且偏好改变而周期性地更新模型数据集并重新训练算法。

当节点加入网络100时,如关于图3所论述的,节点自动变为可用于从请求节点传递任意数量的流。没有限制,这可能会导致分配给节点的流超出其处理能力的情况。这又将增加由接收节点看到的数据包丢失的可能性,从而可能对终端用户的流质量产生负面影响。为了避免这种情况,节点必须能够通知网络它们不可用于新连接。这可以通过修改状态数据字段来实现,该状态数据字段包括在节点注册在网络100上时所发布的交易中。图4描绘了由网络100实施的示例性过程400,该示例性过程400允许节点106控制其正在传递的流的数量。

在步骤402中,在加入网络100之后,节点106可以从广播者102接收要进行串流的选择。当节点被选择进行串流时,节点可以被分配一个角色(例如,原始、中继、边缘)并且可以开始将多媒体串流至指定的相邻节点。一旦节点已加入网络100,则在步骤404中,该节点将主动监测其资源的可用性并相应地采取行动。例如,节点监测CPU、内存使用情况等,并评估节点是否达到了其串流容量的极限。如果节点106确定其接近或超过其容量,则在步骤406中,该节点可以将其数据字段更新为“不接受新连接”。例如,节点通过智能合约功能更新数据字段。以此方式,在接下来的选择过程中,其他节点(包括广播者102和订户104)将不会把该节点包括在可用的节点池中,因为选择仅包括状态为“在线”并接受新连接的节点。此外,如果另一个节点尝试与不接受新连接的节点建立连接,则目标节点将拒绝该请求。

一旦节点可以是启用的并且在网络100上可用,则广播者102可以选择一个或更多个节点106用作原始节点106a。最初,当为流选择原始节点106a时,广播者102可以进行查询以标识哪些节点106可用于流。特别地,广播者102可以使用区块链中的公共数据来检索网络100中的可用节点106的列表。一旦广播者102具有包含所有节点的列表,广播者102将使用逻辑回归来确定这些节点106中的哪个节点适合成为原始节点106a。一旦确定了合适原始节点106a的集合,则广播者102就随机选择那些节点106中的一个节点作为用于流的原始节点106a。例如,广播者可以使用可验证的随机函数(VRF)来随机选择节点106。另外,可以使用VRF来知道广播者102是否随机选择了原始节点106a,或者广播者102在试图控制到特定节点106的流量方面是否被欺骗。

在为流选择原始节点106a之后,广播者102将执行的下一步骤取决于所利用的通信协议。根据示例实施方式,WebRTC或类似协议可以用于提供在广播者102与原始节点106a之间以及在订户104与边缘节点106c之间使用的实时通信协议,这是因为WebRTC具有利用数据报传输层安全(DTLS)和用于加密流的SRTP内置的非常高的安全性,如本文中更详细地论述的。WebRTC还保证了极低的时延和用户数据报协议(UDP)传输或传输控制协议(TCP),这对于实时视频串流是至关重要的。当使用WebRTC或类似协议来建立广播者102与原始节点106a(或订户104与边缘节点106c)之间的连接以发送和接收视频/音频时,必须经由信令协议来协商连接参数。WebRTC没有指定如何交换用于信令协议的信令消息,但是它要求通过安全连接(比如HTTPS或Web服务安全性(Web Services Security,WSS))来交换信令消息。因此,为了实现WebRTC,网络100可以实现对广播者102可以通过WSS连接的代理节点106d的利用。此后,代理节点106d将连接至原始节点106a,如图2所示。例如,代理节点106d可以通过WebSocket建立连接,并且对其从广播者102接收的所有信令消息进行镜像。

当利用WebRTC协议时,至少有两种类型的信令数据被交换。类型包括会话描述协议(Session Description Protocol,SDP)会话控制消息和ICE候选者。SDP是用于描述具有媒体能力的设备的功能的格式。在本发明中,具有媒体能力的设备可以是由广播节点102和/或订户102使用的原始节点106a、边缘节点106c和浏览器。在会话描述交换过程中,浏览器可以将其功能列表(例如,它可以使用哪种编解码器,它可以产生的分辨率、以及用于设置流的其他详细信息)发送至原始节点106a。原始节点106a可以用其可以处理的内容进行回应。一旦双方就如何沟通达成共识,则过程将进行至ICE候选者阶段。ICE是用于在互联网上的设备之间建立连接的协议。ICE候选者中的信息包括是否使用UDP或TCP进行传输、客户端的IP地址、以及用于直接与对等方建立连接的其他详细信息。

ICE还包括两个子协议,称为网络地址转换(Network Address Translation,NAT)会话遍历实用工具(Session Traversal Utilities for Network Address Translation,STUN)和采用中继器的NAT遍历(TURN)。STUN用于绕过防火墙/NAT,并且TURN在无法使用STUN获得直接P2P的情况下使用。STUN服务器允许客户端找出其公共地址,其背后的NAT类型、以及由该NAT与特定本地端口相关联的互联网侧端口,并且TURN是允许客户端从此类中继器获取IP地址和端口的协议。根据本发明,STUN和TURN服务器可以是能够建立WebRTC连接的基础。

在示例实施方式中,STUN和TURN服务器可以由在网络100中注册的节点106实现,并且可以由需要建立WebRTC连接或类似协议的订户104和/或广播者102随机选择。因此,当新节点加入网络100时,它发布(在区块链上)该节点是否可以用作STUN和/或TURN服务器的交易。例如,合格的代理节点106d将提供公共IP地址,任何节点106都可以在该IP地址处连接以将它们用作STUN或TURN服务器。此后,为了建立WebRTC连接,广播者102可以使用从区块链获得的公共数据来检索可以用作代理节点106d和STUN或TURN服务器的节点106的列表。在示例实施方式中,可以使用与选择代理节点106d相同的过程来选择STUN和TURN服务器(如关于图5A和图6A更详细地论述的)。此外,当选择代理节点l06d时,广播者102/订户104(例如,选择者)将优选可以是代理节点l06d以及实现STUN和TURN功能以保证更快的连接的节点,这是因为不需要运行另一选择(例如,对于代理节点106d和STUN/TURN两者)。

在选择代理节点106d以及STUN和TURN服务器之后,广播者102可以使用WSS经由其域名连接至代理节点106d,并且可以指示代理节点106d与选择的原始节点106a建立连接。此后,代理节点106d可以使用WebSockets与原始节点106a联系,并将开始信息交换或WebRTC信令以建立连接。信令可以使用由代理节点106d提供的STUN或TURN服务器功能(如果可用的话),否则具有这种功能的另一个节点将与代理节点106d一起被选择。

在示例实施方式中,广播者102还可以直接(例如,通过Whisper)连接至原始节点106a,并且通知该节点期望来自选定的代理节点106d的消息。该过程可以包括将用于代理节点106d的标识信息发送至原始节点106a。这将允许原始节点106a接受输入连接,并通知广播者102原始节点106a是否未接收输入连接,这又将使广播者102选择新的代理节点106d并重复该过程。另外,当已经被选择为原始节点106a的节点106从广播者102接收到消息时,原始节点106a将使用区块链来验证广播者102的身份。也就是说,原始节点106a将检查广播者102是否是为该特定流发布智能合约的节点。原始节点l06a还将做VRF的验证部分,以确定广播者102是否遵循选择代理节点l06d时的协议。如果是的话,则原始节点106a将接受传入的Whisper消息,并允许指定的代理节点106d在广播者102与原始节点106a之间建立连接。一旦建立了连接,则所有的节点和广播者102将使用新的父子关系信息及其在流中的角色(例如,广播者、原始、代理)来更新其本地数据库。

图5A描绘了用于如本文所论述的在使用需要代理节点106d的协议(例如,WebRTC)时在广播者102与原始节点106a之间建立连接的示例性过程500。在步骤502中,广播者102获得可用节点列表(例如,经由区块链)。在步骤504中,广播者102利用逻辑回归从可用节点列表中确定合适节点列表。在步骤506中,广播者102利用VRF来随机选择节点(例如,节点A)。在步骤508中,广播者102从可用节点列表中确定合适代理节点106d的列表(例如,经由区块链)。在步骤510中,广播者102利用VRF从合适代理节点106d的列表中随机选择代理节点106d。在步骤512中,广播者102连接至选定的代理节点106d,并将指令发送至代理节点106d以与节点A连接。在步骤514中,与步骤512同时或在步骤512之后,广播者102向节点A发送消息,以预期来自选定的代理节点106d的消息。

在步骤516中,响应于接收到来自广播者102的传输,代理节点106d利用区块链验证广播者102的身份。类似地,在步骤518中,响应于接收到来自广播者102的传输,节点A利用区块链验证广播者102的身份。在代理节点106d和节点A验证广播者102的身份之后,过程500前进至步骤520和522。在步骤520中,广播者102向代理节点106d发送要连接至节点A的代理节点106d的必要数据。在步骤522中,代理节点106d执行必要的数据交换以将广播者102与节点A连接。在广播者102与节点A之间的连接建立之后,在步骤524中,广播者102使用与节点A有关的信息来更新本地数据库。类似地,在步骤526中,节点A使用与到广播者102的连接有关的信息来更新本地数据库。

根据示例实施方式,广播者102可以利用私有原始节点106a代替选择的原始节点106a和/或代理节点106d,使得私有原始节点106a将直接与中继节点106b对接。在这种情况下,广播者需要做的所有事情是在流的智能合约中指定广播者正在使用私有来源,这指示中继节点106b不选择原始节点,而是直接联系广播者以建立与该原始节点的连接。对于想要传递端到端的加密且付费的流的广播者102,该解决方案是理想的。特别地,私有原始节点允许广播者102使用已经加密的流摄取到网络100中,如果订户获得了有效的数字版权管理(DRM)密钥,则已经加密的流将仅在订户处解密。这保证了网络100中的其他节点都不能访问加密的流,除非网络100中的其他节点106破坏了加密。因此,利用该解决方案,可以实现端到端的完全加密的多媒体流。

如本领域技术人员将理解的,在某些情况下,并非每个广播者客户端都支持和/或要求WebRTC或其所有组件,并且其他协议在某些情况下是优选的,因此,当网络100未使用WebRTC或类似协议(例如,要求交换SSL证书)时不需要代理节点106d。例如,广播者102可以利用RTMP或实时流协议(RTSP)。在没有使用代理节点106d的情况下,消息交换仅发生在广播者102与原始节点106a之间,而其他步骤(例如,选择)保持与WebRTC中相同。图5B描绘了用于在使用不需要代理节点106d的协议(例如,RTMP、RTSP、SRT等)时在广播者102与原始节点106a之间建立连接的示例性过程550。

图5B描绘了用于在不需要代理节点106d的情况下在广播者102与原始节点106a之间建立连接的示例性过程550。在步骤552中,广播者102获得可用节点列表(例如,经由区块链)。在步骤554中,广播者102利用逻辑回归从可用节点列表中确定合适节点列表。在步骤556,广播者102利用VRF来随机选择节点(例如,节点A)。在步骤558中,广播者102直接连接至选定的节点A。在步骤560中,响应于从广播者102接收到连接请求,节点A利用区块链验证广播者102的身份。在节点A验证了广播者102的身份之后,过程550前进至步骤562。在步骤562中,广播者102和节点A交换建立连接所需要的数据并建立连接。在广播者102与节点A之间的连接建立之后,在步骤564中,广播者102使用与节点A有关的信息来更新本地数据库。类似地,在步骤566中,节点A使用与到广播者102的连接有关的信息来更新本地数据库。

订户104获得边缘节点106c的过程(600、650)类似于由广播者102用于分配原始节点106a的过程(500、550)。与选择原始节点106a一样,获得边缘节点106c的过程将取决于所使用的通信协议(例如,是否将需要代理节点106d)。

图6A和图6B描绘了订户104获得边缘节点106c的示例性过程600、650。特别地,图6A描绘了其中需要代理节点106d(例如,使用WebRTC或类似协议)的示例性过程600,并且图6B描绘了其中代理节点106d不是必需的(例如,RTMP、RTSP、HLS、MPEG-DASH等)的示例性过程650。最初,在过程600和650两者中,订户104可以使用区块链来检索可用节点106的列表(步骤602、652)。然后,订户104将使用逻辑回归来计算作为边缘节点106c的合适节点集(步骤604、654)。此后,订户将利用VRF从待作为边缘节点106c的适当的节点集中选择随机节点106以作为边缘节点106c(步骤606、656)。在这一点上,过程600、650将基于对代理节点106d的要求而变化。

继续图6A,如果订户104正在建立需要代理(例如,WebRTC)的用户的连接,则订户104将按照与关于图5A所论述的步骤508至510类似的步骤608至610来选择代理节点106d。一旦选择出代理节点106d,则订户104将连接至代理节点106d,并指示代理节点106连接至边缘节点106c(步骤612)。与步骤612同时或在步骤612之后,订户104向边缘节点106c发送消息,以预期来自选定的代理节点106d的消息(步骤614)。响应于来自订户104的连接请求,代理将使用区块链验证订户104的身份(步骤616)。在示例实施方式中,边缘节点106c还将检查其从代理节点106d和订户104两者接收到的信息的正确性,并且将在确认以后接受连接并与代理节点106d交换数据以建立与订户104的连接(步骤618)。在验证了订户104的身份之后,订户104向代理节点106d发送代理节点106d连接至边缘节点106c所必需的数据(步骤620)。代理节点106d使用所接收的数据来建立订户104与边缘节点106c之间的数据交换(步骤622)。一旦建立连接,则边缘节点106c还将存储其对于该特定流的角色,并向该流的广播者102发送消息,以使广播者102知道边缘节点106c已经与订户104连接以用于由广播者102提供的流(步骤624)。边缘节点106c还将在其自身与订户104之间的关系信息存储在其本身的本地私有数据库中(步骤626)。类似地,订户104将利用与边缘节点106c的连接信息来更新本地数据库(步骤628)。另外,订户将通知广播者102它正在与选定的边缘节点106c建立连接(步骤630)。因此,广播者102接收内容匹配的两个消息,并因此使用与订户104和边缘节点106c之间的新连接有关的信息来更新其本地数据库。

返回至图6的过程650,因为用于过程650的协议不需要代理节点106d,所以该过程可以从对边缘节点的选择(步骤656)前进至与选定边缘建立连接(步骤658)。一旦建立连接,或与建立连接同时,订户104向期望的流的广播者102发送消息,从而使广播者102知道订户104正在与选定的边缘节点106c建立连接(步骤660)。响应于来自订户104的连接请求,边缘节点106c将验证来自区块链的订户的身份(步骤662)。在验证了订户104的身份之后,订户104交换直接与边缘节点106c建立连接所必需的数据(步骤664)。代理节点106d使用所接收的数据来建立订户104与边缘节点106c之间的数据交换(步骤622)。在建立连接之后,边缘节点106c将向广播者102通知新的连接(步骤668),并将其与订户104之间的关系信息存储在其本身的本地私有数据库中(步骤670)。类似地,订户104将利用与边缘节点106c的连接信息来更新本地数据库(步骤672)。因此,广播者102接收内容匹配的两个消息,并因此使用与订户104和边缘节点106c之间的新连接有关的信息来更新其本地数据库。

基于订户104、广播者102及其各自的原始节点106a和边缘节点106c之间的距离,中继节点106b可能是必需的,以在广播者102与订户104之间串流多媒体。为了选择中继节点106b,边缘节点106b可以重复订户104执行的选择边缘节点106c的相同过程。中继节点106b的选择过程将继续,直到中继节点106b与原始节点106a之间的连接被建立(其将连接到广播者102)为止。一旦所有的连接都已经建立,则订户104将能够开始观看/收听由广播者102通过分布式去中心化网络100提供的多媒体流。该过程中不涉及智能合约,仅使用已经发布在区块链上的数据。这意味着该过程不需要任何燃料代币(gas)。

根据一个示例实施方式,对于选出参与流内的每个节点,流内可以存在选出用于同一角色的备份节点(例如,对于每个原始节点的备份原始节点,对于每个中继节点的备份中继节点,对于每个边缘节点的备份边缘节点等)以建立用于确保流的一致性的冗余。特别地,网络实施故障转移过程,以避免在节点突然断开和/或发生故障的情况下的不良的用户体验。为每个选择的节点提供备份可以防止或减少流的中断。

在示例实施方式中,备份节点可以与主节点(正在备份的节点)的选择同时地被选择。在串流期间,流将同时传递至两个节点,而只有主边缘节点将传递流(从广播者102到订户104),使得备份边缘节点将仅接收流并准备在主边缘节点发生故障的情况下传递流。对于订户104与边缘节点106c/备份边缘节点706c之间的连接,订户客户端维持与备份边缘节点706c的连接,但是没有数据在流动。在主边缘节点106c发生故障的情况下,数据将以与备份节点接管节点至节点连接相同的方式开始从备份边缘节点706c流动。类似于主节点,备份节点与主节点的所有邻居共享信息,以便相邻节点知道谁将在主节点发生故障时接管。换言之,备份节点以与它们的主对应节点相同的方式实现和起作用,但是除非相应的主边缘节点发生故障,否则备份节点不将流传递给订户104。

图7A和图7B描绘了在网络100内选择的备份节点的示例性实施方式。图7A描绘了选择边缘节点106c和备份边缘节点706c的过程700。在过程700的步骤1中,订户104从区块链获取可用节点106的列表,并为流中的每个角色运行随机选择(例如,使用VRF)。在该示例中,订户104选择边缘节点106c,同时还选择备份边缘节点706c。在过程700的步骤2中,订户104联系两个选择的节点(106c、706c)。在过程700的步骤3中,订户104将其正在创建的新连接通知流的广播者102。在过程700的步骤4中,选择的节点(106c、706c)使用区块链验证订户104的身份。在过程700的步骤5中,如果被验证,则两个节点(106c、706c)与订户104交换数据以建立新连接。在过程700的步骤6中,选择的节点(106c、706c)将新的连接通知广播者102。在过程700的步骤7中,广播者102使用区块链验证其他节点(106c、706c)的身份并接受新连接。过程700还可以包括与关于图6A和图6B论述的在选择边缘节点l06c时的步骤类似的步骤,但将这些步骤应用于边缘节点l06c和备份边缘节点706c两者的选择。

图7B描绘了用于使用主节点和备份节点在单个广播者102与订户104之间传递流的过程750。特别地,图7B描绘了备份节点706a、706b、706c如何提供主节点106a、106b、106c的操作的镜像副本。以订户-边缘节点连接为例,过程750开始于订户104运行选择边缘节点106a的协议。一旦选择了边缘节点106a,则订户104将询问它是否已经具有备份边缘节点706c。如果已经选择了备份边缘节点706c,则边缘节点106a将与备份边缘节点706c有关的信息返回给订户104。如果没有选择备份边缘节点706c,则订户104将进行另一次选择,并且重复执行用于选择边缘节点106c的选择过程(例如,如关于图7A所论述的)。新选择的节点将是备份边缘节点706c。

还可以将选定的备份节点706c通知广播者102。此后,对所有边缘节点106c、中继节点106b和原始节点106c重复相同的选择过程,直到在广播者102与订户104之间建立了回路为止,如图7B所示。回路可以被定义为节点106的在它们之间建立一个或更多个有效传输路径(连接路径)的布置。一旦建立了回路,则可以通过主节点(106a、106b、106c)和备份节点(706a、706b、706c)来传递多媒体流。这两个回路之间的唯一区别在于,备份边缘节点706c仅接收流,并且仅在主边缘节点106c发生故障时才将流传递给订户104。所有其他节点都将接收和传输数据,无论它们是主节点还是备份节点。尽管图7B描绘了单个广播者102和订户104,但是在不脱离本发明的范围的情况下可以利用任何数量的广播者和订户。此外,单个节点可以用作多个其他节点的备份节点,同时它可以成为用于其他流的主节点。

如关于图3所论述的,已经加入网络的节点106可以离开网络而没有任何惩罚(即使在节点106在离开时正在传递流的情况下)。为了维持通过网络100的串流的质量,节点106需要能够离开网络,同时确保网络100中的其他节点106在节点106断开之前都不依赖于该离开节点106来传递流。图8描绘了由网络100实施的允许节点106离开网络100并同时确保流不受节点106的离开的负面影响的示例性过程500。

在步骤802中,打算离开网络100的节点106将其智能合约上的公共状态数据字段更新为“离线”。这样,其他节点将不再在其选择过程中包括该节点。如果节点106当前未传递流,则过程进入步骤804。在步骤804中,节点106执行智能合约功能并更新其状态,并且网络中的其他节点均不受影响。在步骤804中,状态更新在整个区块链上传输(步骤806)。此后,在步骤808中,节点可以与网络100断开。

如果节点被分配为流的备份节点,但是当前未被串流,则过程800将从步骤802前进至步骤810,在步骤810中,节点106通知(例如,通过Whisper)作为备份的节点选择新的备份节点来替换它。新的备份节点的选择将由离开节点所备份的节点运行。然后,该节点会将与新的备份节点有关的信息广播至其他节点。这些节点中的每一个节点都将检查所使用的选择过程的正确性。此后,离开节点将前进至步骤804并运行智能合约以更新其在区块链上的不可用状态(步骤806),然后离开网络(步骤808)。以此方式,在后续选择期间将不会再次选择该节点。

如果离开节点正在传递流,并且其被分配为其他流的备份,则该节点将利用为其备份的节点遵循先前的过程(例如,步骤802至810)。这些节点将负责对新备份进行选择。对于现有的直播串流连接,该节点将联系从离开节点(下行链路)接收流的所有相邻节点,并提示它们将其备份节点用于该流(步骤812)。同样在步骤812处,该节点将向其正在传递的流的广播者通知某些连接将不再存在。一旦所有节点都移动至备份节点,它们将通知离开节点,并且离开节点将与网络断开(步骤808)。如果节点中的一个节点在一定的超时时间内未答复,则该节点无论如何都将被允许离开网络而不会受到损害。

在步骤812期间,离开节点的转换中所涉及的其余节点还将向广播者102通知它们正在接收的与已更改的连接有关的流信息。这种冗余保证了流中的节点和广播者102两者都继续具有所有现有链路的更新版本。此外,曾经是离开节点的备份节点的节点随后将选择新的备份节点,并将与选择的备份有关的信息发送至其他节点。在过程800中未示出的是,如果节点在不允许其邻居切换至备份节点的情况下永久离开网络,则网络100服务提供商可以对其进行惩罚(例如,拒绝访问、激励等),以确保网络由可靠的节点维护。

图9描绘了关于图8所论述的断开过程的示例性示例。图9示出了具有示例性示例的断开过程900,其中,主中继节点106b离开网络并且其服务的边缘节点106c连接至备份中继节点706c以继续传递视频流。更具体地,在顶部部分中,边缘节点106c从主中继节点106b接收多媒体,而在底部部分中,流已切换至备份中继节点706b。双箭头表示正在传递的多媒体串流。

对于现有的实时连接,中继节点106b将联系从其接收的所有邻居(例如,图9中的边缘节点106c),并提示他们使用其备份中继节点706b来继续流(步骤1)。中继节点106b还将向其正在传递的流的广播者102通知某些连接将不再存在(步骤2)。一旦所有边缘节点106c已经连接至备份中继节点706b,它们将向原始中继节点106b通知连接已经被转移(步骤3)。然后,中继节点106b(希望离开的节点)将与网络100断开连接(步骤4)。另外,如果相邻边缘节点106c中的一个边缘节点在特定的超时时间内没有答复,则中继节点106b无论如何都将被允许仍然离开网络100。边缘节点106b还将向广播者102通知它们正在接收的与改变的连接有关的流(步骤5)。步骤5保证边缘节点106c和广播者102都继续具有所有现有链路的更新版本。然后,曾经是备份中继节点706b的中继节点706b(现在是启用的中继节点)将选择新的备份中继节点,并将该节点的信息发送至其他节点(例如边缘节点10b)(步骤6)。如本领域的技术人员将认识到的,在不脱离本发明的范围的情况下,图9中描绘的过程900可以被任何不同的节点角色(例如,原始节点、中继节点、边缘节点、代理节点等)及其各自的相邻节点实施,使得过程900并不意在仅限于中继节点。

在完成所有节点的选择并且创建广播者102与订户104之间的连接之后,当利用WebRTC和相关的基于UDP的协议来传递流时,网络100实现小于500毫秒的端到端时延。通过使用全局分布的去中心化节点,系统可以确保查看流的那些节点连接至在地理位置上靠近它们的节点。另外,根据示例实施方式,广播者102可以通过转码器实现(并且网络100支持)多比特率(MBR),该转码器将一个视频流作为输入并且输出具有不同比特率的多个视频流。可以通过原始节点106a将输出流注入网络100中,原始节点106a将同时将所有MBR流路由通过中继节点106b。此后,中继节点106b将所有输出流传递至其所连接的每个边缘节点106c(或其他中继节点106b)。结果,每个边缘节点106c将以不同的比特率访问该流。如本领域技术人员将理解的,当实现备份节点时,MBR也可以在备份节点上串流。边缘节点106c将与订户104客户端交互并且经由自适应比特率串流(Adaptive Bitrate Streaming,ABR)来传递流。特别地,边缘节点106c和订户104将使用称为接收机估计最大比特率(ReceiverEstimated Maximum Bitrate,REMB)的RTCP消息来提供带宽估算,然后,ABR将使用带宽估算来对视频质量进行相应的调整。因此,给定估算的可用带宽,边缘节点106c将以最高质量传递视频。此外,还可以根据用户偏好、支付的价格等选择流质量。

图10描绘了MBR串流的示例性示例。特别地,图10描绘了当使用MBR时在广播者102与单个订户104之间具有连接和流的包括转码器1102的网络1000。每个箭头代表具有特定比特率的视频流。除了边缘节点106c之外,每个内部节点以每个比特率接收和传递所有流。同样,除备份边缘节点外,每个备份节点均以每个比特率接收和传递所有流。实线抛物线代表始终由广播者102控制的实体,而虚线抛物线包括广播者102可以选择控制或不控制的实体。

根据示例实施方式,当传递多媒体流时,网络100可以在利用WebRTC协议时实现双层加密。第一层加密由WebRTC规范提供,WebRTC规范强制使用数据报传输层安全(DTLS)对所有流量进行加密。DTLS是SSL协议的派生,并且DTLS在UDP协议下提供相同的安全服务(完整性、身份验证和机密性)。DTLS负责交换用于在两个对等方处加密和解密流的密钥。然后,浏览器可以开始通过安全实时协议(SRTP)串流视频和音频。SRTP是WebRTC用于发送和接收加密的视频和音频的传输协议。DTLS交换SRTP用于加密的密钥。SRTP工作方式的一部分是使用的加密密钥会定期更改,因此DTLS需要时常进行更新,并且将根据SRTP的需要进行更新。因此,这两个协议紧密协作以确保整个会话期间的流安全。

然而,WebRTC使用的端到端加密仅保证两个端点是唯一具有未加密视频流的端点。在本发明中,仅在广播者102与原始节点106a之间以及订户104与边缘节点106c之间使用WebRTC,意味着从网络100中随机选出的原始节点106a和边缘节点106c(以及它们之间的任何中继节点106b)将访问未加密的流。为了解决这个问题,网络100在WebRTC之上实现另一个加密层,并通过WebRTC的数据信道发送加密数据。这保证了只有获取了用于流的密钥的订户104才可以访问流数据。在示例实施方式中,新的加密层可以使用两个密钥。第一密钥可以是对称密钥,利用该对称密钥已经对视频流进行了加密。具有此密钥允许订户或任何其他节点解密流。第二密钥可以是由广播者发布给订户以提供对内容的访问(例如,以防止对付费流进行解密)的DRM密钥。可以使用区块链和由网络100提供的功能或通过中心化系统(例如,广播者102拥有的网站)来生成和分发DRM密钥。不需要DRM密钥来解密视频流,而是需要DRM密钥来验证订户104应该可以访问流。流的广播者102需要存储和分发用于加密流的对称密钥,以保证密钥的安全存储。在一个示例中,可以由广播者102通过单独的认证服务器设置来分发密钥,该广播者102将使用区块链上的公共数据来确定给定节点106是否应该接收解密密钥。

订户104获得密钥的示例性过程包括订户获得边缘节点106c(例如,使用用于本发明的系统的客户端)、订户104连接至用于在流的智能合约中指定的特定流的认证服务器、以及验证服务器使用区块链来验证订户104是否应该访问流(例如,检查用户是否拥有有效的DRM密钥)。如果准予访问,则订户104接收用于解密流的对称密钥,订户连接至边缘节点106c并开始观看该流,并且边缘节点106c验证订户104是否拥有有效的DRM密钥。如果密钥有效,则订户104可以继续观看,否则流被边缘节点106c中断。

用于WebRTC或其他类似协议的数据信道将用于传递加密视频。然后,视频将在订户侧被解密(例如,使用媒体源扩展(Media Source Extensions,MSE))。加密和传递过程的示例性过程可以包括广播者102生成对称密钥以对其视频流进行加密、使用视频和音频数据生成数据包流、以及使用所生成的对称密钥对流进行加密并将其通过WebRTC数据信道发送至原始节点106a。原始节点106a将加密数据包重新路由到中继节点106b,然后中继节点106b再路由到边缘节点106c。根据示例实施方式,不同节点106a、106b、106c之间的所有通信将通过安全实时传输协议(SRTP)来实现。SRTP是实时传输协议(RTP)配置文件,意在为单播和多播应用程序中的RTP数据提供加密、消息身份验证和完整性以及重放攻击保护。边缘节点106c将加密数据包通过WebRTC数据信道发送至订户,并且订户104解密该数据包并使用MSE播放视频。实施该过程保证了视频从广播者102在整个网络上一直被加密地传递至订户104。因此,解密视频的唯一方法将是具有对称密钥,或破坏加密(这是不可行的)。尽管将WebRTC用作示例性示例,但是本领域技术人员将理解的是,在不脱离本发明范围的情况下,可以在本发明内实现利用类似功能的任何协议。

根据示例实施方式,本发明可以在中心化网络/系统内实现。在中心化系统中,代替关于去中心化系统所论述的区块链,流管理器可以负责管理网络内的不同节点的角色。图11描绘了实现为由流管理器1102管理的中心化网络1100的示例性系统。如图11所示,中心化网络1100包括执行与关于图1至图10所论述的相同的角色的部件(例如,102、104、106a、106b、106c、706a、706b、706c),但是在中心化系统中,由流管理器1100(例如,代替区块链)来管理对这些角色的选择和管理。另外,参与网络1100中的部件可以在接收任何流请求之前被预先选择和预先配置,或者当从广播者102接收到流请求时,选择和配置可以联机进行。

图11中的过程1100示出了当部件已经由流管理器组织(例如,预配置)时流的操作。在过程1100的步骤1中,广播者102向流管理器1102提出对于用于流的原始节点106a的请求。在过程1100的步骤2中,流管理器将用于原始节点106a的端点提供给广播者102。这些端点可以包括用于连接至一个或更多个原始节点106a以及备份原始节点706a的信息。图11的示例性示例描绘了单个主原始节点106a(原始节点1)和备份原始节点706c(原始节点2)。在过程1100的步骤3中,广播者102将流发布至主原始节点106a和备份原始节点706a。

在过程1100的步骤4中,接收主原始节点106a将指示其已经从所标识的广播者102接收到流的发布事件发送至流管理器1102。响应于接收到该发布事件,在过程1100的步骤5中,流管理器1102存储用于发布的流的摄取信息。摄取信息可以将来自接收流的所有原始节点106a的所有接收到的发布事件存储在表中。

在过程1100的步骤6中,流管理器1102从订户104接收用于特定流的对边缘节点106a的请求。响应于接收到边缘节点请求,在过程1100的步骤7中,流管理器1102可以在数据存储中查找用于所请求的流的原始节点。在过程1100的步骤8中,流管理器1102确定原始节点106a与订户104之间的最佳路径,以建立将流从原始节点106a传递至订户104的回路。该确定可以利用选择方法和系统的任意组合来执行。例如,选择可以基于参与部件的地理位置。

在流管理器1102确定最佳边缘节点106c和备份边缘节点706c(以及任意数量的中间中继节点106b、706b)之后,在过程1100的步骤9中,将边缘节点106c和备份边缘节点706c的端点发送至订户104。在过程1100的步骤10中,订户104可以连接至边缘节点106c、706c并订阅由广播者102发布的流。对该流的订阅可以包括诸如从MBR流选择、接收DRM密钥等中的其他步骤,如本文更详细论述的。

图12A至图12D描绘了用于以联机初始化的方式实现图11的中心化网络1100的示例性过程1202、1204、1206、1208。特别地,图12A至图12D示出了直到从广播者102接收到对原始节点106a的请求才连接节点的过程。这与图11所示的在接收流请求之前已经预选择并连接节点的实施方式形成对照。无论何时配置节点,网络的整体操作使用类似的功能。

图12A描绘了广播者102向流管理器1102请求利用两个中继节点106b和两个边缘节点106c在多个原始节点106a上发布流的过程1202。此时,节点106a、106b、106c之间没有连接。如图12A中所描绘的,除了流管理器1102响应于广播者102请求原始节点而联机选择原始节点106a、706a之外,过程1202的步骤1-5与过程1100的步骤1-5相同。

图12B描绘了用于响应于来自订户的边缘节点请求而为中继节点106b、706b建立连接的过程1204。在过程1204的步骤1中,流管理器1102从订户104接收对用于流的边缘节点的请求。在过程1204的步骤2中,流管理器1102可以查找用于流的原始节点106a(例如,从数据存储中)。在过程1204的步骤3中,流管理器1102可以获取与原始节点106a、706a相关联的组中的中继节点106b、706b。在过程1204的步骤4和5中,流管理器1102评估并选择最佳中继节点106b、706b,以在原始节点106a、706a与订户104之间建立回路。在一个示例中,选择可以是在去中心化系统中使用的相同的过程,如本文中更详细论述的。在过程1204的步骤6中,流管理器1102发起选定的原始节点106a、706a与中继节点106b、706b之间的连接。

图12C描绘了流管理器1102评估并选择最佳边缘节点106c以在中继节点106b与订户104之间建立回路路径的过程1206。在过程1206的步骤1中,流管理器1102从数据存储中获取可用边缘节点106a。在过程1206的步骤2和3中,流管理器1102评估并选择最佳边缘节点106c、706c,以在原始节点106a、706a和/或中继节点106b、706b之间建立回路。在一个示例中,选择可以是在去中心化系统中使用的相同的过程,如本文中更详细地论述的。在过程1206的步骤4中,流管理器1102发起选定的边缘节点106c、706c与原始节点106a、706a和/或中继节点106b、706b之间的连接。在过程1206结束时,已在选定的原始节点106a与选定的边缘节点106c之间建立了回路(例如,经由选定的中继节点106b)。

图12D描绘了流管理器1102将选择的边缘节点106c返回给订户104并且订户104可以连接至边缘节点106c以激活来自广播者102(例如,原始节点106a)的流的过程1208。从过程1202到过程1206的过程流示出了流管理器1102如何从可用节点中特别地为中心化网络1100内的特定角色选择节点,并且建立连接以创建用于从广播者102向订户104串流多媒体的两个启用回路(如图12D所示)。在过程1208的步骤1中,原始节点106a、706a、中继节点106b、706b和边缘节点106c、706c之间的连接全部都处于启用状态。在过程1208的步骤2中,流管理器1102将与边缘节点106c、706c有关的信息发送至订户104(例如,通过REST API)。在过程1208的步骤3中,订户104可以连接至边缘节点106c、706c并且订阅由广播者102发布的流。如本领域的技术人员将理解的,在关于图1至图10所论述的去中心化网络100中利用的节点角色选择过程、备份流创建/管理、MBR等可以与在关于图11至图12D所论述的中心化系统内类似地实现。

任何合适计算设备可以用于实现本文描述的计算设备(例如,经由广播者102、节点106、订户104、流管理器1102等)和方法/功能,并且可以通过修改硬件、软件和固件以远远超过仅在通用计算设备上执行软件的方式被转换为用于执行本文描述的操作和特征的特定系统,如本领域技术人员将理解的。在图13中描绘了这种计算设备1300的一个说明性示例。计算设备1300仅是合适计算环境的说明性示例,而绝不限制本发明的范围。如图13所示的“计算设备”可以在图中被描绘为包括“工作站”、“服务器”、“膝上型计算机”、“台式计算机”、“手持设备”、“移动设备”、“平板计算机”或其他计算设备,如本领域技术人员将理解的。考虑到计算设备1300是出于说明性目的而被描绘的,本发明的实施方式可以以任何数量的不同方式利用任何数量的计算设备1300来实现本发明的单个实施方式。因此,本发明的实施方式不限于本领域技术人员将理解的单个计算设备1300,也不限于示例计算设备1300的单一类型的实现形式或配置。

计算设备1300可以包括总线1310,该总线1310可以直接或间接地耦接至以下说明性部件中的一个或更多个部件:存储器1312、一个或更多个处理器1314、一个或更多个呈现部件1316、输入/输出端口1318、输入/输出部件1320和电源1324。本领域技术人员将理解的是,总线1310可以包括一个或更多个总线,比如地址总线、数据总线或其任何组合。另外,本领域技术人员将认识到,取决于特定实施方式的预期应用和用途,可以通过单个设备来实现这些部件中的多个部件。类似地,在一些情况下,单个部件可以由多个设备实现。如此,图13仅是可以用于实现本发明的一个或更多个实施方式的示例性计算设备的说明,而绝不限制本发明。

计算设备1300可以包括多种计算机可读介质或与多种计算机可读介质交互。例如,计算机可读介质可以包括:随机存取存储器(RAM);只读存储器(ROM);电子可擦可编程只读存储器(EEPROM);闪存或其他存储技术;CD-ROM、数字多功能光盘(DVD)或其他光学或全息介质;磁盒、磁带、磁盘存储或者可以用于编码信息并可以由计算设备1300访问的其他磁性存储设备。

存储器1312可以包括呈易失性和/或非易失性存储器的形式的计算机存储介质。存储器1312可以是可移除的、不可移除的或其任何组合。示例性硬件设备是诸如硬盘驱动器、固态存储器、光盘驱动器等的设备。计算设备1300可以包括一个或更多个处理器,所述一个或更多个处理器从诸如存储器1312、各种I/O部件1316等的部件读取数据。呈现部件1316向用户或其他设备呈现数据指示。示例性呈现部件包括显示设备、扬声器、打印部件、振动部件等。

I/O端口1318可以使计算设备1300能够逻辑地耦合至其他设备,比如I/O部件1320。一些I/O部件1320可以内置在计算设备1300中。这样的I/O部件1320的示例包括麦克风、操纵杆、记录设备、游戏垫、碟形卫星天线、扫描仪、打印机、无线设备、联网设备等。

如本文中所使用的,术语“包括(comprises/comprising)”意在被解释为包括性的,而不是排他性的。如本文所使用的,术语“示例性”、“示例”和“说明性”意在表示“用作示例、实例或说明”,并且不应被解释为指示或不指示相对于其他配置优选或有利的配置。如本文所使用的,术语“大约”、“通常”和“约”意在涵盖诸如特性、参数、大小和尺寸之类的主观或客观值的范围的上限和下限中可能存在的变化。在一个非限制性示例中,术语“大约”、“通常”和“约”是指存在-10%至+10%范围的容限。在一个非限制性示例中,术语“大约”、“通常”和“约”是指足够接近以被本领域技术人员认为在相关领域中被包括在内。如本领域技术人员所理解的,如本文所用的术语“基本上”是指动作、特征、特性、状态、结构、项目或结果的完全或接近完全的扩展或程度。例如,“基本上”为圆形的物体意味着该物体完全是数学上可确定的极限的圆形,或者接近本领域技术人员将认识或理解的圆形。在一些情况下,偏离绝对完整性的确切允许程度可能取决于特定的背景。然而,总的来说,接近完成将具有与实现或获得绝对且完全的完成相同的总体结果。如本领域的技术人员将理解的,当以否定含义使用以指代动作、特征、特性、状态、结构、项目或结果完全或接近完全的缺乏时,“基本上”的使用同等适用。

鉴于前面的描述,本发明的许多改型和替代性实施方式对于本领域技术人员将是明显的。因此,该描述应当被解释为仅是说明性的,并且目的是为了教导本领域技术人员实施本发明的最佳方式。在不脱离本发明的精神的情况下,结构的细节可以大体上变化,并且保留所附权利要求的范围内的所有改型的排他性使用。在本说明书内,已经以使得写出清晰简洁的说明书的方式描述了实施方式,但是意图并且将理解的是,在不背离本发明的情况下,可以对实施方式进行各种组合或分离。意图将本发明仅限于所附权利要求和适用法律规则所要求的程度。

还应当理解的是,所附权利要求将覆盖本文描述的本发明的所有一般特征和特定特征,并且就语言而言,可以说本发明的范围的所有陈述都介于本发明的所有一般特征和特定特征之间。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号