1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-quinn

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Quinn — это реализация транспортного протокола IETF QUIC на чистом Rust, совместимая с async.

Проект был основан Диркьяном Охтманом (Dirkjan Ochtman) и Бенджамином Сондерсом (Benjamin Saunders) в 2018 году как побочный проект и с тех пор выпустил более 30 версий. Если вы используете Quinn в коммерческих целях, рассмотрите возможность спонсирования проекта.

Особенности

  • Одновременная работа клиента и сервера.
  • Упорядоченное и неупорядоченное потоковое чтение для повышения производительности.
  • Работает на стабильном Rust, протестирован на Linux, macOS и Windows.
  • Настраиваемая криптография со стандартной реализацией, поддерживаемой rustls и ring.
  • Дейтаграммы прикладного уровня для небольших ненадёжных сообщений.
  • Асинхронный API на основе будущего.
  • Минимальная поддерживаемая версия Rust — 1.66.

Обзор

  • quinn: высокоуровневый асинхронный API на базе tokio, см. примеры использования. Будет использоваться большинством разработчиков. (Включены базовые тесты.)
  • quinn-proto: детерминированный конечный автомат протокола, который не выполняет внутренний ввод-вывод и подходит для использования с пользовательскими циклами событий (и потенциально C или C++ API).
  • quinn-udp: UDP-сокеты с информацией ECN, настроенные для протокола.
  • bench: тесты без какой-либо структуры.
  • fuzz: тесты на ошибки.

Начало работы

Примеры

$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml

Это запускает HTTP-сервер версии 0.9 на петлевом адресе, обслуживающий текущий рабочий каталог, при этом клиент получает файл ./Cargo.toml. По умолчанию сервер генерирует самозаверяющий сертификат и сохраняет его на диск, где клиент автоматически найдёт его и будет доверять ему.

Ссылки

  • Доклад на конференции RustFest Paris (май 2018 года), презентация; слайды; YouTube.
  • Примеры использования.
  • Руководство, книга, документация.

Примечания по использованию

Буферы

Конечная точка Quinn соответствует одному UDP-сокету, независимо от того, сколько соединений используется. Обработка высоких совокупных скоростей передачи данных на одной конечной точке может потребовать большего размера буфера UDP, чем настроено по умолчанию в большинстве сред. Если вы наблюдаете нестабильную задержку и/или пропускную способность по стабильному сетевому каналу, рассмотрите увеличение используемых размеров буферов. Например, вы можете настроить параметры SO_SNDBUF и SO_RCVBUF UDP-сокета перед передачей его в Quinn. Обратите внимание, что некоторые платформы (например, Linux) требуют повышенных привилегий или изменения конфигурации системы для процесса, чтобы увеличить размеры буфера UDP.

Сертификаты

По умолчанию клиенты Quinn проверяют криптографическую идентификацию серверов, к которым они подключаются. Это предотвращает перехват сообщений активным злоумышленником на пути, но требует доверия к некоторому центру сертификации. Для многих целей этого можно достичь, используя сертификаты Let's Encrypt для серверов и полагаясь на конфигурацию по умолчанию для клиентов.

Для некоторых случаев, включая одноранговые сети, доверие при первом использовании, преднамеренное... Небезопасные приложения или в любом случае, когда серверы не идентифицируются по доменному имени, это нецелесообразно. Можно реализовать произвольную логику проверки сертификатов, включив функцию dangerous_configuration в rustls и создав Quinn ClientConfig с переопределённым верификатором сертификата вручную.

Когда использование собственного центра сертификации не имеет смысла, можно использовать [rcgen] для генерации самозаверяющих сертификатов по требованию. Чтобы поддерживать доверие при первом использовании, серверы, которые автоматически генерируют самозаверяющие сертификаты, должны записывать сгенерированный сертификат в постоянное хранилище и повторно использовать его в будущих запусках.

Вклад

Мы приветствуем все отзывы. Не стесняйтесь подавать сообщения об ошибках, запросы на документацию и любые другие отзывы в систему отслеживания проблем [issues].

В тестовом наборе quinn-proto используется смоделированный ввод-вывод для воспроизводимости и чтобы избежать длительных задержек в определённых чувствительных к времени тестах. Если установлена переменная среды SSLKEYLOGFILE, тесты будут отправлять UDP-пакеты для анализа с помощью внешних анализаторов протоколов, таких как Wireshark, а журналы ключей, совместимые с NSS, для клиентской стороны каждого соединения будут записываться в путь, указанный в переменной.

Минимальная поддерживаемая версия Rust для опубликованных выпусков наших пакетов всегда будет как минимум на 6 месяцев старше на момент выпуска.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализация QUIC на основе Futures в Rust. Развернуть Свернуть
Rust
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-quinn.git
git@api.gitlife.ru:oschina-mirror/mirrors-quinn.git
oschina-mirror
mirrors-quinn
mirrors-quinn
main