回答
收藏
分享
举报
Nginx 动态TLS record size
提问于2020-11-12 21:27

浏览 3.8k

文章标签

陶辉老师  Nginx 密码学直播

https://blog.cloudflare.com/optimizing-tls-over-tcp-to-reduce-latency/

Nginx 动态 TLS record size cloudflare 的优化博客如上


TLS record size 最大 16K,最小应该是16B?

这个动态调节 record size 是怎么做到的(基于什么输入信息来调节),动态调节之前,这个record size nginx是怎么做的



直播提问时,时间来不及了,太紧张,问题没打好。。。

已修改于2023-03-09 02:51



写下您的回答
发表回答
全部回答(1)

按点赞数排序

按时间排序

1、分组是基于16字节128比特位,这与传输是两回事。传输时,会将许多分组放在一起传输,这就是tls record size,openssl提供有设置的函数,而Nginx则将函数值通过ssl_record_size暴露在nginx.conf中,默认为16KB。

2、cloudflare中设置了lo初始tls record size,默认是1个MSS,当发完ssl_dyn_rec_threshold 个record后,将上升到ssl_dyn_rec_size_hi 默认为3个MSS,再发完ssl_dyn_rec_threshold 个record,最终上升到ssl_buffer_size即16KB。在这些过程中,如果连接空闲时间超过1秒,那么record将回复到ssl_dyn_rec_size_lo

赞同

1

回复举报

回答于2020-11-15 09:11



回复陶辉
回复
清荣回复了

赞,老师,这下完全看明白了

0

回复举报

回答于2020-11-15 04:03



回复清荣
回复
提问者
清荣
这家伙很懒还未留下介绍~
0
文章
2
问答
1
粉丝
相关问答

学习如何使用Nginx,可以参考我在极客时间上的课程《Nginx核心知识100讲》,我通过155节视频课,从模块、部署、性能、原理上系统地详解了Nginx,而且视频课有个好处,可以直接敲代码演示,相信对你有帮助。

如果你开始学习Nginx模块开发,那么可以看下我的书《深入理解Nginx:模块开发与架构解析》。

书哪里都有,我列下《Nginx核心知识100讲》的二维码吧:微信图片_20200520201950.jpg

点赞 0
浏览 3.8k

没有回答,我就只能自己回答了。

查了下代码,进行gdb跟踪调试后发现:这个主要是因为,每个worker单独维护一个前后端 “链路”关联的四元组信息,在多个worker的情况下,不同的worker保存“链路”关联信息相互独立,彼此不共享。因此即使是相同的IP和端口发来的消息,只要是分配到不同的worker进行处理,都有可能查不到之前的“链路”关联信息,从而无法复用。


解决办法:

1. 单worker配置(性能可能偏低)

2. 修改代码,使用共享内存保存已有的前后端“链路”关联信息,不同worker之间共享结果

点赞 0
浏览 3.2k