`
这个可以有
  • 浏览: 16891 次
文章分类
社区版块
存档分类
最新评论

阿里云 CDN HTTPS 最佳实践——TLS record size(五)

 
阅读更多

原理

TLS 协议由两层协议组成:TLS 握手协议和 TLS 记录协议(TLS Record),TLS Record 协议在 TLS 握手协议之下。下面是 SSL/TLS 的分层结构:

https5_1

所有的 TLS 上层数据(包含 TLS 握手协议消息以及更上层的应用协议数据)都由 TLS Record 来封装和传输。下面是 TLS Record 协议的消息封装流程:

https5_2

一个消息会在 TLS Record 协议层被分段,然后对每个分段分别压缩(已废弃)和加密,最后加上 TLS Record 协议头再通过网络层发送出去,在 Wireshark 中可以看到:

https5_3

可以看出 TLS/SSL 数据加解密是基于分段的,接收方收到一个完整的分段就可以解密,如果分段过大,那接收方必须要等到接收完整个分段的数据才能解密,当网络不好出现丢包、拥塞、重传等等情况下会严重影响时延,如果分段过小,头部负载比重就会较大,影响吞吐率。所以,怎么分段就比较关键,也就是 TLS Record Size 大小多少合适。这就涉及到两个重要的指标:时延和吞吐率。

  1. 如果 TLS Record Size 设置较大
    假如超过了 MTU,一个分段会被 TCP 层再次分段,拆分成多个包发送,那么时延也相应地增大,但由于记录协议头占比很小,吞吐率也增大。
  2. 如果 TLS Record Size 设置较小
    一个分段在 TCP 层没有被再次分段,由一个包发送出去,时延会比较小,但吞吐率也会下降。

所以,对时延敏感的域名,TLS Record Size 建议设置为略小于 MTU 的大小(粗算:MTU - TLS Record Header Length - TCP Header Length - IP Header Length)。对吞吐率敏感的域名,TLS Record Size 建议设置为 16k(上限)。如果同时兼顾时延和吞吐率的话,建议设置为 8k (经验值)。

但是,TCP 有拥塞控制机制,在 TCP 连接刚开始的慢启动阶段,拥塞窗口会比较小,这时较大的 TLS Record Size 会导致 TLS Record 片段被 TCP 分成多个包来发送,从而导致时延较大,可能就会影响网页的首屏时间。在整个 TCP 数据传输过程中,可能启动拥塞避免算法,也可能遇到数据丢失和重传的情况,然后又重新进入慢启动阶段。

因此,更好的做法是动态调整 TLS Record Size 的大小,而不是使用固定的值。在 TCP 连接初期使用较小的值,等传输速度上来之后再使用更大的值。

实现

nginx 本身支持 TLS Record Size 配置,但不支持动态调整,Cloudflare 实现了该功能(patch)。其算法原理是:

# 关键配置
ssl_dyn_rec_enable      on;
ssl_dyn_rec_size_lo     1369;
ssl_dyn_rec_size_hi     4229;
ssl_dyn_rec_threshold   40;
ssl_dyn_rec_timeout     1000ms;
  1. 对于一个新 TCP 连接,使用较小的 TLS Record Size 值(对应指令:ssl_dyn_rec_size_lo,默认值:1369)。
  2. 发送 40 个记录(对应指令:ssl_dyn_rec_threshold,默认值:40)之后,将 TLS Record Size 值调大到 4229(对应指令:ssl_dyn_rec_size_hi,默认值:4229)。
  3. 发送 80 个记录(2倍 threshold)之后,将 TLS Record Size 值调大到 16k(对应指令:ssl_buffer_size,默认值:16k)。
  4. 如果两次数据发送间隔超过 1000 ms,则将 TLS Record Size 值调小到 1369,然后重新从步骤 1 开始。

Tengine 也采用了 Cloudflare 的方式,并将这些配置项通过 lua ffi 接口的方式,让其在 lua 中可以动态设置,这样便可以很方便地在 CDN 配置管理后台根据域名的实际情况来动态配置了。CDN 配置管理后台配置界面截图如下(该功能没有开放到 CDN 用户控制台):

https5_4

分享到:
评论

相关推荐

    vuejs阿里云cdn部署插件

    Vue.js阿里云CDN部署插件就是将Vue.js应用与阿里云CDN服务相结合的工具,它可以帮助开发者更方便、快捷地将Vue.js项目部署到阿里云上。 Vue.js项目的部署通常涉及构建、上传和配置等多个步骤。通过使用这个特定的...

    阿里云CDN金融政企CDN最佳实践.pdf

    阿里云视频云产品架构师 南淼在2018云栖大会·上海峰会中做了题为《阿里云CDN-金融政企CDN最佳实践》的分享,就阿里云CDN、金融政企主要产品与解决方案、阿里云CDN 、阿里云CDN服务体系等方面的内容做了深入的分析。

    阿里云CDN加速配置

    阿里云CDN加速配置阿里云CDN加速配置阿里云CDN加速配置阿里云CDN加速配置阿里云CDN加速配置阿里云CDN加速配置

    阿里云CDN服务-常见问题.pdf

    "阿里云CDN服务-常见问题.pdf" 阿里云CDN服务是 Alibaba Cloud 提供的一种内容分发网络(Content Delivery Network,CDN),旨在帮助用户快速、安全、可靠地分发内容。下面是阿里云CDN服务的一些常见问题和解决方案...

    获取阿里云cdn域名的监控数据并用grafana展示

    阿里云CDN(Content Delivery Network)是阿里巴巴提供的一种全球分布式内容分发网络服务,用于加快静态资源和动态内容的访问速度。在这个项目中,我们将会使用Python编程语言来获取CDN域名的监控数据,然后将这些...

    阿里云CDN服务-常见问题-D.docx

    阿里云CDN服务-常见问题-D 阿里云CDN服务的优势包括: * 稳定快速:先进的分布式系统架构,节点储备量达国内近 500个,海外 30+ 个节点,充足的带宽存储资源。 * 高效的性能指标:95%+ 命中率,ms 级响应时间。 * ...

    阿里云cdn python3

    阿里云cdn 验证python3 版本 用于阿里云cdn的验证,

    阿里云CDN服务-产品简介-D.docx

    阿里云CDN(内容分发网络)是一种高效的内容传输服务,旨在通过遍布全球的边缘节点服务器群,替代传统的中心化WEB Server数据传输模式,以优化用户访问速度和降低网络拥塞。该服务采用智能对象热度算法,实现资源的...

    阿里云CDN服务-SDK手册-D.docx

    - 阿里云CDN在2016年6月30日的更新中增加了对直播录制的支持,提供了9个接口,用于管理直播流的录制任务,包括增删改查、索引文件的创建和查询,以及基于域名和流的查询来获取帧率和码率信息。 2. **直播流控功能*...

    阿里云CDN服务-API手册.pdf

    阿里云CDN服务-API手册.pdf

    阿里云CDN服务-购买指导.pdf

    阿里云CDN服务-购买指导.pdf

    阿里云CDN服务-API手册-D.docx

    阿里云CDN服务-API手册-D 本文档介绍了阿里云CDN服务的API手册,旨在帮助用户快速入门使用CDN服务。CDN服务提供了内容分发网络,用户可以使用本文档介绍的API对CDN服务进行相关操作。 CDN API概述 CDN API提供了...

    阿里云CDN相关术语及解释

    阿里云CDN相关术语及解释 阿里云CDN相关术语及解释是阿里云提供的一系列云解析服务的术语解释,涵盖了域名系统、域名解析、DNS记录、域名格式等多方面的知识点。以下是对阿里云CDN相关术语及解释的详细解释: 一、...

    阿里云CDN技术演进之路

    什么是CDN 阿里云CDN的特点和优势 历年技术架构 现有架构和实现

    阿里云sdk php开发包以及初始化案例和使用cdn模块查询uv,pv

    阿里云SDK(Software Development Kit)是为了方便开发者使用阿里云服务而设计的一套工具包,它提供了与阿里云各个产品交互的接口。对于PHP开发者来说,阿里云PHP SDK可以帮助他们通过编程方式快速接入并调用阿里云...

    阿里云OSS+CDN使用教程.zip

    阿里云OSS+CDN使用教程.zip 网站文件动静分离 加快访问速度

    阿里云《CDN排坑指南》.pdf

    "阿里云 CDN 排坑指南" 阿里云 CDN 排坑指南是 Alibaba Cloud 提供的...阿里云 CDN 排坑指南提供了详细的指南和实践经验,帮助开发者快速了解和掌握 CDN 的加速原理和缓存策略,快速实现网站和应用程序的加速和优化。

    阿里云CDN服务-快速入门.pdf

    阿里云CDN(内容分发网络)服务是用于提高网站内容加载速度和可用性的解决方案。通过在全球范围内分布的边缘节点缓存和分发内容,CDN能够减少延迟,减轻源服务器的压力,提升用户体验。以下是对“阿里云CDN服务-快速...

    阿里云CDN服务-产品简介.pdf

    阿里云CDN(内容分发网络)是一种基于云计算的分布式网络服务,旨在提高用户访问速度,缓解因Internet网络拥塞而带来的延迟问题。它通过将源内容发布到全球各地的边缘节点,配合智能调度系统,将用户的请求分配到离...

Global site tag (gtag.js) - Google Analytics