Skip to content

[Feature]: 支持 RFC 9287:Greasing the QUIC Bit #834

Description

@qisefengzheng

Before request a new feature

  • I have searched the issues of this repository and believe that this is not a duplicate.

Describe the feature you'd like supported

RFC 9287 定义了一种为 QUIC 协议“涂抹润滑油”(Greasing)的机制,旨在防止网络中间件(如防火墙、路由器)对 QUIC 数据包中的特定标志位形成固化的依赖,从而为协议的未来演进保留灵活性。

这个机制具体通过以下方式运作:

“QUIC Bit”是什么?
在 QUIC 数据包中,首字节的第二个最高有效位(即 0x40 位)被称为“QUIC Bit”。在 QUIC 版本 1 中,这个比特位被固定为一个特定值,其主要目的是帮助网络设备快速识别出这是一个 QUIC 数据包,以便与其他网络协议区分开。

“润滑”(Greasing)是如何工作的?
“润滑”的核心是主动打破“固定值”的惯例,具体步骤如下:

协商能力:RFC 9287 定义了一个新的 QUIC 传输参数(transport parameter),名为 grease_quic_bit(其值为 0x2ab2)。

表明意愿:通信的双方(客户端和服务器)可以通过交换这个传输参数,来告知对方自己愿意接收“QUIC Bit”为任意值(0或1) 的 QUIC 数据包。

随机发送:一旦协商成功,端点就可以在发送的不同数据包中,随机地将此比特位设置为 0 或 1。

为什么要这么做?
这项工作的核心目的是面向未来的协议演进。

如果网络中间件长期观察到“QUIC Bit”是一个固定值,就可能会形成“此位必须为 X”的错误认知,并对其进行依赖。一旦这种依赖形成,未来若想给这个比特位赋予新的含义(例如用于新的拥塞控制或负载均衡信号),将变得非常困难,因为任何改变都可能被这些中间件误认为是非法流量而丢弃。

通过主动“润滑”,RFC 9287 确保了网络生态不会对这个比特位形成固化依赖,从而为 QUIC 协议未来的扩展和创新铺平了道路。

总结来说,RFC 9287 通过协商和随机化的方式,主动“搅乱”QUIC 数据包中的一个标志位,以防止网络中间件对它产生依赖,为 QUIC 协议的未来发展保留了关键的设计空间。

Describe alternatives you've considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions