CND加速原理和游戏加速原理

CND加速原理和游戏加速原理

Posted by Ted on March 13, 2021

一、普通的HTTP请求

1.1HTTP请求

一次完整的HTTP请求所经历的步骤:

  1. DNS解析(通过访问的域名找出其IP地址,递归搜索)
  2. HTTP请求,当输入一个请求时,建立一个Socket连接发起TCP的3次握手
  3. 如果是HTTPS请求建立连接后,则会有安全认证。
  4. 客户端向服务器发送请求命令(一般是GET或POST请求)
  5. 客户端发送请求头信息
  6. 服务器发送应答头信息
  7. 服务器向客户端发送数据
  8. 服务器关闭TCP连接(4次挥手)
  9. 客户端根据返回的HTML,CSS,JS进行渲染

1.2DNS解析

而在DNS解析过程中,如果要访问的网站名为:”baidu.com”,客户端首先会在本机的hosts文件和hosts缓存中查找该域名对应的IP地址;如果本机中没有此信息,则会到我们的本地DNS进行询问该域名对应的IP地址;如果本地DNS中仍然没有该域名的IP信息时,则会由本地DNS依次向根DNS顶级域DNS权威DNS进行询问,最终本地DNS将IP地址发送给客户端。客户端通过IP地址向远程的源站服务器发出HTTP请求并获取相应的数据内容。

以上是通过DNS的迭代解析模式获取域名对应的IP地址并发送HTTP请求的过程。源站的提供商通过配置权威DNS将源站的域名与提供服务的服务器主机进行绑定,使客户端通过DNS服务可以顺利地获取源站域名对应的IP地址并通过IP地址与源站进行通信。

img

二、CDN

2.1CDN简介

CDN(Content Delivery Network,内容分发网络,源站内容(image、html、js、css等) 这个属于内容分发)是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容。CDN服务缩短了用户查看内容的访问延迟,提高了用户访问网站的响应速度与网站的可用性,解决了网络带宽小、用户访问量大、网点分布不均等问题。

CDN 诞生于二十多年前,随着骨干网压力的逐渐增大,以及长传需求的逐渐增多,使得骨干网的压力越来越大,长传效果越来越差。于是在 1995 年,MIT 的应用数学教授 Tom Leighton 带领着研究生 Danny Lewin 和其他几位顶级研究人员一起尝试用数学问题解决网络拥堵问题。

他们使用数学算法,处理内容的动态路由安排,并最终解决了困扰 Internet 使用者的难题。后来,史隆管理学院的 MBA 学生 Jonathan Seelig 加入了 Leighton 的队伍中,从那以后他们开始实施自己的商业计划,最终于 1998 年 8 月 20 日正式成立公司,命名为 Akamai。

同年 1998 年,中国第一家 CDN 公司蓝汛 ChinaCache成立。

2.2为什么有CDN

当下的互联网应用都包含大量的静态内容,但静态内容以及一些准动态内容又是最耗费带宽的,特别是针对全国甚至全世界的大型网站,如果这些请求都指向主站的服务器的话,不仅是主站服务器受不了,单端口500M左右的带宽也扛不住,所以大多数网站都需要CDN服务。

根本上的原因是,访问速度对互联网应用的用户体验、口碑、甚至说直接的营收都有巨大的影响,任何的企业都渴望自己站点有更快的访问速度。而HTTP传输时延对web的访问速度的影响很大,在绝大多数情况下是起决定性作用的,这是由TCP/IP协议的一些特点决定的。物理层上的原因是光速有限、信道有限,协议上的原因有丢包、慢启动、拥塞控制等。

这就是你使用CDN的第一个也是最重要的原因:为了加速网站的访问。

除了加速网站的访问之外,CDN还有一些作用:

  • 为了实现跨运营商、跨地域的全网覆盖

互联不互通、区域ISP地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问。CDN加速可以覆盖全球的线路,通过和运营商合作,部署IDC资源,在全国骨干节点商,合理部署CDN边缘分发存储节点,充分利用带宽资源,平衡源站流量。阿里云在国内有500+节点,海外300+节点,覆盖主流国家和地区不是问题,可以确保CDN服务的稳定和快速。

  • 为了保障你的网站安全

CDN的负载均衡和分布式存储技术,可以加强网站的可靠性,相当无无形中给你的网站添加了一把保护伞,应对绝大部分的互联网攻击事件。防攻击系统也能避免网站遭到恶意攻击。

  • 为了异地备援

当某个服务器发生意外故障时,系统将会调用其他临近的健康服务器节点进行服务,进而提供接近100%的可靠性,这就让你的网站可以做到永不宕机。

  • 为了节约成本

投入使用CDN加速可以实现网站的全国铺设,你根据不用考虑购买服务器与后续的托管运维,服务器之间镜像同步,也不用为了管理维护技术人员而烦恼,节省了人力、精力和财力。

  • 为了让你更专注业务本身

