微軟開發人員 宣布發布MsQuic庫源代碼 與QUIC網絡協議的實現有關。 該庫是跨平台的, 不僅可以在Windows上使用,而且可以在使用Schannel或OpenSSL for TLS 1.3的Linux上使用此外,將來會繼續努力擴大對其他平台的支持。
該庫基於msquic.sys驅動程序代碼 Windows 10內核中提供的(內部預覽) 以保證HTTP和SMB協議在QUIC上的運行。 代碼包含用於在內部Windows堆棧和.NET Core上實現HTTP / 3。
MsQuic庫的開發將完全通過公共評論,拉取請求和GitHub問題在GitHub上完成。 準備了一個基礎結構,可以針對4000多個測試集驗證每個提交和提取請求。 在穩定開發環境之後,計劃接受外部開發人員的更改。
關於MsQuic
姆斯奎克 可用於創建服務器和客戶端,但並非IETF規範中定義的所有功能目前都可用。 例如,不支持0-RTT,客戶端遷移,路徑MTU發現或服務器首選地址控制。
在已實現的功能中, 突出顯示了針對最大性能和最小延遲的優化,支持我/ O異步,RSS (接收橫向縮放), 結合UDP輸入和輸出流。 已測試MsQuic實施與實驗性Chrome和Edge瀏覽器分支的兼容性。
的 建立與即時連接的能力e(0-RTT,在大約75%的情況下,可以在發送連接建立數據包後立即發送數據),並確保在發送請求和接收響應之間的最小延遲(RTT,往返時間)。
進一步, 有糾錯工具 可以最大程度地減少因丟失數據包的重傳而造成的延遲。
使用特殊的數據包級糾錯碼來減少需要重新傳輸丟失的數據包數據或學習預測帶寬的技術 在各個方向 確保最佳的包裹遞送強度,以防止其達到觀察到數據包丟失的擁塞狀態。
其他特徵 QUIC鍵:
- 類似於TLS的高安全性(實際上,QUIC提供了在UDP上使用TLS 1.3的能力)。
- 流完整性控制,可防止數據包丟失。
- 重傳數據包時不使用相同的序列號,這避免了確定接收到的數據包時的歧義並消除了超時。
- 數據包的丟失僅影響與其關聯的流的傳遞,並且不會停止通過當前連接傳輸的並行流中數據的傳遞。
- 密碼塊邊界與QUIC數據包邊界對齊,從而減少了數據包丟失對後續數據包內容進行解碼的影響。
- 阻止TCP隊列沒有任何問題。
- 支持連接標識符,這減少了為移動客戶端建立重新連接的時間。
- 它具有連接高級機制以控制連接擁塞的能力。
- 與TCP相比,它具有非凡的性能和性能提升。 對於YouTube之類的視頻服務,QUIC已證明觀看視頻時的重新緩衝操作減少了30%。
終於 對於那些有興趣了解更多信息的人 關於MsQuic或想看一下其源代碼,您應該知道該代碼是用C編寫的,是跨平台的,通用的,在MIT許可下分發,而發布的代碼則託管在GitHub上。
來源: https://techcommunity.microsoft.com