一个用Rust重新实现的quic传输协议,比quinn更加优雅、高效、可扩展的RFC9000实现。
quinn的事件看上去为什么那么地混乱,是因为它想借用异步Runtime的事件,驱动整个传输层的Future轮询下去。这就像只存在系统级的IO、定时器这两种Reactor,但若是中间的传输层收到数据包导致数据连续可读了,这本身也是一个Reactor,可用于驱动应用层读,遗憾的是,quinn并没有利用这内在的关系,没意识到潜在的Reactor的存在,而是使用消息队列、集中驱动扫描模式,让一次收发包/超时事件驱动着所有相关逻辑的执行,这很不符合人体工程,显得逻辑混乱。
quix则梳理一套基于UDP的网络系统中原生Reactor,并清晰地关联各Reactor,设计一种Reactor激活Reactor的模式,来重新审视整个Overlay网络该怎么实现。