CDN加速厂商一般都会提供一站式服务,业务不仅限于CDN,还有配套的云存储、大数据服务、视频云服务等,而且一般会提供7x24运维监控支持,保证网络随时畅通,你可以放心使用。并且将更多的精力投入到发展自身的核心业务之上。

三、CDN加速原理

CDN将我们对源站的请求导向了距离用户较近的缓存节点,而非源站。

在DNS解析域名时新增了一个全局负载均衡系统(GSLB),GSLB的主要功能是根据用户的本地DNS的IP地址判断用户的位置,筛选出距离用户较近的本地负载均衡系统(SLB),并将该SLB的IP地址作为结果返回给本地DNS。SLB主要负责判断缓存服务器集群中是否包含用户请求的资源数据,如果缓存服务器中存在请求的资源,则根据缓存服务器集群中节点的健康程度、负载量、连接数等因素筛选出最优的缓存节点,并将HTTP请求重定向到最优的缓存节点上。

img

为了更清晰地说明CDN的工作原理,下面以客户端发起对”join.qq.com/video.php”的HTTP请求为例进行说明:

  1. 用户发起对”join.qq.com/video.php”的HTTP请求,首先需要通过本地DNS通过”迭代解析”的方式获取域名”join.qq.com”的IP地址;
  2. 如果本地DNS的缓存中没有该域名的记录,则向根DNS发送DNS查询报文;
  3. 根DNS发现域名的前缀为”com”,则给出负责解析com顶级DNS的IP地址;
  4. 本地DNS向顶级DNS发送DNS查询报文;
  5. 顶级DNS发现域名的前缀为”qq.com”,在本地记录中查找负责该前缀的权威DNS的IP地址并进行回复;
  6. 本地DNS向权威DNS发送DNS查询报文;
  7. 权威DNS查找到一条NAME字段为”join.qq.com”的CNAME记录(由服务提供者配置),该记录的Value字段为”join.qq.cdn.com”;并且还找到另一条NAME字段为”join.qq.cdn.com”的A记录,该记录的Value字段为GSLB的IP地址;
  8. 本地DNS向GSLB发送DNS查询报文;
  9. GSLB根据本地DNS的IP地址判断用户的大致位置为深圳,筛选出位于华南地区且综合考量最优的SLB的IP地址填入DNS回应报文,作为DNS查询的最终结果;
  10. 本地DNS回复客户端的DNS请求,将上一步的IP地址作为最终结果回复给客户端;
  11. 客户端根据IP地址向SLB发送HTTP请求:”join.qq.com/video.php“;
  12. SLB综合考虑缓存服务器集群中各个节点的资源限制条件、健康度、负载情况等因素,筛选出最优的缓存节点后回应客户端的HTTP请求(状态码为302,重定向地址为最优缓存节点的IP地址);
  13. 客户端接收到SLB的HTTP回复后,重定向到该缓存节点上;
  14. 缓存节点判断请求的资源是否存在、过期,将缓存的资源直接回复给客户端,否则到源站进行数据更新再回复。

其中较为关键的步骤为6~9,与普通的DNS过程不同的是,这里需要服务提供者(源站)配置它在其权威DNS中的记录,将直接指向源站的A记录修改为一条CNAME记录及其对应的A记录,CNAME记录将目标域名转换为GSLB的别名,A记录又将该别名转换为GSLB的IP地址。通过这一系列的操作,将解析源站的目标域名的权力交给了GSLB,以致于GSLB可以根据地理位置等信息将用户的请求引导至距离其最近的”缓存节点”,减缓了源站的负载压力和网络拥塞。

CDN节点有缓存场景

HTTP请求流程说明:

1、用户在浏览器输入要访问的网站域名,向本地DNS发起域名解析请求。

2、域名解析的请求被发往网站授权DNS服务器。

3、网站DNS服务器解析发现域名已经CNAME到了www.example.com.c.cdnhwc1.com。

4、请求被指向CDN服务。

5、CDN对域名进行智能解析,将响应速度最快的CDN节点IP地址返回给本地DNS。

6、用户获取响应速度最快的CDN节点IP地址。

7、浏览器在得到速度最快节点的IP地址以后,向CDN节点发出访问请求。

8、CDN节点将用户所需资源返回给用户。

img

CDN节点无缓存场景

HTTP请求流程说明:

1、用户在浏览器输入要访问的网站域名,向本地DNS发起域名解析请求。

2、域名解析的请求被发往网站授权DNS服务器。

3、网站DNS服务器解析发现域名已经CNAME到了www.example.com.c.cdnhwc1.com。

4、请求被指向CDN服务。

5、CDN对域名进行智能解析,将响应速度最快的CDN节点IP地址返回给本地DNS。

6、用户获取响应速度最快的CDN节点IP地址。

7、浏览器在得到速度最快节点的IP地址以后,向CDN节点发出访问请求。

8、CDN节点回源站拉取用户所需资源。

9、将回源拉取的资源缓存至节点。

10、将用户所需资源返回给用户。

img

CDN适用场景

  • 网站站点/应用加速

