标准化进展情况

    到2018年11月为止,还没有过大型的HTTP/3互通性测试。目前来说,只有2个实现进行过测试,且这两个实现不基于浏览器和主流的开源服务器软件。

    QUIC工作组的wiki页面目前列出了大约15种QUIC实现(QUIC实现列表),但距离它们都能与最新版的规范草案互操作仍有很长的路。

    实现QUIC并不容易,且到目前为止,协议本身还在不断演变。

    Apache和Nginx还没有对QUIC支持的公开声明。

    Google Chrome在数年前已经支持Google版的QUIC,但是该版本不能与官方的QUIC版本互操作,且它的HTTP实现与HTTP/3不同。

    为了避免重复发明轮子,以及依靠可信赖的现有协议,QUIC决定使用TLS 1.3作为它的加密和安全协议层。不过工作组决定大幅精简QUIC中TLS的使用,只使用“TLS信息”(TLS Messages)而不是协议中的“TLS记录”(TLS Records)。

    这听上去可能人畜无害,但也事实上成为了很多QUIC堆栈实现者的重大障碍。现存的支持TLS 1.3的TLS库都没有提供此功能的API并允许QUIC访问它。有一些QUIC的实现由大型机构完成,这些机构可能有自己的TLS协议栈,但并不是所有实现都能如此。

    例如,主流的重量级开源软件OpenSSL就没有这些API,且到目前(2018年11月)为止,没有表达过在任何时间点提供这些API的意愿。

    据Google和Facebook称,与基于TLS的HTTP/2相比,它们大规模部署的QUIC需要近2倍的CPU使用量。

    对此的进一步解释包括:

    • Linux内核的UDP部分没有得到像TCP堆栈那样的优化,因为传统上没有使用UDP进行如此高速的信息传输。