zero-latency data transfers — передачи данных без задержки см. тж. latency
Смотреть что такое «zero-latency» в других словарях:
ZLE — Zero Latency Enterprise (Computing » General) * Zone Limit Exceeded (Computing » Security) * Zone Limit Exceeded (Computing » Networking) … Abbreviations dictionary
ZLE — Zero Latency Enterprise (Compaq) … Acronyms
ZLE — Zero Latency Enterprise (Compaq) … Acronyms von A bis Z
Real-time business intelligence — is the process of delivering information about business operations without any latency. In this context, real time means delivering information in a range from milliseconds to a few seconds after the business event. While traditional business… … Wikipedia
Happy Computers — (HCI) was a small company producing disk drive enhancements for the Atari 8 bit and Atari ST computer families. Happy Computers is most noted for the add in boards for the Atari 810 and 1050 disk drives, which achieved a tremendous speed… … Wikipedia
Convolution reverb — In audio signal processing, convolution reverb is a process for digitally simulating the reverberation of a physical or virtual space. It is based on the mathematical convolution operation, and uses a pre recorded audio sample of the impulse… … Wikipedia
Digital nervous system — is a phrase, popularly associated with Bill Gates of Microsoft, used to describe a vision for how the IT infrastructure of an enterprise could be analogous to the autonomic nervous system of a biological organism. Gates made extensive use of the… … Wikipedia
Convolution — For the usage in formal language theory, see Convolution (computer science). Convolution of two square pulses: the resulting waveform is a triangular pulse. One of the functions (in this case g) is first reflected about τ = 0 and then offset by t … Wikipedia
ZL — Zarlink Semiconductor, Inc. (Business » NYSE Symbols) * Zero Latency (Academic & Science » Electronics) * Zieh Leine (International » German) * Zero Lux (Business » Products) * Easy CD Creator Drag to Disk File (Computing » File Extensions) *… … Abbreviations dictionary
Web crawler — For the search engine of the same name, see WebCrawler. For the fictional robots called Skutters, see Red Dwarf characters#The Skutters. Not to be confused with offline reader. A Web crawler is a computer program that browses the World Wide Web… … Wikipedia
Gemstone Database Management System — Infobox programming language name = GemStone Database Management System paradigm = Application framework year = 1991 typing = designer = implementations = dialects = influenced by = Smalltalk,Object oriented programming influenced = J2EEGemStone… … Wikipedia
Zero Latency: рассказ о локации в Лас-Вегасе и планах на киберспорт
Недавно австралийская компания Zero Latency из Мельбурна наладила сотрудничество с MGM Grand Las Vegas, чтобы запустить свою многопользовательскую игровую локацию виртуальной реальности в крупнейшем игровом городе мира.
Арена площадью около 600 квадратных метров открылась на прошлой неделе. Это самая технологичная достопримечательность зала развлечений MGM и одна из 20 локаций Zero Latency по всему миру, включая Орландо, Бостон, Филадельфию, Висконсин и Поконос в Пенсильвании.
Соучредители Zero Latency генеральный директор Тим Руз (Tim Ruse) и технический директор Скотт Вандонкелаар (Scott Vandonkelaar) говорят, что к концу года планируют добавить к этому ещё 30-40 локаций, а в 2019 году довести их количество до сотни.
Партнёрство с авторитетным брендом MGM помогает Zero Latency развивать бизнес. Руз говорит, что MGM приложила все свои маркетинговые силы к продвижению «Virtual Reality Powered by Zero Latency».
Здорово добавить арену на рынок другого уровня в США и стать партнёром глобального бренда, такого как MGM, — объясняет Руз. — Не считая импульса от бренда и маркетинговой платформы MGM, глобальное значение Лас-Вегаса позволяет нам продавать Zero Latency туристам, которые могут поиграть, а затем рассказать о нас своим друзьям, когда вернутся домой.
Другими словами, Zero Latency делает ставку на то, что происходящее в виртуальной реальности в Вегасе не остаётся ни в виртуальной реальности, ни в Вегасе. Эта локация является для компании первой на Западном побережья США, где такие конкуренты как IMAX VR и The Void уже открыли ВР-парки. Они расположились в Нью-Йорке и Юте, в том числе в Диснейленде: там осенью откроется парк The Void по мотивам Звёздных Войн.
Локация Zero Latency — это открытое пространство без препятствий. Она позволяет людям совместно и без преград исследовать виртуальную среду. Игры разработаны с целью создать иллюзию изучения огромных космических кораблей, масштабных миров, причём игроки проходят их разными путями.
С боями продвигаясь по растущей игротеке (есть три игры, а четвёртая готовится к релизу), товарищи по команде будут видеть друг друга в виде аватаров с полной передачей движения и постоянной связью с сервером для сохранения результатов и, в конечном счёте, победы по очкам. На арене всегда присутствует сотрудник компании, который помогает настраивать игры и наблюдает за порядком.
Все локации Zero Latency сейчас предлагают три игры. Это шутер в стиле tower defence «Zombie Survival», шутер с нулевой гравитацией «Singularity» и приключенческие задачки «Engineerium». Каждая игра длится 30 минут и подходит для компаний до восьми человек. Вандонкелаар говорит, что новая игра выйдет этой осенью и объединит элементы первых трёх игр с более глубоким погружением.
Сегодня через нашу систему прошло более 100 000 игроков, и мы применяем уроки, извлечённые из их опыта и переживаний, в первых трёх играх, — говорит он. — Новая игра с зомби разработана с нуля для восьми игроков, и мы добавляем в неё интенсивности и исследований больше, чем в нашей первой зомби-игре.
По его же словам, все первые игры созданы на Unity, а сейчас компания работает с Unreal Engine 4. И уже этой осенью Zero Latency выпустит API и SDK, чтобы привлечь к созданию массовых развлечений сторонние студии. Некоторые проекты уже готовятся в режиме секретности, чтобы выйти на арену в 2018 году. А сама компания трудится над многопользовательским проектом для киберспорта:
Мы работаем над новым контентом, в котором наши игроки смогут соревноваться между собой. При создании убедительного опыта есть масса проблем, к тому же мы ограничены пространством арен. Но мы следим за тем, чтобы соревнование было настолько забавным, насколько это возможно, и основывалось на навыках, так что у игры есть всё необходимое для киберспорта. Мы подошли к делу с пониманием того, что у нас много локаций, где команды могут соревноваться с людьми, которые находятся в другом месте.
На наших аренах есть невероятные возможности для киберспорта, — добавляет Руз. — Дело не только в командном знании геймплея и навыках; вам нужно передвигаться по арене и работать сообща, чтобы лучше противостоять другой команде. Мы видим киберспорт как часть своего ближайшего будущего. Мы исследуем это, работаем на этом поле и мы стремимся войти в этот бизнес.
Zero Latency также настраивает наблюдательную систему. Она позволит игрокам делиться своими играми на существующих платформах, таких как Twitch и Facebook Live. А ещё это потенциал для трансляции киберспорта.
Вскоре игроки смогут транслировать своей геймплей из виртуальной реальности во внешний мир, — отмечает Вандонкелаар. — Каждый получит шанс увидеть стримы, и игроки смогут оценивать себя со стороны.
Руз добавляет, что тестирование показало реальную связь между зрителем и игроком в виртуальной реальности:
Это похоже на связь с реальным человеком. Друзья могут наблюдать друг за другом, сравнивать индивидуальные и командные очки, а это должно вовлечь людей в игру и активизировать конкуренцию.
Zero Latency ведёт переговоры с брендами, заинтересованными в киберспорте. Его аудитория может предоставить компании новых клиентов. По статистике, её локациями виртуальной реальности пользуются в основном мужчины (70%) от 25 до 40 лет. Руз уверен, что большинство людей до 45 лет в той или иной степени геймеры:
Поскольку они уже восприимчивы к играм, им комфортнее в нашей виртуальной реальности, и мы наблюдаем расширение демографического покрытия. Мы также видим множество людей, которым любопытно, и которые хотят испытать всё сами.
MGM делает ставку на развлечения, добавляя аркадный эксперимент Zero Latency к растущему ассортименту игр на основе реальных навыков и привлекая молодых людей. Благодаря этому гости Лас-Вегас-Стрип смогут избежать реальных соблазнов и уйти от азартных игр в виртуальный мир. Можно долго доказывать, что киберспорт — не то же самое, что обычный спорт, но по сравнению с рулеткой разница огромная.
Не пропускайте важнейшие новости о дополненной, смешанной и виртуальной реальности — подписывайтесь на Голографику вВК,TwitterиFacebook!
Zero Latency и Sega Live Creation установят VR-песочницу в Токио
Zero Latency и Sega Live Creation сообщили о совместной работе над первой VR-песочницей с мультиплеером. Игру можно будет опробовать в парке развлечений Joypolis, который находится в Токио. VR-аттракцион установят в рамках празднования двадцатилетнего юбилея парка. Игра будет доступна посетителям в течение июля этого года. Компании не сообщают, будет ли аттракцион «гастролировать» по другим городам и странам, однако известно, что Zero Latency и Sega Live Creation намереваются продолжить сотрудничество.
Главный исполнительный директор Zero Latency Тим Рус заявил, что компания в восторге как от самого проекта, так и от перспективы дальнейшего сотрудничества с Sega.
VR-технология песочниц, которую использует компания, позволяет игрокам исследовать виртуальный мир с полной свободой движений и высоким уровнем погружения. Группа игроков может перемещаться по большому пространству и выполнять миссии как индивидуально, так и в командах до шести человек. Zero Latency заявляет, что высокотехнологическое снаряжение, используемое в игре, способствует гораздо лучшим впечатлениям от виртуальной реальности, чем домашние устройства.
Исполнительный вице-президент Sega Live Creation Кадзухико Хаями также не скрывал энтузиазма по поводу совместного с Zero Latency проекта.
Когда мы впервые попробовали то, что предлагают Zero Latency, мы были шокированы. Мы поняли, что наблюдаем рождение новой среды и сразу же захотели стать частью этого процесса. Мы лишь начинаем изучать возможности VR-«песочниц». Сейчас это одна из самых впечатляющих технологий на рынке.
Пока неизвестно, какая именно игра будет установлена в Токио. Вполне вероятно, что ей станет зомби-шутер, трейлер которого Zero Latency демонстрировала ранее.
Нулевая задержка это технологии компания, развивающая свободный ход виртуальная реальность системы. [1] Ее основали Тим Руз, Скотт Вандонкелаар, Кайел Смит, которые в настоящее время являются директорами компании, а председателем является Дин Доррелл. [2] В августе 2015 года Zero Latency открыла первое в мире место для развлечений в виртуальной реальности в Северном Мельбурне, Австралия. [3] [4]
Содержание
История
Идея основателей о создании виртуальной реальности для свободного передвижения впервые возникла в 2012 году после успеха кикстартерной кампании Oculus Rift. [5] и изначально тестировалась как однопользовательская игра под названием Inversion VR в начале 2013 года. [6] [7] Прототип многопользовательской системы виртуальной реальности со свободным перемещением Zero Latency был впервые продемонстрирован публике на Pausefest, конференции по цифровым инновациям, в начале 2014 года. [8] [9] После этого Zero Latency получила почти 30 000 долларов от краудфандинговой кампании, [10] а также грант в размере 60 000 долларов от Film Victoria. [11] Впоследствии компания получила 1 миллион долларов финансирования от венчурной компании Carthona Capital. [12] [13] [14] В феврале 2015 года Zero Latency заключила партнерское соглашение с игровым подразделением Dell, Alienware, чтобы предоставить высокопроизводительное компьютерное оборудование для использования в операциях Zero Latency. [15] 14 августа 2015 года Zero Latency открыла свои розничные операции, что впервые в истории, когда многопользовательская виртуальная реальность со свободным перемещением стала общедоступной. [16] Первая публичная игра была симулирована зомби-апокалипсисом с четырьмя игроками, однако оригинальная игра в настоящее время позволяет играть одновременно максимум восьми игрокам. [16]
Свободный роуминг
Виртуальная реальность в свободном перемещении позволяет пользователям свободно перемещаться в открытом пространстве и не ограничиваться кабелями и другим неподвижным оборудованием. [17] Уловки восприятия, такие как «Перенаправление слепоты к изменению», используются в виртуальной реальности свободного передвижения, чтобы создать иллюзию виртуальной среды, которая больше, чем физически доступная. [17] Zero Latency использует эти приемы восприятия на 400 м. 2 площадка в Северном Мельбурне, позволяющая игрокам преодолевать расстояние от 700 м до 1 км во время стандартной игровой сессии. [5]
Захвата движения технология используется для отслеживания физического местоположения игроков, что позволяет виртуальное местоположение игроков в игре. аватары быть сгенерированным точно. [9] Несколько лет ушло на разработку программного и аппаратного обеспечения, позволяющего мгновенно воспроизводить физические движения игроков их игровыми аватарами. [18] [19] Датчики приближения используются для предупреждения игроков об опасностях и предотвращения выхода игроков из физической игровой зоны. [16] Zero Latency также использует методы тактильной обратной связи (например, использование вентиляторов для создания ветра) для увеличения погружение. [20] [21]
Товары
Zero Latency управляет игровыми площадками виртуальной реальности в Северном Мельбурне, Виктория, Австралия, и Ньюстеде, Квинсленд, Австралия, которые доступны для владельцев билетов в возрасте от 13 лет. [22] [23] Компания также продает свои системы предприятиям, которым требуются приложения виртуальной реальности для свободного перемещения. [11] Из-за своей стоимости и сложности системы с нулевой задержкой не идеальны для частного использования. [24] [25] Вместо этого они предназначены для использования в качестве публичных виртуальных игровых пространств или аттракционов в тематических парках. [12] [24] [26] Zero Latency также сотрудничает с группой по недвижимости, чтобы предложить виртуальный осмотр дома. [27]
Есть исследование от Google, которое говорит, что если ваш сайт открывается больше трех секунд, то вы потеряете около 40% десктопных пользователей и более 50% — мобильных. Еще есть репорт от Amazon, который говорит, что для Amazon каждые 100 мс дополнительного latency стоит им 1% продаж. В объемах Amazon это миллионы долларов.
В зависимости от вашего бизнеса вам стоит тоже ответить на вопрос: Does the latency matter?
Я работаю как системный инженер уже более 8 лет. Хочу поделиться опытом, который получил в процессе решения задач в компании Big Data Technologies. У нас есть какой-никакой highload. В пике это 30 тысяч rps, и вопрос с latency довольно остро стоит перед бизнесом.
Когда разработчику ставят задачу улучшить latency, он идет на Google PageSpeed Insights, прогоняет свой домен и смотрит, сколько выдало попугаев и какие этот сервис дает советы. Например, минифицировать JS, CSS, использовать изображения правильного формата и более 20 других советов.
Но что делать, если все эти советы уже выполнены? На локалхосте уже все летает, а в проде для каких-то пользователей вы испытываете высокое latency? Или, например, вам вообще этот сервис не подходит, у вас API. Первое, что вам нужно сделать — это нажать F12 в вашем браузере, открыть девелопер-консоль, зайти в раздел Network Timings и там ваш браузер сам расскажет структуру latency от вашего приложения со стороны клиента.
Browser Network Timings
Тут вы увидите много пунктов, которые вашего приложение вроде как не касаются — DNS, latency на установку TCP-соединений, установка шифрования. На все это уходит сотни миллисекунд. И только последний блок (Sending, Waiting, Receiving) — ответ от вашего приложения.
Сейчас мы пройдемся по всем этим пунктам, я посоветую bestpractises и протоколы, которые помогут вам протюнить latency.
Делая статистику, я использовал следующую методологию:
Утилита DIG с ключом trace, которая позволяет получить некэшированные DNS-ответы;
Делал всегда 1000 запросов;
Считал 99 перцентиль.
Output утилита HTTPSTAT, которая показывает красивую визуализацию.
После всех настроек, которые я сегодня посоветую, вы сможете получить буст от 2 до 10 раз. В абсолютных значениях это около секунды для клиентов на оптике. Для клиентов на мобильных телефонах эти цифры могут быть значительно больше. Вот так получилось у нас:
Final Stats
Как решить, какой name-сервер быстрый, и вообще как понять, стоит ли использовать текущего провайдера, хороший ли он? Можно воспользоваться, например, публичными сервисами — такими, как dnsperf.com или solvedns.com. Там есть топ, который показывает latency.
DNS resolution
Но зачем нам его использовать, если мы можем легко сами измерить?
Я взял 7 различных DNS-провайдеров из трех основных облаков: GCP, AWS, Azure. Добавил CloudFlare как лидера и Afraid.org как аутсайдера рейтингов. А также добавил по одному российскому и белорусскому провайдеру DNS. После проверил домены, которые хостятся у этих DNS провайдеров.
DNS resolvers
У DNS есть две стороны — это resolver и name-сервер. Чтобы не проверять Google им же и иметь более честную статистику, я взял еще 4 популярных DNS-resolver и прогнал кросс-тестом 1000 запросов на все DNS name-серверы.
99% NS responce time (ms)
Публичные рейтинги нас не обманули — CloudFlare как был в топе, так и остался. При этом видно, что у Amazon на 40 мс latency лучше, чем у Google, а Reg.ru в два раза лучше, чем Hoster.by. Если вы захотите сэкономить и возьмете максимально дешёвый name-сервер, не зная рейтинга, то можете получить разницу 400 мс на каждый запрос.
Вы можете подумать, что 50-100 мс — это очень мало, можно не обращать на это внимания. Но если, например, ваш бизнес производит какие-то live-транзакции, как биржа или банк, то это существенно.
Также бизнес имеет свойство расширяться. Возможно, вы пойдете в другие географические регионы, например, в Азию или в Южную Америку. Вы внезапно можете увидеть рост latency, который будет очень сложно затраблшутить, просто потому что ваш текущий DNS-провайдер не представлен в этих регионах и DNS-запросы гоняются через океан.
Первый шаг мы рассмотрели — это DNS-resolution или DNS-Lookup. Возьмите топовый name-сервер и проверьте, какой вообще у вас.
Следующий шаг, который делает ваш браузер — это устанавливает TCP-соединение. На установку handshake всегда требуется 1 RTT (Round-trip time), и вроде бы с этим ничего не сделать.
Но есть здравый смысл, который подсказывает: чем ближе наши пользователи локально к нашим серверам, тем более короткая сеть маршрутов. Поэтому логично хостить ваше приложение близко к большинству ваших пользователей.
Но если они геораспределены, классически будет использовать CDN для статики, а менее классически — включить CDN для динамики. Это стоит сделать, потому что у вас все равно будет буст за счет того, что между CDN и вашим сервером уже будет всегда установлено TCP-сессия, а пользователи будут ходить до ближайшего CDN-сервера.
Но самый интересный вариант — это разнести вашу инфраструктуру по геопринципу. Предположим, вы подняли свою инфраструктуру в разных регионах, но как донести пользователям, чтобы они ходили до ближайших до них серверов?
GEO DNS
С этим нам поможет GEO DNS — extension в DNS, который позволяет DNS-резолверу пробрасывать к name-серверу маску подсети клиента. То есть DNS-провайдер может вычислять клиента по IP, определять его геолокацию и отдавать для разных клиентов разные значения A-записей.
Многие DNS-провайдеры не поддерживают GEO DNS, но в AWS Route 53 такой функционал есть. В данном случае сайт по дефолту хостится в Японии, но для пользователей из Европы будет отдаваться IP европейского сервера. Я провел кросс-тест latency сервера AWS в Европе и Японии как клиент, до сервера Google Cloud в Европе и Японии.
TCP connection time depending on Geolocation
Тест показал, что даже на таком небольшом расстоянии, как Европа-Азия получаем за счет GEO DNS буст по latency 250-300 мс, и это на каждый round-trip. Это уже намного больше, чем 50 мс от выбора DNS-resolver.
TCP Fast Open (TFO)
В рамках TCP есть малоизвестный протокол TCP Fast Open (TFO), который позволяет сократить один round-trip на установку handshake для второго и последующих соединений до 0. TCP-соединение будет устанавливаться сразу же при ответе сервера.
Checking on client:
Сhecking on server:
Здесь видно, как это работает. Первый запрос занимает 260 мс, а второй уже с ключом TCP Fast Open — 4 мс.
Сам TCP Fast Open настраивается довольно легко:
Этот протокол работает с помощью так называемой TFO-куки, когда при первом соединении генерируется файл куки, который в последующем переиспользуется. Когда сервер видит валидный куки от клиента на стадии SYN, то на стадии SYN acknowledge сразу устанавливается соединение и можно не ждать полный handshake.
Но у него есть ряд проблем. Основные — это middleboxes и трекинг.
Middleboxes — это старое или дорогое ПО или железо, которое не знает про протокол TFO. TCP так устроен, что если железо видит непонятные настройки, оно просто отбрасывает эти пакеты, и сессию придется устанавливать заново.
Получается, мы, наоборот, проиграем во времени на установку TCP-соединения. Так как таких middleboxes в интернете довольно много. Согласно исследованию — порядка 14% трафика проходит через них, то есть нам потребуется повторное TCP соединение.
Но еще больше проблем вызовет трекинг. В браузерах есть приватные вкладки. Если мы будем использовать TCP Fast Open, они будут полностью скомпрометированы, потому что сервер сможет по TFO-куке определить пользователя вне зависимости от того, в приватной он вкладке или нет. Для браузеров это неприемлемо. Тем не менее, в браузерах есть суппорт TFO. По умолчанию он выключен, его нужно включать в настройках.
Кейс, где можно использовать TFO свободно — это общение сервер-сервер. Когда вы предоставляете какое-то API, ваши клиенты — это тоже сервера, и расположены вы географически далеко, то можно просто включить TFO и выигрывать 1 round-trip. Например, от Европы до Японии — это 300 мс.
Второй шаг TCP мы рассмотрели — это initial connection, или connecting: используем CDN, пробуем GEO DNS и, если вам подходит, можете попробовать TFO.
TLS — очень старый протокол, он развивается. Но все его развитие до версии 1.2 было направлено только на улучшение безопасности: отказ от скомпрометированных алгоритмов шифрования, добавление более сложных и устойчивых алгоритмов.
На апрель 2020, по данным CCLabs, только 22% из ТОП 150 тысяч веб-сайтов использовали TLS 1.3. Через год эта цифра стала уже 44%. Этот было обусловлено, скорее всего, тем, что не так давно браузеры депрекейтили старые протоколы TLS 1.1, и администраторам было несложно вместе с депрекейтом старых протоколов добавить суппорт TLS 1.3.
До его выхода на latency это не влияло абсолютно — всегда было полноценных два round-trip time. Но с выходом TLS 1.3 протокол изменили, и из коробки он стал тратить один round-trip. Теперь для установки шифрованного соединения достаточно одного пути: клиент — сервер — клиент.
TLS 1.2 (2 RTT) vs TLS 1.3 (1RTT)
Но все же 44% — это даже не половина интернета, которая перешла на этот протокол.
Посмотрим, как это работает.
TLS Handshake
При TLS 1.3 клиент сразу же при запросе «Client Hello» генерирует так называемый PSK-ключ (Pre-Shared Key) и отправляет его на сервер, а сервер с помощью этого PSK шифрует свой ответ «Server Hello», добавляет туда необходимую информацию. Клиент уже следующим вторым запросом вместе с «Finished» может отправлять шифрованный HTTP запрос.
HTTPSTAT наглядно показывает, чем отличаются TLS 1.2 и TLS 1.3:
При TLS 1.2 мы получаем 600 мс latency, а при TLS 1.3 — 300 мс. Это полноценный round-trip time. Но только разовым запросам нельзя верить, поэтому мы соберем статистику.
TLS 1.2 vs TLS 1.3
Явно видно, что мы получаем один round-trip benefit просто за счет включения этого протокола. Но у TLS 1.3 есть еще такой функционал, как Zero Round Trip.
TLS 1.3 0-RTT
TLS 1.3 Zero Round Trip
Это включается довольно просто:
nginx > 1.15.4, OpenSSL 1.1.1 or higher or BoringSSL
Вам нужен не древний веб-сервер и ОС, где OpenSSL > 1.1.1, например Ubuntu 18, и три строчки в конфиге Nginx:
ssl_protocols TLSv1.3 — версия протокола;
Этот хэдер необходим для защиты от так называемых replay-атак, когда человек в середине может взять слепок шифрованного трафика и начать его повторять. Если ваше приложение уязвимо — например, вы банк и явно не хотите, чтобы запросы с транзакциями повторялись бесконечно, — то вам нужно на бэкенде обрабатывать этот кастомный хэдер. И это не очень большой limitation, чтобы получить отличный буст.
К сожалению, с помощью curl нельзя проверить TLS 1.3 с early_data, но мы можем проверить с помощью утилиты OpenSSL. При первом запросе мы генерируем файл session.pem, а при втором — используем с ключом early_data.
Checking
Если на сервере правильно все настроено, вы увидите «Early data was accepted». Early data, в отличие от TFO, включена во всех браузерах по умолчанию. Вы получите буст от ваших клиентов сразу же.
RSA key length
Также в рамках TLS хочется поднять тему длины RSA ключа.
По дефолту сертификаты, например от Let’s Encrypt, шифруются ключом длиной 2048 бит. Вы можете купить более секьюрный сертификат, шифрованный ключом в 3072 или 4096 бит. Но при этом всегда надо держать в уме, что время на терминацию трафика будет увеличиваться в 6-7 раз за каждое удвоение длины ключа.
RSA key length
У меня есть реальный кейс из практики — security team купила за недорого, как они считали, более секьюрный сертификат и выкатили его на прод. Пришел вечерний load и началась деградация прода — сервера задыхались под CPU. Это решилось только увеличением процессорных мощностей. А root cause про новые SSL сертификаты мы поняли только на следующий день.
TLS config best practice
Последнее, что я хотел бы затронуть в рамках TLS — это прекрасный сайт Mozilla SSL Configuration Generator, в котором можно просто накликать конфигурацию вашего веб-сервера.
TLS config best practice, https://ssl-config.mozilla.org
Например, можно взять Nginx, выбрать Modern, указать версию OpenSSL и вы получите сгенерированный конфиг — пользуйтесь!
Третий шаг — TLS setup, или же SSL мы рассмотрели: включаем TLS 1.3 и Early-Data.
Мы пришли к самом интересному — это наш HTTP-запрос от клиента в браузере.
По данным W3Techs на апрель этого года 49% от ТОП 10 млн веб-сайтов поддерживают HTTP/2, то есть 51% интернета не поддерживает HTTP/2. А мы в с вами 2021 году, и с 2018 года уже идет активная разработка протокола HTTP/3, на который уже очень скоро нужно будет переходить. Но сначала обсудим, зачем нам HTTP/2.
HTTP/2
По дефолту все веб-сервера настроены на HTTP/1, и многие не знают, что включение протокола HTTP/2 может улучшить response для ваших клиентов. Например, один из бенефитов, который нам дал HTTP/2 — это возможность параллельно отправлять ответы и запросы по одному TCP соединению.
Для протокола HTTP/1.1 у каждого браузера есть захардкоженная цифра от 6 до 9 TCP-соединений на один домен, и запросы/ответы идут последовательно в рамках этих TCP-соединений. В протоколе HTTP/2 вы можете для второго и последующих запросов отправлять ответы в рамках одного соединения.
Также есть технология HTTP/2 Server Push, которая позволит отправлять клиенту больше данных, чем он даже запрашивал. Например, вы точно знаете, что с запросом на индекс HTML нужно отправить JS и CSS, и вы можете преднастроить так, что к юзеру будут отправляться дополнительные данные. Это может дать хороший performance boost, но на самом деле Server Push почти не используется, потому что есть проблемы с браузерным кэшом. Вы не можете знать, что есть в кэше у вашего пользователя. Поэтому отправка CSS может стать, наоборот, лишней, если пользователь уже имеет этот CSS у себя в кэше.
Если взять большую картинку, разбитую на множество маленьких для увеличения скорости загрузки, то такой кейс отлично показывает лимит из-за последовательных запросов и ответов. Наглядно разницу между HTTP/1.1 и HTTP/2 можно увидеть по ссылке:
Но сегодня мы уже очень близки к HTTP/3.
HTTP/3
HTTP/3, он же QUIC (Quick UDP Internet Connections) — протокол, который изначально придумали в Google, чтобы решить проблему с растущим трафиком на YouTube. А теперь это уже почти законченный официальный протокол. Под капотом HTTP/3 все, что есть при классическом TCP-соединении, но только завернутое в UDP.
А когда мы слышим UDP, мы вспоминаем анекдот который, если до вас не дошел, то я его не повторю. Потому что проблема UDP — это потеря пакетов и Congestion Control (контроль потока).
В QUIC это решено за счет так называемой абстракции QUIC Streams, которая, кроме этого, решает проблему свитчинга сетей у ваших клиентов. Например, клиент пользуется Wi-Fi с телефона, потом переключится на 3G, на 4G и обратно на Wi-Fi. В рамках TCP, где определение клиента — это его IP-адрес и порт, при смене сети каждый раз нужно устанавливать соединение заново. А при QUIC Streams, которые присваиваются клиенту, можно продолжать переиспользовать соединение.
Давайте протестим как работает HTTP/3 и как его нам внедрить. Так как на текущий момент поддержка QUIC в nginx в разработке, то, чтобы ее включить в nginx, нам нужно его скомпилить.
К счастью, есть мануал, по которому довольно легко это сделать. А можно переиспользовать мой docker image: ymuski/nginx-quic и просто добавить в nginx две строки в конфиг:
Nginx config:
listen 443 quic reuseport;
add_header alt-svc ‘h3-29=»:443″; ma=86400’;
В хэдере указывается версия протокола (h3-29 — это версия драфта) и порт, на котором у нас HTTP/3. Когда вы это включите, скорее всего, ничего не заработает (или хочется верить, что не заработает), потому что вы точно забудете открыть на firewall 443/UDP (кто вообще открывает UDP?). Открываем порт и идем тестировать.
Для теста можно зайти на сайт HTTP/3 Check и посмотреть, включен ли у вас HTTP/3 и на какой версии. Но онлайн тесты — это не наш путь. Давайте сами проверим с помощью curl — что нам мешает?
Для этого и curl тоже скомпилить. Открываем другой мануал или используем docker image, который я скомпилил — docker image:ymuski/curl-http3
Видим, что на мой запрос в nginx log HTTP/3 — 200.
Более наглядно output от curl:
Тут нет привычной установки TLS-соединения. Есть блок h3, который создает QUIC Streams.
В браузерах на сегодняшний день уже впилена поддержка HTTP/3, ее нужно включить в настройках. Но хороший вопрос — вообще зачем нужен HTTP/3, дает ли он вообще какой-то буст по latency?
Я провел тест на один и тот же домен на HTTP/2 и HTTP/3.
HTTP/2 vs HTTP/3
Буст показал из разных точек мира, что HTTP/3 отвечает в 1.14x-1.5x быстрее, чем HTTP/2 — это от 14 до 50% преимущество. Вроде бы неплохо. Но первый запрос по дефолту прилетит вам на HTTP/1.1. Там он увидит редирект на HTTPS (если вы его сконфигурировали), хэдер Alt-Svc, и только потом уже перейдет на HTTP/3 или HTTP/2.
Как этого избежать? У нас есть новые DNS-записи.
Сейчас идет утверждение в Internet Engineering Task Force новых DNS-записей HTTPS. Поэтому мы можем создать дополнительную DNS-запись, и браузер ее будет запрашивать вместе с A-записью. И наш самый первый запрос прилетит уже по HTTP/3.
Например, в CloudFlare уже можно добавлять записи и наслаждаться. Это довольно крутой буст, который нас ждет. Mozilla и Safari уже поддерживают DNS-запись HTTPS, в Chrome это еще пока в разработке.
HTTP Compression
Кажется, тут все понятно — чем меньше наши данные, тем быстрее они будут у клиента. Но это не совсем так, нам нужно добавить время на сжатие этого контента.
Я сравнил два протокола: старый добрый Gzip и модный Brotli:
Json 137kb file check
В принципе, получились схожие цифры. На разных уровнях сжатия они ведут себя по-разному — что-то лучше сжимает, что-то быстрее отдает. На моем тестовом файле лучший response time я получил на среднем уровне сжатия.
Вам нужно понять, какой у вас трафик и эмпирически поиграться с компрессией, но включать ее определенно нужно.
HTTP Cache
Его очень легко включить, он гибок. Если вы будете использовать так называемый strong caching headers, то latency будет 0 мс, потому что все будет закэшено в браузере клиента.
Это был последний шаг. Подключайте HTTP/2, включайте компрессию и кэш. Попробуйте потестить HTTP/3 — он может вам дать значительный буст, плюс первого редиректа вы тогда тоже лишитесь.
Итого
Useful links
Мой сайт на HTTP/3 и github repo, где я считал статистику. Там есть все скрипты, как я это делал, настройки Nginx для каждого случая и дополнительные данные, например, не по 99, а по 50 перцентилю. Видео моего выступления на HighLoad++ Весна 2021.
Тех, кто соскучился по профессиональному нетворкингу и хочет быть в курсе всех передовых решений ждёт ещё два HighLoad++ в этом году: 20-21 сентября в Санкт-Петербурге и 25-26 ноября — в Москве. Питерское расписание уже готово.
И еще доступен — бандл из двух конференций: Saint HighLoad и HighLoad++ 2021 c 20% cкидкой. Предложение действительно до 19 сентября 2021 года.