The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Компания Valve открыла реализацию системы TCP-подобных коммуникаций поверх UDP

31.03.2018 21:50

Компания Valve перевела в разряд свободного ПО библиотеку GameNetworkingSockets с реализацией системы передачи сообщений поверх UDP, которая может применяться для организации высокоскоростного и надёжного сетевого обмена данными в играх. Код написан на языке С++ и поставляется под лицензией BSD.

GameNetworkingSockets реализует поверх UDP похожий на TCP протокол, обеспечивающий установку соединения, но ориентированный на передачу сообщений вместо потоков. При этом через установленный канал связи сообщения могут передаваться как в режиме гарантированной доставки, так и с использованием более быстрого режима ненадёжной передачи. Протокол поддерживает такие возможности как обработка фрагментации, пересборка пакетов, прогнозирование и ограничение пропускной способности.

Имеется встроенная поддержка шифрования канала связи. Данные в пакетах шифруются с использованием алгоритма блочного шифрования AES, а для обмена ключами и проверки сертификатов применяются цифровые подписи на базе эллиптических кривых Ed25519. Механизмы доставки ключей и выбора вектора инициализации для каждого пакета основаны на методах, применяемых в протоколе QUIC.

Разработчикам предложена библиотека c реализацией C++ класса SteamNetworkingSockets, а также инструментарий для симуляции потери пакетов и получения детальной статистики. Среди необходимых для сборки зависимостей: OpenSSL, Google protobuf, ed25519-donna, curve25519-donna и ujson (компактный парсер JSON, который уже включен в состав GameNetworkingSockets.

Из планов на будущее называется переработка кода "SNP", который отвечает за инкапсуляцию API-сообщений в UDP-пакеты и выполнение таких операций как фрагментация и пересборка слишком больших пакетов, cлияние мелких сообщений и переотправка потерянных фрагментов. В новой реализации появится более продвинутая реализация скользящего окна и полноценная возможность упорядочивания пакетов (сейчас пакет пришедший не по порядку просто отбрасывается). Также планируется уйти от применения специфичных для Steam идентификаторов CSteamID в пользу более универсальной структуры идентификации и избавиться от зависимости от OpenSSL, в котором используется только реализация AES.

  1. Главная ссылка к новости (https://www.reddit.com/r/gamed...)
  2. OpenNews: Google намерен использовать сетевой протокол QUIC в браузере Chrome по умолчанию
  3. OpenNews: Fastsocket - новая высокомасштабируемая реализация сетевой подсистемы ядра Linux
  4. OpenNews: Оценка способности сетевого стека Linux обрабатывать миллион пакетов в секунду
  5. OpenNews: Проект LibOS развивает вариант ядра Linux с сетевым стеком в форме библиотеки
  6. OpenNews: Intel представил сокращённый вариант сетевого стека для Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48371-quic
Ключевые слова: quic, udp, valve, socket, tcp, game, steam
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (37) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.6, Андрей (??), 22:06, 31/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > TCP-подобных коммуникаций поверх UDP

    SCTP наборот.

    > GameNetworkingSockets реализует поверх UDP похожий на TCP протокол, обеспечивающий установку соединения, но ориентированный на передачу сообщений вместо потоков.

    Странно, а здесь получается, что скорее SCTP.

     
     
  • 2.7, Андрей (??), 22:07, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    наоборот*
     
  • 2.8, anonymous (??), 22:55, 31/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Похоже под "TCP-подобных коммуникаций" подразумевалась гарантия доставки, но не очередность. Как раз таки их собственная работа, подобная SCTP.
     

  • 1.9, Аноним (-), 23:17, 31/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Всё что угодно приходится делать, но не впиливать SCTP в винду.
     
     
  • 2.16, Аноним (-), 05:30, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Если бы проблема только в винде была. SCTP умер из-за миллионов г%внороутеров в интернете, не умеющих NAT для него.
     
  • 2.18, anomymous (?), 09:26, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    1) Гуглим sctp vulnerability.
    2) Понимаем, что лучше велосипед.
     
     
  • 3.28, anonymous (??), 13:54, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Дело не в уязвимостях, их пофиксят. Сложность в том, что надо взять и разом обновить все маршрутизаторы в интернете чтобы они перестали дропать незнакомый им протокол SCTP. Поэтому и велосипедят поверх UDP.
     
     
  • 4.33, anomymous (?), 21:47, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Их за 10 лет столько было именно в SCTP, что это лучше не трогать. Даже палочкой.
     
  • 4.38, nuclight (??), 01:42, 04/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И тут, ВНЕЗАПНО, основные реализации SCTP умеют инкапсулироваться в UDP именно для решения этой проблемы.
     
  • 2.24, Аноним (-), 12:54, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Давно есть юзерленд стек под всех ОС включая винду https://github.com/sctplab/usrsctp
    и там есть поддержка sctp over udp
     
  • 2.41, Аноним (-), 20:38, 07/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Всё что угодно приходится делать, но не впиливать SCTP в винду.

    Ну так убеди MS это сделать. Во все реально используемые версии винды и прочие макоси. Чарт популярности операционок можешь в Steam посмотреть. И еще промежуточное сетевое оборудование и софт.

     

  • 1.10, Аноним (-), 23:18, 31/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подобного добра существует достаточно. Вот, например, http://udt.sourceforge.net/, тоже на C++. Там уже реализовано управление перегрузкой, переотправка потерянных фрагментов, переупорядочевание.

    PS Вот бы подобное, дополняющее встроенное управление перегрузкой, для DCCP: гарантированная доставка и переупорядочевание.

     
  • 1.11, YetAnotherOnanym (ok), 00:19, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ну, пусть будет. Можбыть для какой-нить телеметрии или месседжинга сгодится - там тоже "message instead of stream"
     
     
  • 2.12, Crazy Alex (ok), 00:33, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Откровенно говоря, оно почти везде лучше. Даже если файл грузишь часто выгодно делать это какими-нибудь чанками - на принимающей стороне раскладывать проще, обрывы всякие обработать и прочее. Уж не знаю, почему стримы так прижились.
     
     
  • 3.13, fail_ (?), 02:54, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Откровенно говоря, оно почти везде лучше. Даже если файл грузишь часто выгодно
    > делать это какими-нибудь чанками - на принимающей стороне раскладывать проще, обрывы
    > всякие обработать и прочее. Уж не знаю, почему стримы так прижились.

    имо, из-за текстовки: <cr><lf> и "конец пакета", а то конгресс, немцы какие-то (с) - вернее с TLV приходится слегка серое в-во напрягать.

     
  • 3.14, Аноним (-), 02:54, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, действительно, наверное, там не только дороги, но сети получше))
     
     
  • 4.30, Crazy Alex (ok), 15:56, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да не то чтобы. Те же США славятся своим засилием DSL до сих пор. ну и прочее - мобильные сети, вайфай и прочее, кажется, только в последние лет пять стали более-менее надёжными
     
     
  • 5.31, YetAnotherOnanym (ok), 18:36, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Хочу засилье DSL в историческом центре города-миллионника, в котором имею удовольствие проживать. В каждую хрущёвку по пять провайдеров оптику тянут (у подруги - Ростелеком, МТС, Дом.ру, ТТК, Билайн, ящик, сцобако, вечно листовками забит), а в наш скворечник вшивую медную десятку кинуть - у них, видите ли, технической возможности нет.
     

  • 1.15, Вонни Бух и Потчк (?), 05:03, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот еще

    https://github.com/wangyu-/UDPspeeder
    https://github.com/wangyu-/udp2raw-tunnel

     
  • 1.17, Аноним (-), 07:52, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так вроде же ENet всех победил?..
     
     
  • 2.26, srt (?), 13:30, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а еще udt или srt, но в целом не мешает писать новые реализации быстрой передачи
    касательно новости - фуфло, ничего хуже не встречал
     
  • 2.42, Аноним (-), 03:21, 08/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Так вроде же ENet всех победил?..

    Valve обнаружили в нем фатальный недостаток...

     

  • 1.19, Аноним (-), 09:30, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    QUIC от гугла, µTP от битторрента, GameNetworkingSockets от валв. Кто следующий [пере]изобретёт новый протокол поверх UDP?
     
     
  • 2.27, srt (?), 13:32, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    кто не может воспользоваться гуглом что бы найти готовые решения, тот начинает изобретать
    на самом деле разных протоколов поверх UDP много, только не все до опеннета доходят
     
  • 2.35, Crazy Alex (ok), 11:32, 02/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Тот, кому потребуется ещё какая-то специфика, вестимо
     

  • 1.20, Аноним (-), 09:40, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати Linux системы чуть прибавили в Steam:
    http://store.steampowered.com/hwsurvey
     
     
  • 2.22, Аноним (-), 10:22, 01/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Китайцам поднадоел пубг.
     

  • 1.32, XoRe (ok), 19:50, 01/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Штука специально заточена под игрушки.
     
  • 1.34, рара Кен (?), 10:32, 02/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    хром лучше всех! (грузит) Google поработал над скоростью на переходе от 64 к 65 версии! а уже 67
     
  • 1.36, Аноним (-), 15:47, 02/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А по поводу лицензии брюзжать никто не будет?Неужели жплфанатики взрослеют?
     
     
  • 2.45, Аноним (-), 11:54, 09/04/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тебе должно быть стыдно.
     

  • 1.37, IY (?), 17:17, 03/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>применяются цифровые подписи на базе эллиптических кривых Ed25519

    никто даже не вспомнил, что в ИБ-сообществе от них уже отказались

     
  • 1.39, Дебилушка (?), 18:24, 05/04/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вальвэ делает всё что угодно, но только не борется с читерами. Судя по их количеству и огромному рынку платных читерских-программ, что такое защита от читеров Вальвэ не знает вообще, зато протоколы с защитой и шифрованием у их якобы очень хорошие, и нам даже какие то достижения показывают, но все их теоретические изыскания легко разбивается о жестокую практику реального мира.
     
     
  • 2.40, Читер (?), 18:40, 05/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так читеры по карте летать не могут, здоровье у них не бесконечное и так далее. А вот как бы ты защитил игру от AimBot? Патруль вот сделали, но у тебя наверное есть крутые идеи, выскажи их.
     
     
  • 3.44, Аноним (-), 03:53, 08/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В vendetta online круто защитились Дали aimbot всем и каждому И попробовали сд... большой текст свёрнут, показать
     
  • 2.43, Аноним (-), 03:34, 08/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > по их количеству и огромному рынку платных читерских-программ, что такое защита
    > от читеров Вальвэ не знает вообще,

    А представляешь, половина всяких ботов и проч - делают все то же самое что и живой игрок. Только лучше и быстрее.

    Если ты будешь сильно настаивать - ну как максимум, начнут делать девайсы размером с usb-флеху которые кнопки жамкают в нужной последовательности сами. Предстааляясь системе usb-клавой, блин. Только мелкий процик кнопари жмет быстрее и лучше чем ты, недоразумение белковое. Для него миллисекунда - навалом времени. А ты даже и не заметишь столько. Это для тебя за гранью восприятия. Поэтому железка в принципе может все делать быстрее, точнее и лучше, извини.

     
     
  • 3.46, Гентушник (ok), 12:59, 09/04/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В итоге боты будут играть с ботами, а люди останутся не у дел :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру