找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 109|回复: 15

电信/联通/移动等ISP的内网缓存服务器 导致视频CDN播放异...

[复制链接]

19

主题

84

回帖

263

积分

中级会员

积分
263
发表于 2019-2-21 23:05:14 | 显示全部楼层 |阅读模式
电信/联通/移动等ISP的内网缓存服务器 导致视频CDN播放异常 【附解决方案】


我拿某大站 解释下问题在哪里

先问题复现下

第一步 观看视频
第二步 载入视频文件链接
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p.m3u8
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p1.ts
。。。。。。
请求时这个样子的




这个是正常情况 视频是可以正常播放的


但是 我们进行一些行为操作, 比如快进一下 问题来了
这个请求的是
http://hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p31.ts
这个请求是错误的,被运营商挟持到缓存服务器了



链接变为
http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/hls-250p31.ts



并且一直访问错误
前面被增加了
http://59.80.44.82
这个IP 就是运营商的缓存服务器

这个时候 视频就无法播放了
会这样




产生的影响

# HLS协议
m3u8正常
ts因为密集型小文件,会出现上面那个断流问题,视频播放错误

# MP4文件
一般MP4文件比较大 你想想, 一个1G的视频文件放美国服务器上
电信用户访问,电信ISP缓存服务器要下载美国服务器的MP4
如果缓存服务器配置不当,没启用range byte 类似BT的边下边播,那么要等电信缓存服务器下载完1G大小的视频用户才能观看
嗯 估计几个小时吧。。。。。。。
点播卡成狗是一种什么体验?


已知的 电信/联通/移动/长城宽带/有线通等 全部存在缓存服务器
这个缓存是为了提高网内访问速度,降低带宽使用和网间结算费用
单用户请求一个文件,缓存服务器先缓存起来,然后当其他用户访问,就不需要重复访问外网去下载了

这个类似于一个重复的CDN缓存,当遇到运营商强制缓存,就等于你自己的CDN毫无用处了

原来
        用户访问 =》 CDN边缘服务器 =》 源文件服务器
现在
        用户访问 =》 运营商ISP缓存服务器 =》CDN边缘服务器 =》 源文件服务器

多了一层,我们不可控的资源, 主要表现在限连接数和限速的关系
因为运营商的缓存服务器本身并不是特别快,高并发的情况下会挂,并且有做资源限速
相当于多了一层
类似于一条高速,我们起点到终点 部分车辆 可以跑120公里
而运营商非要在高速间挖个洞,说能更快。。。。
但是这个快,是ISP宽带客户到ISP之前的快,而不是ISP宽带客户到网站服务器的快
并且产生了一个非常不好的影响,ISP运营商的缓存服务器慢,普通用户只是会觉得你网站服务器慢


这个问题目前只有部署SSL可以暂时解决
(我说暂时的,因为实际有部分区域已经开始使用伪SNI来缓存SSL了,目前会提示SSL证书不安全)
但是多媒体启用SSL协议,会严重加大服务器负载和握手耗时,增加开销


所以 CDN项目要黄,简直不能忍



最后
附带一些 缓存服务器大家测试
【注意:缓存服务器有区域和ISP限制,可能无法访问,例如电信的只能电信访问,联通的只能联通访问】

