quic
文章平均质量分 86
kph_Hajash
三年服务端(直播推拉流)经验、三年客户端(网络库基础组件)经验
展开
-
chromium 项目单测调试经验
1、单测chromium 原生的单测程序能尽早地暴露我们在对网络库进行定制化开发过程中会引发的 Bug,因此认真对待单测可为网络库定制化开发保驾护航。1.1 确认代码迁移引起的 case跑 NQE、QUIC 迁移后的统一网络库的单测程序 net_unittests,出现较多 fail 和 少数 crash 的 case; 从 fail case 看,与迁移的代码看起来无直接关联,因此直接阅读源码来定位原因显得较为困难且耗时可能比较长;那么首先要做的是,确认这些 case 是因为代码迁移引起的,所以需原创 2021-06-19 12:22:02 · 1055 阅读 · 2 评论 -
Quic 客户端加密握手写流程及 QUIC packet 的构造过程
先来看 2:WriteOrBufferData()该函数在三种情况下无动作,即非 fin 包,但是待发数据为空fin 包已经缓存了,说明理论上不再有数据需要发送了写端已经关闭从名字可以看出,该函数要么写数据要么缓存数据。实际上是先将待发数据缓存到 stream 对象的 send_buffer 中,然后再发送。这里用到了宏 GetQuicReloadableFlag(flag),它又用到了另一个宏 RELOADABLE(flag):GetQuicReloadableFlag(flag) .原创 2021-02-02 17:24:57 · 2007 阅读 · 0 评论 -
chromium 中 quic 模块警报器 QuicAlarm 介绍
1. 位置2. 构成3. 用法3.1 测试用例3.2 实际应用——以 QuicConnection 类为例3.2.1 ack_alarm_ 构建3.2.2 QuicConnection 的使用4. 总结1. 位置该类的定义在 quic/src/net/quic/core/quic_alarm.h 中。2. 构成该类是一个虚基类。构造函数只有一个:explicit QuicAlarm(QuicArenaScopedPtr delegate);上面 explicit .原创 2021-02-02 17:08:00 · 545 阅读 · 0 评论 -
QUIC BBR Cubic 效果对比【无线场景】
【兄弟篇:有线场景下的对比】TCP 在较高丢包率场景不能较好的工作,因此对比试验不包含 TCP,只对比 QUIC-cubic 和 QUIC BBR 在不同丢包率、延时场景下的上传时长(单位:秒),上传文件大小为 7.6M,网络环境为办公室无线网络,测试机器为 17 款 MacBook pro 13-inch。实验数据分析:1、在无丢包且延时小于 10ms 场景下,bbr 相比 cubic 并不占优势;2、根据实验 3,在无丢包、高延时场景下,bbr 与 cubic 都变得较差,但 bbr 较好于 c原创 2020-06-18 16:55:28 · 2401 阅读 · 0 评论 -
QUIC BBR Cubic 效果对比【有线场景】
TCP 在较高丢包率场景不能较好的工作,因此对比试验不包含 TCP,只对比 QUIC-cubic 和 QUIC BBR 在不同丢包率、延时场景下的上传时长(单位:秒),上传文件大小为 7.6M,网络环境为北京7层办公室有线网络。实验数据分析:1、根据实验 1,未设置丢包模拟时,quic bbr 的稳定性和上传速度均好于 quic cubic;2、根据实验 2,在丢包率和延时均增大时,quic bbr 和 quic cubic 表现均变差,但前者的稳定性和速度仍优于后者3、对比实验 2 和实验 4原创 2020-06-18 16:39:24 · 2422 阅读 · 6 评论 -
【翻译】ietf-quic-draft-24: 9. Connection Migration
英文原文链接: 9. Connection Migration 连接 ID 的使用允许连接在端点改变地址(IP和端口)时可以继续使用,比如发生了网络切换。这一节描述发生地址改变的一端的处理过程。 QUIC 的设计依赖与在握手期间保持一个固定的地址。端点不可以在握手完成之前开始连接迁移(详见 QUIC-TLS 4.1.2)。 如果在握手期间对端发送了传输参数 disable_ac...原创 2020-01-11 14:34:11 · 485 阅读 · 0 评论 -
理解传输协议支持更多选择确认段时能 keep more bytes on the wire
最近重读谷歌 2017 年发表的 QUIC 论文时,针对 QUIC 支持更多选择确认段这一特性,提到由于该特性 QUIC 可以 keep more bytes on the wire,我一开始的理解是更多选择确认段应该是让发送端能更具体的知道哪些包丢了,从而重发这些包,避免重发冗余的包,因而觉得应该是 less bytes 而不是 more bytes。因此尝试搜索资料或者想前辈请教,最后得知...原创 2020-01-09 13:57:04 · 271 阅读 · 0 评论 -
【翻译】ietf-quic-draft-24: 8. Address Validation
Address validation is used by QUIC to avoid being used for a traffic amplification attack. In such an attack, a packet is sent to a server with spoofed source address information that identifies a vi...原创 2019-12-26 00:57:57 · 331 阅读 · 0 评论 -
【翻译】ietf-quic-draft-24: 7. Cryptographic and Transport Handshake
A connection ID is used to ensure consistent routing of packets, as described in Section 5.1. The long header contains two connection IDs: the Destination Connection ID is chosen by the recipient...原创 2019-12-25 01:00:49 · 362 阅读 · 0 评论 -
拉取 chromium 指定版本的仓库代码
在编译指定版本(比如 75.0.3770)的 cronet-ios 时,总是出现下图的错误:主要错误内容为:ERROR at //third_party/protobuf/proto_library.gni : Only source, header, and object files belong in the sources of a static_library is not one...原创 2019-07-26 16:39:48 · 2029 阅读 · 6 评论 -
在下载 chromium 源码时错误汇总
错误内容如下:package_version: Could not download URL (https://storage.googleapis.com/nativeclient-archive2/toolchain/9f62c3ead52424e10ebd520213a8f36e02b84377/sysroot_arm_trusted_precise.tgz): <urlopen e...原创 2019-07-23 21:21:45 · 2164 阅读 · 0 评论 -
Cronet 库编译指南
文章目录1、获取源码2、编译3、生成的文件4、错误记录参考链接Cronet 库是谷歌开发的移动端网络库。支持 HTTP、HTTP/2 以及 QUIC 协议。支持 Android 和 iOS 平台。其编译工具是 gn 和 ninja,类似于 cmake 与 make 的关系。下面介绍 Cronet 库的编译及编译注意事项。1、获取源码iOS 的必须在 mac 下编译,Android 必须要...原创 2019-06-18 13:36:03 · 4049 阅读 · 0 评论 -
详解 gQUIC 加密握手算法(quic-crypto)中共享密钥的生成过程
1、基本概要QUIC 传输的数据几乎都是要加密的,关于加密算法这里不做介绍,加密必然需要用到密钥;QUIC 中的加密密钥有两个 initial key 和 forword-secure key。前者用于实现 0-RTT 的握手,后者则用于握手成功以后整个会话的数据加密;QUIC 的密钥使用 Diffe-Hellman 算法生成;2、解析Diffe-Hellman 算法的密钥生成过...原创 2019-12-17 23:14:21 · 7924 阅读 · 4 评论