当前位置:首页 > 芯闻号 > 厂商动态
[导读] CDN 行业的技术出发点就是把用户访问网站业务的时间缩短,再缩短。因此,CDN服务商都尽可能把服务节点部署到离最终网民接近的网络节点上。除了从系统部署方式上提高网民访问的速度,减少网络传输的时间之外,在网民

 CDN 行业的技术出发点就是把用户访问网站业务的时间缩短,再缩短。因此,CDN服务商都尽可能把服务节点部署到离最终网民接近的网络节点上。除了从系统部署方式上提高网民访问的速度,减少网络传输的时间之外,在网民用于访问网站的网络协议上也在不断地演进变化。本文将根据蓝汛对QUIC协议的应用和测试经验,在该协议的开发、配置和启动等技术环节进行分享。

由SPDY到HTTP/2

2009年,Google在 “Make the Web faster” 的目标下,针对HTTP协议提出了SPDY。当时,提出SPDY的目标是在HTTP基础上,将页面加载的速度提高50%,同时也将部署未来新的应用协议的复杂性降低。

SPDY被证明是成功的,因为它在以下4个方面提升了整体的性能:

多路复用:通过同一个域名使用1个或者相对于HTTP/1.1更少的TCP连接数,SPDY避免了头部阻塞(HOL),同时由于减少了TCP连接,也就降低了新开TCP连接的系统开销。

头部压缩:通过对HTTP Header中反复发送的字段进行压缩,通过SPDY之后,请求头和响应头的体积都大大减小。

请求的优先级区分:高优先级的资源被优先请求,因此,对于页面解析的关键元素也就被优先下载展示。

Server Push / Server Hint: Server Push 在用户端还没有请求的前提下,由服务端推送相关内容给用户端;Server Hint是在服务端将一些资源标记了优先级,用户端在请求的时候可以根据目前的带宽情况(限制情况)决定是否下载。

因为SPDY在针对HTTP/1.x上性能的提升,IETF HTTP 工作组基于SPDY通过HTTP/2来优化HTTP协议。

HTTP/2 借鉴了SPDY的优化策略和思路,然而,两者之间也有不同点:

HTTP/2和SPDY的主要区别在于头部压缩的算法: HTTP/2使用的是HPACK压缩的方式,而SPDY使用的是DEFLATE方式压缩。

尽管如此,HTTP/2和SPDY还都是基于TCP作为连接层的基础,因此,性能的提升都是在同一个基础之上的。TCP协议饱受诟病的那些拥塞和丢包处理的方式影响着它们的性能发挥。

由TCP到UDP,QUIC的提出

QUIC 是(Quick Udp Internet Connection)的首字母缩写。是由 Google 提出的使用 UDP 进行多路并发传输的协议。

QUIC相比上文中 TCP+TLS+HTTP/2 组合有如下优势 :

减少了 TCP 三次握手及 TLS 握手时间。

改进的拥塞控制。

避免队头阻塞的多路复用。

连接迁移。

前向冗余纠错。

根据Jana Iyengar在2016年IETF柏林会议上针对QUIC的架构(如下图)采用QUIC采用UDP替代TCP实现的传输方式相对于TCP+TLS+HTTP/2的架构有了很大的变化。

 

CDN更快一步,蓝汛QUIC协议的应用与测试

 

目前看,早期在Google应用QUIC协议的业务效果相当不错,93%的业务没有因为QUIC应用不成功而回滚到原先架构;应用QUIC协议的业务降低 了5%的页面加载时间,而Youtube应用QUIC后,播放中再缓存降低了30%。

QUIC开发和测试

QUIC测试开发环境搭建:目前国内有的厂商已经在部分应用平台使用了QUIC协议,然而,支持QUIC的公有云目前还都没有。因此,我们如果需要测试QUIC的应用和平台,还需要自己进行搭建。下面,就将我们在内部进行QUIC初期测试时候的经验分享给大家。

Chrome浏览器打开QUIC:搭建一个最简单的实验环境,我们需要一个支持QUIC的server端和支持QUIC的客户端。

支持QUIC的客户端,最简单直接的方式就是采用Chrome浏览器。通常而言,Chrome浏览器还没有打开QUIC协议的支持,因此,需要通过以下步骤来操作:

