A Pure HTTP/3 Alternative to MQTT-over-QUIC in Resource-Constrained IoT の備忘録

HTTP3 でpub-subとMQTT-over-QUICの比較をIoTの観点から行った論文の備忘録です。

IoTという文脈で、ネットワークエミュレータに遅延と帯域を設定して、性能(最初のデータが到達するまでの時間、通信終了までの時間やスループット)、ネットワークへのオーバーヘッド(バイト量とパケット数)、リソースの使用状況(CPU使用率、RAM使用量)、の3つを比較しています。

性能面では、H3 pub-subのほうが優れた結果が得られていますが、ネットワークのオーバーヘッドやリソースの使用状況はHTTP3 pub-subのほうが MQTT-over-QUICよりも多くのリソースを使用する結果となったようです。

これらの結果から、IoTという文脈を考えた場合、トレードオフが存在しているということを示唆しています。

元論文は下で読めます。

arxiv.org

続きを読む

「QUIC at Snapchat」の備忘録

SnapchatのQUICの導入事例の記事を読んだので備忘録として書きました。

eng.snap.com

QUICの導入による、遅延の改善、BBRの適用によるエラーレート(接続タイムアウト、切断、などのエラーの発生率)、マイグレーションによるリクエスト成功率の向上、について触れられていました。

元記事は短いので元記事を読むのがいいかも?

続きを読む

WWDC21のAccelerate networking with HTTP/3 and QUICを見ました。

WWDC21で、「Accelerate networking with HTTP/3 and QUIC」という発表がありました。

developer.apple.com

iOS15、MacOS Monterey からHTTP/3とQUICが利用可能になるらしく、HTTPの進化、HTTP/3の使い方、QUICの使い方の紹介が取り上げられていました。

気になったスライドをピックアップしてまとめてみました。

続きを読む

「Debugging Modern Web Protocols with qlog」の紹介

Robin Marx氏の論文「Debugging Modern Web Protocols with qlog」の紹介です。何かおかしなところがありましたら原文を確認いただけると。

概要

本論文では「Debugging Modern Web Protocols with qlog」では、QUICのデバッグ用に作られたqlog/qivsに対する

①QUICの開発者がqlog/qvisを採用したいと思うか?

②qlog/qivsがQUICのデバッグに必要不可欠なものになるのか?

③qlogはスケールするのか?

という3つの疑問への回答を、実装者へのサーベイ結果と著者の経験をもとに議論している。

論文: https://qlog.edm.uhasselt.be/anrw/files/DebuggingModernWebProtocols_Marx_ANRWReview_23apr2020.pdf

著者のページ:

qlog.edm.uhasselt.be

qlogのgithub:

github.com

続きを読む

最近の活動

会社のお仕事で外部に公開されているもののまとめ。

登壇

  1. IoT@Loft #5 クラウドとロボティクス、オープンソース活用による次世代ロボットの可能性での登壇 LT4 - 株式会社アプトポッド AWS RoboMakerと連携するクラウド経由の遠隔制御の取り組み

aws.amazon.com

テックブログ

  1. 高頻度データ伝送におけるQUIC適用の検討 tech.aptpod.co.jp

  2. AWS re:Invent 2019 で AWS RoboMakerとintdash によるTurtlebot3の遠隔制御の展示を行いました! tech.aptpod.co.jp

  3. AWS RoboMakerとintdashでTurtlebot3を遠隔制御できるようにしました! tech.aptpod.co.jp

【論文メモ】Resource Multiplexing and Prioritization in HTTP/2 over TCP and HTTP/3 over QUIC 2章 QUIC ResourceMultiplexing

QUICの多重化によって起きる課題2つについて議論している。

①ストリームの多重化によって起こる優先度の決定。QUIC自体は個別のストリームに関連付けられたセマンティクスは認識できないので、相対的なストリーム間の優先度はQUIC側からはわからない。FIFOみたいな送り方をするのか、Round-Robinやそのバリエーション(例えば、1つのQUICパケット毎に送信すするストリームを変えるのか、複数のQUICパケットで送ってから別のストリームにスイッチするのか)がいいのか。

②再送のスケジューリング ロスしたデータと普通のデータ間の優先度をどうするのか。 3つのアプローチが実際の実装から観測された。

  • ロスしたデータも普通のデータも同じ優先度として扱う
  • ロスしたデータは優先度を高くする。ただしロスしたデータがあるストリーム間の優先度は考慮しない。
  • ロスしたデータに高い優先度を設定する。またそれらの中でさらにスケジューリングを設定する。

このセクションでは、これら二つについて、各種実装が現在どういう実装をしているかを評価している。

内容はかなり重たいですが学びは多い。

続きを読む

【論文メモ】Resource Multiplexing and Prioritization in HTTP/2 over TCP and HTTP/3 over QUIC 1章 Introduction

Robin Marx氏の論文「Resource Multiplexing and Prioritization in HTTP/2 over TCP and HTTP/3 over QUIC 」の1章を読んだメモ。

https://h3.edm.uhasselt.be/ からダウンロードできます。いずれちゃんと読んでqiitaにまとめたい。

Introductionでは、HTTP/1.1の時代の課題から、HTTP/2が出てきた背景、HTTP/2の課題、QUIC/HTTP3が出てきた経緯、などが紹介されていました。歴史的な経緯を知るのにはいいのかも?

続きを読む