缓存服务器会根据用户的URL里的URI来检查是否本地有缓存

日期: 栏目:德甲联赛 浏览:65 评论:0

  最近发现身边好多人一有空就捧着手机、平板看视频,各种“雅、俗”的东西都有,受众面极广,而且好多人也会拍了上传,流量满世界跑,网络线路的压力应该是非常大的,而近期刚刚在学习网络工程师的课程中了解了一点组播的知识,所以想了解下,现在这些直播录播平台们是不是通过组播的方式下方流量的?虽然我基础比较差,不一定看得懂,但还是想请大咖好好讲讲这里的基本实现方式,感谢!

  其实抓包就知道了,是单播。跨三层组播,客户端来自不同的区域,需要运营商支持组播路由协议pim建立组播流量结构,几乎不太可能实现。

  谢邀,这方面我用得不多,就简单回答一下

  不是,抓包结果反应直播平台的流量是单播的。

  基础知识:

  igmp协议:tcp/ip协议卷一

  组播的实现:RFC0791

  广域网上的多播需要路由协议的拓展来支持,明显的是大部分接入宽带路由器普遍不支持。

  在国外找到的一些文档翻译:

  在实时流单播中,每个连接的用户都有自己的带宽需求从服务器返回,因此服务器需要足够大的互联网连接来满足流的所有请求。即使这是相同的数据传送给许多不同的人也是如此。虽然对于个性化服务至关重要,但单播不适用于大型在线在线活动。

  在广播中没有直接连接,但是一些网络被分配给广播;实际上,即使内容不观看,内容也被流传给所有用户 - 因特网路由器基本上不转发广播数据包,因此路由IP网络之间无法进行广播。

  在多播中,最终用户通过用他们自己的路由器注册他们对流的兴趣进行调整,然后将路由器注册到所有路由器。然后,路由器确定它们只需要将数据包的一个副本发送到下一个路由器(而不是每个用户一个)。然后,最后一个路由器只需要将数据包一次发送到最终的接入网络,但是在目前的情况下,所有想要数据包的接收者都同时被调入。因此,无论是一个收件人还是数千个(就像企业网络中一样),负载仍然只是一个最终用户。

  这意味着许多不同的广播可以同时传送给许多使用互联网的互联网用户,观众人数不再受中央服务器的大小限制(或者在传统的纯播放CDN的情况下,分布式网络的服务器也可以。

  原文连接:http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/The-Return-of-Multicast-Why-it-Succeeds-in-a-Live-Linear-World-108621.aspx(科学上网)

  rfc的文档还是不链接上来了,请到官网查看。

  上海电信IPTV确实是组播的真正应用,但这个IPTV网络是专用网络,只用于IPTV组播流量的传输。

  组播有一个潜在的问题,就是组播的接收者未知,可能没有,可能一个,也可能有上千万个。如果被不法分子利用,从成千上万个被控电脑上,往网络里持续注入大流量组播数据,同时接收组播数据,这对网络是一个巨大的挑战。

  运营商针对家庭用户的网络入口,可能会直接过滤掉IGMP报文,杜绝可能的网络攻击行为。

  但对于企业客户,由于客户有组播数据的传输的需求,所以会特殊配置,一般使用MVPN(Multicast VPN)的方式,组播隧道的方式,每一个客户分配一个组播IP,比如230.1.2.3,把用户的组播封装在230.1.2.3(通常由入口PE封装),在出口PE处做解封装,然后就剩下用户的组播,继续在用户的网络(其它分公司)里传输组播。

  隧道方式可以杜绝企业客户的组播数据在运营商的网络里乱窜,只会在PE之间传输,而不会到别处,此谓可控!

  网络直播、点播由于面向的用户是全球用户,通过上述的描述,运营商的网络不支持这种流量的组播,既然组播走不通,就选择单播传输。

  虽然单播传输,但是心中还是念念不忘组播的好,那组播到底有哪点好?

  一个交换机连接50台电脑(用户),如果这50个用户都在看网络直播,假设直播流速为2Mbps, 请问这个交换机从上游下拉的流速是多少?是2Mbps吧?向下游(用户)推送的总流速是多少? 50*2= 100 Mbps!

  意味着虽然有50个用户在看直播,但对上游网络的带宽压力只有 2Mbps。

  但如果是单播呢?对上游网络的带宽压力为 50*2 = 100Mbps。

  那能否在靠近用户的地方,部署一些类似上文交换机的缓存服务器(Cache Server)?

  靠近缓存服务器的用户,每当访问直播服务器时,缓存服务器会根据用户的URL里的URI来检查是否本地有缓存,如果有,直接推送给用户,这样不会对上游网络有任何压力。

  如果没有缓存,则代理用户访问直播服务器,将直播数据转发给用户,同时将直播数据缓存在本地,方便别的用户使用。

  如果有50个用户使用此缓存服务器,则最多从上游下拉一份数据 2Mbps,而不是100Mbps。

  这是一个两全其美的方案,虽然不使用组播,但能到达组播的效果,这个就是CDN (Content Delivery Network)。

  这个是系统项目,目前所属行业来讲,直播技术使用的是nginx的HLS多媒体服务(或SRS、BMS)+OBS开源直播平台,用户端使用的是CDN加速,局域网测试1080在迟再2-3秒,如果是广域网的话延迟高10秒以上。

  如图示

  直播平台整体架构

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  -----------------------------------------------------------------------------------------------------------------------------------------------------------------

  参考文献:全民大直播,流媒体选择Nginx是福还是祸? - charleslei的专栏 - CSDN博客

  图片参互联网直播平台架构案例一 - PetterLiu - 博客园

  组播不对,单播也不对。

  各个大平台提供“CDN”就近分发,自适应地调整组播和单播。

  这也是为什么平台要收份子钱的主要原因。

  对平台而言,CDN服务器遍布各地,上线的直播越多他的CDN就越划算。对主播而言,如果没有平台,那么他的机器和网络撑不住那么大的流量的。

缓存服务器会根据用户的URL里的URI来检查是否本地有缓存

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。