问题标签 [quic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 发送 UDP 数据包时忽略 Linux 上的路径 MTU
我正在实现DPLPMTUDerrno = EMSGSIZE
,当我发送的 UDP 数据包长于本地接口的 MTU 时,我想抑制 Linux 内核返回 -1 。我想避免在发送多个数据报时(尤其是在使用 时sendmmsg(2)
)处理错误处理的痛苦,每个数据报可能属于不同的连接。我宁愿让内核丢弃数据包,让应用程序 DPLPMTUD 逻辑找出 MTU。
ip(7)
有话要说:
然而,设置此选项不会产生预期的效果。这是说明问题的代码:
当我发送大于 MTU 的数据包时,sendto()
上面返回 -1 并errno
设置为EMSGSIZE
-- 正是我想要避免的。
有没有办法做我想做的事?
javascript - Chrome 和服务器之间的 QUIC 通信
我最近一直在研究 QUIC,并查看了不同的实现,例如Node.js 的aioquic和 QUIC。
为这些实现提供的所有示例似乎都是针对服务器到服务器的通信,或者至少我找不到任何可以在浏览器中使用的使用脚本的示例。
是否有任何关于如何在网络浏览器上从 Javascript 创建和打开 QUIC 连接的示例(例如 Chrome,因为它是目前“支持”QUIC 的少数浏览器之一)?
最后我想尝试的是文件上传和下载,但是使用 QUIC 在 Web 浏览器和服务器之间进行一般请求/响应通信的示例已经很有帮助。
此致
编辑:相关但未回答的问题:Open Quic (protocol) session via JS
pip - 'openssl/err.h':没有这样的文件或目录
我正在尝试在 Windows 上使用aioquic,但最初出现此错误pip install -e .
:
我通过 Chocolatey 安装了 openssl,但该文件似乎丢失了。有任何想法吗?
sctp - SCTP 真的能防止线头阻塞吗?
我已经了解 SCTP 大约十年了,虽然我还没有使用它,但我一直想使用它,因为它有一些有前途的(据称)功能:
- 多宿主
- 多路复用不带行头阻塞
- 同一连接上的混合订单/无序交付(又名关联)
- 没有TIME_WAIT
- 没有 SYN 泛洪
SCTP 旨在通过子流摆脱 HOL 阻塞,但其传输序列号 (TSN) 将所有数据块的传输耦合在一起。[...]因此,在 SCTP 中,如果一个数据包丢失,则在该丢失数据包之后的所有具有 TSN 的数据包都无法接收,直到重新传输。
那句话让我感到惊讶,因为:
- 消除线头阻塞是 SCTP 的既定目标
- SCTP 确实有一个每个流的序列号,请参见下面的 RFC 4960 引用,它应该允许每个流处理,而不管关联全局 TSN
- SCTP 已经在电信领域使用了近 2 年,那么怎么会错过呢?
在内部,SCTP 为 SCTP 用户传递给它的每条消息分配一个流序列号。在接收端,SCTP 确保消息在给定流中按顺序传递给 SCTP 用户。然而,虽然一个流可能被阻止等待下一个按顺序的用户消息,但来自其他流的传递可能会继续。
此外,还有一篇论文Head-of-line Blocking in TCP and SCTP: Analysis and Measurements实际测量了多路复用回波服务面对丢包时的往返时间,并得出结论:
我们的结果表明 [..] 少量 SCTP 流或 SCTP 无序模式可以避免这种线头阻塞。在大多数情况下,多个 TCP 连接的替代解决方案性能更差。
github - 在 ns-3 上构建 Quic 协议
我是使用 ns-3 的新手。我想测试 github 上提供的 quic 协议的某个自包含实现。如何将代码与 ns-3 集成以在不同条件下进行测试?
wireshark - Wireshark 不显示 QUIC 协议
使用 Wireshark 版本 3.2.5 时,无法在 QUIC 下捕获数据包,仅显示为 UDP。但是Wireshark文档显示支持QUIC?
quic - HTTP/3 QPACK 中重复编码器指令的目的是什么?
在 HTTP/3 QPACK 中有一条指令用于复制动态表中的现有条目;据说它用于避免添加对旧条目的引用,这可能会阻止插入新条目。
但是,我看不出这有什么帮助。
如果动态表没有足够的空间容纳新条目而不驱逐其他条目,并且将被驱逐的条目是不可驱逐的,则编码器不得将该条目插入到动态表中(包括现有条目的副本)。
为了确保不阻止编码器添加新条目,编码器可以避免引用接近驱逐的条目。编码器可以发出重复指令(第 4.3.4 节),而不是引用这样的条目,而是引用重复项。
(取自 IETF-QUIC-QPACK-DRAFT16)
这里的想法是,一旦一个字段通过了耗尽索引,我们想让它的存在优先级较低,所以我们会添加一个对它的引用,让任何新的请求都引用该引用,这样旧的字段就变得不被引用了它会被删除吗?在它被删除和添加新引用之间,那些中间请求可以填充到动态表中,否则会被阻塞?
谢谢你。
litespeed - Litespeed QUIC 启用
Ubuntu 20.04 LSWS 5.4.8
QUIC 在 WebAdmin 中工作,但不在任何虚拟主机上工作。如何在子域的虚拟主机中启用该功能。打开 UDP 端口,禁用防火墙。命令输出: 443 udp 监听, ufw 状态
有任何想法吗?
azure - 如何使用 Azure CDN 交付具有根域的整个站点?
我创建了 Azure CDN Verizon Premium。
通常,我从 CF DNS 指向我的服务器
使用这些设置,我可以访问我的网站(无代理)
我希望将 Azure CDN 用于根域。
我不喜欢使用www.mysitename.com
,但我喜欢使用根/裸域 (mysitename.com)
所以,我像这样改变了我的DNS:
感谢 Cloudflare 中的 CNAME 奉承
(该技术与 QUIC.Cloud CDN 一起使用 - 当我在 CF DNS 上使用他们的 NODE URL 时) 注意:Quic.cloud 仍处于测试阶段 - 但一项不错的服务 - 值得一试。
所以,我在 Azure CDN 中使用了相同的技巧(我不知道它是否有效)
将端点主机名放入浏览器后,出现 504 超时错误。如您所知,Azure 不允许在根域上使用 SSL 证书。
那么,我该如何解决这个问题呢?
我到底想要什么
一个动态的 CDN,而不是传统的 URL 映射 CDN。
需要将整个文件和文件夹交付到边缘位置(Verizon 和 Akamai 动态交付)
为什么不喜欢使用 URL 映射
根域上的站点和子域中的 CDN 是可能的。
例如:站点 URL mysite.com 和 CDN URL:cdn.mysitename.com(目前我在几个站点中使用此设置)
但是,真正的问题是:
CDN URL 将很快,文件可以交付。但是,网站根域,仍然从源服务器传递。
因此,当来自印度的用户访问在美国托管的网站时,TTFB 会延迟。
你找到解决办法了吗?
是的,Cloudflare 和 QUIC 是最好的解决方案,因为它们都通过 DNS 级别工作。
Cloudflare 要求我们将我们的域指向他们的 NS 并且他们动态交付(如果启用了代理)
每个国家的 TTFB 都比原产地好(我用 CF 测试过)
但为什么我不使用 Cloudflare?
Cloudflare 存在一些 SEO 问题。我在很多场合都面对过很多次。CF速度很快,但突然掉了我的排名。
为什么我不使用 QUIC.Cloud?
我在一些小型网站上使用 Quic。它运作良好。
QUIC 通过将 CNAME 指向他们的 NODE URL 来工作(他们的 DNS 解决方案正在开发中)。整个站点将通过其节点交付。
但是,它仍处于测试阶段,无法像我预期的那样始终满足我的要求。也许他们会尽快修复小错误。
那么,你想要什么?
我需要通过 CDN 交付我的整个网站。所以我可以在每个位置增加 TTFB。根域的 CDN 是解决方案(我认为是这样)
CNAME 到端点主机名会起作用吗?
在我的 DNS 或 Azure CDN 设置中,我有什么遗漏吗?
udp - mitmproxy 可以解码 QUIC 吗?如果不支持,会支持吗?
mitmproxy 未来会支持 QUIC 流量吗?我认为当前版本不支持它,至少从我的试验来看。已经有选择了吗?或者这将是根本不可能的事情?