Компания Microsoft за разкритие на кода на библиотеката с реализацията на мрежовия протокол . Кодът е написан на езика Си и под лицензия MIT. Библиотеката е кросплатформена и може да се използва не само в Windows, но и в Linux с активиране на или OpenSSL за TLS 1.3. В бъдеще се планира поддръжка и за други платформи.
Библиотеката е основана на кода на драйвера msquic.sys, предоставен в ядрото на Windows 10 (Insider Preview) за осигуряване на работата на протоколите HTTP и върху QUIC. Включително кодът се използва за реализиране на HTTP/3 в вътрешния стек на Windows и в .NET Core. Развитието на библиотеката MsQuic ще бъде изцяло водено в GitHub с използване на публично рецензиране, pull заявки и GitHub Issues. Подготовена е инфраструктура, която проверява всеки комит и pull заявка в набор от над 4000 теста. След стабилизиране на средата за разработка, се планира приемане на промени от външни разработчици.
MsQuic вече може да се използва за създаване на сървъри и клиенти, но не всяка функционалност, определена в спецификацията IETF, е в момента налична. Например, все още не е налична поддръжка за 0-RTT, миграция на клиенти, Path MTU Discovery и управление на адресите за предпочитане от сървъра (Server Preferred Address). От реализираните функции се отличава оптимизация с цел постигане на максимална пропускна способност и минимални закъснения, поддръжка на асинхронен вход/изход, RSS (Receive Side Scaling), възможност за консолидиране на входящи и изходящи UDP потоци. Реализацията на MsQuic е проверена за съвместимост с експерименталните версии на браузерите Chrome и Edge.
Напомняме, че HTTP/3 стандартизира използването на протокола QUIC като транспорт за HTTP/2. Протоколът (Quick UDP Internet Connections) се развива от 2013 година от компания Google като алтернатива на TCP+TLS за Web, решаваща проблемите с голямото време на свързване и координация в TCP и премахваща забавянията при загуба на пакети по време на предаване на данни. QUIC представлява надстройка над протокола UDP, поддържаща мултиплексиране на няколко връзки и осигуряваща методи за криптиране, еквивалентни на TLS/SSL.
Основни QUIC:
- Висока сигурност, подобна на TLS (по същество QUIC предоставя възможност за използване на TLS 1.3 върху UDP);
- Контрол за целостта на потока, предотвратяващ загуба на пакети;
- Възможност за незабавно установяване на връзка (0-RTT, в около 75% от случаите данните могат да се предават веднага след изпращането на пакета за установяване на връзката) и осигуряване на минимални забавяния между изпращането на запитването и получаването на отговора (RTT, Round Trip Time);
- Не използване на повторно предаване на пакета със същия номер на последователност, което позволява да се избегне двусмислие при определяне на получените пакети и да се премахнат таймаутите;
- Загубата на пакет влияе само на доставката на свързания с него поток и не спира доставката на данни в паралелно предавани през текущото съединение потоци;
- Средства за корекция на грешки, минимизиращи забавянията поради повторно предаване на изгубени пакети. Използване на специални кодове за корекция на грешки на ниво пакет, за да се намалят ситуациите, изискващи повторно предаване на данни от изгубения пакет.
- Границите на криптографските блокове са подравнени с границите на QUIC пакетите, което намалява влиянието на загубите на пакети върху декодирането на съдържанието на следващите пакети;
- Липса на проблеми с блокиране на опашката TCP;
- Поддръжка на идентификатор на съединение, позволяваща да се съкрати времето за установяване на повторно съединение за мобилни клиенти;
- Възможност за свързване на разширени механизми за контрол на претоварването на съединението;
- Използване на техника за прогнозиране на пропускната способност във всяка посока за осигуряване на оптимална интензивност на изпращане на пакети, предотвратявайки свличането в състояние на претоварване, при което се наблюдава загуба на пакети;
- Забележимо на производителността и пропускната способност в сравнение с TCP. За видеосервизи като YouTube, прилагането на QUIC показва намаление на операциите за повторно буфериране при гледане на видео с 30%.
Източник: opennet.ru
