前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自研海外PCDN系统技术架构与演进

自研海外PCDN系统技术架构与演进

作者头像
LiveVideoStack
发布2020-02-19 11:26:37
4K0
发布2020-02-19 11:26:37
举报
文章被收录于专栏:音视频技术

Photo by Nick Wehrli from Pexels

本文来自小溪流科技首席架构师张道远在LiveVideoStackCon 2019深圳站上的演讲,演讲内容主要涉及PCDN海外复杂环境中如何提高穿透率和分享率的同时,保证弱网的用户体验和内容版权的保护中采用的技术,架构演进及实际落地效果展示。

文 / 张道远

整理 / LiveVideoStack

大家好,我是来自深圳市小溪流科技有限公司的系统架构师张道远,主要负责公司PCDN的系统架构设计。我们公司主要是做方案集成商,包括CDN和PCDN这块,一直耕耘于海外。

今天我带来的主要内容是自研PCDN系统技术架构与演进。演讲主要从四个方面进行分享。如何提高穿透率和分享率,在海外弱网环境下的实践,另外就是安全体系建设的一些方面。

1. PCDN提高穿透率

1.1 NAT的分类

提到穿透率,避免不了提到NAT。快速给大家讲一下NAT的分类。

(1)完全锥形

完全锥形的特性是只要知道网关上映射的端口和IP,在任何一个地方都可以通过内网IP访问。

(2)限制锥形

限制锥形的映射方式与完全锥形相似,但在安全性上有所不同。它拒绝“不请自来”的IP访问。

(3)端口限制锥形

它的映射方式和限制锥形一样,但它对IP和端口都做了访问限制。如图,对于同一个IP,通过另外的端口访问时接收不到数据的。同一个端口,没有主动发出请求的IP也是收不到数据包的。

(4)对称型

不同的请求、目的、地址有不同的映射。同时它与限制锥形NAT映射相似,但它拒绝主动请求的IP及端口的访问。如上图,对S1、S2发出请求,S1虽然知道出口IP,但是主动发出请求并不会被接收。

实际中NAT类型还有很多种,例如公网IP、UDP Block等。

1.2 全球家庭级别网关NAT类型分布

我们对国外各类型网关NAT类型做了初步研究。上图是我们搜集的数据。我们发现端口限型和对称型分别占比75%和16%,两者占比非常高达91%,这意味着打通它们两者之间是我们面临的主要难题,也是提高穿透率的关键所在。

1.3 穿透率提高的关键

由于端口限制类型会拒绝接收主动请求的端口和IP的访问数据,对称型对新的访问数据会发起新的映射方式,所以正常情况下两者之间无法打洞。

对称型和对称型之间的都使用新的映射关系,而且对称型会拒绝主动请求的IP和端口访问,所以正常情况下,两者之间打洞是不成功的。我们用了以下方法成功打洞。

1.4 如何提高对称型的穿透率?

(1)生日算法

生日算法来源于生日悖论,应用到打洞场景上主要使用数据集有64511个端口(1024以下的端口不用)。据我们实验,假如设定对撞碰出端口的成功率是70%尝试的次数大概是三百到四百次。

(2)UPNP

UPNP是即插即用的通用缩写,主要用于智能设备的相互发现和通讯。我们在打洞时主要使用它将内网IP直接映射到出口IP当作公网服务模式使用。

(3)中继模式。

例如我有A、B、C三个节点,A和B之间可以打通,B和C之间可以打通,但是A和C之间由于NAT映射关系无法打通。当A和C通讯时可以将B作为中继点。中继节点具有服务器和客户端的特性,我们在选取中继节点时,最好选取带宽优质、能用内网或者UPNP模式开启的节点。

(4)MDNS

MDNS是多播协议。没有传统DNS的情况下,用于内部节点的相互发现和通讯。在打洞过程中可不通过服务器使内网节点相互发现通讯。它使用UDP端口协议,组播特性端口为5353。

1.5 全球UPNP开启NAT分布情况