在Chrome地址栏输入chrome://flags访问实验性的功能开关

在页面中搜索QUIC关键字

将QUIC的开关由“Default”变为“Enable”

重启Chrome

 

CDN更快一步,蓝汛QUIC协议的应用与测试

 

QUIC协议打开后,要检视相关的连接和配置需要通过在Chrome浏览器地址栏输入chrome://net-internals/#quic 来打开相关的页面。

 

CDN更快一步,蓝汛QUIC协议的应用与测试

 

由这个截图,我们可以看到,目前chrome(69)的QUIC版本是v43,这是个相当新的版本,当然也会对QUIC的server端选择造成困扰。

Caddy Server支持QUIC:Caddy 和我们常用的Apache、Nginx一样,是一个Web Server,而且是使用go语言开发的。相对于后两者,它具备以下一些优点:

内建对HTTP/2的支持

对Let'sencrypt的支持

对QUIC支持

对多核系统的支持

易于部署

对IPv6的支持

其中第2、第3点是满足我们后面的实验的重要功能需求。

安装Caddy server

我们采用的是Centos7系统,安装Caddy使用直接从getcaddy.com直接拉取编译好的版本:

$ curl -s https://getcaddy.com | bash

脚本执行的过程中,需要提供sudo权限让caddy程序安装到/usr/local/bin目录下。

等脚本执行完我们需要为caddy创建一个没有登录权限的用户,如“caddy”:

$ sudo adduser -r -d /var/www -s /sbin/nologin caddy

然后我们要建立www的目录,配置文件caddyfile的目录,及其他一些相关权限:

$ sudo mkdir /etc/caddy

$ sudo chown -R root:caddy /etc/caddy

$ sudo touch /etc/caddy/Caddyfile

$ sudo mkdir /etc/ssl/caddy

$ sudo chown -R caddy:root /etc/ssl/caddy

$ sudo chmod 0770 /etc/ssl/caddy

$ sudo mkdir /var/www

$ sudo chown caddy:caddy /var/www

配置caddy的系统服务

由于我们使用的是Centos 7,使用的是systemd管理系统服务。方便的是,caddy的systemd服务脚本可以从以下地址下载:

$sudo curl -s

https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service-o /etc/systemd/system/caddy.service

我们需要修改一下caddy的service文件:

/etc/systemd/system/caddy.service当中User和Group信息,将它们改为caddy:

; User and group the process will run as.

User=caddy

Group=caddy

reload一下,以使修改生效:

$ sudo systemctl daemon-reload

现在,在启动caddy之前,我们还需要配置一下Let'sencrypt的自动TLS。

配置Let's encrypt自动TLS

要通过Caddy使用Let'sencrypt的自动TLS,要满足以下条件:

Caddy需要绑定443端口,同时,这个端口要从外网可访问

Caddy HTTP只能设定为80端口,同时,TLS不能从caddy的配置里关掉

Caddy里面的server设置的域名必须是真实可解析的域名,不能使localhost,证书将绑定这个域名

Caddy必须设定用于私钥恢复的邮件地址

我们来配置/etc/caddy/Caddyfile来满足要求:

假设我们的域名是quictesting.net,那么我们的配置文件可以是这样:

quictesting.net {

root /var/www

gzip

tls admin@quictesting.net

}

别忘了在/var/www下面放上一个index.html文件,比如Hello World 。

$ sudo systemctl restart caddy

启动Caddy,然后我们再使用Chrome来访问,可以观察header信息:

说明Let'sencrypt的HTTPS已经起作用了。然而,这个时候,QUIC还没有启动呢。

启动Caddy QUIC

通过修改systemd的服务启动选项来启动QUIC服务。

别忘了reload daemon以保证配置生效。这时候,我们再用chrome来访问,看看header的变化。发现在响应头多了一行:

 

CDN更快一步,蓝汛QUIC协议的应用与测试

 

表明Caddy现在系统的QUIC版本是39。因此,这个时候,我们用Chrome去看QUIC信息,发现没有active connection,原因就在于此。

解决方案:关于升级Caddy 使用的libquic,我们将在下期CC-Tech与您分享。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