[ol]
  • 真实的
  • http://tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
  • 电信的
  • http://101.96.10.63/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
  • 联通的
  • http://120.52.51.64/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg
  • http://59.80.44.89/tb1.bdstatic.com/tb/cms/ngmis/images/file_1550729489332.jpg[/ol]复制代码

    加IP的就是运营商的缓存服务器,访问的内容和真实内容都是一致的
  • 回复

    使用道具 举报

    7

    主题

    628

    回帖

    1305

    积分

    金牌会员

    积分
    1305
    发表于 2019-2-21 23:06:57 | 显示全部楼层
    前排,运营商的Cache真的恶心
    回复

    使用道具 举报

    51

    主题

    1026

    回帖

    2253

    积分

    金牌会员

    积分
    2253
    发表于 2019-2-21 23:11:34 | 显示全部楼层
    你还漏了一个移动端手机浏览器缓存,那个更恶心,几天不更新都正常
    用户端
    围观者 发表于 2019-2-21 23:13

    既然如此,那就好好利用运营商的缓存服务器,能省不少钱呢

    移动表示几个链接中经过电信联通缓存的非常非常慢
    目前访问真实链接没跳转缓存,但是之前被缓存过一个apk,速度也没多块,不如https直链下载
    回复

    使用道具 举报

    41

    主题

    283

    回帖

    729

    积分

    高级会员

    积分
    729
    发表于 2019-2-21 23:13:14 | 显示全部楼层

    ghyghoo8 发表于 2019-2-21 23:32

    移动表示几个链接中经过电信联通缓存的非常非常慢
    目前访问真实链接没跳转缓存,但是之前被缓存过一个apk ...

    有些节点质量非常不错,而且支持三网访问,自己多找找

    直接在网站源文件里写成
    http://120.52.51.64/www.hostloc.com/uc_server/avatar.php?uid=4299&size=middle
    回复

    使用道具 举报

    78

    主题

    1469

    回帖

    3242

    积分

    论坛元老

    积分
    3242
    发表于 2019-2-21 23:17:24 | 显示全部楼层

    围观者 发表于 2019-2-21 23:37

    有些节点质量非常不错,而且支持三网访问,自己多找找

    直接在网站源文件里写成

    HTTP/1.0 301 Moved Permanently

    Location: https://www.hostloc.com/uc_server/avatar.php?uid=4299&size=middle

    围观者 发表于 2019-2-21 23:37

    有些节点质量非常不错,而且支持三网访问,自己多找找

    直接在网站源文件里写成

    实际无用,因为ISP的缓存服务器是不对内容做检查的

    所以有人用缓存服务器IP投毒,导致IP经常性被各种浏览器,QQ,360报毒和拦截

    如果用在网站上 会连带
    回复

    使用道具 举报

    71

    主题

    1602

    回帖

    3493

    积分

    论坛元老

    积分
    3493
    发表于 2019-2-21 23:19:26 | 显示全部楼层
    我记得之前有人通过这个缓存做大人站,效果非常好
    回复

    使用道具 举报

    13

    主题

    778

    回帖

    1671

    积分

    金牌会员

    积分
    1671
    发表于 2019-2-21 23:30:12 | 显示全部楼层

    蓝洛水深 发表于 2019-2-22 00:52

    我记得之前有人通过这个缓存做大人站,效果非常好



    1. 缓存有限制
    2. 不是全国所有ISP都联通的
    3. IP被黑名单

    实用性不大
    回复

    使用道具 举报

    114

    主题

    3620

    回帖

    7642

    积分

    论坛元老

    积分
    7642
    发表于 2019-2-21 23:32:43 | 显示全部楼层
    前景项目不能黄
    回复

    使用道具 举报

    41

    主题

    283

    回帖

    729

    积分

    高级会员

    积分
    729
    发表于 2019-2-21 23:13:00 | 显示全部楼层
    本帖最后由 dabiantai 于 2019-2-24 10:01 编辑

    在你的edge那里做一些策略让每次请求都不一样就行了。
    http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/hls/e0/de/33/e0de339142dc35521c2a36ee5c0f1b6a/
    1550972793
    /hls-250p31.ts

    在m3u8里动态添加随机字符串,在edge那里缓存的时候忽略添加的字符串。这样你的请求就不会命中运营商缓存,但是可以命中你的cdn缓存
    回复

    使用道具 举报

    101

    主题

    1812

    回帖

    4041

    积分

    论坛元老

    积分
    4041
    发表于 2019-2-21 23:37:26 | 显示全部楼层

    dabiantai 发表于 2019-2-24 09:58

    在你的edge那里做一些策略让每次请求都不一样就行了。
    http://59.80.44.82/hls-hw.xvideos-cdn.com/videos/ ...

    重点不是这个
    因为运营商缓存服务器是不遵守如何协议
    这种操作无意义,反而会增加CDN节点的负载

    比如加时间字段
    会产生2个问题
    1. 运营商缓存不更新 导致播放链接失效
    2. 体量问题,并发太高 (瞬间(豪秒级)都在请求热点内容)

    如果是伪静态模式 ISP强制缓存
    如果是字符串模式 ISP强制忽略

    暂时没好的解决方案
    试过很多方式, 联通的缓存是强制忽略任何header配置的expire time的

    所以如果文件名称不变
    像淘宝旺旺分发都会出现用户下载新版软件,结果下载的文件还是ISP缓存的旧版本
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-4-20 02:38 , Processed in 0.020273 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表