Microsoft откри своята реализация на протокола QUIC, използван в HTTP/3

Компания Microsoft обяви откритие на кода на библиотеката MsQuic с реализация на мрежовия протокол QUIC. Кодът е написан на C и се разпространява под MIT лиценз. Библиотеката е кросплатформена и може да се използва не само в Windows, но и в Linux с поддръжка на Schannel или OpenSSL за TLS 1.3. В бъдеще се планира поддръжка и на други платформи.

Библиотеката е основана на кода на драйвера msquic.sys, предоставен в ядрото на Windows 10 (Insider Preview) за осигуряване на работа с протоколите HTTP и SMB върху 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. Протоколът QUIC (Quick UDP Internet Connections) се развива от 2013 г. от компания Google като алтернатива на връзката TCP+TLS за уеб, решаваща проблемите с дългото време за установяване и синхронизиране на връзките в TCP и премахваща забавянията при загуба на пакети по време на предаване на данни. QUIC е изграден над протокола UDP, поддържащ множества отворени връзки и осигуряващ методи за криптиране, еквивалентни на TLS/SSL.

Основни особености QUIC:

  • Висока сигурност, аналогична на TLS (по същество QUIC предоставя възможност за използване на TLS 1.3 върху UDP);
  • Контрол на целостта на потока, предотвратяващ загуба на пакети;
  • Възможност за незабавно установяване на връзка (0-RTT, в около 75% от случаите данни могат да се предават веднага след изпращане на пакета за установяване на връзката) и осигуряване на минимални забавяния между изпращане на заявка и получаване на отговор (RTT, Round Trip Time);
    Microsoft откри своята реализация на протокола QUIC, използван в HTTP/3
  • Не използването при повторна предаване на пакета с еднакъв номер на последователност, което позволява да се избегне двусмислието при определянето на получените пакети и да се избавим от таймаутите;
  • Загубата на пакет влияе само на доставката на свързания с него поток и не спира доставката на данни в паралелно предавани потоци през текущото свързване;
  • Средства за корекция на грешки, минимизиращи закъсненията от повторната предавка на загубени пакети. Използване на специални кодове за корекция на грешки на ниво пакет, за да се намалят ситуациите, изискващи повторна предавка на данни от загубения пакет.
  • Границите на криптографските блокове са изравнени с границите на QUIC пакетите, което намалява влиянието на загубите на пакети върху декодирането на съдържанието на следващите пакети;
  • Липса на проблеми с блокирането на опашката на TCP;
  • Подкрепа за идентификатор на свързване, който позволява да се намали времето за повторно установяване на свързването за мобилни клиенти;
  • Възможност за свързване на разширени механизми за контрол на натоварването на свързването;
  • Използване на техника за прогнозиране на пропускната способност във всяка посока, за да се осигури оптимална интензивност на изпращане на пакети, предотвратявайки спадането в състояние на натоварване, при което се наблюдават загуби на пакети;
  • Забележителна прибавката производителност и пропускна способност в сравнение с TCP. За видеосервизи като YouTube, прилагането на QUIC показа намаляване на операциите по повторно буфериране по време на гледане на видео с 30%.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster