1 什么是 SFU ?
首先,我们再看一次 SFU 服务器的定义,什么是 SFU ?
SFU 的全称是:Selective Forwarding Unit,是一种路由和转发 WebRTC 客户端音视频数据流的服务端程序。
1 什么是 SFU ?
首先,我们再看一次 SFU 服务器的定义,什么是 SFU ?
SFU 的全称是:Selective Forwarding Unit,是一种路由和转发 WebRTC 客户端音视频数据流的服务端程序。
当你入门 WebRTC 之后,很快就会接触到一个名词,叫做:SFU,你可能很容易就在网上寻找到很多 SFU 的开源实现,并并兴致勃勃地开始编译、部署和测试这些服务器,但是可曾想过,为啥我们的 WebRTC 应用需要 SFU 服务器 ?
1 WebRTC P2P 通话的网络模型
WebRTC网关服务器的上线意味着即构的音视频能力可以全面支持网页端视频互动场景。
作为实时音视频领域最火的开源技术,WebRTC 点对点的架构模式,无法支持大规模并发。如何在架构中引入服务端,一直是开发者关注的热点。5月20日,即构科技资深音视频架构师黄开宁在WebRTCon大会上带来了他的经验分享,以下是对他演讲内容的整理。
何为 WebRTC ?首先,字面上已经给出了关于这一技术的大量信息,RTC 即为实时通信技术。
WebRTC 填补了网页开发平台中的一个重要空白。在以往,只有诸如桌面聊天程序这样的 P2P 技术才能够实现实时通讯而网页不行。但是 WebRTC 的出现改变了这一状况。
WebRTC 本质上允许网页程序创建点对点通信,我们将会在随后的章节中进行介绍。我们将讨论如下主题,以便向开发者全面介绍 WebRTC 的内部构造:
为webrtc配合 ubuntu系统 rfc5766-turn-server
$ wget http://ftp.cn.debian.org/debian/pool/main/r/rfc5766-turn-server/rfc5766-turn-server_3.2.4.4-1_amd64.deb
可以根据网址从网站上直接下载
$ sudo apt-get update
$ sudo apt-get install gdebi-core
$ sudo gdebi rfc5766-turn-server_3.2.4.4-1_amd64.deb
安装完后,在/usr/share/doc/rfc5766-turn-server下有很多文档可参考。
如果一台主机处于NAT后面,那么在一定条件下两台主机无法之间进行通讯。在这种条件下,那么使用中继服务提供通讯是有必要的。
这个规范定义了一个名为TURN(使用中继穿越NAT)的协议,它允许一台主机使用中继服务与对端进行报文传输。TURN不同于其它中继协议在于它
允许客户机使用一个中继地址与多个对端同时进行通讯。
TURN协议也是ICE(交互式连接建立)协议的组成部分,也可以单独使用。
假如你在企业内使用WebRTC,可能会遇到UDP端口被封的情况,这个时候可以强制WebRTC使用TCP转发模式。
要使用TCP转发,得配合一个 turn server,开源的 coturn 实现了 TCP 转发,我在“Ubuntu Server 14.04下配置coturn for WebRTC”一文中介绍了如何安装配置,可以参考。
配置了 coturn 后,在 Chrome 内建立 PeerConnection 对象时,做个配置,就可以实现转发了,类似下面:
你在下载的时候,有没有体验过 P2P 下载,能够让你的网速从 10KB 直接提升到 10MB? 你在企业内传输文件的时候,有没有体验过文件秒传? 你在看直播的时候,想不想用别人的流量看直播呢? ...
能做到上面这些场景的技术,叫做 P2P。P2P 技术中,最出名的叫做 WebRTC。WebRTC 是一个含金量非常高的技术。做好的话你可以养活一家公司,做不好,那就只能是一个 demo。
WebRTC 虽然能做很多事,但是并不是所有场景都适合。最大的使用场景是 两个终端在同一个 NAT 内,简单来说,都在一个 wifi 内。这个场景中,最显著的效果就是带宽无限并且高速,你走的就是内部的线路,根本不消耗运营商的流量。
P2P 技术在基于 WebRTC 标准下,可以做很多事情:
近几年网络直播视频、VR/AR、竞技游戏、大数据、4K高清视频的快速增长,正在将毫秒级网络加速技术推向历史发展的潮头。用户的预期越来越高,他们期待“最好”的在线体验,网络延迟会直接影响到应用的转化率。即有多少人可以变成你的客户,现在用户的体验和忠诚度已经不能用“分钟”和“秒”来衡量,而是用“毫秒级”来衡量,每个毫秒都会对用户的转化和体验有影响。
比如说在线教育类用户就希望视频直播的端到端延迟能够严格控制在500毫秒以内,使之具备和视频连麦相同的低延迟体验。那现在的CDN加速技术还能起作用吗?首先数据不能有cache,TCP的延迟累积必须消除,甚至RTMP协议也要切换到WebRTC的技术架构。移动互联网的实时视频应用领域正在快速演变中的一切,我们先姑且称之为网络延迟革命吧。