我们搜集分析数据验证了这些方法的有效性。我们对全球UPNP开启NAT分布情况总结发现,端口映射型数据会增高,对称型基本不变,其它类型也基本不变。将样本总结分析发现,端口限制型的数据下降了,对称型增加了。我们关键要看的是第四个图。我们发现有46%的节点可直接以公共服务的方式提供P2P分享,保守估计P2P之间组网穿透率可达90%以上。我个人觉得穿透率的提高并不会直接带动分享率的提高。

2. PCDN提高分享率

接下来我会给大家介绍P2P节点组网模型、调度策略、跨区域或国际策略以及一些落地案例。

2.1 P2P组网模型

P2P常见组网模型有以下几种:

(1)树形组网

树形组网以顶层节点获取资源,常见的就是一分二、二分四这种模式,节点带宽够的话也可以一分多。但是我们可以很明显的看到它的缺点。随着树形高度增加,底层的累计延时会越来越大,如果父节点离线会导致子节点处于孤儿状态。同时,最底层的节点是一个完全消费者模型,无法进行数据分享。

(2)网状组网

网状模型中每个节点都是被动请求,只要节点的数据量级客观,数据肯定可以从周围节点请求得到。但是如果用于低延时,高可变的情况(比如直播),此模型就不是很合适。同时,此模型中消息互动是高频率互动的状态。

(3)分布式星际组网

分布式星级组网是去中心化,它的优势是每个节点状态容易同步一致,上线下线对网络影响状态小。但是它的缺点是消息冗余和消息延时,不适用于直播场景。这个模型稍作改动可作为点播类、文件分享比较合适;

2.2 调度策略

按照不同的国家,我们会按照区域调度,调度原则就是同城同网。对于跨区域调度,我们遵循同网划分,以节点间RTT值越小等级越高来区分。跨国调度以距离、RTT带宽为条件区分。混合调度结合了以上三种调度方式。

上图是我们自己的P2P组网模型。我们采用了树形组网,但是我们规避优化了传统树形模型的缺点。为防止延时过高,我们在调度时会严格控制树形高度。为弥补父节点掉线造成孤儿状态的不足,我们使系统中每个节点都首先从CDN拉流。如果出现父节点掉线的情况,它立即向服务器补片,同时触发新的组网。对于纯粹的消费者模型,我们目前有两种方案,其中一种是节点可以做中继服务。第二种方式我们目前还在规划,我们希望将树形组网与网状组网融合。这种方案目前还没有落地。

我们会在每个区域形成一张区域层级图,用mdns方式将同一内网用户串联起来,通过打洞调度将同区域同ISP节点组网,这样形成了ISP多根树模型。需要跨国际节点通过RTT等级区分并结合国际时差提供调度服务。通过这种方式,实现了不同国家,不同区域的层级拓扑图。

3. 全球弱网环境实践

不同国家的网络有很多复杂的情况,弱网环境是常见的情况。国际上有几种协议来处理弱网环境问题。

(1)Google QUIC一款出名的谷歌定制的基于UDP的低延时互联网传输层协议。

(2)SRT是Haivision新一代低延迟开源视频协议,同样基于UDP协议。

(3)KCP是一个快速可靠的协议,能以牺牲 TCP10%-20%的带宽为代价,换取平均延迟30%-40%的降低 ,且最大延迟降低三倍的传输效果。

(4)BGTP是我们自研发的基于GOP分片的流媒体传输协议。

3.1 各协议实际流媒体传输测试

我们在方案选择前做了测试。我们把QUIC、SRT、KCP在不丢包的情况下使用恒定码率进行了对比测试。我们发现QUIC、KCP的带宽有略微增幅,SRT的带宽大约涨了10%。

在30%丢包率效果下,网络抖动越大,HTTP使用带宽的效率会越低。从应用侧看,QUIC和KCP都能流畅的播放观看,但是带宽基本涨了一倍。我们实验时没有得到SRT的相关数据,也许是方法不对,实验时传输了正确的数据,由于设置了低延时,客户端收到的数据会导致视频出现马赛克、花屏等情况。我们的应用场景是要保证丢包率在30%左右时能稳定传输,同时在带宽成本考量范围内,所以以上方案都没有纳入选择范围。根据以往的经验,我们基于现有协议做了深度改造,形成了BGTP传输协议。