通俗讲就是static 内容加速,静态内容加速,如:html image js css 等

  • 视音频点播/大文件下载分发加速

基本上都是视频点播,MP4、flv等视频文件,例如国内的优酷、土豆、腾讯视频、爱奇艺都是一样。

  • 视频直播加速

视频直播加速,流媒体切片、转码、码流转换等等。

熊猫TV、斗鱼、淘宝直播

  • 移动应用加速

移动APP更新文件(apk文件)分发,移动APP内图片、页面、短视频、UGC等内容的优化加速分发。

ios、安卓 端 APP 、微信小程序、支付宝小程序等。

四、网游加速原理

4.1网络质量指标

网游加速的目的是为了让个人用户能够快速地连接到游戏服务器,让用户游戏更流畅。常用的衡量指标如下:

(1)网络延迟(delay)

它定义为信号从网络的一端(如玩家客户端)到另一端(如游戏服务器)所花费的时间。基于网络延迟,游戏卡顿情况可以简单分为以下级别:

1~30ms:极快,几乎察觉不出有延迟,玩任何游戏速度都特别顺畅

31~50ms:良好,可以正常游戏,没有明显的延迟情况

51~100ms:普通,对抗类游戏在一定水平以上能感觉出延迟,偶尔感觉到停顿

100ms~200ms:较差,无法正常游玩对抗类游戏,有明显卡顿,偶尔出现丢包和掉线现象

200ms~500ms:很差,访问网页有明显的延迟和卡顿,经常出现丢包或无法访问

>500ms:极差,难以接受的延迟和丢包,甚至无法访问网页

>1000ms:基本无法访问

(2)丢包率(Loss Tolerance或Packet Loss Rate)

它定义为测试中所丢失数据包数量占所发送数据组的比率。计算方法是:“(输入报文-输出报文)/输入报文*100%”。丢包率与数据包长度以及包发送频率相关。通常,千兆网卡在流量大于200Mbps时,丢包率小于万分之五;百兆网卡在流量大于60Mbps时,丢包率小于万分之一。

(3)每秒传输帧数FPS(frames per second)

它定义为画面每秒传输的帧数,可以理解为屏幕的刷新率,通常不低于30帧/秒。但达到60帧/秒以上,人眼就分别不出来了,也就是说60帧/秒和200帧/秒在人眼看来是完全没区别的。一块高性能的显卡有助于数据帧的处理。

其它描述网络性能的指标还包括,速率、带宽、网络带宽积、吞吐率等。

4.2网游加速方式

网游加速器主要是在骨干网发挥作用,为了提升网络互联速度,网游加速器厂商专门搭建或租用了高带宽的双线机房,架设多个节点服务器,编写网络加速器客户端,借助节点服务器来高效完成玩家的跨网连接游戏服务器请求。网络加速器客户端能够自动识别用户的网络线路类型(电信或联通),自动选择速度最快的节点服务器进行数据转发,从而达到数据加速作用。

网游加速可以采用两种方式来实现。

其一是VPN

它需要部署双线VPN服务器作为加速节点,用于电信和联通之间的自动快速切换。客户端通过加速服务器自动选择速度最快的服务器。它需要拨号连接到VPN服务器并获取一个虚拟IP地址,通过修改路由表的方式,将指定进程的网络访问路由到虚拟IP上,而其余地址仍经过原默认路由途径访问。

其二是代理服务器。

它通过部署SOCKS5代理服务器作为加速节点,使得客户端能够自动选择最快的代理服务器作为当前的转发节点。在客户端,该方式主要采用LSP技术,在用户的主机安装分层协议。当在游戏客户端调用connect函数试图连接游戏服务器时,LSP将该连接重定向到代理服务器,并采用SOCKS5协议规范与代理服务器进行数据协商,由代理服务器来连接真正的游戏服务器,最后将游戏服务器的数据原封不动转发给用户或将用户的数据原封不动转发给游戏服务器。

4.3网游加速应用

加速器服务提供商有一台高速服务器连接游戏服务器,延时极低,然后当地加速器客户端通过添加lsp或vpn的方法!让游戏历程连接到加速器服务商的服务器上,这样就即是别的开发了一条人很少的通道,游戏的重要延时就是用户盘算机和加速器服务器之间的延时了。

迅游手游加器的加速原理是:

利用VPN技术,用户通过一 台登 陆服务器用加速软件商提供的账号密码拨号登 陆到 一台具有双线带宽的服务器上,并与之建立连接并改变当前网络环境。在访问的时候,将本机访问的目标(例如:一个网址)通过节点服务器转发一次,从而完成加速效果。

Anycas加速:

Anycast 的 IP 能起到游戏加速器的作用,游戏请求就近进入腾讯云,走腾讯云的内网专线到达游戏服务器,极大缩短经过的公网路径,减少了延时、抖动、丢包。此外跟传统加速比,IP 入口无需额外部署流量接收设备,且IP无需区分地域,简化了 DNS 部署。