3.2 BGTP抗抖动

BGTP抗抖动没有特别复杂的技术。我们按照TS流通过封闭式GOP切片,每个GOP切片分组分包编号。客户端认证成功之后,服务器端主动推流,这个过程中如果发现丢包,由客户端请求丢包重传,同时GOP时延参数配置在服务器端主控。如果客户端GOP接收不完整,客户端会主动丢弃GOP,避免出现马赛克、花屏情况。

BGTP优点:
  1. 低延时,首屏块。它没有http那样复杂的握手过程,一个包接收到就可以完成认证推流过程。
  2. 能在低于30%丢包情况下稳定传输。
  3. 配置灵活适应不同场景。
BGTP缺点:
  1. 协议目前只适合封闭式GOP的TS流,不适用于通用数据传输。
  2. 同比环境下比HTTP占用更多资源。

如上图是我们BGTP和HTTP落地效果对比。我们从两个维度收集了用户端数据。第一张图是卡顿率。用户最直观的就是卡顿。我们可以看出,对于弱网用户BGTP比HTTP减少了超过10%的卡顿率。第二张图表示的是首屏加载速度。BGTP对弱网用户首屏加载速度提升了大约2%。

4. PCDN安全体系

我们通过三个问题解决PCDN安全体系建设问题。

4.1 OTT流媒体业务的数字版权如何保护?

说起OTT数字版权,首先想到业内有名的DRM标准,例如微软PLAY READY、谷歌WIDEVINE以及VERIMATRIX。我们提炼了VERIMATRIX的一些机制,做了自己的版权保护体系。我们的版权保护体系有两个重要点,首先是节点认证体系,另外就是节点间传输加密。

4.2 PEER节点接入组网时候如何保证安全性?

(1)节点认证体系

节点认证体系分了三大板块完成。

终端管理系统,主要是管控OTT类产品,简单来讲是在生产过程烧录license+key。

终端认证系统,主要负责在用户端甄别OTT类产品,校验license+key的合法性。

认证、授权、计算系统和我们的实际业务相关。

(2)节点间传输机密体系

用户要接入我们系统,首先要通过TMS+TAS+AAA认证,之后会在后端获取有时效性TOKEN,我们的TRACKER调度只调度有时效合法的TOKEN。组网之后,节点间直接协商流媒体加密。重要的是要保证每个节点间的密钥和加密算法都不一样。

4.3 恶意请求及非法流量如何拒之门外?

从近年来互联网事件来看,单靠自己的安全体系是不够的。我们在安全问题上,不仅完善自己的安全体系,还考虑利用各大厂商的防御策略。在业务层,我们使用了特定的TOKEN机制结合各大厂商的防护规则来保护我们的CND和业务体型。DDOS流量通过P2P节点网络分流,减轻核心CDN系统压力。这个目前还没有做完,只做了小区域的尝试。

只做防范不做预警是被动的。我们对P2P节点做了实时预警系统。具体做法是我们在tracker集群上部署了一套节点监控预警系统,每个tracker收到的数据包都会在系统日志留下记录,日志数据清洗时,将生成IP、协议类型、geo位置信息等数据源作为事件,以可视化方式展现出来。如图是我们其中一台机器上的实时监控图像。破解外面的协议、使用其它协议访问服务器都会预警。后台对不是P2P协议的数据按照不同级别,分级别预警。

5. 自研PCDN技术总结

  1. P2P打洞成功率和组网调度策略决定分享率高低;
  2. 海外网络环境极度复杂,弱网是首要解决的难题;
  3. 数字版权资源保护是海外推广落地敲门砖;
  4. 海外商业环境不同于国内,安全预警和安全防护需要并行。

我们对于PCND技术走向有一些自己的想法。我们虽然选择了现有协议,但是面对复杂的环境,需要各大CDN厂商的传输协议融合。另外,对于安全问题,我们所做的远远不够,我们在安全领域还有很长的路要走。第三点海外OTT盒子加速节点已经出现,近几年又提出云计算、物计算的相关概念,但是服务是一切的前提,这也是以后要考虑的范畴。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BGTP优点:
  • BGTP缺点:
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档